You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3575 lines
138 KiB
3575 lines
138 KiB
// Copyright (c) 1996-1999 Microsoft Corporation
|
|
/* framwrk.c - functions that tie different functions together.
|
|
a supporting framework so to speak.
|
|
|
|
History of Changes
|
|
9/30/98 --hsingh--
|
|
Added call to function BsetUQMFlag(). The function enables
|
|
making the UpdateQualityMacro? keyword optional in
|
|
.gpd file.
|
|
|
|
*/
|
|
|
|
|
|
#include "gpdparse.h"
|
|
#include "globals.h"
|
|
|
|
|
|
// ---- functions defined in framwrk.c ---- //
|
|
|
|
|
|
BOOL BcreateGPDbinary(
|
|
PWSTR pwstrFileName,
|
|
DWORD dwVerbosity) ;
|
|
|
|
VOID VinitMainKeywordTable(
|
|
PGLOBL pglobl) ;
|
|
|
|
DWORD DWinitMainKeywordTable1(
|
|
DWORD dwI,
|
|
PGLOBL pglobl) ;
|
|
|
|
DWORD DWinitMainKeywordTable2(
|
|
DWORD dwI,
|
|
PGLOBL pglobl) ;
|
|
|
|
DWORD DWinitMainKeywordTable3(
|
|
DWORD dwI,
|
|
PGLOBL pglobl) ;
|
|
|
|
DWORD DWinitMainKeywordTable4(
|
|
DWORD dwI,
|
|
PGLOBL pglobl) ;
|
|
|
|
DWORD DWinitMainKeywordTable5(
|
|
DWORD dwI,
|
|
PGLOBL pglobl) ;
|
|
|
|
|
|
VOID VinitValueToSize(
|
|
PGLOBL pglobl) ;
|
|
|
|
VOID VinitGlobals(
|
|
DWORD dwVerbosity,
|
|
PGLOBL pglobl);
|
|
|
|
BOOL BpreAllocateObjects(
|
|
PGLOBL pglobl) ;
|
|
|
|
BOOL BreturnBuffers(
|
|
PGLOBL pglobl) ;
|
|
|
|
BOOL BallocateCountableObjects(
|
|
PGLOBL pglobl) ;
|
|
|
|
BOOL BinitPreAllocatedObjects(
|
|
PGLOBL pglobl) ;
|
|
|
|
BOOL BinitCountableObjects(
|
|
PGLOBL pglobl) ;
|
|
|
|
BOOL BevaluateMacros(
|
|
PGLOBL pglobl) ;
|
|
|
|
BOOL BpostProcess(
|
|
PWSTR pwstrFileName,
|
|
PGLOBL pglobl) ;
|
|
|
|
BOOL BconsolidateBuffers(
|
|
PWSTR pwstrFileName,
|
|
PGLOBL pglobl) ;
|
|
|
|
BOOL BexpandMemConfigShortcut(DWORD dwSubType) ;
|
|
|
|
BOOL BexpandCommandShortcut(DWORD dwSubType) ;
|
|
|
|
|
|
|
|
// ---------------------------------------------------- //
|
|
|
|
BOOL BcreateGPDbinary(
|
|
PWSTR pwstrFileName, // root GPD file
|
|
DWORD dwVerbosity ) // Verbosity Level
|
|
{
|
|
BOOL bStatus ;
|
|
GLOBL globl;
|
|
|
|
PGLOBL pglobl = &globl;
|
|
|
|
// check. Temporary global.
|
|
// check. pglobl = &globl;
|
|
|
|
VinitGlobals(dwVerbosity, &globl) ;
|
|
|
|
while(geErrorSev < ERRSEV_FATAL)
|
|
{
|
|
bStatus = BpreAllocateObjects(&globl) ;
|
|
|
|
|
|
if(bStatus)
|
|
{
|
|
bStatus = BinitPreAllocatedObjects(&globl) ;
|
|
}
|
|
if(bStatus)
|
|
{
|
|
bStatus = BcreateTokenMap(pwstrFileName, &globl ) ;
|
|
}
|
|
if(bStatus)
|
|
{
|
|
bStatus = BexpandShortcuts(&globl) ;
|
|
}
|
|
if(bStatus)
|
|
{
|
|
bStatus = BevaluateMacros(&globl) ;
|
|
}
|
|
if(bStatus)
|
|
{
|
|
bStatus = BInterpretTokens((PTKMAP)gMasterTable[MTI_NEWTOKENMAP].
|
|
pubStruct, TRUE, &globl ) ; // is first pass
|
|
}
|
|
if(bStatus)
|
|
{
|
|
bStatus = BallocateCountableObjects(&globl) ;
|
|
}
|
|
if(bStatus)
|
|
{
|
|
bStatus = BinitCountableObjects(&globl) ;
|
|
}
|
|
if(bStatus)
|
|
{
|
|
bStatus = BInterpretTokens((PTKMAP)gMasterTable[MTI_NEWTOKENMAP].
|
|
pubStruct, FALSE, &globl ) ; // second pass
|
|
}
|
|
if(bStatus)
|
|
{
|
|
bStatus = BpostProcess(pwstrFileName, &globl) ;
|
|
}
|
|
; // execution reaches here regardless
|
|
// sets error code if needed.
|
|
if(BreturnBuffers(&globl) ) // clears ERRSEV_RESTART but
|
|
{ // returns FALSE in this case.
|
|
if(geErrorSev < ERRSEV_RESTART)
|
|
{
|
|
return(bStatus) ; // escape
|
|
}
|
|
}
|
|
}
|
|
return(FALSE) ; // died due to Fatal , unrecoverable error.
|
|
} // BcreateGPDbinary(...)
|
|
|
|
|
|
VOID VinitMainKeywordTable(
|
|
PGLOBL pglobl)
|
|
{
|
|
DWORD dwI = 0 ; // index to MainKeywordTable.
|
|
|
|
dwI = DWinitMainKeywordTable1(dwI, pglobl) ;
|
|
dwI = DWinitMainKeywordTable2(dwI, pglobl) ;
|
|
dwI = DWinitMainKeywordTable3(dwI, pglobl) ;
|
|
dwI = DWinitMainKeywordTable4(dwI, pglobl) ;
|
|
dwI = DWinitMainKeywordTable5(dwI, pglobl) ;
|
|
|
|
if(dwI >= gMasterTable[MTI_MAINKEYWORDTABLE].dwArraySize)
|
|
RIP(("Too many entries to fit inside MainKeywordTable\n"));
|
|
}
|
|
|
|
DWORD DWinitMainKeywordTable1(
|
|
DWORD dwI,
|
|
PGLOBL pglobl)
|
|
/*
|
|
note:
|
|
VinitDictionaryIndex() assumes the MainKeywordTable
|
|
is divided into sections. Each section is terminated by
|
|
a NULL entry, that is an entry where pstrKeyword = NULL.
|
|
The sections and their order in the KeywordTable are defined
|
|
by the enum KEYWORD_SECTS. Make sure the MainKeywordTable
|
|
has enough slots to hold all entries defined here.
|
|
*/
|
|
{
|
|
/* NON_ATTR - constructs and special keywords. */
|
|
|
|
// *UIGroup:
|
|
mMainKeywordTable[dwI].pstrKeyword = "UIGroup" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_DEF ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_UIGROUP ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
dwI++ ;
|
|
|
|
// *Feature:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Feature" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_DEF ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_FEATURE ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
dwI++ ;
|
|
|
|
// *Option:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Option" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_DEF ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_OPTION ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
gdwOptionConstruct = dwI ;
|
|
dwI++ ;
|
|
|
|
|
|
// *switch:
|
|
mMainKeywordTable[dwI].pstrKeyword = "switch" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_DEF ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_SWITCH ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
dwI++ ;
|
|
|
|
// *case:
|
|
mMainKeywordTable[dwI].pstrKeyword = "case" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_DEF ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_CASE ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
dwI++ ;
|
|
|
|
// *Switch:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Switch" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_DEF ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_SWITCH ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
dwI++ ;
|
|
|
|
// *Case:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Case" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_DEF ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_CASE ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
dwI++ ;
|
|
|
|
// *default:
|
|
mMainKeywordTable[dwI].pstrKeyword = "default" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_DEF ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_DEFAULT ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
dwI++ ;
|
|
|
|
// *Command:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Command" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_DEF ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_COMMAND ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
gdwCommandConstruct = dwI ;
|
|
dwI++ ;
|
|
|
|
// *FontCartridge:
|
|
mMainKeywordTable[dwI].pstrKeyword = "FontCartridge" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_DEF ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_FONTCART ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
dwI++ ;
|
|
|
|
// *TTFS:
|
|
mMainKeywordTable[dwI].pstrKeyword = "TTFS" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_DEF ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_TTFONTSUBS ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
dwI++ ;
|
|
|
|
// *OEM:
|
|
mMainKeywordTable[dwI].pstrKeyword = "OEM" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_DEF ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_OEM ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
dwI++ ;
|
|
|
|
|
|
|
|
// BlockMacro:
|
|
mMainKeywordTable[dwI].pstrKeyword = "BlockMacro" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_DEF ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_BLOCKMACRO ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ; // not used
|
|
dwI++ ;
|
|
|
|
// Macros:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Macros" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = NO_VALUE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_MACROS;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ; // not used
|
|
dwI++ ;
|
|
|
|
// {:
|
|
mMainKeywordTable[dwI].pstrKeyword = "{" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = NO_VALUE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_OPENBRACE ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ; // not used
|
|
gdwOpenBraceConstruct = dwI ;
|
|
dwI++ ;
|
|
|
|
// }:
|
|
mMainKeywordTable[dwI].pstrKeyword = "}" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = NO_VALUE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_CONSTRUCT ;
|
|
mMainKeywordTable[dwI].dwSubType = CONSTRUCT_CLOSEBRACE ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ; // not used
|
|
gdwCloseBraceConstruct = dwI ;
|
|
dwI++ ;
|
|
|
|
|
|
// end of constructs.
|
|
|
|
// *Include:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Include" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_DEF_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_SPECIAL ;
|
|
mMainKeywordTable[dwI].dwSubType = SPEC_INCLUDE ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
dwI++ ;
|
|
|
|
// *InsertBlock:
|
|
mMainKeywordTable[dwI].pstrKeyword = "InsertBlock" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_BLOCKMACRO ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_SPECIAL ;
|
|
mMainKeywordTable[dwI].dwSubType = SPEC_INSERTBLOCK ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
dwI++ ;
|
|
|
|
|
|
// *IgnoreBlock:
|
|
mMainKeywordTable[dwI].pstrKeyword = "IgnoreBlock" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = NO_VALUE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_SPECIAL ;
|
|
mMainKeywordTable[dwI].dwSubType = SPEC_IGNOREBLOCK ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
gdwID_IgnoreBlock = dwI ;
|
|
dwI++ ;
|
|
|
|
|
|
// *InvalidCombination:
|
|
mMainKeywordTable[dwI].pstrKeyword = "InvalidCombination" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_SPECIAL ;
|
|
mMainKeywordTable[dwI].dwSubType = SPEC_INVALID_COMBO ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrInvalidCombos) ;
|
|
dwI++ ;
|
|
|
|
// *InvalidInstallableCombination:
|
|
mMainKeywordTable[dwI].pstrKeyword = "InvalidInstallableCombination" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_PARTIALLY_QUALIFIED_NAME ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_SPECIAL ;
|
|
mMainKeywordTable[dwI].dwSubType = SPEC_INVALID_INS_COMBO ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrInvldInstallCombo) ;
|
|
dwI++ ;
|
|
|
|
// *Cmd:
|
|
// mMainKeywordTable[dwI].pstrKeyword = "Cmd" ;
|
|
// mMainKeywordTable[dwI].eAllowedValue = VALUE_COMMAND_SHORTCUT ;
|
|
// mMainKeywordTable[dwI].flAgs = KWF_SHORTCUT ;
|
|
// mMainKeywordTable[dwI].eType = TY_SPECIAL ;
|
|
// mMainKeywordTable[dwI].dwSubType = SPEC_COMMAND_SHORTCUT ;
|
|
// mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
// dwI++ ;
|
|
|
|
|
|
|
|
// *TTFS:
|
|
// mMainKeywordTable[dwI].pstrKeyword = "TTFS" ;
|
|
// mMainKeywordTable[dwI].eAllowedValue = VALUE_FONTSUB ;
|
|
// mMainKeywordTable[dwI].flAgs = KWF_SHORTCUT ;
|
|
// mMainKeywordTable[dwI].eType = TY_SPECIAL ;
|
|
// mMainKeywordTable[dwI].dwSubType = SPEC_TTFS ;
|
|
// mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
// dwI++ ;
|
|
|
|
|
|
|
|
// these memconfig keywords must be expanded into
|
|
// options.
|
|
|
|
// *MemConfigKB:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MemConfigKB" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_SHORTCUT ;
|
|
mMainKeywordTable[dwI].eType = TY_SPECIAL ;
|
|
mMainKeywordTable[dwI].dwSubType = SPEC_MEM_CONFIG_KB ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
gdwMemConfigKB = dwI ;
|
|
|
|
dwI++ ;
|
|
|
|
// *MemConfigMB:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MemConfigMB" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_SHORTCUT ;
|
|
mMainKeywordTable[dwI].eType = TY_SPECIAL ;
|
|
mMainKeywordTable[dwI].dwSubType = SPEC_MEM_CONFIG_MB ;
|
|
mMainKeywordTable[dwI].dwOffset = 0 ;
|
|
gdwMemConfigMB = dwI ;
|
|
dwI++ ;
|
|
|
|
// ---- End of Section ---- //
|
|
mMainKeywordTable[dwI].pstrKeyword = NULL ;
|
|
dwI++ ;
|
|
|
|
return dwI ;
|
|
}
|
|
|
|
DWORD DWinitMainKeywordTable2(
|
|
DWORD dwI,
|
|
PGLOBL pglobl)
|
|
{
|
|
|
|
|
|
/* ---- GLOBAL Construct keywords: ----- */
|
|
|
|
// *GPDSpecVersion:
|
|
mMainKeywordTable[dwI].pstrKeyword = "GPDSpecVersion" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_NO_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrGPDSpecVersion) ;
|
|
dwI++ ;
|
|
|
|
// *MasterUnits:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MasterUnits" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMasterUnits) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *ModelName:
|
|
mMainKeywordTable[dwI].pstrKeyword = "ModelName" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_CP_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrModelName) ;
|
|
dwI++ ;
|
|
|
|
// *rcModelNameID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcModelNameID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrModelNameID) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *GPDFileVersion:
|
|
mMainKeywordTable[dwI].pstrKeyword = "GPDFileVersion" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_NO_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrGPDFileVersion) ;
|
|
dwI++ ;
|
|
|
|
// *GPDFileName:
|
|
mMainKeywordTable[dwI].pstrKeyword = "GPDFileName" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_DEF_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrGPDFileName) ;
|
|
dwI++ ;
|
|
|
|
|
|
|
|
// *InstalledOptionName:
|
|
mMainKeywordTable[dwI].pstrKeyword = "InstalledOptionName" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_CP_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrNameInstalled) ;
|
|
dwI++ ;
|
|
|
|
// *rcInstalledOptionNameID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcInstalledOptionNameID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrNameIDInstalled) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *NotInstalledOptionName:
|
|
mMainKeywordTable[dwI].pstrKeyword = "NotInstalledOptionName" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_CP_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrNameNotInstalled) ;
|
|
dwI++ ;
|
|
|
|
// *rcNotInstalledOptionNameID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcNotInstalledOptionNameID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrNameIDNotInstalled) ;
|
|
dwI++ ;
|
|
|
|
// *DraftQualitySettings:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DraftQualitySettings" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrDraftQualitySettings) ;
|
|
dwI++ ;
|
|
|
|
// *BetterQualitySettings:
|
|
mMainKeywordTable[dwI].pstrKeyword = "BetterQualitySettings" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrBetterQualitySettings) ;
|
|
dwI++ ;
|
|
|
|
// *BestQualitySettings:
|
|
mMainKeywordTable[dwI].pstrKeyword = "BestQualitySettings" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrBestQualitySettings) ;
|
|
dwI++ ;
|
|
|
|
// *DefaultQuality:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DefaultQuality" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_QUALITYSETTING ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrDefaultQuality) ;
|
|
dwI++ ;
|
|
|
|
// *PrinterType:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PrinterType" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_PRINTERTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrPrinterType) ;
|
|
dwI++ ;
|
|
|
|
// *Personality:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Personality" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_CP_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrPersonality) ;
|
|
dwI++ ;
|
|
|
|
// *rcPersonalityID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcPersonalityID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrRcPersonalityID) ;
|
|
dwI++ ;
|
|
|
|
// *ResourceDLL:
|
|
mMainKeywordTable[dwI].pstrKeyword = "ResourceDLL" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_DEF_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrResourceDLL) ;
|
|
dwI++ ;
|
|
|
|
// *CodePage:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CodePage" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrCodePage) ;
|
|
dwI++ ;
|
|
|
|
// *MaxCopies:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MaxCopies" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMaxCopies) ;
|
|
dwI++ ;
|
|
|
|
// *FontCartSlots:
|
|
mMainKeywordTable[dwI].pstrKeyword = "FontCartSlots" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrFontCartSlots) ;
|
|
dwI++ ;
|
|
|
|
// *MaxPrintableArea:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MaxPrintableArea" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMaxPrintableArea) ;
|
|
dwI++ ;
|
|
|
|
// *OutputDataFormat:
|
|
mMainKeywordTable[dwI].pstrKeyword = "OutputDataFormat" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_OUTPUTDATAFORMAT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrOutputDataFormat) ;
|
|
dwI++ ;
|
|
|
|
// *LookaheadRegion:
|
|
mMainKeywordTable[dwI].pstrKeyword = "LookAheadRegion" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrLookaheadRegion) ;
|
|
dwI++ ;
|
|
|
|
// *rcPrinterIconID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcPrinterIconID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrPrinterIcon) ;
|
|
dwI++ ;
|
|
|
|
// *HelpFile:
|
|
mMainKeywordTable[dwI].pstrKeyword = "HelpFile" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_DEF_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrHelpFile) ;
|
|
dwI++ ;
|
|
|
|
// *OEMCustomData:
|
|
mMainKeywordTable[dwI].pstrKeyword = "OEMCustomData" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_NO_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrOEMCustomData) ;
|
|
dwI++ ;
|
|
|
|
|
|
|
|
//
|
|
// Printer Capabilities related information
|
|
//
|
|
|
|
// *RotateCoordinate?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "RotateCoordinate?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrRotateCoordinate) ;
|
|
dwI++ ;
|
|
|
|
// *RasterCaps:
|
|
mMainKeywordTable[dwI].pstrKeyword = "RasterCaps" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_RASTERCAPS ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrRasterCaps) ;
|
|
dwI++ ;
|
|
|
|
// *RotateRaster?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "RotateRaster?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrRotateRasterData) ;
|
|
dwI++ ;
|
|
|
|
// *TextCaps:
|
|
mMainKeywordTable[dwI].pstrKeyword = "TextCaps" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_TEXTCAPS ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrTextCaps) ;
|
|
dwI++ ;
|
|
|
|
// *RotateFont?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "RotateFont?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrRotateFont) ;
|
|
dwI++ ;
|
|
|
|
// *MemoryUsage:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MemoryUsage" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_MEMORYUSAGE ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMemoryUsage) ;
|
|
dwI++ ;
|
|
|
|
// *ReselectFont:
|
|
mMainKeywordTable[dwI].pstrKeyword = "ReselectFont" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_RESELECTFONT ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrReselectFont) ;
|
|
dwI++ ;
|
|
|
|
// *PrintRate:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PrintRate" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrPrintRate) ;
|
|
|
|
dwI++ ;
|
|
|
|
#ifndef WINNT_40
|
|
// *PrintRateUnit:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PrintRateUnit" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_PRINTRATEUNIT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrPrintRateUnit) ;
|
|
dwI++ ;
|
|
#endif
|
|
|
|
// *PrintRatePPM:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PrintRatePPM" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrPrintRatePPM) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *OutputOrderReversed?:
|
|
// note this keyword is also an option Keyword with type:
|
|
// ATT_LOCAL_OPTION_ONLY
|
|
mMainKeywordTable[dwI].pstrKeyword = "OutputOrderReversed?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrOutputOrderReversed) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *ReverseBandOrderForEvenPages?:
|
|
// special flag for HP970C with AutoDuplexer
|
|
//
|
|
mMainKeywordTable[dwI].pstrKeyword = "ReverseBandOrderForEvenPages?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrReverseBandOrderForEvenPages) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *OEMPrintingCallbacks:
|
|
mMainKeywordTable[dwI].pstrKeyword = "OEMPrintingCallbacks" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_OEMPRINTINGCALLBACKS ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrOEMPrintingCallbacks) ;
|
|
dwI++ ;
|
|
|
|
|
|
//
|
|
// Cursor Control related information
|
|
//
|
|
|
|
|
|
// *CursorXAfterCR:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CursorXAfterCR" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_CURSORXAFTERCR ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrCursorXAfterCR) ;
|
|
dwI++ ;
|
|
|
|
// *BadCursorMoveInGrxMode:
|
|
mMainKeywordTable[dwI].pstrKeyword = "BadCursorMoveInGrxMode" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BADCURSORMOVEINGRXMODE ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrBadCursorMoveInGrxMode) ;
|
|
dwI++ ;
|
|
|
|
// *YMoveAttributes:
|
|
mMainKeywordTable[dwI].pstrKeyword = "YMoveAttributes" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_YMOVEATTRIB ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrYMoveAttributes) ;
|
|
dwI++ ;
|
|
|
|
// *MaxLineSpacing:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MaxLineSpacing" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMaxLineSpacing) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *UseSpaceForXMove?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "UseSpaceForXMove?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrbUseSpaceForXMove) ;
|
|
dwI++ ;
|
|
|
|
// *AbsXMovesRightOnly?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "AbsXMovesRightOnly?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrbAbsXMovesRightOnly) ;
|
|
dwI++ ;
|
|
|
|
|
|
|
|
#if 0
|
|
// *SimulateXMove:
|
|
mMainKeywordTable[dwI].pstrKeyword = "SimulateXMove" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_SIMULATEXMOVE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrSimulateXMove) ;
|
|
dwI++ ;
|
|
#endif
|
|
|
|
// *EjectPageWithFF?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "EjectPageWithFF?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrEjectPageWithFF) ;
|
|
dwI++ ;
|
|
|
|
// *XMoveThreshold:
|
|
mMainKeywordTable[dwI].pstrKeyword = "XMoveThreshold" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrXMoveThreshold) ;
|
|
dwI++ ;
|
|
|
|
// *YMoveThreshold:
|
|
mMainKeywordTable[dwI].pstrKeyword = "YMoveThreshold" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrYMoveThreshold) ;
|
|
dwI++ ;
|
|
|
|
// *XMoveUnit:
|
|
mMainKeywordTable[dwI].pstrKeyword = "XMoveUnit" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrXMoveUnits) ;
|
|
dwI++ ;
|
|
|
|
// *YMoveUnit:
|
|
mMainKeywordTable[dwI].pstrKeyword = "YMoveUnit" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrYMoveUnits) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *LineSpacingMoveUnit:
|
|
mMainKeywordTable[dwI].pstrKeyword = "LineSpacingMoveUnit" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrLineSpacingMoveUnit) ;
|
|
dwI++ ;
|
|
|
|
|
|
|
|
|
|
return dwI ;
|
|
}
|
|
|
|
DWORD DWinitMainKeywordTable3(
|
|
DWORD dwI,
|
|
PGLOBL pglobl)
|
|
{
|
|
|
|
|
|
|
|
//
|
|
// Color related information
|
|
//
|
|
|
|
|
|
|
|
// *ChangeColorModeOnPage?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "ChangeColorModeOnPage?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrChangeColorMode) ;
|
|
dwI++ ;
|
|
|
|
// *ChangeColorModeOnDoc?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "ChangeColorModeOnDoc?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrChangeColorModeDoc) ;
|
|
dwI++ ;
|
|
|
|
// *MagentaInCyanDye:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MagentaInCyanDye" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMagentaInCyanDye) ;
|
|
dwI++ ;
|
|
|
|
// *YellowInCyanDye:
|
|
mMainKeywordTable[dwI].pstrKeyword = "YellowInCyanDye" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrYellowInCyanDye) ;
|
|
dwI++ ;
|
|
|
|
// *CyanInMagentaDye:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CyanInMagentaDye" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrCyanInMagentaDye) ;
|
|
dwI++ ;
|
|
|
|
// *YellowInMagentaDye:
|
|
mMainKeywordTable[dwI].pstrKeyword = "YellowInMagentaDye" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrYellowInMagentaDye) ;
|
|
dwI++ ;
|
|
|
|
// *CyanInYellowDye:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CyanInYellowDye" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrCyanInYellowDye) ;
|
|
dwI++ ;
|
|
|
|
// *MagentaInYellowDye:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MagentaInYellowDye" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMagentaInYellowDye) ;
|
|
dwI++ ;
|
|
|
|
// *UseExpColorSelectCmd?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "UseExpColorSelectCmd?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrUseColorSelectCmd) ;
|
|
dwI++ ;
|
|
|
|
// *MoveToX0BeforeSetColor?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MoveToX0BeforeSetColor?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMoveToX0BeforeColor) ;
|
|
dwI++ ;
|
|
|
|
// *EnableGDIColorMapping?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "EnableGDIColorMapping?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrEnableGDIColorMapping) ;
|
|
dwI++ ;
|
|
|
|
// obsolete fields
|
|
// *MaxNumPalettes:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MaxNumPalettes" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMaxNumPalettes) ;
|
|
dwI++ ;
|
|
|
|
#if 0
|
|
|
|
// *PaletteSizes:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PaletteSizes" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrPaletteSizes) ;
|
|
dwI++ ;
|
|
|
|
// *PaletteScope:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PaletteScope" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_PALETTESCOPE ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrPaletteScope) ;
|
|
dwI++ ;
|
|
|
|
#endif
|
|
|
|
// *MinOverlayID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MinOverlayID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMinOverlayID) ;
|
|
dwI++ ;
|
|
|
|
// *MaxOverlayID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MaxOverlayID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMaxOverlayID) ;
|
|
dwI++ ;
|
|
|
|
// *OptimizeLeftBound?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "OptimizeLeftBound?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrOptimizeLeftBound) ;
|
|
dwI++ ;
|
|
|
|
// *StripBlanks:
|
|
mMainKeywordTable[dwI].pstrKeyword = "StripBlanks" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_STRIPBLANKS ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrStripBlanks) ;
|
|
dwI++ ;
|
|
|
|
// *LandscapeGrxRotation:
|
|
mMainKeywordTable[dwI].pstrKeyword = "LandscapeGrxRotation" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_LANDSCAPEGRXROTATION ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrLandscapeGrxRotation) ;
|
|
dwI++ ;
|
|
|
|
// *RasterZeroFill?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "RasterZeroFill?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrRasterZeroFill) ;
|
|
dwI++ ;
|
|
|
|
// *RasterSendAllData?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "RasterSendAllData?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrRasterSendAllData) ;
|
|
dwI++ ;
|
|
|
|
// *SendMultipleRows?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "SendMultipleRows?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrSendMultipleRows) ;
|
|
dwI++ ;
|
|
|
|
// *MaxMultipleRowBytes:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MaxMultipleRowBytes" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMaxMultipleRowBytes) ;
|
|
dwI++ ;
|
|
|
|
// *CursorXAfterSendBlockData:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CursorXAfterSendBlockData" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_CURSORXAFTERSENDBLOCKDATA ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrCursorXAfterSendBlockData) ;
|
|
dwI++ ;
|
|
|
|
// *CursorYAfterSendBlockData:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CursorYAfterSendBlockData" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_CURSORYAFTERSENDBLOCKDATA ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrCursorYAfterSendBlockData) ;
|
|
dwI++ ;
|
|
|
|
// *MirrorRasterByte?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MirrorRasterByte?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMirrorRasterByte) ;
|
|
dwI++ ;
|
|
|
|
// *MirrorRasterPage?
|
|
mMainKeywordTable[dwI].pstrKeyword = "MirrorRasterPage?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMirrorRasterPage) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *DeviceFonts: formerly known as *Font:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DeviceFonts" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST | KWF_ADDITIVE ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrDeviceFontsList ) ;
|
|
dwI++ ;
|
|
|
|
// *DefaultFont:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DefaultFont" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrDefaultFont) ;
|
|
dwI++ ;
|
|
|
|
// *TTFSEnabled?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "TTFSEnabled?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrTTFSEnabled ) ;
|
|
dwI++ ;
|
|
|
|
// *RestoreDefaultFont?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "RestoreDefaultFont?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrRestoreDefaultFont) ;
|
|
dwI++ ;
|
|
|
|
// *DefaultCTT:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DefaultCTT" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrDefaultCTT) ;
|
|
dwI++ ;
|
|
|
|
// *MaxFontUsePerPage:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MaxFontUsePerPage" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMaxFontUsePerPage) ;
|
|
dwI++ ;
|
|
|
|
// *RotateFont?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "RotateFont?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrRotateFont) ;
|
|
dwI++ ;
|
|
|
|
// *TextYOffset:
|
|
mMainKeywordTable[dwI].pstrKeyword = "TextYOffset" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrTextYOffset) ;
|
|
dwI++ ;
|
|
|
|
// *CharPosition:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CharPosition" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_CHARPOSITION ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrCharPosition) ;
|
|
dwI++ ;
|
|
|
|
// ------- Font Downloading
|
|
|
|
// *MinFontID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MinFontID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMinFontID) ;
|
|
dwI++ ;
|
|
|
|
// *MaxFontID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MaxFontID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMaxFontID) ;
|
|
dwI++ ;
|
|
|
|
// *MaxNumDownFonts:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MaxNumDownFonts" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMaxNumDownFonts) ;
|
|
dwI++ ;
|
|
|
|
// *DLSymbolSet:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DLSymbolSet" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_DLSYMBOLSET ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrDLSymbolSet) ;
|
|
dwI++ ;
|
|
|
|
// *MinGlyphID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MinGlyphID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMinGlyphID) ;
|
|
dwI++ ;
|
|
|
|
// *MaxGlyphID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MaxGlyphID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMaxGlyphID) ;
|
|
dwI++ ;
|
|
|
|
// *IncrementalDownload?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "IncrementalDownload?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrIncrementalDownload) ;
|
|
dwI++ ;
|
|
|
|
// *FontFormat:
|
|
mMainKeywordTable[dwI].pstrKeyword = "FontFormat" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_FONTFORMAT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrFontFormat) ;
|
|
dwI++ ;
|
|
|
|
// *MemoryUsage:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MemoryUsage" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMemoryForFontsOnly) ;
|
|
dwI++ ;
|
|
|
|
// *DiffFontsPerByteMode?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DiffFontsPerByteMode?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrDiffFontsPerByteMode) ;
|
|
dwI++ ;
|
|
|
|
// -----
|
|
|
|
// *CursorXAfterRectFill:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CursorXAfterRectFill" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_CURXAFTER_RECTFILL ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrCursorXAfterRectFill) ;
|
|
dwI++ ;
|
|
|
|
// *CursorYAfterRectFill:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CursorYAfterRectFill" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_CURYAFTER_RECTFILL ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrCursorYAfterRectFill) ;
|
|
dwI++ ;
|
|
|
|
// *MinGrayFill:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MinGrayFill" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMinGrayFill) ;
|
|
dwI++ ;
|
|
|
|
// *MaxGrayFill:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MaxGrayFill" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrMaxGrayFill) ;
|
|
dwI++ ;
|
|
|
|
// *TextHalftoneThreshold:
|
|
mMainKeywordTable[dwI].pstrKeyword = "TextHalftoneThreshold" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_GLOBAL_FREEFLOAT ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(GLOBALATTRIB,
|
|
atrTextHalftoneThreshold) ;
|
|
dwI++ ;
|
|
|
|
|
|
|
|
|
|
// ---- End of Section ---- //
|
|
mMainKeywordTable[dwI].pstrKeyword = NULL ;
|
|
dwI++ ;
|
|
|
|
|
|
return dwI ;
|
|
}
|
|
|
|
DWORD DWinitMainKeywordTable4(
|
|
DWORD dwI,
|
|
PGLOBL pglobl)
|
|
{
|
|
|
|
|
|
|
|
/* ---- FEATURE Construct keywords: ----- */
|
|
|
|
// *FeatureType:
|
|
mMainKeywordTable[dwI].pstrKeyword = "FeatureType" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_FEATURETYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrFeatureType) ;
|
|
dwI++ ;
|
|
|
|
// *UIType: aka PickMany?
|
|
mMainKeywordTable[dwI].pstrKeyword = "UIType" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_UITYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrUIType) ;
|
|
dwI++ ;
|
|
|
|
// *DefaultOption:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DefaultOption" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_SYMBOL_OPTIONS ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrDefaultOption) ;
|
|
dwI++ ;
|
|
|
|
// *ConflictPriority:
|
|
mMainKeywordTable[dwI].pstrKeyword = "ConflictPriority" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrPriority ) ;
|
|
dwI++ ;
|
|
|
|
// *Installable?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Installable?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrFeaInstallable) ;
|
|
dwI++ ;
|
|
|
|
// *InstallableFeatureName:
|
|
mMainKeywordTable[dwI].pstrKeyword = "InstallableFeatureName" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_CP_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrInstallableFeaDisplayName ) ;
|
|
dwI++ ;
|
|
|
|
// *rcInstallableFeatureNameID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcInstallableFeatureNameID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrInstallableFeaRcNameID) ;
|
|
dwI++ ;
|
|
|
|
// *Name:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Name" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_CP_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrFeaDisplayName ) ;
|
|
dwI++ ;
|
|
|
|
// *rcNameID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcNameID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrFeaRcNameID) ;
|
|
dwI++ ;
|
|
|
|
// *rcIconID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcIconID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrFeaRcIconID) ;
|
|
dwI++ ;
|
|
|
|
// *rcHelpTextID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcHelpTextID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrFeaRcHelpTextID) ;
|
|
dwI++ ;
|
|
|
|
// *rcPromptMsgID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcPromptMsgID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrFeaRcPromptMsgID) ;
|
|
dwI++ ;
|
|
|
|
// *rcPromptTime:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcPromptTime" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_PROMPTTIME ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrFeaRcPromptTime) ;
|
|
dwI++ ;
|
|
|
|
// *ConcealFromUI?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "ConcealFromUI?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrConcealFromUI) ;
|
|
dwI++ ;
|
|
|
|
// *UpdateQualityMacro?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "UpdateQualityMacro?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrUpdateQualityMacro) ;
|
|
dwI++ ;
|
|
|
|
// *HelpIndex:
|
|
mMainKeywordTable[dwI].pstrKeyword = "HelpIndex" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrFeaHelpIndex) ;
|
|
dwI++ ;
|
|
|
|
// *QueryOptionList: BUG_BUG! not supported in 5.0
|
|
mMainKeywordTable[dwI].pstrKeyword = "QueryOptionList" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrQueryOptionList) ;
|
|
dwI++ ;
|
|
|
|
// *QueryDataType:
|
|
mMainKeywordTable[dwI].pstrKeyword = "QueryDataType" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_QUERYDATATYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrQueryDataType) ;
|
|
dwI++ ;
|
|
|
|
// *QueryDefaultOption: BUG_BUG! not supported in 5.0
|
|
mMainKeywordTable[dwI].pstrKeyword = "QueryDefaultOption" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrQueryDefaultOption) ;
|
|
dwI++ ;
|
|
|
|
// *InstalledConstraints:
|
|
mMainKeywordTable[dwI].pstrKeyword = "InstalledConstraints" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTRAINT ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrFeaInstallConstraints) ;
|
|
dwI++ ;
|
|
|
|
// *NotInstalledConstraints:
|
|
mMainKeywordTable[dwI].pstrKeyword = "NotInstalledConstraints" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTRAINT ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FEATURE_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrFeaNotInstallConstraints) ;
|
|
dwI++ ;
|
|
|
|
|
|
// ---- End of Section ---- //
|
|
mMainKeywordTable[dwI].pstrKeyword = NULL ;
|
|
dwI++ ;
|
|
|
|
|
|
/* ---- OPTION Construct keywords: ----- */
|
|
|
|
// *Installable?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Installable?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrOptInstallable) ;
|
|
dwI++ ;
|
|
|
|
// *InstallableFeatureName:
|
|
mMainKeywordTable[dwI].pstrKeyword = "InstallableFeatureName" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_CP_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrInstallableOptDisplayName ) ;
|
|
dwI++ ;
|
|
|
|
// *rcInstallableFeatureNameID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcInstallableFeatureNameID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrInstallableOptRcNameID) ;
|
|
dwI++ ;
|
|
|
|
// *Name:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Name" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_CP_CONVERT;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrOptDisplayName ) ;
|
|
gdwOptionName = dwI ;
|
|
dwI++ ;
|
|
|
|
// *rcNameID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcNameID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrOptRcNameID) ;
|
|
dwI++ ;
|
|
|
|
// *rcIconID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcIconID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrOptRcIconID) ;
|
|
dwI++ ;
|
|
|
|
// *rcHelpTextID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcHelpTextID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrOptRcHelpTextID) ;
|
|
dwI++ ;
|
|
|
|
// *HelpIndex:
|
|
mMainKeywordTable[dwI].pstrKeyword = "HelpIndex" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrOptHelpIndex) ;
|
|
dwI++ ;
|
|
|
|
// *rcPromptMsgID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcPromptMsgID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrOptRcPromptMsgID) ;
|
|
dwI++ ;
|
|
|
|
// *rcPromptTime:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcPromptTime" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_PROMPTTIME ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrOptRcPromptTime) ;
|
|
dwI++ ;
|
|
|
|
// *Constraints:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Constraints" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTRAINT ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrConstraints) ;
|
|
dwI++ ;
|
|
|
|
// *InstalledConstraints:
|
|
mMainKeywordTable[dwI].pstrKeyword = "InstalledConstraints" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTRAINT ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrOptInstallConstraints) ;
|
|
dwI++ ;
|
|
|
|
// *NotInstalledConstraints:
|
|
mMainKeywordTable[dwI].pstrKeyword = "NotInstalledConstraints" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTRAINT ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrOptNotInstallConstraints) ;
|
|
dwI++ ;
|
|
|
|
// *OptionID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "OptionID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrOptIDvalue) ;
|
|
dwI++ ;
|
|
|
|
// *DisabledFeatures:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DisabledFeatures" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_PARTIALLY_QUALIFIED_NAME ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST | KWF_ADDITIVE ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrDisabledFeatures) ;
|
|
dwI++ ;
|
|
|
|
|
|
#ifdef GMACROS
|
|
|
|
// *DependentSettings:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DependentSettings" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST | KWF_CHAIN ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrDependentSettings) ;
|
|
dwI++ ;
|
|
|
|
// *UIChangeTriggersMacro:
|
|
mMainKeywordTable[dwI].pstrKeyword = "UIChangeTriggersMacro" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST | KWF_CHAIN ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrUIChangeTriggersMacro) ;
|
|
dwI++ ;
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// -- Option specific keywords -- //
|
|
|
|
// *PrintableArea:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PrintableArea" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrPrintableSize) ;
|
|
dwI++ ;
|
|
|
|
// *PrintableOrigin:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PrintableOrigin" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrPrintableOrigin) ;
|
|
dwI++ ;
|
|
|
|
// *CursorOrigin:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CursorOrigin" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrCursorOrigin) ;
|
|
dwI++ ;
|
|
|
|
// *VectorOffset:
|
|
mMainKeywordTable[dwI].pstrKeyword = "VectorOffset" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrVectorOffset) ;
|
|
dwI++ ;
|
|
|
|
// *MinSize:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MinSize" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrMinSize) ;
|
|
dwI++ ;
|
|
|
|
// *MaxSize:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MaxSize" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrMaxSize) ;
|
|
dwI++ ;
|
|
|
|
// *TopMargin:
|
|
mMainKeywordTable[dwI].pstrKeyword = "TopMargin" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrTopMargin) ;
|
|
dwI++ ;
|
|
|
|
// *BottomMargin:
|
|
mMainKeywordTable[dwI].pstrKeyword = "BottomMargin" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrBottomMargin) ;
|
|
dwI++ ;
|
|
|
|
// *MaxPrintableWidth:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MaxPrintableWidth" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrMaxPrintableWidth) ;
|
|
dwI++ ;
|
|
|
|
// *MinLeftMargin:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MinLeftMargin" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrMinLeftMargin) ;
|
|
dwI++ ;
|
|
|
|
// *CenterPrintable?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CenterPrintable?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrCenterPrintable) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *PageDimensions:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PageDimensions" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrPageDimensions) ;
|
|
dwI++ ;
|
|
|
|
// *RotateSize?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "RotateSize?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrRotateSize) ;
|
|
dwI++ ;
|
|
|
|
// *PortRotationAngle:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PortRotationAngle" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrPortRotationAngle) ;
|
|
dwI++ ;
|
|
|
|
// *PageProtectMem:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PageProtectMem" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrPageProtectMem) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *CustCursorOriginX:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CustCursorOriginX" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_PARAMETER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrCustCursorOriginX) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *CustCursorOriginY:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CustCursorOriginY" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_PARAMETER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrCustCursorOriginY) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *CustPrintableOriginX:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CustPrintableOriginX" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_PARAMETER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrCustPrintableOriginX) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *CustPrintableOriginY:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CustPrintableOriginY" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_PARAMETER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrCustPrintableOriginY) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *CustPrintableSizeX:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CustPrintableSizeX" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_PARAMETER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrCustPrintableSizeX) ;
|
|
dwI++ ;
|
|
// *CustPrintableSizeY:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CustPrintableSizeY" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_PARAMETER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrCustPrintableSizeY) ;
|
|
dwI++ ;
|
|
|
|
|
|
|
|
|
|
// *FeedMargins:
|
|
mMainKeywordTable[dwI].pstrKeyword = "FeedMargins" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrFeedMargins) ;
|
|
dwI++ ;
|
|
|
|
// *PaperFeed:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PaperFeed" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_PAPERFEED_ORIENT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrPaperFeed) ;
|
|
dwI++ ;
|
|
|
|
// *DPI:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DPI" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrDPI) ;
|
|
dwI++ ;
|
|
|
|
// *SpotDiameter:
|
|
mMainKeywordTable[dwI].pstrKeyword = "SpotDiameter" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrSpotDiameter) ;
|
|
dwI++ ;
|
|
|
|
// *TextDPI:
|
|
mMainKeywordTable[dwI].pstrKeyword = "TextDPI" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrTextDPI) ;
|
|
dwI++ ;
|
|
|
|
// *PinsPerPhysPass:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PinsPerPhysPass" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrPinsPerPhysPass) ;
|
|
dwI++ ;
|
|
|
|
// *PinsPerLogPass:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PinsPerLogPass" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrPinsPerLogPass) ;
|
|
dwI++ ;
|
|
|
|
// *RequireUniDir?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "RequireUniDir?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrRequireUniDir) ;
|
|
dwI++ ;
|
|
|
|
// *MinStripBlankPixels:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MinStripBlankPixels" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrMinStripBlankPixels) ;
|
|
dwI++ ;
|
|
|
|
// *RedDeviceGamma:
|
|
mMainKeywordTable[dwI].pstrKeyword = "RedDeviceGamma" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrRedDeviceGamma) ;
|
|
dwI++ ;
|
|
|
|
// *GreenDeviceGamma:
|
|
mMainKeywordTable[dwI].pstrKeyword = "GreenDeviceGamma" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrGreenDeviceGamma) ;
|
|
dwI++ ;
|
|
|
|
// *BlueDeviceGamma:
|
|
mMainKeywordTable[dwI].pstrKeyword = "BlueDeviceGamma" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_FF ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrBlueDeviceGamma) ;
|
|
dwI++ ;
|
|
|
|
// *Color?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Color?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrColor) ;
|
|
dwI++ ;
|
|
|
|
// *DevNumOfPlanes:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DevNumOfPlanes" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrDevNumOfPlanes) ;
|
|
dwI++ ;
|
|
|
|
// *DevBPP:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DevBPP" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrDevBPP) ;
|
|
dwI++ ;
|
|
|
|
// *ColorPlaneOrder:
|
|
mMainKeywordTable[dwI].pstrKeyword = "ColorPlaneOrder" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_COLORPLANE ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrColorPlaneOrder) ;
|
|
dwI++ ;
|
|
|
|
// *DrvBPP:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DrvBPP" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrDrvBPP) ;
|
|
dwI++ ;
|
|
|
|
// *IPCallbackID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "IPCallbackID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrIPCallbackID) ;
|
|
dwI++ ;
|
|
|
|
// *ColorSeparation?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "ColorSeparation?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrColorSeparation) ;
|
|
dwI++ ;
|
|
|
|
// *RasterMode:
|
|
mMainKeywordTable[dwI].pstrKeyword = "RasterMode" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_RASTERMODE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrRasterMode) ;
|
|
dwI++ ;
|
|
|
|
// *PaletteSize:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PaletteSize" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrPaletteSize) ;
|
|
dwI++ ;
|
|
|
|
// *PaletteProgrammable?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PaletteProgrammable?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrPaletteProgrammable) ;
|
|
dwI++ ;
|
|
|
|
// *rcHTPatternID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcHTPatternID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrRcHTPatternID) ;
|
|
dwI++ ;
|
|
|
|
// *HTPatternSize:
|
|
mMainKeywordTable[dwI].pstrKeyword = "HTPatternSize" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrHTPatternSize) ;
|
|
dwI++ ;
|
|
|
|
// *HTNumPatterns:
|
|
mMainKeywordTable[dwI].pstrKeyword = "HTNumPatterns" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrHTNumPatterns) ;
|
|
dwI++ ;
|
|
|
|
// *HTCallbackID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "HTCallbackID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrHTCallbackID) ;
|
|
dwI++ ;
|
|
|
|
// *Luminance:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Luminance" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrLuminance) ;
|
|
dwI++ ;
|
|
|
|
|
|
// *MemoryConfigKB:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MemoryConfigKB" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrMemoryConfigKB) ;
|
|
gdwMemoryConfigKB = dwI ;
|
|
|
|
dwI++ ;
|
|
|
|
|
|
// *MemoryConfigMB:
|
|
mMainKeywordTable[dwI].pstrKeyword = "MemoryConfigMB" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_POINT ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrMemoryConfigMB) ;
|
|
gdwMemoryConfigMB = dwI ;
|
|
|
|
dwI++ ;
|
|
|
|
|
|
// *OutputOrderReversed?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "OutputOrderReversed?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = 0 ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_OPTION_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(DFEATURE_OPTIONS,
|
|
atrOutputOrderReversed) ;
|
|
dwI++ ;
|
|
|
|
|
|
|
|
|
|
|
|
// ---- End of Section ---- //
|
|
mMainKeywordTable[dwI].pstrKeyword = NULL ;
|
|
dwI++ ;
|
|
|
|
|
|
return dwI ;
|
|
}
|
|
|
|
DWORD DWinitMainKeywordTable5(
|
|
DWORD dwI,
|
|
PGLOBL pglobl)
|
|
{
|
|
|
|
|
|
|
|
/* ---- COMMAND Construct keywords: ----- */
|
|
|
|
// *Cmd:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Cmd" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_COMMAND_INVOC ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_COMMAND ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_COMMAND_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(COMMAND, strInvocation ) ;
|
|
gdwCommandCmd = dwI ;
|
|
dwI++ ;
|
|
|
|
// *CallbackID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CallbackID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER;
|
|
mMainKeywordTable[dwI].flAgs = KWF_COMMAND ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_COMMAND_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(COMMAND, dwCmdCallbackID ) ;
|
|
dwI++ ;
|
|
|
|
// *Order:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Order" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_ORDERDEPENDENCY;
|
|
mMainKeywordTable[dwI].flAgs = KWF_COMMAND ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_COMMAND_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(COMMAND, ordOrder ) ;
|
|
dwI++ ;
|
|
|
|
// *Params:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Params" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_STANDARD_VARS ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST | KWF_COMMAND ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_COMMAND_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(COMMAND, dwStandardVarsList) ;
|
|
dwI++ ;
|
|
|
|
// *NoPageEject?:
|
|
mMainKeywordTable[dwI].pstrKeyword = "NoPageEject?" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_CONSTANT_BOOLEANTYPE ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_COMMAND ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_COMMAND_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(COMMAND, bNoPageEject) ;
|
|
dwI++ ;
|
|
|
|
|
|
// ---- End of Section ---- //
|
|
mMainKeywordTable[dwI].pstrKeyword = NULL ;
|
|
dwI++ ;
|
|
|
|
|
|
/* ---- FONTCART Construct keywords: ----- */
|
|
|
|
|
|
|
|
// *rcCartridgeNameID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcCartridgeNameID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_FONTCART ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FONTCART_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(FONTCART , dwRCCartNameID ) ;
|
|
dwI++ ;
|
|
|
|
// *CartridgeName:
|
|
mMainKeywordTable[dwI].pstrKeyword = "CartridgeName" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_CP_CONVERT;
|
|
mMainKeywordTable[dwI].flAgs = KWF_FONTCART ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FONTCART_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(FONTCART , strCartName ) ;
|
|
dwI++ ;
|
|
|
|
// *Fonts:
|
|
mMainKeywordTable[dwI].pstrKeyword = "Fonts" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST | KWF_FONTCART ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FONTCART_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(FONTCART , dwFontLst ) ;
|
|
dwI++ ;
|
|
|
|
// *PortraitFonts:
|
|
mMainKeywordTable[dwI].pstrKeyword = "PortraitFonts" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST | KWF_FONTCART ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FONTCART_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(FONTCART , dwPortFontLst ) ;
|
|
dwI++ ;
|
|
|
|
// *LandscapeFonts:
|
|
mMainKeywordTable[dwI].pstrKeyword = "LandscapeFonts" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX;
|
|
mMainKeywordTable[dwI].flAgs = KWF_LIST | KWF_FONTCART ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_FONTCART_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(FONTCART , dwLandFontLst ) ;
|
|
dwI++ ;
|
|
|
|
|
|
|
|
// ---- End of Section ---- //
|
|
mMainKeywordTable[dwI].pstrKeyword = NULL ;
|
|
dwI++ ;
|
|
|
|
|
|
|
|
/* ---- TTFONTSUBS Construct keywords: ----- */
|
|
// these keywords may be synthesized along with the construct
|
|
// *TTFontSub from the shortcut:
|
|
// *TTFS: "font name" : <fontID>
|
|
|
|
|
|
// *TTFontName:
|
|
mMainKeywordTable[dwI].pstrKeyword = "TTFontName" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_CP_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_TTFONTSUBS ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_TTFONTSUBS_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(TTFONTSUBTABLE, arTTFontName) ;
|
|
dwI++ ;
|
|
|
|
// *DevFontName:
|
|
mMainKeywordTable[dwI].pstrKeyword = "DevFontName" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_STRING_CP_CONVERT ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_TTFONTSUBS ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_TTFONTSUBS_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(TTFONTSUBTABLE, arDevFontName) ;
|
|
dwI++ ;
|
|
|
|
// *rcTTFontNameID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcTTFontNameID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_TTFONTSUBS ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_TTFONTSUBS_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(TTFONTSUBTABLE,
|
|
dwRcTTFontNameID) ;
|
|
dwI++ ;
|
|
|
|
// *rcDevFontNameID:
|
|
mMainKeywordTable[dwI].pstrKeyword = "rcDevFontNameID" ;
|
|
mMainKeywordTable[dwI].eAllowedValue = VALUE_QUALIFIED_NAME_EX ;
|
|
mMainKeywordTable[dwI].flAgs = KWF_TTFONTSUBS ;
|
|
mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_TTFONTSUBS_ONLY ;
|
|
mMainKeywordTable[dwI].dwOffset = offsetof(TTFONTSUBTABLE,
|
|
dwRcDevFontNameID) ;
|
|
dwI++ ;
|
|
|
|
// *DevFontID:
|
|
// mMainKeywordTable[dwI].pstrKeyword = "DevFontID" ;
|
|
// mMainKeywordTable[dwI].eAllowedValue = VALUE_INTEGER ;
|
|
// mMainKeywordTable[dwI].flAgs = KWF_TTFONTSUBS ;
|
|
// mMainKeywordTable[dwI].eType = TY_ATTRIBUTE ;
|
|
// mMainKeywordTable[dwI].dwSubType = ATT_LOCAL_TTFONTSUBS_ONLY ;
|
|
// mMainKeywordTable[dwI].dwOffset = offsetof(TTFONTSUBTABLE, dwDevFontID) ;
|
|
// dwI++ ;
|
|
|
|
|
|
|
|
// ---- End of Section ---- //
|
|
mMainKeywordTable[dwI].pstrKeyword = NULL ;
|
|
dwI++ ;
|
|
|
|
|
|
|
|
|
|
/* ---- OEM Construct keywords: ----- */
|
|
|
|
// ---- End of Section ---- //
|
|
mMainKeywordTable[dwI].pstrKeyword = NULL ;
|
|
dwI++ ;
|
|
|
|
|
|
/* ---- END_ATTR No more Construct keywords: ----- */
|
|
|
|
return dwI ;
|
|
}
|
|
|
|
|
|
VOID VinitValueToSize(
|
|
PGLOBL pglobl)
|
|
{
|
|
DWORD dwI ;
|
|
|
|
// initialize to DWORD size as defaults.
|
|
|
|
for(dwI = 0 ; dwI < VALUE_MAX ; dwI++)
|
|
gValueToSize[dwI] = sizeof(DWORD) ;
|
|
|
|
gValueToSize[NO_VALUE] = 0 ;
|
|
gValueToSize[VALUE_LARGEST] = 0 ;
|
|
gValueToSize[VALUE_STRING_NO_CONVERT] = sizeof(ARRAYREF) ;
|
|
gValueToSize[VALUE_STRING_DEF_CONVERT] = sizeof(ARRAYREF) ;
|
|
gValueToSize[VALUE_STRING_CP_CONVERT] = sizeof(ARRAYREF) ;
|
|
gValueToSize[VALUE_COMMAND_INVOC] = sizeof(ARRAYREF) ;
|
|
gValueToSize[VALUE_PARAMETER] = sizeof(ARRAYREF) ;
|
|
|
|
// SYMBOLS and CONSTANTS are all DWORD sized.
|
|
gValueToSize[VALUE_POINT] = sizeof(POINT) ; // etc
|
|
gValueToSize[VALUE_RECT] = sizeof(RECT) ; // etc
|
|
gValueToSize[VALUE_QUALIFIED_NAME] = sizeof(DWORD) ; // currently
|
|
|
|
// VALUE_CONSTRAINT, VALUE_INVALID_INSTALL_COMBO
|
|
// are currently all accessed via DWORD indicies to nodes.
|
|
|
|
gValueToSize[VALUE_ORDERDEPENDENCY] = sizeof(ORDERDEPENDENCY) ;
|
|
gValueToSize[VALUE_FONTSUB] = sizeof(TTFONTSUBTABLE) ;
|
|
// not really used since its a special keyword.
|
|
|
|
gValueToSize[VALUE_LIST] = sizeof(DWORD) ; // etc
|
|
// only the index of first listnode is stored.
|
|
|
|
|
|
for(dwI = 0 ; dwI < VALUE_MAX ; dwI++)
|
|
{
|
|
if(gValueToSize[dwI] > gValueToSize[VALUE_LARGEST])
|
|
gValueToSize[VALUE_LARGEST] = gValueToSize[dwI] ;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
VOID VinitGlobals(
|
|
DWORD dwVerbosity,
|
|
PGLOBL pglobl)
|
|
{
|
|
DWORD dwIndex;
|
|
CONST PBYTE pubStar = "*"; // Used for initializing gaarPPPrefix
|
|
|
|
if(MAX_GID > 32)
|
|
RIP(("MAX_GID > 32 violates some GPD parser assumptions.\n"));
|
|
|
|
memset(pglobl, 0, sizeof(GLOBL));
|
|
|
|
|
|
// initialize all globals to default state.
|
|
|
|
geErrorType = ERRTY_NONE ; // start with a clean slate
|
|
geErrorSev = ERRSEV_NONE ;
|
|
|
|
|
|
// check. Adding initializations that were previously done when variables were global
|
|
gdwResDLL_ID = 0 ; // no Feature yet defined to hold Resource DLLs.
|
|
gdwVerbosity = dwVerbosity ;
|
|
// 0 = min verbosity, 4 max verbosity.
|
|
|
|
// set preprocessor prefix to '*'
|
|
gaarPPPrefix.pub = pubStar;
|
|
gaarPPPrefix.dw = 1;
|
|
|
|
VinitValueToSize(pglobl) ; // size of value links.
|
|
|
|
VinitAllowedTransitions(pglobl) ; // AllowedTransitions and Attributes
|
|
(VOID) BinitClassIndexTable(pglobl) ; // gcieTable[] constant classes.
|
|
VinitOperPrecedence(pglobl) ; // arithmetic operators used in command
|
|
// parameters.
|
|
|
|
// no memory buffers allocated.
|
|
|
|
for(dwIndex = 0 ; dwIndex < MTI_MAX_ENTRIES ; dwIndex++)
|
|
{
|
|
gMasterTable[dwIndex].pubStruct = NULL ;
|
|
}
|
|
|
|
gMasterTable[MTI_STRINGHEAP].dwArraySize = 0x010000 ;
|
|
gMasterTable[MTI_STRINGHEAP].dwMaxArraySize = 0x200000 ;
|
|
gMasterTable[MTI_STRINGHEAP].dwElementSiz = sizeof(BYTE) ;
|
|
|
|
gMasterTable[MTI_GLOBALATTRIB].dwArraySize = 1 ;
|
|
gMasterTable[MTI_GLOBALATTRIB].dwMaxArraySize = 1 ;
|
|
gMasterTable[MTI_GLOBALATTRIB].dwElementSiz = sizeof(GLOBALATTRIB) ;
|
|
|
|
gMasterTable[MTI_COMMANDTABLE].dwArraySize = CMD_MAX ;
|
|
gMasterTable[MTI_COMMANDTABLE].dwMaxArraySize = CMD_MAX ;
|
|
gMasterTable[MTI_COMMANDTABLE].dwElementSiz = sizeof(ATREEREF) ;
|
|
|
|
gMasterTable[MTI_ATTRIBTREE].dwArraySize = 5000 ;
|
|
gMasterTable[MTI_ATTRIBTREE].dwMaxArraySize = 50,000 ;
|
|
gMasterTable[MTI_ATTRIBTREE].dwElementSiz = sizeof(ATTRIB_TREE) ;
|
|
|
|
gMasterTable[MTI_COMMANDARRAY].dwArraySize = 500 ;
|
|
gMasterTable[MTI_COMMANDARRAY].dwMaxArraySize = 5000 ;
|
|
gMasterTable[MTI_COMMANDARRAY].dwElementSiz = sizeof(COMMAND) ;
|
|
|
|
gMasterTable[MTI_PARAMETER].dwArraySize = 500 ;
|
|
gMasterTable[MTI_PARAMETER].dwMaxArraySize = 5000 ;
|
|
gMasterTable[MTI_PARAMETER].dwElementSiz = sizeof(PARAMETER) ;
|
|
|
|
gMasterTable[MTI_TOKENSTREAM].dwArraySize = 3000 ;
|
|
gMasterTable[MTI_TOKENSTREAM].dwMaxArraySize = 30000 ;
|
|
gMasterTable[MTI_TOKENSTREAM].dwElementSiz = sizeof(TOKENSTREAM) ;
|
|
|
|
gMasterTable[MTI_LISTNODES].dwArraySize = 3000 ;
|
|
gMasterTable[MTI_LISTNODES].dwMaxArraySize = 50000 ;
|
|
gMasterTable[MTI_LISTNODES].dwElementSiz = sizeof(LISTNODE) ;
|
|
|
|
gMasterTable[MTI_CONSTRAINTS].dwArraySize = 300 ;
|
|
gMasterTable[MTI_CONSTRAINTS].dwMaxArraySize = 5000 ;
|
|
gMasterTable[MTI_CONSTRAINTS].dwElementSiz = sizeof(CONSTRAINTS) ;
|
|
|
|
gMasterTable[MTI_INVALIDCOMBO].dwArraySize = 40 ;
|
|
gMasterTable[MTI_INVALIDCOMBO].dwMaxArraySize = 500 ;
|
|
gMasterTable[MTI_INVALIDCOMBO].dwElementSiz = sizeof(INVALIDCOMBO ) ;
|
|
|
|
gMasterTable[MTI_GPDFILEDATEINFO].dwArraySize = 10 ;
|
|
gMasterTable[MTI_GPDFILEDATEINFO].dwMaxArraySize = 100 ;
|
|
gMasterTable[MTI_GPDFILEDATEINFO].dwElementSiz = sizeof(GPDFILEDATEINFO ) ;
|
|
|
|
|
|
/* set dwArraySize = 0 for objects that are allocated on 2nd pass */
|
|
|
|
gMasterTable[MTI_DFEATURE_OPTIONS].dwArraySize = 0 ;
|
|
gMasterTable[MTI_DFEATURE_OPTIONS].dwMaxArraySize = 300 ;
|
|
gMasterTable[MTI_DFEATURE_OPTIONS].dwElementSiz =
|
|
sizeof(DFEATURE_OPTIONS) ;
|
|
|
|
gMasterTable[MTI_SYNTHESIZED_FEATURES].dwArraySize = 0 ;
|
|
gMasterTable[MTI_SYNTHESIZED_FEATURES].dwMaxArraySize = 100 ;
|
|
gMasterTable[MTI_SYNTHESIZED_FEATURES].dwElementSiz =
|
|
sizeof(DFEATURE_OPTIONS) ;
|
|
|
|
|
|
gMasterTable[MTI_PRIORITYARRAY].dwArraySize = 0 ;
|
|
gMasterTable[MTI_PRIORITYARRAY].dwMaxArraySize =
|
|
gMasterTable[MTI_DFEATURE_OPTIONS].dwMaxArraySize +
|
|
gMasterTable[MTI_SYNTHESIZED_FEATURES].dwMaxArraySize ;
|
|
gMasterTable[MTI_PRIORITYARRAY].dwElementSiz =
|
|
sizeof(DWORD) ;
|
|
|
|
gMasterTable[MTI_TTFONTSUBTABLE].dwArraySize = 0 ;
|
|
gMasterTable[MTI_TTFONTSUBTABLE].dwMaxArraySize = 1000 ;
|
|
gMasterTable[MTI_TTFONTSUBTABLE].dwElementSiz = sizeof(TTFONTSUBTABLE) ;
|
|
|
|
gMasterTable[MTI_FONTCART].dwArraySize = 0 ;
|
|
gMasterTable[MTI_FONTCART].dwMaxArraySize = 500 ;
|
|
gMasterTable[MTI_FONTCART].dwElementSiz = sizeof(FONTCART) ;
|
|
|
|
gMasterTable[MTI_SYMBOLROOT].dwArraySize = SCL_NUMSYMCLASSES ;
|
|
gMasterTable[MTI_SYMBOLROOT].dwMaxArraySize = SCL_NUMSYMCLASSES ;
|
|
gMasterTable[MTI_SYMBOLROOT].dwElementSiz = sizeof(DWORD) ;
|
|
|
|
gMasterTable[MTI_SYMBOLTREE].dwArraySize = 1500 ;
|
|
gMasterTable[MTI_SYMBOLTREE].dwMaxArraySize = 16000 ;
|
|
gMasterTable[MTI_SYMBOLTREE].dwElementSiz = sizeof(SYMBOLNODE) ;
|
|
|
|
gMasterTable[MTI_TMPHEAP].dwArraySize = 0x010000 ;
|
|
gMasterTable[MTI_TMPHEAP].dwMaxArraySize = 0x200000 ;
|
|
gMasterTable[MTI_TMPHEAP].dwElementSiz = sizeof(BYTE) ;
|
|
|
|
gMasterTable[MTI_SOURCEBUFFER].dwArraySize = 10 ;
|
|
gMasterTable[MTI_SOURCEBUFFER].dwMaxArraySize = 100 ;
|
|
gMasterTable[MTI_SOURCEBUFFER].dwElementSiz = sizeof(SOURCEBUFFER) ;
|
|
|
|
// NEWTOKENMAP is created from unused entries in TOKENMAP.
|
|
|
|
gMasterTable[MTI_TOKENMAP].dwArraySize = 0x3000 ;
|
|
gMasterTable[MTI_TOKENMAP].dwMaxArraySize = 0x40000 ;
|
|
gMasterTable[MTI_TOKENMAP].dwElementSiz = sizeof(TKMAP) ;
|
|
|
|
gMasterTable[MTI_NEWTOKENMAP].dwArraySize = 0x3000 ;
|
|
gMasterTable[MTI_NEWTOKENMAP].dwMaxArraySize = 0x40000 ;
|
|
gMasterTable[MTI_NEWTOKENMAP].dwElementSiz = sizeof(TKMAP) ;
|
|
|
|
gMasterTable[MTI_BLOCKMACROARRAY].dwArraySize = 200 ;
|
|
gMasterTable[MTI_BLOCKMACROARRAY].dwMaxArraySize = 3000 ;
|
|
gMasterTable[MTI_BLOCKMACROARRAY].dwElementSiz = sizeof(BLOCKMACRODICTENTRY) ;
|
|
|
|
gMasterTable[MTI_VALUEMACROARRAY].dwArraySize = 800 ;
|
|
gMasterTable[MTI_VALUEMACROARRAY].dwMaxArraySize = 4000 ;
|
|
gMasterTable[MTI_VALUEMACROARRAY].dwElementSiz = sizeof(VALUEMACRODICTENTRY) ;
|
|
|
|
gMasterTable[MTI_MACROLEVELSTACK].dwArraySize = 20 ;
|
|
gMasterTable[MTI_MACROLEVELSTACK].dwMaxArraySize = 60 ;
|
|
gMasterTable[MTI_MACROLEVELSTACK].dwElementSiz = sizeof(MACROLEVELSTATE) ;
|
|
|
|
gMasterTable[MTI_STSENTRY].dwArraySize = 20 ;
|
|
gMasterTable[MTI_STSENTRY].dwMaxArraySize = 60 ;
|
|
gMasterTable[MTI_STSENTRY].dwElementSiz = sizeof(STSENTRY) ;
|
|
|
|
gMasterTable[MTI_OP_QUEUE].dwArraySize = 40 ;
|
|
gMasterTable[MTI_OP_QUEUE].dwMaxArraySize = 150 ;
|
|
gMasterTable[MTI_OP_QUEUE].dwElementSiz = sizeof(DWORD) ;
|
|
|
|
gMasterTable[MTI_MAINKEYWORDTABLE].dwArraySize = 400 ;
|
|
gMasterTable[MTI_MAINKEYWORDTABLE].dwMaxArraySize = 3000 ;
|
|
gMasterTable[MTI_MAINKEYWORDTABLE].dwElementSiz =
|
|
sizeof(KEYWORDTABLE_ENTRY) ;
|
|
|
|
gMasterTable[MTI_RNGDICTIONARY].dwArraySize = END_ATTR ;
|
|
gMasterTable[MTI_RNGDICTIONARY].dwMaxArraySize = END_ATTR ;
|
|
gMasterTable[MTI_RNGDICTIONARY].dwElementSiz = sizeof(RANGE) ;
|
|
|
|
gMasterTable[MTI_FILENAMES].dwArraySize = 40 ;
|
|
gMasterTable[MTI_FILENAMES].dwMaxArraySize = 100 ;
|
|
gMasterTable[MTI_FILENAMES].dwElementSiz = sizeof(PWSTR) ;
|
|
|
|
gMasterTable[MTI_PREPROCSTATE].dwArraySize = 20 ;
|
|
gMasterTable[MTI_PREPROCSTATE].dwMaxArraySize = 100 ;
|
|
gMasterTable[MTI_PREPROCSTATE].dwElementSiz = sizeof(PPSTATESTACK) ;
|
|
|
|
}
|
|
|
|
|
|
BOOL BpreAllocateObjects(
|
|
PGLOBL pglobl)
|
|
{
|
|
DWORD dwIndex, dwBytes ;
|
|
|
|
/* set dwArraySize = 0 for objects that are allocated on 2nd pass */
|
|
|
|
gMasterTable[MTI_DFEATURE_OPTIONS].dwArraySize = 0 ;
|
|
gMasterTable[MTI_SYNTHESIZED_FEATURES].dwArraySize = 0 ;
|
|
gMasterTable[MTI_PRIORITYARRAY].dwArraySize = 0 ;
|
|
// allocation occurs at PostProcessing time.
|
|
gMasterTable[MTI_TTFONTSUBTABLE].dwArraySize = 0 ;
|
|
gMasterTable[MTI_FONTCART].dwArraySize = 0 ;
|
|
|
|
|
|
for(dwIndex = 0 ; dwIndex < MTI_MAX_ENTRIES ; dwIndex++)
|
|
{
|
|
gMasterTable[dwIndex].dwCurIndex = 0 ;
|
|
// do initialization first: bug 308404
|
|
}
|
|
|
|
for(dwIndex = 0 ; dwIndex < MTI_MAX_ENTRIES ; dwIndex++)
|
|
{
|
|
if(gMasterTable[dwIndex].dwArraySize)
|
|
{
|
|
dwBytes = gMasterTable[dwIndex].dwArraySize *
|
|
gMasterTable[dwIndex].dwElementSiz ;
|
|
if(!(gMasterTable[dwIndex].pubStruct = MemAllocZ(dwBytes) ))
|
|
{
|
|
ERR(("Fatal: unable to alloc requested memory: %d bytes.\n",
|
|
dwBytes));
|
|
geErrorType = ERRTY_MEMORY_ALLOCATION ;
|
|
geErrorSev = ERRSEV_FATAL ;
|
|
gdwMasterTabIndex = dwIndex ;
|
|
return(FALSE) ; // This is unrecoverable
|
|
}
|
|
}
|
|
}
|
|
// do not use heap offset zero because OFFSET_TO_POINTER()
|
|
// macro will consider this an invalid value!
|
|
gMasterTable[MTI_STRINGHEAP].dwCurIndex = 1 ;
|
|
|
|
return(TRUE) ;
|
|
}
|
|
|
|
BOOL BreturnBuffers(
|
|
PGLOBL pglobl)
|
|
/* FALSE return indicates a go-round
|
|
is needed. Otherwise you are
|
|
free to exit caller's loop.
|
|
*/
|
|
{
|
|
DWORD dwIndex ;
|
|
|
|
|
|
// better close all the memory mapped files.
|
|
|
|
while(mCurFile)
|
|
{
|
|
mCurFile-- ; // pop stack
|
|
MemFree(mpSourcebuffer[mCurFile].pubSrcBuf) ;
|
|
}
|
|
|
|
vFreeFileNames(pglobl) ;
|
|
|
|
|
|
for(dwIndex = 0 ; dwIndex < MTI_MAX_ENTRIES ; dwIndex++)
|
|
{
|
|
if(gMasterTable[dwIndex].pubStruct)
|
|
{
|
|
MemFree(gMasterTable[dwIndex].pubStruct) ;
|
|
gMasterTable[dwIndex].pubStruct = NULL ;
|
|
}
|
|
}
|
|
// resize one array if needed.
|
|
if((geErrorType == ERRTY_MEMORY_ALLOCATION) &&
|
|
(geErrorSev == ERRSEV_RESTART))
|
|
{
|
|
if( gMasterTable[gdwMasterTabIndex].dwArraySize <
|
|
gMasterTable[gdwMasterTabIndex].dwMaxArraySize )
|
|
{
|
|
DWORD dwInc ;
|
|
|
|
dwInc = gMasterTable[gdwMasterTabIndex].dwArraySize / 2 ;
|
|
|
|
gMasterTable[gdwMasterTabIndex].dwArraySize +=
|
|
(dwInc) ? (dwInc) : 1 ;
|
|
geErrorSev = ERRSEV_NONE ; // hopefully this fixes
|
|
// the problem.
|
|
return(FALSE) ; // go round needed.
|
|
}
|
|
else
|
|
{
|
|
geErrorSev = ERRSEV_FATAL ;
|
|
ERR(("Internal error: memory usage exceeded hardcoded limits.\n"));
|
|
ERR((" %d bytes requested, %d bytes allowed.\n",
|
|
gMasterTable[gdwMasterTabIndex].dwArraySize,
|
|
gMasterTable[gdwMasterTabIndex].dwMaxArraySize));
|
|
}
|
|
}
|
|
return(TRUE); // due to success or utter failure, don't
|
|
// try anymore.
|
|
}
|
|
|
|
|
|
BOOL BallocateCountableObjects(
|
|
PGLOBL pglobl)
|
|
/*
|
|
The first pass of BinterpretTokens() has registered all
|
|
the unique symbols for the various constructs.
|
|
By querying the SymbolID value stored at the root of
|
|
each symbol tree, we know how many structures of each
|
|
type to allocate.
|
|
*/
|
|
{
|
|
DWORD dwIndex, dwBytes ;
|
|
PDWORD pdwSymbolClass ;
|
|
PSYMBOLNODE psn ;
|
|
|
|
pdwSymbolClass = (PDWORD)gMasterTable[MTI_SYMBOLROOT].pubStruct ;
|
|
|
|
psn = (PSYMBOLNODE) gMasterTable[MTI_SYMBOLTREE].pubStruct ;
|
|
|
|
if(pdwSymbolClass[SCL_FEATURES] != INVALID_INDEX)
|
|
{
|
|
gMasterTable[MTI_DFEATURE_OPTIONS].dwArraySize =
|
|
psn[pdwSymbolClass[SCL_FEATURES]].dwSymbolID + 1 ;
|
|
}
|
|
// else no symbols registered - leave dwArraySize = 0 ;
|
|
if(pdwSymbolClass[SCL_TTFONTNAMES] != INVALID_INDEX)
|
|
{
|
|
gMasterTable[MTI_TTFONTSUBTABLE].dwArraySize =
|
|
psn[pdwSymbolClass[SCL_TTFONTNAMES]].dwSymbolID + 1;
|
|
}
|
|
if(pdwSymbolClass[SCL_FONTCART] != INVALID_INDEX)
|
|
{
|
|
gMasterTable[MTI_FONTCART].dwArraySize =
|
|
psn[pdwSymbolClass[SCL_FONTCART]].dwSymbolID + 1;
|
|
}
|
|
|
|
|
|
|
|
for(dwIndex = 0 ; dwIndex < MTI_MAX_ENTRIES ; dwIndex++)
|
|
{
|
|
if(gMasterTable[dwIndex].dwArraySize &&
|
|
!gMasterTable[dwIndex].pubStruct)
|
|
{
|
|
dwBytes = gMasterTable[dwIndex].dwArraySize *
|
|
gMasterTable[dwIndex].dwElementSiz ;
|
|
if(!(gMasterTable[dwIndex].pubStruct = MemAllocZ(dwBytes) ))
|
|
{
|
|
ERR(("Fatal: unable to alloc requested memory: %d bytes.\n",
|
|
dwBytes));
|
|
geErrorType = ERRTY_MEMORY_ALLOCATION ;
|
|
geErrorSev = ERRSEV_FATAL ;
|
|
gdwMasterTabIndex = dwIndex ;
|
|
return(FALSE) ; // This is unrecoverable
|
|
}
|
|
else
|
|
{
|
|
gMasterTable[dwIndex].dwCurIndex = 0 ;
|
|
}
|
|
}
|
|
}
|
|
|
|
return(TRUE) ; // success !
|
|
}
|
|
|
|
BOOL BinitPreAllocatedObjects(
|
|
PGLOBL pglobl)
|
|
{
|
|
DWORD dwI, dwJ ;
|
|
|
|
VinitMainKeywordTable(pglobl) ; // contents of mMainKeywordTable[] itself
|
|
VinitDictionaryIndex(pglobl) ; // inits MTI_RNGDICTIONARY
|
|
|
|
/* init roots of symbol trees */
|
|
|
|
for(dwI = 0 ; dwI < gMasterTable[MTI_SYMBOLROOT].dwArraySize ; dwI++)
|
|
{
|
|
((PDWORD)gMasterTable[MTI_SYMBOLROOT].pubStruct)[dwI] =
|
|
INVALID_INDEX ;
|
|
}
|
|
|
|
// init preprocessor state stack
|
|
|
|
mdwNestingLevel = 0 ;
|
|
mppStack[mdwNestingLevel].permState = PERM_ALLOW ;
|
|
mppStack[mdwNestingLevel].ifState = IFS_ROOT;
|
|
|
|
|
|
for(dwI = 0 ; dwI < gMasterTable[MTI_TOKENMAP].dwArraySize ; dwI++)
|
|
{
|
|
((PTKMAP)gMasterTable[MTI_TOKENMAP].pubStruct)[dwI].dwFlags =
|
|
0 ; // must start with this field cleared.
|
|
}
|
|
|
|
|
|
for(dwI = 0 ; dwI < gMasterTable[MTI_GLOBALATTRIB].dwArraySize
|
|
; dwI++)
|
|
{
|
|
for(dwJ = 0 ; dwJ < gMasterTable[MTI_GLOBALATTRIB].dwElementSiz /
|
|
sizeof(ATREEREF) ; dwJ++)
|
|
{
|
|
((PATREEREF)( (PGLOBALATTRIB)gMasterTable[MTI_GLOBALATTRIB].
|
|
pubStruct + dwI))[dwJ] =
|
|
ATTRIB_UNINITIALIZED ; // the GLOBALATTRIB struct is
|
|
// comprised entirely of ATREEREFs.
|
|
}
|
|
}
|
|
|
|
for(dwI = 0 ; dwI < gMasterTable[MTI_COMMANDARRAY].dwArraySize ; dwI++)
|
|
{
|
|
((PCOMMAND)gMasterTable[MTI_COMMANDARRAY].pubStruct)[dwI].
|
|
dwCmdCallbackID = NO_CALLBACK_ID ;
|
|
((PCOMMAND)gMasterTable[MTI_COMMANDARRAY].pubStruct)[dwI].
|
|
ordOrder.eSection = SS_UNINITIALIZED ;
|
|
((PCOMMAND)gMasterTable[MTI_COMMANDARRAY].pubStruct)[dwI].
|
|
dwStandardVarsList = END_OF_LIST ;
|
|
((PCOMMAND)gMasterTable[MTI_COMMANDARRAY].pubStruct)[dwI].
|
|
bNoPageEject = FALSE ;
|
|
}
|
|
return(TRUE);
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL BinitCountableObjects(
|
|
PGLOBL pglobl)
|
|
{
|
|
DWORD dwI, dwJ ;
|
|
PFONTCART pfc ;
|
|
|
|
for(dwI = 0 ; dwI < gMasterTable[MTI_DFEATURE_OPTIONS].dwArraySize
|
|
; dwI++)
|
|
{
|
|
for(dwJ = 0 ; dwJ < gMasterTable[MTI_DFEATURE_OPTIONS].dwElementSiz /
|
|
sizeof(ATREEREF) ; dwJ++)
|
|
{
|
|
((PATREEREF)( (PDFEATURE_OPTIONS)gMasterTable[MTI_DFEATURE_OPTIONS].
|
|
pubStruct + dwI))[dwJ] =
|
|
ATTRIB_UNINITIALIZED ; // the DFEATURE_OPTIONS struct is
|
|
// comprised entirely of ATREEREFs.
|
|
}
|
|
}
|
|
for(dwI = 0 ; dwI < gMasterTable[MTI_COMMANDTABLE].dwArraySize ; dwI++)
|
|
{
|
|
((PATREEREF)gMasterTable[MTI_COMMANDTABLE].pubStruct)[dwI] =
|
|
ATTRIB_UNINITIALIZED ; // the command table is
|
|
// comprised entirely of ATREEREFs.
|
|
}
|
|
|
|
pfc = (PFONTCART)gMasterTable[MTI_FONTCART].pubStruct ;
|
|
|
|
for(dwI = 0 ; dwI < gMasterTable[MTI_FONTCART].dwArraySize ; dwI++)
|
|
{
|
|
pfc[dwI].dwFontLst = pfc[dwI].dwPortFontLst = pfc[dwI].dwLandFontLst =
|
|
END_OF_LIST ;
|
|
}
|
|
return(TRUE);
|
|
}
|
|
|
|
#if 0
|
|
|
|
BOOL BevaluateMacros(
|
|
PGLOBL pglobl)
|
|
// and expand shortcuts
|
|
{
|
|
// placeholder code - use original tokenMap
|
|
// BUG_BUG!!!!! just swap the two entries for now.
|
|
|
|
DWORD dwTmp ;
|
|
PBYTE pubTmp ;
|
|
|
|
dwTmp = gMasterTable[MTI_NEWTOKENMAP].dwArraySize ;
|
|
gMasterTable[MTI_NEWTOKENMAP].dwArraySize =
|
|
gMasterTable[MTI_TOKENMAP].dwArraySize ;
|
|
gMasterTable[MTI_TOKENMAP].dwArraySize = dwTmp ;
|
|
|
|
dwTmp = gMasterTable[MTI_NEWTOKENMAP].dwMaxArraySize ;
|
|
gMasterTable[MTI_NEWTOKENMAP].dwMaxArraySize =
|
|
gMasterTable[MTI_TOKENMAP].dwMaxArraySize ;
|
|
gMasterTable[MTI_TOKENMAP].dwMaxArraySize = dwTmp ;
|
|
|
|
pubTmp = gMasterTable[MTI_NEWTOKENMAP].pubStruct ;
|
|
gMasterTable[MTI_NEWTOKENMAP].pubStruct =
|
|
gMasterTable[MTI_TOKENMAP].pubStruct ;
|
|
gMasterTable[MTI_TOKENMAP].pubStruct = pubTmp ;
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
#endif
|
|
|
|
BOOL BpostProcess(
|
|
PWSTR pwstrFileName, // root GPD file
|
|
PGLOBL pglobl)
|
|
{
|
|
BOOL bStatus ;
|
|
DWORD dwIndex, dwBytes, dwCount ;
|
|
PDWORD pdwPriority ;
|
|
|
|
/*
|
|
|
|
check to see that all manditory fields
|
|
have been initialized, warn otherwise.
|
|
Have no way to reject entries once allocated.
|
|
verify that all features referenced in switch
|
|
statements are pickone.
|
|
FeatureOption[ptkmap->dwValue].bReferenced = TRUE ;
|
|
check that these features marked true are
|
|
always of type PICK_ONE.
|
|
|
|
|
|
reflect all constraints in list: if A constrains B, then B constrains A.
|
|
|
|
|
|
Of course feature only qualified names are not permitted.
|
|
so check for this here since we were cheap and used
|
|
the same parsing routine as for InvalidInstallableCombinations.
|
|
|
|
perform checks like all lists being converted must be of
|
|
type installable. Lists may be rooted at the feature
|
|
or option level. the Feature/Options named in the
|
|
InvalidInstallableCombinations lists must also be *Installable.
|
|
|
|
*/
|
|
|
|
|
|
BappendCommonFontsToPortAndLandscape(pglobl) ;
|
|
BinitSpecialFeatureOptionFields(pglobl) ;
|
|
|
|
gMasterTable[MTI_SYNTHESIZED_FEATURES].dwArraySize =
|
|
DwCountSynthFeatures(NULL, pglobl) ;
|
|
|
|
gMasterTable[MTI_PRIORITYARRAY].dwArraySize =
|
|
gMasterTable[MTI_DFEATURE_OPTIONS].dwArraySize +
|
|
gMasterTable[MTI_SYNTHESIZED_FEATURES].dwArraySize ;
|
|
|
|
for(dwIndex = 0 ; dwIndex < MTI_MAX_ENTRIES ; dwIndex++)
|
|
{
|
|
if(gMasterTable[dwIndex].dwArraySize &&
|
|
!gMasterTable[dwIndex].pubStruct)
|
|
{
|
|
dwBytes = gMasterTable[dwIndex].dwArraySize *
|
|
gMasterTable[dwIndex].dwElementSiz ;
|
|
if(!(gMasterTable[dwIndex].pubStruct = MemAllocZ(dwBytes) ))
|
|
{
|
|
ERR(("Fatal: unable to alloc requested memory: %d bytes.\n",
|
|
dwBytes));
|
|
geErrorType = ERRTY_MEMORY_ALLOCATION ;
|
|
geErrorSev = ERRSEV_FATAL ;
|
|
gdwMasterTabIndex = dwIndex ;
|
|
return(FALSE) ; // This is unrecoverable
|
|
}
|
|
else
|
|
{
|
|
gMasterTable[dwIndex].dwCurIndex = 0 ;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if ( !BsetUQMFlag(pglobl))
|
|
return FALSE; //There are 2 ways that this function will return false.
|
|
// 1) When space from the heap cannot be allocated.
|
|
// Soln: restart.
|
|
// 2) An unexpected Condition is encountered.
|
|
// Soln: Fatal. Stop Parsing.
|
|
|
|
|
|
VCountPrinterDocStickyFeatures(pglobl) ;
|
|
(VOID)BConvertSpecVersionToDWORD(pwstrFileName, pglobl) ;
|
|
BinitMiniRawBinaryData(pglobl) ;
|
|
|
|
DwCountSynthFeatures(BCreateSynthFeatures, pglobl) ;
|
|
|
|
|
|
BInitPriorityArray(pglobl) ;
|
|
|
|
|
|
// save selected buffers to file
|
|
|
|
bStatus = BconsolidateBuffers(pwstrFileName, pglobl);
|
|
return(bStatus) ;
|
|
}
|
|
|
|
|
|
|
|
BOOL BconsolidateBuffers(
|
|
PWSTR pwstrFileName, // root GPD file
|
|
PGLOBL pglobl)
|
|
{
|
|
DWORD dwCurOffset , dwI;
|
|
ENHARRAYREF earTableContents[MTI_NUM_SAVED_OBJECTS] ;
|
|
PBYTE pubDest ; // points to new destination buffer
|
|
PWSTR pwstrBinaryFileName ;
|
|
HANDLE hFile;
|
|
DWORD dwBytesWritten,
|
|
dwAlign = 4; // padding for DWORD alignment of all sub buffers.
|
|
BOOL bResult = FALSE;
|
|
OPTSELECT optsel[MAX_COMBINED_OPTIONS] ; // assume is large enough
|
|
WIN32_FILE_ATTRIBUTE_DATA File_Attributes ;
|
|
|
|
// first update dwCurIndex for fixed allocation buffers
|
|
// since dwCurIndex does not indicate elements used in this
|
|
// case.
|
|
|
|
dwI = MTI_GLOBALATTRIB ;
|
|
gMasterTable[dwI].dwCurIndex = gMasterTable[dwI].dwArraySize ;
|
|
dwI = MTI_DFEATURE_OPTIONS ;
|
|
gMasterTable[dwI].dwCurIndex = gMasterTable[dwI].dwArraySize ;
|
|
dwI = MTI_SYNTHESIZED_FEATURES ;
|
|
gMasterTable[dwI].dwCurIndex = gMasterTable[dwI].dwArraySize ;
|
|
dwI = MTI_PRIORITYARRAY ;
|
|
gMasterTable[dwI].dwCurIndex = gMasterTable[dwI].dwArraySize ;
|
|
dwI = MTI_TTFONTSUBTABLE ;
|
|
gMasterTable[dwI].dwCurIndex = gMasterTable[dwI].dwArraySize ;
|
|
dwI = MTI_COMMANDTABLE ;
|
|
gMasterTable[dwI].dwCurIndex = gMasterTable[dwI].dwArraySize ;
|
|
dwI = MTI_FONTCART ;
|
|
gMasterTable[dwI].dwCurIndex = gMasterTable[dwI].dwArraySize ;
|
|
dwI = MTI_SYMBOLROOT ;
|
|
gMasterTable[dwI].dwCurIndex = gMasterTable[dwI].dwArraySize ;
|
|
|
|
|
|
// at offset zero is the MINIRAWBINARYDATA header.
|
|
// Immediately after this is the array of ENHARRAYREFS
|
|
// supplying offsets to all other objects
|
|
// comprising the GPD binary.
|
|
|
|
// use the MTI_ defines to automate the copying of selected
|
|
// buffers. Just make sure the subset that is being copied
|
|
// occupies the lower MTI_ indicies and is terminated by
|
|
// MTI_NUM_SAVED_OBJECTS. The enumeration value will
|
|
// determine the order in which the various MTI_ buffers
|
|
// appear in the new buffer.
|
|
|
|
dwCurOffset = sizeof(MINIRAWBINARYDATA) ;
|
|
dwCurOffset += sizeof(ENHARRAYREF) * MTI_NUM_SAVED_OBJECTS ;
|
|
dwCurOffset = (dwCurOffset + dwAlign - 1) / dwAlign ;
|
|
dwCurOffset *= dwAlign ;
|
|
|
|
for(dwI = 0 ; dwI < MTI_NUM_SAVED_OBJECTS ; dwI++)
|
|
{
|
|
earTableContents[dwI].loOffset = dwCurOffset ;
|
|
earTableContents[dwI].dwCount =
|
|
gMasterTable[dwI].dwCurIndex ;
|
|
earTableContents[dwI].dwElementSiz =
|
|
gMasterTable[dwI].dwElementSiz ;
|
|
dwCurOffset += gMasterTable[dwI].dwElementSiz *
|
|
gMasterTable[dwI].dwCurIndex ;
|
|
dwCurOffset = (dwCurOffset + dwAlign - 1) / dwAlign ;
|
|
dwCurOffset *= dwAlign ;
|
|
}
|
|
pubDest = MemAlloc(dwCurOffset) ; // new destination buffer.
|
|
if(!pubDest)
|
|
{
|
|
ERR(("Fatal: unable to alloc requested memory: %d bytes.\n",
|
|
dwCurOffset));
|
|
geErrorType = ERRTY_MEMORY_ALLOCATION ;
|
|
geErrorSev = ERRSEV_FATAL ;
|
|
return(FALSE) ; // This is unrecoverable
|
|
}
|
|
|
|
// Last minute initializations:
|
|
|
|
gmrbd.rbd.dwFileSize = dwCurOffset ;
|
|
|
|
// gmrbd.pvPrivateData is not required by the .bud. It is only initialized
|
|
// at snapshot time. Therefore putting it to NULL.
|
|
// gmrbd.FileDateInfo is not used by the parser at all.
|
|
|
|
gmrbd.rbd.pvPrivateData = (PVOID) NULL;
|
|
gmrbd.rbd.FileDateInfo.dwCount = 0x00000000;
|
|
gmrbd.rbd.FileDateInfo.loOffset = (PTRREF)0x00000000;
|
|
|
|
// copy table of contents to start of dest buffer.
|
|
|
|
memcpy(pubDest, &gmrbd , sizeof(MINIRAWBINARYDATA) ) ;
|
|
memcpy(pubDest + sizeof(MINIRAWBINARYDATA), earTableContents ,
|
|
sizeof(ENHARRAYREF) * MTI_NUM_SAVED_OBJECTS ) ;
|
|
|
|
for(dwI = 0 ; dwI < MTI_NUM_SAVED_OBJECTS ; dwI++)
|
|
{
|
|
memcpy(
|
|
pubDest + earTableContents[dwI].loOffset, // dest
|
|
gMasterTable[dwI].pubStruct, // src
|
|
earTableContents[dwI].dwCount * // count
|
|
earTableContents[dwI].dwElementSiz ) ;
|
|
}
|
|
|
|
|
|
// priority array is modified at snapshot time
|
|
// if(!BinitDefaultOptionArray(optsel, pubDest))
|
|
// can't call this function from parser DLL.
|
|
|
|
// Generate a binary file name based the original filename
|
|
// Create a file and write data to it
|
|
|
|
|
|
|
|
if ((pwstrBinaryFileName = pwstrGenerateGPDfilename(pwstrFileName)) == NULL)
|
|
{
|
|
goto CLEANUP_BconsolidateBuffers ;
|
|
}
|
|
|
|
|
|
if(GetFileAttributesEx( (LPCTSTR) pwstrBinaryFileName, // assumes widestrings
|
|
GetFileExInfoStandard,
|
|
(LPVOID) &File_Attributes) )
|
|
{
|
|
// BUD exists - attempt to delete .
|
|
|
|
if(! DeleteFile((LPCTSTR) pwstrBinaryFileName))
|
|
{
|
|
WCHAR awchTmpName[MAX_PATH],
|
|
awchPath[MAX_PATH];
|
|
PWSTR pwstrLastBackSlash ;
|
|
// cannot delete, attempt to rename
|
|
|
|
wcsncpy(awchPath, pwstrBinaryFileName , MAX_PATH -1);
|
|
|
|
pwstrLastBackSlash = wcsrchr(awchPath,TEXT('\\')) ;
|
|
if (!pwstrLastBackSlash)
|
|
goto CLEANUP_BconsolidateBuffers ;
|
|
|
|
*(pwstrLastBackSlash + 1) = NUL;
|
|
|
|
if(!GetTempFileName(
|
|
(LPCTSTR) awchPath,
|
|
TEXT("BUD"), // pointer to filename prefix
|
|
0, // number used to create temporary filename
|
|
(LPTSTR) awchTmpName))
|
|
goto CLEANUP_BconsolidateBuffers ;
|
|
// failed to make tmp filename
|
|
|
|
if( !MoveFileEx(
|
|
(LPCTSTR) pwstrBinaryFileName,
|
|
(LPCTSTR) awchTmpName,
|
|
MOVEFILE_REPLACE_EXISTING))
|
|
goto CLEANUP_BconsolidateBuffers ;
|
|
|
|
// Now cause temp file to disappear on reboot.
|
|
|
|
MoveFileEx(
|
|
(LPCTSTR) awchTmpName,
|
|
NULL,
|
|
MOVEFILE_DELAY_UNTIL_REBOOT) ;
|
|
// not a big problem if temp file cannot be deleted.
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
if((hFile = CreateFile(pwstrBinaryFileName,
|
|
GENERIC_WRITE,
|
|
0,
|
|
NULL,
|
|
CREATE_ALWAYS,
|
|
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN | SECURITY_SQOS_PRESENT | SECURITY_ANONYMOUS,
|
|
NULL)) != INVALID_HANDLE_VALUE)
|
|
{
|
|
bResult = WriteFile(hFile,
|
|
pubDest,
|
|
dwCurOffset,
|
|
&dwBytesWritten,
|
|
NULL) &&
|
|
(dwCurOffset == dwBytesWritten);
|
|
|
|
CloseHandle(hFile);
|
|
}
|
|
|
|
CLEANUP_BconsolidateBuffers:
|
|
|
|
if (! bResult)
|
|
{
|
|
// Fail fatally if file cannot be opened for writing. If somebody else
|
|
// has opened the file, we do not wait for that guy to close the file.
|
|
// We simply fail.
|
|
geErrorSev = ERRSEV_FATAL;
|
|
geErrorType = ERRTY_FILE_OPEN;
|
|
ERR(("Unable to save binary GPD data to file.\n"));
|
|
}
|
|
|
|
|
|
if(pwstrBinaryFileName)
|
|
MemFree(pwstrBinaryFileName);
|
|
if(pubDest)
|
|
MemFree(pubDest);
|
|
return bResult;
|
|
}
|
|
|
|
|
|
BOOL BexpandMemConfigShortcut(DWORD dwSubType)
|
|
{
|
|
BOOL bStatus = FALSE;
|
|
return(bStatus) ;
|
|
}
|
|
// create strings in tmpHeap.
|
|
// checks to make sure there are
|
|
// enough slots in the tokenmap before proceeding.
|
|
|
|
BOOL BexpandCommandShortcut(DWORD dwSubType)
|
|
{
|
|
BOOL bStatus = FALSE;
|
|
return(bStatus) ;
|
|
}
|
|
// add sensor to detect colons within a value as
|
|
// this indicates something extra was tacked on.
|
|
// if(ptkmap[*pdwTKMindex].dwFlags & TKMF_COLON)
|
|
|
|
|
|
|
|
/*
|
|
|
|
BOOL BinitRemainingFields()
|
|
{
|
|
This function initializes synthesized fields
|
|
like these in the FeatureOption array.
|
|
|
|
ATREEREF atrOptIDvalue; // ID value
|
|
|
|
ATREEREF atrFeaFlags ; // invalid or not
|
|
ATREEREF atrPriority ;
|
|
|
|
|
|
|
|
// warning: any non-attribtreeref added to
|
|
// the DFEATURE_OPTIONS structure will get stomped on in strange
|
|
// and wonderful ways by BinitPreAllocatedObjects.
|
|
|
|
// internal consistency checks.
|
|
BOOL bReferenced ; // default is FALSE.
|
|
DWORD dwGID , // GID tag
|
|
dwNumOptions ; // these are not read in from GPD file.
|
|
maybe also determine count of DocSticky and PrinterSticky
|
|
or maybe that is only stored in the RawBinaryData block.
|
|
}
|
|
|
|
*/
|
|
|
|
|