MathgeomGLS

Форк
0
/
faAddPlotColors.pas 
271 строка · 7.6 Кб
1
unit faAddPlotColors;
2

3
interface
4

5
uses
6
  Winapi.Windows,
7
  Winapi.Messages,
8
  System.SysUtils,
9
  System.Variants,
10
  System.Classes,
11
  System.UITypes,
12
  Vcl.Graphics,
13
  Vcl.Controls,
14
  Vcl.Forms,
15
  Vcl.Dialogs,
16
  Vcl.StdCtrls,
17
  Vcl.Buttons,
18
  Vcl.ComCtrls,
19

20
  GLS.OpenGLTokens,
21
  GLS.VectorTypes,
22

23
  Graf.Global2d,
24
  faDerivativeOptions;
25

26
type
27
  TAddPlotColorsForm = class(TForm)
28
    GroupBox1: TGroupBox;
29
    Label1: TLabel;
30
    Label2: TLabel;
31
    Label3: TLabel;
32
    Label4: TLabel;
33
    UpperRed: TTrackBar;
34
    UpperGreen: TTrackBar;
35
    UpperBlue: TTrackBar;
36
    UpperAlpha: TTrackBar;
37
    GroupBox2: TGroupBox;
38
    Label5: TLabel;
39
    Label6: TLabel;
40
    Label7: TLabel;
41
    Label8: TLabel;
42
    LowerRed: TTrackBar;
43
    LowerGreen: TTrackBar;
44
    LowerBlue: TTrackBar;
45
    LowerAlpha: TTrackBar;
46
    UpperLowerLock: TCheckBox;
47
    EditBlend: TEdit;
48
    Label9: TLabel;
49
    Label10: TLabel;
50
    EditMove: TEdit;
51
    ApplyBtn: TBitBtn;
52
    BitBtn1: TBitBtn;
53
    procedure FormShow(Sender: TObject);
54
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
55
    procedure UpperRedChange(Sender: TObject);
56
    procedure UpperGreenChange(Sender: TObject);
57
    procedure UpperBlueChange(Sender: TObject);
58
    procedure UpperAlphaChange(Sender: TObject);
59
    procedure LowerRedChange(Sender: TObject);
60
    procedure LowerGreenChange(Sender: TObject);
61
    procedure LowerBlueChange(Sender: TObject);
62
    procedure LowerAlphaChange(Sender: TObject);
63
    procedure ApplyBtnClick(Sender: TObject);
64
    procedure BitBtn1Click(Sender: TObject);
65
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
66
    procedure UpperLowerLockClick(Sender: TObject);
67
    procedure EditBlendKeyDown(Sender: TObject; var Key: Word;
68
                                Shift: TShiftState);
69
    procedure EditBlendKeyPress(Sender: TObject; var Key: Char);
70
    procedure EditBlendKeyUp(Sender: TObject; var Key: Word;
71
                              Shift: TShiftState);
72
    procedure EditMoveKeyPress(Sender: TObject; var Key: Char);
73
    procedure EditMoveKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
74
  public
75
    procedure ShowPlotColorData;
76
  end;
77

78
var
79
  AddPlotColorsForm: TAddPlotColorsForm;
80

81
//========================================================================
82
implementation
83
//========================================================================
84

85
uses
86
  faGraf2d;
87

88
{$R *.dfm}
89

90
procedure TAddPlotColorsForm.ApplyBtnClick(Sender: TObject);
91
begin
92
  ApplyBtn.Visible := False;
93
  FormPlotStars.UpdateAdded;
94
  Altered := True;
95
end;
96

97
procedure TAddPlotColorsForm.BitBtn1Click(Sender: TObject);
98
begin
99
  Close;
100
end;
101

102
//---------------------------------------------------------------------------
103
procedure TAddPlotColorsForm.EditBlendKeyDown(Sender: TObject; var Key: Word;
104
                                            Shift: TShiftState);
105
begin
106
  if (Key = VK_DELETE) or (Key = VK_BACK) then ApplyBtn.Visible := True;
107
end;
108

109
procedure TAddPlotColorsForm.EditBlendKeyPress(Sender: TObject; var Key: Char);
110
begin
111
  if CharInSet(Key, PosFloat) then ApplyBtn.Visible := True
112
  else Key := #0;
113
end;
114

115
procedure TAddPlotColorsForm.EditBlendKeyUp(Sender: TObject; var Key: Word;
116
  Shift: TShiftState);
117
var
118
  x: TGLFloat;
119

120
begin
121
  try
122
    x := StrToFloat(EditBlend.Text);
123
  except
124
    x := 1.0;
125
  end;
126
  AddedData.ColorBlend := x;
127
  ApplyBtn.Visible := True;
128
end;
129

130
//---------------------------------------------------------------------------
131
procedure TAddPlotColorsForm.EditMoveKeyPress(Sender: TObject; var Key: Char);
132
begin
133
  if CharInSet(Key, AnyFloat) then ApplyBtn.Visible := True
134
  else Key := #0;
135
end;
136

137
procedure TAddPlotColorsForm.EditMoveKeyUp(Sender: TObject; var Key: Word;
138
                                         Shift: TShiftState);
139
var
140
  x: TGLFloat;
141

142
begin
143
  try
144
    x := StrToFloat(EditMove.Text);
145
  except
146
    x := 0.0;
147
  end;
148
  AddedData.ColorMove := x;
149
  ApplyBtn.Visible := True;
150
end;
151

152
procedure TAddPlotColorsForm.FormCloseQuery(Sender: TObject;
153
  var CanClose: Boolean);
154
begin
155
  if ApplyBtn.Visible then
156
  begin
157
    case 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
160
      mrYes:
161
        ApplyBtnClick(Sender);
162
      mrCancel:
163
        begin
164
          CanClose := False;
165
          Exit;
166
        end;
167
    end;
168
  end;
169
end;
170

171
//---------------------------------------------------------------------------
172
procedure TAddPlotColorsForm.FormKeyDown(Sender: TObject; var Key: Word;
173
                                       Shift: TShiftState);
174
begin
175
  if Key = VK_ESCAPE then Close;
176
end;
177

178
procedure TAddPlotColorsForm.FormShow(Sender: TObject);
179
begin
180
  Caption := GraphFName;
181
  UpperLowerLock.Checked := False;
182
  ShowPlotColorData;
183
  ApplyBtn.Visible := False;
184
end;
185

186
procedure TAddPlotColorsForm.UpperRedChange(Sender: TObject);
187
begin
188
  AddedData.UpperColor.X := UpperRed.Position/225;
189
  if UpperLowerLock.Checked then LowerRed.Position := UpperRed.Position;
190
  ApplyBtn.Visible := True;
191
end;
192

193
procedure TAddPlotColorsForm.UpperGreenChange(Sender: TObject);
194
begin
195
  AddedData.UpperColor.X := UpperRed.Position/225;
196
  if UpperLowerLock.Checked then LowerGreen.Position := UpperGreen.Position;
197
  ApplyBtn.Visible := True;
198
end;
199

200
procedure TAddPlotColorsForm.UpperLowerLockClick(Sender: TObject);
201
begin
202
  if UpperLowerLock.Checked then
203
  begin
204
    LowerRed.Position := UpperRed.Position;
205
    LowerGreen.Position := UpperGreen.Position;
206
    LowerBlue.Position := UpperBlue.Position;
207
    LowerAlpha.Position := UpperAlpha.Position;
208
  end;
209
end;
210

211
procedure TAddPlotColorsForm.UpperBlueChange(Sender: TObject);
212
begin
213
  AddedData.UpperColor.Z := UpperBlue.Position/225;
214
  if UpperLowerLock.Checked then LowerBlue.Position := UpperBlue.Position;
215
  ApplyBtn.Visible := True;
216
end;
217

218
//---------------------------------------------------------------------------
219
procedure TAddPlotColorsForm.UpperAlphaChange(Sender: TObject);
220
begin
221
  AddedData.UpperColor.W := UpperAlpha.Position/1000;
222
  if UpperLowerLock.Checked then LowerAlpha.Position := UpperAlpha.Position;
223
  ApplyBtn.Visible := True;
224
end;
225

226
procedure TAddPlotColorsForm.LowerRedChange(Sender: TObject);
227
begin
228
  AddedData.LowerColor.X := LowerRed.Position/225;
229
  if UpperLowerLock.Checked then UpperRed.Position := LowerRed.Position;
230
  ApplyBtn.Visible := True;
231
end;
232

233
procedure TAddPlotColorsForm.LowerGreenChange(Sender: TObject);
234
begin
235
  AddedData.LowerColor.Y := LowerGreen.Position/225;
236
  if UpperLowerLock.Checked then UpperGreen.Position := LowerGreen.Position;
237
  ApplyBtn.Visible := True;
238
end;
239

240
procedure TAddPlotColorsForm.LowerBlueChange(Sender: TObject);
241
begin
242
  AddedData.LowerColor.Z := LowerBlue.Position/225;
243
  if UpperLowerLock.Checked then UpperBlue.Position := LowerBlue.Position;
244
  ApplyBtn.Visible := True;
245
end;
246

247
procedure TAddPlotColorsForm.LowerAlphaChange(Sender: TObject);
248
begin
249
  AddedData.LowerColor.W := LowerAlpha.Position/1000;
250
  if UpperLowerLock.Checked then UpperAlpha.Position := LowerAlpha.Position;
251
  ApplyBtn.Visible := True;
252
end;
253

254
//---------------------------------------------------------------------------
255
procedure TAddPlotColorsForm.ShowPlotColorData;
256
begin
257
  UpperRed.Position := round(AddedData.UpperColor.X*255);
258
  UpperGreen.Position := round(AddedData.UpperColor.Y*255);
259
  UpperBlue.Position := round(AddedData.UpperColor.Z*255);
260
  UpperAlpha.Position := round(AddedData.UpperColor.W*1000);
261

262
  LowerRed.Position := round(AddedData.LowerColor.X*255);
263
  LowerGreen.Position := round(AddedData.LowerColor.Y*255);
264
  LowerBlue.Position := round(AddedData.LowerColor.Z*255);
265
  LowerAlpha.Position := round(AddedData.LowerColor.W*1000);
266

267
  EditBlend.Text := FloatToStrF(AddedData.ColorBlend, ffGeneral, 7, 4);
268
  EditMove.Text := FloatToStrF(AddedData.ColorMove, ffGeneral, 7, 4);
269
end;
270

271
end.
272

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.