You've already forked lazarus-ccr
Polygon finished.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1635 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -49,7 +49,7 @@
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1"/>
|
||||
<CursorPos X="14" Y="4"/>
|
||||
<UsageCount Value="84"/>
|
||||
<UsageCount Value="86"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="main.pas"/>
|
||||
@ -62,17 +62,18 @@
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1266"/>
|
||||
<CursorPos X="24" Y="1279"/>
|
||||
<UsageCount Value="84"/>
|
||||
<UsageCount Value="86"/>
|
||||
<Loaded Value="True"/>
|
||||
<LoadedDesigner Value="True"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<UnitName Value="PictureCtrls"/>
|
||||
<IsVisibleTab Value="True"/>
|
||||
<EditorIndex Value="2"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1411"/>
|
||||
<CursorPos X="27" Y="1432"/>
|
||||
<TopLine Value="1100"/>
|
||||
<CursorPos X="1" Y="1123"/>
|
||||
<UsageCount Value="35"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit2>
|
||||
@ -169,8 +170,8 @@
|
||||
<Filename Value="T:\fpclaz\laz\lcl\graphics.pp"/>
|
||||
<UnitName Value="Graphics"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1078"/>
|
||||
<CursorPos X="15" Y="1094"/>
|
||||
<TopLine Value="1115"/>
|
||||
<CursorPos X="15" Y="1131"/>
|
||||
<UsageCount Value="10"/>
|
||||
</Unit12>
|
||||
<Unit13>
|
||||
@ -357,7 +358,6 @@
|
||||
<Unit35>
|
||||
<Filename Value="DLBitmap.pas"/>
|
||||
<UnitName Value="DLBitmap"/>
|
||||
<IsVisibleTab Value="True"/>
|
||||
<EditorIndex Value="4"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="259"/>
|
||||
@ -447,123 +447,123 @@
|
||||
<JumpHistory Count="30" HistoryIndex="29">
|
||||
<Position1>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1060" Column="31" TopLine="1034"/>
|
||||
<Caret Line="724" Column="14" TopLine="707"/>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1167" Column="42" TopLine="1153"/>
|
||||
<Caret Line="745" Column="35" TopLine="731"/>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1175" Column="29" TopLine="1153"/>
|
||||
<Caret Line="784" Column="14" TopLine="763"/>
|
||||
</Position3>
|
||||
<Position4>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="982" Column="47" TopLine="973"/>
|
||||
<Caret Line="1095" Column="37" TopLine="1069"/>
|
||||
</Position4>
|
||||
<Position5>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1039" Column="39" TopLine="1028"/>
|
||||
<Caret Line="37" Column="94" TopLine="34"/>
|
||||
</Position5>
|
||||
<Position6>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1052" Column="29" TopLine="1028"/>
|
||||
<Caret Line="114" Column="32" TopLine="88"/>
|
||||
</Position6>
|
||||
<Position7>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1057" Column="60" TopLine="1046"/>
|
||||
<Caret Line="117" Column="54" TopLine="91"/>
|
||||
</Position7>
|
||||
<Position8>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1058" Column="21" TopLine="1046"/>
|
||||
<Caret Line="186" Column="22" TopLine="160"/>
|
||||
</Position8>
|
||||
<Position9>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1060" Column="31" TopLine="1046"/>
|
||||
<Caret Line="678" Column="15" TopLine="665"/>
|
||||
</Position9>
|
||||
<Position10>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1167" Column="42" TopLine="1153"/>
|
||||
<Caret Line="707" Column="15" TopLine="681"/>
|
||||
</Position10>
|
||||
<Position11>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1175" Column="29" TopLine="1162"/>
|
||||
<Caret Line="710" Column="15" TopLine="684"/>
|
||||
</Position11>
|
||||
<Position12>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="150" Column="91" TopLine="145"/>
|
||||
<Caret Line="792" Column="7" TopLine="768"/>
|
||||
</Position12>
|
||||
<Position13>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="182" Column="24" TopLine="156"/>
|
||||
<Caret Line="791" Column="31" TopLine="765"/>
|
||||
</Position13>
|
||||
<Position14>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="229" Column="57" TopLine="203"/>
|
||||
<Caret Line="729" Column="1" TopLine="712"/>
|
||||
</Position14>
|
||||
<Position15>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="230" Column="23" TopLine="204"/>
|
||||
<Caret Line="702" Column="13" TopLine="659"/>
|
||||
</Position15>
|
||||
<Position16>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="717" Column="27" TopLine="703"/>
|
||||
<Caret Line="1090" Column="38" TopLine="1076"/>
|
||||
</Position16>
|
||||
<Position17>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="6" Column="94" TopLine="1"/>
|
||||
<Caret Line="188" Column="31" TopLine="172"/>
|
||||
</Position17>
|
||||
<Position18>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="187" Column="20" TopLine="161"/>
|
||||
<Caret Line="702" Column="28" TopLine="679"/>
|
||||
</Position18>
|
||||
<Position19>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="665" Column="16" TopLine="639"/>
|
||||
<Caret Line="1091" Column="16" TopLine="1076"/>
|
||||
</Position19>
|
||||
<Position20>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="733" Column="14" TopLine="707"/>
|
||||
<Caret Line="630" Column="44" TopLine="620"/>
|
||||
</Position20>
|
||||
<Position21>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1178" Column="30" TopLine="1165"/>
|
||||
<Caret Line="735" Column="9" TopLine="709"/>
|
||||
</Position21>
|
||||
<Position22>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="864" Column="16" TopLine="843"/>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="186" Column="22" TopLine="167"/>
|
||||
</Position22>
|
||||
<Position23>
|
||||
<Filename Value="main.pas"/>
|
||||
<Caret Line="1279" Column="24" TopLine="1266"/>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="700" Column="22" TopLine="674"/>
|
||||
</Position23>
|
||||
<Position24>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="205" Column="19" TopLine="189"/>
|
||||
<Caret Line="725" Column="14" TopLine="699"/>
|
||||
</Position24>
|
||||
<Position25>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="788" Column="28" TopLine="762"/>
|
||||
<Caret Line="735" Column="14" TopLine="709"/>
|
||||
</Position25>
|
||||
<Position26>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1177" Column="30" TopLine="1151"/>
|
||||
<Caret Line="752" Column="35" TopLine="726"/>
|
||||
</Position26>
|
||||
<Position27>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1180" Column="25" TopLine="1154"/>
|
||||
<Caret Line="790" Column="27" TopLine="764"/>
|
||||
</Position27>
|
||||
<Position28>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1184" Column="38" TopLine="1158"/>
|
||||
<Caret Line="778" Column="40" TopLine="764"/>
|
||||
</Position28>
|
||||
<Position29>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1432" Column="27" TopLine="1411"/>
|
||||
<Caret Line="920" Column="49" TopLine="902"/>
|
||||
</Position29>
|
||||
<Position30>
|
||||
<Filename Value="DLBitmap.pas"/>
|
||||
<Caret Line="76" Column="33" TopLine="60"/>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="1123" Column="36" TopLine="1106"/>
|
||||
</Position30>
|
||||
</JumpHistory>
|
||||
</ProjectOptions>
|
||||
|
@ -1,7 +1,7 @@
|
||||
object MainForm: TMainForm
|
||||
Left = 135
|
||||
Left = 150
|
||||
Height = 681
|
||||
Top = 90
|
||||
Top = 60
|
||||
Width = 925
|
||||
Caption = 'Lazarus Image Editor'
|
||||
ClientHeight = 659
|
||||
@ -1391,9 +1391,9 @@
|
||||
TabOrder = 5
|
||||
object checkFuzzy: TCheckBox
|
||||
Left = 4
|
||||
Height = 19
|
||||
Height = 23
|
||||
Top = 5
|
||||
Width = 20
|
||||
Width = 24
|
||||
OnChange = checkFuzzyChange
|
||||
TabOrder = 0
|
||||
end
|
||||
|
@ -1,7 +1,7 @@
|
||||
{ This is an automatically generated lazarus resource file }
|
||||
|
||||
LazarusResources.Add('TMainForm','FORMDATA',[
|
||||
'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3#135#0#6'Height'#3#169#2#3'Top'#2'Z'
|
||||
'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3#150#0#6'Height'#3#169#2#3'Top'#2'<'
|
||||
+#5'Width'#3#157#3#7'Caption'#6#20'Lazarus Image Editor'#12'ClientHeight'#3
|
||||
+#147#2#11'ClientWidth'#3#157#3#12'Font.CharSet'#7#14'GB2312_CHARSET'#11'Font'
|
||||
+'.Height'#2#243#9'Font.Name'#6#12#229#190#174#232#189#175#233#155#133#233#187
|
||||
@ -757,8 +757,8 @@ LazarusResources.Add('TMainForm','FORMDATA',[
|
||||
+'ayout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TPanel'#15'PanelTolerance2'#4
|
||||
+'Left'#3#134#2#6'Height'#2'"'#3'Top'#2#0#5'Width'#2#30#5'Align'#7#6'alLeft'
|
||||
+#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'"'#11'ClientWidth'#2#30#8'Tab'
|
||||
+'Order'#2#5#0#9'TCheckBox'#10'checkFuzzy'#4'Left'#2#4#6'Height'#2#19#3'Top'#2
|
||||
+#5#5'Width'#2#20#8'OnChange'#7#16'checkFuzzyChange'#8'TabOrder'#2#0#0#0#0#0#0
|
||||
+'Order'#2#5#0#9'TCheckBox'#10'checkFuzzy'#4'Left'#2#4#6'Height'#2#23#3'Top'#2
|
||||
+#5#5'Width'#2#24#8'OnChange'#7#16'checkFuzzyChange'#8'TabOrder'#2#0#0#0#0#0#0
|
||||
+#6'TPanel'#13'PanelPictures'#4'Left'#2'('#6'Height'#3#20#2#3'Top'#2'i'#5'Wid'
|
||||
+'th'#3'*'#3#5'Align'#7#8'alClient'#10'BevelOuter'#7#9'bvLowered'#8'TabOrder'
|
||||
+#2#3#0#0#9'TMainMenu'#8'MainMenu'#6'Images'#7#16'ImageListActions'#4'left'#2
|
||||
|
@ -151,6 +151,8 @@ type
|
||||
procedure SetTool(const AValue: TPictureEditTool);
|
||||
protected
|
||||
FromColor, ToColor: TColor;
|
||||
paddr: array of TPoint;
|
||||
pcount: integer;
|
||||
procedure Change; dynamic;
|
||||
procedure ColorChange; dynamic;
|
||||
procedure PictureSizeChange; dynamic;
|
||||
@ -181,9 +183,9 @@ type
|
||||
procedure Line(X1, Y1, X2, Y2: integer; Shift: TShiftState = [ssLeft]);
|
||||
procedure Rectangle(X1, Y1, X2, Y2: integer; Shift: TShiftState = [ssLeft]);
|
||||
procedure Ellipse(X1, Y1, X2, Y2: integer; Shift: TShiftState = [ssLeft]);
|
||||
procedure Polygon(X1, Y1, X2, Y2: integer; Shift: TShiftState);
|
||||
procedure Polygon(polyaddr: array of TPoint);
|
||||
procedure ProcessEditorText(X1, Y1, X2, Y2: integer);
|
||||
procedure ProcessPointAddr(X1, Y1, X2, Y2: integer; Points: array of TPoint; PCount: integer);
|
||||
procedure ProcessPointAddr;
|
||||
procedure Mask(X1, Y1, X2, Y2: integer; Shift: TShiftState = [ssLeft]);
|
||||
|
||||
procedure FlipHorizontally;
|
||||
@ -695,6 +697,11 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
if Tool = ptPolygon then
|
||||
if pcount > 0 then begin
|
||||
//ProcessPointAddr;
|
||||
end;
|
||||
|
||||
DrawToolDrag(StartPos.X, StartPos.Y, FTempPos.X, FTempPos.Y);
|
||||
FTempPos := Point(X, Y);
|
||||
|
||||
@ -703,8 +710,7 @@ end;
|
||||
|
||||
procedure TCustomPictureEdit.PictureMouseUp(Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: integer);
|
||||
var
|
||||
paddr: array of TPoint; i, pXUnit, pYUnit: integer;
|
||||
var S, E: TPoint;
|
||||
begin
|
||||
inherited PictureMouseUp(Button, Shift, X, Y);
|
||||
if Button = mbLeft then
|
||||
@ -718,16 +724,16 @@ begin
|
||||
ptEllipse: Ellipse(StartPos.X, StartPos.Y, X, Y, Shift);
|
||||
ptPolygon:
|
||||
begin
|
||||
SetLength(paddr, 3);
|
||||
ProcessPointAddr(StartPos.X, StartPos.Y, X, Y, paddr, 3);
|
||||
pXUnit := (X - StartPos.X) div (3 - 1);
|
||||
pYUnit := (Y - StartPos.Y) div (3 - 1);
|
||||
for i := 0 to 3 - 1 do
|
||||
begin
|
||||
paddr[i].x := StartPos.X + pXUnit * i;
|
||||
paddr[i].y := StartPos.Y + pYUnit * i;
|
||||
end;
|
||||
Canvas.Polygon(paddr);
|
||||
pcount := pcount + 1;
|
||||
SetLength(paddr, pcount);
|
||||
paddr[pcount - 1].x := X;
|
||||
paddr[pcount - 1].y := Y;
|
||||
S := PictureToClient(Point(StartPos.X, StartPos.Y));
|
||||
E := PictureToClient(Point(X, Y));
|
||||
//Canvas.Pen.Color := OutLineColor;
|
||||
//Canvas.Line(S.X, S.Y, E.X, E.Y);
|
||||
Polygon(paddr);
|
||||
//Picture.Canvas.Polygon(paddr);
|
||||
end;
|
||||
ptMask: begin if MaskTool <> mtFloodFill then
|
||||
Mask(StartPos.X, StartPos.Y, X, Y, Shift);
|
||||
@ -783,8 +789,11 @@ begin
|
||||
if FToolDrag = tdEllipse then
|
||||
Canvas.Ellipse(S.X, S.Y, E.X, E.Y);
|
||||
if FToolDrag = tdPolygon then
|
||||
Polygon(S.X, S.Y, E.X, E.Y, [ssLeft]);
|
||||
|
||||
begin
|
||||
Canvas.Pen.Color := OutLineColor;
|
||||
//Picture.Canvas.Line(paddr[pcount - 1].x, paddr[pcount - 1].y, X, Y);
|
||||
Canvas.Line(S.X, S.Y, E.X, E.Y);
|
||||
end;
|
||||
Canvas.Pen.Mode := pmCopy;
|
||||
Canvas.Brush.Style := bsSolid;
|
||||
end;
|
||||
@ -1085,59 +1094,37 @@ begin
|
||||
InvalidatePictureRect(Rect(X1, Y1, X2, Y2));
|
||||
end;
|
||||
|
||||
procedure TCustomPictureEdit.ProcessPointAddr(X1, Y1, X2, Y2: integer;
|
||||
Points: array of TPoint; PCount: integer);
|
||||
var i, pXUnit, pYUnit: integer;
|
||||
procedure TCustomPictureEdit.ProcessPointAddr;
|
||||
var i: integer; E, F: TPoint;
|
||||
begin
|
||||
{ pXUnit := (X2 - X1) div (PCount - 1);
|
||||
pYUnit := (Y2 - Y1) div (PCount - 1);
|
||||
for i := 0 to PCount - 1 do
|
||||
if pcount > 2 then
|
||||
begin
|
||||
Points[i].x := X1 + pXUnit * i;
|
||||
Points[i].y := Y1 + pYUnit * i;
|
||||
end; }
|
||||
Points[0].x := X1 + (X2 - X1) div 2;
|
||||
Points[0].y := Y1;
|
||||
Points[1].x := X1;
|
||||
Points[1].y := Y2;
|
||||
Points[2].x := X2;
|
||||
Points[2].y := Y2;
|
||||
E := PictureToClient(paddr[i]);
|
||||
F := PictureToClient(paddr[i + 1]);
|
||||
for i := 0 to pcount - 2 do
|
||||
Canvas.Line(E.x, E.y, F.x, F.y);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCustomPictureEdit.Polygon(X1, Y1, X2, Y2: integer; Shift: TShiftState);
|
||||
procedure TCustomPictureEdit.Polygon(polyaddr: array of TPoint);
|
||||
var
|
||||
paddr: array of TPoint; i, pXUnit, pYUnit: integer;
|
||||
i: integer; tempaddr: array of TPoint;
|
||||
begin
|
||||
if Picture = nil then
|
||||
Exit;
|
||||
|
||||
BeginDraw;
|
||||
if not (ssLeft in Shift) then
|
||||
Picture.EraseMode := ermErase;
|
||||
try
|
||||
SetLength(tempaddr, pcount);
|
||||
Picture.Canvas.Brush.Color := FFillColor;
|
||||
Picture.Canvas.Pen.Color := FOutlineColor;
|
||||
SetLength(paddr, 3);
|
||||
ProcessPointAddr(X1, Y1, X2, Y2, paddr, 3);
|
||||
pXUnit := (X2 - X1) div (3 - 1);
|
||||
pYUnit := (Y2 - Y1) div (3 - 1);
|
||||
for i := 0 to 3 - 1 do
|
||||
begin
|
||||
paddr[i].x := X1 + pXUnit * i;
|
||||
paddr[i].y := Y1 + pYUnit * i;
|
||||
end;
|
||||
{ paddr[0].x := X1 + (X2 - X1) div 2;
|
||||
paddr[0].y := Y1;
|
||||
paddr[1].x := X1;
|
||||
paddr[1].y := Y2;
|
||||
paddr[2].x := X2;
|
||||
paddr[2].y := Y2; }
|
||||
Picture.Canvas.Polygon(paddr);
|
||||
for i := 0 to pcount - 1 do
|
||||
tempaddr[i] := polyaddr[i]; //PictureToClient(polyaddr[i]);
|
||||
Picture.Canvas.Polygon(tempaddr);
|
||||
finally
|
||||
Picture.EraseMode := ermNone;
|
||||
EndDraw;
|
||||
end;
|
||||
InvalidatePictureRect(Rect(X1, Y1, X2, Y2));
|
||||
InvalidatePictureRect(Rect(0, 0, Width, Height));
|
||||
end;
|
||||
|
||||
procedure TCustomPictureEdit.ProcessEditorText(X1, Y1, X2, Y2: integer);
|
||||
|
Reference in New Issue
Block a user