1 {
2 *****************************************************************************
3 * *
4 * This file is part of the ZCAD *
5 * *
6 * See the file COPYING.modifiedLGPL.txt, included in this distribution, *
7 * for details about the copyright. *
8 * *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
12 * *
13 *****************************************************************************
14 }
15 {
16 @author(Andrey Zubarev <zamtmn@yandex.ru>)
17 }
18 {$MODE OBJFPC}
19 unit zcchangeundocommand;
20 {$INCLUDE def.inc}
21 interface
22 uses uzepalette,uzbmemman,zeundostack,zebaseundocommands,uzbtypesbase,uzbtypes,
23 uzbgeomtypes,uzeentity,uzestyleslayers;
24
25 type
26 generic TGChangeCommand<_T> =object(TCustomChangeCommand)
27 public
28 OldData,NewData:_T;
29 PEntity:PGDBObjEntity;
30 constructor Assign(var data:_T);
31
32 procedure UnDo;virtual;
33 procedure Comit;virtual;
34 procedure ComitFromObj;virtual;
GetDataTypeSizenull35 function GetDataTypeSize:PtrInt;virtual;
36 end;
37 {$MACRO ON}
38
39 {$DEFINE INTERFACE}
40 {$DEFINE TCommand := TGDBVertexChangeCommand}
41 {$DEFINE PTCommand := PTGDBVertexChangeCommand}
42 {$DEFINE TData := GDBVertex}
43 {$I TGChangeCommandIMPL.inc}
44
45 {$DEFINE TCommand := TGDBDoubleChangeCommand}
46 {$DEFINE PTCommand := PTGDBDoubleChangeCommand}
47 {$DEFINE TData := GDBDouble}
48 {$I TGChangeCommandIMPL.inc}
49
50 {$DEFINE TCommand := TGDBCameraBasePropChangeCommand}
51 {$DEFINE PTCommand := PTGDBCameraBasePropChangeCommand}
52 {$DEFINE TData := GDBCameraBaseProp}
53 {$I TGChangeCommandIMPL.inc}
54
55 {$DEFINE TCommand := TGDBStringChangeCommand}
56 {$DEFINE PTCommand := PTGDBStringChangeCommand}
57 {$DEFINE TData := GDBString}
58 {$I TGChangeCommandIMPL.inc}
59
60 {$DEFINE TCommand := TGDBPoinerChangeCommand}
61 {$DEFINE PTCommand := PTGDBPoinerChangeCommand}
62 {$DEFINE TData := GDBPointer}
63 {$I TGChangeCommandIMPL.inc}
64
65 {$DEFINE TCommand := TGDBBooleanChangeCommand}
66 {$DEFINE PTCommand := PTGDBBooleanChangeCommand}
67 {$DEFINE TData := GDBBoolean}
68 {$I TGChangeCommandIMPL.inc}
69
70 {$DEFINE TCommand := TGDBGDBByteChangeCommand}
71 {$DEFINE PTCommand := PTGDBGDBByteChangeCommand}
72 {$DEFINE TData := GDBByte}
73 {$I TGChangeCommandIMPL.inc}
74
75 {$DEFINE TCommand := TGDBTGDBLineWeightChangeCommand}
76 {$DEFINE PTCommand := PTGDBTGDBLineWeightChangeCommand}
77 {$DEFINE TData := TGDBLineWeight}
78 {$I TGChangeCommandIMPL.inc}
79
80 {$DEFINE TCommand := TGDBTGDBPaletteColorChangeCommand}
81 {$DEFINE PTCommand := PTGDBTGDBPaletteColorChangeCommand}
82 {$DEFINE TData := TGDBPaletteColor}
83 {$I TGChangeCommandIMPL.inc}
84
85 {$DEFINE TCommand := TGDBTTextJustifyChangeCommand}
86 {$DEFINE PTCommand := PTGDBTTextJustifyChangeCommand}
87 {$DEFINE TData := TTextJustify}
88 {$I TGChangeCommandIMPL.inc}
89 {$UNDEF INTERFACE}
90
91 {$DEFINE CLASSDECLARATION}
92 {$DEFINE TCommand := TGDBVertexChangeCommand}
93 {$DEFINE PTCommand := PTGDBVertexChangeCommand}
94 {$DEFINE TData := GDBVertex}
95 {$I TGChangeCommandIMPL.inc}
96
97 {$DEFINE TCommand := TGDBDoubleChangeCommand}
98 {$DEFINE PTCommand := PTGDBDoubleChangeCommand}
99 {$DEFINE TData := GDBDouble}
100 {$I TGChangeCommandIMPL.inc}
101
102 {$DEFINE TCommand := TGDBCameraBasePropChangeCommand}
103 {$DEFINE PTCommand := PTGDBCameraBasePropChangeCommand}
104 {$DEFINE TData := GDBCameraBaseProp}
105 {$I TGChangeCommandIMPL.inc}
106
107 {$DEFINE TCommand := TGDBStringChangeCommand}
108 {$DEFINE PTCommand := PTGDBStringChangeCommand}
109 {$DEFINE TData := GDBString}
110 {$I TGChangeCommandIMPL.inc}
111
112 {$DEFINE TCommand := TGDBPoinerChangeCommand}
113 {$DEFINE PTCommand := PTGDBPoinerChangeCommand}
114 {$DEFINE TData := GDBPointer}
115 {$I TGChangeCommandIMPL.inc}
116
117 {$DEFINE TCommand := TGDBBooleanChangeCommand}
118 {$DEFINE PTCommand := PTGDBBooleanChangeCommand}
119 {$DEFINE TData := GDBBoolean}
120 {$I TGChangeCommandIMPL.inc}
121
122 {$DEFINE TCommand := TGDBGDBByteChangeCommand}
123 {$DEFINE PTCommand := PTGDBGDBByteChangeCommand}
124 {$DEFINE TData := GDBByte}
125 {$I TGChangeCommandIMPL.inc}
126
127 {$DEFINE TCommand := TGDBTGDBLineWeightChangeCommand}
128 {$DEFINE PTCommand := PTGDBTGDBLineWeightChangeCommand}
129 {$DEFINE TData := TGDBLineWeight}
130 {$I TGChangeCommandIMPL.inc}
131
132 {$DEFINE TCommand := TGDBTGDBPaletteColorChangeCommand}
133 {$DEFINE PTCommand := PTGDBTGDBPaletteColorChangeCommand}
134 {$DEFINE TData := TGDBPaletteColor}
135 {$I TGChangeCommandIMPL.inc}
136
137 {$DEFINE TCommand := TGDBTTextJustifyChangeCommand}
138 {$DEFINE PTCommand := PTGDBTTextJustifyChangeCommand}
139 {$DEFINE TData := TTextJustify}
140 {$I TGChangeCommandIMPL.inc}
141 {$UNDEF CLASSDECLARATION}
142 implementation
143 uses uzcdrawings,uzcinterface;
144 constructor TGChangeCommand.Assign(var data:_T);
145 begin
146 Addr:=@data;
147 olddata:=data;
148 newdata:=data;
149 PEntity:=nil;
150 end;
151 procedure TGChangeCommand.UnDo;
152 begin
153 _T(addr^):=OldData;
154 if assigned(PEntity)then
155 PEntity^.YouChanged(drawings.GetCurrentDWG^);
156 ZCMsgCallBackInterface.Do_GUIaction(nil,ZMsgID_GUIActionRebuild);
157 //if assigned(SetVisuaProplProc)then
158 // SetVisuaProplProc;
159 end;
160 procedure TGChangeCommand.Comit;
161 begin
162 _T(addr^):=NewData;
163 if assigned(PEntity)then
164 PEntity^.YouChanged(drawings.GetCurrentDWG^);
165 ZCMsgCallBackInterface.Do_GUIaction(nil,ZMsgID_GUIActionRebuild);
166 //if assigned(SetVisuaProplProc)then
167 // SetVisuaProplProc;
168
169 end;
170 procedure TGChangeCommand.ComitFromObj;
171 begin
172 NewData:=_T(addr^);
173 end;
GetDataTypeSizenull174 function TGChangeCommand.GetDataTypeSize:PtrInt;
175 begin
176 result:=sizeof(_T);
177 end;
178
179 {$DEFINE IMPLEMENTATION}
180 {$DEFINE TCommand := TGDBVertexChangeCommand}
181 {$DEFINE PTCommand := PTGDBVertexChangeCommand}
182 {$DEFINE TData := GDBVertex}
183 {$I TGChangeCommandIMPL.inc}
184
185 {$DEFINE TCommand := TGDBDoubleChangeCommand}
186 {$DEFINE PTCommand := PTGDBDoubleChangeCommand}
187 {$DEFINE TData := GDBDouble}
188 {$I TGChangeCommandIMPL.inc}
189
190 {$DEFINE TCommand := TGDBCameraBasePropChangeCommand}
191 {$DEFINE PTCommand := PTGDBCameraBasePropChangeCommand}
192 {$DEFINE TData := GDBCameraBaseProp}
193 {$I TGChangeCommandIMPL.inc}
194
195 {$DEFINE TCommand := TGDBStringChangeCommand}
196 {$DEFINE PTCommand := PTGDBStringChangeCommand}
197 {$DEFINE TData := GDBString}
198 {$I TGChangeCommandIMPL.inc}
199
200 {$DEFINE TCommand := TGDBPoinerChangeCommand}
201 {$DEFINE PTCommand := PTGDBPoinerChangeCommand}
202 {$DEFINE TData := GDBPointer}
203 {$I TGChangeCommandIMPL.inc}
204
205 {$DEFINE TCommand := TGDBBooleanChangeCommand}
206 {$DEFINE PTCommand := PTGDBBooleanChangeCommand}
207 {$DEFINE TData := GDBBoolean}
208 {$I TGChangeCommandIMPL.inc}
209
210 {$DEFINE TCommand := TGDBGDBByteChangeCommand}
211 {$DEFINE PTCommand := PTGDBGDBByteChangeCommand}
212 {$DEFINE TData := GDBByte}
213 {$I TGChangeCommandIMPL.inc}
214
215 {$DEFINE TCommand := TGDBTGDBLineWeightChangeCommand}
216 {$DEFINE PTCommand := PTGDBTGDBLineWeightChangeCommand}
217 {$DEFINE TData := TGDBLineWeight}
218 {$I TGChangeCommandIMPL.inc}
219
220 {$DEFINE TCommand := TGDBTGDBPaletteColorChangeCommand}
221 {$DEFINE PTCommand := PTGDBTGDBPaletteColorChangeCommand}
222 {$DEFINE TData := TGDBPaletteColor}
223 {$I TGChangeCommandIMPL.inc}
224
225 {$DEFINE TCommand := TGDBTTextJustifyChangeCommand}
226 {$DEFINE PTCommand := PTGDBTTextJustifyChangeCommand}
227 {$DEFINE TData := TTextJustify}
228 {$I TGChangeCommandIMPL.inc}
229 {$UNDEF IMPLEMENTATION}
230
231 {$MACRO OFF}
232 end.
233
234