2015-09-02 16:15:32 +03:00
# define MEMSIZE 0x2EE80
2015-08-27 11:33:51 +03:00
2016-12-21 18:40:39 +03:00
# include "../lib/kfont.h"
2015-08-27 11:33:51 +03:00
# include "../lib/gui.h"
2015-09-02 16:15:32 +03:00
# define PANELH 30
2016-02-20 16:06:19 +03:00
proc_info Form ;
enum {
2016-12-21 13:56:06 +03:00
STRONG_BTN = 10 , SMOOTH_BTN ,
2016-02-20 16:06:19 +03:00
PHRASE_TAB = 20 , CHARS_TAB
} ;
2015-09-02 16:15:32 +03:00
2015-08-27 11:33:51 +03:00
void main ( )
{
2016-02-20 16:06:19 +03:00
int btn ;
char title [ 4196 ] ;
2015-12-17 22:15:49 +03:00
if ( ! param ) strcpy ( # param , DEFAULT_FONT ) ;
2016-12-21 22:50:13 +03:00
kfont . init ( # param ) ;
2016-02-20 16:06:19 +03:00
tabs . active_tab = PHRASE_TAB ;
2015-11-06 17:49:37 +03:00
strcpy ( # title , " Font preview: " ) ;
2015-08-27 11:33:51 +03:00
strcat ( # title , # param ) ;
2016-02-20 16:06:19 +03:00
loop ( ) switch ( WaitEvent ( ) )
2015-08-27 11:33:51 +03:00
{
case evButton :
btn = GetButtonID ( ) ;
if ( btn = = 1 ) ExitProcess ( ) ;
2016-12-21 22:50:13 +03:00
if ( btn = = STRONG_BTN ) kfont . bold ^ = 1 ;
if ( btn = = SMOOTH_BTN ) kfont . smooth ^ = 1 ;
2016-02-20 16:06:19 +03:00
if ( btn = = PHRASE_TAB ) | | ( btn = = CHARS_TAB ) tabs . click ( btn ) ;
2015-09-02 16:15:32 +03:00
goto _DRAW_WINDOW_CONTENT ;
2015-08-27 11:33:51 +03:00
case evReDraw :
2016-02-11 16:46:53 +03:00
system . color . get ( ) ;
2016-11-23 14:37:13 +03:00
DefineAndDrawWindow ( 215 , 100 , 500 , 320 + skin_height , 0x74 , 0xFFFFFF , # title , 0 ) ;
2015-09-02 16:15:32 +03:00
GetProcessInfo ( # Form , SelfInfo ) ;
2015-12-19 00:10:45 +03:00
if ( Form . status_window > 2 ) break ;
2015-09-02 16:15:32 +03:00
_DRAW_WINDOW_CONTENT :
2016-02-20 16:06:19 +03:00
DrawBar ( 0 , 0 , Form . cwidth , PANELH - 1 , system . color . work ) ;
2016-12-21 22:50:13 +03:00
CheckBox ( 10 , 8 , STRONG_BTN , " Bold " , kfont . bold ) ;
CheckBox ( 83 , 8 , SMOOTH_BTN , " Smooth " , kfont . smooth ) ;
2016-02-20 16:06:19 +03:00
tabs . draw ( Form . cwidth - 150 , PANELH , PHRASE_TAB , " Phrase " ) ;
tabs . draw ( Form . cwidth - 70 , PANELH , CHARS_TAB , " Chars " ) ;
DrawBar ( 0 , PANELH - 1 , Form . cwidth , 1 , system . color . work_graph ) ;
2016-12-21 22:50:13 +03:00
if ( ! kfont . font )
2015-08-27 11:33:51 +03:00
{
2015-12-17 22:15:49 +03:00
DrawBar ( 0 , PANELH , Form . cwidth , Form . cheight - PANELH , 0xFFFfff ) ;
WriteText ( 10 , 50 , 0x82 , 0xFF00FF , " Font is not loaded. " ) ;
2016-02-20 16:06:19 +03:00
break ;
2015-09-02 16:15:32 +03:00
}
2016-02-20 16:06:19 +03:00
if ( tabs . active_tab = = PHRASE_TAB ) DrawPreviewPhrase ( ) ;
if ( tabs . active_tab = = CHARS_TAB ) DrawPreviewChars ( ) ;
}
}
void DrawPreviewPhrase ( )
{
dword i , y ;
char line [ 256 ] ;
2016-12-21 22:50:13 +03:00
kfont . raw_size = free ( kfont . raw ) ;
for ( i = 10 , y = 5 ; i < 22 ; i + + , y + = kfont . height ; ) //not flexible, need to calculate font count and max line length
2016-02-20 16:06:19 +03:00
{
sprintf ( # line , " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> /size font %d <20> <> <EFBFBD> ᥫ<EFBFBD> <E1A5AB> ." , i ) ;
2016-12-21 22:50:13 +03:00
kfont . WriteIntoBuffer ( 10 , y , Form . cwidth , Form . cheight - PANELH , 0xFFFFFF , 0 , i , # line ) ;
2016-02-20 16:06:19 +03:00
}
2016-12-21 22:50:13 +03:00
if ( kfont . smooth ) kfont . ApplySmooth ( ) ;
kfont . ShowBuffer ( 0 , PANELH ) ;
2016-02-20 16:06:19 +03:00
}
void DrawPreviewChars ( )
{
dword i , x = 20 , y = 0 ;
char line [ 2 ] ;
line [ 1 ] = NULL ;
2016-12-21 22:50:13 +03:00
kfont . raw_size = free ( kfont . raw ) ;
2016-02-20 16:06:19 +03:00
for ( i = 0 ; i < 255 ; i + + ) //not flexible, need to calculate font count and max line length
{
line [ 0 ] = i ;
2016-12-21 22:50:13 +03:00
kfont . WriteIntoBuffer ( x , y , Form . cwidth , Form . cheight - PANELH , 0xFFFFFF , 0 , 16 , # line ) ;
x + = kfont . height + 2 ;
2016-02-20 16:06:19 +03:00
if ( x > = Form . cwidth - 30 ) {
x = 20 ;
2016-12-21 22:50:13 +03:00
y + = kfont . height + 2 ;
2016-02-20 16:06:19 +03:00
}
2015-08-27 11:33:51 +03:00
}
2016-12-21 22:50:13 +03:00
if ( kfont . smooth ) kfont . ApplySmooth ( ) ;
kfont . ShowBuffer ( 0 , PANELH ) ;
2015-08-27 11:33:51 +03:00
}