williamr@4: // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: // All rights reserved. williamr@4: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@4: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: // williamr@4: // Initial Contributors: williamr@4: // Nokia Corporation - initial contribution. williamr@4: // williamr@4: // Contributors: williamr@4: // williamr@4: // Description: williamr@4: // williamr@4: williamr@4: /** williamr@4: @file williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: williamr@4: #ifndef __IMAGE_PROCESSOR_EFFECT_H__ williamr@4: #define __IMAGE_PROCESSOR_EFFECT_H__ williamr@4: williamr@4: #include williamr@4: #include williamr@4: #include williamr@4: williamr@4: namespace ImageProcessor williamr@4: { williamr@4: class CImageProcessorImpl; williamr@4: williamr@4: namespace Plugin williamr@4: { williamr@4: class MEffect; williamr@4: } williamr@4: williamr@4: //Effects Uids williamr@4: /** williamr@4: Uid used to gain access to the Sepia effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectSepiaUid = {KEffectSepiaUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Grayscale effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectGrayscaleUid = {KEffectGrayscaleUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Negative effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectNegativeUid = {KEffectNegativeUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the GrayscaleNegative effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectGrayscaleNegativeUid = {KEffectGrayscaleNegativeUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Oily effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectOilyUid = {KEffectOilyUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Paint effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectPaintUid = {KEffectPaintUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Milky effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectMilkyUid = {KEffectMilkyUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Fog effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectFogUid = {KEffectFogUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the MirrorLeftToRight effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectMirrorLeftToRightUid = {KEffectMirrorLeftToRightUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the MagicPen effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectMagicPenUid = {KEffectMagicPenUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Brightness effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectBrightnessUid = {KEffectBrightnessUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Sharpness effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectSharpnessUid = {KEffectSharpnessUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Rotation effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectRotationUid = {KEffectRotationUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Contrast effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectContrastUid = {KEffectContrastUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the RgbColorAdjust effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectRgbColorAdjustUid = {KEffectRgbColorAdjustUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Emboss effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectEmbossUid = {KEffectEmbossUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Solarize effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectSolarizeUid = {KEffectSolarizeUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Posterize effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectPosterizeUid = {KEffectPosterizeUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Stamp effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectStampUid = {KEffectStampUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Sketch effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectSketchUid = {KEffectSketchUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Noise effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectNoiseUid = {KEffectNoiseUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Moonlight effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectMoonlightUid = {KEffectMoonlightUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the FrostedGlass effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectFrostedGlassUid = {KEffectFrostedGlassUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Despeckle effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectDespeckleUid = {KEffectDespeckleUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Blur effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectBlurUid = {KEffectBlurUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Colorization effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectColorizationUid = {KEffectColorizationUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Cartoon effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectCartoonUid = {KEffectCartoonUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the LocalBoost effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectLocalBoostUid = {KEffectLocalBoostUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the ColorBoost effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectColorBoostUid = {KEffectColorBoostUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the WhiteBalance effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectWhiteBalanceUid = {KEffectWhiteBalanceUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the AutoLevels effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectAutoLevelsUid = {KEffectAutoLevelsUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Levels effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectLevelsUid = {KEffectLevelsUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Exposure effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectExposureUid = {KEffectExposureUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the SpotLight effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectSpotLightUid = {KEffectSpotLightUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the CustomTransformation effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectCustomTransformationUid = {KEffectCustomTransformationUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Antique effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectAntiqueUid = {KEffectAntiqueUidValue}; williamr@4: williamr@4: //Others williamr@4: /** williamr@4: Uid used to gain access to the GeometricalOperation effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KGeometricalOperationUid = {KGeometricalOperationUidValue}; williamr@4: /** williamr@4: Uid used to gain access to the Border effect. @see ImageProcessor::CImgProcessor::EffectL williamr@4: */ williamr@4: const TUid KEffectBorderUid = {KEffectBorderUidValue}; williamr@4: williamr@4: /** williamr@4: The class is the parent class of all effects. williamr@4: The extended class should implement three stages/functions: "begin -> set -> end" williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffect williamr@4: { williamr@4: public: williamr@4: /** Describes the type of the effect in terms of the type of parameter input to adjust levels. */ williamr@4: enum TEffectInputType williamr@4: { williamr@4: EEffectInputTypeInt, williamr@4: EEffectInputTypeReal32, williamr@4: EEffectInputTypeCustom williamr@4: }; williamr@4: williamr@4: public: williamr@4: inline TUid Type() const; williamr@4: inline Plugin::MEffect& PluginEffect() const; williamr@4: inline TBool IsActive() const; williamr@4: williamr@4: IMPORT_C void BeginL(); williamr@4: IMPORT_C void EndL(); williamr@4: williamr@4: IMPORT_C TEffectInputType InputType() const; williamr@4: williamr@4: IMPORT_C void SetLevelL(TInt aLevel); williamr@4: IMPORT_C void LevelL(TInt& aLevel) const; williamr@4: IMPORT_C void LevelSettings(TInt& aMinimumLevel, TInt& aMaximumLevel, TInt& aLevelStep) const; williamr@4: williamr@4: IMPORT_C void SetLevelL(TReal32 aLevel); williamr@4: IMPORT_C void LevelL(TReal32& aLevel) const ; williamr@4: IMPORT_C void LevelSettings(TReal32& aMinimumLevel, TReal32& aMaximumLevel, TReal32& aLevelStep) const; williamr@4: williamr@4: IMPORT_C void ResetL(); williamr@4: IMPORT_C TAny* Extension(TUid aExtension); williamr@4: williamr@4: protected: williamr@4: friend class CImageProcessorImpl; williamr@4: /** williamr@4: @internalComponent williamr@4: */ williamr@4: TEffect(const TUid& aUid, Plugin::MEffect& aPluginEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: Plugin::MEffect& iPluginEffect; williamr@4: TUid iUid; williamr@4: TBool iIsActive; williamr@4: CImageProcessorImpl& iImageProcessorImpl; williamr@4: williamr@4: TAny* iReserved; williamr@4: }; williamr@4: williamr@4: /** williamr@4: Gets the effect type. williamr@4: williamr@4: @return The UID of the effect. williamr@4: */ williamr@4: TUid TEffect::Type() const williamr@4: { williamr@4: return iUid; williamr@4: } williamr@4: williamr@4: /** williamr@4: Gets associated plugin of the effect. williamr@4: williamr@4: @return A pointer to the related plugin effect instance. williamr@4: */ williamr@4: Plugin::MEffect& TEffect::PluginEffect() const williamr@4: { williamr@4: return iPluginEffect; williamr@4: } williamr@4: williamr@4: /** williamr@4: Gets the state of the effect. williamr@4: williamr@4: @return ETrue if the effect is active. williamr@4: */ williamr@4: TBool TEffect::IsActive() const williamr@4: { williamr@4: return iIsActive; williamr@4: } williamr@4: williamr@4: /** williamr@4: The class provides functions to apply sepia effect to an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectSepia : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectSepia(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to convert an image to grayscale. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectGrayscale : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectGrayscale(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to convert an image similar to a photographic negative. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectNegative : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectNegative(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to convert an image to combined grayscale and negative. (Consider removing this effect) williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectGrayscaleNegative : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectGrayscaleNegative(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to make an image look like an oil painting. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectOily : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectOily(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to make an image look like a painting (how is this distinct from an oil painting effect?). williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectPaint : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectPaint(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply a "milky" surface effect to an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectMilky : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectMilky(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply a fog effect to an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectFog : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectFog(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply Antique effect to an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectAntique : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectAntique(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply a mirror effect to an image. williamr@4: Mirrors the left side of the image on the right side of the image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectMirrorLeftToRight : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectMirrorLeftToRight(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply a mix of edge distinction and color manipulation to an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectMagicPen : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectMagicPen(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to adjust the brightness level of an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectBrightness : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectBrightness(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to adjust the sharpness level of an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectSharpness : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectSharpness(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to rotate an image through an arbitrary angle. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectRotation : public TEffect williamr@4: { williamr@4: public: williamr@4: /** williamr@4: Parameters to control the scale of the image when rotation is applied williamr@4: */ williamr@4: enum TRotationScaleMode williamr@4: { williamr@4: /** The image is not scaled when rotation is applied, which is the default mode*/ williamr@4: ERotationScaleModeIgnore, williamr@4: /** The image will be rotated, and scaled to fit inside the margins of the original image*/ williamr@4: ERotationScaleModeFitInside, williamr@4: /** The image will be rotated, and scaled to fully enclose the margins of the original image*/ williamr@4: ERotationScaleModeFitOutside williamr@4: }; williamr@4: williamr@4: IMPORT_C TRotationScaleMode ScaleModeL() const; williamr@4: IMPORT_C TReal32 AngleL() const; williamr@4: IMPORT_C void SetRotationL(TRotationScaleMode aScaleMode, TReal32 aAngle); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectRotation(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply contrast adjustment to an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectContrast : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectContrast(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to adjust the RGB color composition of an image williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectRgbColorAdjust : public TEffect williamr@4: { williamr@4: public: williamr@4: IMPORT_C TReal32 RedLevelL() const; williamr@4: IMPORT_C TReal32 GreenLevelL() const; williamr@4: IMPORT_C TReal32 BlueLevelL() const; williamr@4: IMPORT_C void SetRGBLevelL(TReal32 aRedLevel, TReal32 aGreenLevel, TReal32 aBlueLevel); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectRgbColorAdjust(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply an emboss effect in grayscale to an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectEmboss : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectEmboss(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply a solarize look to an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectSolarize : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectSolarize(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply a posterize effect to an image. The number of colors is reduced. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectPosterize : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectPosterize(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply a rubber stamp effect. Result is a black/white image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectStamp : public TEffect williamr@4: { williamr@4: public: williamr@4: IMPORT_C TInt SmoothnessLevelL() const; williamr@4: IMPORT_C TInt ThresholdLevelL() const; williamr@4: IMPORT_C void SetStampLevelL(TInt aSmoothnessLevel, TInt aThresholdLevel); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectStamp(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: /** williamr@4: The class provides functions to create a sketched representation of an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectSketch : public TEffect williamr@4: { williamr@4: public: williamr@4: /** williamr@4: Parameters to control the sketch mode. williamr@4: */ williamr@4: enum TSketchMode williamr@4: { williamr@4: /** Sketch the image in gray, which is the default mode*/ williamr@4: ESketchModeGray, williamr@4: /** Sketch the image in color.*/ williamr@4: ESketchColor williamr@4: }; williamr@4: public: williamr@4: IMPORT_C TSketchMode SketchModeL() const; williamr@4: IMPORT_C void SetSketchModeL(TSketchMode aLevel); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectSketch(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply noise to an image williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectNoise : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectNoise(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply a Moonlight effect to an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectMoonlight : public TEffect williamr@4: { williamr@4: TInt16 ClockL(); williamr@4: void SetClockL(TInt16 aClock); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectMoonlight(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply a "frosted glass" surface effect to an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectFrostedGlass : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectFrostedGlass(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply a "despeckle" surface effect to an image, which means to williamr@4: remove noise from images without blurring edges. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectDespeckle : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectDespeckle(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to blur an area of the image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectBlur : public TEffect williamr@4: { williamr@4: public: williamr@4: IMPORT_C TRect RectL() const; williamr@4: IMPORT_C void SetRectL(TRect aRect); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectBlur(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to adjust color tone and luminance/chrominance levels. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectColorization : public TEffect williamr@4: { williamr@4: public: williamr@4: IMPORT_C TRgb ReferenceColorL() const; williamr@4: IMPORT_C TInt LuminanceStrengthL() const; williamr@4: IMPORT_C TInt ChrominanceStrengthL() const; williamr@4: IMPORT_C void SetColorizationL(TRgb aReferenceColor, TInt aLuminanceStrength, TInt aChrominanceStrength); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectColorization(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to transform an image to typical cartoon graphics style. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectCartoon : public TEffect williamr@4: { williamr@4: public: williamr@4: IMPORT_C TBool DistinctEdgesL() const; williamr@4: IMPORT_C void SetDistinctEdgesL(TBool aDistinctEdges); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectCartoon(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to automatically boost and enhance images with unequal illumination. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectLocalBoost : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectLocalBoost(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to amplify the colors of an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectColorBoost : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectColorBoost(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to perform white balance adjustment on an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectWhiteBalance : public TEffect williamr@4: { williamr@4: public: williamr@4: /** williamr@4: Parameters to define the white balance modes. williamr@4: */ williamr@4: enum TWhiteBalanceMode williamr@4: { williamr@4: /**Uses the estimated mean gray for the color correction, which is the default mode.*/ williamr@4: EWhiteBalanceMeanMode, williamr@4: /**Uses the estimated maximum intensity color.*/ williamr@4: EWhiteBalanceMaxMode, williamr@4: /**Uses a white reference color. */ williamr@4: EWhiteBalanceManualMode, williamr@4: /**Calulates the reference from the mean value of the 256-bin distribution.*/ williamr@4: EWhiteBalanceClusterMode williamr@4: }; williamr@4: williamr@4: public: williamr@4: IMPORT_C TWhiteBalanceMode WhiteBalanceModeL() const; williamr@4: IMPORT_C TRgb ReferenceWhiteColorL() const; williamr@4: IMPORT_C void SetWhiteBalanceL(TWhiteBalanceMode aWhiteBalanceMode, TRgb aReferenceWhiteColor); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectWhiteBalance(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply auto level adjustment to an image. williamr@4: Auto level adjustment balances the intensity level of the image, for example making dark images lighter and vice versa. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectAutoLevels : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectAutoLevels(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to apply white, gray and black level adjustment to an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectLevels : public TEffect williamr@4: { williamr@4: public: williamr@4: IMPORT_C TReal32 WhiteLevelL() const; williamr@4: IMPORT_C TReal32 GrayLevelL() const; williamr@4: IMPORT_C TReal32 BlackLevelL() const; williamr@4: IMPORT_C void SetWGBLevelL(TReal32 aWhiteLevel, TReal32 aGrayLevel, TReal32 aBlackLevel); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectLevels(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to control the exposure of an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectExposure : public TEffect williamr@4: { williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectExposure(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to create a spotlight on an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectSpotLight : public TEffect williamr@4: { williamr@4: public: williamr@4: IMPORT_C void SpotLightOrientationL(TPoint &aPosition, TUint32& aRadius, TReal32& aTransitionSize) const; williamr@4: IMPORT_C void SetSpotLightOrientationL(const TPoint& aPosition, TUint32 aRadius, TReal32 aTransitionSize); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectSpotLight(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to make a custom transformation with an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectCustomTransformation : public TEffect williamr@4: { williamr@4: public: williamr@4: IMPORT_C void SetInputL(const TDesC& aFilename); williamr@4: IMPORT_C void SetInputL(const TDesC8& aBuffer); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectCustomTransformation(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to geometrically control an image. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TGeometricalOperation : public TEffect williamr@4: { williamr@4: public: williamr@4: IMPORT_C CImgProcessor::TOperation Operation() const; williamr@4: IMPORT_C void SetOperationL(CImgProcessor::TOperation aOperation); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TGeometricalOperation(Plugin::MEffect& aEffect,CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: /** williamr@4: The class provides functions to insert a border to an image. williamr@4: The border file can be input as File, Buffer or Bitmap. williamr@4: williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: class TEffectBorder : public TEffect williamr@4: { williamr@4: public: williamr@4: IMPORT_C void SetInputL(const TDesC& aFilename); williamr@4: IMPORT_C void SetInputL(const TDesC8& aBuffer); williamr@4: IMPORT_C void SetInputL(const CFbsBitmap& aBitmap); williamr@4: williamr@4: private: williamr@4: friend class CImageProcessorImpl; williamr@4: TEffectBorder(Plugin::MEffect& aEffect, CImageProcessorImpl& aImageProcessorImpl); williamr@4: }; williamr@4: williamr@4: }//namespace ImageProcessor williamr@4: williamr@4: #endif //__IMAGE_PROCESSOR_EFFECT_H__