Clipper On Line • Ver Tópico - Dica do dia: tabela de cores
Mudar para estilo Clássico
Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.
Postar uma resposta

Dica do dia: tabela de cores

16 Jan 2019 21:57

Já tentaram usar alguma cor e não conseguiram?
Pois é... compatibilidade com Clipper... usando letras é mais limitado, pode reduzir pra somente 8 cores.

setcolor1.png


setcolor3.png

Dica do dia: tabela de cores

28 Jan 2019 09:17

cores.png


Agora que reparei, mas não lembro de ter visto isso antes.
Acima o teste prático.

GR+/GR é o mesmo que GR/GR+, não importa a posição de "+", ele intensifica a cor de fonte

GR*/GR é o mesmo que GR/GR*, não importa a posição de "*", ele intensifica a cor de fundo

E teste final, GR*+/GR intensifica frente e fundo.

Como só uso números não tinha reparado nisso antes, só fui reparar agora usando Flagship/Linux.

Foi só olhar novamente a imagem do primeiro post, as linhas com "+" e "*" estavam diferentes.

Dica do dia: tabela de cores

28 Jan 2019 09:47

Rotina atualizada.
Pra cor de fundo, troco o "+" por "*".

cores.png

Dica do dia: tabela de cores

28 Jan 2019 09:49

O fonte pra quem quiser brincar.

Código:
#define COLOR_BLACK      "N"
#define COLOR_BLUE       "B"
#define COLOR_GREEN      "G"
#define COLOR_CYAN       "BG"
#define COLOR_RED        "R"
#define COLOR_MAGENTA    "RB"
#define COLOR_BROWN      "GR"
#define COLOR_WHITE      "W"
#define COLOR_GRAY       "N+"
#define COLOR_HIBLUE     "B+"
#define COLOR_HIGREEN    "G+"
#define COLOR_HICYAN     "BG+"
#define COLOR_HIRED      "R+"
#define COLOR_HIMAGENTA  "RB+"
#define COLOR_YELLOW     "GR+"
#define COLOR_HIWHITE    "W+"

FUNCTION pUtilCor()

   LOCAL nCont, nCont2, aList := { COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, ;
      COLOR_RED, COLOR_MAGENTA, COLOR_BROWN, COLOR_WHITE, COLOR_GRAY, COLOR_HIBLUE, ;
      COLOR_HIGREEN, COLOR_HICYAN, COLOR_HIRED, COLOR_HIMAGENTA, COLOR_YELLOW, COLOR_HIWHITE }

   FOR nCont = 1 TO 16
      FOR nCont2 = 1 TO 16
         @ 2 + nCont, ( nCont2 -1 ) * 7 SAY Pad( aList[ nCont ] + "/" + StrTran( aList[ nCont2 ], "+", "*" ), 7 ) ;
            COLOR ( aList[ nCont ] + "/" + StrTran( aList[ nCont2 ], "+", "*" ) )
      NEXT
   NEXT

   Mensagem( "Tecle ESC", " 27" )

   RETURN NIL

Dica do dia: tabela de cores

28 Jan 2019 10:05

O fonte é pra uso no Flagship por isso assim.
É um bom exemplo pra se usar FOR/EACH
Vejam a diferença:

Código:
   LOCAL aList := { COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, ;
      COLOR_RED, COLOR_MAGENTA, COLOR_BROWN, COLOR_WHITE, COLOR_GRAY, COLOR_HIBLUE, ;
      COLOR_HIGREEN, COLOR_HICYAN, COLOR_HIRED, COLOR_HIMAGENTA, COLOR_YELLOW, COLOR_HIWHITE }
   LOCAL nCont, nCont2

   FOR nCont = 1 TO 16
      FOR nCont2 = 1 TO 16
         @ 2 + nCont, ( nCont2 -1 ) * 7 SAY Pad( aList[ nCont ] + "/" + StrTran( aList[ nCont2 ], "+", "*" ), 7 ) ;
            COLOR ( aList[ nCont ] + "/" + StrTran( aList[ nCont2 ], "+", "*" ) )
      NEXT
   NEXT


Código:
   LOCAL aList := { COLOR_BLACK, COLOR_BLUE, COLOR_GREEN, COLOR_CYAN, ;
      COLOR_RED, COLOR_MAGENTA, COLOR_BROWN, COLOR_WHITE, COLOR_GRAY, COLOR_HIBLUE, ;
      COLOR_HIGREEN, COLOR_HICYAN, COLOR_HIRED, COLOR_HIMAGENTA, COLOR_YELLOW, COLOR_HIWHITE }
   LOCAL cCorFrente, cCorFundo

FOR EACH cCorFrente IN aList
   FOR EACH cCorFundo IN aList
      @ 2 + cCorFrente:__EnumIndex, ( cCorFundo:__EnumIndex - 1 ) * 7 SAY Pad( cCorFrente + "/" + Transform( cCorFundo, "+", "*" ), 7 ) ;
     COLOR ( cCorFrente + "/" + StrTran( cCorFundo, "+", "*" ) )
   NEXT
NEXT


:__EnumIndex é questão de costume.
cCorFrente::__EnumIndex e cCorFundo:__EnumIndex, representam o "contador invisível" usado pra cCorFrente e cCorFundo.

Dica do dia: tabela de cores

07 Mar 2019 11:49

Oi José!
Muito útil suas dicas!
Não teria como o harbour trabalhar com o sistema hexadecimal RGB? Por exemplo: SetColor ( '#68B46D').
Seria muito útil se pudesse!

Abracos!

rgds,

Dica do dia: tabela de cores

07 Mar 2019 12:41

Depende do que está querendo dizer.
O Harbour utiliza 16 cores fixas, igual ao Clipper.
Essa tabela de 16 cores pode ser alterada.

Ilimitado:
pra representar 16 cores, números 1 a 16, em binário precisa 1/4 byte, ou apenas 1/2 byte pra frente/fundo.
pras cores do Windows, isso aumenta pra 3 bytes, ou 6 no caso de frente/fundo.
uma tela 25 x 80 são 2.000 caracteres + 1.000 pra cores = 3.000
pras cores do Windows, seria 2.000 + 12.000 = 14.000
Não sei quantas rotinas isso afetaria, ou o quanto poderia mexer com o desempenho.
Mas eu gostaria disso também, ou pelo menos alterar a tabela de cores pra 128 ou 256.

Dica do dia: tabela de cores

13 Abr 2019 20:23

Muito bem explicado Jose Quintas! Parabéns!
Eu acho que se você souber alterar o Harbour para trabalhar com mais cores seria muito legal. Sera que não estamos focado no paradigma antigo do clipper? Porque não podemos avançar nos aspectos das plataformas 32/64 bits? Acho totalmente plausível e talvez isso não tenha nenhum efeito colateral.
:))

Dica do dia: tabela de cores

13 Abr 2019 20:26

Outra duvida, no Harbour não temos uma função de palette ou rbg para definição de 16384 cores?

Dica do dia: tabela de cores

14 Abr 2019 21:22

Olá!
JoséQuintas escreveu:uma tela 25 x 80 são 2.000 caracteres + 1.000 pra cores = 3.000


Creio que esta informação não procede. Tela 25x80 é armazenada em 4000 bytes (1 para cada carácter e 1 para a cor de cada carácter). Se for UTF8 vai para 8000.

Dica do dia: tabela de cores

14 Abr 2019 22:28

alxsts escreveu: Tela 25x80 é armazenada em 4000 bytes (1 para cada carácter e 1 para a cor de cada carácter). Se for UTF8 vai para 8000.


Na verdade foi um chute.
Um byte pode representar de 0 a 255, então considerei que precisaria menos de 1 byte pra cores.
Apesar de SaveScreen() poder usar 4000 bytes, não faço idéia se internamente não é feito diferente pra economizar memória.
UTF8 não faço idéia se dobra, já que alguns caracteres em UTF-8 precisam de até 6 bytes, e ele pode estar na tela inteira.

Aliás....

Código:
   hb_gtInfo( HB_GTI_COMPATBUFFER, .F. )


Não me perguntem a diferença, mas com certeza isso altera tudo.

Novo Windows Terminal 2019!

30 Mai 2019 17:38

Estudando no youtube verifiquei que a limitação de cores esta relacionada ao Windows Terminal (emulação DOS antigo) com suas restrições de cores 16 bits.
Verifiquei também que a Microsoft lançou em fase de testes o novo Windows terminal para Windows 10 e que estará disponível na próxima build do Windows.

Seria um sonho se "alguém" da comunidade Harbour adequasse o Harbour para este novo Windows terminal. Sera que a comunidade tem isso na agenda?

Veja vídeo abaixo (Show de bola!):
https://www.youtube.com/watch?v=UrZo9mohRiw

Abraços.
Leonardo W
:))

Dica do dia: tabela de cores

30 Mai 2019 20:31

Não compensa, vai só complicar.
Se usar Clipper no W10 vai complicar também, porque a tela não tem limite de tamanho.
Na prática a GTWVG já seria isso.

Dica do dia: tabela de cores

04 Jun 2019 16:31

A ideia seria usar o GTWVG (Windows terminal) mesmo. Mas eu gostaria de saber como poderíamos utilizar as melhorias do NOVO Windows terminal conforme vídeo abaixo. Exemplo: Usar EMOJI, novas fontes, novas cores, etc... Como seria possível usar as novas cores se o comando setcolor é limitado?

Você chegou a ver o vídeo abaixo?


É muito legal as possibilidades! Dai nem precisaria de usar a MINIGUI.

Abraços.
Editado pela última vez por Toledo em 04 Jun 2019 16:56, num total de 1 vezes
Razão: Mensagem editada para colocar a tag [ youtube ]

Dica do dia: tabela de cores

04 Jun 2019 17:00

Infelizmente você está sonhando.
Acho impossível o Harbour aproveitar qualquer recurso do console.

Não confunda console e GTWVG, são coisas diferentes.
A GTWVG faz parte do Harbour, que tem GTWIN (console), GTWVG, GTWVT, GTWVW.
Dá pra usar gráficos na GTWVG e GTWVW desde sempre.

Vou resumir:
O console do Windows 10 é apenas pra console.
NÃO serve pra aplicativo.
Desta vez acabou-se console, a não ser que mexa em tudo que é configuração do Windows, em TODAS as máquinas que instalar programa.

Agora é obrigatório: GTWVT ou GTWVG ou GTWVW - que NÃO são console.
Postar uma resposta