Annotation of ntddk/src/print/pscrptui/afmtopfm.c, revision 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.