1 /* 2 * File: undo.h 3 * 4 * Description: header for undo.c 5 * 6 * 7 * This source code is part of kludge3d, and is released under the 8 * GNU General Public License. 9 * 10 * 11 */ 12 13 #ifndef UNDO_H 14 #define UNDO_H 15 16 #include <glib.h> 17 18 #include "geo.h" 19 #include "model.h" 20 21 /* 22 objects object mesh fargs iargs misc 23 ACTION_VERTEX_SEL list - - - - - 24 ACTION_VERTEX_UNSEL list - - - - - 25 ACTION_VERTEX_MOVE list, NULL==sel - - delta[3] - - 26 ACTION_VERTEX_ROT list, NULL==sel - - 0,0,0,angle axis - 27 ACTION_VERTEX_SCALE list, NULL==sel - - factor[3],center[3] - - 28 ACTION_VERTEX_ADD_TO_MODEL - vert - - - - 29 ACTION_VERTEX_REMOVE_MODEL - vert - - - - 30 ACTION_VERTEX_ADD_TO_MESH - vert mesh - - - 31 ACTION_VERTEX_REMOVE_MESH - vert mesh - - - 32 ACTION_VERTEX_ADD_TO_POLY - vert - - - poly 33 ACTION_VERTEX_REMOVE_POLY - vert - - v_idx poly 34 ACTION_VERTEX_SWITCH_POLY - vert - - v_idx poly 35 36 ACTION_POLY_SEL list - - - - - 37 ACTION_POLY_UNSEL list - - - - - 38 ACTION_POLY_ADD_TO_MESH - poly mesh - - - 39 ACTION_POLY_REMOVE_MESH - poly mesh - - - 40 ACTION_POLY_REVERSE_WINDING - poly - - - - 41 */ 42 43 typedef enum { 44 ACTION_UNKNOWN, 45 46 ACTION_VERTEX_SEL, 47 ACTION_VERTEX_UNSEL, 48 ACTION_VERTEX_MOVE, 49 ACTION_VERTEX_ROT, 50 ACTION_VERTEX_SCALE, 51 ACTION_VERTEX_ADD_TO_MODEL, 52 ACTION_VERTEX_REMOVE_MODEL, 53 ACTION_VERTEX_ADD_TO_MESH, 54 ACTION_VERTEX_REMOVE_MESH, 55 ACTION_VERTEX_ADD_TO_POLY, 56 ACTION_VERTEX_REMOVE_POLY, 57 ACTION_VERTEX_SWITCH_POLY, 58 59 ACTION_POLY_SEL, 60 ACTION_POLY_UNSEL, 61 ACTION_POLY_ADD_TO_MESH, 62 ACTION_POLY_REMOVE_MESH, 63 ACTION_POLY_REVERSE_WINDING, 64 65 ACTION_MESH_ADD, 66 ACTION_MESH_DEL, 67 ACTION_MESH_EDIT, 68 69 ACTION_MAX, /* don't add anything below here */ 70 ACTION_MARKER /* denotes the end-of-input */ 71 } ActionType; 72 73 74 typedef struct _Action Action; 75 struct _Action { 76 ActionType type; 77 78 GSList *objects; 79 void *object; 80 Mesh *mesh; 81 82 float *fargs; 83 int *iargs; 84 85 void *misc; 86 }; 87 88 89 void undo_init( void ) ; 90 91 void undo_enable( Model *model ) ; 92 void undo_disable( Model *model ) ; 93 void action_clear_stack( Model *model ) ; 94 void action_do( Model *model, ActionType type, GSList *objects, void *object, 95 Mesh *mesh, float *fargs, int *iargs, void *misc ); 96 void action_undo( Model *model ); 97 98 #endif 99