MathgeomGLS
307 строк · 9.5 Кб
1unit fGridColors;
2
3interface
4
5uses
6Winapi.Windows,
7Winapi.Messages,
8System.SysUtils,
9System.Variants,
10System.Classes,
11System.UITypes,
12Vcl.Graphics,
13Vcl.Controls,
14Vcl.Forms,
15Vcl.Dialogs,
16Vcl.ComCtrls,
17Vcl.StdCtrls,
18Vcl.Buttons,
19
20uGlobal;
21
22type
23TFormGridColors = class(TForm)
24GroupBox1: TGroupBox;
25Label1: TLabel;
26Label2: TLabel;
27Label3: TLabel;
28Label4: TLabel;
29xyRed: TTrackBar;
30xyGreen: TTrackBar;
31xyBlue: TTrackBar;
32xyAlpha: TTrackBar;
33GroupBox2: TGroupBox;
34Label5: TLabel;
35Label6: TLabel;
36Label7: TLabel;
37Label8: TLabel;
38xzRed: TTrackBar;
39xzGreen: TTrackBar;
40xzBlue: TTrackBar;
41xzAlpha: TTrackBar;
42GroupBox3: TGroupBox;
43Label9: TLabel;
44Label10: TLabel;
45Label11: TLabel;
46Label12: TLabel;
47yzRed: TTrackBar;
48yzGreen: TTrackBar;
49yzBlue: TTrackBar;
50yzAlpha: TTrackBar;
51GroupBox4: TGroupBox;
52Label13: TLabel;
53Label14: TLabel;
54Label15: TLabel;
55Label16: TLabel;
56BoxRed: TTrackBar;
57BoxGreen: TTrackBar;
58BoxBlue: TTrackBar;
59BoxAlpha: TTrackBar;
60BackColorBtn: TSpeedButton;
61BitBtn1: TBitBtn;
62ColorDialog: TColorDialog;
63procedure FormShow(Sender: TObject);
64procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
65procedure xyRedChange(Sender: TObject);
66procedure xyGreenChange(Sender: TObject);
67procedure xyBlueChange(Sender: TObject);
68procedure xyAlphaChange(Sender: TObject);
69procedure xzRedChange(Sender: TObject);
70procedure xzGreenChange(Sender: TObject);
71procedure xzBlueChange(Sender: TObject);
72procedure xzAlphaChange(Sender: TObject);
73procedure yzRedChange(Sender: TObject);
74procedure yzGreenChange(Sender: TObject);
75procedure yzBlueChange(Sender: TObject);
76procedure yzAlphaChange(Sender: TObject);
77procedure BitBtn1Click(Sender: TObject);
78procedure BackColorBtnClick(Sender: TObject);
79procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
80procedure BoxRedChange(Sender: TObject);
81procedure BoxGreenChange(Sender: TObject);
82procedure BoxBlueChange(Sender: TObject);
83procedure BoxAlphaChange(Sender: TObject);
84private
85{ Private declarations }
86public
87procedure ShowGridColorData;
88end;
89
90var
91FormGridColors: TFormGridColors;
92
93//==================================================================
94implementation
95//==================================================================
96
97uses
98fPlot2D;
99
100{$R *.dfm}
101
102procedure TFormGridColors.BackColorBtnClick(Sender: TObject);
103begin
104ColorDialog.Color := ViewData.BackColor;
105if ColorDialog.Execute then
106begin
107ViewData.BackColor := ColorDialog.Color;
108FormPlot2D.GLSViewer.Buffer.BackgroundColor := Viewdata.BackColor;
109Altered := True;
110end;
111end;
112
113procedure TFormGridColors.BitBtn1Click(Sender: TObject);
114begin
115Close;
116end;
117
118procedure TFormGridColors.FormCloseQuery(Sender: TObject;
119var CanClose: Boolean);
120begin
121if GridColorsAltered then
122begin
123case MessageDlg('The current graph''s color data has been altered.'+
124#13#10'Do you wish to save the alterations ?', mtConfirmation,
125[mbYes, mbNo, mbCancel], 0) of
126mrYes: Altered := Altered or GridColorsAltered;
127mrCancel: begin
128CanClose := False;
129Exit;
130end;
131end;
132end;
133end;
134
135procedure TFormGridColors.FormKeyDown(Sender: TObject; var Key: Word;
136Shift: TShiftState);
137begin
138if Key = VK_ESCAPE then Close;
139end;
140
141procedure TFormGridColors.FormShow(Sender: TObject);
142begin
143ShowGridColorData;
144GridColorsAltered := False;
145end;
146
147procedure TFormGridColors.xyRedChange(Sender: TObject);
148begin
149FormPlot2D.GLxyGrid.LineColor.Red := xyRed.Position/255;
150ViewData.xyGrid.Color.X := FormPlot2D.GLxyGrid.LineColor.Red;
151GridColorsAltered := True;
152end; { TGridColorsForm.xyRedChange }
153
154procedure TFormGridColors.xyGreenChange(Sender: TObject);
155begin
156FormPlot2D.GLxyGrid.LineColor.Green := xyGreen.Position/255;
157ViewData.xyGrid.Color.Y := FormPlot2D.GLxyGrid.LineColor.Green;
158GridColorsAltered := True;
159end; { TGridColorsForm.xyGreenChange }
160
161procedure TFormGridColors.xyBlueChange(Sender: TObject);
162begin
163FormPlot2D.GLxyGrid.LineColor.Blue := xyBlue.Position/255;
164ViewData.xyGrid.Color.Z := FormPlot2D.GLxyGrid.LineColor.Blue;
165GridColorsAltered := True;
166end; { TGridColorsForm.xyBlueChange }
167
168procedure TFormGridColors.xyAlphaChange(Sender: TObject);
169begin
170FormPlot2D.GLxyGrid.LineColor.Alpha := xyAlpha.Position/1000;
171ViewData.xyGrid.Color.W := FormPlot2D.GLxyGrid.LineColor.Alpha;
172GridColorsAltered := True;
173end; { TGridColorsForm.xyAlphaChange }
174
175procedure TFormGridColors.xzRedChange(Sender: TObject);
176begin
177FormPlot2D.GLxzGrid.LineColor.Red := xzRed.Position/255;
178ViewData.xzGrid.Color.X := FormPlot2D.GLxzGrid.LineColor.Red;
179GridColorsAltered := True;
180end; { TGridColorsForm.xzRedChange }
181
182procedure TFormGridColors.xzGreenChange(Sender: TObject);
183begin
184FormPlot2D.GLxzGrid.LineColor.Green := xzGreen.Position/255;
185ViewData.xzGrid.Color.Y := FormPlot2D.GLxzGrid.LineColor.Green;
186GridColorsAltered := True;
187end; { TGridColorsForm.xzGreenChange }
188
189procedure TFormGridColors.xzBlueChange(Sender: TObject);
190begin
191FormPlot2D.GLxzGrid.LineColor.Blue := xzBlue.Position/255;
192ViewData.xzGrid.Color.Z := FormPlot2D.GLxzGrid.LineColor.Blue;
193GridColorsAltered := True;
194end; { TGridColorsForm.xzBlueChange }
195
196procedure TFormGridColors.xzAlphaChange(Sender: TObject);
197begin
198FormPlot2D.GLxzGrid.LineColor.Alpha := xzAlpha.Position/1000;
199ViewData.xzGrid.Color.W := FormPlot2D.GLxzGrid.LineColor.Alpha;
200GridColorsAltered := True;
201end; { TGridColorsForm.xzAlphaChange }
202
203procedure TFormGridColors.yzRedChange(Sender: TObject);
204begin
205FormPlot2D.GLyzGrid.LineColor.Red := yzRed.Position/255;
206ViewData.yzGrid.Color.X := FormPlot2D.GLyzGrid.LineColor.Red;
207GridColorsAltered := True;
208end; { TGridColorsForm.yzRedChange }
209
210procedure TFormGridColors.yzGreenChange(Sender: TObject);
211begin
212FormPlot2D.GLyzGrid.LineColor.Green := yzGreen.Position/255;
213ViewData.yzGrid.Color.Y := FormPlot2D.GLyzGrid.LineColor.Green;
214GridColorsAltered := True;
215end; { TGridColorsForm.yzGreenChange }
216
217procedure TFormGridColors.yzBlueChange(Sender: TObject);
218begin
219FormPlot2D.GLyzGrid.LineColor.Blue := yzBlue.Position/255;
220ViewData.yzGrid.Color.Z := FormPlot2D.GLyzGrid.LineColor.Blue;
221GridColorsAltered := True;
222end; { TGridColorsForm.yzBlueChange }
223
224procedure TFormGridColors.yzAlphaChange(Sender: TObject);
225begin
226FormPlot2D.GLyzGrid.LineColor.Alpha := yzAlpha.Position/1000;
227ViewData.yzGrid.Color.W := FormPlot2D.GLyzGrid.LineColor.Alpha;
228GridColorsAltered := True;
229end; { TGridColorsForm.yzAlphaChange }
230
231procedure TFormGridColors.BoxRedChange(Sender: TObject);
232begin
233FormPlot2D.BoxLine1.LineColor.Red := BoxRed.Position/255;
234FormPlot2D.BoxLine2.LineColor := FormPlot2D.BoxLine1.LineColor;
235FormPlot2D.BoxLine3.LineColor := FormPlot2D.BoxLine1.LineColor;
236FormPlot2D.BoxLine4.LineColor := FormPlot2D.BoxLine1.LineColor;
237ViewData.BoxLnColor.X := FormPlot2D.BoxLine1.LineColor.Red;
238GridColorsAltered := True;
239end; { TGridColorsForm.BoxRedChange }
240
241procedure TFormGridColors.BoxGreenChange(Sender: TObject);
242begin
243FormPlot2D.BoxLine1.LineColor.Green := BoxGreen.Position/255;
244FormPlot2D.BoxLine2.LineColor := FormPlot2D.BoxLine1.LineColor;
245FormPlot2D.BoxLine3.LineColor := FormPlot2D.BoxLine1.LineColor;
246FormPlot2D.BoxLine4.LineColor := FormPlot2D.BoxLine1.LineColor;
247ViewData.BoxLnColor.Y := FormPlot2D.BoxLine1.LineColor.Green;
248GridColorsAltered := True;
249end; { TGridColorsForm.BoxGreenChange }
250
251procedure TFormGridColors.BoxBlueChange(Sender: TObject);
252begin
253FormPlot2D.BoxLine1.LineColor.Blue := BoxBlue.Position/255;
254FormPlot2D.BoxLine2.LineColor := FormPlot2D.BoxLine1.LineColor;
255FormPlot2D.BoxLine3.LineColor := FormPlot2D.BoxLine1.LineColor;
256FormPlot2D.BoxLine4.LineColor := FormPlot2D.BoxLine1.LineColor;
257ViewData.BoxLnColor.Z := FormPlot2D.BoxLine1.LineColor.Blue;
258GridColorsAltered := True;
259end; { TGridColorsForm.BoxBlueChange }
260
261procedure TFormGridColors.BoxAlphaChange(Sender: TObject);
262begin
263FormPlot2D.BoxLine1.LineColor.Alpha := BoxAlpha.Position/1000;
264ViewData.BoxLnColor.W := FormPlot2D.BoxLine1.LineColor.Alpha;
265FormPlot2D.BoxLine2.LineColor := FormPlot2D.BoxLine1.LineColor;
266FormPlot2D.BoxLine3.LineColor := FormPlot2D.BoxLine1.LineColor;
267FormPlot2D.BoxLine4.LineColor := FormPlot2D.BoxLine1.LineColor;
268GridColorsAltered := True;
269end; { TGridColorsForm.BoxAlphaChange }
270
271{ Public declarations }
272procedure TFormGridColors.ShowGridColorData;
273begin
274Caption := GraphFName;
275GridColorsAltered := False;
276
277with FormPlot2D.GLxyGrid.LineColor do
278begin
279xyRed.Position := round(Red*255);
280xyGreen.Position := round(Green*255);
281xyBlue.Position := round(Blue*255);
282xyAlpha.Position := round(Alpha*1000);
283end;
284with FormPlot2D.GLxzGrid.LineColor do
285begin
286xzRed.Position := round(Red*255);
287xzGreen.Position := round(Green*255);
288xzBlue.Position := round(Blue*255);
289xzAlpha.Position := round(Alpha*1000);
290end;
291with FormPlot2D.GLyzGrid.LineColor do
292begin
293yzRed.Position := round(Red*255);
294yzGreen.Position := round(Green*255);
295yzBlue.Position := round(Blue*255);
296yzAlpha.Position := round(Alpha*1000);
297end;
298with FormPlot2D do
299begin
300BoxRed.Position := round(BoxLine1.LineColor.Red*255);
301BoxGreen.Position := round(BoxLine1.LineColor.Green*255);
302BoxBlue.Position := round(BoxLine1.LineColor.Blue*255);
303BoxAlpha.Position := round(BoxLine1.LineColor.Alpha*1000);
304end;
305end;
306
307end.
308