--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/wmlengine/src/gdi/include/GDIDevicecontext.h Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,685 @@
+/*
+* Copyright (c) 2003-2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: gdi interface
+*
+*/
+
+
+#ifndef _GDIDEVICECONTEXT_H
+#define _GDIDEVICECONTEXT_H
+
+// INCLUDES
+#include <AknUtils.h>
+#include "nw_object_dynamic.h"
+#include "GDIFont.h"
+#include "BrsrTypes.h"
+#include "BrsrStatusCodes.h"
+
+// CONSTANTS
+enum TGDIDeviceContextFontSizeLevel
+ {
+ EGDIDeviceContextFontSizeLevelAllSmall,
+ EGDIDeviceContextFontSizeLevelSmaller,
+ EGDIDeviceContextFontSizeLevelNormal,
+ EGDIDeviceContextFontSizeLevelLarger,
+ EGDIDeviceContextFontSizeLevelAllLarge
+ };
+
+// fonts to be created : italic12, bold-italic12, plain13, italic13,
+// bold-italic13, plain17, italic17, bold-italic17
+const TInt8 KNumberOfFonts = 8;
+
+// Browser specific font types
+//
+enum TGDIDeviceContextFontNames
+ {
+ ELatinItalic12,
+ ELatinBoldItalic12,
+ ELatinPlain13,
+ ELatinItalic13,
+ ELatinBoldItalic13,
+ ELatinPlain17,
+ ELatinItalic17,
+ ELatinBoldItalic17
+ };
+
+enum TGDISupportedLanguage
+ {
+ EElafLanguage,
+ EThaiLanguage,
+ EJapaneseLanguage,
+ EChinesePRCLanguage,
+ EChinaHKTWLanguage
+ };
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+* CGDIDeviceContext
+*
+* @lib BrowserEngine.dll
+* @since 2.1
+*/
+class CGDIDeviceContext : public CBase
+{
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @return CGDIDeviceContext*
+ */
+ static CGDIDeviceContext* NewL( void* aGraphicsContext, CView* aOocEpoc32View );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CGDIDeviceContext();
+
+ public: // New functions
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void DrawImage( const NW_GDI_Point2D_t* aLocation,
+ const NW_GDI_Rectangle_t* aRectangle,
+ NW_GDI_ImageBlock_t* aImageBlock );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TBrowserStatusCode ScaleImage( const NW_GDI_Dimension3D_t* aSize,
+ const NW_GDI_ImageBlock_t* aImageBlock,
+ NW_GDI_ImageBlock_t* aScaledImageBlock );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void DrawPixel( const NW_GDI_Point2D_t* aLocation );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TBrowserStatusCode DrawPolyline( NW_GDI_Metric_t aNumPoints,
+ const NW_GDI_Point2D_t* aPoints,
+ TBool aClosed );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void DrawRectangle( const NW_GDI_Rectangle_t* aRectangle );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+
+ TBrowserStatusCode DrawText( const NW_GDI_Point2D_t* aLocation,
+ const NW_Text_t* aText,
+ CGDIFont* aGDIFont,
+ NW_GDI_Metric_t aSpacing,
+ NW_GDI_TextDecoration_t aDecoration,
+ NW_GDI_FlowDirection_t aDir,
+ NW_GDI_Metric_t aWidth );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void FillRectangle( const NW_GDI_Rectangle_t* aRectangle );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TBrowserStatusCode GetColorPalette( NW_GDI_ColorPalette_t* aColPalette );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ NW_GDI_Color_t BackgroundColor () const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ NW_GDI_Rectangle_t ClipRect () const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ const NW_GDI_Rectangle_t* DisplayBounds () const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TUint8 DisplayDepth() const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ NW_GDI_Pattern_t FillPattern() const;
+
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TBrowserStatusCode GetFlowDirection( NW_Text_t* aText,
+ NW_GDI_FlowDirection_t* aFlowDirection) const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ NW_GDI_Color_t ForegroundColor() const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ NW_GDI_Pattern_t LinePattern() const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ NW_GDI_Metric_t LineWidth() const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ const NW_GDI_Point2D_t* Origin() const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ NW_GDI_PaintMode_t PaintMode() const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void* GetScaledCFont( CGDIFont* aFont ) const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ NW_GDI_TextDirection_t TextDirection() const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TBrowserStatusCode GetTextExtent( const NW_Text_t* aText,
+ CGDIFont* aGDIFont,
+ NW_GDI_Metric_t aSpacing,
+ NW_GDI_FlowDirection_t aFlowDirection,
+ NW_GDI_Dimension2D_t* aExtent) const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void PreDraw();
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void PostDraw( TBool aDrawNow );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SetBackgroundColor( NW_GDI_Color_t aColor );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SetClipRect( const NW_GDI_Rectangle_t* aClipRect );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SetFillPattern( NW_GDI_Pattern_t aFillPattern );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SetForegroundColor( NW_GDI_Color_t aColor );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SetLinePattern( NW_GDI_Pattern_t aLinePattern );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SetLineWidth( NW_GDI_Metric_t aLineWidth );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SetOrigin( const NW_GDI_Point2D_t* aOrigin );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SetPaintMode( NW_GDI_PaintMode_t aPaintMode );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SetTextDirection( NW_GDI_TextDirection_t aTextDirection );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SetDisplayBounds( const NW_GDI_Rectangle_t* aDisplaybounds );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ CGDIFont* CreateFont( const NW_Text_t* aFamily,
+ TGDIFontStyle aStyle,
+ TUint8 aSizeInPixels,
+ TUint16 aWeight,
+ TGDIFontVariant aVariant) const;
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void DrawLine( NW_GDI_Point2D_t aStartPoint, NW_GDI_Point2D_t aEndPoint );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TBool SetFontSizeLevel();
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void ChangeFontSize( CGDIFont* aFont );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void GetHighlightColor( NW_GDI_Color_t* aColor );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SwitchAgainstBG( NW_GDI_Color_t* aColor );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TBrowserStatusCode SplitText( NW_Text_t* aText,
+ CGDIFont* aGDIFont,
+ NW_GDI_Metric_t aConstraint,
+ NW_GDI_Metric_t aSpacing,
+ NW_GDI_FlowDirection_t aFlowDirection,
+ NW_Text_Length_t* aLength,
+ TUint8 aMode );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TBrowserStatusCode GetSubstringExtent( const NW_Text_t* aText,
+ CGDIFont* aGDIFont,
+ NW_Text_Length_t aStart,
+ NW_Text_Length_t aLength,
+ NW_GDI_Metric_t aSpacing,
+ NW_GDI_FlowDirection_t aFlowDirection,
+ NW_GDI_Dimension2D_t* aExtent );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param TFontSpec which specifies the font family and the height of the font
+ * the caller of this method wishes to find.
+ * @return pointer to a CFont object which will have been found in the iFontCache
+ * or have been created if the font was not already in the cache
+ */
+ CFont* FindFont( TFontSpec aFontSpec );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SetRemoveNbsp( TBool aFlag );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TBool RemoveNbsp();
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SetGraphicsContext( void* aGraphicsContext );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void SetFontSizeLevel( TGDIDeviceContextFontSizeLevel aFontSizeLevel );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ EVariantFlag VariantFlag();
+
+ /**
+ * This method
+ * @since 2.x
+ * @param
+ * @return
+ */
+ inline CWsScreenDevice* WsScreenDevice() { return iWsScreenDev; };
+
+ /**
+ * This method
+ * @since 2.x
+ * @param
+ * @return
+ */
+ TGDISupportedLanguage SupportedLanguage();
+
+ private: // New functions
+
+ /**
+ * C++ default constructor.
+ */
+ CGDIDeviceContext();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ TBrowserStatusCode ConstructL( void* aGraphicsContext, CView* aOocEpoc32View );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ NW_GDI_Color_t SwapColorBytes( NW_GDI_Color_t aColor );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ CBitmapContext* Epoc32GraphicsContext();
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TBrowserStatusCode WordWrap ( NW_Text_t* aText,
+ CGDIFont* aGDIFont,
+ NW_GDI_Metric_t aConstraint,
+ NW_GDI_Metric_t aSpacing,
+ NW_GDI_FlowDirection_t aFlowDirection,
+ NW_Text_Length_t* aLength );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TBrowserStatusCode SplitAtNewline ( NW_Text_t* aText,
+ CGDIFont* aGDIFont,
+ NW_GDI_Metric_t aCconstraint,
+ NW_GDI_Metric_t aSpacing,
+ NW_GDI_FlowDirection_t aFlowDirection,
+ NW_Text_Length_t* aLength );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TBrowserStatusCode Truncate ( NW_Text_t* aText,
+ CGDIFont* aGDIFont,
+ NW_GDI_Metric_t aConstraint,
+ NW_GDI_Metric_t aSpacing,
+ NW_GDI_FlowDirection_t aFlowDirection,
+ NW_Text_Length_t* aLength );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ TBrowserStatusCode ScaleBitmap( CFbsBitmap* aBitmap,
+ CFbsBitmap** aScaledBitmap,
+ TRect* aRect );
+
+ /**
+ * This method
+ * @since 2.1
+ * @param
+ * @return
+ */
+ void InitializeGraphicsContext();
+
+ /**
+ * Checks whether or not a line split (word wrap) can occur between the two
+ * characters specified.
+ * @since 2.6
+ * @param aChar1 First character.
+ * @param aChar2 Second character.
+ * @return ETrue if split can occur between the two characters; else, EFalse.
+ */
+ TBool CanSplit(TText16 aChar1, TText16 aChar2);
+
+ /**
+ * Checks whether or not the two consecutive characters are within a single
+ * Thai script "cell".
+ * @since 2.6
+ * @param aChar1 First character.
+ * @param aChar2 Second character.
+ * @return ETrue if is in a single Thai script "cell"; else, EFalse.
+ */
+ TBool
+ IsThaiCell( TText16 aChar1, TText16 aChar2 );
+
+
+ private: // Data
+
+ //
+ EVariantFlag iVariantFlag;
+ //
+ CFontCache* iFontCache;
+ //
+ CWsScreenDevice* iWsScreenDev;
+ // used for removing nbsp in vertical-layout mode
+ TBool iRemoveNbsp;
+ // is a CBitmapContext*
+ void* iGraphicsContext;
+ //
+ NW_GDI_Point2D_t iOrigin;
+ //
+ TGDIDeviceContextFontSizeLevel iFontSizeLevel;
+ //
+ NW_GDI_Pattern_t iFillPattern;
+ //
+ NW_GDI_Pattern_t iLinePattern;
+ //
+ NW_GDI_Metric_t iLineWidth;
+ //
+ NW_GDI_PaintMode_t iPaintMode;
+ //
+ NW_GDI_TextDirection_t iTextDirection;
+ //
+ NW_GDI_Color_t iForegroundColor;
+ //
+ NW_GDI_Color_t iBackgroundColor;
+ //
+ NW_GDI_Rectangle_t iDisplayBounds;
+ //
+ NW_GDI_Rectangle_t iClipRect;
+ //
+ CView* iOocEpoc32View;
+ //
+ NW_Int32 iResourceFileOffset;
+ //
+ TGDISupportedLanguage iSupportedLanguage;
+};
+
+#endif // _GDIDEVICECONTEXT_H