Problemas com apresentação de sombra em box

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Problemas com apresentação de sombra em box

Mensagem por asimoes »

Senhores,

Após baixar a última versão do harbour (nightly) hb32
Estou com problema na função sombra em box ou janelas que eu uso a muito tempo com clipper e harbour.
Não sei o que mudou nestas últimas versões do harbour para mudar o comportamento da exibição de caracteres!
Com versão harbour início de abril
Imagem
Com versão harbour atual (nightly)
Imagem

Vejam o código da função que eu uso e que vinha funcionando sem problemas (pequeno exemplo).

Código: Selecionar todos

#include "hbcompat.ch"
FUNCTION MAIN
   SETCOLOR("B/W")
   @00,00 CLEAR TO MaxRow(),MaxCol()
   SOMBRA(10,01,20,20)
   @10,01 TO 20,20
   INKEY(0)
RETURN Nil

FUNCTION Sombra(_Li,_Ci,_Lf,_Cf)
LOCAL Tela1, Tela2, Tela3, Tela4
IF _Cf >= 80
   _Cf:=79
ENDIF
Tela3 := SaveScreen(_Li+1,_Cf+1,_Lf+1,_Cf+1)
Tela4 := SaveScreen(_Lf+1,_Ci+1,_Lf+1,_Cf+1)
FOR Tela1:=2 TO Len(Tela3) STEP 2
   Tela2:=Shadow(ASC(SubStr(Tela3,Tela1,1)))
   Tela3:=Stuff(Tela3,Tela1,1,Tela2)
END
FOR Tela1 := 2 TO Len(Tela4) step 2
   Tela2:=Shadow(ASC(SubStr(Tela4,Tela1,1)))
   Tela4:=Stuff(Tela4,Tela1,1,Tela2)
END
RestScreen(_Li+1,_Cf+1,_Lf+1,_Cf+1,Tela3)
RestScreen(_Lf+1,_Ci+1,_Lf+1,_Cf+1,Tela4)
RETURN NIL

STATIC FUNCTION Shadow(_Car)
LOCAL Var1, Var2, Var3
Var1 := _Car % 16
Var2 := (_Car - Var1) / 16
Var3 := {0,0,8,8,0,8,0,8,0,1,2,3,4,5,6,7}
Var1 := Var3[Var1+1]
Var2 := Var3[Var2+1]
RETURN CHR(16 * Var2+Var1)
Neste outro exemplo a sombra foi trocada por um caracter quadrado.
Imagem
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Problemas com apresentação de sombra em box

Mensagem por asimoes »

Achei a solução:

hb_gtInfo( HB_GTI_COMPATBUFFER, .T. )
* changed character values in internal screen buffer to unicode.
Warning: this modification interacts with SAVESCREE()/RESTSCREEN()
data. Now all GTs use extended definition. If somene
has code which needs VGA like screen buffers returned
by SAVESCREE() then it can be forced by
hb_gtInfo( HB_GTI_COMPATBUFFER, .t. )
Anyhow it will force to use only one CP in output.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder