Dica do dia: tabela de cores

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dica do dia: tabela de cores

Mensagem por JoséQuintas »

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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dica do dia: tabela de cores

Mensagem por JoséQuintas »

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dica do dia: tabela de cores

Mensagem por JoséQuintas »

Rotina atualizada.
Pra cor de fundo, troco o "+" por "*".
cores.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dica do dia: tabela de cores

Mensagem por JoséQuintas »

O fonte pra quem quiser brincar.

Código: Selecionar todos

#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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dica do dia: tabela de cores

Mensagem por JoséQuintas »

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

Código: Selecionar todos

   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: Selecionar todos

   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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Dica do dia: tabela de cores

Mensagem por lwinter »

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,
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dica do dia: tabela de cores

Mensagem por JoséQuintas »

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Dica do dia: tabela de cores

Mensagem por lwinter »

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.
:))
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Dica do dia: tabela de cores

Mensagem por lwinter »

Outra duvida, no Harbour não temos uma função de palette ou rbg para definição de 16384 cores?
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Dica do dia: tabela de cores

Mensagem por alxsts »

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.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dica do dia: tabela de cores

Mensagem por JoséQuintas »

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: Selecionar todos

   hb_gtInfo( HB_GTI_COMPATBUFFER, .F. )
Não me perguntem a diferença, mas com certeza isso altera tudo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Novo Windows Terminal 2019!

Mensagem por lwinter »

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
:))
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dica do dia: tabela de cores

Mensagem por JoséQuintas »

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Dica do dia: tabela de cores

Mensagem por lwinter »

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, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ youtube ]
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Dica do dia: tabela de cores

Mensagem por JoséQuintas »

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder