Annotation of ntddk/src/print/pscrptui/afmtopfm.c, revision 1.1.1.1

1.1       root        1: //--------------------------------------------------------------------------
                      2: //
                      3: // Module Name:  AFMTOPFM.C
                      4: //
                      5: // This module of the afm compiler parses the afm file and collects
                      6: // information in the NTfM structure.  It then passes control to the
                      7: // pfm module which outputs the pfm file.
                      8: //
                      9: // Author:  Kent Settle (kentse)
                     10: // Created: 18-Mar-1991
                     11: //
                     12: // Copyright (c) 1988 - 1993 Microsoft Corporation
                     13: //--------------------------------------------------------------------------
                     14: 
                     15: #include <string.h>
                     16: #include "pscript.h"
                     17: #include "mapping.h"
                     18: #include "pscrptui.h"
                     19: 
                     20: int     _fltused;   // HEY, it shut's up the linker.  That's why it's here.
                     21: 
                     22: //#define   ALL_METRICS
                     23: 
                     24: // external declarations.
                     25: 
                     26: extern VOID InitPfm(PPARSEDATA);
                     27: extern VOID ParseAfm(PPARSEDATA);
                     28: extern BOOL GetFirstLastChar(PPARSEDATA);
                     29: extern VOID SetWidths(PPARSEDATA);
                     30: extern BOOL WritePFM(PWSTR, PPARSEDATA);
                     31: extern VOID BuildNTFM(PPARSEDATA, PSTR);
                     32: 
                     33: //--------------------------------------------------------------------------
                     34: // BOOL CreatePFMFromAFM(pwstrAFMFile, pwstrPFMFile)
                     35: // PSZ pszAFMFile;
                     36: // PSZ pszPFMFile;
                     37: //
                     38: // Returns:
                     39: //   This routine returns TRUE for success, FALSE otherwise.
                     40: //
                     41: // History:
                     42: //   15-Jan-1992    -by-    Kent Settle     (kentse)
                     43: //  Modified to become part of PSCRPTUI.
                     44: //   20-Mar-1991    -by-    Kent Settle    (kentse)
                     45: //  ReWrote it, got rid of PFM.C and CHARCODE.C.
                     46: //   18-Mar-1991    -by-    Kent Settle    (kentse)
                     47: //  Brought in from PM, and cleaned up.
                     48: //--------------------------------------------------------------------------
                     49: 
                     50: BOOL CreatePFMFromAFM(pwstrAFMFile, pwstrPFMFile)
                     51: PWSTR   pwstrAFMFile;
                     52: PWSTR   pwstrPFMFile;
                     53: {
                     54:     WCHAR       wcbuf[MAX_PATH];
                     55:     PWSTR       pwstrPFAFile;
                     56:     CHAR       *pPFA;
                     57:     PPARSEDATA  pdata;
                     58:     BOOL        bReturn;
                     59: 
                     60:     // allocate memory for parsing data.
                     61: 
                     62:     if (!(pdata = (PPARSEDATA)LocalAlloc((LMEM_FIXED | LMEM_ZEROINIT),
                     63:                                          sizeof(PARSEDATA))))
                     64:     {
                     65:         RIP("PSCRPTUI!CreatePFMFromAFM: LocalAlloc for pdata failed.\n");
                     66:        return(FALSE);
                     67:     }
                     68: 
                     69:     // allocate temporary storage to build metrics into.
                     70: 
                     71:     if (!(pdata->pntfm = (PNTFM)LocalAlloc((LMEM_FIXED | LMEM_ZEROINIT), INIT_PFM)))
                     72:     {
                     73:         RIP("PSCRPTUI!CreatePFMFromAFM: LocalAlloc for pdata->pntfm failed.\n");
                     74:         LocalFree((LOCALHANDLE)pdata);
                     75:        return(FALSE);
                     76:     }
                     77: 
                     78:     // build the IFIMETRICS structure in temporary storage, until we
                     79:     // know its exact size.
                     80: 
                     81:     if (!(pdata->pTmpIFI = (PIFIMETRICS)LocalAlloc((LMEM_FIXED | LMEM_ZEROINIT),
                     82:                                                    INIT_IFI)))
                     83:     {
                     84:         RIP("PSCRPTUI!CreatePFMFromAFM: LocalAlloc for pTmpIFI failed.\n");
                     85:         LocalFree((LOCALHANDLE)pdata->pntfm);
                     86:         LocalFree((LOCALHANDLE)pdata);
                     87:         return(FALSE);
                     88:     }
                     89: 
                     90:     // initialize the NTFM structure.
                     91: 
                     92:     InitPfm(pdata);
                     93: 
                     94:     // open AFM file for input.
                     95: 
                     96:     pdata->hFile = CreateFile(pwstrAFMFile, GENERIC_READ,
                     97:                           FILE_SHARE_READ, NULL, OPEN_EXISTING,
                     98:                           FILE_ATTRIBUTE_NORMAL, NULL);
                     99: 
                    100:     if (pdata->hFile == INVALID_HANDLE_VALUE)
                    101:     {
                    102: #if DBG
                    103:        DbgPrint("PSCRPTUI!CreatePFMFromAFM:  CreateFile for %s failed.\n",
                    104:                 pwstrAFMFile);
                    105: #endif
                    106:         LocalFree((LOCALHANDLE)pdata->pntfm);
                    107:         LocalFree((LOCALHANDLE)pdata);
                    108:         return(FALSE);
                    109:     }
                    110: 
                    111:     // parse the AFM file, filling in the NTFM structure.
                    112: 
                    113:     ParseAfm(pdata);
                    114: 
                    115:     // close the AFM file.
                    116: 
                    117:     if (!CloseHandle(pdata->hFile))
                    118:        RIP("PSCRPTUI!CreatePFMFromAFM: CloseHandle failed to close afm file.\n");
                    119: 
                    120:     // open the corresponding .PFA file, which had been created just
                    121:     // prior to calling this routine.
                    122: 
                    123:     wcsncpy(wcbuf, pwstrPFMFile, (sizeof(wcbuf) / 2));
                    124:     pwstrPFAFile = wcbuf;
                    125: 
                    126:     while(*pwstrPFAFile)
                    127:        pwstrPFAFile++;
                    128: 
                    129:     pwstrPFAFile--;
                    130:     *pwstrPFAFile = (WCHAR)'A';
                    131: 
                    132:     // reset pointer.
                    133: 
                    134:     pwstrPFAFile = wcbuf;
                    135: 
                    136:     if (!(pPFA = MapFile(pwstrPFAFile)))
                    137:     {
                    138:        RIP("PSCRPTUI!CreatePFMFromAFM: MapFile failed.\n");
                    139:         LocalFree((LOCALHANDLE)pdata->pntfm);
                    140:         LocalFree((LOCALHANDLE)pdata->pTmpIFI);
                    141:         LocalFree((LOCALHANDLE)pdata);
                    142:         return(FALSE);
                    143:     }
                    144: 
                    145:     BuildNTFM(pdata, pPFA);
                    146: 
                    147:     // we are, in fact, done with the .PFA file, so unmap it, and
                    148:     // even delete it.
                    149: 
                    150:     UnmapViewOfFile((PVOID)pPFA);
                    151:     DeleteFile(pwstrPFAFile);
                    152: 
                    153:     // create the PFM file from the NTFM structure.
                    154: 
                    155: #ifdef ALL_METRICS
                    156:     DbgPrint("Size of PFM file = %d\n", pntfm->cjThis);
                    157: #endif
                    158: 
                    159:     bReturn = WritePFM(pwstrPFMFile, pdata);
                    160: 
                    161:     LocalFree((LOCALHANDLE)pdata->pntfm);
                    162:     LocalFree((LOCALHANDLE)pdata->pTmpIFI);
                    163:     LocalFree((LOCALHANDLE)pdata);
                    164: 
                    165:     return(bReturn);
                    166: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.