windows-nt/Source/XPSP1/NT/shell/osshell/accesory/eudcedit/eten.h
2020-09-26 16:20:57 +08:00

134 lines
4.8 KiB
C

//
// Copyright (c) 1997-1999 Microsoft Corporation.
//
/*
CWIN31 EUDC Format and ETEN format
The structures are not aligned to word order. For the reason, it is need to use
'char' array base structures for the purpose of R/W files.
For the further item, the word is strored in Intel monor, use set/get functions.
+---------------------------+
| File Header 256 bytes | -----> USERFONTHEADER
+---------------------------+
| Code Bank ID 2 bytes | ~|
+---------------------------+ |---> CODEELEMENT
| DBCS Code 2 bytes | _|
+---------------------------+
| Patten ?? bytes | -----> Glyph Patten depend on width and height
+---------------------------+
. .
. .
. .
+---------------------------+
| Code Bank ID 2 bytes |
+---------------------------+
| DBCS Code 2 bytes |
+---------------------------+
| Patten ?? bytes | ---> Byte Boundary,remaining bits are not stable
+---------------------------+
*/
#ifdef BUILD_ON_WINNT
#pragma pack(1)
#endif // BUILD_ON_WINNT
struct CFONTINFO {
unsigned short uInfoSize; // Size of this structure.
unsigned short idCP; // Code page ID 938 for Taiwan.
char idCharSet; // Character set is CHINESEBIG5_CHARSET
char fbTypeFace; // Type face.
char achFontName[12]; // Font Name.
unsigned long ulCharDefine; // Number of usable characters.
unsigned short uCellWidth; // Width of font cell.
unsigned short uCellHeight; // Height of font cell.
unsigned short uCharHeight; // Height of character height.
unsigned short uBaseLine; //
unsigned short uUnderLine; //
unsigned short uUnlnHeight; // Height of underline.
char fchStrokeWeight; // Weight of font (Bold or Thin)
unsigned short fCharStyle; // italy
char fbFontAttrib; //
unsigned long ulCellWidthMax; // Max width of font cell.
unsigned long ulCellHeightMax; // Max height of font cell.
};
struct ETENHEADER {
unsigned short uHeaderSize; // Size of this structure.
char idUserFontSign[8]; // Must be "CWIN_PTN", "CMEX_PTN"
char idMajor; // Version number if it is 1.0 then
char idMinor; // idMajor is 1 and idMinor is 0
unsigned long ulCharCount; // Number of characters in file
unsigned short uCharWidth; // Width of the character.
unsigned short uCharHeight; // Height of the character.
unsigned long cPatternSize; // size of pattern in byte.
char uchBankID; // if data is in same bank.
unsigned short idInternalBankID; // Internal code bank ID.
char achReserved1[37]; // must be zero.
struct CFONTINFO sFontInfo; // chinese font structure.
char achReserved2[18]; // must be zero.
char achCopyRightMsg[128]; // Copyright message.
};
struct CODEELEMENT {
unsigned short nBankID; // BankID
unsigned short nInternalCode; // Internal Code
};
struct R_CFONTINFO {
unsigned char uInfoSize[2]; // Size of this structure.
unsigned char idCP[2]; // Code page ID 938 for Taiwan.
char idCharSet; // Character set is CHINESEBIG5_CHARSET
char fbTypeFace; // Type face.
char achFontName[12]; // Font Name.
unsigned char ulCharDefine[4]; // Number of usable characters.
unsigned char uCellWidth[2]; // Width of font cell.
unsigned char uCellHeight[2]; // Height of font cell.
unsigned char uCharHeight[2]; // Height of character height.
unsigned char uBaseLine[2]; //
unsigned char uUnderLine[2]; //
unsigned char uUnlnHeight[2]; // Height of underline.
char fchStrokeWeight; // Weight of font (Bold or Thin)
unsigned char fCharStyle[2]; // italy
char fbFontAttrib; //
unsigned char ulCellWidthMax[4]; // Max width of font cell.
unsigned char ulCellHeightMax[4]; // Max height of font cell.
};
struct R_ETENHEADER {
unsigned char uHeaderSize[2]; // Size of this structure.
char idUserFontSign[8]; // Must be "CWIN_PTN", "CMEX_PTN"
char idMajor; // Version number if it is 1.0 then
char idMinor; // idMajor is 1 and idMinor is 0
unsigned char ulCharCount[4]; // Number of characters in file
unsigned char uCharWidth[2]; // Width of the character.
unsigned char uCharHeight[2]; // Height of the character.
unsigned char cPatternSize[4]; // size of pattern in byte.
char uchBankID; // if data is in same bank.
unsigned char idInternalBankID[2]; // Internal code bank ID.
char achReserved1[37]; // must bezero.
struct R_CFONTINFO sFontInfo; // chinese font structure.
char achReserved2[18]; // must be zero.
char achCopyRightMsg[128]; // Copyright message.
};
struct R_CODEELEMENT {
unsigned char nBankID[2]; // BankID
unsigned char nInternalCode[2]; // Internal Code
};
/* Open Mode */
#define ETEN_READ 0
#define ETEN_WRITE 1
int openETENBMP(TCHAR *path,int md);
int closeETENBMP(void);
int createETENBMP(TCHAR *path,int width,int height);
int readETENBMPRec(int rec,LPBYTE buf,int bufsiz,unsigned short *code);
int appendETENBMP(LPBYTE buf,unsigned short code);
#ifdef BUILD_ON_WINNT
#pragma pack()
#endif // BUILD_ON_WINNT
/* EOF */