uifw/EikStd/coctlsrc/EIKIMAGE.CPP
changeset 0 2f259fa3e83a
--- /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 <fbs.h>
+#include <coeutils.h>
+#include <eikimage.h>
+#include <eikenv.h>
+#include <barsread.h>
+#include "lafimage.h"
+#include <AknIconUtils.h>
+
+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<CFbsBitmap*&>(iBitmap),
+            const_cast<CFbsBitmap*&>(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, "<CEikImage>");
+	_LIT(KLitEikImgCtlEnd, "<\\CEikImage>");
+	_LIT(KLitEikImgBmp,"<iBitmap>");
+	_LIT(KLitEikImgBmpEnd,"<\\iBitmap>");
+	_LIT(KLitEikImgMskBmp,"<iMaskBitmap>");
+	_LIT(KLitEikImgMskBmpEnd,"<\\iMaskBitmap>");
+	_LIT(KLitEikImgFlgs,"<iImFlags>");
+	_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;
+	};