Clipper On Line • Ver Tópico - Dica do dia: tabela de cores
Página 1 de 2

Dica do dia: tabela de cores

MensagemEnviado: 16 Jan 2019 21:57
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

Dica do dia: tabela de cores

MensagemEnviado: 28 Jan 2019 09:17
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.

Dica do dia: tabela de cores

MensagemEnviado: 28 Jan 2019 09:47
por JoséQuintas
Rotina atualizada.
Pra cor de fundo, troco o "+" por "*".

cores.png

Dica do dia: tabela de cores

MensagemEnviado: 28 Jan 2019 09:49
por JoséQuintas
O fonte pra quem quiser brincar.

#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

MensagemEnviado: 28 Jan 2019 10:05
por JoséQuintas
O fonte é pra uso no Flagship por isso assim.
É um bom exemplo pra se usar FOR/EACH
Vejam a diferença:

   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


   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

MensagemEnviado: 07 Mar 2019 11:49
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,

Dica do dia: tabela de cores

MensagemEnviado: 07 Mar 2019 12:41
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.

Dica do dia: tabela de cores

MensagemEnviado: 13 Abr 2019 20:23
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.
:))

Dica do dia: tabela de cores

MensagemEnviado: 13 Abr 2019 20:26
por lwinter
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

MensagemEnviado: 14 Abr 2019 21:22
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.

Dica do dia: tabela de cores

MensagemEnviado: 14 Abr 2019 22:28
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....

   hb_gtInfo( HB_GTI_COMPATBUFFER, .F. )


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

Novo Windows Terminal 2019!

MensagemEnviado: 30 Mai 2019 17:38
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
:))

Dica do dia: tabela de cores

MensagemEnviado: 30 Mai 2019 20:31
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.

Dica do dia: tabela de cores

MensagemEnviado: 04 Jun 2019 16:31
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.

Dica do dia: tabela de cores

MensagemEnviado: 04 Jun 2019 17:00
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.

Dica do dia: tabela de cores

MensagemEnviado: 04 Jun 2019 17:05
por JoséQuintas
Faltou lembrar:

Estou usando o Windows 10 2019 !!!!

Não confunda os efeitos cinematográficos dessa propaganda, com a realidade do console.

tela.png

Dica do dia: tabela de cores

MensagemEnviado: 19 Jun 2019 22:49
por lwinter
Entendi José!
Vou utilizar o GTWVG mesmo. Mas estudando ele um pouco mais, percebi que ele emula o console no GUI e desta forma deve ter um jeito de configurar o Harbour para que se modifique o pallete das cores padrões do GTWVG utilizando internamento o formato rbg. Exemplo: para a cor de fundo "/GR" poderíamos modificar internamento o GTWVG para utilizar a cor #F39C12. Desta forma o "/GR" seria uma espécie de ponteiro para o RBG. Isso é possível?
Desta forma poderíamos usar um design mais moderno e agradável que é o FLAT DESIGN que hoje esta na moda.
Fiz uma melhoria no seu fonte acima para comtemplar o flat UI mas como o gtwvg tem cores limitadas, escolhi as cores similares a paleta de cores que peguei na internet.

Dica do dia: tabela de cores

MensagemEnviado: 20 Jun 2019 00:26
por JoséQuintas
Sim.
Para cada uma das cores, pode escolher o que quiser, dentre os 16 milhões de cores do Windows.
Depois pode selecionar por cor ou por número.
SetColor( "N/W" )
SetColor( "0/7" )

Dica do dia: tabela de cores

MensagemEnviado: 21 Jun 2019 12:59
por lwinter
Bom dia!
Fiz um post e este site apresentou que a minha mensagem foi concluída com sucesso. Atualizou a data de envio mas minha mensagem não aparece. Alguem sabe me dizer o porque? A única diferença é que inclui imagens. Mas o preview da minha mensagem deu tudo certo.

rgds,

Dica do dia: tabela de cores

MensagemEnviado: 21 Jun 2019 13:06
por JoséQuintas
Depois do preview seria enviar. Será que esqueceu disso?

Dica do dia: tabela de cores

MensagemEnviado: 21 Jun 2019 13:07
por lwinter
Entendi, foi c... minha! Desculpem!

Jose verifiquei que tem como alterar o palette da cor de fundo. Entao fiz alteração no código fonte e resolveu. Obrigado!
Segue abaixo para quem quiser utilizar as cores do Flat UI Design. Acho mais moderno mas cada um tem sua opinião sobre cores, certo? rsrsrs

Dica do dia: tabela de cores

MensagemEnviado: 21 Jun 2019 20:30
por lwinter
Pena que temos a limitação de no máximo 16 índices de cores. Sera que não daria para alterar o Harbour para conter um índice de por exemplo 32 cores/mapeamento?
Também verifiquei que se pode mudar o palette da cor de fundo mas não da cor de frente. Ou estou enganado?

Dica do dia: tabela de cores

MensagemEnviado: 27 Jul 2019 09:48
por Abel
muito bom dia, realmente seria muito interessante aumentar a palette de 16 cores para mais cores,
mas acredito que nao tem jeito, isso é uma limitaçao antiga, e nao sei porque o harbour nao evoluiu neste quesito.

Att
ABEL