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