/*
* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "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:
*
* Description: Interface to animation
*
*/
#ifndef R_RPENINPUTANIM_H
#define R_RPENINPUTANIM_H
// INCLUDES
#include <e32std.h>
#include <e32base.h>
#include <w32std.h>
#include <peninputcmd.h>
#include "peninputcmdparamext.h"
/**
* Class for implementing animation functinality.
*
* This is the client side interface to the CSpriteAnim derived server side class.
*
* @since S60 v4.0
*/
class RPeninputAnim : public RAnim
{
public:
// Constructors and destructor
/**
* Default constructor. This is defined just to allow RPeninputAnim
* to be defined as non-pointer member. Use the other overloaded
* constructor for actual initialization.
*
* @since S60 v4.0
*/
RPeninputAnim();
/**
* Constructor.
*
* @since S60 v4.0
* @param aDll reference to loaded RAnimDll
*/
RPeninputAnim( RAnimDll& aDll );
/**
* Second phase construction.
*
* @since S60 v4.0
* @param aDevice reference to window server sprite.
*/
void ConstructL( const RWsSprite& aDevice );
/**
* Activates the sprite ie. makes it visible.
*
* @since S60 v4.0
*/
void Activate();
/**
* De-activates the sprite ie. makes it invisible.
*
* @since S60 v4.0
*/
void Deactivate();
/**
* Inform pen input animation thata the UI layout size has been changed
*
* @since S60 v4.0
* @param aSize The new layout size
* @return The operation code
*/
TInt LayoutSizeChangedL(const TSize& aSize);
/**
* set ui layout postion
*
* @since S60 v4.0
* @param aPt The layout position
* @return The operation result
*/
TInt SetUiLayoutPos(const TPoint& aPt);
/**
* Infor animation that display mode changed
*
* @since S60 v4.0
*/
void ChangeDisplayMode();
/**
* Update screen area
*
* @since S60 v4.0
* @param aRect The area to be updated.
* @param aFullUpdate The full-updating flag.
*/
void UpdateArea(const TRect& aRect,TBool aFullUpdate);
/**
* Update screen area
*
* @since S60 v4.0
* @param aArea The array of area to be updated
* @return None
*/
void UpdateArea(const RArray<TUpdateArea>& aArea);
/**
* Ask window server to capture the pointer
*
* @since S60 v4.0
* @param aFlag ETrue if need to capture the pointer
*/
void CapturePointer(TBool aFlag, TInt aCaptureCtrlID);
/**
* Ask animation simulate the event
*
* @since S60 v4.0
* @param aEvent The event to be simulated
*/
void SimulateEvent(const TRawEvent& aEvent);
#ifdef RD_TACTILE_FEEDBACK
/**
* Add feedback area. Send command to pen input animation
*
* @since S60 v4.0
* @param aArea The area data
* @param aCount area num
* @param Flag tells whether the command will be bufferred.
*/
void AddFeedbackAreaL(const TTactileFeedbackArea* aArea, TInt aCount,TBool aFlag);
/**
* Remove feedback area. Send command to pen input animation
*
* @since S60 v4.0
* @param aArea The area data
* @param aCount area num
* @param Flag tells whether the command will be bufferred.
*/
void RemoveFeedbackAreaL(const TTactileFeedbackArea* aArea, TInt aCount,TBool aFlag);
/**
* Change feedback area. Send command to pen input animation
*
* @since S60 v4.0
* @param aArea The area data
* @param aCount area num
* @param Flag tells whether the command will be bufferred.
*/
void ChangeFeedbackAreaL(const TTactileFeedbackArea* aArea, TInt aCount,TBool aFlag);
/**
* Change feedback type. Send command to pen input animation
*
* @since S60 v4.0
* @param aArea The area data
* @param aCount area num
* @param Flag tells whether the command will be bufferred.
*/
void ChangeFeedbackTypeL(const TTactileFeedbackArea* aArea, TInt aCount,TBool aFlag);
#endif // RD_TACTILE_FEEDBACK
void EnableSprite(TBool aFlag);
void GetDSAState(TBool& aState);
void SetDiscreeptPop(const TRect& aArea);
private:
/**
* Completes the sprite anim construction.
*
* @since S60 v4.0
*/
void FinishConstructionL();
#ifdef RD_TACTILE_FEEDBACK
/**
* Send feedback command to animation dll by Command
*
* @since S60 v4.0
* @param aArea The area data
* @param aCount The area number
* @param aOp The command id
*/
void DoFeedbackAreaOpL(const TTactileFeedbackArea* aArea, TInt aCount,TPeninputOpcodes aOp);
/**
* Send feedback command to animation dll by CommandReplyL
*
* @since S60 v4.0
* @param aArea The area data
* @param aCount The area number
* @param aOp The command id
*/
void DoFeedbackAreaOpReplyL(const TTactileFeedbackArea* aArea,
TInt aCount,TPeninputOpcodes aOp);
#endif // RD_TACTILE_FEEDBACK
};
#endif //R_RPENINPUTANIM_H
// End of File