diff -r 57d4cdd99204 -r edfc90759b9f imageeditor/plugins/ResizePlugin/src/ImageEditorResizePlugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imageeditor/plugins/ResizePlugin/src/ImageEditorResizePlugin.cpp Fri Jan 29 13:53:17 2010 +0200 @@ -0,0 +1,206 @@ +/* +* Copyright (c) 2010 Ixonos Plc. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the "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: +* Ixonos Plc +* +* Description: +* Resize plugin plugin base class. +* +*/ + + + +/// INCLUDES +#include +#include +#include +#include +#include +#include +#include "ImageEditorResizePlugin.h" +#include "ImageEditorPluginBaseDefs.h" +#include "ResizeControl.h" +#include "SystemParameters.h" + +/// CONSTANTS +_LIT (KPgnResourceFile, "resize.rsc"); + +//============================================================================= +EXPORT_C CImageEditorPluginBase * CreateImageEditorPlugin () + { + CImageEditorResizePlugin * plugin = new (ELeave) CImageEditorResizePlugin; + CleanupStack::PushL(plugin); + plugin->ConstructL(); + CleanupStack::Pop(); // plugin + return plugin; + } + +//============================================================================= +CImageEditorResizePlugin::CImageEditorResizePlugin () : + CImageEditorPluginBase() + { + + } + +//============================================================================= +void CImageEditorResizePlugin::ConstructL () + { + CImageEditorPluginBase::ConstructL (KPgnResourcePath, KPgnResourceFile); + } + +//============================================================================= +CImageEditorResizePlugin::~CImageEditorResizePlugin () + { + ReleasePlugin(); + iSysPars = NULL; + iControl = NULL; + } + +//============================================================================= +TInt CImageEditorResizePlugin::SetProperty ( + TInt aPropertyId, + TDesC & aPropertyValue + ) +{ + + TLex parser; + + // Copy data + switch (aPropertyId) + { + case KCapSystemParameters: + { + parser.Assign (aPropertyValue); + TInt tempval = 0; + parser.Val (tempval); + iSysPars = (CSystemParameters *)tempval; + return KErrNone; + } + default: + { + return CImageEditorPluginBase::SetProperty (aPropertyId, aPropertyValue); + } + } +} + +//============================================================================= +TInt CImageEditorResizePlugin::GetProperty ( + TInt aPropertyId, + TDes & aPropertyValue + ) +{ + // Clear buffer + aPropertyValue.Zero(); + + // Copy data + switch (aPropertyId) + { + case KCapGlobalZoomDisabled: + { + aPropertyValue.AppendNum ( (TInt)ETrue ); + return KErrNone; + } + default: + { + return CImageEditorPluginBase::GetProperty (aPropertyId, aPropertyValue); + } + } +} + +//============================================================================= +TInt CImageEditorResizePlugin::InitPluginL ( + const TRect & aRect, + CCoeControl * aParent, + CCoeControl* & aPluginControl + ) + { + ReleasePlugin(); + + // Store image size + TInt width = + (iSysPars->ViewPortRect().iBr.iX - + iSysPars->ViewPortRect().iTl.iX); + TInt height = + (iSysPars->ViewPortRect().iBr.iY - + iSysPars->ViewPortRect().iTl.iY); + TInt origSize = 0; + // Landscape + if (height < width) + { + origSize = (TInt)(iSysPars->Scale() * width + 0.5); + } + else + { + origSize = (TInt)(iSysPars->Scale() * height + 0.5); + } + +#ifdef RESIZE_CIF_SIZES_SUPPORTED + const TInt KMinSize(128); +#else + const TInt KMinSize(320); +#endif + + if (origSize <= KMinSize) + { + + // Read resource + TFileName resourcefile; + resourcefile.Append(KPgnResourcePath); + resourcefile.Append(KPgnResourceFile); + User::LeaveIfError( CompleteWithAppPath( resourcefile ) ); + + // Get reference to application file session + RFs & fs = CEikonEnv::Static()->FsSession(); + + // Implementation of RConeResourceLoader uses BaflUtils::NearestLanguageFile + // to search for a localised resource in proper search order + RConeResourceLoader resLoader( *CEikonEnv::Static() ); + resLoader.OpenL ( resourcefile ); + CleanupClosePushL(resLoader); + + TBuf<256> readbuf; + CEikonEnv::Static()->ReadResourceAsDes16L(readbuf, R_SIE_TOO_SMALL_TO_RESIZE); + CleanupStack::PopAndDestroy(); // resLoader + + CAknInformationNote* infoNote = new( ELeave ) CAknInformationNote( ETrue ); + infoNote->ExecuteLD( readbuf ); // ignore return value, not used + + return KErrNotSupported; + } + + iControl = CResizeControl::NewL (aRect, aParent); + ((CResizeControl *)iControl)->SetSystemParameters (iSysPars, this); + aPluginControl = iControl; + + return KErrNone; + } + +//============================================================================= +void CImageEditorResizePlugin::ProcessImageL (CEditorImage * /*aImage*/ ) + { + // Own image processing functionality here + } + +//============================================================================= +void CImageEditorResizePlugin::ReleasePlugin() + { + delete iControl; + iControl = NULL; + } + +void CImageEditorResizePlugin::ShowPopupNote () + { + ((CResizeControl *)iControl)->ShowPopupNote(); + } + +// End of File +