author | Gareth Stockwell <gareth.stockwell@accenture.com> |
Fri, 22 Oct 2010 11:38:29 +0100 | |
branch | bug235_bringup_0 |
changeset 206 | c170e304623f |
parent 0 | 5d03bc08d59c |
permissions | -rw-r--r-- |
/* * Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" * which accompanies this distribution, and is available * at the URL "http://www.eclipse.org/legal/epl-v10.html". * * Initial Contributors: * Nokia Corporation - initial contribution. * * Contributors: * * Description: * Header PDRRECRD.H * */ #ifndef __PDRRECRD_H__ #define __PDRRECRD_H__ #include "LEXICAL.H" #include "RECORD.H" #include "UID.H" /** Index of text styles used by printer description records. @publishedAll @released */ enum StyleIndex { /** Normal text. */ Normal, /** Bold text. */ Bold, /** Italic text. */ Italic, /** Bold italic text. */ BoldItalic }; class PdrResource /** This class encapsulates a printer resource. @publishedAll @released */ { public: IMPORT_C static PdrResource* New(); IMPORT_C void Delete(); void Externalize(ostream& out); public: /** Resource identifier. */ int32 iId; /** String containing the resource. */ String iString; }; class PdrResources : public Record /** This class holds printer resources. @publishedAll @released */ { public: IMPORT_C static PdrResources* New(); IMPORT_C void Delete(); void Externalize(ostream& out); IMPORT_C void AddResource(PdrResource* aResource); private: ~PdrResources(); private: ObjectList<PdrResource*> iPdrResourceList; }; class PdrTranslation /** This class holds a translation between printer descriptions. @publishedAll @released */ { public: IMPORT_C static PdrTranslation* New(); IMPORT_C void Delete(); void Externalize(ostream& out); public: /** Printer identifier to translate from. */ uint16 iFrom; /** Printer identifier to translate to. */ String iTo; // !! Think about Unicode version }; class PdrTranslates : public Record /** This class encapsulates a list of printer description translations. @publishedAll @released */ { public: IMPORT_C static PdrTranslates* New(); IMPORT_C void Delete(); void Externalize(ostream& out); IMPORT_C void AddTranslation(PdrTranslation* aTranslation); private: ~PdrTranslates(); private: ObjectList<PdrTranslation*> iPdrTranslationList; }; class Width /** This class is used to hold font widths. It is used by printer descriptions. @publishedAll @released */ { public: IMPORT_C static Width* New(); IMPORT_C void Delete(); void Externalize(ostream& out); public: /** Font width in pixels. */ uint16 iWidthInPixels; }; class WidthsCodeSection /** This class encapsulates a list of font widths used by printer descriptions. @publishedAll @released */ { private: WidthsCodeSection(); public: IMPORT_C static WidthsCodeSection* New(); IMPORT_C void Delete(); void Externalize(ostream& out); IMPORT_C void AddWidth(Width* aWidth); IMPORT_C Width* WidthList(int i); IMPORT_C int NumWidths(); ~WidthsCodeSection(); public: /** Start of list. */ uint16 iStart; /** End of list. */ uint16 iEnd; private: ObjectList<Width*> iWidthList; }; class FontInfo : public Record /** This class contains information about fonts. It is used by a printer description. @publishedAll @released */ { public: IMPORT_C static FontInfo* New(); IMPORT_C void Delete(); void Externalize(ostream& out); IMPORT_C void AddCodeSection(WidthsCodeSection* aCodeSection); IMPORT_C WidthsCodeSection* CodeSectionList(int i); IMPORT_C int NumCodeSections(); private: ~FontInfo(); public: /** Font ascent in pixels. */ uint16 iAscentInPixels; /** Maximum font character width in pixels. */ uint16 iMaxCharWidthInPixels; /** Normal font character width in pixels. */ uint16 iMaxNormalCharWidthInPixels; private: ObjectList<WidthsCodeSection*> iCodeSectionList; }; class PdrStyle /** This class contains information about a font style used in a printer descriptions. @publishedAll @released */ { public: IMPORT_C static PdrStyle* New(); IMPORT_C void Delete(); void Externalize(ostream& out); PdrStyle(); public: /** Determines whether the font is available for use. */ boolean iIsAvailable; /** Reference to a record containing information about the font. */ Record *iFontInfo; }; class PdrFontHeight /** This class stores information for use in printer descriptions about font heights and relative scaling. @publishedAll @released */ { public: IMPORT_C static PdrFontHeight* New(); IMPORT_C void Delete(); void Externalize(ostream& out); PdrFontHeight(); public: /** Command string associated with font height. */ String iCommandString; /** Font height in twips. */ int32 iHeightInTwips; /** Width scaling. */ int32 iWidthScale; /** Array containing space for four styles. */ PdrStyle iStyle[BoldItalic + 1]; // Array for four styles }; class PdrScalableFontHeight /** This class contains information on scalable fonts used by printer descriptions. @publishedAll @released */ { public: PdrScalableFontHeight(); void Externalize(ostream& out); public: /** Contains a printer command string associated with this font. */ String iCommandString; /** Minimum height in twips. */ int32 iHeightMinInTwips; /** Maximum height in twips. */ int32 iHeightMaxInTwips; /** Scale delta in twips. */ int32 iHeightDeltaInTwips; /** Array for four styles. */ PdrStyle iStyle[BoldItalic + 1]; // Array for four styles }; class TypefaceFonts : public Record /** This class encapsulates a list of font heights for printer descriptions. @publishedAll @released */ { public: IMPORT_C static TypefaceFonts* New(); IMPORT_C void Delete(); void Externalize(ostream& out); IMPORT_C void AddFontHeight(PdrFontHeight* aFontHeight); IMPORT_C int NumFontHeights(); PdrFontHeight* FontHeightList(int i); private: TypefaceFonts(); ~TypefaceFonts(); public: Typeface iTypeface; /** Determines whether the font height is scalable. */ boolean iIsScalable; private: ObjectList<PdrFontHeight*> iFontHeightList; public: /** Describes a scalable font height. */ PdrScalableFontHeight iScalableFontHeight; Record *iTranslates; }; class TypefaceFontsEntry /** This class encapsulates information about a printer font. @publishedAll @released */ { public: IMPORT_C static TypefaceFontsEntry* New(Record* aTypefaceFonts); IMPORT_C void Delete(); void Externalize(ostream& out); private: TypefaceFontsEntry(Record* aTypefaceFonts); public: ~TypefaceFontsEntry(); public: /** Contains the font record. */ Record* iTypefaceFonts; /** Determines whether the font can be used in portrait view. */ boolean iNotInPortrait; /** Determines whether the font can be used in landscape view. */ boolean iNotInLandscape; }; class Margins /** This class contains the margins used by a printer description. @publishedAll @released */ { public: void Externalize(ostream& out); public: /** Left margin. */ int32 iLeft; /** Right margin. */ int32 iRight; /** Top margin. */ int32 iTop; /** Bottom margin. */ int32 iBottom; }; /* class PdrExtraInfo : public Record { public: ~PdrExtraInfo(); void Externalize(ostream& out); public: ObjectList<String*> iInfo; }; */ class PdrModelInfo /** This class contains information about a printer model used by a printer description. @publishedAll @released */ { public: void Externalize(ostream& out); IMPORT_C void AddTypefaceFontsEntry(TypefaceFontsEntry* aTypefaceFontsEntry); int NumTypefaceFontsEntries(); TypefaceFontsEntry* TypefaceFontsEntryList(int i); PdrModelInfo(); ~PdrModelInfo(); public: streampos iStreamId; /** Flags associated with model. */ int32 iFlags; /** Pixel width in twips. */ int32 iKPixelWidthInTwips; /** Pixel height in twips. */ int32 iKPixelHeightInTwips; /** Portrait printng offset in twips. */ Point iPortraitOffsetInPixels; /** Landscape printing offset in twips. */ Point iLandscapeOffsetInPixels; /** Minimum margin in pixels. */ Margins iMinMarginsInPixels; /** Display mode. */ int32 iDisplayMode; private: ObjectList<TypefaceFontsEntry*> iTypefaceFontsEntryList; public: Record *iResources; Record *iSpareRecord; }; class PrinterModelEntry /** This class contains information on a printer model. @publishedAll @released */ { public: PrinterModelEntry(); void Externalize(ostream& out); public: /** Printer name. */ String iName; /** Whether a printer port is required. */ boolean iRequiresPrinterPort; uid iUid; }; class PrinterModelHeader : public Record /** This class encapsulates information about a printer model. @publishedAll @released */ { public: IMPORT_C static PrinterModelHeader* New(); IMPORT_C void Delete(); void Externalize(ostream& out); void ExternalizeData(ostream& out); boolean IsPdrModel(); public: /** Printer model entry. */ PrinterModelEntry iEntry; /** Printer model information. */ PdrModelInfo iInfo; }; class PdrStoreFile : public Record /** This class stores printer description files. @publishedAll @released */ { public: IMPORT_C static PdrStoreFile* New(); IMPORT_C void Delete(); IMPORT_C void AddModel(PrinterModelHeader *aModel); void Externalize(ostream& out); private: PdrStoreFile(); private: void AddTypefaceFonts(TypefaceFonts* aTypefaceFonts); void ExternalizeHeader(ostream& out); void ExternalizeComponents(ostream& out); public: /** Printer descriptor. */ String iPDLName; uid iPDLUid; private: RecordList iModelList; RecordList iTypefaceFontsList; RecordList iFontInfoList; RecordList iResourcesList; RecordList iTranslatesList; // RecordList iExtraInfoList; }; class PdrModelStore /** This class is used to store information about printer models, and externalize it to external files. @publishedAll @released */ { public: IMPORT_C boolean Store(const String& aFilename); IMPORT_C void AddPdrStoreFile(PdrStoreFile* aPdrStoreFile); IMPORT_C void AddModel(PrinterModelHeader *aModel); IMPORT_C Record* FindModel(String& aLabel); IMPORT_C void AddTypefaceFonts(TypefaceFonts *aTypefaceFonts); IMPORT_C Record* FindTypefaceFonts(String& aLabel); IMPORT_C void AddFontInfo(FontInfo *aFontInfo); IMPORT_C Record* FindFontInfo(String& aLabel); IMPORT_C void AddResources(PdrResources *aResources); IMPORT_C Record* FindResources(String& aLabel); IMPORT_C void AddTranslates(PdrTranslates *aTranslates); IMPORT_C Record* FindTranslates(String& aLabel); // void AddExtraInfo(PdrExtraInfo *aInfo); // Record* FindExtraInfo(String& aLabel); PdrModelStore(); ~PdrModelStore(); private: /** This attribute is internal, and is not intended for use. */ PdrStoreFile* iPdrStoreFile; RecordList iModelList; RecordList iTypefaceFontsList; RecordList iFontInfoList; RecordList iResourcesList; RecordList iTranslatesList; // RecordList iExtraInfoList; }; #endif