Selection bug fixed. Selection Copy and Paste work.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1615 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
yangjixian
2011-05-06 10:04:42 +00:00
parent 6d9bc2805b
commit bfea1f5a6c
6 changed files with 1215 additions and 1194 deletions

View File

@ -268,6 +268,8 @@ begin
oBmp := TBitmap.Create;
try
oBmp.LoadFromClipboardFormat(PredefinedClipboardFormat(pcfDelphiBitmap));
Width := oBmp.Width;
Height := oBmp.Height;
Canvas.Draw(0, 0, oBmp);
finally
oBmp.Free;

View File

@ -49,7 +49,7 @@
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="14" Y="4"/>
<UsageCount Value="83"/>
<UsageCount Value="84"/>
</Unit0>
<Unit1>
<Filename Value="main.pas"/>
@ -58,12 +58,11 @@
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Main"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="0"/>
<WindowIndex Value="0"/>
<TopLine Value="843"/>
<CursorPos X="28" Y="860"/>
<UsageCount Value="83"/>
<TopLine Value="1266"/>
<CursorPos X="24" Y="1279"/>
<UsageCount Value="84"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit1>
@ -72,8 +71,8 @@
<UnitName Value="PictureCtrls"/>
<EditorIndex Value="2"/>
<WindowIndex Value="0"/>
<TopLine Value="1168"/>
<CursorPos X="1" Y="1193"/>
<TopLine Value="1411"/>
<CursorPos X="27" Y="1432"/>
<UsageCount Value="35"/>
<Loaded Value="True"/>
</Unit2>
@ -170,8 +169,8 @@
<Filename Value="T:\fpclaz\laz\lcl\graphics.pp"/>
<UnitName Value="Graphics"/>
<WindowIndex Value="0"/>
<TopLine Value="129"/>
<CursorPos X="3" Y="149"/>
<TopLine Value="1078"/>
<CursorPos X="15" Y="1094"/>
<UsageCount Value="10"/>
</Unit12>
<Unit13>
@ -358,10 +357,11 @@
<Unit35>
<Filename Value="DLBitmap.pas"/>
<UnitName Value="DLBitmap"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="4"/>
<WindowIndex Value="0"/>
<TopLine Value="239"/>
<CursorPos X="36" Y="259"/>
<TopLine Value="259"/>
<CursorPos X="9" Y="270"/>
<UsageCount Value="19"/>
<Loaded Value="True"/>
</Unit35>
@ -447,123 +447,123 @@
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="picturectrls.pas"/>
<Caret Line="187" Column="20" TopLine="155"/>
<Caret Line="1060" Column="31" TopLine="1034"/>
</Position1>
<Position2>
<Filename Value="picturectrls.pas"/>
<Caret Line="656" Column="53" TopLine="630"/>
<Caret Line="1167" Column="42" TopLine="1153"/>
</Position2>
<Position3>
<Filename Value="picturectrls.pas"/>
<Caret Line="664" Column="14" TopLine="632"/>
<Caret Line="1175" Column="29" TopLine="1153"/>
</Position3>
<Position4>
<Filename Value="picturectrls.pas"/>
<Caret Line="732" Column="14" TopLine="700"/>
<Caret Line="982" Column="47" TopLine="973"/>
</Position4>
<Position5>
<Filename Value="picturectrls.pas"/>
<Caret Line="1175" Column="26" TopLine="1147"/>
<Caret Line="1039" Column="39" TopLine="1028"/>
</Position5>
<Position6>
<Filename Value="DLBitmap.pas"/>
<Caret Line="75" Column="30" TopLine="55"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="1052" Column="29" TopLine="1028"/>
</Position6>
<Position7>
<Filename Value="DLBitmap.pas"/>
<Caret Line="255" Column="18" TopLine="223"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="1057" Column="60" TopLine="1046"/>
</Position7>
<Position8>
<Filename Value="main.pas"/>
<Caret Line="611" Column="13" TopLine="591"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="1058" Column="21" TopLine="1046"/>
</Position8>
<Position9>
<Filename Value="main.pas"/>
<Caret Line="646" Column="13" TopLine="615"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="1060" Column="31" TopLine="1046"/>
</Position9>
<Position10>
<Filename Value="main.pas"/>
<Caret Line="653" Column="13" TopLine="622"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="1167" Column="42" TopLine="1153"/>
</Position10>
<Position11>
<Filename Value="main.pas"/>
<Caret Line="660" Column="13" TopLine="629"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="1175" Column="29" TopLine="1162"/>
</Position11>
<Position12>
<Filename Value="main.pas"/>
<Caret Line="674" Column="13" TopLine="643"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="150" Column="91" TopLine="145"/>
</Position12>
<Position13>
<Filename Value="main.pas"/>
<Caret Line="681" Column="13" TopLine="650"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="182" Column="24" TopLine="156"/>
</Position13>
<Position14>
<Filename Value="main.pas"/>
<Caret Line="851" Column="13" TopLine="820"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="229" Column="57" TopLine="203"/>
</Position14>
<Position15>
<Filename Value="main.pas"/>
<Caret Line="1384" Column="1" TopLine="1347"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="230" Column="23" TopLine="204"/>
</Position15>
<Position16>
<Filename Value="main.pas"/>
<Caret Line="862" Column="38" TopLine="843"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="717" Column="27" TopLine="703"/>
</Position16>
<Position17>
<Filename Value="picturectrls.pas"/>
<Caret Line="1149" Column="73" TopLine="1144"/>
<Caret Line="6" Column="94" TopLine="1"/>
</Position17>
<Position18>
<Filename Value="main.pas"/>
<Caret Line="862" Column="9" TopLine="843"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="187" Column="20" TopLine="161"/>
</Position18>
<Position19>
<Filename Value="picturectrls.pas"/>
<Caret Line="187" Column="19" TopLine="168"/>
<Caret Line="665" Column="16" TopLine="639"/>
</Position19>
<Position20>
<Filename Value="picturectrls.pas"/>
<Caret Line="199" Column="30" TopLine="168"/>
<Caret Line="733" Column="14" TopLine="707"/>
</Position20>
<Position21>
<Filename Value="picturectrls.pas"/>
<Caret Line="640" Column="78" TopLine="633"/>
<Caret Line="1178" Column="30" TopLine="1165"/>
</Position21>
<Position22>
<Filename Value="picturectrls.pas"/>
<Caret Line="664" Column="14" TopLine="633"/>
<Filename Value="main.pas"/>
<Caret Line="864" Column="16" TopLine="843"/>
</Position22>
<Position23>
<Filename Value="picturectrls.pas"/>
<Caret Line="732" Column="14" TopLine="701"/>
<Filename Value="main.pas"/>
<Caret Line="1279" Column="24" TopLine="1266"/>
</Position23>
<Position24>
<Filename Value="picturectrls.pas"/>
<Caret Line="259" Column="85" TopLine="247"/>
<Caret Line="205" Column="19" TopLine="189"/>
</Position24>
<Position25>
<Filename Value="picturectrls.pas"/>
<Caret Line="578" Column="90" TopLine="562"/>
<Caret Line="788" Column="28" TopLine="762"/>
</Position25>
<Position26>
<Filename Value="picturectrls.pas"/>
<Caret Line="170" Column="101" TopLine="162"/>
<Caret Line="1177" Column="30" TopLine="1151"/>
</Position26>
<Position27>
<Filename Value="picturectrls.pas"/>
<Caret Line="414" Column="39" TopLine="383"/>
<Caret Line="1180" Column="25" TopLine="1154"/>
</Position27>
<Position28>
<Filename Value="picturectrls.pas"/>
<Caret Line="425" Column="32" TopLine="394"/>
<Caret Line="1184" Column="38" TopLine="1158"/>
</Position28>
<Position29>
<Filename Value="picturectrls.pas"/>
<Caret Line="733" Column="1" TopLine="719"/>
<Caret Line="1432" Column="27" TopLine="1411"/>
</Position29>
<Position30>
<Filename Value="picturectrls.pas"/>
<Caret Line="791" Column="39" TopLine="769"/>
<Filename Value="DLBitmap.pas"/>
<Caret Line="76" Column="33" TopLine="60"/>
</Position30>
</JumpHistory>
</ProjectOptions>

View File

@ -1,7 +1,7 @@
object MainForm: TMainForm
Left = 519
Left = 135
Height = 681
Top = 272
Top = 135
Width = 920
Caption = 'Lazarus Image Editor'
ClientHeight = 659
@ -160,6 +160,8 @@
Grouped = True
ImageIndex = 5
OnClick = ToolBrushClick
ParentShowHint = False
ShowHint = True
Style = tbsCheck
end
object ToolText: TToolButton
@ -169,6 +171,8 @@
Grouped = True
ImageIndex = 5
OnClick = ToolTextClick
ParentShowHint = False
ShowHint = True
Style = tbsCheck
end
object ToolcolorReplacer: TToolButton
@ -178,6 +182,8 @@
Grouped = True
ImageIndex = 5
OnClick = ToolcolorReplacerClick
ParentShowHint = False
ShowHint = True
Style = tbsCheck
end
end
@ -1385,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

File diff suppressed because it is too large Load Diff

View File

@ -858,6 +858,10 @@ begin
begin
Mask(XX1, YY1, XX2, YY2, [ssLeft]);
IsSelection := False;
XX1 := 0;
XX2 := 0;
YY1 := 0;
YY2 := 0;
end;
ActivePictureEdit.Tool := Tool;
UpdateToolSettings;

View File

@ -655,13 +655,14 @@ begin
ptPen: Line(X, Y, X, Y, Shift);
ptFloodFill: FloodFill(X, Y, Shift);
ptMask: begin if MaskTool = mtFloodFill then
MaskFloodFill(X, Y, Shift);
MaskFloodFill(X, Y, Shift);
Canvas.Pen.Style := psDot;
Canvas.Pen.Mode := pmXor;
IsSelection := True;
SeleLeft := X;
SeleTop := Y;
Mask(XX1, YY1, XX2, YY2, Shift);
if (XX1 <> 0) and (XX2 <> 0) and (YY1 <> 0) and (YY2 <> 0) then
Mask(XX1, YY1, XX2, YY2, Shift);
end;
ptColorPick: ColorPick(X, Y, Shift);
ptEraser: Eraser(X, Y, Shift);
@ -767,7 +768,7 @@ begin
// Canvas.Pen.Mode := pmNot;
Canvas.Pen.Mode := pmNotXor;
Canvas.Brush.Style := bsClear;
Canvas.Brush.Style := bsSolid;
S := PictureToClient(Point(X1, Y1));
E := PictureToClient(Point(X2, Y2));
@ -1171,14 +1172,15 @@ begin
Picture.Canvas.Pen.Mode := pmNotXor;
Picture.Canvas.Brush.Color := $00EACAB6;
//Canvas.Brush.Style := bsClear;
Picture.Canvas.Rectangle(X1, Y1, X2, Y2);
SelectedDLBMP.Width := Abs(X2 - X1);
SelectedDLBMP.Height := Abs(Y2 - Y1);
SelectedDLBMP.Canvas.CopyRect(Rect(0, 0, SelectedDLBMP.Width, SelectedDLBMP.Height),
Picture.Canvas, Rect(X1, Y1, X2, Y2));
// if SelectedDLBMP <> nil then
// SelectedDLBMP.CopyToClipboard;
// Picture.Canvas.Draw(0,0,SelectedDLBMP);
// SelectedDLBMP.CopyToClipboard;
//SelectedDLBMP.Canvas.Rectangle(2,2,Width-2,Height-2);
// Canvas.Draw(0,0,SelectedDLBMP);
Picture.Canvas.Rectangle(X1, Y1, X2, Y2);
Picture.Canvas.Pen.Mode := pmCopy;
Picture.Canvas.Pen.Style := psSolid;
SeleLeft := X1;
@ -1412,7 +1414,10 @@ procedure TCustomPictureEdit.Copy;
begin
if Picture = nil then
Exit;
Picture.CopyToClipboard;
if Tool <> ptMask then
Picture.CopyToClipboard
else
SelectedDLBMP.CopyToClipboard;
end;
procedure TCustomPictureEdit.Paste;
@ -1422,7 +1427,10 @@ begin
BeginDraw;
try
//Assert(True, 'Implement Paste');
Picture.PasteFromClipboard;
SelectedDLBMP.Width:=100;
SelectedDLBMP.Height:=100;
SelectedDLBMP.PasteFromClipboard;
Picture.Canvas.Draw(0, 0, SelectedDLBMP);
finally
EndDraw;
end;