ArenaZ

Форк
0
/
AddPlotColors.pas 
253 строки · 7.4 Кб
1
unit AddPlotColors;
2

3

4
interface
5

6
uses
7
  LCLType,
8
  SysUtils, Classes,
9
  Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons,
10
  ComCtrls;
11

12
type
13
  TAddPlotColorsForm = class(TForm)
14
    GroupBox1: TGroupBox;
15
    Label1: TLabel;
16
    Label2: TLabel;
17
    Label3: TLabel;
18
    Label4: TLabel;
19
    UpperRed: TTrackBar;
20
    UpperGreen: TTrackBar;
21
    UpperBlue: TTrackBar;
22
    UpperAlpha: TTrackBar;
23
    GroupBox2: TGroupBox;
24
    Label5: TLabel;
25
    Label6: TLabel;
26
    Label7: TLabel;
27
    Label8: TLabel;
28
    LowerRed: TTrackBar;
29
    LowerGreen: TTrackBar;
30
    LowerBlue: TTrackBar;
31
    LowerAlpha: TTrackBar;
32
    UpperLowerLock: TCheckBox;
33
    EditBlend: TEdit;
34
    Label9: TLabel;
35
    Label10: TLabel;
36
    EditMove: TEdit;
37
    ApplyBtn: TBitBtn;
38
    BitBtn1: TBitBtn;
39
    procedure FormShow(Sender: TObject);
40
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
41
    procedure UpperRedChange(Sender: TObject);
42
    procedure UpperGreenChange(Sender: TObject);
43
    procedure UpperBlueChange(Sender: TObject);
44
    procedure UpperAlphaChange(Sender: TObject);
45
    procedure LowerRedChange(Sender: TObject);
46
    procedure LowerGreenChange(Sender: TObject);
47
    procedure LowerBlueChange(Sender: TObject);
48
    procedure LowerAlphaChange(Sender: TObject);
49
    procedure ApplyBtnClick(Sender: TObject);
50
    procedure BitBtn1Click(Sender: TObject);
51
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
52
    procedure UpperLowerLockClick(Sender: TObject);
53
    procedure EditBlendKeyDown(Sender: TObject; var Key: Word;
54
                                Shift: TShiftState);
55
    procedure EditBlendKeyPress(Sender: TObject; var Key: Char);
56
    procedure EditBlendKeyUp(Sender: TObject; var Key: Word;
57
                              Shift: TShiftState);
58
    procedure EditMoveKeyPress(Sender: TObject; var Key: Char);
59
    procedure EditMoveKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
60
  private
61
    { Private declarations }
62
  public
63
    { Public declarations }
64
    procedure ShowPlotColorData;
65
  end;
66

67
var
68
  AddPlotColorsForm: TAddPlotColorsForm;
69

70
implementation
71

72
uses
73
  uGlobal, Main, Functions, OpenGLTokens, DerivativeOptions;
74

75
{$R *.lfm}
76

77
procedure TAddPlotColorsForm.ApplyBtnClick(Sender: TObject);
78
begin
79
  ApplyBtn.Visible := False;
80
  ViewForm.UpdateAdded;
81
  Altered := True;
82
end;
83

84
procedure TAddPlotColorsForm.BitBtn1Click(Sender: TObject);
85
begin
86
  Close;
87
end;
88

89
procedure TAddPlotColorsForm.EditBlendKeyDown(Sender: TObject; var Key: Word;
90
                                            Shift: TShiftState);
91
begin
92
  if (Key = VK_DELETE) or (Key = VK_BACK) then ApplyBtn.Visible := True;
93
end;
94

95
procedure TAddPlotColorsForm.EditBlendKeyPress(Sender: TObject; var Key: Char);
96
begin
97
  if CharInSet(Key, PosFloat) then ApplyBtn.Visible := True
98
  else Key := #0;
99
end;
100

101
procedure TAddPlotColorsForm.EditBlendKeyUp(Sender: TObject; var Key: Word;
102
                                          Shift: TShiftState);
103
var
104
  x: TGLFloat;
105

106
begin
107
  try
108
    x := StrToFloat(EditBlend.Text);
109
  except
110
    x := 1.0;
111
  end;
112
  AddedData.ColorBlend := x;
113
  ApplyBtn.Visible := True;
114
end;
115

116

117
procedure TAddPlotColorsForm.EditMoveKeyPress(Sender: TObject; var Key: Char);
118
begin
119
  if CharInSet(Key, AnyFloat) then ApplyBtn.Visible := True
120
  else Key := #0;
121
end;
122

123
procedure TAddPlotColorsForm.EditMoveKeyUp(Sender: TObject; var Key: Word;
124
                                         Shift: TShiftState);
125
var
126
  x: TGLFloat;
127

128
begin
129
  try
130
    x := StrToFloat(EditMove.Text);
131
  except
132
    x := 0.0;
133
  end;
134
  AddedData.ColorMove := x;
135
  ApplyBtn.Visible := True;
136
end;
137

138
procedure TAddPlotColorsForm.FormCloseQuery(Sender: TObject;
139
                                   var CanClose: Boolean);
140
begin
141
  if ApplyBtn.Visible then
142
  begin
143
    case MessageDlg('The current graph''s color data has been altered.'+
144
              #13#10'Do you wish to save the alterations ?', mtConfirmation,
145
                    [mbYes, mbNo, mbCancel], 0) of
146
    mrYes: ApplyBtnClick(Sender);
147
 mrCancel: begin
148
             CanClose := False;
149
             Exit;
150
           end;
151
    end;
152
  end;
153
end;
154

155
procedure TAddPlotColorsForm.FormKeyDown(Sender: TObject; var Key: Word;
156
                                       Shift: TShiftState);
157
begin
158
  if Key = VK_ESCAPE then Close;
159
end;
160

161
procedure TAddPlotColorsForm.FormShow(Sender: TObject);
162
begin
163
  Caption := GraphFName;
164
  UpperLowerLock.Checked := False;
165
  ShowPlotColorData;
166
  ApplyBtn.Visible := False;
167
end;
168

169
procedure TAddPlotColorsForm.UpperRedChange(Sender: TObject);
170
begin
171
  AddedData.UpperColor.X := UpperRed.Position/225;
172
  if UpperLowerLock.Checked then LowerRed.Position := UpperRed.Position;
173
  ApplyBtn.Visible := True;
174
end;
175

176
procedure TAddPlotColorsForm.UpperGreenChange(Sender: TObject);
177
begin
178
  AddedData.UpperColor.X := UpperRed.Position/225;
179
  if UpperLowerLock.Checked then LowerGreen.Position := UpperGreen.Position;
180
  ApplyBtn.Visible := True;
181
end;
182

183
procedure TAddPlotColorsForm.UpperLowerLockClick(Sender: TObject);
184
begin
185
  if UpperLowerLock.Checked then
186
  begin
187
    LowerRed.Position := UpperRed.Position;
188
    LowerGreen.Position := UpperGreen.Position;
189
    LowerBlue.Position := UpperBlue.Position;
190
    LowerAlpha.Position := UpperAlpha.Position;
191
  end;
192
end;
193

194
procedure TAddPlotColorsForm.UpperBlueChange(Sender: TObject);
195
begin
196
  AddedData.UpperColor.Z := UpperBlue.Position/225;
197
  if UpperLowerLock.Checked then LowerBlue.Position := UpperBlue.Position;
198
  ApplyBtn.Visible := True;
199
end;
200

201
procedure TAddPlotColorsForm.UpperAlphaChange(Sender: TObject);
202
begin
203
  AddedData.UpperColor.W := UpperAlpha.Position/1000;
204
  if UpperLowerLock.Checked then LowerAlpha.Position := UpperAlpha.Position;
205
  ApplyBtn.Visible := True;
206
end;
207

208
procedure TAddPlotColorsForm.LowerRedChange(Sender: TObject);
209
begin
210
  AddedData.LowerColor.X := LowerRed.Position/225;
211
  if UpperLowerLock.Checked then UpperRed.Position := LowerRed.Position;
212
  ApplyBtn.Visible := True;
213
end;
214

215
procedure TAddPlotColorsForm.LowerGreenChange(Sender: TObject);
216
begin
217
  AddedData.LowerColor.Y := LowerGreen.Position/225;
218
  if UpperLowerLock.Checked then UpperGreen.Position := LowerGreen.Position;
219
  ApplyBtn.Visible := True;
220
end;
221

222
procedure TAddPlotColorsForm.LowerBlueChange(Sender: TObject);
223
begin
224
  AddedData.LowerColor.Z := LowerBlue.Position/225;
225
  if UpperLowerLock.Checked then UpperBlue.Position := LowerBlue.Position;
226
  ApplyBtn.Visible := True;
227
end;
228

229
procedure TAddPlotColorsForm.LowerAlphaChange(Sender: TObject);
230
begin
231
  AddedData.LowerColor.W := LowerAlpha.Position/1000;
232
  if UpperLowerLock.Checked then UpperAlpha.Position := LowerAlpha.Position;
233
  ApplyBtn.Visible := True;
234
end;
235

236
    { Public declarations }
237
procedure TAddPlotColorsForm.ShowPlotColorData;
238
begin
239
  UpperRed.Position := round(AddedData.UpperColor.X*255);
240
  UpperGreen.Position := round(AddedData.UpperColor.Y*255);
241
  UpperBlue.Position := round(AddedData.UpperColor.Z*255);
242
  UpperAlpha.Position := round(AddedData.UpperColor.W*1000);
243

244
  LowerRed.Position := round(AddedData.LowerColor.X*255);
245
  LowerGreen.Position := round(AddedData.LowerColor.Y*255);
246
  LowerBlue.Position := round(AddedData.LowerColor.Z*255);
247
  LowerAlpha.Position := round(AddedData.LowerColor.W*1000);
248

249
  EditBlend.Text := FloatToStrF(AddedData.ColorBlend, ffGeneral, 7, 4);
250
  EditMove.Text := FloatToStrF(AddedData.ColorMove, ffGeneral, 7, 4);
251
end;
252

253
end.
254

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

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

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

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