1 /*********************************************************/
2 /* Test program driver for freetype on Win32 Platform */
3 /* CopyRight(left) G. Ramat 1998 (gcramat@radiostudio.it)*/
5 /*********************************************************/
17 HANDLE evgetevent
,evdriverdisplaybitmap
,this_wnd
,main_thread
,listbox
,bitmap
;
22 long TTMemory_Allocated
= 0; // just to have a clean link with ftdump
23 // save last rendered image Data
24 int save_lines
,save_cols
,exit_code
;
26 extern int vio_Width
,vio_Height
,vio_ScanLineWidth
;
27 extern TT_Raster_Map Bit
;
31 //________________________________________________________________________________
32 void Get_Event(TEvent
*event
)
34 WaitForSingleObject(evgetevent
,INFINITE
); // wait for completion
35 *event
=evevent
; //set by message handler before posting waited upon event
39 int Driver_Set_Graphics( int mode
)
41 GetClientRect(bitmap
,&rect
);
42 vio_Width
=rect
.right
-rect
.left
;
43 vio_Height
= rect
.bottom
-rect
.top
;
44 vio_ScanLineWidth
=vio_Width
;
48 int Driver_Restore_Mode()
51 int Driver_Display_Bitmap( char* buffer
, int lines
, int cols
)
61 memdc
=CreateCompatibleDC(hdc
);
62 GetClientRect(bitmap
,&rect
);
63 //hbm=CreateCompatibleBitmap(hdc,lines,cols);
64 // need to set upside down bitmap .
65 if (buffer
!= save_buffer
) //new buffer
67 if (save_buffer
!=NULL
)
69 save_buffer
=(char *)malloc(Bit
.size
);
70 memcpy(save_buffer
,buffer
,Bit
.size
);
72 w_buffer
=malloc(Bit
.size
); // hope it succeeds
74 bottom
=w_buffer
+Bit
.size
-cols
;
75 for(i
=0;i
<Bit
.size
;i
+=cols
)
77 memcpy(bottom
,top
,cols
);
83 hbm
=CreateBitmap(vio_Width
,vio_Height
,1,1,w_buffer
);
84 rgdi
=SelectObject(memdc
,hbm
);
85 // rc=SetBitmapBits(hbm,Bit.size,buffer); //redundant
86 rc
=StretchBlt(hdc
,0,0,rect
.right
,rect
.bottom
,memdc
,0,0,rect
.right
,rect
.bottom
,MERGECOPY
);
87 ReleaseDC(bitmap
,hdc
);
89 rc
=UpdateWindow(bitmap
);
94 int call_test_program(int (*program
)(int,char**),int argc
,char **argv
)
96 // prepare return address ( for exit)
97 if(0==setjmp(Env
)) //env set : call prog
98 rc
=program(argc
,argv
);
102 void force_exit(int code
)