Initial revision
[blender-staging.git] / intern / action / intern / ACT_ActionC-Api.cpp
1 /**
2  * $Id$
3  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version. The Blender
9  * Foundation also sells licenses for use in proprietary software under
10  * the Blender License.  See http://www.blender.org/BL/ for information
11  * about this.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21  *
22  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23  * All rights reserved.
24  *
25  * The Original Code is: all of this file.
26  *
27  * Contributor(s): none yet.
28  *
29  * ***** END GPL/BL DUAL LICENSE BLOCK *****
30  */
31
32 /**
33
34  * $Id$
35  * Copyright (C) 2001 NaN Technologies B.V.
36  * @author      Maarten Gribnau
37  * @date        April, 25, 2001
38  */
39
40 #include "ACT_ActionC-Api.h"
41
42 #include "ACT_ActionStack.h"
43 #include "ACT_CallbackAction.h"
44
45
46 ACT_ActionPtr ACT_ActionCreate(
47         char* name,
48         int isApplied,
49         ACT_ActionUserDataPtr data,
50         ACT_ActionApplyProcPtr applyProc,
51         ACT_ActionUndoProcPtr undoProc,
52         ACT_ActionDisposeProcPtr disposeProc)
53 {
54         STR_String tmp (name);
55         ACT_CallbackAction* action = new ACT_CallbackAction(tmp, isApplied != 0, data, applyProc, undoProc, disposeProc);
56         return (ACT_ActionPtr) action;
57 }
58
59
60 char* ACT_ActionGetName(ACT_ActionPtr action)
61 {
62         return action ? ((ACT_Action*)action)->getName() : 0;
63 }
64
65
66 ACT_ActionStackPtr ACT_ActionStackCreate(unsigned int stackSize)
67 {
68         return ((ACT_ActionStackPtr) (new ACT_ActionStack (stackSize)));
69 }
70
71
72 void ACT_ActionStackDispose(ACT_ActionStackPtr stack)
73 {
74         if (stack) {
75                 delete (ACT_ActionStack*) stack;
76         }
77 }
78
79
80 unsigned int ACT_ActionStackGetStackDepth(ACT_ActionStackPtr stack)
81 {
82         return stack ? ((ACT_ActionStack*)stack)->getStackDepth() : 0;
83 }
84
85 unsigned int ACT_ActionStackGetMaxStackDepth(ACT_ActionStackPtr stack)
86 {
87         return stack ? ((ACT_ActionStack*)stack)->getMaxStackDepth() : 0;
88 }
89
90 void ACT_ActionStackSetMaxStackDepth(ACT_ActionStackPtr stack, unsigned int maxStackDepth)
91 {
92         if (stack) {
93                 ((ACT_ActionStack*)stack)->setMaxStackDepth(maxStackDepth);
94         }
95 }
96
97 void ACT_ActionStackPush(ACT_ActionStackPtr stack, ACT_ActionPtr action)
98 {
99         if (stack && action) {
100                 ((ACT_ActionStack*)stack)->push(*((ACT_Action*)action));
101         }
102 }
103
104
105 ACT_ActionStackPtr ACT_ActionStackPeekUndo(ACT_ActionStackPtr stack)
106 {
107         return (ACT_ActionStackPtr) (stack ? ((ACT_ActionStack*)stack)->peekUndo() : 0);
108 }
109
110
111 ACT_ActionStackPtr ACT_ActionStackPeekRedo(ACT_ActionStackPtr stack)
112 {
113         return (ACT_ActionStackPtr) (stack ? ((ACT_ActionStack*)stack)->peekRedo() : 0);
114 }
115
116
117 void ACT_ActionStackUndo(ACT_ActionStackPtr stack)
118 {
119         if (stack) {
120                 ((ACT_ActionStack*)stack)->undo();
121         }
122 }
123
124
125 void ACT_ActionStackRedo(ACT_ActionStackPtr stack)
126 {
127         if (stack) {
128                 ((ACT_ActionStack*)stack)->redo();
129         }
130 }