📄 palette.cpp
字号:
//==================调色板模块==================
//*******************
LPPALETTEENTRY MainPal=NULL,NullPal=NULL,TitlePal=NULL;
void InitPalette(LPPALETTEENTRY &Pal)
{
Pal = (LPPALETTEENTRY) LocalAlloc( LPTR, sizeof( PALETTEENTRY ) * 256 );
lpDDPal->GetEntries(0,0,256,Pal);
if( NullPal == NULL )
{
NullPal = (LPPALETTEENTRY) LocalAlloc( LPTR, sizeof( PALETTEENTRY ) * 256 );
for(int i=0; i<256; i++)
{
NullPal[i].peRed=NullPal[i].peGreen=NullPal[i].peBlue=0;
NullPal[i].peFlags=NULL;
}
}
}
//读调色板
LPPALETTEENTRY LoadPalette(char *filename)
{
LPPALETTEENTRY Pe;
Pe = (LPPALETTEENTRY) LocalAlloc( LPTR, sizeof( PALETTEENTRY ) * 256 );
FILE *fp;
if( (fp=fopen(filename,"rb"))==NULL )
{
MessageBox(hWnd, "error load palette file!","error",MB_OK);
return NULL;
}
for(int i=0; i<256; i++)
{
fread(&Pe[i].peRed,1,1,fp);
fread(&Pe[i].peGreen,1,1,fp);
fread(&Pe[i].peBlue,1,1,fp);
//Pe[i].peFlags=TitlePal[i].peFlags;
}
fclose(fp);
return Pe;
}
//存调色板
void SavePalette(LPPALETTEENTRY Pe, char *filename)
{
FILE *fp;
if( (fp=fopen(filename,"wb"))==NULL )
{
MessageBox(hWnd, "error save palette file!","error",MB_OK);
return;
}
for(int i=0; i<256; i++)
{
fwrite(&Pe[i].peRed,1,1,fp);
fwrite(&Pe[i].peGreen,1,1,fp);
fwrite(&Pe[i].peBlue,1,1,fp);
//Pe[i].peFlags=TitlePal[i].peFlags;
}
fclose(fp);
}
void ChangePalette(LPPALETTEENTRY pal1,LPPALETTEENTRY pal2,int count)
{
LPPALETTEENTRY Pe;
Pe = (LPPALETTEENTRY) LocalAlloc( LPTR, sizeof( PALETTEENTRY ) * 256 );
memcpy( Pe, pal1, sizeof(PALETTEENTRY)*256);
for( int n=0; n<256/abs(count); n++)
{
for(int i=0; i<256; i++)
{
if( Pe[i].peRed != pal2[i].peRed )
Pe[i].peRed += count;
if( Pe[i].peGreen != pal2[i].peGreen )
Pe[i].peGreen += count;
if( Pe[i].peBlue != pal2[i].peBlue )
Pe[i].peBlue += count;
}
lpDDPal->SetEntries(0,0,256,Pe);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -