--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/thumbnailengine/ImaamiInc/DCSharpening.h Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,93 @@
+/*
+* Copyright (c) 2006 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:
+* DCSharpening
+* Sharpening using IMAAMI algorithm.
+*
+*/
+
+
+
+
+#ifndef __DCSharpening_H
+#define __DCSharpening_H
+
+#include <e32std.h> // for Fundamental Types
+#include <e32base.h> // for Fundamental Types
+#include "DCInit.h"
+
+//Adjust to proper signal range (10 bits)
+#define ADJUST_RANGE_TO_10BITS(value) ((value) < 0) ? 0 : ((value) > 1023) ? 1023 : (value)
+
+
+//Class definition
+class DCSharpening : public CBase
+{
+public:
+
+ //parameters
+ struct DCSharpeningParams
+ {
+ TUint SHARP_OVER;
+ TUint SHARP_DZONE;
+ TReal SHARP_GAIN;
+ };
+
+ DCSharpening();
+ static DCSharpening* NewL();
+ static DCSharpening* NewLC();
+ ~DCSharpening();
+
+ // Second Phase contructor (may leave)
+ void ConstructL();
+
+ //Process original image and store result
+ void ProcessL(CFbsBitmap* aBPtr);
+
+ //Set processing parameters
+ void SetParameters(DCSharpeningParams* params);
+
+ //Get current processing parameters
+ void GetParameters(DCSharpeningParams* params);
+
+
+ //Limit integer value to byte [0,255]
+ static inline TUint8 Limit255(TInt i) {
+ return (TUint8)(i<0?0:(i>255?255:i));
+ }
+
+
+private:
+
+ //Processing parameters
+ DCSharpeningParams iParameters;
+
+ //Line Buffer and pointer
+ HBufC8* iScanLine;
+ HBufC8* iPrevScanLine;
+ HBufC8* iPrevPrevScanLine;
+ HBufC8* iNextScanLine;
+ HBufC8* iNextNextScanLine;
+
+ //Sharpening functions from IMAAMI
+ TInt Peak(TInt aA, TInt aB, TInt aC, TInt aD, TInt aE, TInt aF, TInt aG, TInt aH, TInt aO);
+ TInt Median3(TInt aA, TInt aB, TInt aC);
+ void findMinMax4(TInt A, TInt B, TInt C, TInt D, TInt *min, TInt *max);
+
+ //Processing parameters for stretch
+ TInt iGain;
+};
+
+#endif // ifndef __DCSharpening_H
+//----IMAAMI----