00001 #ifndef __EDITOR_H__
00002 #define __EDITOR_H__
00003
00004
00005
00006
00007
00008
00009
00010 #include "configure.h"
00011 #include "workspace.h"
00012
00013
00014 typedef enum
00015 {
00016 vNO_OPER,
00017 vOPER_STACK_TRANSLATION,
00018 vOPER_STACK_CROPPING,
00019 vOPER_STACK_REMOVAL,
00020 vOPER_STACK_ADDITIONS
00021 }
00022 vOPER_TYPE;
00023
00024
00025 #define vMAX_EDITABLE_STACKS 512
00026
00027
00028
00029
00030
00031
00032 typedef vVOID ( *UndoHookProc )( vVOID );
00033 typedef vVOID ( *RedoHookProc )( vVOID );
00034
00035
00036 typedef struct tagEditor
00037 {
00038 Workspace *workspace;
00039 vOPER_TYPE operType;
00040 vSIZE operCount;
00041 vHIMAGESTACK imageStacks[ vMAX_EDITABLE_STACKS ];
00042 vSIZE numStacks;
00043 vHIMAGESTACK deletedStacks[ vMAX_EDITABLE_STACKS ];
00044 vSIZE numDeletedStacks;
00045 UndoHookProc undoHook;
00046 RedoHookProc redoHook;
00047 }
00048 Editor;
00049
00050
00051
00052
00053
00054 Editor* GetEditor( vVOID );
00055
00056 vVOID SetEditorUndoHookProc( UndoHookProc proc );
00057 vVOID SetEditorRedoHookProc( RedoHookProc proc );
00058
00059
00060
00061
00062 vBOOL CreateEditor( Workspace *vws );
00063
00064
00065
00066
00067
00068 vVOID ClearEditor( Workspace *vws );
00069
00070
00071
00072
00073
00074
00075 vVOID DestroyEditor( Workspace *vws );
00076
00077
00078
00079
00080 vSIZE GetOperationCount( Workspace *vws );
00081
00082
00083
00084
00085
00086
00087
00088 vVOID SetEditorOperation( Workspace *vws, vOPER_TYPE type );
00089
00090
00091
00092
00093 vVOID AddStackToEditor( Workspace *vws, vHIMAGESTACK hStack );
00094 vVOID AddSelectedStacksToEditor( Workspace *vws );
00095
00096
00097 vVOID UndoLastEditorOperation( Workspace *vws );
00098 vVOID RedoLastEditorOperation( Workspace *vws );
00099
00100
00101 #endif
00102