--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imageeditor/plugins/RedEyePlugin/inc/ImageEditorRedEyeReductionControl.h Fri Jan 29 13:53:17 2010 +0200
@@ -0,0 +1,564 @@
+/*
+* 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:
+* Header file for RedEyeReduction plugin control class.
+*
+*/
+
+
+
+#ifndef IMAGEEDITORCROPCONTROL_H
+#define IMAGEEDITORCROPCONTROL_H
+
+// INCLUDES
+#include <coecntrl.h>
+#include "PreviewControlBase.h"
+
+// FORWARD DECLARATIONS
+class CAknView;
+class CFbsBitmap;
+class CPluginInfo;
+class CSystemParameters;
+class CAknInfoPopupNoteController;
+
+#ifdef RD_TACTILE_FEEDBACK
+class MTouchFeedback;
+#endif /* RD_TACTILE_FEEDBACK */
+
+/* CLASS: CImageEditorRedEyeReductionControl
+*
+* CImageEditorRedEyeReductionControl is a control for red eye reduction plug-in.
+*
+*/
+class CImageEditorRedEyeReductionControl : public CPreviewControlBase
+{
+
+public:
+
+/** @name Methods:*/
+//@{
+
+ /** NewL factory method, pops cleanupstack
+ *
+ * @param aRect - control rectangle
+ * @param aParent - pointer to window owning control
+ * @return pointer to created CImageEditorRedEyeReductionControl object
+ */
+ static CImageEditorRedEyeReductionControl * NewL (
+ const TRect & aRect,
+ CCoeControl * aParent
+ );
+
+ /** DancingAntzCallback
+ *
+ * Static callback for rotating dancing ants.
+ *
+ * @param aPtr - parameter given for TCallBack
+ * @return TInt
+ */
+ static TInt DancingAntzCallback (TAny * aPtr);
+
+ /** FastKeyCallback
+ *
+ * Static callback for triggering keys faster.
+ *
+ * @param aPtr - parameter given for TCallBack
+ * @return TInt
+ */
+ static TInt FastKeyCallback (TAny * aPtr);
+
+ /** Destructor
+ *
+ * @param -
+ * @return -
+ */
+ virtual ~CImageEditorRedEyeReductionControl ();
+
+ /* Setter for view reference
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual void SetView (CAknView * aView);
+
+ /* SetSelectedUiItemL
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual void SetSelectedUiItemL (CPluginInfo * aItem);
+
+ /** PrepareL
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual void PrepareL ();
+
+ /* OfferKeyEventL
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual TKeyResponse OfferKeyEventL (
+ const TKeyEvent & aKeyEvent,
+ TEventCode aType
+ );
+
+ /* HandlePluginCommandL
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual void HandlePluginCommandL (const TInt aCommand);
+
+ /* GetDimmedMenuItems
+ *
+ * @see CImageEditorControlBase
+ */
+ virtual TBitField GetDimmedMenuItems();
+
+ /* GetSoftkeyIndexL
+ *
+ * @see CImageEditorControlBase
+ */
+ virtual TInt GetSoftkeyIndexL();
+
+ /* GetNaviPaneTextL
+ *
+ * @see CImageEditorControlBase
+ */
+ virtual TPtrC GetNaviPaneTextL (
+ TBool& aLeftNaviPaneScrollButtonVisibile,
+ TBool& aRightNaviPaneScrollButtonVisible);
+
+ /* GetParam
+ *
+ * Gets pointer to the parameter struct.
+ *
+ * @param -
+ * @return - pointer to MIA parameter struct
+ */
+ TRect GetParam ();
+
+ /* SetSysteParameters
+ *
+ * Sets reference to system parameters to plug-in.
+ *
+ * @param aSysPars - System parameters instance
+ * @return -
+ */
+ void SetSystemParameters (const CSystemParameters * aSysPars);
+
+ /** IsReadyToRender
+ *
+ * Return ETrue if all parameters have valid value and filter
+ * can be rendered.
+ *
+ * @param -
+ * @return - ETrue if ready to render, otherwise EFalse
+ */
+ TBool IsReadyToRender() const;
+
+ /* GetHelpContext
+ *
+ * @see CCoeControl
+ *
+ */
+ virtual void GetHelpContext(TCoeHelpContext& aContext) const;
+
+
+//@}
+
+protected:
+
+/** @name Methods:*/
+//@{
+ /* SizeChanged
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual void SizeChanged();
+
+ /* HandlePointerEventL
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual void HandlePointerEventL( const TPointerEvent &aPointerEvent );
+
+
+//@}
+
+/** @name Members:*/
+//@{
+
+//@}
+
+private:
+
+/** @name Methods:*/
+//@{
+
+ /** Default constructor
+ *
+ * @param -
+ * @return -
+ */
+ CImageEditorRedEyeReductionControl ();
+
+ /** Second phase constructor
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual void ConstructL (
+ const TRect & aRect,
+ CCoeControl * aParent
+ );
+
+ /** Draw
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual void Draw (const TRect & aRect) const;
+
+ /** DrawDancingAntz
+ *
+ * Drawing function for dancing ants selection border.
+ *
+ * @param aRect - control rectangle in need of refreshing
+ * @return -
+ */
+ void DrawDancingAntz (const TRect & aRect) const;
+
+ /** NaviDown
+ *
+ * Handles navi key down event.
+ *
+ * @param -
+ * @return -
+ */
+ void NaviDown();
+
+ /** NaviUp
+ *
+ * Handles nave key up event.
+ *
+ * @param -
+ * @return -
+ */
+ void NaviUp();
+
+ /** NaviRight
+ *
+ * Handles nave key right event.
+ *
+ * @param -
+ * @return -
+ */
+ void NaviRight();
+
+ /** NaviLeft
+ *
+ * Handles navi key left event.
+ *
+ * @param -
+ * @return -
+ */
+ void NaviLeft();
+
+ /** KeyOkL
+ *
+ * Handles OK key event.
+ *
+ * @param -
+ * @return -
+ */
+ void KeyOkL();
+
+ /** CancelPluginL
+ *
+ * Handles the cancel command; Undo all the filters
+ * except for the first; the plugin manager takes care of that.
+ *
+ * @param -
+ * @return -
+ */
+ void CancelPluginL();
+
+ /** ToMoveState
+ *
+ * Handles transition to Move state.
+ *
+ * @param -
+ * @return -
+ */
+ void ToMoveStateL();
+
+ /** ToResizeState
+ *
+ * Handles transition to Resize state.
+ *
+ * @param -
+ * @return -
+ */
+ void ToResizeStateL();
+
+ /** CursorLocation
+ *
+ * Calculates the selection point in real coordinates
+ * relative to the preview image.
+ *
+ * @param -
+ * @return TPoint
+ */
+ TPoint CursorLocation() const;
+
+ /** SelectionRect
+ *
+ * Calculates a rectangle from the current coordinates and selection radius,
+ * in real coordinates relative to the preview image.
+ *
+ * @param aCenter centerpoint in real coordinates
+ * @return TRect
+ */
+ TRect SelectionRect( const TPoint& aCenter ) const;
+
+ /** ComputeParams
+ *
+ * Calculates the filter parameters and
+ * updates them to the engine parameter struct.
+ *
+ * @param -
+ * @return -
+ */
+ void ComputeParams();
+
+ /** AddFilterToEngineL
+ *
+ *
+ *
+ *
+ * @param -
+ * @return -
+ */
+ void AddFilterToEngineL();
+
+ /** UndoL
+ *
+ * Undo one step of the red-eye reduction process.
+ * (The scope is different from the global undo.)
+ *
+ * @param -
+ * @return -
+ */
+ void UndoL();
+
+ /** StartDancingAntzTimer
+ *
+ * Starts dancing ants timer.
+ *
+ * @param -
+ * @return -
+ */
+ void StartDancingAntzTimer();
+
+ /** StartFastKeyTimer
+ *
+ * Starts fast key timer.
+ *
+ * @param -
+ * @return -
+ */
+ void StartFastKeyTimer();
+
+ /** OnDancingAntzCallBack
+ *
+ * Timer event handler for dancing ants.
+ *
+ * @param -
+ * @return -
+ */
+ void OnDancingAntzCallBack();
+
+ /** OnFastKeyCallBackL
+ *
+ * Timer event handler for fast keys.
+ *
+ * @param -
+ * @return -
+ */
+ void OnFastKeyCallBackL();
+
+ /** Copy constructor, disabled
+ */
+ CImageEditorRedEyeReductionControl (const CImageEditorRedEyeReductionControl & rhs);
+
+ /** Assignment operator, disabled
+ */
+ CImageEditorRedEyeReductionControl & operator= (const CImageEditorRedEyeReductionControl & rhs);
+
+ /** ClipPosition
+ *
+ * Clips clipart position after screen mode change.
+ *
+ * @param -
+ * @return -
+ */
+ void ClipPosition();
+
+ /** SetCursorPosition
+ *
+ * Sets the cursor to a position given as a parameter
+ *
+ * @param aNewPosition a point where to set the cursor
+ * @return -
+ */
+ void SetCursorPosition( TPoint aNewPosition );
+
+ /** CrossHairCursorRect
+ *
+ * Returns the rect of Cross hair cursor
+ *
+ * @param -
+ * @return TRect cursor rect
+ */
+ TRect CrossHairCursorRect() const;
+
+ /** CursorTapped
+ *
+ * Gets a point as an parameter and returns whether
+ * current cursor rect includes that point
+ *
+ * @param aTappedPosition a point that was tapped by pen
+ * @return TBool ETrue if cursor includes tapped point
+ * EFalse otherwise
+ */
+ TBool CursorTapped( TPoint aTappedPosition ) const;
+
+ /** ShowTooltip
+ *
+ * Show tooltip text on the screen. Tooltip text is set based
+ * on the current state.
+ *
+ * @param -
+ * @return -
+ */
+ void ShowTooltip();
+
+ /** CalculateResize
+ *
+ * Function is used to calculate a new redius value for outline circle
+ * when circle is resized with touch. The value is calculated based on
+ * dragging start and end points.
+ *
+ * @param - aStartPoint - A position where dragging started
+ * @param - aEndPoint - A position where dragging ended
+ * @return - TBool - ETrue if radius value is changed in the function
+ */
+ TBool CalculateResize( TPoint aStartPoint, TPoint aEndPoint );
+
+//@}
+
+/** @name Typedefs:*/
+//@{
+ /** UI state
+ */
+ enum TRedEyeReductionStateState
+ {
+ // Invalid
+ ERedEyeReductionStateMin = 0,
+ // Move
+ ERedEyeReductionStateMoveCrosshair,
+ // Resize
+ ERedEyeReductionStateResizeSelection,
+ // Done - preparing to close
+ ERedEyeReductionStateDone,
+ // Invalid
+ ERedEyeReductionStateMax
+ } iState;
+//@}
+
+
+/** @name Members:*/
+//@{
+ /// Editor view
+ CAknView * iEditorView;
+ /// Cross hair icon
+ CFbsBitmap * iCrossHair;
+ CFbsBitmap * iCrossHairMask;
+ /// Visible image rect
+ const TRect* iVisibleImageRectPrev;
+ /// Viewport rect (the original image)
+ const TRect* iVisibleImageRect;
+ /// Plug-in info
+ CPluginInfo * iItem;
+ /// Navigation pane text
+ TBuf<64> iNaviPaneText;
+ /// Relative X position of the crosshair
+ TReal iX;
+ /// Relative Y position of the crosshair
+ TReal iY;
+ /// Relative selection radius
+ TReal iR;
+ /// Array of already selected red eye locations
+ RArray<TRect> iUndoArray;
+ /// Periodic timer for dancing ants and fast key events
+ CPeriodic * iTimer;
+ /// Dancing ants flag
+ TBool iAntFlag;
+ /// Pressed key event code
+ TInt iPressedKeyScanCode;
+ /// Are event keys handled
+ TBool iHandleEventKeys;
+ /// Number of ticks since timer start
+ TInt iTickCount;
+ /// Multiplier to control the navigation movement speed
+ TInt iNaviStepMultiplier;
+ /// Ready to render
+ TBool iReadyToRender;
+ /// Red-eye removal region
+ TRect iRedEyeRect;
+ /// If the flag is set, return empty paraeters
+ TBool iDoNotUpdateParameters;
+ /// Selection point on image, used when changing modes
+ TPoint iLockPoint;
+ /// System parameters
+ const CSystemParameters * iSysPars;
+ // Popup controller
+ CAknInfoPopupNoteController* iPopupController;
+ // Tooltip texts
+ HBufC * iTooltipLocate;
+ HBufC * iTooltipOutline;
+
+ // Cursor can be dragged or not with pen
+ TBool iCursorDragEnabled;
+
+ // Tapped position
+ TPoint iPointerPosition;
+
+ // Feedback for screen touch:
+#ifdef RD_TACTILE_FEEDBACK
+ MTouchFeedback* iTouchFeedBack;
+#endif /* RD_TACTILE_FEEDBACK */
+//@}
+
+};
+
+
+#endif