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

📄 cfonts.h

📁 A 2D game engine for C++ and an example : Aero Blasters
💻 H
字号:
// font bitmap allocation
  BITMAP Font[26];

  void LoadCharacters (void)
   {
   int i;
   char str[30];

      for (i=0; i<26 ; i++)
	{
	sprintf(str,"font\\%c.bmp",(char)65+i);
	bitmap_load(str,&Font[i]);
	farfree(Font[i].palette);
	}
   }

// free characters
   void FreeCharacters (void)
   {
   int i;
      for (i=0; i<26 ; i++)
	{
	farfree(Font[i].data);
	}
   }

// print characters
  void PrintChar (int x,int y,char character,int Flag)
   {
   int index = (int)character - 65;
   if ( (index < 0) || (index > 25) ) {return;}
   if (Flag){ bitmap_show_tranparency(&Font[index],x,y); }
   else     { bitmap_show_buffer_db(&Font[index],x,y);   }
   }

// print string
  void  PrintString(int x,int y,char *string,int trans_flag)
{
//the function blits a string using blit char
	int index;
	for (index=0;string[index]!=0;index++)
	{
	PrintChar(x+((index)<<3),y,string[index],trans_flag);
	}//end for
}//end
// rom functions
void PrintRomChar(int xc,int yc,char c,int color,int trans_flag)
{

//this uses the rom char set to blit a character.
//Bits r extracted out of each character byte 2 represent char

	int offset, x, y;
	char far *work_char;
	unsigned char bit_mask=0x80; //starting offset in ROM table

	work_char = rom_char_set + c * CHAR_HEIGHT;
	//COMPUTE THe offset of the video buffer
	offset=(yc<<8)+(yc<<6)+xc;
	for (y=0;y<CHAR_HEIGHT;y++)
	{
	//reset bit mask
		bit_mask=0x80;
		for(x=0;x<CHAR_WIDTH;x++)
		{
			//test for transparent pixel 0 else draw
			if ((*work_char & bit_mask))
			double_buffer[offset+x]=color+y;
			else if (!trans_flag)
			double_buffer[offset+x]=0;
			//takes care of transparency
			//shift bit mask
			bit_mask= (bit_mask >> 1);
		}//end for
	//move to next line
	offset+=SCREEN_WIDTH;
	work_char++;
	}//end for y
}//end blit char

void  PrintRomString(int x,int y,int color,char *string,int trans_flag)
{
//the function blits a string using blit char
	int index;
	for (index=0;string[index]!=0;index++)
	{
	PrintRomChar(x+(index<<3),y,string[index],color,trans_flag);
	}//end for
}//end blit strring

⌨️ 快捷键说明

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