diff -r df63379a03bd -r adc615fe34e8 sbsv2/raptor/test/smoke_suite/test_resources/tools2/pdrtran/src/PDRRECRD.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv2/raptor/test/smoke_suite/test_resources/tools2/pdrtran/src/PDRRECRD.CPP Fri Jan 22 16:42:55 2010 +0000 @@ -0,0 +1,785 @@ +/* +* 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.CPP +* +*/ + + +#include "PDRRECRD.H" + +EXPORT_C PdrResource* PdrResource::New() +/** Creates a new instance of this class. + +@return Reference to a new object. */ + { + return new PdrResource(); + } + +EXPORT_C void PdrResource::Delete() +/** Deletes the current object. */ + { + delete this; + } + +void PdrResource::Externalize(ostream& out) + { + uint8 id = (uint8) iId; + out.write((char*) &id, sizeof(id)); + iString.Externalize(out); + } + +EXPORT_C PdrResources* PdrResources::New() +/** Creates a new instance of this class. + +@return Reference to a new object. */ + { + return new PdrResources(); + } + +EXPORT_C void PdrResources::Delete() +/** Deletes the current object. */ + { + delete this; + } + +void PdrResources::Externalize(ostream& out) + { + iStreamId = out.tellp(); + iPdrResourceList.Externalize(out); + } + +EXPORT_C void PdrResources::AddResource(PdrResource* aResource) +/** Adds a printer resource to the object. + +@param aResource Printer resource. */ + { + iPdrResourceList.Add(aResource); + } + +PdrResources::~PdrResources() +/** Default destructor. */ + { + iPdrResourceList.Destroy(); + } + +EXPORT_C PdrTranslation* PdrTranslation::New() +/** Creates a new instance of this class. + +@return Reference to a new object. */ + { + return new PdrTranslation(); + } + +EXPORT_C void PdrTranslation::Delete() +/** Deletes the current object. */ + { + delete this; + } + +void PdrTranslation::Externalize(ostream& out) + { + out.write((char*) &iFrom, sizeof(iFrom)); + iTo.Externalize(out); + } + +EXPORT_C PdrTranslates* PdrTranslates::New() +/** Creates a new instance of this class. + +@return Reference to a new object. */ + { + return new PdrTranslates(); + } + +EXPORT_C void PdrTranslates::Delete() +/** Deletes the current object. */ + { + delete this; + } + +void PdrTranslates::Externalize(ostream& out) + { + iStreamId = out.tellp(); + iPdrTranslationList.Externalize(out); + } + +EXPORT_C void PdrTranslates::AddTranslation(PdrTranslation* aTranslation) +/** Adds a printer translation to the list. + +@param aTranslation Reference to a translation. */ + { + iPdrTranslationList.Add(aTranslation); + } + +PdrTranslates::~PdrTranslates() +/** This function is internal, and is not intended for use. */ + { + iPdrTranslationList.Destroy(); + } + +EXPORT_C Width* Width::New() +/** Creates a new instance of this object. + +@return Reference to a new object. */ + { + return new Width(); + } + +EXPORT_C void Width::Delete() +/** Deletes the current object. */ + { + delete this; + } + +void Width::Externalize(ostream& out) + { + out.write ((char*) &iWidthInPixels, sizeof(iWidthInPixels)); + } + +WidthsCodeSection::WidthsCodeSection() + : iWidthList() +/** This function is internal only, and is not intended for use. */ + { + } + +EXPORT_C WidthsCodeSection* WidthsCodeSection::New() +/** Creates a new instance of this class. + +@return Reference to a new object. */ + { + return new WidthsCodeSection(); + } + +EXPORT_C void WidthsCodeSection::Delete() +/** Deletes the current object. */ + { + delete this; + } + +void WidthsCodeSection::Externalize(ostream& out) + { + out.write((char*) &iStart, sizeof(iStart)); + out.write((char*) &iEnd, sizeof(iEnd)); + iWidthList.Externalize(out); + } + +EXPORT_C void WidthsCodeSection::AddWidth(Width* aWidth) +/** Adds a new font width to the list. + +@param aWidth Font width. */ + { + iWidthList.Add(aWidth); + } + +EXPORT_C Width* WidthsCodeSection::WidthList(int i) +/** Returns a font width from the list at the position specified. + +@param i Position of font width in list. +@return Reference to a font width. */ + { + return iWidthList[i]; + } + +EXPORT_C int WidthsCodeSection::NumWidths() +/** Returns the number of font widths in the list. + +@return Number of widths. */ + { + return iWidthList.Size(); + } + +WidthsCodeSection::~WidthsCodeSection() +/** Default destructor. */ + { + iWidthList.Destroy(); + } + +EXPORT_C FontInfo* FontInfo::New() +/** Creates a new instance of this class. + +@return Reference to a new instance of this class. */ + { + return new FontInfo(); + } + +EXPORT_C void FontInfo::Delete() +/** Deletes the current FontInfo object. */ + { + delete this; + } + +void FontInfo::Externalize(ostream& out) + { + iStreamId = out.tellp(); + out.write((char*) &iAscentInPixels, sizeof(iAscentInPixels)); + out.write((char*) &iMaxCharWidthInPixels, sizeof(iMaxCharWidthInPixels)); + out.write((char*) &iMaxNormalCharWidthInPixels, sizeof(iMaxNormalCharWidthInPixels)); + iCodeSectionList.Externalize(out); + } + +EXPORT_C void FontInfo::AddCodeSection(WidthsCodeSection* aCodeSection) +/** Adds a section of information about the font to an internally-stored array. + +@param aCodeSection Font information. */ + { + iCodeSectionList.Add(aCodeSection); + } + +EXPORT_C WidthsCodeSection* FontInfo::CodeSectionList(int i) +/** Returns a section of font information from a specified position in the internally-stored +array. + +@param i Postion of information in the array. +@return Reference to section of font information. */ + { + return iCodeSectionList[i]; + } + +EXPORT_C int FontInfo::NumCodeSections() +/** Returns the number of sections of font information in the internally-stored +array. + +@return Current number of font information sections. */ + { + return iCodeSectionList.Size(); + } + +FontInfo::~FontInfo() +/** This function is internal, and not intended for use. */ + { + iCodeSectionList.Destroy(); + } + +EXPORT_C PdrStyle* PdrStyle::New() +/** Creates a new instance of this class + +@return Reference to a new object. */ + { + return new PdrStyle(); + } + +EXPORT_C void PdrStyle::Delete() +/** Deletes the current object. */ + { + delete this; + } + +void PdrStyle::Externalize(ostream& out) + { + out.write((char*) &iIsAvailable, sizeof(iIsAvailable)); + streamoff streamid = 0; + if (iIsAvailable) + streamid = iFontInfo->iStreamId; + ::ExternalizeStreamOff(out, streamid); + } + +PdrStyle::PdrStyle() + : iIsAvailable(efalse) +/** Default constructor. */ + { + } + +EXPORT_C PdrFontHeight* PdrFontHeight::New() +/** Returns a new instance of this class. + +@return Reference to new object. */ + { + return new PdrFontHeight(); + } + +EXPORT_C void PdrFontHeight::Delete() +/** Deletes the current object. */ + { + delete this; + } + +void PdrFontHeight::Externalize(ostream& out) + { + iCommandString.Externalize(out); + out.write((char*) &iHeightInTwips, sizeof(iHeightInTwips)); + out.write((char*) &iWidthScale, sizeof(iWidthScale)); + for (int style = Normal;style <= BoldItalic; style++) + iStyle[style].Externalize(out); + } + +PdrFontHeight::PdrFontHeight(): + iWidthScale(1) +/** Default constructor. */ + { + } + +PdrScalableFontHeight::PdrScalableFontHeight() +/** Default constructor. */ + { + } + +void PdrScalableFontHeight::Externalize(ostream& out) + { + iCommandString.Externalize(out); + out.write((char*) &iHeightMinInTwips, sizeof(iHeightMinInTwips)); + out.write((char*) &iHeightMaxInTwips, sizeof(iHeightMaxInTwips)); + out.write((char*) &iHeightDeltaInTwips, sizeof(iHeightDeltaInTwips)); + for (int style = Normal; style <= BoldItalic; style++) + iStyle[style].Externalize(out); + } + +EXPORT_C TypefaceFonts* TypefaceFonts::New() +/** Creates a new instance of this class. + +@return Reference to a new object. */ + { + return new TypefaceFonts(); + } + +EXPORT_C void TypefaceFonts::Delete() +/** Deletes the current object. */ + { + delete this; + } + +void TypefaceFonts::Externalize(ostream& out) + { + iStreamId = out.tellp(); + iTypeface.Externalize(out); + out.write((char*) &iIsScalable, sizeof(iIsScalable)); + if (iIsScalable) + iScalableFontHeight.Externalize(out); + else + iFontHeightList.Externalize(out); + ::ExternalizeStreamOff(out, iTranslates->iStreamId); + } + +EXPORT_C void TypefaceFonts::AddFontHeight(PdrFontHeight* aFontHeight) + { + iFontHeightList.Add(aFontHeight); + } + +EXPORT_C int TypefaceFonts::NumFontHeights() +/** Returns the number of font height descriptions currently held in the list. + +@return Number of descriptions. */ + { + return iFontHeightList.Size(); + } + +PdrFontHeight* TypefaceFonts::FontHeightList(int i) +/** Returns the font height description from the position specified in the list. + +@param i Position of description. +@return Font height description. */ + { + return iFontHeightList[i]; + } + +TypefaceFonts::TypefaceFonts(): + iIsScalable(efalse) +/** This function is internal only, and is not intended for use. */ + { + } + +TypefaceFonts::~TypefaceFonts() +/** This function is internal only, and is not intended for use. */ + { + iFontHeightList.Destroy(); + } + +EXPORT_C TypefaceFontsEntry* TypefaceFontsEntry::New(Record* aTypefaceFonts) + { + return new TypefaceFontsEntry(aTypefaceFonts); + } + +EXPORT_C void TypefaceFontsEntry::Delete() +/** Deletes the current object. */ + { + delete this; + } + +void TypefaceFontsEntry::Externalize(ostream& out) + { + ::ExternalizeStreamOff(out, iTypefaceFonts->iStreamId); + out.write((char*) &iNotInPortrait, sizeof(iNotInPortrait)); + out.write((char*) &iNotInLandscape, sizeof(iNotInLandscape)); + } + +TypefaceFontsEntry::TypefaceFontsEntry(Record* aTypefaceFonts) + : iTypefaceFonts(aTypefaceFonts), iNotInPortrait(efalse), iNotInLandscape(efalse) + { + } + +TypefaceFontsEntry::~TypefaceFontsEntry() +/** Default destructor. */ + { + } + +void Margins::Externalize(ostream& out) + { + out.write((char*) &iLeft, sizeof(iLeft)); + out.write((char*) &iRight, sizeof(iRight)); + out.write((char*) &iTop, sizeof(iTop)); + out.write((char*) &iBottom, sizeof(iBottom)); + } + +/* +PdrExtraInfo::~PdrExtraInfo() + { + iInfo.Destroy(); + } + +void PdrExtraInfo::Externalize(ostream& out) + { + iInfo.Externalize(out); + } +*/ + +void PdrModelInfo::Externalize(ostream& out) + { + iStreamId=out.tellp(); + out.write((char*) &KPdrtranVersion, sizeof(KPdrtranVersion)); + out.write((char*) &iFlags, sizeof(iFlags)); + out.write((char*) &iKPixelWidthInTwips, sizeof(iKPixelWidthInTwips)); + out.write((char*) &iKPixelHeightInTwips, sizeof(iKPixelHeightInTwips)); + iPortraitOffsetInPixels.Externalize(out); + iLandscapeOffsetInPixels.Externalize(out); + iMinMarginsInPixels.Externalize(out); + out.write((char*) &iDisplayMode, sizeof(iDisplayMode)); + iTypefaceFontsEntryList.Externalize(out); + ::ExternalizeStreamOff(out, iResources->iStreamId); + streamoff streamid = 0; + if (iSpareRecord) + streamid = iSpareRecord->iStreamId; + ::ExternalizeStreamOff(out, streamid); + } + +EXPORT_C void PdrModelInfo::AddTypefaceFontsEntry(TypefaceFontsEntry* aTypefaceFontsEntry) +/** Adds an entry containing information about typeface fonts to an internally-stored +array. + +@param aTypefaceFontsEntry Typeface font information. */ + { + iTypefaceFontsEntryList.Add(aTypefaceFontsEntry); + } + +int PdrModelInfo::NumTypefaceFontsEntries() +/** Returns the number of entries containing information about typeface fonts in +the internally-stored array. + +@return Number of entries. */ + { + return iTypefaceFontsEntryList.Size(); + } + +TypefaceFontsEntry* PdrModelInfo::TypefaceFontsEntryList(int i) +/** Returns the typeface font entry stored the internal array from the position +specified. + +@param i Position in array. +@return Typeface font entry. */ + { + return iTypefaceFontsEntryList[i]; + } + +PdrModelInfo::PdrModelInfo() + : iStreamId(0), + iFlags(0), + iKPixelWidthInTwips(0), + iKPixelHeightInTwips(0), + iPortraitOffsetInPixels(), + iLandscapeOffsetInPixels(), + iMinMarginsInPixels(), + iDisplayMode(0), + iTypefaceFontsEntryList(), + iResources(NULL), + iSpareRecord(NULL) // !! Not used yet +/** Default constructor. */ + { + } + +PdrModelInfo::~PdrModelInfo() +/** Default destructor. */ + { + iTypefaceFontsEntryList.Destroy(); + } + +PrinterModelEntry::PrinterModelEntry() + : iName(), iRequiresPrinterPort(efalse), iUid(KNullUid) +/** Default constructor. */ + { + } + +void PrinterModelEntry::Externalize(ostream& out) + { + iName.Externalize(out); + out.write((char*) &iRequiresPrinterPort, sizeof(iRequiresPrinterPort)); + out.write((char*) &iUid, sizeof(iUid)); + } + +EXPORT_C PrinterModelHeader* PrinterModelHeader::New() +/** Creates a new instance of this class. + +@return Reference to a new object. */ + { + return new PrinterModelHeader(); + } + +EXPORT_C void PrinterModelHeader::Delete() +/** Deletes the current object. */ + { + delete this; + } + +void PrinterModelHeader::Externalize(ostream& out) + { + iEntry.Externalize(out); + ::ExternalizeStreamOff(out, iInfo.iStreamId); + } + +void PrinterModelHeader::ExternalizeData(ostream& out) + { + iInfo.Externalize(out); + } + +boolean PrinterModelHeader::IsPdrModel() +/** Determines whether printer information is available for this printer model. + +@return ETrue: printer description is available. */ + { + return iInfo.NumTypefaceFontsEntries() || iInfo.iResources; + } + +EXPORT_C PdrStoreFile* PdrStoreFile::New() +/** Creates a new instance of this class. + +@return Reference to a new object. */ + { + return new PdrStoreFile(); + } + +EXPORT_C void PdrStoreFile::Delete() +/** Deletes the current object. */ + { + delete this; + } + +EXPORT_C void PdrStoreFile::AddModel(PrinterModelHeader* aModel) +/** Adds a printer model. + +@param aModel Printer model. */ + { + iModelList.Add(aModel); + if (aModel->IsPdrModel()) + { + for (int i = 0; i < aModel->iInfo.NumTypefaceFontsEntries(); i++) + AddTypefaceFonts((TypefaceFonts*) aModel->iInfo.TypefaceFontsEntryList(i)->iTypefaceFonts); + iResourcesList.Add(aModel->iInfo.iResources); +// if (aModel->iInfo.iSpareRecord) +// iExtraInfoList.Add(aModel->iInfo.iSpareRecord); + } + } + +void PdrStoreFile::Externalize(ostream& out) + { + ExternalizeHeader(out); + ExternalizeComponents(out); + } + +void PdrStoreFile::ExternalizeHeader(ostream& out) + { + out.write((char*) &KStoreWriteOnceLayoutUid, sizeof(KStoreWriteOnceLayoutUid)); + out.write((char*) &KPdrStoreFileUid, sizeof(KPdrStoreFileUid)); + out.write((char*) &KNullUid, sizeof(KNullUid)); + out.write((char*) &KPdrStoreFileChecksum, sizeof(KPdrStoreFileChecksum)); + ::ExternalizeStreamOff(out, iStreamId); + iStreamId = out.tellp(); + iPDLName.Externalize(out); + out.write((char*) &iPDLUid, sizeof(iPDLUid)); + iModelList.Externalize(out); + } + +void PdrStoreFile::AddTypefaceFonts(TypefaceFonts* aTypefaceFonts) + { + iTypefaceFontsList.Add(aTypefaceFonts); + iTranslatesList.Add(aTypefaceFonts->iTranslates); + if (aTypefaceFonts->iIsScalable) + { + for (int style = Normal; style <= BoldItalic; style++) + { + if (aTypefaceFonts->iScalableFontHeight.iStyle[style].iIsAvailable) + iFontInfoList.Add(aTypefaceFonts->iScalableFontHeight.iStyle[style].iFontInfo); + } + } + else + { + for (int j = 0; j < aTypefaceFonts->NumFontHeights(); j++) + { + PdrFontHeight* fontheight = aTypefaceFonts->FontHeightList(j); + for (int style = Normal; style <= BoldItalic; style++) + { + if (fontheight->iStyle[style].iIsAvailable) + iFontInfoList.Add(fontheight->iStyle[style].iFontInfo); + } + } + } + } + +void PdrStoreFile::ExternalizeComponents(ostream& out) + { + for (int i = 0; i < iModelList.Size(); i++) + { + PrinterModelHeader* model = (PrinterModelHeader*) iModelList[i]; + if (model->IsPdrModel()) + model->ExternalizeData(out); + } + iTypefaceFontsList.Externalize(out); + iFontInfoList.Externalize(out); + iResourcesList.Externalize(out); + iTranslatesList.Externalize(out); +// iExtraInfoList.Externalize(out); + } + +PdrStoreFile::PdrStoreFile() + : Record(), + iPDLName(), + iPDLUid(KNullUid), + iModelList(), + iTypefaceFontsList(), + iFontInfoList(), + iResourcesList(), + iTranslatesList() +/** This function is internal only, and is not intended for use. */ + { + } + +EXPORT_C boolean PdrModelStore::Store(const String& aFilename) +/** Externalizes printer information from the store to the specfied external file. + +@param aFilename Filename. +@return ETrue: store successful. */ + { + boolean state = efalse; + ofstream fout; + String string = aFilename; + fout.open(string.Text(), ios::binary); + if (!fout.fail()) + { + iPdrStoreFile->Externalize(fout); + fout.close(); + fout.open(string.Text(), ios::binary | ios::trunc); + iPdrStoreFile->Externalize(fout); + fout.close(); + state = etrue; + } + return state; + } + +EXPORT_C void PdrModelStore::AddPdrStoreFile(PdrStoreFile* aPdrStoreFile) + { + iPdrStoreFile = aPdrStoreFile; + } + +EXPORT_C void PdrModelStore::AddModel(PrinterModelHeader *aModel) +/** Adds a printer model to the store. + +@param aModel Printer model. */ + { + iModelList.Add(aModel); + } + +EXPORT_C Record *PdrModelStore::FindModel(String& aLabel) + { + return iModelList.LabelToRecord(aLabel); + } + +EXPORT_C void PdrModelStore::AddTypefaceFonts(TypefaceFonts *aTypefaceFonts) +/** Adds typeface information to the store. + +@param aTypefaceFonts Typeface fonts. */ + { + iTypefaceFontsList.Add(aTypefaceFonts); + } + +EXPORT_C Record *PdrModelStore::FindTypefaceFonts(String& aLabel) + { + return iTypefaceFontsList.LabelToRecord(aLabel); + } + +EXPORT_C void PdrModelStore::AddFontInfo(FontInfo *aFontInfo) +/** Adds font information to the store. + +@param aFontInfo Font information. */ + { + iFontInfoList.Add(aFontInfo); + } + +EXPORT_C Record *PdrModelStore::FindFontInfo(String& aLabel) + { + return iFontInfoList.LabelToRecord(aLabel); + } + +EXPORT_C void PdrModelStore::AddResources(PdrResources *aResources) + { + iResourcesList.Add(aResources); + } + +EXPORT_C Record *PdrModelStore::FindResources(String& aLabel) + { + return iResourcesList.LabelToRecord(aLabel); + } + +EXPORT_C void PdrModelStore::AddTranslates(PdrTranslates *aTranslates) +/** Adds printer translations to the store. + +@param aTranslates Translation list. */ + { + iTranslatesList.Add(aTranslates); + } + +EXPORT_C Record *PdrModelStore::FindTranslates(String& aLabel) + { + return iTranslatesList.LabelToRecord(aLabel); + } + + /* +void PdrModelStore::AddExtraInfo(PdrExtraInfo *aInfo) + { + iExtraInfoList.Add(aInfo); + } + +Record* PdrModelStore::FindExtraInfo(String& aLabel) + { + return iExtraInfoList.LabelToRecord(aLabel); + } +*/ + +PdrModelStore::PdrModelStore() + : iPdrStoreFile(NULL), + iModelList(), + iTypefaceFontsList(), + iFontInfoList(), + iResourcesList()//, +// iExtraInfoList() +/** Default constructor. */ + { + } + +PdrModelStore::~PdrModelStore() +/** Default destructor. */ + { + delete iPdrStoreFile; + iModelList.Destroy(); + iTypefaceFontsList.Destroy(); + iFontInfoList.Destroy(); + iResourcesList.Destroy(); + iTranslatesList.Destroy(); +// iExtraInfoList.Destroy(); + }