/
uDesaturateSettingFrame.pas
126 lines (102 loc) · 3.23 KB
/
uDesaturateSettingFrame.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
unit uDesaturateSettingFrame;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, ExtCtrls, StdCtrls, Spin, Graphics,
BZColors, BZGraphic;
type
{ TDesaturateSettingFrame }
TDesaturateSettingFrame = class(TFrame)
pnlTitle : TPanel;
imgTitleFilterGlyph : TImage;
lblTitleFrame : TLabel;
Panel1 : TPanel;
pnlParam3 : TPanel;
Label4 : TLabel;
fseParam2 : TFloatSpinEdit;
pnlParam2 : TPanel;
Label3 : TLabel;
fseParam1 : TFloatSpinEdit;
pnlParam1 : TPanel;
Label2 : TLabel;
cbxColorMask : TComboBox;
Panel2 : TPanel;
pnlMethod : TPanel;
Label1 : TLabel;
cbxDesaturateMethod : TComboBox;
gbxMatrix : TGroupBox;
cbxDesaturateMatrix : TComboBox;
procedure DoNotifyChange(Sender : TObject);
procedure rgGrayScaleMethodSelectionChanged(Sender : TObject);
private
FOnParamChange : TNotifyEvent;
public
DoApplyChange : Boolean;
FDataChangeCount : Byte;
function GetDesaturateMethode : TBZGrayConvertMode;
function GetDesaturateMatrix : TBZGrayMatrixType;
function GetDesaturateColorMask : Byte;
function GetParam1 : Single;
function GetParam2 : Single;
property OnParamChange : TNotifyEvent read FOnParamChange write FOnParamChange;
end;
function CreateDesaturateSettingFrame(TheOwner : TComponent; Title : String; GlyphTitle : TBitmap; ParamChangeEvent : TNotifyEvent) : TFrame;
implementation
function CreateDesaturateSettingFrame(TheOwner : TComponent; Title : String; GlyphTitle : TBitmap; ParamChangeEvent : TNotifyEvent) : TFrame;
Var
Frame : TDesaturateSettingFrame;
begin
Frame := TDesaturateSettingFrame.Create(TheOwner);
Frame.lblTitleFrame.Caption := Title;
Frame.imgTitleFilterGlyph.Picture.Bitmap.Assign(GlyphTitle);
Frame.DoApplyChange := False;
Frame.FDataChangeCount := 0;
Frame.OnParamChange := ParamChangeEvent;
Result := Frame;
end;
{$R *.lfm}
{ TDesaturateSettingFrame }
procedure TDesaturateSettingFrame.DoNotifyChange(Sender : TObject);
begin
Inc(FDataChangeCount);
try
if FDataChangeCount <> 1 then exit;
//ShowMessage(FDataChangeCount.ToString);
if Assigned(FOnParamChange) then FOnParamChange(sender);
finally
Dec(FDataChangeCount);
end;
end;
procedure TDesaturateSettingFrame.rgGrayScaleMethodSelectionChanged(Sender : TObject);
Var
idx : Integer;
begin
Idx := cbxDesaturateMethod.ItemIndex;
cbxDesaturateMatrix.Enabled := (Idx = 1);
cbxColorMask.Enabled := (Idx = 6);
fseParam1.Enabled := (Idx = 7) or (Idx = 8) or (Idx = 9);
fseParam2.Enabled := (Idx = 8);
//if (Idx<>1) and (Idx<>5) and (idx<>6) and (idx<>7) and (idx<>8) then
DoNotifyChange(Self);
end;
function TDesaturateSettingFrame.GetDesaturateMethode : TBZGrayConvertMode;
begin
Result := TBZGrayConvertMode(cbxDesaturateMethod.ItemIndex);
end;
function TDesaturateSettingFrame.GetDesaturateMatrix : TBZGrayMatrixType;
begin
Result := TBZGrayMatrixType(cbxDesaturateMatrix.ItemIndex);
end;
function TDesaturateSettingFrame.GetDesaturateColorMask : Byte;
begin
Result := cbxColorMask.ItemIndex;
end;
function TDesaturateSettingFrame.GetParam1 : Single;
begin
Result := fseParam1.Value;
end;
function TDesaturateSettingFrame.GetParam2 : Single;
begin
Result := fseParam2.Value;
end;
end.