epoc32/include/PDRRECRD.H
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100 (2010-03-31)
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@4
     1
/*
williamr@4
     2
* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@4
     3
* All rights reserved.
williamr@4
     4
* This component and the accompanying materials are made available
williamr@4
     5
* under the terms of "Eclipse Public License v1.0"
williamr@4
     6
* which accompanies this distribution, and is available
williamr@4
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@4
     8
*
williamr@4
     9
* Initial Contributors:
williamr@4
    10
* Nokia Corporation - initial contribution.
williamr@4
    11
*
williamr@4
    12
* Contributors:
williamr@4
    13
*
williamr@4
    14
* Description: 
williamr@4
    15
* Header PDRRECRD.H
williamr@4
    16
*
williamr@4
    17
*/
williamr@4
    18
williamr@2
    19
williamr@2
    20
#ifndef __PDRRECRD_H__
williamr@2
    21
#define __PDRRECRD_H__
williamr@2
    22
williamr@2
    23
#include "LEXICAL.H"
williamr@2
    24
#include "RECORD.H"
williamr@2
    25
#include "UID.H"
williamr@2
    26
williamr@2
    27
/** 
williamr@2
    28
Index of text styles used by printer description records. 
williamr@2
    29
@publishedAll
williamr@2
    30
@released
williamr@2
    31
*/
williamr@2
    32
enum StyleIndex
williamr@2
    33
	{
williamr@2
    34
	/** Normal text. */
williamr@2
    35
	Normal,
williamr@2
    36
	/** Bold text. */
williamr@2
    37
	Bold,
williamr@2
    38
	/** Italic text. */
williamr@2
    39
	Italic,
williamr@2
    40
	/** Bold italic text. */
williamr@2
    41
	BoldItalic
williamr@2
    42
	};
williamr@2
    43
williamr@2
    44
class PdrResource
williamr@2
    45
/** 
williamr@2
    46
This class encapsulates a printer resource. 
williamr@2
    47
@publishedAll
williamr@2
    48
@released
williamr@2
    49
*/
williamr@2
    50
	{
williamr@2
    51
public:
williamr@2
    52
	IMPORT_C static PdrResource* New();
williamr@2
    53
	IMPORT_C void Delete();
williamr@2
    54
	void Externalize(ostream& out);
williamr@2
    55
public:
williamr@2
    56
	/** Resource identifier. */
williamr@2
    57
	int32 iId;
williamr@2
    58
	/** String containing the resource. */
williamr@2
    59
	String iString;
williamr@2
    60
	};
williamr@2
    61
williamr@2
    62
class PdrResources : public Record
williamr@2
    63
/** 
williamr@2
    64
This class holds printer resources. 
williamr@2
    65
@publishedAll
williamr@2
    66
@released
williamr@2
    67
*/
williamr@2
    68
	{
williamr@2
    69
public:
williamr@2
    70
	IMPORT_C static PdrResources* New();
williamr@2
    71
	IMPORT_C void Delete();
williamr@2
    72
	void Externalize(ostream& out);
williamr@2
    73
	IMPORT_C void AddResource(PdrResource* aResource);
williamr@2
    74
private:
williamr@2
    75
	~PdrResources();
williamr@2
    76
private:
williamr@2
    77
	ObjectList<PdrResource*> iPdrResourceList;
williamr@2
    78
	};
williamr@2
    79
williamr@2
    80
class PdrTranslation
williamr@2
    81
/** 
williamr@2
    82
This class holds a translation between printer descriptions. 
williamr@2
    83
@publishedAll
williamr@2
    84
@released
williamr@2
    85
*/
williamr@2
    86
	{
williamr@2
    87
public:
williamr@2
    88
	IMPORT_C static PdrTranslation* New();
williamr@2
    89
	IMPORT_C void Delete();
williamr@2
    90
	void Externalize(ostream& out);
williamr@2
    91
public:
williamr@2
    92
	/** Printer identifier to translate from. */
williamr@2
    93
	uint16 iFrom;
williamr@2
    94
	/** Printer identifier to translate to. */
williamr@2
    95
	String iTo;	//  !! Think about Unicode version
williamr@2
    96
	};
williamr@2
    97
williamr@2
    98
class PdrTranslates : public Record
williamr@2
    99
/** 
williamr@2
   100
This class encapsulates a list of printer description translations. 
williamr@2
   101
@publishedAll
williamr@2
   102
@released
williamr@2
   103
*/
williamr@2
   104
	{
williamr@2
   105
public:
williamr@2
   106
	IMPORT_C static PdrTranslates* New();
williamr@2
   107
	IMPORT_C void Delete();
williamr@2
   108
	void Externalize(ostream& out);
williamr@2
   109
	IMPORT_C void AddTranslation(PdrTranslation* aTranslation);
williamr@2
   110
private:
williamr@2
   111
	~PdrTranslates();
williamr@2
   112
private:
williamr@2
   113
	ObjectList<PdrTranslation*> iPdrTranslationList;
williamr@2
   114
	};
williamr@2
   115
williamr@2
   116
class Width
williamr@2
   117
/** 
williamr@2
   118
This class is used to hold font widths. It is used by printer descriptions. 
williamr@2
   119
@publishedAll
williamr@2
   120
@released
williamr@2
   121
*/
williamr@2
   122
	{
williamr@2
   123
public:
williamr@2
   124
	IMPORT_C static Width* New();
williamr@2
   125
	IMPORT_C void Delete();
williamr@2
   126
	void Externalize(ostream& out);
williamr@2
   127
public:
williamr@2
   128
	/** Font width in pixels. */
williamr@2
   129
	uint16 iWidthInPixels;
williamr@2
   130
	};
williamr@2
   131
williamr@2
   132
class WidthsCodeSection
williamr@2
   133
/** 
williamr@2
   134
This class encapsulates a list of font widths used by printer descriptions. 
williamr@2
   135
@publishedAll
williamr@2
   136
@released
williamr@2
   137
*/
williamr@2
   138
	{
williamr@2
   139
private:
williamr@2
   140
	WidthsCodeSection();
williamr@2
   141
public:
williamr@2
   142
	IMPORT_C static WidthsCodeSection* New();
williamr@2
   143
	IMPORT_C void Delete();
williamr@2
   144
	void Externalize(ostream& out);
williamr@2
   145
	IMPORT_C void AddWidth(Width* aWidth);
williamr@2
   146
	IMPORT_C Width* WidthList(int i);
williamr@2
   147
	IMPORT_C int NumWidths();
williamr@2
   148
	~WidthsCodeSection();
williamr@2
   149
public:
williamr@2
   150
	/** Start of list. */
williamr@2
   151
	uint16 iStart;
williamr@2
   152
	/** End of list. */
williamr@2
   153
	uint16 iEnd;
williamr@2
   154
private:
williamr@2
   155
	ObjectList<Width*> iWidthList;
williamr@2
   156
	};	
williamr@2
   157
williamr@2
   158
class FontInfo : public Record
williamr@2
   159
/** 
williamr@2
   160
This class contains information about fonts. It is used by a printer description. 
williamr@2
   161
@publishedAll
williamr@2
   162
@released
williamr@2
   163
*/
williamr@2
   164
	{
williamr@2
   165
public:
williamr@2
   166
	IMPORT_C static FontInfo* New();
williamr@2
   167
	IMPORT_C void Delete();
williamr@2
   168
	void Externalize(ostream& out);
williamr@2
   169
	IMPORT_C void AddCodeSection(WidthsCodeSection* aCodeSection);
williamr@2
   170
	IMPORT_C WidthsCodeSection* CodeSectionList(int i);
williamr@2
   171
	IMPORT_C int NumCodeSections();
williamr@2
   172
private:
williamr@2
   173
	~FontInfo();
williamr@2
   174
public:
williamr@2
   175
	/** Font ascent in pixels. */
williamr@2
   176
	uint16 iAscentInPixels;
williamr@2
   177
	/** Maximum font character width in pixels. */
williamr@2
   178
	uint16 iMaxCharWidthInPixels;
williamr@2
   179
	/** Normal font character width in pixels. */
williamr@2
   180
	uint16 iMaxNormalCharWidthInPixels;
williamr@2
   181
private:
williamr@2
   182
	ObjectList<WidthsCodeSection*> iCodeSectionList;
williamr@2
   183
	};
williamr@2
   184
 
williamr@2
   185
class PdrStyle
williamr@2
   186
/** 
williamr@2
   187
This class contains information about a font style used in a printer descriptions. 
williamr@2
   188
@publishedAll
williamr@2
   189
@released
williamr@2
   190
*/
williamr@2
   191
	{
williamr@2
   192
public:
williamr@2
   193
	IMPORT_C static PdrStyle* New();
williamr@2
   194
	IMPORT_C void Delete();
williamr@2
   195
	void Externalize(ostream& out);
williamr@2
   196
	PdrStyle();
williamr@2
   197
public:
williamr@2
   198
	/** Determines whether the font is available for use. */
williamr@2
   199
	boolean iIsAvailable;
williamr@2
   200
	/** Reference to a record containing information about the font. */
williamr@2
   201
	Record *iFontInfo;
williamr@2
   202
	};
williamr@2
   203
williamr@2
   204
class PdrFontHeight
williamr@2
   205
/** 
williamr@2
   206
This class stores information for use in printer descriptions about font heights 
williamr@2
   207
and relative scaling. 
williamr@2
   208
@publishedAll
williamr@2
   209
@released
williamr@2
   210
*/
williamr@2
   211
	{
williamr@2
   212
public:
williamr@2
   213
	IMPORT_C static PdrFontHeight* New();
williamr@2
   214
	IMPORT_C void Delete();
williamr@2
   215
	void Externalize(ostream& out);
williamr@2
   216
	PdrFontHeight();
williamr@2
   217
public:
williamr@2
   218
	/** Command string associated with font height. */
williamr@2
   219
	String iCommandString;
williamr@2
   220
	/** Font height in twips. */
williamr@2
   221
	int32 iHeightInTwips;
williamr@2
   222
	/** Width scaling. */
williamr@2
   223
	int32 iWidthScale;
williamr@2
   224
	/** Array containing space for four styles. */
williamr@2
   225
	PdrStyle iStyle[BoldItalic + 1];	// Array for four styles
williamr@2
   226
	};
williamr@2
   227
williamr@2
   228
class PdrScalableFontHeight
williamr@2
   229
/** 
williamr@2
   230
This class contains information on scalable fonts used by printer descriptions. 
williamr@2
   231
@publishedAll
williamr@2
   232
@released
williamr@2
   233
*/
williamr@2
   234
	{
williamr@2
   235
public:
williamr@2
   236
	PdrScalableFontHeight();
williamr@2
   237
	void Externalize(ostream& out);
williamr@2
   238
public:
williamr@2
   239
	/** Contains a printer command string associated with this font. */
williamr@2
   240
	String iCommandString;
williamr@2
   241
	/** Minimum height in twips. */
williamr@2
   242
	int32 iHeightMinInTwips;
williamr@2
   243
	/** Maximum height in twips. */
williamr@2
   244
	int32 iHeightMaxInTwips;
williamr@2
   245
	/** Scale delta in twips. */
williamr@2
   246
	int32 iHeightDeltaInTwips;
williamr@2
   247
	/** Array for four styles. */
williamr@2
   248
	PdrStyle iStyle[BoldItalic + 1];	// Array for four styles
williamr@2
   249
	};
williamr@2
   250
williamr@2
   251
class TypefaceFonts : public Record
williamr@2
   252
/** 
williamr@2
   253
This class encapsulates a list of font heights for printer descriptions. 
williamr@2
   254
@publishedAll
williamr@2
   255
@released
williamr@2
   256
*/
williamr@2
   257
	{
williamr@2
   258
public:
williamr@2
   259
	IMPORT_C static TypefaceFonts* New();
williamr@2
   260
	IMPORT_C void Delete();
williamr@2
   261
	void Externalize(ostream& out);
williamr@2
   262
	IMPORT_C void AddFontHeight(PdrFontHeight* aFontHeight);
williamr@2
   263
	IMPORT_C int NumFontHeights();
williamr@2
   264
	PdrFontHeight* FontHeightList(int i);
williamr@2
   265
private:
williamr@2
   266
	TypefaceFonts();
williamr@2
   267
	~TypefaceFonts();
williamr@2
   268
public:
williamr@2
   269
	Typeface iTypeface;
williamr@2
   270
	/** Determines whether the font height is scalable. */
williamr@2
   271
	boolean iIsScalable;
williamr@2
   272
private:
williamr@2
   273
	ObjectList<PdrFontHeight*> iFontHeightList;
williamr@2
   274
public:
williamr@2
   275
	/** Describes a scalable font height. */
williamr@2
   276
	PdrScalableFontHeight iScalableFontHeight;
williamr@2
   277
	Record *iTranslates;
williamr@2
   278
	};
williamr@2
   279
williamr@2
   280
class TypefaceFontsEntry
williamr@2
   281
/** 
williamr@2
   282
This class encapsulates information about a printer font. 
williamr@2
   283
@publishedAll
williamr@2
   284
@released
williamr@2
   285
*/
williamr@2
   286
	{
williamr@2
   287
public:
williamr@2
   288
	IMPORT_C static TypefaceFontsEntry* New(Record* aTypefaceFonts);
williamr@2
   289
	IMPORT_C void Delete();
williamr@2
   290
	void Externalize(ostream& out);
williamr@2
   291
private:
williamr@2
   292
	TypefaceFontsEntry(Record* aTypefaceFonts);
williamr@2
   293
public:
williamr@2
   294
	~TypefaceFontsEntry();
williamr@2
   295
public:
williamr@2
   296
	/** Contains the font record. */
williamr@2
   297
	Record* iTypefaceFonts;
williamr@2
   298
	/** Determines whether the font can be used in portrait view. */
williamr@2
   299
	boolean iNotInPortrait;
williamr@2
   300
	/** Determines whether the font can be used in landscape view. */
williamr@2
   301
	boolean iNotInLandscape;
williamr@2
   302
	};
williamr@2
   303
williamr@2
   304
class Margins
williamr@2
   305
/** 
williamr@2
   306
This class contains the margins used by a printer description. 
williamr@2
   307
@publishedAll
williamr@2
   308
@released
williamr@2
   309
*/
williamr@2
   310
	{
williamr@2
   311
public:
williamr@2
   312
	void Externalize(ostream& out);
williamr@2
   313
public:
williamr@2
   314
	/** Left margin. */
williamr@2
   315
	int32 iLeft;
williamr@2
   316
	/** Right margin. */
williamr@2
   317
	int32 iRight;
williamr@2
   318
	/** Top margin. */
williamr@2
   319
	int32 iTop;
williamr@2
   320
	/** Bottom margin. */
williamr@2
   321
	int32 iBottom;
williamr@2
   322
	};
williamr@2
   323
/*
williamr@2
   324
class PdrExtraInfo : public Record
williamr@2
   325
	{
williamr@2
   326
public:
williamr@2
   327
	~PdrExtraInfo();
williamr@2
   328
	void Externalize(ostream& out);
williamr@2
   329
public:
williamr@2
   330
	ObjectList<String*> iInfo;
williamr@2
   331
	};
williamr@2
   332
*/
williamr@2
   333
class PdrModelInfo
williamr@2
   334
/** 
williamr@2
   335
This class contains information about a printer model used by a printer description. 
williamr@2
   336
@publishedAll
williamr@2
   337
@released
williamr@2
   338
*/
williamr@2
   339
	{
williamr@2
   340
public:
williamr@2
   341
	void Externalize(ostream& out);
williamr@2
   342
	IMPORT_C void AddTypefaceFontsEntry(TypefaceFontsEntry* aTypefaceFontsEntry);
williamr@2
   343
	int NumTypefaceFontsEntries();
williamr@2
   344
	TypefaceFontsEntry* TypefaceFontsEntryList(int i);
williamr@2
   345
	PdrModelInfo();
williamr@2
   346
	~PdrModelInfo();
williamr@2
   347
public:
williamr@2
   348
	streampos iStreamId;
williamr@2
   349
	/** Flags associated with model. */
williamr@2
   350
	int32 iFlags;
williamr@2
   351
	/** Pixel width in twips. */
williamr@2
   352
	int32 iKPixelWidthInTwips;
williamr@2
   353
	/** Pixel height in twips. */
williamr@2
   354
	int32 iKPixelHeightInTwips;
williamr@2
   355
	/** Portrait printng offset in twips. */
williamr@2
   356
	Point iPortraitOffsetInPixels;
williamr@2
   357
	/** Landscape printing offset in twips. */
williamr@2
   358
	Point iLandscapeOffsetInPixels;
williamr@2
   359
	/** Minimum margin in pixels. */
williamr@2
   360
	Margins iMinMarginsInPixels;
williamr@2
   361
	/** Display mode. */
williamr@2
   362
	int32 iDisplayMode;
williamr@2
   363
private:
williamr@2
   364
	ObjectList<TypefaceFontsEntry*> iTypefaceFontsEntryList;
williamr@2
   365
public:
williamr@2
   366
	Record *iResources;
williamr@2
   367
	Record *iSpareRecord;
williamr@2
   368
	};
williamr@2
   369
 
williamr@2
   370
class PrinterModelEntry
williamr@2
   371
/** 
williamr@2
   372
This class contains information on a printer model. 
williamr@2
   373
@publishedAll
williamr@2
   374
@released
williamr@2
   375
*/
williamr@2
   376
	{
williamr@2
   377
public:
williamr@2
   378
	PrinterModelEntry();
williamr@2
   379
	void Externalize(ostream& out);
williamr@2
   380
public:
williamr@2
   381
	/** Printer name. */
williamr@2
   382
	String iName;
williamr@2
   383
	/** Whether a printer port is required. */
williamr@2
   384
	boolean iRequiresPrinterPort;
williamr@2
   385
	uid iUid;
williamr@2
   386
	};
williamr@2
   387
williamr@2
   388
class PrinterModelHeader : public Record
williamr@2
   389
/** 
williamr@2
   390
This class encapsulates information about a printer model. 
williamr@2
   391
@publishedAll
williamr@2
   392
@released
williamr@2
   393
*/
williamr@2
   394
	{
williamr@2
   395
public:
williamr@2
   396
	IMPORT_C static PrinterModelHeader* New();
williamr@2
   397
	IMPORT_C void Delete();
williamr@2
   398
	void Externalize(ostream& out);
williamr@2
   399
	void ExternalizeData(ostream& out);
williamr@2
   400
	boolean IsPdrModel();
williamr@2
   401
public:
williamr@2
   402
	/** Printer model entry. */
williamr@2
   403
	PrinterModelEntry iEntry;
williamr@2
   404
	/** Printer model information. */
williamr@2
   405
	PdrModelInfo iInfo;
williamr@2
   406
	};
williamr@2
   407
williamr@2
   408
class PdrStoreFile : public Record
williamr@2
   409
/** 
williamr@2
   410
This class stores printer description files. 
williamr@2
   411
@publishedAll
williamr@2
   412
@released
williamr@2
   413
*/
williamr@2
   414
	{
williamr@2
   415
public:
williamr@2
   416
	IMPORT_C static PdrStoreFile* New();
williamr@2
   417
	IMPORT_C void Delete();
williamr@2
   418
	IMPORT_C void AddModel(PrinterModelHeader *aModel);
williamr@2
   419
	void Externalize(ostream& out);
williamr@2
   420
private:
williamr@2
   421
	PdrStoreFile();
williamr@2
   422
private:
williamr@2
   423
	void AddTypefaceFonts(TypefaceFonts* aTypefaceFonts);
williamr@2
   424
	void ExternalizeHeader(ostream& out);
williamr@2
   425
	void ExternalizeComponents(ostream& out);
williamr@2
   426
public:
williamr@2
   427
	/** Printer descriptor. */
williamr@2
   428
	String iPDLName;
williamr@2
   429
	uid iPDLUid;
williamr@2
   430
private:
williamr@2
   431
	RecordList iModelList;
williamr@2
   432
	RecordList iTypefaceFontsList;
williamr@2
   433
	RecordList iFontInfoList;
williamr@2
   434
	RecordList iResourcesList; 
williamr@2
   435
	RecordList iTranslatesList;
williamr@2
   436
//	RecordList iExtraInfoList;
williamr@2
   437
	};
williamr@2
   438
williamr@2
   439
class PdrModelStore
williamr@2
   440
/** 
williamr@2
   441
This class is used to store information about printer models, and externalize 
williamr@2
   442
it to external files. 
williamr@2
   443
@publishedAll
williamr@2
   444
@released
williamr@2
   445
*/
williamr@2
   446
	{
williamr@2
   447
public:
williamr@2
   448
	IMPORT_C boolean Store(const String& aFilename);
williamr@2
   449
	IMPORT_C void AddPdrStoreFile(PdrStoreFile* aPdrStoreFile);
williamr@2
   450
	IMPORT_C void AddModel(PrinterModelHeader *aModel);
williamr@2
   451
	IMPORT_C Record* FindModel(String& aLabel);
williamr@2
   452
	IMPORT_C void AddTypefaceFonts(TypefaceFonts *aTypefaceFonts);
williamr@2
   453
	IMPORT_C Record* FindTypefaceFonts(String& aLabel);
williamr@2
   454
	IMPORT_C void AddFontInfo(FontInfo *aFontInfo);
williamr@2
   455
	IMPORT_C Record* FindFontInfo(String& aLabel);
williamr@2
   456
	IMPORT_C void AddResources(PdrResources *aResources);
williamr@2
   457
	IMPORT_C Record* FindResources(String& aLabel);
williamr@2
   458
	IMPORT_C void AddTranslates(PdrTranslates *aTranslates);
williamr@2
   459
	IMPORT_C Record* FindTranslates(String& aLabel);
williamr@2
   460
//	void AddExtraInfo(PdrExtraInfo *aInfo);
williamr@2
   461
//	Record* FindExtraInfo(String& aLabel);
williamr@2
   462
	PdrModelStore();
williamr@2
   463
	~PdrModelStore();
williamr@2
   464
private:
williamr@2
   465
	/** This attribute is internal, and is not intended for use. */
williamr@2
   466
	PdrStoreFile* iPdrStoreFile;
williamr@2
   467
	RecordList iModelList;
williamr@2
   468
	RecordList iTypefaceFontsList;
williamr@2
   469
	RecordList iFontInfoList;
williamr@2
   470
	RecordList iResourcesList;
williamr@2
   471
	RecordList iTranslatesList;
williamr@2
   472
//	RecordList iExtraInfoList;
williamr@2
   473
	};
williamr@2
   474
williamr@2
   475
#endif