#include #define WIDER_LEFT 1 #define WIDER_RIGHT 2 #define WIDER_BOTH 3 #define NARROWER_LEFT 4 #define NARROWER_RIGHT 5 #define NARROWER_BOTH 6 #define WIDTH 7 #define BOX_WIDTH 8 #define BOX_REFRESH 10 /* Restore char to original form */ #define BOX_CLEAR 11 #define BOX_FILL 12 #define BOX_INV 13 #define BOX_HATCH 14 #define BOX_UNDO 15 /* Undo last change */ #define BOX_LEFTRIGHT 16 /* Flip left to right */ #define BOX_TOPBOTTOM 17 /* Flip top over bottom */ #define BOX_COPY 18 #define BOX_PASTE 19 #define ROW_ADD 21 #define ROW_DEL 22 #define COL_ADD 31 #define COL_DEL 32 #define ID_EDIT 34 #define ID_PATH 35 #define ID_LISTBOX 36 #define ID_FACE_NAME 37 #define ID_FONT_NAME 38 #define ID_COPYRIGHT 39 #define FONT_START 40 /* Generated if win fontedit arg. */ #define FONT_LOAD 41 /* Codes for Font Window */ #define FONT_SAVE 42 #define FONT_HEADER 43 #define FONT_COPY 44 #define FONT_PASTE 45 /* Paste in without rescaling */ #define FONT_ABOUT 46 /* Display the about box */ #define FONT_RESIZE 47 /* Go to Resize Dialog Box */ #define FONT_NEW 95 /* Menu id: create new font */ #define ID_FIRST_CHAR 48 /* First character in the font */ #define ID_LAST_CHAR 49 /* Last character in the font */ #define ID_POINTS 50 /* Nominal Point Size */ #define ID_VERT_RES 51 /* Nominal Vertical Resolution */ #define ID_HORIZ_RES 52 /* Nominal Horizontal Resolution */ #define ID_ASCENT 53 /* Height of Ascent */ #define ID_EXT_LEADING 54 /* Height of External Leading */ #define ID_INT_LEADING 55 /* Height of Internal Leading */ #define FONT_EXIT 56 /* exit the font editor */ #define ID_ITALIC 60 /* Flag for Italic Fonts */ #define ID_UNDERLINE 61 /* Flag for Underlined Fonts */ #define ID_STRIKEOUT 62 /* Flag for Struckout Fonts */ #define ID_ANSI 63 /* 0 = ANSI, 255 = other */ #define ID_OEM 64 #define ID_CHAR_SET 65 #define ID_DEFAULT_CHAR 66 /* Default for undefined Chars. */ #define ID_BREAK_CHAR 67 #define ID_SYMBOL 68 #define ID_UNKNOWN 70 #define ID_ROMAN 71 #define ID_SWISS 72 /* Pitch Families */ #define ID_MODERN 73 #define ID_SCRIPT 74 #define ID_DECORATIVE 75 #define ID_PIX_HEIGHT 80 /* Height of Characters */ #define ID_WIDTH 81 /* Fixed or Maximum Width */ #define ID_WIDTH_TEXT 82 /* Caption for above */ #define ID_AVERAGE 83 /* Average Character Width */ #define ID_FIXED 84 /* Fixed Width Font */ #define ID_VARIABLE 85 /* Variable width font */ #define ID_THIN 86 #define ID_EXTRALIGHT 87 #define ID_LIGHT 88 #define ID_NORMAL 89 #define ID_MEDIUM 90 #define ID_SEMIBOLD 91 #define ID_BOLD 92 #define ID_EXTRABOLD 93 #define ID_HEAVY 94 #define ID_BOXOPEN 96 /* dialog box frame id for File Open */ #define FONT_SAVEAS 97 #define ID_FORMAT2 102 /* Windows 2.0 Font Format */ #define ID_FORMAT3 103 /* Windows 3.0 Font Format */ /* string IDS for strings in resource file - LR */ #define IDS_NOMPTSIZENOTOK 0 #define IDS_NOMVERTRESNOTOK 1 #define IDS_NOMHORRESNOTOK 2 #define IDS_ASCENTTOOBIG 3 #define IDS_ASCENTNOTOK 4 #define IDS_EXTLEADNOTOK 5 #define IDS_INTLEADTOOBIG 6 #define IDS_INTLEADNOTOK 7 #define IDS_CHARSETOUTOFBOUNDS 8 #define IDS_DEFCHAROUTSIDEFONT 9 #define IDS_DEFCHARNOTOK 10 #define IDS_BREAKCHAROUTSIDEFONT 11 #define IDS_BREAKCHARNOTOK 12 #define IDS_UNKNOWNFACE 13 #define IDS_NOVARTOFIXCHANGE 14 #define IDS_TOOBIGFOR20 15 #define IDS_HEIGHTOUTOFBOUNDS 16 #define IDS_WIDTHOUTOFBOUNDS 17 #define IDS_CHAR1MORETHANDCHAR 18 #define IDS_CHAR1NOTOK 19 #define IDS_LASTCHARTOOSMALL 20 #define IDS_LASTCHARNOTOK 21 #define IDS_CANNOTOPENCLIP 22 #define IDS_COPYINGTOCLIP 23 #define IDS_NOTENOUGHMEM 24 #define IDS_ALLOCATINGSPACE 25 #define IDS_FONTEDIT 26 #define IDS_FONTSHOW 27 #define IDS_DOTFNT 28 #define IDS_BLANKDASHBLANK 29 #define IDS_ERROROPENINGFILE 30 #define IDS_ERRORREADINGHDR 31 #define IDS_UNKNOWNFORMAT 32 #define IDS_ERRORREADINGBODY 33 #define IDS_FILETOOLARGE 34 #define IDS_ERRORWRITINGHDR 35 #define IDS_ERRORWRITINGOFFSETS 36 #define IDS_ERRORWRITINGBODY 37 #define IDS_STARDOTFNT 38 #define IDS_UNKNOWN 39 #define IDS_MAXWIDTH 40 #define IDS_CHARPIXELWIDTH 41 #define IDS_ABOUT 42 #define IDS_DHEADER 43 #define IDS_DRESIZE 44 #define IDS_DWIDTH 45 #define IDS_EDLIMITS0TO64 46 #define IDS_MAXWIDTHINCREASE 47 #define IDS_CANNOTCHANGEWIDTH 48 #define IDS_WARNING 49 #define IDS_INCORRECTPIXWIDTH 50 #define IDS_MAXWIDTHOUTOFBOUNDS 51 #define IDS_AVGWIDTHOUTOFBOUNDS 52 #define IDS_WIDTHBYTESNOTOK 53 #define IDS_BITSOFFSETNOTOK 54 #define IDS_TABLEWIDTHSBAD 55 #define IDS_TABLEOFFSETSBAD 56 #define IDS_COLOR 57 #define IDS_APPWORKSPACE 58 #define IDS_FILEREADONLY 59 #define IDS_APPNAME 60 #define IDS_IFN 61 #define IDS_FNF 62 #define IDS_REF 63 #define IDS_SCC 64 #define IDS_EOF 65 #define IDS_ECF 66 #define IDS_FRO 67 #define IDS_EXT 68 #define IDS_EXTDESC 69 #define IDS_NEW_FONT 70 #define IDS_ERRORCLIP 71 #define IDS_CHAR 72 #define IDS_WIDTH 73 #define IDS_HEIGHT 74 #define CSTRINGS 75 /* total number of strings in resource file */ #define CCHSTRINGSMAX 4096 /* total length of all strings loaded must be <= this */ #define CCHCOLORSTRING 15 /* size of App Workspace color inf. string loaded from win.ini */ #define ID_SHIFTJIS 76 /*****************************************************************************/ /* Typedef's etc. */ /*****************************************************************************/ // typedef unsigned char CHAR; /* ... since we use these to index */ /* font file header (Adaptation Guide section 6.4) */ typedef struct { WORD Version; /* Always 17985 for the Nonce */ DWORD Size; /* Size of whole file */ CHAR Copyright[60]; WORD Type; /* Raster Font if Type & 1 == 0 */ WORD Points; /* Nominal Point size */ WORD VertRes; /* Nominal Vertical resolution */ WORD HorizRes; /* Nominal Horizontal resolution */ WORD Ascent; /* Height of Ascent */ WORD IntLeading; /* Internal (Microsoft) Leading */ WORD ExtLeading; /* External (Microsoft) Leading */ BYTE Italic; /* Italic font if set */ BYTE Underline; /* Etc. */ BYTE StrikeOut; /* Etc. */ WORD Weight; /* Weight: 200 = regular */ BYTE CharSet; /* ANSI=0. other=255 */ WORD PixWidth; /* Fixed width. 0 ==> Variable */ WORD PixHeight; /* Fixed Height */ BYTE Family; /* Pitch and Family */ WORD AvgWidth; /* Width of character 'X' */ WORD MaxWidth; /* Maximum width */ BYTE FirstChar; /* First character defined in font */ BYTE LastChar; /* Last character defined in font */ BYTE DefaultChar; /* Sub. for out of range chars. */ BYTE BreakChar; /* Word Break Character */ WORD WidthBytes; /* No.Bytes/row of Bitmap */ DWORD Device; /* Pointer to Device Name string */ DWORD Face; /* Pointer to Face Name String */ DWORD BitsPointer; /* Pointer to Bit Map */ DWORD BitsOffset; /* Offset to Bit Map */ } FontHeaderType; /* Above pointers all rel. to start of file */ typedef struct { WORD fsVersion; DWORD fsSize; CHAR fsCopyright[60]; WORD fsType; /* Type field for the font */ WORD fsPoints; /* Point size of font */ WORD fsVertRes; /* Vertical digitization */ WORD fsHorizRes; /* Horizontal digitization */ WORD fsAscent; /* Baseline offset from char cell top */ WORD fsInternalLeading; /* Internal leading included in font */ WORD fsExternalLeading; /* Prefered extra space between lines */ BYTE fsItalic; /* Flag specifying if italic */ BYTE fsUnderline; /* Flag specifying if underlined */ BYTE fsStrikeOut; /* Flag specifying if struck out */ WORD fsWeight; /* Weight of font */ BYTE fsCharSet; /* Character set of font */ WORD fsPixWidth; /* Width field for the font */ WORD fsPixHeight; /* Height field for the font */ BYTE fsPitchAndFamily; /* Flag specifying pitch and family */ WORD fsAvgWidth; /* Average character width */ WORD fsMaxWidth; /* Maximum character width */ BYTE fsFirstChar; /* First character in the font */ BYTE fsLastChar; /* Last character in the font */ BYTE fsDefaultChar; /* Default character for out of range */ BYTE fsBreakChar; /* Character to define wordbreaks */ WORD fsWidthBytes; /* Number of bytes in each row */ DWORD fsDevice; /* Offset to device name */ DWORD fsFace; /* Offset to face name */ DWORD fsBitsPointer; /* Bits pointer */ DWORD fsBitsOffset; /* Offset to the begining of the bitmap */ BYTE fsDBfiller; /* Word alignment for the offset table */ DWORD fsFlags; /* Bit flags */ WORD fsAspace; /* Global A space, if any */ WORD fsBspace; /* Global B space, if any */ WORD fsCspace; /* Global C space, if any */ DWORD fsColorPointer; /* offset to color table, if any */ DWORD fsReserved[4]; /* */ BYTE fsCharOffset; /* Area for storing the char. offsets */ } FontHeader30; #define CCHEXTRA 31 /* no. of extra bytes in the 3.0 header */ // // These are the old glyph info structures. Since they are not DWORD aligned // they must be converted to new structure types. // typedef struct{ SHORT GIwidth; SHORT GIoffset; } GLYPHINFO_20; typedef struct{ SHORT GIwidth; LONG GIoffset; } GLYPHINFO_30; #define ClipBoard TRUE LONG APIENTRY FontEditWndProc(HWND, WORD, WPARAM, LONG); LONG APIENTRY FontShowWndProc(HWND, WORD, WPARAM, LONG); BOOL APIENTRY HeaderProc( HWND hDial, WORD message, WPARAM wParam, LPARAM lParam ); BOOL APIENTRY ReSizeProc( HWND hDial, WORD message, WPARAM wParam, LPARAM lParam ); BOOL APIENTRY WidthProc( HWND hDial, WORD message, WPARAM wParam, LPARAM lParam ); CHAR * FontLoad(CHAR *, OFSTRUCT *); CHAR * FontSave(CHAR *, OFSTRUCT *); BOOL ResizeBody(); /* Change Height of Font. MAde return type BOOL istead of VOID - LR */ BOOL ResizeWidths(); /* Change Widths (Fixed Width Fonts).MAde return type BOOL istead of VOID - LR */ BOOL SpreadWidths(DWORD); /* Change Widths (Var. Width Fonts). MAde return type BOOL istead of VOID - LR */ VOID DeleteGlobalBitmap(); VOID ScrollFont(); VOID ExciseChars(); /* Delete part of a font */ BOOL CharWidth( BYTE iChar, /* Character to change */ DWORD wBox /* New width */ ); BOOL NewLastChar(DWORD); /* MAde return type BOOL istead of VOID - LR */ BOOL NewFirstChar(DWORD); /* MAde return type BOOL istead of VOID - LR */ #define kBoxLim 65 /* was 49 */ #define wBoxLim 65 #define szNamesMax 32 #define BLACK (LONG)0 #define WHITE (LONG)0x00FFFFFF /* For SetPixel rgbColor */ #define FILENAMEMAX _MAX_PATH /* Maximum allowed length of file names */ /********* the following added 11-Sep-1986 to use dlgsave.c and dlgopen.c **********/ #define IDD_OPEN 1 /* dialog box ids */ #define IDD_SAVE 2 #define IDD_FORMAT 3 #define MAX_STR_LEN 128 #define MAX_FNAME_LEN 128 #define CBEXTMAX 6 /* Number of bytes in "\*.ext" */ #define NOSAVE 0 /* return flags for DlgFnSave() */ #define NEWSAVE 1 #define OLDSAVE 2 #define NOOPEN 0 /* return flags for DlgFnOpen() */ #define NEWOPEN 1 #define OLDOPEN 2 #define WORD_LIMIT 65534 /* max. number of bytes that can be read(written) by */ #define SEGMENT_SIZE 65536 /* segment length in bytes */ /* abbreviations for accessing resource strings - LR */ #define vszNomPtSizeNotOk vrgsz[IDS_NOMPTSIZENOTOK ] #define vszNomVertResNotOk vrgsz[IDS_NOMVERTRESNOTOK ] #define vszNomHorResNotOk vrgsz[IDS_NOMHORRESNOTOK ] #define vszAscentTooBig vrgsz[IDS_ASCENTTOOBIG ] #define vszAscentNotOk vrgsz[IDS_ASCENTNOTOK ] #define vszExtLeadNotOk vrgsz[IDS_EXTLEADNOTOK ] #define vszIntLeadTooBig vrgsz[IDS_INTLEADTOOBIG ] #define vszIntLeadNotOk vrgsz[IDS_INTLEADNOTOK ] #define vszCharSetOutOfBounds vrgsz[IDS_CHARSETOUTOFBOUNDS ] #define vszDefCharOutsideFont vrgsz[IDS_DEFCHAROUTSIDEFONT ] #define vszDefCharNotOk vrgsz[IDS_DEFCHARNOTOK ] #define vszBreakCharOutsideFont vrgsz[IDS_BREAKCHAROUTSIDEFONT] #define vszBreakCharNotOk vrgsz[IDS_BREAKCHARNOTOK ] #define vszUnknownFace vrgsz[IDS_UNKNOWNFACE ] #define vszNoVarToFixChange vrgsz[IDS_NOVARTOFIXCHANGE ] #define vszTooBigFor20 vrgsz[IDS_TOOBIGFOR20 ] #define vszHeightOutOfBounds vrgsz[IDS_HEIGHTOUTOFBOUNDS ] #define vszWidthOutOfBounds vrgsz[IDS_WIDTHOUTOFBOUNDS ] #define vszChar1MoreThanDChar vrgsz[IDS_CHAR1MORETHANDCHAR ] #define vszChar1NotOk vrgsz[IDS_CHAR1NOTOK ] #define vszLastCharTooSmall vrgsz[IDS_LASTCHARTOOSMALL ] #define vszLastCharNotOk vrgsz[IDS_LASTCHARNOTOK ] #define vszCannotOpenClip vrgsz[IDS_CANNOTOPENCLIP ] #define vszCopyingToClip vrgsz[IDS_COPYINGTOCLIP ] #define vszNotEnoughMem vrgsz[IDS_NOTENOUGHMEM ] #define vszAllocatingSpace vrgsz[IDS_ALLOCATINGSPACE ] #define vszFontEdit vrgsz[IDS_FONTEDIT ] #define vszFontShow vrgsz[IDS_FONTSHOW ] #define vszDotFNT vrgsz[IDS_DOTFNT ] #define vszBlankDashBlank vrgsz[IDS_BLANKDASHBLANK ] #define vszErrorOpeningFile vrgsz[IDS_ERROROPENINGFILE ] #define vszErrorReadingHdr vrgsz[IDS_ERRORREADINGHDR ] #define vszUnknownFormat vrgsz[IDS_UNKNOWNFORMAT ] #define vszErrorReadingBody vrgsz[IDS_ERRORREADINGBODY ] #define vszFileTooLarge vrgsz[IDS_FILETOOLARGE ] #define vszErrorWritingHdr vrgsz[IDS_ERRORWRITINGHDR ] #define vszErrorWritingOffsets vrgsz[IDS_ERRORWRITINGOFFSETS ] #define vszErrorWritingBody vrgsz[IDS_ERRORWRITINGBODY ] #define vszStarDotFNT vrgsz[IDS_STARDOTFNT ] #define vszUnknown vrgsz[IDS_UNKNOWN ] #define vszMaxWidth vrgsz[IDS_MAXWIDTH ] #define vszCharPixelWidth vrgsz[IDS_CHARPIXELWIDTH ] #define vszABOUT vrgsz[IDS_ABOUT ] #define vszDHeader vrgsz[IDS_DHEADER ] #define vszDResize vrgsz[IDS_DRESIZE ] #define vszDWidth vrgsz[IDS_DWIDTH ] #define vszEdLimits0To64 vrgsz[IDS_EDLIMITS0TO64 ] #define vszMaxWidthIncrease vrgsz[IDS_MAXWIDTHINCREASE ] #define vszCannotChangeWidth vrgsz[IDS_CANNOTCHANGEWIDTH ] #define vszWarning vrgsz[IDS_WARNING ] #define vszIncorrectPixWidth vrgsz[IDS_INCORRECTPIXWIDTH ] #define vszMaxWidthOutOfBounds vrgsz[IDS_MAXWIDTHOUTOFBOUNDS ] #define vszAvgWidthOutOfBounds vrgsz[IDS_AVGWIDTHOUTOFBOUNDS ] #define vszWidthBytesNotOk vrgsz[IDS_WIDTHBYTESNOTOK ] #define vszBitsOffsetNotOk vrgsz[IDS_BITSOFFSETNOTOK ] #define vszTableWidthsBad vrgsz[IDS_TABLEWIDTHSBAD ] #define vszTableOffsetsBad vrgsz[IDS_TABLEOFFSETSBAD ] #define vszcolors vrgsz[IDS_COLOR ] #define vszAppWorkspace vrgsz[IDS_APPWORKSPACE ] #define vszFileReadOnly vrgsz[IDS_FILEREADONLY ] #define vszErrorClip vrgsz[IDS_ERRORCLIP ] #define vszCHAR vrgsz[IDS_CHAR ] #define vszWIDTH vrgsz[IDS_WIDTH ] #define vszHEIGHT vrgsz[IDS_HEIGHT ] /*------ fontedit.c -------*/ extern VOID ResizeShow(VOID); extern VOID ScrollFont(VOID); extern VOID CharToBox(BYTE); extern VOID FontRename(CHAR *); extern VOID BoxToChar(BYTE); extern DWORD GetkStuff(VOID); /*------ fontload.c -------*/ extern VOID ToClipboard(BYTE, DWORD, DWORD); extern VOID BoxToClipboard(POINT, DWORD, DWORD); extern DWORD ClipboardToBox(POINT, DWORD, DWORD, BOOL); /*------ fontdlg.c -------*/ BOOL CommDlgOpen ( HWND hWndParent, /* window handle of parent window */ OFSTRUCT *pOfstrIn, /* ptr to current file OFSTRUCT (->cBytes=0 if no * cur. file)*/ CHAR *pszNewNameIn, /* ptr to array which will get new file's name */ CHAR *pszExtIn, /* ptr to current default extension */ CHAR *pszAppNameIn, /* ptr to application name */ BOOL fOpenType ); BOOL CommDlgSaveAs( HANDLE hInstance, HWND hWndParent, /* window handle of parent window */ OFSTRUCT *pOfstrIn, /* ptr to current file OFSTRUCT (->cBytes=0 if no * cur. file)*/ CHAR *pszNewNameIn, /* ptr to array which will get new file's name * (no path) */ CHAR *pszExtIn, /* ptr to current default extension */ CHAR *pszAppNameIn /* ptr to application name */ ); BOOL DlgMergeStrings( CHAR *szSrc, CHAR *szMerge, CHAR *szDst ); /*------ fonthead.c -------*/ extern VOID ErrorBox(HWND, CHAR *); /*------ fontchar.c -------*/ extern VOID ClearBox(VOID); /*------ fontcvt.c --------*/ BOOL fConvStructInit (); VOID vFontStructFromBuffer ( PBYTE pjSourceBuff, FontHeaderType *pfhDestFHStruct ); VOID vBufferFromFontStruct ( FontHeaderType *pfhSourceFHStruct, PBYTE pjDestBuff ); VOID vBufferFromFont30Struct ( FontHeader30 *pfh3SourceFH3Struct, PBYTE pjDestBuff ); VOID vGlyphInfo20FromBuffer ( PBYTE pjSourceBuff, GLYPHINFO_20 *pgi2DestGI2Struct ); VOID vGlyphInfo30FromBuffer ( PBYTE pjSourceBuff, GLYPHINFO_30 *pgi3DestGI3Struct ); VOID vBufferFromGlyphInfo20 ( GLYPHINFO_20 *pgi2SrcGI2Struct, PBYTE pjDestBuff ); VOID vBufferFromGlyphInfo30 ( GLYPHINFO_30 *pgi3SrcGI3Struct, PBYTE pjDestBuff ); // dword alligned size of DIB scan in bytes #define CJ_DIB_SCAN(cx) ((((cx) + 31) & ~31) >> 3)