2022-11-06 – Cursor completo, e começo da edição de texto, na minha GUI em C++…

Um cursor e edição de texto, feitos do zero, há que lembrar que o cursor é desenhado píxel a píxel, e a edição não depende do sistema operativo, é tudo feito do zero, é low-level, não se usa nenhuma libraria ou controlo ou GUI, ou etc. É tudo desenhado píxel a píxel.

No caso do cursor, está completo, e podem ver que está (a meu ver) mais bonito do que o dos terminais de Linux, pois como o faço do zero, eu escolhi usar transparências, e por isso podem vê-lo a fazer fade-in e fade-out o tempo todo, coisa que nos terminais não temos por serem a preto e branco.

Relembro que não estou a usar um frame buffer do Linux mas sim a desenhar graficamente tudo do zero, o que me permite fazer o que me apetecer, e até porque usar o frame buffer para colocar imagens num terminal ficaria horrível.

Tenho também o cursor a meu gosto, com um quadrado a cobrir caracteres, no modo de overwrite, e um mais curto no modo de insert:

Podem ver acima que tenho também a opção de ter ou não scanlines, para dar um ar mais “old school” à coisa.

Quanto à edição, repito, que é feito do zero em low-level (“low-level” entre aspas, pois uso C++ e não ASM, mas percebem o que quero dizer).

Neste caso, tenho de idenficar sempre que uma tecla é levantada, ou quando uma está premida, decidir se repito o caractere uma vez por cada x milisegundos, é tudo um trabalho muito manual.

Quem está habituado a usar frameworks ou librarias ou GUIs etc, tipo Qt, sabe que lhes basta criar uma janela e têm tudo a funcionar, editores de texto sob a forma de controlos de ActiveX, menus pré-feitos, cursores que vêm criados pelo sistema operativo, usam a repetição de teclas do sistema operativo, etc, aqui é tudo à pata.

Neste momento o meu cursor move muito rápido, ele demora a apagar com o backspace (repetição lenta), etc, são ajustes que terei de fazer depois.

Mas é tudo feito à pata.

Isto tem uma vantagem: Faço o que quero, graficamente tenho cursores com fade-ins e fade-outs bonitos, transparências, scanlines, imagens no meio de algo que parece uma consola de Linux (mas que na realidade é algo 100% gráfico), etc.

Isto porque o Knowledge Tester original era criado com base no terminal de Linux, mas como não vou adaptá-lo a terminais de Windows, até porque estão muito mal feitos a meu ver, simulo os meus próprios terminais virtuais graficamente, do zero, como gosto de fazer tudo, de forma mais “low-level”.

Assim, é um 2 em 1, faço a parte gráfica do Knowledge Tester, e irei compilar a mesma depois para Windows também, para facilitar a minha vida e a dos formandos, bem como utilizadores que o usem.

Mais tarde poderei retomar o projecto “Linux Helper” que ficou em stand-by, e fazê-lo funcionar com base neste terminal virtual, usando a minha própria GUI disfarçada de consola.

Ou criar mesmo uma shell minha, 100% gráfica (por isso mais pesada), onde os novatos possam dar os primeiros passos em Linux, com 1001 ajudas gráficas no ecrã, ao invés de apenas um ajudante sem nada mais.

Tenho tido pouco tempo, hoje foram uns retoques aqui, mais tarde trarei notícias.

Hasta!

2022-11-06.

Publicado no mesmo dia no LinkedIn, em:

https://www.linkedin.com/feed/update/urn:li:activity:6995136531682234368/

2022-11-06 - Cursor completo, e começo da edição de texto, na minha GUI em C++...
2022-11-06 – Cursor completo, e começo da edição de texto, na minha GUI em C++…

Leave a Reply

Your email address will not be published. Required fields are marked *

RSS
Follow by Email
LinkedIn
LinkedIn
Share