diff -r 57d4cdd99204 -r edfc90759b9f imageeditor/plugins/TextPlugin/inc/ImageEditorTextControl.h --- /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 + +#include "PreviewControlBase.h" +#include "MTimerCallBack.h" +#include + +// 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