|  | /*!**************************************************************************** | 
|  |  | 
|  | @file         PVRTPrint3D.h | 
|  | @copyright    Copyright (c) Imagination Technologies Limited. | 
|  | @brief        Code to print text through the 3D interface. | 
|  |  | 
|  | ******************************************************************************/ | 
|  | #ifndef _PVRTPRINT3D_H_ | 
|  | #define _PVRTPRINT3D_H_ | 
|  |  | 
|  | #include "PVRTGlobal.h" | 
|  | #include "PVRTError.h" | 
|  | #include "PVRTMatrix.h" | 
|  | #include "PVRTVector.h" | 
|  | #include "PVRTArray.h" | 
|  |  | 
|  | struct MetaDataBlock; | 
|  | template <typename KeyType, typename DataType> | 
|  | class CPVRTMap; | 
|  |  | 
|  | /**************************************************************************** | 
|  | ** Enums | 
|  | ****************************************************************************/ | 
|  | #define PVRTPRINT3D_MAX_RENDERABLE_LETTERS	(0xFFFF >> 2) | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @enum      EPVRTPrint3DLogo | 
|  | @brief     Logo flags for DisplayDefaultTitle | 
|  | *****************************************************************************/ | 
|  | typedef enum { | 
|  | ePVRTPrint3DLogoNone	= 0x00, | 
|  | ePVRTPrint3DLogoPowerVR = 0x02, | 
|  | ePVRTPrint3DLogoIMG		= 0x04, | 
|  | ePVRTPrint3DSDKLogo		= ePVRTPrint3DLogoPowerVR | 
|  | } EPVRTPrint3DLogo; | 
|  |  | 
|  | /**************************************************************************** | 
|  | ** Constants | 
|  | ****************************************************************************/ | 
|  | const PVRTuint32 PVRTPRINT3D_HEADER			= 0xFCFC0050; | 
|  | const PVRTuint32 PVRTPRINT3D_CHARLIST		= 0xFCFC0051; | 
|  | const PVRTuint32 PVRTPRINT3D_RECTS			= 0xFCFC0052; | 
|  | const PVRTuint32 PVRTPRINT3D_METRICS		= 0xFCFC0053; | 
|  | const PVRTuint32 PVRTPRINT3D_YOFFSET		= 0xFCFC0054; | 
|  | const PVRTuint32 PVRTPRINT3D_KERNING		= 0xFCFC0055; | 
|  |  | 
|  | const PVRTuint32 PVRTPRINT3D_VERSION		= 1; | 
|  |  | 
|  | /**************************************************************************** | 
|  | ** Structures | 
|  | ****************************************************************************/ | 
|  | /*!************************************************************************** | 
|  | @struct    SPVRTPrint3DHeader | 
|  | @brief     A structure for information describing the loaded font. | 
|  | ****************************************************************************/ | 
|  | struct SPVRTPrint3DHeader				// 12 bytes | 
|  | { | 
|  | PVRTuint8	uVersion;				/*!< Version of PVRFont. */ | 
|  | PVRTuint8	uSpaceWidth;			/*!< The width of the 'Space' character. */ | 
|  | PVRTint16	wNumCharacters;			/*!< Total number of characters contained in this file. */ | 
|  | PVRTint16	wNumKerningPairs;		/*!< Number of characters which kern against each other. */ | 
|  | PVRTint16	wAscent;				/*!< The height of the character, in pixels, from the base line. */ | 
|  | PVRTint16	wLineSpace;				/*!< The base line to base line dimension, in pixels. */ | 
|  | PVRTint16	wBorderWidth;			/*!< px Border around each character. */ | 
|  | }; | 
|  | /*!************************************************************************** | 
|  | @struct SPVRTPrint3DAPIVertex | 
|  | @brief A structure for Print3Ds vertex type | 
|  | ****************************************************************************/ | 
|  | struct SPVRTPrint3DAPIVertex | 
|  | { | 
|  | VERTTYPE		sx, sy, sz, rhw; | 
|  | unsigned int	color; | 
|  | VERTTYPE		tu, tv; | 
|  | }; | 
|  |  | 
|  | struct PVRTextureHeaderV3; | 
|  | struct SPVRTPrint3DAPI; | 
|  | struct SPVRTContext; | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @class CPVRTPrint3D | 
|  | @brief Display text/logos on the screen | 
|  | *****************************************************************************/ | 
|  | class CPVRTPrint3D | 
|  | { | 
|  | public: | 
|  | /*!*************************************************************************** | 
|  | @fn           		CPVRTPrint3D | 
|  | @brief     		Init some values. | 
|  | *****************************************************************************/ | 
|  | CPVRTPrint3D(); | 
|  | /*!*************************************************************************** | 
|  | @fn           		~CPVRTPrint3D | 
|  | @brief     		De-allocate the working memory | 
|  | *****************************************************************************/ | 
|  | ~CPVRTPrint3D(); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     		Initialization and texture upload of default font data. | 
|  | Should be called only once for a Print3D object. | 
|  | @param[in]			pContext		Context | 
|  | @param[in]			dwScreenX		Screen resolution along X | 
|  | @param[in]			dwScreenY		Screen resolution along Y | 
|  | @param[in]			bRotate			Rotate print3D by 90 degrees | 
|  | @param[in]			bMakeCopy		This instance of Print3D creates a copy | 
|  | of it's data instead of sharing with previous | 
|  | contexts. Set this parameter if you require | 
|  | thread safety. | 
|  | @return			PVR_SUCCESS or PVR_FAIL | 
|  | *****************************************************************************/ | 
|  | EPVRTError SetTextures( | 
|  | const SPVRTContext	* const pContext, | 
|  | const unsigned int	dwScreenX, | 
|  | const unsigned int	dwScreenY, | 
|  | const bool bRotate = false, | 
|  | const bool bMakeCopy = false); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     		Initialization and texture upload of user-provided font | 
|  | data. Should be called only once for a Print3D object. | 
|  | @param[in]			pContext		Context | 
|  | @param[in]			pTexData		User-provided font texture | 
|  | @param[in]			dwScreenX		Screen resolution along X | 
|  | @param[in]			dwScreenY		Screen resolution along Y | 
|  | @param[in]			bRotate			Rotate print3D by 90 degrees | 
|  | @param[in]			bMakeCopy		This instance of Print3D creates a copy | 
|  | of it's data instead of sharing with previous | 
|  | contexts. Set this parameter if you require | 
|  | thread safety. | 
|  | @return			PVR_SUCCESS or PVR_FAIL | 
|  | *****************************************************************************/ | 
|  | EPVRTError SetTextures( | 
|  | const SPVRTContext	* const pContext, | 
|  | const void * const pTexData, | 
|  | const unsigned int	dwScreenX, | 
|  | const unsigned int	dwScreenY, | 
|  | const bool bRotate = false, | 
|  | const bool bMakeCopy = false); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		SetProjection | 
|  | @param[in]			mProj			Projection matrix | 
|  | @brief     		Sets the projection matrix for the proceeding flush(). | 
|  | *****************************************************************************/ | 
|  | void SetProjection(const PVRTMat4& mProj); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		SetModelView | 
|  | @param[in]			mModelView			Model View matrix | 
|  | @brief     		Sets the model view matrix for the proceeding flush(). | 
|  | *****************************************************************************/ | 
|  | void SetModelView(const PVRTMat4& mModelView); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		SetFiltering | 
|  | @param[in]			eMin	The method of texture filtering for minification | 
|  | @param[in]			eMag	The method of texture filtering for minification | 
|  | @param[in]			eMip	The method of texture filtering for minification | 
|  | @brief     		Sets the method of texture filtering for the font texture. | 
|  | Print3D will attempt to pick the best method by default | 
|  | but this method allows the user to override this. | 
|  | *****************************************************************************/ | 
|  | void SetFiltering(ETextureFilter eMin, ETextureFilter eMag, ETextureFilter eMip); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     		Display 3D text on screen. | 
|  | CPVRTPrint3D::SetTextures(...) must have been called | 
|  | beforehand. | 
|  | This function accepts formatting in the printf way. | 
|  | @param[in]			fPosX		Position of the text along X | 
|  | @param[in]			fPosY		Position of the text along Y | 
|  | @param[in]			fScale		Scale of the text | 
|  | @param[in]			Colour		Colour of the text | 
|  | @param[in]			pszFormat	Format string for the text | 
|  | @return			PVR_SUCCESS or PVR_FAIL | 
|  | *****************************************************************************/ | 
|  | EPVRTError Print3D(float fPosX, float fPosY, const float fScale, unsigned int Colour, const char * const pszFormat, ...); | 
|  |  | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     		Display wide-char 3D text on screen. | 
|  | CPVRTPrint3D::SetTextures(...) must have been called | 
|  | beforehand. | 
|  | This function accepts formatting in the printf way. | 
|  | @param[in]			fPosX		Position of the text along X | 
|  | @param[in]			fPosY		Position of the text along Y | 
|  | @param[in]			fScale		Scale of the text | 
|  | @param[in]			Colour		Colour of the text | 
|  | @param[in]			pszFormat	Format string for the text | 
|  | @return			PVR_SUCCESS or PVR_FAIL | 
|  | *****************************************************************************/ | 
|  | EPVRTError Print3D(float fPosX, float fPosY, const float fScale, unsigned int Colour, const wchar_t * const pszFormat, ...); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		DisplayDefaultTitle | 
|  | @param[in]			pszTitle			Title to display | 
|  | @param[in]			pszDescription		Description to display | 
|  | @param[in]			uDisplayLogo		1 = Display the logo | 
|  | @return			PVR_SUCCESS or PVR_FAIL | 
|  | @brief     		Creates a default title with predefined position and colours. | 
|  | It displays as well company logos when requested: | 
|  | 0 = No logo | 
|  | 1 = PowerVR logo | 
|  | 2 = Img Tech logo | 
|  | *****************************************************************************/ | 
|  | EPVRTError DisplayDefaultTitle(const char * const pszTitle, const char * const pszDescription, const unsigned int uDisplayLogo); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     		Returns the size of a string in pixels. | 
|  | @param[out]		pfWidth				Width of the string in pixels | 
|  | @param[out]		pfHeight			Height of the string in pixels | 
|  | @param[in]			fScale				A value to scale the font by | 
|  | @param[in]			pszUTF8				UTF8 string to take the size of | 
|  | *****************************************************************************/ | 
|  | void MeasureText( | 
|  | float		* const pfWidth, | 
|  | float		* const pfHeight, | 
|  | float				fScale, | 
|  | const char	* const pszUTF8); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     		Returns the size of a string in pixels. | 
|  | @param[out]		pfWidth				Width of the string in pixels | 
|  | @param[out]		pfHeight			Height of the string in pixels | 
|  | @param[in]			fScale				A value to scale the font by | 
|  | @param[in]			pszUnicode			Wide character string to take the | 
|  | length of. | 
|  | *****************************************************************************/ | 
|  | void MeasureText( | 
|  | float		* const pfWidth, | 
|  | float		* const pfHeight, | 
|  | float				fScale, | 
|  | const wchar_t* const pszUnicode); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     	        Returns the 'ascent' of the font. This is typically the | 
|  | height from the baseline of the larget glyph in the set. | 
|  | @return			    The ascent. | 
|  | *****************************************************************************/ | 
|  | unsigned int GetFontAscent(); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     	    Returns the default line spacing (i.e baseline to baseline) | 
|  | for the font. | 
|  | @return			The line spacing. | 
|  | *****************************************************************************/ | 
|  | unsigned int GetFontLineSpacing(); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     		Returns the current resolution used by Print3D | 
|  | @param[out]		dwScreenX		Screen resolution X | 
|  | @param[out]		dwScreenY		Screen resolution Y | 
|  | *****************************************************************************/ | 
|  | void GetAspectRatio(unsigned int *dwScreenX, unsigned int *dwScreenY); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     		Deallocate the memory allocated in SetTextures(...) | 
|  | *****************************************************************************/ | 
|  | void ReleaseTextures(); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     		Flushes all the print text commands | 
|  | *****************************************************************************/ | 
|  | int Flush(); | 
|  |  | 
|  | private: | 
|  | /*!*************************************************************************** | 
|  | @brief             Update a single line | 
|  | @param[in]			fZPos | 
|  | @param[in]			XPos | 
|  | @param[in]			YPos | 
|  | @param[in]			fScale | 
|  | @param[in]			Colour | 
|  | @param[in]			Text | 
|  | @param[in]			pVertices | 
|  | @return            Number of vertices affected | 
|  | *****************************************************************************/ | 
|  | unsigned int UpdateLine(const float fZPos, float XPos, float YPos, const float fScale, const unsigned int Colour, const CPVRTArray<PVRTuint32>& Text, SPVRTPrint3DAPIVertex * const pVertices); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     		Draw a single line of text. | 
|  | @return			true or false | 
|  | *****************************************************************************/ | 
|  | bool DrawLine(SPVRTPrint3DAPIVertex *pVtx, unsigned int nVertices); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		LoadFontData | 
|  | @param[in]			texHeader | 
|  | @param[in]			MetaDataMap | 
|  | @return			    bool	true if successful. | 
|  | @brief     	        Loads font data bundled with the texture file. | 
|  | *****************************************************************************/ | 
|  | bool LoadFontData(const PVRTextureHeaderV3* texHeader, CPVRTMap<PVRTuint32, CPVRTMap<PVRTuint32, MetaDataBlock> >& MetaDataMap); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		ReadMetaBlock | 
|  | @param[in]			pDataCursor | 
|  | @return			    bool	true if successful. | 
|  | @brief     	        Reads a single meta data block from the data file. | 
|  | *****************************************************************************/ | 
|  | bool ReadMetaBlock(const PVRTuint8** pDataCursor); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		FindCharacter | 
|  | @param[in]			character | 
|  | @return			    The character index, or PVRPRINT3D_INVALID_CHAR if not found. | 
|  | @brief     	        Finds a given character in the binary data and returns its | 
|  | index. | 
|  | *****************************************************************************/ | 
|  | PVRTuint32 FindCharacter(PVRTuint32 character) const; | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		CharacterCompareFunc | 
|  | @param[in]			pA | 
|  | @param[in]			pB | 
|  | @return			    PVRTint32 | 
|  | @brief     	        Compares two characters for binary search. | 
|  | *****************************************************************************/ | 
|  | static PVRTint32 CharacterCompareFunc(const void* pA, const void* pB); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		KerningCompareFunc | 
|  | @param[in]			pA | 
|  | @param[in]			pB | 
|  | @return			    VRTint32 | 
|  | @brief     	        Compares two kerning pairs for binary search. | 
|  | *****************************************************************************/ | 
|  | static PVRTint32 KerningCompareFunc(const void* pA, const void* pB); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		ApplyKerning | 
|  | @param[in]			cA | 
|  | @param[in]			cB | 
|  | @param[out]			fOffset | 
|  | @brief     	        Calculates kerning offset. | 
|  | *****************************************************************************/ | 
|  | void ApplyKerning(const PVRTuint32 cA, const PVRTuint32 cB, float& fOffset) const; | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     		Returns the size of a string in pixels. | 
|  | @param[out]		pfWidth				Width of the string in pixels | 
|  | @param[out]		pfHeight			Height of the string in pixels | 
|  | @param[in]			fScale				Font size | 
|  | @param[in]			utf32				UTF32 string to take the size of. | 
|  | *****************************************************************************/ | 
|  | void MeasureText( | 
|  | float		* const pfWidth, | 
|  | float		* const pfHeight, | 
|  | float				fScale, | 
|  | const CPVRTArray<PVRTuint32>& utf32); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @brief     	        Takes an array of UTF32 characters and generates the required mesh. | 
|  | @param[in]			fPosX		X Position | 
|  | @param[in]			fPosY		Y Position | 
|  | @param[in]			fScale		Text scale | 
|  | @param[in]			Colour		ARGB colour | 
|  | @param[in]			UTF32		Array of UTF32 characters | 
|  | @param[in]			bUpdate		Whether to update the vertices | 
|  | @return			    EPVRTError	Success of failure | 
|  | *****************************************************************************/ | 
|  | EPVRTError Print3D(float fPosX, float fPosY, const float fScale, unsigned int Colour, const CPVRTArray<PVRTuint32>& UTF32, bool bUpdate); | 
|  |  | 
|  | //*************************************************************************** | 
|  | // Structures and enums for font data | 
|  | // The following structures are used to provide layout information for associated fonts. | 
|  | //*****************************************************************************/ | 
|  | private: | 
|  | struct CharacterUV | 
|  | { | 
|  | PVRTfloat32 fUL; | 
|  | PVRTfloat32 fVT; | 
|  | PVRTfloat32 fUR; | 
|  | PVRTfloat32 fVB; | 
|  | }; | 
|  |  | 
|  | struct Rectanglei | 
|  | { | 
|  | PVRTint32 nX; | 
|  | PVRTint32 nY; | 
|  | PVRTint32 nW; | 
|  | PVRTint32 nH; | 
|  | }; | 
|  |  | 
|  | #pragma pack(push, 4)		// Force 4byte alignment. | 
|  | struct KerningPair | 
|  | { | 
|  | PVRTuint64 uiPair;			/*!< OR'd pair for 32bit characters */ | 
|  | PVRTint32  iOffset;			/*!< Kerning offset (in pixels) */ | 
|  | }; | 
|  | #pragma pack(pop) | 
|  |  | 
|  | struct CharMetrics | 
|  | { | 
|  | PVRTint16  nXOff;			/*!< Prefix offset */ | 
|  | PVRTuint16 nAdv;			/*!< Character width */ | 
|  | }; | 
|  |  | 
|  | enum | 
|  | { | 
|  | eFilterProc_Min, | 
|  | eFilterProc_Mag, | 
|  | eFilterProc_Mip, | 
|  |  | 
|  | eFilterProc_Size | 
|  | }; | 
|  |  | 
|  | enum ELogoPos | 
|  | { | 
|  | eBottom = 0x01, | 
|  | eTop = 0x02, | 
|  | eLeft = 0x04, | 
|  | eRight = 0x08 | 
|  | }; | 
|  |  | 
|  | private: | 
|  | // Mesh parameters | 
|  | SPVRTPrint3DAPI			*m_pAPI; | 
|  | unsigned int			m_uLogoToDisplay; | 
|  | unsigned short			*m_pwFacesFont; | 
|  | SPVRTPrint3DAPIVertex	*m_pPrint3dVtx; | 
|  | float					m_fScreenScale[2]; | 
|  | unsigned int			m_ui32ScreenDim[2]; | 
|  | bool					m_bTexturesSet; | 
|  | SPVRTPrint3DAPIVertex	*m_pVtxCache; | 
|  | int						m_nVtxCache; | 
|  | int						m_nVtxCacheMax; | 
|  | bool					m_bRotate; | 
|  |  | 
|  | // Cached memory | 
|  | CPVRTArray<PVRTuint32>	m_CachedUTF32; | 
|  | int						m_nCachedNumVerts; | 
|  | wchar_t*				m_pwzPreviousString; | 
|  | char*					m_pszPreviousString; | 
|  | float					m_fPrevScale; | 
|  | float					m_fPrevX; | 
|  | float					m_fPrevY; | 
|  | unsigned int			m_uiPrevCol; | 
|  |  | 
|  | // Font parameters | 
|  | CharacterUV*			m_pUVs; | 
|  | KerningPair*			m_pKerningPairs; | 
|  | CharMetrics*			m_pCharMatrics; | 
|  |  | 
|  | float					m_fTexW; | 
|  | float					m_fTexH; | 
|  |  | 
|  | Rectanglei*				m_pRects; | 
|  | int*					m_pYOffsets; | 
|  | int						m_uiNextLineH; | 
|  |  | 
|  | unsigned int			m_uiSpaceWidth; | 
|  | unsigned int			m_uiNumCharacters; | 
|  | unsigned int			m_uiNumKerningPairs; | 
|  | unsigned int			m_uiAscent; | 
|  | PVRTuint32*				m_pszCharacterList; | 
|  | bool					m_bHasMipmaps; | 
|  |  | 
|  | // View parameters | 
|  | PVRTMat4				m_mProj; | 
|  | PVRTMat4				m_mModelView; | 
|  | bool					m_bUsingProjection; | 
|  | ETextureFilter			m_eFilterMethod[eFilterProc_Size]; | 
|  |  | 
|  | //*************************************************************************** | 
|  | //	API specific code | 
|  | //  The following functions are API specific. Their implementation | 
|  | //	can be found in the directory *CurrentAPI*\PVRTPrint3DAPI | 
|  | //*****************************************************************************/ | 
|  | private: | 
|  | /*!*************************************************************************** | 
|  | @fn           		APIInit | 
|  | @param[in]			pContext | 
|  | @param[in]			bMakeCopy | 
|  | @return			true or false | 
|  | @brief     		Initialization and texture upload. Should be called only once | 
|  | for a given context. | 
|  | *****************************************************************************/ | 
|  | bool APIInit(const SPVRTContext	* const pContext, bool bMakeCopy); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		APIRelease | 
|  | @brief     		Deinitialization. | 
|  | *****************************************************************************/ | 
|  | void APIRelease(); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		APIUpLoadIcons | 
|  | @param[in]			pIMG | 
|  | @return			true or false | 
|  | @brief     		Initialization and texture upload. Should be called only once | 
|  | for a given context. | 
|  | *****************************************************************************/ | 
|  | bool APIUpLoadIcons(const PVRTuint8 * const pIMG, const PVRTuint8 * const pPowerVR); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		APIUpLoadTexture | 
|  | @param[in]			pSource | 
|  | @param[in]			header | 
|  | @param[in]			MetaDataMap | 
|  | @return			true if successful, false otherwise. | 
|  | @brief     		Reads texture data from *.dat and loads it in | 
|  | video memory. | 
|  | *****************************************************************************/ | 
|  | bool APIUpLoadTexture(const PVRTuint8* pSource, const PVRTextureHeaderV3* header, CPVRTMap<PVRTuint32, CPVRTMap<PVRTuint32, MetaDataBlock> >& MetaDataMap); | 
|  |  | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		APIRenderStates | 
|  | @param[in]			nAction | 
|  | @brief     		Stores, writes and restores Render States | 
|  | *****************************************************************************/ | 
|  | void APIRenderStates(int nAction); | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @fn           		APIDrawLogo | 
|  | @param[in]			uLogoToDisplay | 
|  | @param[in]			nPod | 
|  | @brief     		nPos = -1 to the left | 
|  | nPos = +1 to the right | 
|  | *****************************************************************************/ | 
|  | void APIDrawLogo(const EPVRTPrint3DLogo uLogoToDisplay, const int ePos); | 
|  | }; | 
|  |  | 
|  |  | 
|  | #endif /* _PVRTPRINT3D_H_ */ | 
|  |  | 
|  | /***************************************************************************** | 
|  | End of file (PVRTPrint3D.h) | 
|  | *****************************************************************************/ |