williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // 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 williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __COECCNTX_H__ williamr@2: #define __COECCNTX_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: /** Interface to allow sharing of graphics settings between controls. williamr@2: williamr@2: The interface provides functions to set the graphics context of a control williamr@2: before drawing. If a control has its iContext member set, the UI Control Framework williamr@2: calls functions defined by this interface when a control is about to be drawn. williamr@2: Developers must implement PrepareContext(), which is called by the framework, williamr@2: to initialise the control's window with the required graphics settings. williamr@2: williamr@2: To use control contexts, a control should inherit from an MCoeControlContext-derived williamr@2: class. To share the context between controls, this control should then be williamr@2: set as the context for all controls that wish to share it. This is done by williamr@2: setting the iContext member of each of the controls, using CCoeControl::SetControlContext() williamr@2: and CCoeControl::CopyControlContextFrom(). williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: class MCoeControlContext williamr@2: { williamr@2: public: williamr@2: IMPORT_C virtual void ActivateContext(CWindowGc& aGc,RDrawableWindow& aWindow) const; williamr@2: IMPORT_C virtual void ResetContext(CWindowGc& aGc) const; williamr@2: IMPORT_C virtual void PrepareContext(CWindowGc& aGc) const; williamr@2: protected: williamr@2: IMPORT_C MCoeControlContext(); williamr@2: williamr@2: private: williamr@2: IMPORT_C virtual void MCoeControlContext_Reserved1(); williamr@2: IMPORT_C virtual void MCoeControlContext_Reserved2(); williamr@2: williamr@2: private: williamr@2: TInt iMCoeControlContext_Reserved1; williamr@2: }; williamr@2: williamr@2: /** Brush and pen graphics context. williamr@2: williamr@2: This class allows an MCoeControlContext to be instantiated and used to set williamr@2: brush and pen properties before drawing a control. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: class CCoeBrushAndPenContext : public CBase, public MCoeControlContext williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CCoeBrushAndPenContext* NewL(); williamr@2: // williamr@2: IMPORT_C void SetBrushStyle(CWindowGc::TBrushStyle aBrushStyle); williamr@2: IMPORT_C void SetBrushColor(TRgb aColor); williamr@2: IMPORT_C void SetBrushBitmap(const CFbsBitmap& aBitmap); williamr@2: IMPORT_C void SetPenColor(TRgb aColor); williamr@2: // williamr@2: IMPORT_C CWindowGc::TBrushStyle BrushStyle() const; williamr@2: IMPORT_C TRgb BrushColor() const; williamr@2: IMPORT_C const CFbsBitmap& BrushBitmap() const; williamr@2: IMPORT_C TRgb PenColor() const; williamr@2: protected: // from MCoeControlContext williamr@2: IMPORT_C void PrepareContext(CWindowGc& aGc) const; williamr@2: private: williamr@2: CCoeBrushAndPenContext(); williamr@2: private: williamr@2: CWindowGc::TBrushStyle iBrushStyle; williamr@2: TRgb iBrushColor; williamr@2: const CFbsBitmap* iBitmap; williamr@2: TRgb iPenColor; williamr@2: }; williamr@2: williamr@2: williamr@2: /** Protocol for sharing brush settings used in graphics operations. williamr@2: williamr@2: It can be used to set brush and pen properties before drawing a control. williamr@2: williamr@2: The mixin provides a default implementation of a control context. It implements williamr@2: PrepareContext() to initialise brush settings used in graphics operations. williamr@2: Its data members are public so that the brush style, brush colour and brush williamr@2: pattern can be set by application code. williamr@2: williamr@2: @publishedAll williamr@2: @deprecated */ williamr@2: class MCoeControlBrushContext : public MCoeControlContext williamr@2: { williamr@2: public: williamr@2: /** Cause vtable & typeinfo to be exported */ williamr@2: IMPORT_C MCoeControlBrushContext(); williamr@2: protected: // from MCoeControlContext williamr@2: IMPORT_C void PrepareContext(CWindowGc& aGc) const; williamr@2: public: williamr@2: /** Brush style. (Not required if iBitmap is set.) */ williamr@2: CWindowGc::TBrushStyle iBrushStyle; williamr@2: /** Brush colour. (Not required if iBitmap is set.) */ williamr@2: TRgb iBrushColor; williamr@2: /** Brush pattern. */ williamr@2: const CFbsBitmap* iBitmap; williamr@2: williamr@2: private: williamr@2: TInt iMCoeControlBrushContext_Reserved1; williamr@2: }; williamr@2: williamr@2: #endif