|
@@ -51,12 +51,14 @@ type
|
|
InPaintBoxMouseMove: boolean;
|
|
InPaintBoxMouseMove: boolean;
|
|
PaintBoxMouseMovePos: TPoint;
|
|
PaintBoxMouseMovePos: TPoint;
|
|
FQuitQuery,
|
|
FQuitQuery,
|
|
- FInitializing: boolean;
|
|
|
|
|
|
+ FInitializing, FComputed: boolean;
|
|
FComputedImage: TBGRABitmap;
|
|
FComputedImage: TBGRABitmap;
|
|
procedure UpdateStep;
|
|
procedure UpdateStep;
|
|
procedure ComputeAngle(X,Y: integer);
|
|
procedure ComputeAngle(X,Y: integer);
|
|
procedure InitParams;
|
|
procedure InitParams;
|
|
|
|
+ procedure DisplayComputedImage;
|
|
procedure PreviewNeeded;
|
|
procedure PreviewNeeded;
|
|
|
|
+ procedure StoreComputedImage;
|
|
procedure OnTaskEvent({%H-}ASender: TObject; AEvent: TThreadManagerEvent);
|
|
procedure OnTaskEvent({%H-}ASender: TObject; AEvent: TThreadManagerEvent);
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -200,6 +202,12 @@ begin
|
|
FInitializing := false;
|
|
FInitializing := false;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TFMotionBlur.DisplayComputedImage;
|
|
|
|
+begin
|
|
|
|
+ if FComputedImage <> nil then
|
|
|
|
+ FFilterConnector.PutImage(FComputedImage, false, false);
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TFMotionBlur.PreviewNeeded;
|
|
procedure TFMotionBlur.PreviewNeeded;
|
|
begin
|
|
begin
|
|
FThreadManager.WantPreview(CreateMotionBlurTask(FFilterConnector.BackupLayer,
|
|
FThreadManager.WantPreview(CreateMotionBlurTask(FFilterConnector.BackupLayer,
|
|
@@ -207,6 +215,12 @@ begin
|
|
Checkbox_Oriented.Checked));
|
|
Checkbox_Oriented.Checked));
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TFMotionBlur.StoreComputedImage;
|
|
|
|
+begin
|
|
|
|
+ if FComputed and (FComputedImage = nil) then
|
|
|
|
+ FComputedImage := FFilterConnector.ActiveLayer.Duplicate;
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TFMotionBlur.OnTaskEvent(ASender: TObject; AEvent: TThreadManagerEvent
|
|
procedure TFMotionBlur.OnTaskEvent(ASender: TObject; AEvent: TThreadManagerEvent
|
|
);
|
|
);
|
|
begin
|
|
begin
|
|
@@ -220,13 +234,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
|
|
@@ -238,6 +247,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;
|
|
@@ -251,11 +261,14 @@ begin
|
|
CheckOKCancelBtns(Button_OK{,Button_Cancel});
|
|
CheckOKCancelBtns(Button_OK{,Button_Cancel});
|
|
CheckFloatSpinEdit(SpinEdit_Distance);
|
|
CheckFloatSpinEdit(SpinEdit_Distance);
|
|
SpinEdit_Distance.Constraints.MinWidth := DoScaleX(70, OriginalDPI);
|
|
SpinEdit_Distance.Constraints.MinWidth := DoScaleX(70, OriginalDPI);
|
|
|
|
+
|
|
|
|
+ FComputed := false;
|
|
|
|
+ FComputedImage := nil;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TFMotionBlur.FormDestroy(Sender: TObject);
|
|
procedure TFMotionBlur.FormDestroy(Sender: TObject);
|
|
begin
|
|
begin
|
|
- if FComputedImage <> nil then FreeAndNil(FComputedImage);
|
|
|
|
|
|
+ FreeAndNil(FComputedImage);
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TFMotionBlur.FormShow(Sender: TObject);
|
|
procedure TFMotionBlur.FormShow(Sender: TObject);
|
|
@@ -293,8 +306,7 @@ end;
|
|
|
|
|
|
procedure TFMotionBlur.Button_OKClick(Sender: TObject);
|
|
procedure TFMotionBlur.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
|
|
@@ -316,9 +328,12 @@ procedure TFMotionBlur.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;
|
|
end;
|
|
|
|
|
|
procedure TFMotionBlur.FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
procedure TFMotionBlur.FormCloseQuery(Sender: TObject; var CanClose: boolean);
|