|
@@ -34,13 +34,15 @@ type
|
|
procedure SpinEdit_RadiusChange(Sender: TObject);
|
|
procedure SpinEdit_RadiusChange(Sender: TObject);
|
|
procedure Timer1Timer(Sender: TObject);
|
|
procedure Timer1Timer(Sender: TObject);
|
|
private
|
|
private
|
|
- FInitializing: boolean;
|
|
|
|
|
|
+ FInitializing, FComputed: boolean;
|
|
FFilterConnector: TFilterConnector;
|
|
FFilterConnector: TFilterConnector;
|
|
FThreadManager: TFilterThreadManager;
|
|
FThreadManager: TFilterThreadManager;
|
|
FLastRadius: single;
|
|
FLastRadius: single;
|
|
FVars: TVariableSet;
|
|
FVars: TVariableSet;
|
|
FComputedImage: TBGRABitmap;
|
|
FComputedImage: TBGRABitmap;
|
|
|
|
+ procedure DisplayComputedImage;
|
|
procedure PreviewNeeded;
|
|
procedure PreviewNeeded;
|
|
|
|
+ procedure StoreComputedImage;
|
|
procedure UpdateStep;
|
|
procedure UpdateStep;
|
|
procedure OnTaskEvent({%H-}ASender: TObject; AEvent: TThreadManagerEvent);
|
|
procedure OnTaskEvent({%H-}ASender: TObject; AEvent: TThreadManagerEvent);
|
|
public
|
|
public
|
|
@@ -77,10 +79,15 @@ end;
|
|
|
|
|
|
{ TFRadialBlur }
|
|
{ TFRadialBlur }
|
|
|
|
|
|
|
|
+procedure TFRadialBlur.DisplayComputedImage;
|
|
|
|
+begin
|
|
|
|
+ if FComputedImage <> nil then
|
|
|
|
+ FFilterConnector.PutImage(FComputedImage, false, false);
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TFRadialBlur.Button_OKClick(Sender: TObject);
|
|
procedure TFRadialBlur.Button_OKClick(Sender: TObject);
|
|
begin
|
|
begin
|
|
- if not CheckBox_Preview.Checked and
|
|
|
|
- (FComputedImage <> nil) then FFilterConnector.PutImage(FComputedImage,false,false);
|
|
|
|
|
|
+ if not CheckBox_Preview.Checked then DisplayComputedImage;
|
|
|
|
|
|
if not FFilterConnector.ActionDone then
|
|
if not FFilterConnector.ActionDone then
|
|
begin
|
|
begin
|
|
@@ -94,9 +101,18 @@ procedure TFRadialBlur.CheckBox_PreviewChange(Sender: TObject);
|
|
begin
|
|
begin
|
|
if FInitializing then exit;
|
|
if FInitializing then exit;
|
|
if CheckBox_Preview.Checked then
|
|
if CheckBox_Preview.Checked then
|
|
- FFilterConnector.PutImage(FComputedImage, false, false)
|
|
|
|
|
|
+ DisplayComputedImage
|
|
else
|
|
else
|
|
- FFilterConnector.RestoreBackup;
|
|
|
|
|
|
+ begin
|
|
|
|
+ StoreComputedImage;
|
|
|
|
+ FFilterConnector.RestoreBackup;
|
|
|
|
+ end;
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TFRadialBlur.StoreComputedImage;
|
|
|
|
+begin
|
|
|
|
+ if FComputed and (FComputedImage = nil) then
|
|
|
|
+ FComputedImage := FFilterConnector.ActiveLayer.Duplicate;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TFRadialBlur.FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
procedure TFRadialBlur.FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
@@ -113,11 +129,14 @@ begin
|
|
CheckOKCancelBtns(Button_OK{,Button_Cancel});
|
|
CheckOKCancelBtns(Button_OK{,Button_Cancel});
|
|
CheckFloatSpinEdit(SpinEdit_Radius);
|
|
CheckFloatSpinEdit(SpinEdit_Radius);
|
|
SpinEdit_Radius.Constraints.MinWidth := DoScaleX(70, OriginalDPI);
|
|
SpinEdit_Radius.Constraints.MinWidth := DoScaleX(70, OriginalDPI);
|
|
|
|
+
|
|
|
|
+ FComputed := false;
|
|
|
|
+ FComputedImage := nil;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TFRadialBlur.FormDestroy(Sender: TObject);
|
|
procedure TFRadialBlur.FormDestroy(Sender: TObject);
|
|
begin
|
|
begin
|
|
- if FComputedImage <> nil then FreeAndNil(FComputedImage);
|
|
|
|
|
|
+ FreeAndNil(FComputedImage);
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TFRadialBlur.FormShow(Sender: TObject);
|
|
procedure TFRadialBlur.FormShow(Sender: TObject);
|
|
@@ -186,13 +205,8 @@ begin
|
|
if AEvent = tmeCompletedTask then begin
|
|
if AEvent = tmeCompletedTask then begin
|
|
Button_OK.Enabled := true;
|
|
Button_OK.Enabled := true;
|
|
CheckBox_Preview.Enabled := true;
|
|
CheckBox_Preview.Enabled := true;
|
|
|
|
+ FComputed := true;
|
|
end;
|
|
end;
|
|
-
|
|
|
|
- if FComputedImage <> nil then FComputedImage.Free;
|
|
|
|
- case AEvent of
|
|
|
|
- tmeAbortedTask: FComputedImage := FFilterConnector.BackupLayer.Duplicate;
|
|
|
|
- tmeCompletedTask: FComputedImage := FFilterConnector.ActiveLayer.Duplicate;
|
|
|
|
- end;
|
|
|
|
end;
|
|
end;
|
|
tmeStartingNewTask:
|
|
tmeStartingNewTask:
|
|
begin
|
|
begin
|
|
@@ -204,6 +218,7 @@ begin
|
|
FInitializing := True;
|
|
FInitializing := True;
|
|
CheckBox_Preview.Enabled := false;
|
|
CheckBox_Preview.Enabled := false;
|
|
CheckBox_Preview.Checked := True;
|
|
CheckBox_Preview.Checked := True;
|
|
|
|
+ FreeAndNil(FComputedImage);
|
|
FInitializing := False;
|
|
FInitializing := False;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|