author | Gareth Stockwell <gareth.stockwell@accenture.com> |
Fri, 22 Oct 2010 11:38:29 +0100 | |
branch | bug235_bringup_0 |
changeset 206 | c170e304623f |
parent 0 | 5d03bc08d59c |
permissions | -rw-r--r-- |
// Copyright (c) 2008-2009 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: // #include "graphicscontextstate.h" #include "cliwin.h" /*------------------------------------------------------------------------------ Description: Resets internal status of the graphics context to pre-defined values. -----------------------------------------------------------------------------*/ void TInternalGcStatus::ResetInternalStatus(CWsClientWindow* aWin) { iDrawMode = CGraphicsContext::EDrawModePEN; iPenColor = KRgbBlack; iBrushColor = aWin ? aWin->BackColor() : KRgbWhite; iPenStyle = CGraphicsContext::ESolidPen; iBrushStyle = CGraphicsContext::ENullBrush; iPenSize = TSize(1,1); iFontHandle = NULL; iUnderline = EUnderlineOff; iStrikethrough = EStrikethroughOff; iBrushPatternHandle = NULL; iBrushOrigin = TPoint(0,0); iCharExcessWidth = 0; iCharNumChars = 0; iWordExcessWidth = 0; iWordNumChars = 0; iOrigin = TPoint(0,0); iShadowColor = KRgbGray; } /*------------------------------------------------------------------------------ Description: Helper function to retrieve current data from the given buffer and set graphics context. -----------------------------------------------------------------------------*/ void TInternalGcStatus::InternalizeGcAttributesL(MWsGraphicsContext* aGc, RReadStream& aReadStream) { aGc->SetDrawMode((MWsGraphicsContext::TDrawMode)(aReadStream.ReadUint8L())); MWsGraphicsContext::TBrushStyle brushStyle = (MWsGraphicsContext::TBrushStyle) (aReadStream.ReadUint8L()); aGc->SetPenStyle((MWsGraphicsContext::TPenStyle) (aReadStream.ReadUint8L())); TRgb penColor; penColor.InternalizeL(aReadStream); aGc->SetPenColor(penColor); TRgb brushColor; brushColor.InternalizeL(aReadStream); aGc->SetBrushColor(brushColor); TSize size; aReadStream >> size; aGc->SetPenSize(size); aGc->ResetBrushPattern(); TInt brushHandle = aReadStream.ReadInt32L(); if(brushHandle) { aGc->SetBrushPattern(brushHandle); if (!aGc->HasBrushPattern() && brushStyle == MWsGraphicsContext::EPatternedBrush) { // Panic may occur if trying to set EPatternedBrush when a bitmap has not been // successfully set, so revert to null brush. brushStyle = MWsGraphicsContext::ENullBrush; } } // Wait until any brush pattern has been set before setting the brush style. aGc->SetBrushStyle(brushStyle); TInt wordExcessWidth = aReadStream.ReadUint32L(); TInt wordNumChars = aReadStream.ReadUint32L(); aGc->SetWordJustification(wordExcessWidth, wordNumChars); TInt charExcessWidth = aReadStream.ReadUint32L(); TInt charNumChars = aReadStream.ReadUint32L(); aGc->SetCharJustification(charExcessWidth, charNumChars); TRgb shadowColor; shadowColor.InternalizeL(aReadStream); aGc->SetTextShadowColor(shadowColor); TPoint origin; aReadStream >> origin; aGc->SetOrigin(origin); TPoint brushOrigin; aReadStream >> brushOrigin; aGc->SetBrushOrigin(brushOrigin); aGc->SetUnderlineStyle((MWsGraphicsContext::TFontUnderline) (aReadStream.ReadUint8L())); aGc->SetStrikethroughStyle((MWsGraphicsContext::TFontStrikethrough) (aReadStream.ReadUint8L())); aGc->ResetFont(); TInt fontHandle = aReadStream.ReadInt32L(); if(fontHandle) { CFbsBitGcFont font; TInt res = font.Duplicate(fontHandle); if(res == KErrNone) { aGc->SetFont(&font); font.Reset(); } } } /*------------------------------------------------------------------------------ Description: Helper function to save graphics context information into a given buffer. -----------------------------------------------------------------------------*/ void TInternalGcStatus::ExternalizeGcAttributesL(RWriteStream& aWriteStream) { aWriteStream.WriteUint8L(iDrawMode); aWriteStream.WriteUint8L(iBrushStyle); aWriteStream.WriteUint8L(iPenStyle); iPenColor.ExternalizeL(aWriteStream); iBrushColor.ExternalizeL(aWriteStream); aWriteStream << iPenSize; aWriteStream.WriteInt32L(iBrushPatternHandle); aWriteStream.WriteUint32L(iWordExcessWidth); aWriteStream.WriteUint32L(iWordNumChars); aWriteStream.WriteUint32L(iCharExcessWidth); aWriteStream.WriteUint32L(iCharNumChars); iShadowColor.ExternalizeL(aWriteStream); aWriteStream << iOrigin; aWriteStream << iBrushOrigin; aWriteStream.WriteUint8L(iUnderline); aWriteStream.WriteUint8L(iStrikethrough); aWriteStream.WriteInt32L(iFontHandle); }