diff -r 000000000000 -r 2f259fa3e83a uifw/EikStd/coctlsrc/EIKIMAGE.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/EikStd/coctlsrc/EIKIMAGE.CPP Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,232 @@ +/* +* Copyright (c) 1997-1999 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 +#include +#include +#include +#include +#include "lafimage.h" +#include + +const TInt KFullEmphasis = 0x01; +const TInt KPictureOwnedExternally = 0x10; +const TInt KSameBitmapAndMask = 0x20; +const TInt KBrushStyleSet = 0x40; + +EXPORT_C CEikImage::~CEikImage() + { + if (!(iImFlags&KPictureOwnedExternally)) + { + delete CONST_CAST(CFbsBitmap*,iBitmap); + if (~iImFlags&KSameBitmapAndMask) + delete CONST_CAST(CFbsBitmap*,iMaskBitmap); + } + } + +EXPORT_C CEikImage::CEikImage() + { + __DECLARE_NAME(_S("CEikImage")); + } + +EXPORT_C void CEikImage::CreatePictureFromFileL( + const TDesC& aFilename,TInt aMainId,TInt aMaskId) + { + iImFlags&=~KSameBitmapAndMask; + if (aMaskId>=0) + { + AknIconUtils::CreateIconL( + const_cast(iBitmap), + const_cast(iMaskBitmap), + aFilename, aMainId, aMaskId); + } + else + { + iBitmap = AknIconUtils::CreateIconL(aFilename, aMainId); + } + } + +// +EXPORT_C const CFbsBitmap* CEikImage::Bitmap() const + { + return iBitmap; + } +// +EXPORT_C const CFbsBitmap* CEikImage::Mask() const + { + return iMaskBitmap; + } +// +EXPORT_C void CEikImage::SetBitmap(const CFbsBitmap* aBitmap) + { + iBitmap = aBitmap; + } +// +EXPORT_C void CEikImage::SetMask(const CFbsBitmap* aMaskBitmap) + { + iMaskBitmap = aMaskBitmap; + } + +/** + * @internal + * @deprecated + */ +EXPORT_C void CEikImage::SetNewBitmaps(const CFbsBitmap* aNewBitmap,const CFbsBitmap* aNewMask) + { + SetPicture(aNewBitmap,aNewMask); + } + +EXPORT_C void CEikImage::SetPicture(const CFbsBitmap* aBitmap,const CFbsBitmap* aMaskBitmap) + { + if (!(iImFlags&KPictureOwnedExternally)) + { + delete CONST_CAST(CFbsBitmap*,iBitmap); + if (iMaskBitmap && !(iImFlags&KSameBitmapAndMask)) + delete CONST_CAST(CFbsBitmap*,iMaskBitmap); + } + iMaskBitmap=NULL; + iImFlags&=~KSameBitmapAndMask; + if (aMaskBitmap) + { + iMaskBitmap=aMaskBitmap; + if (aBitmap==aMaskBitmap) + iImFlags|=KSameBitmapAndMask; + } + iBitmap=aBitmap; + } + +EXPORT_C void CEikImage::Draw(const TRect& aRect) const + { + CWindowGc& gc=SystemGc(); + if (iImFlags & KBrushStyleSet) + gc.SetBrushStyle(iBrushStyle); +#ifdef __SERIES60_30__ + gc.SetOpaque( ETrue ); // transparency off +#endif // __SERIES60_30__ + if (iBitmap) + { + LafImage::Draw(iEikonEnv->LafEnv(),*this,gc,aRect,iMargin,iAlignment,*iBitmap,iMaskBitmap,iImFlags&KFullEmphasis); + } +#ifdef __SERIES60_30__ + gc.SetOpaque( EFalse ); // transparency back on +#endif // __SERIES60_30__ + } + +EXPORT_C TSize CEikImage::MinimumSize() + { + TSize size(0,0); + if (iBitmap) + { + size = iBitmap->SizeInPixels(); + } + size += iMargin.SizeDelta(); + return size; + } + +EXPORT_C void CEikImage::SetEmphasis(TBool aEmphasis) + { + iImFlags&=~KFullEmphasis; + if (aEmphasis) + iImFlags|=KFullEmphasis; + } + +EXPORT_C void CEikImage::SetPictureOwnedExternally(TBool aOwnership) + { + if (aOwnership) + iImFlags|=KPictureOwnedExternally; + else + iImFlags&=~KPictureOwnedExternally; + } +// +EXPORT_C TBool CEikImage::IsPictureOwnedExternally() + { + if (iImFlags&KPictureOwnedExternally) + return ETrue; + else + return EFalse; + } + +EXPORT_C void CEikImage::ConstructFromResourceL(TResourceReader& aReader) + { + iAlignment.SetHAlignment((TGulHAlignment)aReader.ReadInt16()); + iAlignment.SetVAlignment((TGulVAlignment)aReader.ReadInt16()); + const TPtrC bmpFile=aReader.ReadTPtrC(); + const TInt bmpId=aReader.ReadInt16(); + const TInt bmpMask=aReader.ReadInt16(); + CreatePictureFromFileL(bmpFile,bmpId,bmpMask); + aReader.ReadInt32(); // extension link + } + +/** + * Writes the internal state of the control and its components to aStream. + * Does nothing in release mode. + * Designed to be overidden and base called by subclasses. + * + * @internal + * @since App-Framework_6.1 + */ +#ifndef _DEBUG +EXPORT_C void CEikImage::WriteInternalStateL(RWriteStream&) const + {} +#else +EXPORT_C void CEikImage::WriteInternalStateL(RWriteStream& aWriteStream) const + { + _LIT(KLitEikImgCtlStart, ""); + _LIT(KLitEikImgCtlEnd, "<\\CEikImage>"); + _LIT(KLitEikImgBmp,""); + _LIT(KLitEikImgBmpEnd,"<\\iBitmap>"); + _LIT(KLitEikImgMskBmp,""); + _LIT(KLitEikImgMskBmpEnd,"<\\iMaskBitmap>"); + _LIT(KLitEikImgFlgs,""); + _LIT(KLitEikImgFlgsEnd,"<\\iImFlags>"); + + aWriteStream << KLitEikImgCtlStart; + aWriteStream << KLitEikImgBmp; + if(iBitmap) + aWriteStream << *iBitmap; + aWriteStream << KLitEikImgBmpEnd; + aWriteStream << KLitEikImgMskBmp; + if(iMaskBitmap) + aWriteStream << *iMaskBitmap; + aWriteStream << KLitEikImgMskBmpEnd; + aWriteStream << KLitEikImgFlgs; + aWriteStream.WriteInt32L(iImFlags); + aWriteStream << KLitEikImgFlgsEnd; + CEikAlignedControl::WriteInternalStateL(aWriteStream); + aWriteStream << KLitEikImgCtlEnd; + } +#endif + +EXPORT_C void CEikImage::HandlePointerEventL(const TPointerEvent& aPointerEvent) + { + CEikAlignedControl::HandlePointerEventL(aPointerEvent); + } + +EXPORT_C void* CEikImage::ExtensionInterface( TUid /*aInterface*/ ) + { + return NULL; + } + +EXPORT_C void CEikImage::Reserved_2() + {} + +EXPORT_C void CEikImage::SetBrushStyle(CGraphicsContext::TBrushStyle aBrushStyle) + { + iImFlags |= KBrushStyleSet; + iBrushStyle=aBrushStyle; + };