00001 #ifndef __FFRULER_H__
00002 #define __FFRULER_H__
00003
00004
00005
00006
00007
00008
00009 #include "viasgui.h"
00010 #include "vectori.h"
00011 #include "dllist.h"
00012
00013
00014 DefineDll( FFRCTRLLIST,
00015 Vector2i point;,
00016 vINT pad;
00017 );
00018
00019
00020 typedef enum
00021 {
00022 vFFR_MODE_FIRST_CONTROL,
00023 vFFR_MODE_DRAG_CONTROL,
00024 vFFR_MODE_DRAG_RULER,
00025 vFFR_MODE_IDLE
00026 }
00027 vFFR_MODE_TYPE;
00028
00029
00030 typedef enum
00031 {
00032 vFFR_CURSOR_STANDARD,
00033 vFFR_CURSOR_OVER_CONTROL,
00034 vFFR_CURSOR_OVER_LINE,
00035
00036 vFFR_CURSOR_SENTINEL
00037 }
00038 vFFR_CURSOR_TYPE;
00039
00040 #define vNUM_FFR_CURSORS ( ( vINT )vFFR_CURSOR_SENTINEL )
00041
00042
00043 typedef struct tagFFRULER
00044 {
00045 HWND hOwner;
00046 HDC hDC;
00047 HPEN hPen;
00048 FFRCTRLLIST controls;
00049 FFRCTRLLISTIterator activeControl;
00050 vFFR_MODE_TYPE mode;
00051 vFFR_CURSOR_TYPE cursor;
00052 }
00053 FFRULER;
00054
00055
00056 #define vFFR_COLOR ( ( COLORREF )0x00808080 )
00057
00058 #define vFFR_CTRL_WIDTH 7
00059 #define vFFR_CTRL_HALF_WIDTH 3
00060 #define vFFR_CTRL_HEIGHT vFFR_CTRL_WIDTH
00061 #define vFFR_CTRL_HALF_HEIGHT vFFR_CTRL_HALF_WIDTH
00062
00063 #define vFFR_CTRL_TOLERANCE vFFR_CTRL_WIDTH
00064
00065 #define vFFR_LINE_TOLERANCE 25.0f
00066
00067
00068
00069
00070
00071 vBOOL CreateFreeFormRuler( FFRULER *ruler, HWND hOwner, HDC hDC );
00072
00073 vVOID DestroyFreeFormRuler( FFRULER *ruler );
00074
00075 vVOID DrawFreeFormRuler( FFRULER *ruler );
00076 vVOID EraseFreeFormRuler( FFRULER *ruler );
00077
00078
00079 typedef enum
00080 {
00081 vFFR_MOUSE_MOVE,
00082 vFFR_MOUSE_LBUTTONDOWN,
00083 vFFR_MOUSE_LBUTTONUP,
00084 vFFR_MOUSE_LBUTTONDBLCLK
00085 }
00086 vFFR_MOUSE_ACTION_TYPE;
00087
00088
00089
00090
00091 vBOOL OnMouseFreeFormRuler
00092 (
00093 FFRULER *ruler,
00094 vINT mouseX,
00095 vINT mouseY,
00096 vFFR_MOUSE_ACTION_TYPE mouseAction
00097 );
00098
00099
00100 vVOID SetFreeFormRulerLength( FFRULER *ruler );
00101
00102
00103 #endif
00104