imagehandling_plat/image_handling_library_api/inc/IHLBitmapUtil.h
changeset 0 2014ca87e772
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imagehandling_plat/image_handling_library_api/inc/IHLBitmapUtil.h	Tue Jan 26 15:18:05 2010 +0200
@@ -0,0 +1,157 @@
+/*
+* Copyright (c) 2004 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:  Static utility class for synchronous CFbsBitmap operations.
+*
+*/
+
+
+#ifndef IHLBITMAPUTIL_H
+#define IHLBITMAPUTIL_H
+
+// INCLUDES
+#include <e32std.h>
+
+// FORWARD DECLARATION
+class CFbsBitmap;
+
+// CLASS DECLARATION
+/**
+*  IHLBitmapUtil
+*
+*  Static utility class for synchronous CFbsBitmap operations.
+*  @lib IHL.lib
+*  @since 3.0
+*/
+class IHLBitmapUtil
+    {
+    public:
+
+        /**
+        * Create new bitmap instance using
+		* same server handle as in given bitmap.
+		* Note that modifying bitmap content will also change
+		* all other bitmap content that has same server handle.
+        * @since 3.0
+		* @param aBitmap Duplicated bitmap reference.
+		* @return Duplicated CFbsBitmap instance.
+		*/
+		IMPORT_C static CFbsBitmap* DuplicateBitmapL( const CFbsBitmap& aBitmap );
+
+        /**
+        * Create new bitmap instance using
+		* same server handle as in given bitmap.
+		* Note that modifying bitmap content will also change
+		* all other bitmap content that has same server handle.
+		* New instance is pushed into CleanupStack.
+        * @since 3.0
+		* @param aBitmap Duplicated bitmap reference.
+		* @return Duplicated CFbsBitmap instance.
+		*/
+		IMPORT_C static CFbsBitmap* DuplicateBitmapLC( const CFbsBitmap& aBitmap );
+
+        /**
+        * Copy bitmap into new same sized bitmap.
+		* New bitmap has unique server handle and it can be
+		* modified without risk of changes in given source bitmap.
+        * @since 3.0
+		* @param aBitmap Copied bitmap reference.
+		* @return Copied CFbsBitmap instance.
+		*/
+		IMPORT_C static CFbsBitmap* CopyBitmapL( const CFbsBitmap& aBitmap );
+
+        /**
+        * Copy bitmap into new same sized bitmap.
+		* New bitmap has unique server handle and it can be
+		* modified without risk of changes in given source bitmap.
+		* New instance is pushed into CleanupStack.
+        * @since 3.0
+		* @param aBitmap Copied bitmap reference.
+		* @return Copied CFbsBitmap instance.
+		*/
+		IMPORT_C static CFbsBitmap* CopyBitmapLC( const CFbsBitmap& aBitmap );
+
+        /**
+        * Copy user defined area from source bitmap into new bitmap.
+		* New bitmap has unique server handle and it can be
+		* modified without risk of changes in given source bitmap.
+        * @since 3.0
+		* @param aBitmap Source bitmap reference.
+		* @param aRect Copied rectangle from source bitmap.
+		* @return Copied CFbsBitmap instance, size of given rect.
+		*/		
+		IMPORT_C static CFbsBitmap* CopyBitmapL( const CFbsBitmap& aBitmap, const TRect& aRect );
+
+        /**
+        * Copy user defined area from source bitmap into new bitmap.
+		* New bitmap has unique server handle and it can be
+		* modified without risk of changes in given source bitmap.
+		* New instance is pushed into CleanupStack.
+        * @since 3.0
+		* @param aBitmap Source bitmap reference.
+		* @param aRect Copied rectangle from source bitmap.
+		* @return Copied CFbsBitmap instance, size of given rect.
+		*/		
+		IMPORT_C static CFbsBitmap* CopyBitmapLC( const CFbsBitmap& aBitmap, const TRect& aRect );
+
+        /**
+		* Synchronous bitmap scaler. Use only with small bitmaps!
+		* Prefer asynchronous MIHLScaler instead.
+		*
+        * Scale source bitmap into destination bitmap.
+        * @since 3.0
+        * @param aSrcBitmap Source bitmap reference.
+        * @param aDstBitmap Destination bitmap reference.
+		*                   If destination bitmap has null handle,
+		*                   processor will create new bitmap using size of
+		*                   destination rectangle.
+        * @param aOptions Reserved for future use.
+		* @return Return system wide error codes:
+		*         KerrArgument - source bitmap is empty (handle is null).
+		*                      - destination bitmap displaymode differs
+		*                        from source bitmap displaymode.
+		*/
+        IMPORT_C static TInt ScaleBitmap( const CFbsBitmap& aSrcBitmap, CFbsBitmap& aDstBitmap,
+										  TUint32 aOptions = 0 );
+
+        /**
+		* Synchronous bitmap scaler. Use only with small bitmaps!
+		* Prefer asynchronous MIHLScaler instead.
+		*
+        * Scale rectangle from source bitmap to a rectangle
+		* in destination bitmap. Scaled area can be also
+		* rotated and/or mirrored during process.
+		* See full usage description from MIHLScaler header.
+        * @since 3.0
+        * @param aSrcBitmap Source bitmap reference.
+        * @param aSrcRect Rectangle that is processed from source bitmap.
+        * @param aDstBitmap Destination bitmap reference.
+		*                   If destination bitmap has null handle,
+		*                   processor will create new bitmap using size of
+		*                   destination rectangle.
+        * @param aDstRect Rectangle that is filled in destination bitmap.
+        * @param aOptions Reserved for future use.
+		* @return Return system wide error codes:
+		*         KerrArgument - rectangles are outside of bitmap area.
+		*                      - source bitmap is empty (handle is null).
+		*                      - destination bitmap displaymode differs
+		*                        from source bitmap displaymode.
+		*/
+        IMPORT_C static TInt ScaleBitmap( const CFbsBitmap& aSrcBitmap, const TRect& aSrcRect,
+										  CFbsBitmap& aDstBitmap, const TRect& aDstRect,
+										  TUint32 aOptions = 0 );
+	};
+
+#endif // IHLBITMAPUTIL_H
+
+// End of File