--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagehandling_plat/image_handling_library_api/inc/MIHLScaler.h Tue Jan 26 15:18:05 2010 +0200
@@ -0,0 +1,169 @@
+/*
+* 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: Pure virtual interface to bitmap scaler
+* : using Font and Bitmap Server bitmaps.
+*
+*/
+
+
+#ifndef MIHLSCALER_H
+#define MIHLSCALER_H
+
+// INCLUDES
+#include <e32std.h>
+
+// FORWARD DECLARATION
+class MIHLScaler;
+class MIHFilter;
+class CFbsBitmap;
+
+// FACTORY DECLARATION
+class IHLScaler
+ {
+ public:
+
+ /**
+ * Create new MIHLScaler instance.
+ * @since 3.0
+ * @param aOptions Special options for bitmap scaling. Use MIHLScaler::TOptions values.
+ * @return New scaler instance.
+ */
+ IMPORT_C static MIHLScaler* CreateL( const TUint32 aOptions = 0 );
+ };
+
+// CLASS DECLARATION
+/**
+* MIHLScaler
+*
+* Pure virtual interface to bitmap scaler
+* using Font and Bitmap Server bitmaps.
+*
+* If interface needs to be pushed into CleanupStack,
+* remember to use CleanupStackDeletePushL() function!
+* DO NOT USE CleanupStack::PushL()!!
+*
+* @lib IHL.lib
+* @since 3.0
+*/
+class MIHLScaler
+ {
+ public:
+
+ /**
+ * Virtual destructor.
+ */
+ virtual ~MIHLScaler() {}
+
+ public:
+
+ /**
+ * Flags to control scaler functionality.
+ * These can be combined using an OR operation.
+ * @since 3.0
+ */
+ enum TOptions
+ {
+ EOptionUseBilinearInterpolation = 0x01,
+ };
+
+ public:
+
+ /**
+ * Scale rectangle from source bitmap to a rectangle
+ * in destination bitmap. Scaled area can be also
+ * rotated and/or mirrored during process.
+ *
+ * Rotating is done by defining SOURCE rectangle
+ * topleft and bottomright corners in following way:
+ *
+ * No rotate: tl----- 90 degree: -----tl
+ * | | | |
+ * | | | |
+ * -----br br-----
+ *
+ * 180 degree: br----- 270 degree: -----br
+ * | | | |
+ * | | | |
+ * -----tl tl-----
+ *
+ * Mirroring is done by defining DESTINATION rectangle
+ * topleft and bottomright corners in following way:
+ *
+ * No mirroring: tl-----
+ * | |
+ * | |
+ * -----br
+ *
+ * X-axis mirroring: -----tl
+ * | |
+ * | |
+ * br-----
+ *
+ * Y-axis mirroring: -----br
+ * | |
+ * | |
+ * tl-----
+ *
+ * X and Y-axis br-----
+ * mirroring: | |
+ * | |
+ * -----tl
+ *
+ * @since 3.0
+ * @param aStatus Process request status reference.
+ * @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.
+ * @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.
+ * KErrBusy - processor has request pending already.
+ */
+ virtual TInt Scale( TRequestStatus& aStatus,
+ const CFbsBitmap& aSrcBitmap,
+ const TRect& aSrcRect,
+ CFbsBitmap& aDstBitmap,
+ const TRect& aDstRect ) = 0;
+
+ /**
+ * Check if processor has request pending.
+ * @since 3.0
+ * @return ETrue if request is pending, EFalse if not.
+ */
+ virtual TBool IsBusy() const = 0;
+
+ /**
+ * Cancel pending request.
+ * If not active, method does nothing.
+ * @since 3.0
+ */
+ virtual void CancelProcess() = 0;
+
+ /**
+ * Set filter.
+ * For future use, not used currently!
+ * @since 3.0
+ */
+ virtual void SetFilter( MIHFilter* aFilter ) = 0;
+ };
+
+#endif // MIHLSCALER_H
+
+// End of File