MathgeomGLS
271 строка · 7.6 Кб
1unit faAddPlotColors;
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.StdCtrls,
17Vcl.Buttons,
18Vcl.ComCtrls,
19
20GLS.OpenGLTokens,
21GLS.VectorTypes,
22
23Graf.Global2d,
24faDerivativeOptions;
25
26type
27TAddPlotColorsForm = class(TForm)
28GroupBox1: TGroupBox;
29Label1: TLabel;
30Label2: TLabel;
31Label3: TLabel;
32Label4: TLabel;
33UpperRed: TTrackBar;
34UpperGreen: TTrackBar;
35UpperBlue: TTrackBar;
36UpperAlpha: TTrackBar;
37GroupBox2: TGroupBox;
38Label5: TLabel;
39Label6: TLabel;
40Label7: TLabel;
41Label8: TLabel;
42LowerRed: TTrackBar;
43LowerGreen: TTrackBar;
44LowerBlue: TTrackBar;
45LowerAlpha: TTrackBar;
46UpperLowerLock: TCheckBox;
47EditBlend: TEdit;
48Label9: TLabel;
49Label10: TLabel;
50EditMove: TEdit;
51ApplyBtn: TBitBtn;
52BitBtn1: TBitBtn;
53procedure FormShow(Sender: TObject);
54procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
55procedure UpperRedChange(Sender: TObject);
56procedure UpperGreenChange(Sender: TObject);
57procedure UpperBlueChange(Sender: TObject);
58procedure UpperAlphaChange(Sender: TObject);
59procedure LowerRedChange(Sender: TObject);
60procedure LowerGreenChange(Sender: TObject);
61procedure LowerBlueChange(Sender: TObject);
62procedure LowerAlphaChange(Sender: TObject);
63procedure ApplyBtnClick(Sender: TObject);
64procedure BitBtn1Click(Sender: TObject);
65procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
66procedure UpperLowerLockClick(Sender: TObject);
67procedure EditBlendKeyDown(Sender: TObject; var Key: Word;
68Shift: TShiftState);
69procedure EditBlendKeyPress(Sender: TObject; var Key: Char);
70procedure EditBlendKeyUp(Sender: TObject; var Key: Word;
71Shift: TShiftState);
72procedure EditMoveKeyPress(Sender: TObject; var Key: Char);
73procedure EditMoveKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
74public
75procedure ShowPlotColorData;
76end;
77
78var
79AddPlotColorsForm: TAddPlotColorsForm;
80
81//========================================================================
82implementation
83//========================================================================
84
85uses
86faGraf2d;
87
88{$R *.dfm}
89
90procedure TAddPlotColorsForm.ApplyBtnClick(Sender: TObject);
91begin
92ApplyBtn.Visible := False;
93FormPlotStars.UpdateAdded;
94Altered := True;
95end;
96
97procedure TAddPlotColorsForm.BitBtn1Click(Sender: TObject);
98begin
99Close;
100end;
101
102//---------------------------------------------------------------------------
103procedure TAddPlotColorsForm.EditBlendKeyDown(Sender: TObject; var Key: Word;
104Shift: TShiftState);
105begin
106if (Key = VK_DELETE) or (Key = VK_BACK) then ApplyBtn.Visible := True;
107end;
108
109procedure TAddPlotColorsForm.EditBlendKeyPress(Sender: TObject; var Key: Char);
110begin
111if CharInSet(Key, PosFloat) then ApplyBtn.Visible := True
112else Key := #0;
113end;
114
115procedure TAddPlotColorsForm.EditBlendKeyUp(Sender: TObject; var Key: Word;
116Shift: TShiftState);
117var
118x: TGLFloat;
119
120begin
121try
122x := StrToFloat(EditBlend.Text);
123except
124x := 1.0;
125end;
126AddedData.ColorBlend := x;
127ApplyBtn.Visible := True;
128end;
129
130//---------------------------------------------------------------------------
131procedure TAddPlotColorsForm.EditMoveKeyPress(Sender: TObject; var Key: Char);
132begin
133if CharInSet(Key, AnyFloat) then ApplyBtn.Visible := True
134else Key := #0;
135end;
136
137procedure TAddPlotColorsForm.EditMoveKeyUp(Sender: TObject; var Key: Word;
138Shift: TShiftState);
139var
140x: TGLFloat;
141
142begin
143try
144x := StrToFloat(EditMove.Text);
145except
146x := 0.0;
147end;
148AddedData.ColorMove := x;
149ApplyBtn.Visible := True;
150end;
151
152procedure TAddPlotColorsForm.FormCloseQuery(Sender: TObject;
153var CanClose: Boolean);
154begin
155if ApplyBtn.Visible then
156begin
157case MessageDlg('The current graph''s color data has been altered.' +
158#13#10'Do you wish to save the alterations ?', mtConfirmation,
159[mbYes, mbNo, mbCancel], 0) of
160mrYes:
161ApplyBtnClick(Sender);
162mrCancel:
163begin
164CanClose := False;
165Exit;
166end;
167end;
168end;
169end;
170
171//---------------------------------------------------------------------------
172procedure TAddPlotColorsForm.FormKeyDown(Sender: TObject; var Key: Word;
173Shift: TShiftState);
174begin
175if Key = VK_ESCAPE then Close;
176end;
177
178procedure TAddPlotColorsForm.FormShow(Sender: TObject);
179begin
180Caption := GraphFName;
181UpperLowerLock.Checked := False;
182ShowPlotColorData;
183ApplyBtn.Visible := False;
184end;
185
186procedure TAddPlotColorsForm.UpperRedChange(Sender: TObject);
187begin
188AddedData.UpperColor.X := UpperRed.Position/225;
189if UpperLowerLock.Checked then LowerRed.Position := UpperRed.Position;
190ApplyBtn.Visible := True;
191end;
192
193procedure TAddPlotColorsForm.UpperGreenChange(Sender: TObject);
194begin
195AddedData.UpperColor.X := UpperRed.Position/225;
196if UpperLowerLock.Checked then LowerGreen.Position := UpperGreen.Position;
197ApplyBtn.Visible := True;
198end;
199
200procedure TAddPlotColorsForm.UpperLowerLockClick(Sender: TObject);
201begin
202if UpperLowerLock.Checked then
203begin
204LowerRed.Position := UpperRed.Position;
205LowerGreen.Position := UpperGreen.Position;
206LowerBlue.Position := UpperBlue.Position;
207LowerAlpha.Position := UpperAlpha.Position;
208end;
209end;
210
211procedure TAddPlotColorsForm.UpperBlueChange(Sender: TObject);
212begin
213AddedData.UpperColor.Z := UpperBlue.Position/225;
214if UpperLowerLock.Checked then LowerBlue.Position := UpperBlue.Position;
215ApplyBtn.Visible := True;
216end;
217
218//---------------------------------------------------------------------------
219procedure TAddPlotColorsForm.UpperAlphaChange(Sender: TObject);
220begin
221AddedData.UpperColor.W := UpperAlpha.Position/1000;
222if UpperLowerLock.Checked then LowerAlpha.Position := UpperAlpha.Position;
223ApplyBtn.Visible := True;
224end;
225
226procedure TAddPlotColorsForm.LowerRedChange(Sender: TObject);
227begin
228AddedData.LowerColor.X := LowerRed.Position/225;
229if UpperLowerLock.Checked then UpperRed.Position := LowerRed.Position;
230ApplyBtn.Visible := True;
231end;
232
233procedure TAddPlotColorsForm.LowerGreenChange(Sender: TObject);
234begin
235AddedData.LowerColor.Y := LowerGreen.Position/225;
236if UpperLowerLock.Checked then UpperGreen.Position := LowerGreen.Position;
237ApplyBtn.Visible := True;
238end;
239
240procedure TAddPlotColorsForm.LowerBlueChange(Sender: TObject);
241begin
242AddedData.LowerColor.Z := LowerBlue.Position/225;
243if UpperLowerLock.Checked then UpperBlue.Position := LowerBlue.Position;
244ApplyBtn.Visible := True;
245end;
246
247procedure TAddPlotColorsForm.LowerAlphaChange(Sender: TObject);
248begin
249AddedData.LowerColor.W := LowerAlpha.Position/1000;
250if UpperLowerLock.Checked then UpperAlpha.Position := LowerAlpha.Position;
251ApplyBtn.Visible := True;
252end;
253
254//---------------------------------------------------------------------------
255procedure TAddPlotColorsForm.ShowPlotColorData;
256begin
257UpperRed.Position := round(AddedData.UpperColor.X*255);
258UpperGreen.Position := round(AddedData.UpperColor.Y*255);
259UpperBlue.Position := round(AddedData.UpperColor.Z*255);
260UpperAlpha.Position := round(AddedData.UpperColor.W*1000);
261
262LowerRed.Position := round(AddedData.LowerColor.X*255);
263LowerGreen.Position := round(AddedData.LowerColor.Y*255);
264LowerBlue.Position := round(AddedData.LowerColor.Z*255);
265LowerAlpha.Position := round(AddedData.LowerColor.W*1000);
266
267EditBlend.Text := FloatToStrF(AddedData.ColorBlend, ffGeneral, 7, 4);
268EditMove.Text := FloatToStrF(AddedData.ColorMove, ffGeneral, 7, 4);
269end;
270
271end.
272