⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 driver32.c

📁 字体缩放显示
💻 C
字号:
/*********************************************************//* Test program driver for freetype  on Win32 Platform   *//* CopyRight(left) G. Ramat 1998 (gcramat@radiostudio.it)*//*                                                       *//*********************************************************/#include <setjmp.h>#include <stdarg.h>#include <stdio.h>#include <string.h>#include <windows.h>#include "freetype.h"#include "gdriver.h"HANDLE    evgetevent,evdriverdisplaybitmap,this_wnd,main_thread,listbox,bitmap;TEvent    evevent;char message_32[256];char *ev_buffer;jmp_buf Env;long TTMemory_Allocated = 0;  // just to have a clean link with ftdump // save last rendered image Dataint   save_lines,save_cols,exit_code;char *save_buffer;extern int vio_Width,vio_Height,vio_ScanLineWidth;extern  TT_Raster_Map  Bit;HDC hdc,memdc;HBITMAP hbm,hbm1;//________________________________________________________________________________void Get_Event(TEvent *event){   	WaitForSingleObject(evgetevent,INFINITE);  // wait for completion    *event=evevent;       //set by message handler before posting waited upon event	return;}int  Driver_Set_Graphics( int  mode ){   RECT rect;	 GetClientRect(bitmap,&rect);	 vio_Width=rect.right-rect.left;	 vio_Height = rect.bottom-rect.top;	 vio_ScanLineWidth=vio_Width;	 return 1;	  }int	 Driver_Restore_Mode(){return 1;}int  Driver_Display_Bitmap( char*  buffer, int  lines, int  cols ) {  long rc;  int i;  char *top,*bottom;  HANDLE rgdi;  RECT rect;  char *w_buffer;//  bitmap=listbox;  hdc=GetDC(bitmap);  memdc=CreateCompatibleDC(hdc);  GetClientRect(bitmap,&rect);  //hbm=CreateCompatibleBitmap(hdc,lines,cols);  // need to  set upside down bitmap .  if (buffer != save_buffer)     //new buffer  {    if (save_buffer!=NULL) 	  free(save_buffer);    save_buffer=(char *)malloc(Bit.size);    memcpy(save_buffer,buffer,Bit.size);  }  w_buffer=malloc(Bit.size);  // hope it succeeds   top=buffer;  bottom=w_buffer+Bit.size-cols;  for(i=0;i<Bit.size;i+=cols)  {     memcpy(bottom,top,cols);	top+=cols;	bottom-=cols;    };  save_lines=lines;  save_cols=cols;  hbm=CreateBitmap(vio_Width,vio_Height,1,1,w_buffer);  rgdi=SelectObject(memdc,hbm); // rc=SetBitmapBits(hbm,Bit.size,buffer);  //redundant   rc=StretchBlt(hdc,0,0,rect.right,rect.bottom,memdc,0,0,rect.right,rect.bottom,MERGECOPY);  ReleaseDC(bitmap,hdc);  DeleteObject(memdc);  rc=UpdateWindow(bitmap);  return 1; }int   call_test_program(int (*program)(int,char**),int argc,char **argv){int rc;// prepare return  address ( for exit)if(0==setjmp(Env)) //env set : call prog  rc=program(argc,argv); return rc;}void force_exit(int code){ char *p=NULL;	longjmp(Env,code);	//disable piping}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -