You've already forked lazarus-ccr
fpvviewer: Now it fully redraws when dragging and syncs the control pos info with the spins
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2720 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@@ -18,6 +18,8 @@ type
|
||||
public
|
||||
PosX, PosY: Integer;
|
||||
Drawing: TBitmap;
|
||||
RedrawCallback: TNotifyEvent;
|
||||
PosChangedCallback: TNotifyEvent;
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
procedure EraseBackground(DC: HDC); override;
|
||||
@@ -78,7 +80,7 @@ begin
|
||||
Canvas.Brush.Color := clWhite;
|
||||
Canvas.Brush.Style := bsSolid;
|
||||
Canvas.FillRect(Self.ClientRect);
|
||||
Canvas.Draw(PosX, PosY, Drawing);
|
||||
Canvas.Draw(0, 0, Drawing); // (PosX, PosY,..
|
||||
// inherited Paint;
|
||||
end;
|
||||
|
||||
@@ -93,6 +95,8 @@ begin
|
||||
else
|
||||
Exit;
|
||||
end;
|
||||
if Assigned(PosChangedCallback) then PosChangedCallback(Self);
|
||||
if Assigned(RedrawCallback) then RedrawCallback(Self);
|
||||
Invalidate();
|
||||
end;
|
||||
|
||||
@@ -119,6 +123,8 @@ begin
|
||||
DragDropStarted := False;
|
||||
PosX := PosX + (X - DragStartPos.X);
|
||||
PosY := PosY + (Y - DragStartPos.Y);
|
||||
if Assigned(PosChangedCallback) then PosChangedCallback(Self);
|
||||
if Assigned(RedrawCallback) then RedrawCallback(Self);
|
||||
Invalidate();
|
||||
end;
|
||||
end;
|
||||
@@ -127,6 +133,7 @@ procedure TFPVVDrawer.Clear;
|
||||
begin
|
||||
PosX := 0;
|
||||
PosY := 0;
|
||||
if Assigned(PosChangedCallback) then PosChangedCallback(Self);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@@ -14,7 +14,7 @@ object frmFPVViewer: TfrmFPVViewer
|
||||
Height = 424
|
||||
Top = 176
|
||||
Width = 485
|
||||
PageIndex = 1
|
||||
PageIndex = 0
|
||||
Align = alClient
|
||||
Anchors = [akLeft, akBottom]
|
||||
TabOrder = 0
|
||||
@@ -158,6 +158,7 @@ object frmFPVViewer: TfrmFPVViewer
|
||||
Increment = 100
|
||||
MaxValue = 1000
|
||||
MinValue = -1000
|
||||
OnChange = spinAdjustYChange
|
||||
TabOrder = 7
|
||||
end
|
||||
object spinAdjustX: TSpinEdit
|
||||
@@ -168,6 +169,7 @@ object frmFPVViewer: TfrmFPVViewer
|
||||
Increment = 50
|
||||
MaxValue = 1000
|
||||
MinValue = -1000
|
||||
OnChange = spinAdjustXChange
|
||||
TabOrder = 8
|
||||
end
|
||||
object Label3: TLabel
|
||||
|
@@ -47,12 +47,16 @@ type
|
||||
procedure buttonRenderingTestClick(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure spinAdjustXChange(Sender: TObject);
|
||||
procedure spinAdjustYChange(Sender: TObject);
|
||||
procedure spinScaleChange(Sender: TObject);
|
||||
private
|
||||
procedure MyContourLineDrawingProc(z,x1,y1,x2,y2: Double);
|
||||
function FPVDebugAddItemProc(AStr: string; AParent: Pointer): Pointer;
|
||||
procedure HandleDrawerMouseWheel(Sender: TObject; Shift: TShiftState;
|
||||
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
|
||||
procedure HandleDrawerPosChanged(Sender: TObject);
|
||||
procedure HandleDrawerRedraw(Sender: TObject);
|
||||
public
|
||||
{ public declarations }
|
||||
Drawer: TFPVVDrawer;
|
||||
@@ -87,8 +91,6 @@ begin
|
||||
|
||||
notebook.PageIndex := 0;
|
||||
|
||||
Drawer.Clear;
|
||||
|
||||
Vec := TvVectorialDocument.Create;
|
||||
try
|
||||
// If we desire, force a encoding for the read operation
|
||||
@@ -124,8 +126,8 @@ begin
|
||||
Vec.GetPage(0).DrawBackground(Drawer.Drawing.Canvas);
|
||||
Vec.GetPage(0).Render(
|
||||
Drawer.Drawing.Canvas,
|
||||
FPVVIEWER_SPACE_FOR_NEGATIVE_COORDS + spinAdjustX.Value,
|
||||
Drawer.Drawing.Height - FPVVIEWER_SPACE_FOR_NEGATIVE_COORDS + spinAdjustY.Value,
|
||||
FPVVIEWER_SPACE_FOR_NEGATIVE_COORDS + Drawer.PosX,
|
||||
Drawer.Drawing.Height - FPVVIEWER_SPACE_FOR_NEGATIVE_COORDS + Drawer.PosY,
|
||||
spinScale.Value,
|
||||
-1 * spinScale.Value);
|
||||
Drawer.Invalidate;
|
||||
@@ -360,6 +362,8 @@ begin
|
||||
Drawer.AnchorClient(5);
|
||||
Drawer.TabStop := True;
|
||||
Drawer.OnMouseWheel := @HandleDrawerMouseWheel;
|
||||
Drawer.PosChangedCallback := @HandleDrawerPosChanged;
|
||||
Drawer.RedrawCallback := @HandleDrawerRedraw;
|
||||
end;
|
||||
|
||||
procedure TfrmFPVViewer.FormDestroy(Sender: TObject);
|
||||
@@ -367,6 +371,16 @@ begin
|
||||
Drawer.Free;
|
||||
end;
|
||||
|
||||
procedure TfrmFPVViewer.spinAdjustXChange(Sender: TObject);
|
||||
begin
|
||||
Drawer.PosX := spinAdjustX.Value;
|
||||
end;
|
||||
|
||||
procedure TfrmFPVViewer.spinAdjustYChange(Sender: TObject);
|
||||
begin
|
||||
Drawer.PosY := spinAdjustY.Value;
|
||||
end;
|
||||
|
||||
procedure TfrmFPVViewer.spinScaleChange(Sender: TObject);
|
||||
begin
|
||||
if spinScale.Value <= 0.2 then spinScale.Increment := 0.01
|
||||
@@ -405,5 +419,16 @@ begin
|
||||
btnVisualize.Click();
|
||||
end;
|
||||
|
||||
procedure TfrmFPVViewer.HandleDrawerPosChanged(Sender: TObject);
|
||||
begin
|
||||
spinAdjustX.Value := Drawer.PosX;
|
||||
spinAdjustY.Value := Drawer.PosY;
|
||||
end;
|
||||
|
||||
procedure TfrmFPVViewer.HandleDrawerRedraw(Sender: TObject);
|
||||
begin
|
||||
btnVisualizeClick(Sender);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
Reference in New Issue
Block a user