--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imageeditor/plugins/TextPlugin/inc/ImageEditorTextControl.h Fri Jan 29 13:53:17 2010 +0200
@@ -0,0 +1,587 @@
+/*
+* 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:
+* Text plugin control class header.
+*
+*/
+
+
+
+#ifndef IMAGEEDITORTEXTCONTROL_H
+#define IMAGEEDITORTEXTCONTROL_H
+
+// INCLUDES
+#include <coecntrl.h>
+
+#include "PreviewControlBase.h"
+#include "MTimerCallBack.h"
+#include <ConeResLoader.h>
+
+// FORWARD DECLARATIONS
+class CAknView;
+class CFbsBitmap;
+class CPluginInfo;
+class CSystemParameters;
+class CJPTimer;
+class CAknInfoPopupNoteController;
+
+#ifdef RD_TACTILE_FEEDBACK
+class MTouchFeedback;
+#endif /* RD_TACTILE_FEEDBACK */
+
+/* CLASS: CImageEditorTextControl
+*
+* CImageEditorTextControl is a control for text insertion plug-in.
+*
+*/
+class CImageEditorTextControl : public CPreviewControlBase,
+ public MTimerCallBack
+
+{
+
+public:
+
+/** @name Methods:*/
+//@{
+
+ /** NewL factory method, pops cleanupstack
+ *
+ * @param aRect - control rectangle
+ * @param aParent - pointer to window owning control
+ * @return pointer to created CImageEditorTextControl object
+ */
+ static CImageEditorTextControl * NewL (
+ const TRect & aRect,
+ CCoeControl * aParent
+ );
+
+ /** Destructor
+ *
+ * @param -
+ * @return -
+ */
+ virtual ~CImageEditorTextControl ();
+
+ /** Second phase constructor
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual void ConstructL (
+ const TRect & aRect,
+ CCoeControl * aParent
+ );
+
+ /* 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
+ );
+
+ /* HandlePointerEventL
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual void HandlePointerEventL( const TPointerEvent &aPointerEvent );
+
+ /* HandlePluginCommandL
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual void HandlePluginCommandL (const TInt aCommand);
+
+ /* GetSoftkeyIndexL
+ *
+ * @see CImageEditorControlBase
+ */
+ virtual TInt GetSoftkeyIndexL();
+
+ /* GetContextMenuResourceId
+ *
+ * @see CImageEditorControlBase
+ */
+ virtual TInt GetContextMenuResourceId();
+
+ /* GetDimmedMenuItems
+ *
+ * @see CImageEditorControlBase
+ */
+ virtual TBitField GetDimmedMenuItems();
+
+ /* GetNaviPaneTextL
+ *
+ * @see CImageEditorControlBase
+ */
+ virtual TPtrC GetNaviPaneTextL (
+ TBool& aLeftNaviPaneScrollButtonVisibile,
+ TBool& aRightNaviPaneScrollButtonVisible);
+
+ /* GetParam
+ *
+ * Gets pointer to the parameter struct.
+ *
+ * @param -
+ * @return - pointer to MIA parameter struct
+ */
+ TDesC & GetParam ();
+
+ /* SetSysteParameters
+ *
+ * Sets reference to system parameters to plug-in.
+ *
+ * @param aSysPars - System parameters instance
+ * @return -
+ */
+ void SetSystemParameters (const CSystemParameters * aSysPars);
+
+ /* SetTextL
+ *
+ * Sets user inputted text to text plug-in.
+ *
+ * @param aText - text data
+ * @return -
+ */
+ void SetTextL (const TDesC & aText);
+
+ /* GetHelpContext
+ *
+ * @see CCoeControl
+ *
+ */
+ virtual void GetHelpContext(TCoeHelpContext& aContext) const;
+
+ /* IsReadyToRender
+ *
+ * @param -
+ * @return -
+ */
+ TBool IsReadyToRender () const;
+
+ /* TimerCallBack
+ *
+ * @see MTimerCallBack
+ *
+ */
+ virtual void TimerCallBack();
+
+//@}
+
+
+protected:
+
+/** @name Methods:*/
+//@{
+ /* SizeChanged
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual void SizeChanged();
+
+//@}
+
+/** @name Members:*/
+//@{
+
+//@}
+
+private:
+
+/** @name Methods:*/
+//@{
+
+ /** Default constructor
+ *
+ * @param -
+ * @return -
+ */
+ CImageEditorTextControl ();
+
+ /** Draw
+ *
+ * @see CImageEditorControlBase
+ *
+ */
+ virtual void Draw (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 nave key left event.
+ *
+ * @param -
+ * @return -
+ */
+ void NaviLeft();
+
+ /** ToMoveStateL
+ *
+ * Handles transition to Move state.
+ *
+ * @param -
+ * @return -
+ */
+ void ToMoveStateL();
+
+ /** ToResizeStateL
+ *
+ * Handles transition to Resize state.
+ *
+ * @param -
+ * @return -
+ */
+ void ToResizeStateL();
+
+ /** ToRotateStateL
+ *
+ * Handles transition to Rotate state.
+ *
+ * @param -
+ * @return -
+ */
+ void ToRotateStateL();
+
+ /** ToMainStateL
+ *
+ * Handles transition to Main state.
+ *
+ * @param -
+ * @return -
+ */
+ void ToMainStateL();
+
+ /** StoreTempParams
+ *
+ * Store all parameters to temp variables.
+ *
+ * @param -
+ * @return -
+ */
+ void StoreTempParams();
+
+ /** RestoreTempParams
+ *
+ * Restore parameters from temp variables.
+ *
+ * @param -
+ * @return -
+ */
+ void RestoreTempParams();
+
+ /** RenderTextImageL
+ *
+ * Renders the text into a EGray2 binary bitmap and copies the contents
+ * of the bitmap to a binary buffer.
+ *
+ * @param -
+ * @return -
+ */
+ void RenderTextImageL();
+
+ /** LoadIndicatorL
+ *
+ * Loads indicator.
+ *
+ * @param aBitmapInd - indicator bitmap MBM index
+ * @param aMaskInd - indicator mask MBM index
+ * @return -
+ */
+ void LoadIndicatorL (
+ TInt aBitmapInd,
+ TInt aMaskInd
+ );
+
+ /** ComputeIndicatorPosition
+ *
+ * Computes indicator position.
+ *
+ * @param -
+ * @return -
+ */
+ TPoint ComputeIndicatorPosition() const;
+
+ /** StoreParameters
+ *
+ * Stores parameters to command line.
+ *
+ * @param -
+ * @return -
+ */
+ void StoreParameters();
+
+ /** StorePosAndScaleRelScreen
+ *
+ * Stores text position and scale relative to
+ * screen.
+ *
+ * @param -
+ * @return -
+ */
+ void StorePosAndScaleRelScreen();
+
+ /** RestorePosAndScaleRelScreen
+ *
+ * Restores text position and scale relative to
+ * screen.
+ *
+ * @param -
+ * @return -
+ */
+ void RestorePosAndScaleRelScreen();
+
+ /** StorePosAndScaleRelImage
+ *
+ * Stores position and scale relative to image.
+ *
+ * @param -
+ * @return -
+ */
+ void StorePosAndScaleRelImage();
+
+ /** StoreParameters
+ *
+ * Restores position and scale relative to image.
+ *
+ * @param -
+ * @return -
+ */
+ void RestorePosAndScaleRelImage();
+
+ /** ClipPosition
+ *
+ * Clips clipart position after screen mode change.
+ *
+ * @param -
+ * @return -
+ */
+ void ClipPosition();
+
+ /** SetTextPosition
+ *
+ * Sets current Text to a new position
+ *
+ * @param - aPointedPosition Middle point position on the screen where
+ * text should should be moved
+ * @return -
+ */
+ void SetTextPosition( TPoint aPointedPosition );
+
+ /** ShowTooltip
+ *
+ * Show tooltip text on the screen. Tooltip text is set based
+ * on the current state.
+ *
+ * @param -
+ * @return -
+ */
+ void ShowTooltip();
+
+ /** CalculateRotation
+ *
+ * Function is used to calculate rotation when text is rotated
+ * with touch. Needed rotation is calculated based on dragging start
+ * and end points. This function also changes rotation variables after
+ * calculation.
+ *
+ * @param - aStartPoint - A position where dragging started
+ * @param - aEndPoint - A position where dragging ended
+ * @return - ETrue if rotate value is changed in the function
+ */
+ TBool CalculateRotation( TPoint aStartPoint, TPoint aEndPoint );
+
+ /** CalculateResize
+ *
+ * Function is used to calculate new scale value when text is resized
+ * with touch. The value is calculated based on dragging start
+ * and end points. This function also changes scale member variable
+ * after calculation.
+ *
+ * @param - aStartPoint - A position where dragging started
+ * @param - aEndPoint - A position where dragging ended
+ * @return - TBool - ETrue if scale value is changed in the function
+ */
+ TBool CalculateResize( TPoint aStartPoint, TPoint aEndPoint );
+
+//@}
+
+/** @name Typedefs:*/
+//@{
+ enum TInsertTextState
+ {
+ // Invalid
+ EInsertTextStateMin = 0,
+ // Plugin main view first time
+ EInsertTextStateFirst,
+ // Plugin main view
+ EInsertTextStateMain,
+ // Move
+ EInsertTextStateMove,
+ // Rotate
+ EInsertTextStateRotate,
+ // Resize
+ EInsertTextStateResize,
+ // Invalid
+ ECropStateMax
+ } iState;
+//@}
+
+
+/** @name Members:*/
+//@{
+ // Parent control
+ CCoeControl* iParent;
+
+ /// Editor view
+ CAknView * iEditorView;
+
+ /// Source image size
+ const CSystemParameters * iSysPars;
+
+ /// Plug-in info
+ CPluginInfo * iItem;
+
+ /// Navigation pane text
+ TBuf<64> iNaviPaneText;
+
+ /// User inputted text
+ TBuf<256> iText;
+
+ /// Text x position
+ TInt iX;
+ /// Text y position
+ TInt iY;
+ /// Text scale
+ TInt iScale;
+ /// Text scale minimum
+ TInt iScaleMin;
+ /// Text scale maximum
+ TInt iScaleMax;
+ /// Text angle
+ TInt iAngle;
+ /// Text color
+ TRgb iRgb;
+
+ /// Temp parameters
+ TInt iTempX;
+ TInt iTempY;
+ TInt iTempScale;
+ TInt iTempAngle;
+
+ TReal iScaleOld;
+ TReal iPosXOld;
+ TReal iPosYOld;
+
+ /// Timer for fast key events
+ CJPTimer * iTimer;
+ TUint32 iKeyCode;
+
+ /// Pressed key event code
+ TInt iPressedKeyScanCode;
+
+ /// Number of ticks since timer start
+ TInt iTickCount;
+
+ /// Multiplier to control the navigation movement speed
+ TInt iNaviStepMultiplier;
+
+ /// Showing Ok options menu, where some items are dimmed
+ TBool iDisplayingOkOptionsMenu;
+
+ /// State indicator glyph
+ CFbsBitmap * iIndicator;
+ CFbsBitmap * iIndicatorMask;
+
+ /// Ready to render
+ TBool iReadyToRender;
+
+ /// Parameter
+ TBuf<256> iParam;
+
+ // Popup controller
+ CAknInfoPopupNoteController* iPopupController;
+ // Tooltip texts
+ HBufC * iTooltipResize;
+ HBufC * iTooltipMove;
+ HBufC * iTooltipRotate;
+
+ // Previous pen position. Make touch rotating and resizing possible
+ TPoint iPointerPosition;
+
+ /// Resource reader
+ RConeResourceLoader iResLoader;
+
+ // Feedback for screen touch:
+#ifdef RD_TACTILE_FEEDBACK
+ MTouchFeedback* iTouchFeedBack;
+#endif /* RD_TACTILE_FEEDBACK */
+//@}
+
+};
+
+
+#endif