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