MathgeomGLS

Форк
0
/
fAddPlotColors.pas 
266 строк · 7.3 Кб
1
unit fAddPlotColors;
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
  uGlobal,
24
  fDerivativeOptions;
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
  fPlot3D;
87

88
{$R *.dfm}
89

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

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

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

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

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

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

129

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

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

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

151
procedure TAddPlotColorsForm.FormCloseQuery(Sender: TObject;
152
                                   var CanClose: Boolean);
153
begin
154
  if ApplyBtn.Visible then
155
  begin
156
    case MessageDlg('The current graph''s color data has been altered.'+
157
              #13#10'Do you wish to save the alterations ?', mtConfirmation,
158
                    [mbYes, mbNo, mbCancel], 0) of
159
    mrYes: ApplyBtnClick(Sender);
160
 mrCancel: begin
161
             CanClose := False;
162
             Exit;
163
           end;
164
    end;
165
  end;
166
end;
167

168
procedure TAddPlotColorsForm.FormKeyDown(Sender: TObject; var Key: Word;
169
                                       Shift: TShiftState);
170
begin
171
  if Key = VK_ESCAPE then Close;
172
end;
173

174
procedure TAddPlotColorsForm.FormShow(Sender: TObject);
175
begin
176
  Caption := GraphFName;
177
  UpperLowerLock.Checked := False;
178
  ShowPlotColorData;
179
  ApplyBtn.Visible := False;
180
end;
181

182
procedure TAddPlotColorsForm.UpperRedChange(Sender: TObject);
183
begin
184
  AddedData.UpperColor.X := UpperRed.Position/225;
185
  if UpperLowerLock.Checked then LowerRed.Position := UpperRed.Position;
186
  ApplyBtn.Visible := True;
187
end;
188

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

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

207
procedure TAddPlotColorsForm.UpperBlueChange(Sender: TObject);
208
begin
209
  AddedData.UpperColor.Z := UpperBlue.Position/225;
210
  if UpperLowerLock.Checked then LowerBlue.Position := UpperBlue.Position;
211
  ApplyBtn.Visible := True;
212
end;
213

214
procedure TAddPlotColorsForm.UpperAlphaChange(Sender: TObject);
215
begin
216
  AddedData.UpperColor.W := UpperAlpha.Position/1000;
217
  if UpperLowerLock.Checked then LowerAlpha.Position := UpperAlpha.Position;
218
  ApplyBtn.Visible := True;
219
end;
220

221
procedure TAddPlotColorsForm.LowerRedChange(Sender: TObject);
222
begin
223
  AddedData.LowerColor.X := LowerRed.Position/225;
224
  if UpperLowerLock.Checked then UpperRed.Position := LowerRed.Position;
225
  ApplyBtn.Visible := True;
226
end;
227

228
procedure TAddPlotColorsForm.LowerGreenChange(Sender: TObject);
229
begin
230
  AddedData.LowerColor.Y := LowerGreen.Position/225;
231
  if UpperLowerLock.Checked then UpperGreen.Position := LowerGreen.Position;
232
  ApplyBtn.Visible := True;
233
end;
234

235
procedure TAddPlotColorsForm.LowerBlueChange(Sender: TObject);
236
begin
237
  AddedData.LowerColor.Z := LowerBlue.Position/225;
238
  if UpperLowerLock.Checked then UpperBlue.Position := LowerBlue.Position;
239
  ApplyBtn.Visible := True;
240
end;
241

242
procedure TAddPlotColorsForm.LowerAlphaChange(Sender: TObject);
243
begin
244
  AddedData.LowerColor.W := LowerAlpha.Position/1000;
245
  if UpperLowerLock.Checked then UpperAlpha.Position := LowerAlpha.Position;
246
  ApplyBtn.Visible := True;
247
end;
248

249
    { Public declarations }
250
procedure TAddPlotColorsForm.ShowPlotColorData;
251
begin
252
  UpperRed.Position := round(AddedData.UpperColor.X*255);
253
  UpperGreen.Position := round(AddedData.UpperColor.Y*255);
254
  UpperBlue.Position := round(AddedData.UpperColor.Z*255);
255
  UpperAlpha.Position := round(AddedData.UpperColor.W*1000);
256

257
  LowerRed.Position := round(AddedData.LowerColor.X*255);
258
  LowerGreen.Position := round(AddedData.LowerColor.Y*255);
259
  LowerBlue.Position := round(AddedData.LowerColor.Z*255);
260
  LowerAlpha.Position := round(AddedData.LowerColor.W*1000);
261

262
  EditBlend.Text := FloatToStrF(AddedData.ColorBlend, ffGeneral, 7, 4);
263
  EditMove.Text := FloatToStrF(AddedData.ColorMove, ffGeneral, 7, 4);
264
end;
265

266
end.
267

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

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

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

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