00001 #ifndef __MOUSE_H__
00002 #define __MOUSE_H__
00003
00004
00005
00006
00007
00008
00009 #include "viasgui.h"
00010 #include "workspace.h"
00011 #include "paint.h"
00012 #include "cropcube.h"
00013 #include "ffruler.h"
00014 #include "dialogproc.h"
00015 #include "vectori.h"
00016 #include "statusbar.h"
00017
00018
00019 typedef enum
00020 {
00021 vMOUSE_MODE_DRAG_STACKS,
00022 vMOUSE_MODE_DRAG_WORKSPACE,
00023 vMOUSE_MODE_ZOOM_IN,
00024 vMOUSE_MODE_ZOOM_OUT,
00025 vMOUSE_MODE_CROP_CUBE,
00026 vMOUSE_MODE_MAGNET,
00027 vMOUSE_MODE_ALIGN,
00028 vMOUSE_MODE_RULER,
00029 vMOUSE_MODE_SAMPLER,
00030
00031 vMOUSE_MODE_SENTINEL
00032 }
00033 vMOUSE_MODE;
00034
00035
00036 #define vNUM_MOUSE_MODES ( ( vINT )vMOUSE_MODE_SENTINEL )
00037
00038
00039 typedef vVOID ( *MouseMessageProc )( WPARAM, LPARAM );
00040 typedef vVOID ( *MouseModeProc )( vVOID );
00041 typedef vVOID ( CALLBACK *MouseTimerProc )( HWND, UINT, UINT, DWORD );
00042
00043
00044 typedef struct tagMouseControl
00045 {
00046 HWND hOwner;
00047 vMOUSE_MODE mode;
00048 vFLAGS flags;
00049 Vector2i oldClientCoord;
00050 Vector2i oldWorkspaceCoord;
00051 Vector2i newClientCoord;
00052 Vector2i newWorkspaceCoord;
00053 Vector2i lockCoord;
00054 CropCube cropCube;
00055 vHIMAGESTACK hCropStack;
00056 FFRULER ruler;
00057 MouseMessageProc onMove;
00058 MouseMessageProc onLButtonDown;
00059 MouseMessageProc onLButtonUp;
00060 MouseMessageProc onLButtonDblClk;
00061 MouseMessageProc onRButtonDown;
00062 MouseMessageProc onRButtonUp;
00063 MouseTimerProc onTimer;
00064 MouseModeProc onSet;
00065 MouseModeProc onKill;
00066 PaintingHookProc onPaintingHook;
00067 vINT undoEnable;
00068 vINT redoEnable;
00069 vBOOL isEnabled;
00070 }
00071 MouseControl;
00072
00073
00074 #define vBIT_MOUSE_DRAGGING vBIT_0
00075 #define vBIT_MOUSE_TRACKING vBIT_1
00076 #define vBIT_MOUSE_CHANGES vBIT_2
00077 #define vBIT_MOUSE_CROPPED vBIT_3
00078 #define vBIT_MOUSE_LOCKED vBIT_4
00079 #define vBIT_MOUSE_LOCK_X vBIT_5
00080
00081
00082 #define vMOUSE_TIMER_ID 101
00083 #define vMOUSE_TIMER_ELAPSE 200
00084
00085
00086 vVOID CreateMouseControl( HWND hOwner );
00087 vVOID DestroyMouseControl( vVOID );
00088
00089 MouseControl* GetMouseControl( vVOID );
00090
00091
00092
00093 vVOID EnableMouse( vVOID );
00094
00095 vVOID DisableMouse( vVOID );
00096
00097
00098 vVOID SetDefaultMouseMode( vVOID );
00099 vVOID SetMouseMode( vMOUSE_MODE mode );
00100 vMOUSE_MODE GetMouseMode( vVOID );
00101
00102
00103
00104 vVOID HandleMouseCropCube( vVOID );
00105 vVOID HandleMouseAlign( vHIMAGESTACK hAnchor );
00106
00107 vVOID HandleMouseZoomActualPixels( LPARAM lParam );
00108
00109
00110
00111 vVOID SetMouseZoomCursor( vVOID );
00112
00113
00114
00115
00116 vVOID OnMouseMove( WPARAM wParam, LPARAM lParam );
00117 vVOID OnMouseLButtonDown( WPARAM wParam, LPARAM lParam );
00118 vVOID OnMouseLButtonUp( WPARAM wParam, LPARAM lParam );
00119 vVOID OnMouseLButtonDblClk( WPARAM wParam, LPARAM lParam );
00120 vVOID OnMouseRButtonDown( WPARAM wParam, LPARAM lParam );
00121 vVOID OnMouseRButtonUp( WPARAM wParam, LPARAM lParam );
00122
00123
00124 #endif
00125