imagingandcamerafws/imagingfws/src/Test/TImageTran/TImageTranSupp.cpp
branchRCL_3
changeset 50 948c7f65f6d4
parent 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingandcamerafws/imagingfws/src/Test/TImageTran/TImageTranSupp.cpp	Wed Sep 01 12:38:50 2010 +0100
@@ -0,0 +1,270 @@
+// Copyright (c) 2008-2009 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 "TImageTran.h"
+#include <iclexifimageframe.h>
+
+    
+/*
+ * Case-insensitive matching of possibly-abbreviated keyword switches.
+ * keyword is the constant keyword (must be lower case already),
+ * minchars is length of minimum legal abbreviation.
+ */
+TBool CITArgsandFuncts::KeywordMatch (TPtrC aKeyMatch, const TDesC16& aKeyWord, TInt aMinCharsMatch)
+    {
+
+    if(aKeyMatch.MatchF(aKeyWord) != KErrNotFound)
+        {
+            return ETrue;
+        }
+
+    if((aKeyWord.Length() < aMinCharsMatch))
+        {
+         return EFalse;   //no matching keyword found  
+        }
+    return EFalse;        
+    }
+    
+/* Read next argument from commandline */    
+void CITArgsandFuncts::ReadNextArg(TInt aArgNum)
+    {
+    if (aArgNum >= iCmdArgs->Count())	/* advance to next argument */
+        {
+        iEndOfCmd = ETrue;
+        //ExitImageTranTool();  
+        }
+    else
+        {
+        iArgumentPtr.Set(iCmdArgs->Arg(aArgNum));    
+        }        
+    }
+         
+/*
+*   Get the input image size to check that MaxImagesize and MinImagesize are 
+*   within the input image size range
+*
+*/
+void CITArgsandFuncts::Fetch_ImageSize()    
+    {
+    CJPEGImageFrameDecoder *decoder = NULL;
+    TRAPD(error, decoder= static_cast<CJPEGImageFrameDecoder*> (CImageDecoder::FileNewL(iFs, iInputfile, CImageDecoder::EOptionNone, KNullUid, KNullUid, KImageFramePluginUid)));
+    if(error != KErrNone)
+        {
+        iConsole->Printf(_L("JpegCodec does not support this image format.InputImageSize caluculation for autosqueeze transformation failed with %d\n"), error);
+        ExitImageTranTool();
+        }
+
+    const TFrameInfo* frameInfo = NULL;
+    frameInfo = &decoder->FrameInfo();
+    iInputImageSize = frameInfo->iOverallSizeInPixels;
+    
+    if(iSqueezeAutoResizeParams.iMaxImageSize.iWidth > iInputImageSize.iWidth )
+        {
+        iConsole->Printf(_L("MaxImage width is greater than the input image width\n"));
+        ExitImageTranTool();
+        }  
+        
+    if(iSqueezeAutoResizeParams.iMaxImageSize.iHeight > iInputImageSize.iHeight )
+        {
+        iConsole->Printf(_L("MaxImage height is greater than the input image height\n"));
+        ExitImageTranTool();
+        }  
+        
+    if(iSqueezeAutoResizeParams.iMinImageSize.iWidth > iInputImageSize.iWidth && iSqueezeAutoResizeParams.iMinImageSize.iWidth > iSqueezeAutoResizeParams.iMaxImageSize.iWidth)
+        {
+        iConsole->Printf(_L("MinImage width is greater than the input image width/Maximage height\n"));
+        ExitImageTranTool();
+        }
+    if(iSqueezeAutoResizeParams.iMinImageSize.iHeight > iInputImageSize.iHeight && iSqueezeAutoResizeParams.iMinImageSize.iHeight > iSqueezeAutoResizeParams.iMaxImageSize.iHeight)
+        {
+        iConsole->Printf(_L("MinImage height is greater than the input image height/Maximage height\n"));
+        ExitImageTranTool();
+        }
+    delete decoder;
+    }
+    
+/* 
+* Validate whether its a valid numeric number or not 
+* validation is done based on the ascii value of the character
+* for digits 0 to 9 it starts from 48 to 57
+*/ 
+TUint CITArgsandFuncts::ValidateImageSize()
+    {
+    TUint tmpVal;
+    TLex lLex(iArgumentPtr);
+    TLex lLextmp(iArgumentPtr);
+    TChar charArg = lLex.Get();
+    do
+        {
+        if(charArg > 47 && charArg < 58 )
+            {
+            charArg = lLex.Get();
+            }
+        else
+            {
+            if(charArg < 47 || charArg > 58)
+                {
+                iConsole->Printf(_L("SizeinBytes or ImageSize is incorrect alphabetic or alphanumeric or special characters\n"));
+                ExitImageTranTool();
+                }           
+            }
+        }while(!lLex.Eos());
+
+    lLextmp.Val(tmpVal);    
+    return tmpVal;        
+    }
+           
+/* 
+ * Set source and destination file, squeeze option 
+ */
+void CITArgsandFuncts::SetupTransformation (ITRAN_CODES aTransCode)
+    {
+    TInt error = KErrNone;
+    		
+	TRAP(error, iImageTransform->SetSourceFilenameL(iInputfile));
+	if(error != KErrNone)
+	    {
+	    iConsole->Printf(_L("Input file is having a problem failed with error : %d\n"), error);
+        ExitImageTranTool();
+	    }
+	
+	TRAP(error, iImageTransform->SetDestFilenameL(iOutputfile));
+	if(error != KErrNone)
+	    {
+	    iConsole->Printf(_L("Output file is having a problem failed with error: %d\n"), error);
+        ExitImageTranTool();
+	    }
+	if(aTransCode == ITRAN_SQU || aTransCode == ITRAN_AUTOSQU)
+		{
+		TRAP(error, iImageTransform->SetTransformationsL(CImageTransform::ESqueeze));
+		}
+	else if (aTransCode == ITRAN_ROTATE || aTransCode == ITRAN_FLIP ||
+			aTransCode == ITRAN_TRANSPOSE || aTransCode == ITRAN_TRANSVERSE)
+		{
+		TRAP(error, iImageTransform->SetTransformationsL(CImageTransform::EOrientation));
+		}
+	if(error != KErrNone)
+		{
+		iConsole->Printf(_L("Not a valid option : %d\n"), error);
+		ExitImageTranTool();
+		}
+		
+	TRAP(error, iImageTransform->SetupL());
+	if(error != KErrNone)
+        {
+        iConsole->Printf(_L("Not a valid input or outputfile : %d\n"), error);
+        ExitImageTranTool();
+        }
+
+	if(aTransCode == ITRAN_SQU || aTransCode == ITRAN_AUTOSQU)
+		{
+		TUid lSqUid = {KUidSqueezeTransformExtension};
+		iTransExtn = static_cast<CSqueezeTransformExtension*>(iImageTransform->Extension(lSqUid, error));
+		if(!iTransExtn)
+			{
+			iConsole->Printf(_L("Extension Returned unexpected error: %d"), error);
+	        ExitImageTranTool();
+			}
+		}
+	else if(aTransCode == ITRAN_ROTATE || aTransCode == ITRAN_FLIP ||
+			aTransCode == ITRAN_TRANSPOSE || aTransCode == ITRAN_TRANSVERSE)
+		{    
+		TUid lTransOrUid = {KUidOrientationTransformExtension};
+		iTransOrientation = static_cast<COrientationTransformExtension*>(iImageTransform->Extension(lTransOrUid, error));
+		if(!iTransOrientation)
+			{
+			iConsole->Printf(_L("Extension Returned unexpected error: %d"), error);
+	        ExitImageTranTool();
+			}
+		}
+    }
+    
+/* Set extension, overlayfile and overlay position for overlay comamnd */    
+void CITArgsandFuncts::SetupOverlayTrans()
+	{
+	TInt error = KErrNone;
+	TUid lTransOlUid = {KUidOverlayTransformExtension};
+		
+	TRAP(error, iImageTransform->SetSourceFilenameL(iInputfile));
+	if(error != KErrNone)
+	    {
+	    iConsole->Printf(_L("Input file is having a problem failed with error : %d\n"), error);
+        ExitImageTranTool();
+	    }
+	
+	TRAP(error, iImageTransform->SetDestFilenameL(iOutputfile));
+	if(error != KErrNone)
+	    {
+	    iConsole->Printf(_L("Output file is having a problem failed with error: %d\n"), error);
+        ExitImageTranTool();
+	    }
+	    	
+	TRAP(error, iImageTransform->SetTransformationsL(CImageTransform::EOverlay));
+	if(error != KErrNone)
+		{
+		iConsole->Printf(_L("Not a valid option : %d\n"), error);
+		ExitImageTranTool();
+		}
+
+	TRAP(error, iImageTransform->SetupL());
+	if(error != KErrNone)
+        {
+        iConsole->Printf(_L("Not a valid input or outputfile : %d\n"), error);
+        ExitImageTranTool();
+        }		
+
+	iOverlayExtn = static_cast<COverlayTransformExtension*>(iImageTransform->Extension(lTransOlUid, error));
+	if(!iOverlayExtn)
+		{
+		iConsole->Printf(_L("Extension Returned unexpected error: %d"), error);
+        ExitImageTranTool();
+		}
+		
+	iOverlayExtn->SetPosition(iPoint);
+	
+    TParse fileExtn;
+    fileExtn.Set(iOverlayfile,NULL,NULL);
+
+	if(error != KErrNotFound)
+        {
+        if(KeywordMatch(fileExtn.Ext(),_L(".mbm"),3))
+	        {
+	        CFbsBitmap	bitmap;
+	        error = bitmap.Load(iOverlayfile);
+			if (error != KErrNone)
+				{
+				iConsole->Printf(_L("Cannot load overlayfile into a bitmap, failed with error: %d\n"), error);
+			    ExitImageTranTool();
+				}	        
+			TRAP(error, iOverlayExtn->SetOverlayImageL(bitmap));			        	
+	        }
+		else if(KeywordMatch(fileExtn.Ext(),_L(".jpg"),3))
+			{
+			TUid uUid = KImageTypeJPGUid;
+			TRAP(error, iOverlayExtn->SetOverlayFileL(iOverlayfile, uUid));
+			}
+		else if(KeywordMatch(fileExtn.Ext(),_L(".png"),3))
+			{
+			TUid uUid = KImageTypePNGUid;
+			TRAP(error, iOverlayExtn->SetOverlayFileL(iOverlayfile, uUid));
+			}					
+        }
+	if(error != KErrNone)
+		{
+		iConsole->Printf(_L("Not a valid option : %d\n"), error);
+		ExitImageTranTool();
+		}		
+
+	}