diff -r 2fe1408b6811 -r e1b950c65cb4 epoc32/include/gulbordr.h --- a/epoc32/include/gulbordr.h Tue Mar 16 16:12:26 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,348 +0,0 @@ -// 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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members -// which accompanies this distribution, and is available -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// - -#if !defined(__GULBORDR_H__) -#define __GULBORDR_H__ - -#if !defined(__E32DEF_H__) -#include -#endif - -#if !defined(__GULDEF_H__) -#include -#endif - -#if !defined(__GDI_H__) -#include -#endif - - -class TGulBorder -/** Draws a border around a control. - -The rectangular areas enclosed by borders are typically working areas of the -graphics context so the class supplies a number of methods which describe -how it occupies the area. - -A distinction between descriptive and logical borders is made. For descriptive -borders the appearance of the border is known and fixed. The type of border -drawn is determined by flags which describe how it is to be constructed. These -flags can be combined to achieve many different effects, and standard combinations -have been supplied (see the TBorderType enumeration). For logical borders -the use of the border is known and fixed but the appearance is not specified. -The appearance and sizing functions must be supplied in custom written code. -@publishedAll -@released*/ - { -public: - class TColors - /** Represents the colours used within the border and for the optional single pixel - border outlines. - - These colours are stored using TRgb values. - - An object of this type can be populated using ColorUtils::GetRgbDerivedBorderColors(). - - The colours used inside the border are derived from iBack, the border's background - colour, so that border colours can be lighter or darker shades of the colour - used in the main body of the control they enclose. Different combinations - of light and dark shades are used to draw opposite border sides, to achieve - a raised or sunken effect. */ - { - public: - IMPORT_C TColors(); - public: - /** The line colour. - - This is the colour used to draw the outlines on either side of the border. - Not all border types have an outline. By default, KRgbBlack. */ - TRgb iLine; - /** The background colour for the border. - - The other colours used in the border are derived from this. - - By default, KRgbWhite. */ - TRgb iBack; - /** The lightest colour. - - By default, KRgbWhite. */ - TRgb iLight; - /** The mid light colour. - - This colour is midway between iBack and iLight. By default, KRgbWhite. */ - TRgb iMidlight; - /** The mid dark colour. - - This colour is midway between iBack and iDark. By default, KRgbDarkGray. */ - TRgb iMid; - /** The darkest colour. - - By default, KRgbDarkGray. */ - TRgb iDark; - /** Not used. */ - TRgb iInternalBack; - }; - -public: - /** Defines the border outline style. - - Note that not all border types have an outline. */ - enum TOutlineStyle - { - /** The border has a single pixel outline, either solid (by default) or dotted. */ - EWithOutline=0x01, - /** The border outline is drawn using a dotted pen. */ - EDottedOutline=0x02 - }; - - /** Defines whether or not the border has a single pixel interior border. - - By default it does not. */ - enum TInlineStyle - { - /** The border has an interior border. */ - EWithInline=0x04 - }; - - /** Defines the 3D border style. */ - enum T3DStyle - { - /** A flat border. */ - EFlat=0x10, - /** A 3D effect sunken border. */ - ESunken=0x20, - /** A 3D effect raised border. */ - ERaised=0x40 - }; - - /** Defines the border's construction style. */ - enum TConstructionStyle - { - /** One step border construction. - - This type of border is drawn using the mid light and mid dark colours on opposite - sides of the border. */ - EOneStep=0x100, - /** Two step border construction. - - This type of border uses light and dark colours for the main border frame - (or mid light for the flat border), and an additional half frame using mid - light or mid dark colours. */ - ETwoStep=0x200, - /** Three step border construction. - - This type of border is drawn with an outer frame, a repeating one pixel band - in mid tones, and an inner frame. */ - EThreeStep=0x400, - /** Inverted two step border construction. - - This is the same as ETwoStep except that for raised and sunken borders, the - additional half frame is drawn on the opposite side to that used in ETwoStep. */ - EInvertedTwoStep=0x800 - }; - - /** Defines the number of pixels to add to the border thickness. - - The border thickness is the central part of the border, coloured in the mid-tone - highlights and lowlights. - - For two step-constructed borders, the additional pixels are only added to - either the top left or bottom right hand sides. */ - enum TThickness - { - /** The border has one extra pixel. */ - EAddOnePixel=0x1000, - /** The border has two extra pixels. */ - EAddTwoPixels=0x2000, - /** The border has four extra pixels. */ - EAddFourPixels=0x4000 - }; - - /** Defines the number of pixels that are removed to produce rounded corners. */ - enum TRounding - { - /** Border rounded by removing one extra pixel. */ - EAddOneRoundingPixel=0x10000, - /** Border rounded by removing two extra pixels. */ - EAddTwoRoundingPixels=0x20000, - /** Border rounded by by removing four extra pixels. */ - EAddFourRoundingPixels=0x40000 - }; -private: - enum TNull - { - ENoBorder=0x00 - }; - - enum TLegacyStyle - { - EShallow=EAddOnePixel, - EDeep=EAddTwoPixels, - EThick=EAddFourPixels, - EHorizontal=0x100000, - EWithOverlap=0x200000, - EGray=0x400000, - EBlack=0x80000 - }; - - enum TLogicalStyle - { - ELogical=0x800000 - }; -public: - /** For logical borders, defines whether the border encloses a window, a container - control or a control. */ - enum TLogicalFamily - { - /** Logical border around a window. */ - EWindowFamily=ELogical|0x1, - /** Logical border around a container. */ - EContainerFamily=ELogical|0x2, - /** Logical border around a control. */ - EControlFamily=ELogical|0x3 - }; -public: - /** Defines the descriptive border types. */ - enum TBorderType - { - /** No border. */ - ENone=ENoBorder, - /** Border is a 1 pixel wide grey outline. */ - ESingleGray=EWithOutline|EGray, - /** Border is a 1 pixel wide black outline. */ - ESingleBlack=EWithOutline|EBlack, - /** Border is a 1 pixel wide dotted outline. */ - ESingleDotted=EWithOutline|EDottedOutline, - /** A 3D raised border, with 1 pixel thickness. */ - EShallowRaised=ERaised|EOneStep|EAddOnePixel, - /** A 3D sunken border, with 1 pixel thickness. */ - EShallowSunken=ESunken|EOneStep|EAddOnePixel, - /** A 3D raised border, with outline, and 2 pixel thickness. */ - EDeepRaised=EWithOutline|ERaised|EOneStep|EAddTwoPixels, - /** The same as EDeepRaised. */ - EDeepRaisedWithOutline=EWithOutline|ERaised|EOneStep|EAddTwoPixels, - /** A 3D sunken border, with outline, and 2 pixel thickness. */ - EDeepSunken=EWithOutline|ESunken|EOneStep|EAddTwoPixels, - /** The same as EDeepSunken. */ - EDeepSunkenWithOutline=EWithOutline|ESunken|EOneStep|EAddTwoPixels, - /** A 3D raised border, with outline, and 3 pixel thickness. */ - EThickDeepRaisedWithOutline=EWithOutline|ERaised|EOneStep|EAddOnePixel|EAddTwoPixels, - /** A 3D raised border, with 2 pixels thickness and no outline on the left and - right hand sides. */ - EVerticalBar=ERaised|EOneStep|EAddTwoPixels|EWithOverlap, - /** A 3D raised border, with 2 pixels thickness and no outline on the top and bottom. */ - EHorizontalBar=ERaised|EOneStep|EAddTwoPixels|EHorizontal|EWithOverlap - }; - - /** Defines the logical border types. */ - enum TLogicalType - { - // Window family - /** Raised border around a window. */ - EWindow=EWindowFamily|ERaised, - // Container family - /** Flat border around a container. */ - EFlatContainer=EContainerFamily|EFlat, - /** Raised border around a container. */ - ERaisedContainer=EContainerFamily|ERaised, - /** Sunken border around a container. */ - ESunkenContainer=EContainerFamily|ESunken, - // Control Family - /** Flat border around a control. */ - EFlatControl=EControlFamily|EFlat, - /** Raised border around a control. */ - ERaisedControl=EControlFamily|ERaised, - /** Sunken border around a control. */ - ESunkenControl=EControlFamily|ESunken, - /** Raised border around a control with focus. */ - EFocusedRaisedControl=EControlFamily|ERaised|0x100, - /** Sunken border around a control with focus. */ - EFocusedSunkenControl=EControlFamily|ESunken|0x100 - }; - -public: - IMPORT_C TGulBorder(); - IMPORT_C TGulBorder(TBorderType aType); - IMPORT_C TGulBorder(TBorderType aType,TGulAdjacent aAdjacent); - IMPORT_C TGulBorder(TInt aType); - IMPORT_C TGulBorder(TInt aType,TGulAdjacent aAdjacent); - IMPORT_C void Draw(CGraphicsContext& aGc,const TRect& aRect,const TColors& aBorderColors) const; - IMPORT_C void Draw(CGraphicsContext& aGc,const TRect& aRect) const; - IMPORT_C TRect InnerRect(const TRect& aOuterRect) const; - IMPORT_C TRect OuterRect(const TRect& aInnerRect) const; - IMPORT_C void SetType(TInt aType); - IMPORT_C void SetAdjacent(TInt aAdjacent); - IMPORT_C TSize SizeDelta() const; - IMPORT_C TMargins Margins() const; - IMPORT_C TBool HasBorder() const; - IMPORT_C TInt Adjacent() const; - IMPORT_C TInt Type() const; -public: // Internal to Symbian - IMPORT_C TInt Thickness() const; - IMPORT_C TInt Rounding() const; -private: - TBool IsSunken() const; - TInt Depth() const; - void DrawOutline(CGraphicsContext& aGc,const TRect& aRect,TRgb aColor) const; - void DrawRectOutline(CGraphicsContext& aGc,const TRect& aRect) const; - void DrawInline(CGraphicsContext& aGc,const TRect& aRect,TRgb aColor) const; - TMargins OutlineMargins() const; - TMargins BorderMargins() const; - TMargins InlineMargins() const; - TRect OutlineInnerRect(const TRect& aOuterRect) const; - TRect BorderInnerRect(const TRect& aOuterRect) const; - TInt BorderRounding() const; - TInt InlineRounding() const; - void DrawOneStep(CGraphicsContext& aGc,const TRect& aRect,TRgb aMidlight,TRgb aMid) const; - void DrawTwoStep(CGraphicsContext& aGc,const TRect& aRect,TRgb aLight,TRgb aMidlight,TRgb aMid,TRgb aDark) const; - void DrawInvertedTwoStep(CGraphicsContext& aGc,const TRect& aRect,TRgb aLight,TRgb aMidlight,TRgb aMid,TRgb aDark) const; - void DrawThreeStep(CGraphicsContext& aGc,const TRect& aRect,TRgb aBack,TRgb aLight,TRgb aMidlight,TRgb aMid,TRgb aDark) const; - void DrawTopLeft(CGraphicsContext& aGc,const TRect& aRect,TRgb aColor,const TInt aRounding) const; - void DrawRoundedTopLeft(CGraphicsContext& aGc,const TRect& aRect,const TInt aRounding) const; - void DrawBottomRight(CGraphicsContext& aGc,const TRect& aRect,TRgb aColor,const TInt aRounding) const; - void DrawRoundedBottomRight(CGraphicsContext& aGc,const TRect& aRect,const TInt aRounding) const; - void DrawRoundedCorner(CGraphicsContext& aGc,const TPoint& aStart,const TInt aRoundedLength, const TBool aUp, const TBool aRight) const; - TInt RoundingMargin(const TInt aRoundedLength) const; - inline TInt InternalType() const; - void TranslateLegacyTypes(); -private: - TInt iType; - }; - -/** -The MGulLogicalBorder class specifices an interface for logical borders. - -@internalTechnology*/ -class MGulLogicalBorder - { -public: - virtual void Draw(const TGulBorder& aBorder,CGraphicsContext& aGc, const TRect& aRect, const TGulBorder::TColors& aBorderColors) const=0; - virtual TMargins Margins(const TGulBorder& aBorder) const=0; -private: - IMPORT_C virtual void MGulLogicalBorderReserved(); - }; - -/** -The GulTls class sets and gets the thread local storage for EGul. - -@internalTechnology*/ -class GulTls - { -public: - IMPORT_C static void SetLogicalBorder(MGulLogicalBorder* aLogicalBorder); - IMPORT_C static const MGulLogicalBorder* LogicalBorder(); - }; - -#endif