diff -r 08cc4cc059d4 -r 59ea2209bb67 ImagePrint/ImagePrintEngine/DeviceProtocols/xhtmlfilecomposer/inc/cxhtmlfilecomposer.h --- a/ImagePrint/ImagePrintEngine/DeviceProtocols/xhtmlfilecomposer/inc/cxhtmlfilecomposer.h Fri Jun 11 16:24:10 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,342 +0,0 @@ -/* -* Copyright (c) 2002-2007 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: Defines the CXhtmlFileComposer class. -* -*/ - - -#ifndef CXHTMLFILECOMPOSER_H -#define CXHTMLFILECOMPOSER_H - -#include -#include -#include - -#include "xfctemplates.h" -#include "xhtmlfilecomposerconst.h" -#include "cimageinfo.h" - -/** -* @class CXhtmlFileComposer -* @brief Implements the printing job compose to a XHTML file. -*/ - -/** -* @example ExampleOfCreateXhtmlFile.cpp -* This example -* @li creates a list of images to be included in XHTML-file as CImageInfo classes -* @li creates a new instance of this class -* @li calls the CreateXhtmlFileL method to create the physical file -*/ - -class CXhtmlFileComposer : public CBase - { - public: - - /** - * @enum TMeasureUnit - * - * The measure type is used in XHTML file for describing the unit for dimensions like - * page, frame and image sizes, frame positions at the page etc. - * Depending of the paper size type the two units of the measure is used: inches and millimeters. - */ - enum TMeasureUnit - { - EUAInches, ///<@brief Inch unit identifier. - EUAMillis ///<@brief Millimeter unit identifier. - }; - - public: - - /** NewL - * @brief Creates a new instance of XHTML file composer. - * @param aPath The path the XHTML file will be located.\n - * If @a aPath is empty, the @ref KXFPDefaultResultPath is used to open the file - * server session and to create path. Otherway the file name given in method - * @ref CreateXhtmlFileL can be the name of the file without path. - * @return Pointer to the instance. - */ - IMPORT_C static CXhtmlFileComposer* NewL(const TDesC& aPath); - - /** NewLC - * @brief Creates a new instance of XHTML file composer and leaves it in the cleanup stack. - * @param aPath The path the XHTML file will be located.\n - * If @a aPath is empty, the @ref KXFPDefaultResultPath is used to open the file - * server session and to create path. Otherway the file name given in method - * @ref CreateXhtmlFileL can be the name of the file without path. - * @return Pointer to the instance. - */ - IMPORT_C static CXhtmlFileComposer* NewLC(const TDesC& aPath); - - /** ~CXhtmlFileComposer - * @brief Destructor. - */ - IMPORT_C ~CXhtmlFileComposer(); - - /** CreateXhtmlFileL - * @brief Writes the XHTML-Print document of the job according to the given parameters. - * @param aImages Array of the images to write in file - * @param aLayout Jobs' Number up setting - * @param aPaperSize Jobs' Media size setting - * @param aQuality Jobs' Quality setting not implemented - * @param aXhtmlPrintFile The name of the file to generate. The file name can be given - * without the path, when the file is located in the @a aPath given when the - * instance of this class is created. The @a aXhtmlPrintFile can be also given - * with the path, but then the path must already exist. - * @param aPageCount Returns the number of pages to print - */ - IMPORT_C void CreateXhtmlFileL(const RArray& aImages, const TInt aLayout, - const TInt aPaperSize, const TInt aQuality, - const TDesC& aXhtmlPrintFile, TInt& aPageCount, TBool aDataFile = EFalse); - - - protected: - - /** ConstructL - * @brief Symbian second phase constructor. - * @param aPath The path the XHTML file will be located.\n - * If @a aPath is empty, the @ref KXFPDefaultResultPath is used to open the file - * server session and the path is created. This ensures the argument @a aXhtmlPrintFile - * of the method @ref CreateXhtmlFileL can be given without path. - */ - void ConstructL(const TDesC& aPath); - - - private: - - /** CXhtmlFileComposer - * @brief C++ constructor - */ - CXhtmlFileComposer(); - - /** UnitToPixel - * @brief Converts current unit to pixels. - * @param aValue Inch/millimeter value - * @return Pixel value - */ - IMPORT_C TReal UnitToPixel(TReal aValue); - - /** UnitToPixel - * @brief Converts current unit to pixels. - * @param aValue Inch/millimeter value - * @return Pixel value - */ - IMPORT_C TSizeReal UnitToPixel(TSizeReal aValue); - - /** PixelToUnit - * @brief Converts pixels to current unit. - * @param aValue pixel value - * @return Inch/millimeter value - */ - IMPORT_C TReal PixelToUnit(TReal aValue); - - /** PixelToUnit - * @brief Converts pixels to current unit. - * @param aValue pixel value - * @return Inch/millimeter value - */ - IMPORT_C TSizeReal PixelToUnit(TSizeReal aValue); - - /** ReadTemplateL - * @brief Reads the template file in iFileBuf - */ - void ReadTemplateFileL(); - - /** GetRatioL - * @brief Counts the croping and scaling of the image - * @param aNewSize Cropped and scaled size for the image - * @param aImageSize Full string to define the margin in XHTML file - */ - void GetRatioL(TSizeReal &aNewSize, TSizeReal aImageSize); - - /** ComposeUnitL - * @brief Converts the template to current unit (millimeters or inches) in member buffer. - */ - void ComposeUnitL(); - - /** ComposeTemplateL - * @brief Replaces the template with string value in member buffer - * @param aStr String to convert for - * @param aTemplate Template to convert - */ - void ComposeTemplateL(const TDesC8 &aStr, const TDesC8 &aTemplate); - - /** ComposeTemplateL - * @brief Replaces the template with number value in member buffer - * @param aValue Number to convert for - * @param aTemplate Template to convert - */ - void ComposeTemplateL(const TInt aValue, const TDesC8 &aTemplate); - - /** ComposeFileL - * @brief Composes the data in the template in member buffer - * @param aImageName Image name and path - * @param aImgSize Image size - */ - void ComposeFileL(const TDes8 &aImageName, TSizeReal aImgSize, TBool aDataFile = EFalse); - - /** PageData - * @brief Collects the paper size related data to page arguments - * @param aPaperSize Media size - */ - void PageData(TInt aPaperSize); - - /** LayoutData - * @brief Collects the layout related data to image frame arguments - * @param aLayout Layout - * @param aPositions Array of the image positions on the page - */ - void LayoutData(TInt aLayout, RArray &aPositions); - - /** FinalizeBufferL - * @brief Trims the member buffer tail. Replacing the template strings from - * the buffer makes the data length in the buffer vary and generates - * rubbish in the end of buffer. - * @return Pointer to the buffer data. - */ - TPtrC8 FinalizeBufferL(); - - /** SetPageTypeL - * @brief Creates a new XHTML div for page. Last/only one must be always @c page_last. - */ - void SetPageTypeL(); - - /** GetTemplateStringL - * @brief Reads the requested element's template for the XHTML file. - * @param aStart Start marker tag for the element - * @param aEnd End marker tag for the element - * @param aTemplate Reference to the template element read - * @return Pointer to the template element read - */ - TPtrC8 GetTemplateStringL(const TDesC8& aStart, const TDesC8& aEnd, TDes8& aTemplate); - - /** AddTemplateStringL - * @brief Adds the template element in XHTML buffer - * @param const TDesC8& The template element to add - * @param const TDesC8& A marker tag to where to add the element - */ - void AddTemplateStringL(const TDesC8& aTemplate,const TDesC8& aTag); - - /** GetImageSize - * @brief Returns the size in pixels of the image file - * @param CImageInfo Image's info - * @return Image size - */ - TSizeReal GetImageSizeL(CImageInfo aImage); - - /** AddPageL - * @brief Adds the new page element in XHTML template if last one is full - * @param aCurrentImage Index of the current image - * @param aPositionIndex Reference to the index of the image position at page - * @param aPageCount Reference to the page counter - * @return True if page added, False if not. - */ - TBool AddPageL(TInt aCurrentImage, TInt& aPositionIndex, TInt& aPageCount); - - /** CreateMatrix - * @brief Creates a list of positions at page for the grid of images. - * @param aRows Number of rows at one page - * @param aColumns Number of columns at one page - * @param aPortrait Orientation of the paper vs. images - * @param aPositions Reference to the array of the positions - */ - void CreateMatrix(TInt aRows, TInt aColumns, RArray& aPositions); - - /** GetImageNameL - * @brief Returns the name of the image for IMG tag. - * @param aImageInfo Image details - * @param aImageName Reference to the image name - */ - void GetImageNameL(CImageInfo aImageInfo, TDes8 &aImageName, TBool aDataFile = EFalse); - - /** SizeAndOrientationL - * @brief Returns the size and orientation of the image. - * @param aImageInfo Image details - * @param aImageSize Reference to the image size - * @param aFramePortrait Returns True if image is portrait, otherway False - */ - void SizeAndOrientationL(const CImageInfo aImageInfo, TSizeReal& aImageSize, TBool& aFramePortrait); - - /** ComposePositionL - * @brief Composes the position string identifier values in XHTML file. - * @param aPositionIndex index of the position to compose - * @param aPositions The array of the positions - */ - void ComposePositionL(TInt aPositionIndex, RArray& aPositions); - - /** FormatReal - * @brief Composes the position string identifier values in XHTML file. - * @param aNumber float number to convert - * @param aString Converted string type of "%f<>" - */ - void FormatReal(TRealX aNumber, TDes8& aString); - - private: - - /** @var TSizeReal iPaperSize - * Paper size to print */ - TSizeReal iPaperSize; - - /** @var TInt iPaperType - * Measurement unit (millimeters or inches) in XHTML file */ - TInt iPaperType; - - /** @var TReal iPageMargin - * Marginals at the page */ - TReal iPageMargin; - - /** @var TSizeReal iImageFrame - * Frame to contain an image */ - TSizeReal iImageFrame; - - /** @var HBufC8* iFileBuf - * Buffer to read the template file */ - HBufC8* iFileBuf; - - /** @var RFs iFsSession - * File server session */ - RFs iFsSession; - - /** @var TInt iImagesPerPage - * Number of the images at one page */ - TInt iImagesPerPage; - - /** @var TBool iImagePortrait - * The orientation of the image. TRUE if portrait, FALSE if landscape */ - TBool iImagePortrait; - - /** @var TBool iPagePortrait - * The orientation of the page. TRUE if portrait, FALSE if landscape */ - TBool iPagePortrait; - - /** @var TBlock iPageTemplate - * Page element template of the XHTML file */ - TBlock iPageTemplate; - - /** @var TBlock iFrameTemplate - * Frame element template of the XHTML file */ - TBlock iFrameTemplate; - - /** @var TBlock iPositionTemplate - * Image position element template of the XHTML file */ - TBlock iPositionTemplate; - - /** @var TBlock iImageTemplate - * Image element template of the XHTML file */ - TBlock iImageTemplate; - }; - -#endif // CXHTMLFILECOMPOSER_H - -// End of File