From 8a6f96b85dd3bde0a8857bab6f5fb532e199921a Mon Sep 17 00:00:00 2001 From: yangjixian Date: Thu, 21 Apr 2011 14:42:45 +0000 Subject: [PATCH] spray and brush work. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1594 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- applications/lazimageeditor/DLBitmap.pas | 18 +- applications/lazimageeditor/DLBmpUtils.inc | 72 ++ .../lazimageeditor/lazimageeditor.lpi | 123 +-- applications/lazimageeditor/main.lfm | 19 +- applications/lazimageeditor/main.lrs | 528 ++++++------ applications/lazimageeditor/main.pas | 9 + applications/lazimageeditor/picturectrls.pas | 752 +++++++++++------- 7 files changed, 912 insertions(+), 609 deletions(-) diff --git a/applications/lazimageeditor/DLBitmap.pas b/applications/lazimageeditor/DLBitmap.pas index 03a64f608..766837938 100644 --- a/applications/lazimageeditor/DLBitmap.pas +++ b/applications/lazimageeditor/DLBitmap.pas @@ -1,4 +1,4 @@ -unit DLBitmap; +unit DLBitmap; {$mode objfpc}{$H+} @@ -65,7 +65,8 @@ type procedure CopyToClipboard; virtual; procedure PasteFromClipboard; virtual; procedure Delete; virtual; - procedure FloodFill (x,y:integer); + procedure FloodFill(x, y: integer); + procedure Spray(x, y, radian: integer; PColor: TColor); property FillColor: TColor read GetFillColor write SetFillColor; property OutlineColor: TColor read GetOutlineColor write SetOutlineColor; property PaperColor: TColor read GetPaperColor write SetPaperColor; @@ -83,6 +84,10 @@ procedure InvertBitmap(aBitmap: TDLBitmap); procedure ChangeRGB(SrcBmp: TDLBitmap; RedChange, GreenChange, BlueChange: integer); procedure ChangeBrightness(SrcBmp: TDLBitmap; ValueChange: integer); procedure ChangeContrast(SrcBmp: TDLBitmap; ValueChange: integer); +procedure SprayPoints(DLBmp: TDLBitmap; X, Y: integer; Radians: integer; PColor: TColor); +function GetRColor(const Color: TColor): Byte; +function GetGColor(const Color: TColor): Byte; +function GetBColor(const Color: TColor): Byte; implementation @@ -364,10 +369,15 @@ begin tmp.Free; end; -procedure TDLBitmap.FloodFill (x, y:integer); +procedure TDLBitmap.FloodFill(x, y: integer); begin Canvas.Brush.Color := FFillColor; - Canvas.FloodFill(x, y, Canvas.Pixels[x,y], fsSurface); + Canvas.FloodFill(x, y, Canvas.Pixels[x, y], fsSurface); +end; + +procedure TDLBitmap.Spray(x, y, radian: integer; PColor: TColor); +begin + SprayPoints(Self, x, y, radian, PColor); end; procedure TDLBitmap.FillEllipse(X1, Y1, X2, Y2: integer); diff --git a/applications/lazimageeditor/DLBmpUtils.inc b/applications/lazimageeditor/DLBmpUtils.inc index 1bc0ea60b..c00339f49 100644 --- a/applications/lazimageeditor/DLBmpUtils.inc +++ b/applications/lazimageeditor/DLBmpUtils.inc @@ -487,4 +487,76 @@ begin DestBmp.Free; end; +procedure SetCanvasPixel(DLBmp: TDLBitmap; x, y: integer; aColor: TColor); +var SrcRow: pRGBATriple; +begin + if (x > 0) and (x < DLBmp.Width) and (y > 0) and (y < DLBmp.Height) then + //aCanvas.Pixels[x, y] := aColor; + begin + SrcRow := DLBmp.ScanLine[y]; + SrcRow[x].rgbtRed:=GetRColor(aColor); + SrcRow[x].rgbtGreen:=GetGColor(aColor); + SrcRow[x].rgbtBlue:=GetBColor(aColor); + end; +end; + +procedure SprayPoints(DLBmp: TDLBitmap; X, Y: integer; Radians: Integer; PColor: TColor); +var + i, a, b, temp, ci, center: Integer; +begin + if DLBmp = nil then + Exit; + Randomize; + for i := 0 to Radians do + begin + temp := Random(100); + a := Random(Round(Radians * 0.65)); + if (temp < 50) then a := 0 - a; + temp := Random(100); + b := Random(Round(Radians * 0.65)); + if (temp < 50) then b := 0 - b; + if (a * a + b * b < Sqr(Round(Radians * 0.65))) then + SetCanvasPixel(DLBmp, X + a, Y + b, PColor); + end; + for i := 0 to Radians div 3 do + begin + temp := Random(100); + a := Random(Round(Radians * 0.65)); + if (temp < 50) then a := 0 - a; + temp := Random(100); + b := Random(Round(Radians * 0.65)); + if (temp < 50) then b := 0 - b; + if (a * a + b * b < Sqr(Round(Radians * 0.65))) then + SetCanvasPixel(DLBmp, X + a, Y + b, PColor); + end; + for i := 0 to Radians * 2 div 3 do + begin + temp := Random(100); + a := Random(Round(Radians * 0.65)); + if (temp < 50) then a := 0 - a; + temp := Random(100); + b := Random(Round(Radians * 0.65)); + if (temp < 50) then b := 0 - b; + if (a * a + b * b < Sqr(Round(Radians * 0.65))) then + SetCanvasPixel(DLBmp, X + a, Y + b, PColor); + end; + DLBmp.InvalidateScanLine; +end; + +function GetRColor(const Color: TColor): Byte; +begin + Result := Color and $FF; +end; + +function GetGColor(const Color: TColor): Byte; +begin + Result := (Color and $FF00) shr 8; +end; + +function GetBColor(const Color: TColor): Byte; +begin + Result := (Color and $FF0000) shr 16; +end; + + diff --git a/applications/lazimageeditor/lazimageeditor.lpi b/applications/lazimageeditor/lazimageeditor.lpi index e69780f90..2bb0250c4 100644 --- a/applications/lazimageeditor/lazimageeditor.lpi +++ b/applications/lazimageeditor/lazimageeditor.lpi @@ -41,7 +41,7 @@ - + @@ -50,7 +50,7 @@ - + @@ -62,20 +62,21 @@ - - - + + + - + + - - - + + + @@ -182,7 +183,7 @@ - + @@ -244,12 +245,10 @@ - - @@ -359,12 +358,11 @@ - - - - + + + @@ -391,127 +389,144 @@ + + + + + + + + + + + + + + + + + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/applications/lazimageeditor/main.lfm b/applications/lazimageeditor/main.lfm index 06b18c449..de6b0ac4e 100644 --- a/applications/lazimageeditor/main.lfm +++ b/applications/lazimageeditor/main.lfm @@ -1,7 +1,7 @@ object MainForm: TMainForm - Left = 260 + Left = 135 Height = 681 - Top = 147 + Top = 90 Width = 935 Caption = 'Lazarus Image Editor' ClientHeight = 659 @@ -151,6 +151,13 @@ ShowHint = True Style = tbsCheck end + object ToolBrush: TToolButton + Left = 0 + Top = 402 + Caption = 'ToolBrush' + ImageIndex = 5 + OnClick = ToolBrushClick + end end end object StatusBar: TStatusBar @@ -1262,8 +1269,8 @@ object spinFillAlpha: TSpinEdit Left = 10 Height = 27 - Top = 5 - Width = 51 + Top = 3 + Width = 53 OnChange = spinFillAlphaChange TabOrder = 0 Value = 100 @@ -1292,9 +1299,9 @@ TabOrder = 5 object checkFuzzy: TCheckBox Left = 4 - Height = 19 + Height = 23 Top = 9 - Width = 20 + Width = 24 OnChange = checkFuzzyChange TabOrder = 0 end diff --git a/applications/lazimageeditor/main.lrs b/applications/lazimageeditor/main.lrs index 5f247999d..13c89e04f 100644 --- a/applications/lazimageeditor/main.lrs +++ b/applications/lazimageeditor/main.lrs @@ -1,7 +1,7 @@ { This is an automatically generated lazarus resource file } LazarusResources.Add('TMainForm','FORMDATA',[ - 'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3#4#1#6'Height'#3#169#2#3'Top'#3#147#0 + 'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3#135#0#6'Height'#3#169#2#3'Top'#2'Z' +#5'Width'#3#167#3#7'Caption'#6#20'Lazarus Image Editor'#12'ClientHeight'#3 +#147#2#11'ClientWidth'#3#167#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 @@ -41,112 +41,128 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +'PolygonClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0 +#11'TToolButton'#11'ToolEllipse'#4'Left'#2#0#4'Hint'#6#7'Ellipse'#3'Top'#3 +#242#0#7'Grouped'#9#10'ImageIndex'#2#6#7'OnClick'#7#12'ToolEllClick'#14'Pare' - +'ntShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#0#0#10'TStatusBar'#9 - +'StatusBar'#4'Left'#2#0#6'Height'#2#22#3'Top'#3'}'#2#5'Width'#3#167#3#6'Pane' - +'ls'#14#1#5'Width'#3#250#0#0#1#9'Alignment'#7#8'taCenter'#5'Width'#2'P'#0#1#9 - +'Alignment'#7#8'taCenter'#5'Width'#2'P'#0#1#5'Width'#2'P'#0#1#5'Width'#2'P'#0 - +#1#5'Width'#2'2'#0#0#11'SimplePanel'#8#0#0#6'TPanel'#12'PanelPallete'#4'Left' - +#3'\'#3#6'Height'#3#20#2#3'Top'#2'i'#5'Width'#2'K'#5'Align'#7#7'alRight'#8'A' - +'utoSize'#9#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#20#2#11'ClientWidt' - +'h'#2'K'#8'TabOrder'#2#1#0#13'TColorPalette'#7'Palette'#4'Left'#2#0#6'Height' - +#3#20#2#3'Top'#2#0#5'Width'#2'K'#5'Align'#7#8'alClient'#11'ButtonWidth'#2#12 - +#12'ButtonHeight'#2#12#8'DragMode'#7#11'dmAutomatic'#16'OnColorMouseMove'#7 - +#21'PaletteColorMouseMove'#11'OnColorPick'#7#16'PaletteColorPick'#0#0#0#6'TP' - +'anel'#12'PanelToolBar'#4'Left'#2#0#6'Height'#2'i'#3'Top'#2#0#5'Width'#3#167 - +#3#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'i'#11'C' - +'lientWidth'#3#167#3#8'TabOrder'#2#2#0#6'TBevel'#6'Bevel1'#4'Left'#2#0#6'Hei' - +'ght'#2#2#3'Top'#2'E'#5'Width'#3#167#3#5'Align'#7#5'alTop'#5'Shape'#7#12'bsB' - +'ottomLine'#0#0#6'TBevel'#6'Bevel2'#4'Left'#2#0#6'Height'#2#2#3'Top'#2'!'#5 - +'Width'#3#167#3#5'Align'#7#5'alTop'#5'Shape'#7#12'bsBottomLine'#0#0#8'TToolB' - +'ar'#7'ToolBar'#4'Left'#2#0#6'Height'#2'!'#3'Top'#2#0#5'Width'#3#167#3#12'Bu' - +'ttonHeight'#2' '#11'ButtonWidth'#2'$'#5'Color'#7#9'clBtnFace'#11'EdgeBorder' - +'s'#11#0#6'Images'#7#16'ImageListActions'#11'ParentColor'#8#8'TabOrder'#2#0#0 - +#11'TToolButton'#9'ToolClose'#4'Left'#2'm'#4'Hint'#6#5'Close'#3'Top'#2#0#7'C' - +'aption'#6#6'&Close'#10'ImageIndex'#2#3#7'OnClick'#7#16'FileCloseExecute'#14 - +'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#8'ToolSave'#4'Left'#2'I' - +#4'Hint'#6#4'Save'#3'Top'#2#0#7'Caption'#6#5'&Save'#10'ImageIndex'#2#2#7'OnC' - ,'lick'#7#15'FileSaveExecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TTool' - +'Button'#8'ToolOpen'#4'Left'#2'%'#4'Hint'#6#4'Open'#3'Top'#2#0#7'Caption'#6#8 - +'&Open...'#10'ImageIndex'#2#1#7'OnClick'#7#15'FileOpenExecute'#14'ParentShow' - +'Hint'#8#8'ShowHint'#9#0#0#11'TToolButton'#7'ToolNew'#4'Left'#2#1#4'Hint'#6#3 - +'New'#3'Top'#2#0#7'Caption'#6#7'&New...'#10'ImageIndex'#2#0#7'OnClick'#7#14 - +'FileNewExecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11'T' - +'oolButton6'#4'Left'#3#145#0#3'Top'#2#0#5'Width'#2#8#7'Caption'#6#11'ToolBut' - +'ton6'#5'Style'#7#12'tbsSeparator'#0#0#11'TToolButton'#7'ToolCut'#4'Left'#3 - +#233#0#4'Hint'#6#3'Cut'#3'Top'#2#0#7'Caption'#6#4'Cu&t'#7'Enabled'#8#10'Imag' - +'eIndex'#2#6#7'OnClick'#7#14'EditCutExecute'#14'ParentShowHint'#8#8'ShowHint' - +#9#0#0#11'TToolButton'#11'ToolButton8'#4'Left'#3#13#1#4'Hint'#6#4'Copy'#3'To' - +'p'#2#0#7'Caption'#6#5'&Copy'#7'Enabled'#8#10'ImageIndex'#2#7#7'OnClick'#7#15 - +'EditCopyExecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11 - +'ToolButton9'#4'Left'#3'1'#1#4'Hint'#6#5'Paste'#3'Top'#2#0#7'Caption'#6#6'&P' - +'aste'#7'Enabled'#8#10'ImageIndex'#2#8#7'OnClick'#7#16'EditPasteExecute'#14 - +'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#12'ToolButton10'#4'Left' - +#3'y'#1#3'Top'#2#0#5'Width'#2#8#7'Caption'#6#12'ToolButton10'#5'Style'#7#12 - +'tbsSeparator'#0#0#11'TToolButton'#12'ToolButton11'#4'Left'#3'U'#1#4'Hint'#6 - +#6'Delete'#3'Top'#2#0#7'Caption'#6#7'&Delete'#7'Enabled'#8#10'ImageIndex'#2#9 - +#7'OnClick'#7#17'EditDeleteExecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11 - +'TToolButton'#8'ToolUndo'#4'Left'#3#153#0#4'Hint'#6#4'Undo'#3'Top'#2#0#7'Cap' - +'tion'#6#5'&Undo'#7'Enabled'#8#10'ImageIndex'#2#4#14'ParentShowHint'#8#8'Sho' - +'wHint'#9#0#0#11'TToolButton'#11'ToolButton2'#4'Left'#3#225#0#3'Top'#2#0#5'W' - +'idth'#2#8#7'Caption'#6#11'ToolButton2'#5'Style'#7#12'tbsSeparator'#0#0#11'T' - +'ToolButton'#8'ToolRedo'#4'Left'#3#189#0#4'Hint'#6#4'Redo'#3'Top'#2#0#7'Capt' - +'ion'#6#5'&Redo'#7'Enabled'#8#10'ImageIndex'#2#5#14'ParentShowHint'#8#8'Show' - +'Hint'#9#0#0#6'TPanel'#9'PanelZoom'#4'Left'#3#165#1#6'Height'#2' '#3'Top'#2#0 - +#5'Width'#2'M'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2' '#11'ClientWid' - +'th'#2'M'#8'TabOrder'#2#0#0#9'TComboBox'#12'ComboBoxZoom'#4'Left'#2#0#6'Heig' - +'ht'#2#27#3'Top'#2#2#5'Width'#2'L'#7'Anchors'#11#6'akLeft'#0#10'ItemHeight'#2 - +#19#9'ItemIndex'#2#2#13'Items.Strings'#1#6#4'25 %'#6#4'50 %'#6#5'100 %'#6#5 - +'200 %'#6#5'400 %'#6#5'800 %'#6#6'1000 %'#0#8'OnChange'#7#18'ComboBoxZoomCha' - +'nge'#13'OnEditingDone'#7#23'ComboBoxZoomEditingDone'#14'ParentShowHint'#8#8 - +'TabOrder'#2#0#4'Text'#6#5'100 %'#0#0#0#11'TToolButton'#9'ZoomInBtn'#4'Left' - +#3#242#1#3'Top'#2#0#7'Caption'#6#9'ZoomInBtn'#10'ImageIndex'#2#10#7'OnClick' - +#7#14'ZoomInBtnClick'#0#0#11'TToolButton'#10'ZoomOutBtn'#4'Left'#3#129#1#3'T' - +'op'#2#0#7'Caption'#6#10'ZoomOutBtn'#10'ImageIndex'#2#11#7'OnClick'#7#15'Zoo' - +'mOutBtnClick'#0#0#0#6'TPanel'#12'PanelOptions'#4'Left'#2#0#6'Height'#2'"'#3 - +'Top'#2'#'#5'Width'#3#167#3#5'Align'#7#5'alTop'#25'BorderSpacing.InnerBorder' - +#2#4#31'BorderSpacing.CellAlignVertical'#7#9'ccaCenter'#10'BevelOuter'#7#6'b' - +'vNone'#12'ClientHeight'#2'"'#11'ClientWidth'#3#167#3#8'TabOrder'#2#1#0#6'TL' - +'abel'#16'LabelFillOutline'#4'Left'#2'g'#6'Height'#2'"'#3'Top'#2#0#5'Width'#2 - +'H'#5'Align'#7#6'alLeft'#7'Caption'#6#14'Fill, Outline:'#21'Constraints.MinH' - +'eight'#2' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#10'Labe' - +'lShape'#4'Left'#2#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'*'#5'Align'#7#6'al' - +'Left'#7'Caption'#6#6'Shape:'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8't' - +'lCenter'#11'ParentColor'#8#0#0#6'TLabel'#13'LabelMaskTool'#4'Left'#3#2#1#6 - +'Height'#2'"'#3'Top'#2#0#5'Width'#2'C'#5'Align'#7#6'alLeft'#7'Caption'#6#10 - +'Mask Tool:'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11'Paren' - +'tColor'#8#0#0#6'TPanel'#11'PanelColors'#4'Left'#3#211#2#6'Height'#2'"'#3'To' - +'p'#2#0#5'Width'#3#212#0#5'Align'#7#7'alRight'#8'AutoSize'#9#25'BorderSpacin' - +'g.InnerBorder'#2#4'!BorderSpacing.CellAlignHorizontal'#7#10'ccaLeftTop'#31 - +'BorderSpacing.CellAlignVertical'#7#9'ccaCenter'#10'BevelOuter'#7#6'bvNone' - +#12'ClientHeight'#2'"'#11'ClientWidth'#3#212#0#8'TabOrder'#2#0#0#6'TLabel'#12 - +'LabelOutline'#4'Left'#2#8#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'1'#5'Align'#7 - +#7'alRight'#7'Caption'#6#8'Outline:'#6'Layout'#7#8'tlCenter'#11'ParentColor' - +#8#0#0#6'TLabel'#9'LabelFill'#4'Left'#2'Y'#6'Height'#2'"'#3'Top'#2#0#5'Width' - +#2#20#5'Align'#7#7'alRight'#7'Caption'#6#5'Fill:'#6'Layout'#7#8'tlCenter'#11 - +'ParentColor'#8#0#0#6'TLabel'#10'LabelPaper'#4'Left'#3#141#0#6'Height'#2'"'#3 - +'Top'#2#0#5'Width'#2''''#5'Align'#7#7'alRight'#7'Caption'#6#6'Paper:'#6'Layo' - +'ut'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TPanel'#12'PanelOutline'#4'Left'#2 - +'?'#6'Height'#2#22#3'Top'#2#6#5'Width'#2#20#5'Align'#7#7'alRight'#20'BorderS' - +'pacing.Around'#2#6#10'BevelInner'#7#9'bvLowered'#5'Color'#7#7'clWhite'#8'Dr' - +'agMode'#7#11'dmAutomatic'#11'ParentColor'#8#8'TabOrder'#2#0#10'OnDragOver'#7 - ,#18'PanelPaperDragOver'#0#0#6'TPanel'#9'PanelFill'#4'Left'#2's'#6'Height'#2 - +#22#3'Top'#2#6#5'Width'#2#20#5'Align'#7#7'alRight'#20'BorderSpacing.Around'#2 - +#6#10'BevelInner'#7#9'bvLowered'#5'Color'#7#7'clWhite'#8'DragMode'#7#11'dmAu' - +'tomatic'#11'ParentColor'#8#8'TabOrder'#2#1#10'OnDragOver'#7#18'PanelPaperDr' - +'agOver'#0#0#6'TPanel'#10'PanelPaper'#4'Left'#3#186#0#6'Height'#2#22#3'Top'#2 - +#6#5'Width'#2#20#5'Align'#7#7'alRight'#20'BorderSpacing.Around'#2#6#10'Bevel' - +'Inner'#7#9'bvLowered'#5'Color'#7#7'clWhite'#8'DragMode'#7#11'dmAutomatic'#11 - +'ParentColor'#8#8'TabOrder'#2#2#10'OnDblClick'#7#18'PanelPaperDblClick'#10'O' - +'nDragOver'#7#18'PanelPaperDragOver'#0#0#0#6'TPanel'#16'PanelFillOutline'#4 - +'Left'#3#175#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'S'#5'Align'#7#6'alLeft' - +#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'"'#11'ClientWidth'#2'S'#8'Tab' - +'Order'#2#1#0#12'TSpeedButton'#15'ToolFillOutline'#4'Left'#2#4#6'Height'#2#24 - +#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11#6'akLeft'#0#4'Down'#9#10'Glyph.Data' - +#10#234#4#0#0#230#4#0#0'BM'#230#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#20#0#0#0#20#0 - +#0#0#1#0#24#0#0#0#0#0#176#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +'ntShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#9'To' + +'olBrush'#4'Left'#2#0#3'Top'#3#146#1#7'Caption'#6#9'ToolBrush'#10'ImageIndex' + +#2#5#7'OnClick'#7#14'ToolBrushClick'#0#0#0#0#10'TStatusBar'#9'StatusBar'#4'L' + +'eft'#2#0#6'Height'#2#22#3'Top'#3'}'#2#5'Width'#3#167#3#6'Panels'#14#1#5'Wid' + +'th'#3#250#0#0#1#9'Alignment'#7#8'taCenter'#5'Width'#2'P'#0#1#9'Alignment'#7 + +#8'taCenter'#5'Width'#2'P'#0#1#5'Width'#2'P'#0#1#5'Width'#2'P'#0#1#5'Width'#2 + +'2'#0#0#11'SimplePanel'#8#0#0#6'TPanel'#12'PanelPallete'#4'Left'#3'\'#3#6'He' + +'ight'#3#20#2#3'Top'#2'i'#5'Width'#2'K'#5'Align'#7#7'alRight'#8'AutoSize'#9 + +#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#20#2#11'ClientWidth'#2'K'#8'T' + +'abOrder'#2#1#0#13'TColorPalette'#7'Palette'#4'Left'#2#0#6'Height'#3#20#2#3 + +'Top'#2#0#5'Width'#2'K'#5'Align'#7#8'alClient'#11'ButtonWidth'#2#12#12'Butto' + +'nHeight'#2#12#8'DragMode'#7#11'dmAutomatic'#16'OnColorMouseMove'#7#21'Palet' + +'teColorMouseMove'#11'OnColorPick'#7#16'PaletteColorPick'#0#0#0#6'TPanel'#12 + +'PanelToolBar'#4'Left'#2#0#6'Height'#2'i'#3'Top'#2#0#5'Width'#3#167#3#5'Alig' + +'n'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'i'#11'ClientWid' + +'th'#3#167#3#8'TabOrder'#2#2#0#6'TBevel'#6'Bevel1'#4'Left'#2#0#6'Height'#2#2 + +#3'Top'#2'E'#5'Width'#3#167#3#5'Align'#7#5'alTop'#5'Shape'#7#12'bsBottomLine' + +#0#0#6'TBevel'#6'Bevel2'#4'Left'#2#0#6'Height'#2#2#3'Top'#2'!'#5'Width'#3#167 + +#3#5'Align'#7#5'alTop'#5'Shape'#7#12'bsBottomLine'#0#0#8'TToolBar'#7'ToolBar' + +#4'Left'#2#0#6'Height'#2'!'#3'Top'#2#0#5'Width'#3#167#3#12'ButtonHeight'#2' ' + +#11'ButtonWidth'#2'$'#5'Color'#7#9'clBtnFace'#11'EdgeBorders'#11#0#6'Images' + +#7#16'ImageListActions'#11'ParentColor'#8#8'TabOrder'#2#0#0#11'TToolButton'#9 + +'ToolClose'#4'Left'#2'm'#4'Hint'#6#5'Close'#3'Top'#2#0#7'Caption'#6#6'&Close' + +#10'ImageIndex'#2#3#7'OnClick'#7#16'FileCloseExecute'#14'ParentShowHint'#8#8 + ,'ShowHint'#9#0#0#11'TToolButton'#8'ToolSave'#4'Left'#2'I'#4'Hint'#6#4'Save'#3 + +'Top'#2#0#7'Caption'#6#5'&Save'#10'ImageIndex'#2#2#7'OnClick'#7#15'FileSaveE' + +'xecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#8'ToolOpen'#4 + +'Left'#2'%'#4'Hint'#6#4'Open'#3'Top'#2#0#7'Caption'#6#8'&Open...'#10'ImageIn' + +'dex'#2#1#7'OnClick'#7#15'FileOpenExecute'#14'ParentShowHint'#8#8'ShowHint'#9 + +#0#0#11'TToolButton'#7'ToolNew'#4'Left'#2#1#4'Hint'#6#3'New'#3'Top'#2#0#7'Ca' + +'ption'#6#7'&New...'#10'ImageIndex'#2#0#7'OnClick'#7#14'FileNewExecute'#14'P' + +'arentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11'ToolButton6'#4'Left'#3 + +#145#0#3'Top'#2#0#5'Width'#2#8#7'Caption'#6#11'ToolButton6'#5'Style'#7#12'tb' + +'sSeparator'#0#0#11'TToolButton'#7'ToolCut'#4'Left'#3#233#0#4'Hint'#6#3'Cut' + +#3'Top'#2#0#7'Caption'#6#4'Cu&t'#7'Enabled'#8#10'ImageIndex'#2#6#7'OnClick'#7 + +#14'EditCutExecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11 + +'ToolButton8'#4'Left'#3#13#1#4'Hint'#6#4'Copy'#3'Top'#2#0#7'Caption'#6#5'&Co' + +'py'#7'Enabled'#8#10'ImageIndex'#2#7#7'OnClick'#7#15'EditCopyExecute'#14'Par' + +'entShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11'ToolButton9'#4'Left'#3 + +'1'#1#4'Hint'#6#5'Paste'#3'Top'#2#0#7'Caption'#6#6'&Paste'#7'Enabled'#8#10'I' + +'mageIndex'#2#8#7'OnClick'#7#16'EditPasteExecute'#14'ParentShowHint'#8#8'Sho' + +'wHint'#9#0#0#11'TToolButton'#12'ToolButton10'#4'Left'#3'y'#1#3'Top'#2#0#5'W' + +'idth'#2#8#7'Caption'#6#12'ToolButton10'#5'Style'#7#12'tbsSeparator'#0#0#11 + +'TToolButton'#12'ToolButton11'#4'Left'#3'U'#1#4'Hint'#6#6'Delete'#3'Top'#2#0 + +#7'Caption'#6#7'&Delete'#7'Enabled'#8#10'ImageIndex'#2#9#7'OnClick'#7#17'Edi' + +'tDeleteExecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#8'To' + +'olUndo'#4'Left'#3#153#0#4'Hint'#6#4'Undo'#3'Top'#2#0#7'Caption'#6#5'&Undo'#7 + +'Enabled'#8#10'ImageIndex'#2#4#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TTo' + +'olButton'#11'ToolButton2'#4'Left'#3#225#0#3'Top'#2#0#5'Width'#2#8#7'Caption' + +#6#11'ToolButton2'#5'Style'#7#12'tbsSeparator'#0#0#11'TToolButton'#8'ToolRed' + +'o'#4'Left'#3#189#0#4'Hint'#6#4'Redo'#3'Top'#2#0#7'Caption'#6#5'&Redo'#7'Ena' + +'bled'#8#10'ImageIndex'#2#5#14'ParentShowHint'#8#8'ShowHint'#9#0#0#6'TPanel' + +#9'PanelZoom'#4'Left'#3#165#1#6'Height'#2' '#3'Top'#2#0#5'Width'#2'M'#10'Bev' + +'elOuter'#7#6'bvNone'#12'ClientHeight'#2' '#11'ClientWidth'#2'M'#8'TabOrder' + +#2#0#0#9'TComboBox'#12'ComboBoxZoom'#4'Left'#2#0#6'Height'#2#27#3'Top'#2#2#5 + +'Width'#2'L'#7'Anchors'#11#6'akLeft'#0#10'ItemHeight'#2#19#9'ItemIndex'#2#2 + +#13'Items.Strings'#1#6#4'25 %'#6#4'50 %'#6#5'100 %'#6#5'200 %'#6#5'400 %'#6#5 + +'800 %'#6#6'1000 %'#0#8'OnChange'#7#18'ComboBoxZoomChange'#13'OnEditingDone' + +#7#23'ComboBoxZoomEditingDone'#14'ParentShowHint'#8#8'TabOrder'#2#0#4'Text'#6 + +#5'100 %'#0#0#0#11'TToolButton'#9'ZoomInBtn'#4'Left'#3#242#1#3'Top'#2#0#7'Ca' + +'ption'#6#9'ZoomInBtn'#10'ImageIndex'#2#10#7'OnClick'#7#14'ZoomInBtnClick'#0 + +#0#11'TToolButton'#10'ZoomOutBtn'#4'Left'#3#129#1#3'Top'#2#0#7'Caption'#6#10 + +'ZoomOutBtn'#10'ImageIndex'#2#11#7'OnClick'#7#15'ZoomOutBtnClick'#0#0#0#6'TP' + +'anel'#12'PanelOptions'#4'Left'#2#0#6'Height'#2'"'#3'Top'#2'#'#5'Width'#3#167 + +#3#5'Align'#7#5'alTop'#25'BorderSpacing.InnerBorder'#2#4#31'BorderSpacing.Ce' + +'llAlignVertical'#7#9'ccaCenter'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight' + +#2'"'#11'ClientWidth'#3#167#3#8'TabOrder'#2#1#0#6'TLabel'#16'LabelFillOutlin' + +'e'#4'Left'#2'g'#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'H'#5'Align'#7#6'alLeft' + +#7'Caption'#6#14'Fill, Outline:'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8 + +'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#10'LabelShape'#4'Left'#2#0#6'Heig' + +'ht'#2'"'#3'Top'#2#0#5'Width'#2'*'#5'Align'#7#6'alLeft'#7'Caption'#6#6'Shape' + +':'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8 + +#0#0#6'TLabel'#13'LabelMaskTool'#4'Left'#3#2#1#6'Height'#2'"'#3'Top'#2#0#5'W' + +'idth'#2'C'#5'Align'#7#6'alLeft'#7'Caption'#6#10'Mask Tool:'#21'Constraints.' + +'MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TPanel'#11 + +'PanelColors'#4'Left'#3#211#2#6'Height'#2'"'#3'Top'#2#0#5'Width'#3#212#0#5'A' + +'lign'#7#7'alRight'#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4'!BorderS' + +'pacing.CellAlignHorizontal'#7#10'ccaLeftTop'#31'BorderSpacing.CellAlignVert' + +'ical'#7#9'ccaCenter'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'"'#11'Cl' + +'ientWidth'#3#212#0#8'TabOrder'#2#0#0#6'TLabel'#12'LabelOutline'#4'Left'#2#8 + +#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'1'#5'Align'#7#7'alRight'#7'Caption'#6#8 + +'Outline:'#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#9'LabelFi' + +'ll'#4'Left'#2'Y'#6'Height'#2'"'#3'Top'#2#0#5'Width'#2#20#5'Align'#7#7'alRig' + +'ht'#7'Caption'#6#5'Fill:'#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'T' + +'Label'#10'LabelPaper'#4'Left'#3#141#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#2 + +''''#5'Align'#7#7'alRight'#7'Caption'#6#6'Paper:'#6'Layout'#7#8'tlCenter'#11 + +'ParentColor'#8#0#0#6'TPanel'#12'PanelOutline'#4'Left'#2'?'#6'Height'#2#22#3 + +'Top'#2#6#5'Width'#2#20#5'Align'#7#7'alRight'#20'BorderSpacing.Around'#2#6#10 + ,'BevelInner'#7#9'bvLowered'#5'Color'#7#7'clWhite'#8'DragMode'#7#11'dmAutomat' + +'ic'#11'ParentColor'#8#8'TabOrder'#2#0#10'OnDragOver'#7#18'PanelPaperDragOve' + +'r'#0#0#6'TPanel'#9'PanelFill'#4'Left'#2's'#6'Height'#2#22#3'Top'#2#6#5'Widt' + +'h'#2#20#5'Align'#7#7'alRight'#20'BorderSpacing.Around'#2#6#10'BevelInner'#7 + +#9'bvLowered'#5'Color'#7#7'clWhite'#8'DragMode'#7#11'dmAutomatic'#11'ParentC' + +'olor'#8#8'TabOrder'#2#1#10'OnDragOver'#7#18'PanelPaperDragOver'#0#0#6'TPane' + +'l'#10'PanelPaper'#4'Left'#3#186#0#6'Height'#2#22#3'Top'#2#6#5'Width'#2#20#5 + +'Align'#7#7'alRight'#20'BorderSpacing.Around'#2#6#10'BevelInner'#7#9'bvLower' + +'ed'#5'Color'#7#7'clWhite'#8'DragMode'#7#11'dmAutomatic'#11'ParentColor'#8#8 + +'TabOrder'#2#2#10'OnDblClick'#7#18'PanelPaperDblClick'#10'OnDragOver'#7#18'P' + +'anelPaperDragOver'#0#0#0#6'TPanel'#16'PanelFillOutline'#4'Left'#3#175#0#6'H' + +'eight'#2'"'#3'Top'#2#0#5'Width'#2'S'#5'Align'#7#6'alLeft'#10'BevelOuter'#7#6 + +'bvNone'#12'ClientHeight'#2'"'#11'ClientWidth'#2'S'#8'TabOrder'#2#1#0#12'TSp' + +'eedButton'#15'ToolFillOutline'#4'Left'#2#4#6'Height'#2#24#3'Top'#2#5#5'Widt' + +'h'#2#25#7'Anchors'#11#6'akLeft'#0#4'Down'#9#10'Glyph.Data'#10#234#4#0#0#230 + +#4#0#0'BM'#230#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#20#0#0#0#20#0#0#0#1#0#24#0#0#0 + +#0#0#176#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0 +#0#0#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0 @@ -177,39 +193,32 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#0#0 - +#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0 - +#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + ,#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#10'GroupIndex'#2#1#9'NumGly' - +'phs'#2#0#7'OnClick'#7#20'ToolFillOutlineClick'#0#0#12'TSpeedButton'#11'Tool' - +'Outline'#4'Left'#2#29#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11 - +#6'akLeft'#0#10'Glyph.Data'#10'z'#6#0#0'v'#6#0#0'BMv'#6#0#0#0#0#0#0'6'#0#0#0 - +'('#0#0#0#20#0#0#0#20#0#0#0#1#0' '#0#0#0#0#0'@'#6#0#0'd'#0#0#0'd'#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#10'GroupIndex'#2#1#9'NumGlyphs'#2#0#7'OnCli' + +'ck'#7#20'ToolFillOutlineClick'#0#0#12'TSpeedButton'#11'ToolOutline'#4'Left' + +#2#29#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11#6'akLeft'#0#10'G' + +'lyph.Data'#10'z'#6#0#0'v'#6#0#0'BMv'#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#20#0#0 + +#0#20#0#0#0#1#0' '#0#0#0#0#0'@'#6#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 - +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0 - +#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255 @@ -248,19 +257,12 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0 +#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0 - +#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 @@ -319,9 +321,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#255#255#255#255#255#255#255#255#255#255#255#255#128#128 + ,#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - ,#128#128#128#128#128#128#128#128#255#255#255#255#255#255#255#255#255#255#255 + +#128#128#128#128#128#128#128#128#255#255#255#255#255#255#255#255#255#255#255 +#255#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#255#255#255#255#255#255#255#255 @@ -383,9 +385,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128 ,#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 @@ -447,9 +449,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +'}'#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127 +#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255 +#127#127#127#255#127#127#127#255#127#127#127#255'}}}'#255'+++'#255#1#1#1#255 - +#132#132#132#0#216#216#216#0#25#25#25#255#3#3#3#255'[[['#255#127#127#127#255 + ,#132#132#132#0#216#216#216#0#25#25#25#255#3#3#3#255'[[['#255#127#127#127#255 +#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127 - ,#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127 + +#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127 +#127#255#127#127#127#255'[[['#255#3#3#3#255#25#25#25#255#216#216#216#0#255 +#255#255#0#133#133#133#0#1#1#1#255#9#9#9#255'hhh'#255#127#127#127#255#127#127 +#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127 @@ -511,9 +513,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0 +#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - +#128#128#128#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128 + ,#128#128#128#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 - ,#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 @@ -575,9 +577,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#127#127#127#255#127#127#127#255#127#127#127#255'jjj'#255#0#0#0#255'(((' +#255'CCC'#255#0#0#0#255'WWW'#255#127#127#127#255#127#127#127#255#127#127#127 +#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127 - +#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127 + ,#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127 +#127#127#255#127#127#127#255'WWW'#255#0#0#0#255'CCC'#255#132#132#132#0#1#1#1 - ,#255'+++'#255'}}}'#255#127#127#127#255#127#127#127#255#127#127#127#255#127 + +#255'+++'#255'}}}'#255#127#127#127#255#127#127#127#255#127#127#127#255#127 +#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255 +#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255'}}}'#255'++' +'+'#255#1#1#1#255#132#132#132#0#216#216#216#0#25#25#25#255#3#3#3#255'[[['#255 @@ -639,9 +641,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#166#166#166#255'zzz'#255'rrr'#255#186#186#186#255#185#185#185#255'888' +#241#10#10#10#151#4#2#2'NIFF'#242#135#135#135#255'{{{'#255#136#136#136#255 +#130#130#130#255#135#135#135#255'ccc'#255':::'#255'QQQ'#255#201#201#201#255 - +#177#177#177#255#173#173#173#255#169#169#169#255#171#171#171#255'rrr'#255#180 + ,#177#177#177#255#173#173#173#255#169#169#169#255#171#171#171#255'rrr'#255#180 +#180#180#255#173#173#173#255#176#176#176#255#9#9#9#231#0#0#0#3#16#14#14#224 - ,#196#197#197#255#171#171#171#255#130#130#130#255#135#135#135#255#140#140#140 + +#196#197#197#255#171#171#171#255#130#130#130#255#135#135#135#255#140#140#140 +#255'eee'#255'888'#255#129#129#129#255#202#202#202#255#178#178#178#255#173 +#173#173#255#169#169#169#255#170#170#170#255'uuu'#255#178#178#178#255#174#174 +#174#255'ZZZ'#251#10#10#10#139#255#255#255#0#16#10#10#149#174#174#174#255#234 @@ -703,9 +705,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +'TabOrder'#2#1#0#5'TEdit'#11'EditDensity'#4'Left'#2#3#6'Height'#2#27#3'Top'#2 +#3#5'Width'#2'*'#7'Anchors'#11#6'akLeft'#0#8'OnChange'#7#17'EditDensityChang' +'e'#8'TabOrder'#2#0#4'Text'#6#3'100'#0#0#7'TUpDown'#13'UpDownDensity'#4'Left' - +#2'-'#6'Height'#2#27#3'Top'#2#3#5'Width'#2#17#9'Associate'#7#11'EditDensity' + ,#2'-'#6'Height'#2#27#3'Top'#2#3#5'Width'#2#17#9'Associate'#7#11'EditDensity' +#3'Min'#2#0#8'Position'#2'd'#8'TabOrder'#2#1#9'Thousands'#8#4'Wrap'#8#0#0#0#6 - ,'TPanel'#14'PanelRoundness'#4'Left'#3#166#0#6'Height'#2'"'#3'Top'#2#0#5'Widt' + +'TPanel'#14'PanelRoundness'#4'Left'#3#166#0#6'Height'#2'"'#3'Top'#2#0#5'Widt' +'h'#2'D'#5'Align'#7#6'alLeft'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2 +'"'#11'ClientWidth'#2'D'#8'TabOrder'#2#2#0#5'TEdit'#13'EditRoundness'#4'Left' +#2#4#6'Height'#2#27#3'Top'#2#3#5'Width'#2'*'#7'Anchors'#11#6'akLeft'#0#8'OnC' @@ -726,14 +728,14 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#15'PanelTolerance1'#4'Left'#3#31#2#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'D'#5 +'Align'#7#6'alLeft'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'"'#11'Clie' +'ntWidth'#2'D'#8'TabOrder'#2#4#0#9'TSpinEdit'#13'spinFillAlpha'#4'Left'#2#10 - +#6'Height'#2#27#3'Top'#2#5#5'Width'#2'3'#8'OnChange'#7#19'spinFillAlphaChang' + +#6'Height'#2#27#3'Top'#2#3#5'Width'#2'5'#8'OnChange'#7#19'spinFillAlphaChang' +'e'#8'TabOrder'#2#0#5'Value'#2'd'#0#0#0#6'TLabel'#15'LabelTolerance2'#4'Left' +#3'c'#2#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'#'#5'Align'#7#6'alLeft'#7'Capti' +'on'#6#5'Fuzzy'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11'Pa' +'rentColor'#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'TabOrder'#2#5#0#9'TCheckBox'#10 - +'checkFuzzy'#4'Left'#2#4#6'Height'#2#19#3'Top'#2#9#5'Width'#2#20#8'OnChange' + +'checkFuzzy'#4'Left'#2#4#6'Height'#2#23#3'Top'#2#9#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'Width'#3'4'#3#5'Align'#7#8'alCl' +'ient'#10'BevelOuter'#7#9'bvLowered'#8'TabOrder'#2#3#0#0#9'TMainMenu'#8'Main' @@ -767,9 +769,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#26#17#17#17#244#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#241#255#8#8#8#248#0#0#0#15 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#26#16#16#16 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#26#16#16#16 +#245#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 - ,#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#245#255#11#11#11#248#0#0#0#18#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#25#15#15#15#245#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 @@ -831,9 +833,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#2#1#254#3#2#2#254#3#2#2#254#3#2#2#254#3#2#1#254#3#2#1#254#3#2#2#254#4#3#2 +#253#2#2#1#254#1#1#1#254#2#2#1#253#11#9#6#245#22#17#13#231#18#14#10#194#0#0#0 +#27#255#255#255#0#255#255#255#0#14#10#8#207#149'c<'#255#227#150'^'#255#231 - +#152'_'#255#231#151'_'#255#229#152'^'#255#229#150'\'#255#229#148'['#255#228 + ,#152'_'#255#231#151'_'#255#229#152'^'#255#229#150'\'#255#229#148'['#255#228 +#147'Z'#255#227#147'X'#255#224#143'T'#255#220#138'N'#255#211#132'H'#255#201 - ,'|@'#255#187'p7'#255#161'[%'#255'I('#12#255#8#4#0#177#255#255#255#0#255#255 + +'|@'#255#187'p7'#255#161'[%'#255'I('#12#255#8#4#0#177#255#255#255#0#255#255 +#255#0#5#4#3#249#213#144'Z'#255#227#153'a'#255#227#153'`'#255#225#151'^'#255 +#223#148'['#255#220#145'W'#255#217#141'R'#255#214#137'L'#255#210#132'G'#255 +#206#127'@'#255#201'z:'#255#197'u3'#255#192'o,'#255#188'i%'#255#183'd'#30#255 @@ -895,9 +897,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#0#4'Hint'#6#4'Open'#10'ImageIndex'#2#1#8'ShortCut'#3'O@'#7'OnClick'#7#15 +'FileOpenExecute'#0#0#9'TMenuItem'#12'MenuItemSave'#7'Caption'#6#5'&Save'#11 +'Bitmap.Data'#10'z'#6#0#0'v'#6#0#0'BMv'#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#20#0 - +#0#0#20#0#0#0#1#0' '#0#0#0#0#0'@'#6#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#7#0 + ,#0#0#20#0#0#0#1#0' '#0#0#0#0#0'@'#6#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#7#0 +#0#159#10#0#0#211#10#0#0#211#10#0#0#212#10#0#0#213#9#0#0#215#9#0#0#216#9#0#0 - ,#217#9#0#0#218#9#0#0#219#8#0#0#220#8#0#0#222#8#0#0#222#8#0#0#223#8#0#0#224#7 + +#217#9#0#0#218#9#0#0#219#8#0#0#220#8#0#0#222#8#0#0#222#8#0#0#223#8#0#0#224#7 +#0#0#225#7#0#0#226#7#0#0#227#7#0#0#229#4#0#0#147#9#0#0#217'T'#0#0#255#171'vv' +#255#221#200#200#255#221#200#200#255#221#200#200#255#222#200#200#255#222#200 +#200#255#222#200#200#255#222#200#200#255#222#200#200#255#222#200#200#255#222 @@ -959,9 +961,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +'{'#0#0#255'{'#0#0#255'o'#5#5#255#187#187#184#255#204#204#202#255#174#174#171 +#255#166#166#163#255#166#166#163#255#166#166#163#255#129'UT'#255'{'#0#0#255 +'{'#0#0#255#141#131#129#255#138'vs'#255'{'#0#0#255'{'#0#0#255'I'#0#0#254#8#0 - +#0#193#7#0#0#229'W'#0#0#255'c'#0#0#255'c'#0#0#255'['#4#4#255#181#181#178#255 + ,#0#193#7#0#0#229'W'#0#0#255'c'#0#0#255'c'#0#0#255'['#4#4#255#181#181#178#255 +#204#204#202#255#202#202#201#255#193#193#191#255#185#185#183#255#177#177#175 - ,#255#153#141#139#255#135'lj'#255#135'lj'#255#157#154#152#255#133'vs'#255'c'#0 + +#255#153#141#139#255#135'lj'#255#135'lj'#255#157#154#152#255#133'vs'#255'c'#0 +#0#255'I'#0#0#253#6#0#0#232#0#0#0'"'#6#0#0#177#9#0#0#217#9#0#0#217#9#0#0#217 +#9#0#0#218',''&'#230',&&'#230',&&'#230',&%'#230'+&%'#230'+%$'#230'+%$'#230'*' +'$#'#230')##'#229')#"'#229'"'#28#27#228#9#0#0#217#8#0#0#202#0#0#0#29#255#255 @@ -1023,9 +1025,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#0#0#0#0#13#3#4#13#220'!"*'#249'vvv'#255'jjj'#255'EEK'#255#1#2#6#248 +#0#0#0'*'#255#255#255#0#255#255#255#0#255#255#255#0#0#0#5'B'#0#1#3#251'&''/' +#254#19#19#28#247#2#2#10#225#0#0#0#16#255#255#255#0#255#255#255#0#255#255#255 - +#0#255#255#255#0#0#0#0#14#3#4#12#217#20#21#30#250'%&/'#252#2#2#6#246#0#0#0'0' + ,#0#255#255#255#0#0#0#0#14#3#4#12#217#20#21#30#250'%&/'#252#2#2#6#246#0#0#0'0' +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0 - ,#29#1#3#16#171#4#5#14'x'#0#0#0#5#255#255#255#0#255#255#255#0#255#255#255#0 + +#29#1#3#16#171#4#5#14'x'#0#0#0#5#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#5#0#2#15#141#2#4#19#157#0#0 +#0'+'#255#255#255#0#255#255#255#0#255#255#255#0#4'Hint'#6#5'Close'#10'ImageI' +'ndex'#2#3#8'ShortCut'#3's@'#7'OnClick'#7#16'FileCloseExecute'#0#0#9'TMenuIt' @@ -1087,9 +1089,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#143#209#134#255#142#208#133#255':@9'#244'696'#167'8<7'#163'7<7'#166'464'#139 +'333q333L333'#17#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'333-685'#240'i'#150'c' - +#253#135#205'}'#255'9?8'#243'333 '#255#255#255#0#255#255#255#0#255#255#255#0 + ,#253#135#205'}'#255'9?8'#243'333 '#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0'333-585'#240'd'#147']'#253'8?8'#243'333 '#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 @@ -1151,9 +1153,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255't'#198'j'#255'o'#196'd'#255'j'#193'_'#255'e'#191'Y'#255'`'#189'T'#255'[' +#187'N'#255'U'#185'H'#255'>b9'#252'483'#174#255#255#255#0#255#255#255#0#255 +#255#255#0'333'#14'685'#139'7<7'#224'585'#248'FXC'#240'QrM'#248'X'#129'R'#255 - +'['#140'T'#255'W'#138'Q'#255'T'#133'M'#255'Z'#157'Q'#255'b'#190'V'#255']'#188 + ,'['#140'T'#255'W'#138'Q'#255'T'#133'M'#255'Z'#157'Q'#255'b'#190'V'#255']'#188 +'Q'#255'X'#186'K'#255'F'#132'>'#253'473'#238'333('#255#255#255#0#255#255#255 - ,#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'333'#18'333N333q4' + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'333'#18'333N333q4' +'64'#140'6<6'#167'6<5'#163'584'#170'8B7'#242'^'#188'R'#255'Y'#186'M'#255'G' +#132'?'#253'473'#238'333('#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 @@ -1215,9 +1217,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 - +#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + ,#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255 +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 @@ -1279,9 +1281,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#0#0#0#255#255#255#255#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#21#21#21#255#255#255#255#255#0#0#0#255#0#0#0#255#0#0#0 + ,#255#0#255#255#255#0#21#21#21#255#255#255#255#255#0#0#0#255#0#0#0#255#0#0#0 +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 - ,#255#255#255#255#0#0#0#255#255#255#255#255#0#0#0#255#255#255#255#0#255#255 + +#255#255#255#255#0#0#0#255#255#255#255#255#0#0#0#255#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#21#21#21#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 @@ -1343,9 +1345,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +' !'#255#128#128#128#255#0#0#0#255#255#255#255#0#0#0#0#255#128#128#128#255#0 +#0#0#255#128#128#128#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#0#0#0#255'(()'#255#0#0#0#255#128#128#128#255#0#0#0#255#255#255#255 + ,#255#255#0#0#0#0#255'(()'#255#0#0#0#255#128#128#128#255#0#0#0#255#255#255#255 +#0#0#0#0#255#128#128#128#255#0#0#0#255#128#128#128#255#0#0#0#255#255#255#255 - ,#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#128#128#128#255#0#0#0#255 +#128#128#128#255#0#0#0#255#255#255#255#0#0#0#0#255#128#128#128#255#0#0#0#255 +#128#128#128#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255 @@ -1407,9 +1409,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#1#9#249#0#0#6':'#1#3#23#194#17#18'X'#254'**'#216#255'**'#216#255'**'#216#255 +',,'#216#255'//'#217#255'--'#209#255#13#14'D'#251#1#1#12#232#1#2#14#234#13#14 +'D'#251',,'#200#255'//'#217#255'--'#216#255'**'#216#255'**'#216#255'**'#216 - +#255#20#21'h'#252#1#3#26#172#0#2#20#156#8#9','#251'=='#215#255',,'#216#255'/' + ,#255#20#21'h'#252#1#3#26#172#0#2#20#156#8#9','#251'=='#215#255',,'#216#255'/' +'/'#217#255'33'#218#255'66'#219#255'88'#219#255'66'#214#255#19#20'S'#250#25 - ,#25'i'#251'55'#204#255'88'#220#255'66'#219#255'44'#218#255'11'#218#255'--' + +#25'i'#251'55'#204#255'88'#220#255'66'#219#255'44'#218#255'11'#218#255'--' +#217#255'55'#215#255#11#12'6'#249#0#1#16#141#0#0#0#8#1#2#17#218#15#16'A'#250 +'II'#218#255'66'#219#255'99'#220#255'=='#221#255'??'#221#255'AA'#222#255'AA' +#221#255'AA'#221#255'AA'#222#255'@@'#222#255'>>'#221#255';;'#220#255'77'#219 @@ -1471,9 +1473,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +'ise'#7'OnClick'#7#15'Rotate90Execute'#0#0#9'TMenuItem'#11'MenuItem180'#7'Ca' +'ption'#6#12'180Clockwise'#7'OnClick'#7#16'Rotate180Execute'#0#0#9'TMenuItem' +#11'MenuItem270'#7'Caption'#6#12'270Clockwise'#7'OnClick'#7#16'Rotate270Exec' - +'ute'#0#0#9'TMenuItem'#14'MenuItemCustom'#7'Caption'#6#9'Custom...'#7'Enable' + ,'ute'#0#0#9'TMenuItem'#14'MenuItemCustom'#7'Caption'#6#9'Custom...'#7'Enable' +'d'#8#0#0#0#9'TMenuItem'#9'MenuItem4'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#14 - ,'MenuItemColors'#7'Caption'#6#6'Colors'#0#9'TMenuItem'#14'MenuItemInvert'#7 + +'MenuItemColors'#7'Caption'#6#6'Colors'#0#9'TMenuItem'#14'MenuItemInvert'#7 +'Caption'#6#6'Invert'#7'OnClick'#7#19'ColorsInvertExecute'#0#0#9'TMenuItem' +#17'MenuItemGrayscale'#7'Caption'#6#9'Grayscale'#7'OnClick'#7#22'ColorsGrays' +'caleExecute'#0#0#9'TMenuItem'#15'MenuItemDisable'#7'Caption'#6#7'Disable'#7 @@ -1535,9 +1537,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#128#0#0#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#128#0#0#255 +#128#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 @@ -1599,9 +1601,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 @@ -1663,9 +1665,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#0#128#0#0#255#128#0#0#255#128#0#0#255#128#0#0#255#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#128#0#0#255#128#0#0#255#128#0#0#255#128#0 +#0#255#255#255#255#0#255#255#255#0#128#0#0#255#128#0#0#255#128#0#0#255#128#0 - +#0#255#255#255#255#0#255#255#255#0#128#0#0#255#128#0#0#255#128#0#0#255#128#0 - +#0#255#255#255#255#0#255#255#255#0#128#0#0#255#128#0#0#255#128#0#0#255#128#0 ,#0#255#255#255#255#0#255#255#255#0#128#0#0#255#128#0#0#255#128#0#0#255#128#0 + +#0#255#255#255#255#0#255#255#255#0#128#0#0#255#128#0#0#255#128#0#0#255#128#0 + +#0#255#255#255#255#0#255#255#255#0#128#0#0#255#128#0#0#255#128#0#0#255#128#0 +#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 @@ -1727,9 +1729,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#0#3#3'X'#0#5#6#193#0#6#7#254#2'Oc'#255#2#157#206 - +#255#1#162#226#255#0#149#222#255#1#161#225#255#3#174#229#255#5#187#233#255#5 + ,#255#1#162#226#255#0#149#222#255#1#161#225#255#3#174#229#255#5#187#233#255#5 +#136#161#255#0#3#3#252#0#0#0'f'#255#255#255#0#255#255#255#0#255#255#255#0#255 - ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#12#0#4#5#246#3 +'Q_'#255#3'^s'#255#1' )'#255#0#1#1#255#0'+?'#255#0#135#193#255#3#170#228#255 @@ -1791,9 +1793,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#0#0#0'GCCC'#243#11#11#11#254#0#0#0#176#0#0#0#15#255#255#255#0#255 - ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 @@ -1855,9 +1857,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#0#0#0'n'#0#0#0#255#8#30'5'#255'P'#146 @@ -1919,9 +1921,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#0#0#0#255#0#20')'#255#0'_'#192#255#0'd'#201#255#0'd'#201#255#0'd'#201 +#255#0'['#184#255#0#11#22#253#0#0#0#249#0#0#0'5'#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0'T'#0 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0'T'#0 +#0#0#255'qv'#134#255#206#211#229#255#206#211#229#255#206#211#229#255#206#211 - ,#229#255#206#211#229#255#200#206#226#255#161#172#206#255'HM]'#255#0#0#0#255#0 + +#229#255#206#211#229#255#200#206#226#255#161#172#206#255'HM]'#255#0#0#0#255#0 +#28'8'#255#0'c'#199#255#0'd'#201#255#0'b'#197#255#0#25'2'#255#0#0#0#255#0#0#0 +'`'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 @@ -1983,9 +1985,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#0#0#0''''#0#0#0#255#213#213#213#255'___'#255'-0;'#255'?DR'#255 - +#1#1#1#255#0#0#0#253#0#0#0#148#0#0#0#16#255#255#255#0#255#255#255#0#255#255 + ,#1#1#1#255#0#0#0#253#0#0#0#148#0#0#0#16#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#128'CCC'#255'rrr'#255 +#0#0#0#255#2#2#2#255#0#0#0#255#0#0#0#196#0#0#0'0'#255#255#255#0#255#255#255#0 @@ -2047,9 +2049,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#0'd'#201#255#0'd'#201#255#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0 +'6'#0#0#1#250#27',>'#254'|'#173#224#255#127#177#227#255'&{'#209#255#0'd'#201 - ,#255#0'd'#201#255#0'd'#201#255#0'd'#201#255#0'd'#201#255#0'd'#201#255#0'd' + +#255#0'd'#201#255#0'd'#201#255#0'd'#201#255#0'd'#201#255#0'd'#201#255#0'd' +#201#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 @@ -2111,9 +2113,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#128#145#148#255'k'#153#158#255#15#191#197#255#13#243#251#255#10#221#244#255 +#7#198#237#255#3#176#230#255#0#152#222#255#0'+;'#255#0#2#3#255#6#172#196#255 +#6'z'#129#255#0#0#0#255#0#0#0#220#0#0#0#2#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0 - ,#146#0#0#0#255'8-='#255#160#149#165#255#136#127#139#255#12#12#13#255#0#0#0 + +#146#0#0#0#255'8-='#255#160#149#165#255#136#127#139#255#12#12#13#255#0#0#0 +#255#4'aj'#255#7#199#235#255#4#179#231#255#1#157#224#255#1#163#226#255#4#160 +#201#255#0#0#0#255#3'RX'#255#0#1#1#255#0#1#1#245#0#0#0#17#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 @@ -2175,9 +2177,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#0#184#0#0#0#14#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0 +'p'#0#0#0#254#2#1#3#254'Q8Z'#255'sP'#127#255'lKx'#255'C/K'#255#1#1#2#255#0#0 - ,#0#254#0#0#0#130#0#0#0#2#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#0#254#0#0#0#130#0#0#0#2#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 @@ -2239,9 +2241,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#128#128#128#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 - +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 @@ -2303,9 +2305,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0 +#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 @@ -2367,9 +2369,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255 - ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 @@ -2431,9 +2433,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#0#144#0#0#0#144#0#0#0#144#0#0#0#144#0#0#0#144#0#0#0#144#0#0#0#144#0#0#0#144 +#0#0#0#144#0#0#0#144#0#0#0#144#0#0#0#144#0#0#0#144#0#0#0#144#0#0#0#144#0#0#0 +#144#0#0#0#144#0#0#0#144#0#0#0'g'#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#0#0#0'@'#2#5#2#252')_)'#252'.`-'#252'0`0'#252'0`0'#252'.`.'#252')' - ,'_)'#252'$_%'#252#31'^ '#252#25']'#25#252#19'\'#20#252#12'['#13#252#6'['#7 + +'_)'#252'$_%'#252#31'^ '#252#25']'#25#252#19'\'#20#252#12'['#13#252#6'['#7 +#252#0'Z'#2#252#0'Z'#2#252#0'Z'#2#252#0'Z'#2#252#0'Z'#2#252#0'Z'#2#252#0'Z'#2 +#252#0'2'#1#253#0#11#0#193#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 @@ -2495,9 +2497,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +'3'#233#255#183'$'#231#255#177#22#229#255#171#7#227#255#168#0#226#255#154#0 +#207#255#0#0#0#255#0#0#0#25#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#0#0#0'@'#1#14#1#247#28#230#31#255' '#230'#'#255'#'#230 - +'%'#255#24#157#25#255#22#18#25#255#217'v'#242#255#223#132#244#255#228#144#246 + ,'%'#255#24#157#25#255#22#18#25#255#217'v'#242#255#223#132#244#255#228#144#246 +#255#232#154#248#255#232#154#248#255#229#146#246#255#224#134#245#255#218'x' - ,#243#255#212'j'#241#255#206'\'#239#255#200'M'#237#255#194'?'#235#255#188'0' + +#243#255#212'j'#241#255#206'\'#239#255#200'M'#237#255#194'?'#235#255#188'0' +#232#255#182'"'#230#255#176#19#228#255#169#4#226#255#168#0#226#255#168#0#226 +#255#13#0#19#246#0#0#0'I'#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#0#0#0'@'#0#13#1#247#11#227#14#255#15#228#18#255#17#228 @@ -2559,9 +2561,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#168#0#226#255#168#0#226#255#165#0#222#255#30#0''''#248#5#0#7#154#255#255#255 +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#0#0#0#15#5#0#8#234'?'#0'V'#253#161#0#216#255#168#0#226#255#168#0#226 + ,#255#0#0#0#0#15#5#0#8#234'?'#0'V'#253#161#0#216#255#168#0#226#255#168#0#226 +#255#168#0#226#255#168#0#226#255#168#0#226#255#168#0#226#255#168#0#226#255 - ,#168#0#226#255#168#0#226#255#168#0#226#255#168#0#226#255#168#0#226#255#159#0 + +#168#0#226#255#168#0#226#255#168#0#226#255#168#0#226#255#168#0#226#255#159#0 +#214#255'<'#0'P'#252#6#0#8#229#0#0#0#11#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0 @@ -2623,9 +2625,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0 +'^'#2#3#4#244#23'$*'#250'w'#176#203#255#146#215#246#255#139#212#245#255#127 +#207#244#255'q'#201#242#255'c'#195#240#255'S'#188#237#255'C'#182#235#255'4' - +#175#233#255'!'#154#211#255#6'4H'#252#0#1#1#253#0#0#0#130#0#0#0#5#255#255#255 + ,#175#233#255'!'#154#211#255#6'4H'#252#0#1#1#253#0#0#0#130#0#0#0#5#255#255#255 +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#0#0#0#8#1#4#4#177#1#1#2#254'?ev'#255#143#211#241#255#158 +#220#248#255#159#220#248#255#147#215#247#255#132#209#244#255't'#202#242#255 +'d'#196#240#255'T'#189#238#255'D'#182#235#255'4'#175#233#255'$'#169#231#255 @@ -2687,9 +2689,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#0#3#5#189#6'Fd'#255#23#163#229#255' '#167#230#255''''#170#231#255'-' +#172#232#255'1'#174#233#255'2'#175#233#255'2'#175#233#255'0'#174#232#255'+' - +#172#232#255'%'#169#231#255#29#166#230#255#20#162#228#255#10#158#227#255#0 + ,#172#232#255'%'#169#231#255#29#166#230#255#20#162#228#255#10#158#227#255#0 +#154#226#255#0#154#226#255#0#154#226#255#0#154#226#255#0#154#226#255#0#154 - ,#226#255#0#154#226#255#0#154#226#255#0#154#226#255#0'a'#142#255#0#4#6#239#255 + +#226#255#0#154#226#255#0#154#226#255#0#154#226#255#0'a'#142#255#0#4#6#239#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#0#0#0#159#1'3J'#252#13#159#227#255#21#162#229#255#27#165#229#255' ' +#167#230#255'#'#168#231#255'%'#169#231#255'$'#169#231#255'"'#168#230#255#30 @@ -2751,9 +2753,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#0#0#0#2#0#0#0'u'#0#2#3#246#0#2#3#253#0'''8'#249#0'Ba'#255#0'Sy' +#255#0'V~'#255#0'Ee'#255#0'0E'#251#0#6#8#250#0#1#1#252#0#2#3#152#0#0#0#11#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#8#0#0#0'L'#0#0#0 +#150#0#3#4#188#0#5#7#217#0#5#7#221#0#4#5#194#0#0#0#160#0#0#0'\'#0#0#0#17#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 @@ -2815,9 +2817,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#14#6 +#3#3#170#8#4#4#250#153'MJ'#255#235'rm'#255#234'lf'#255#233'f^'#255#232'_V' +#255#160'=6'#255#12#4#4#249#7#3#1#179#0#0#0#17#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#0#0#0'5'#7#3#3#228'*'#24#23#247#205'on'#255#237'|y'#255#236'v' +'r'#255#235'pj'#255#234'ib'#255#233'aY'#255#231'YP'#255#205'I?'#255'3'#16#14 +#248#7#2#1#232#0#0#0'>'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 @@ -2879,9 +2881,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#18#14#247#230'PE'#255#230'RG'#255#230'TI'#255#230'TI'#255#230'SI'#255#230'R' +'G'#255#230'OD'#255#229'L@'#255#229'H;'#255#228'C6'#255#227'>0'#255#226'9)' +#255#225'3#'#255#224'-'#27#255#223''''#20#255#222' '#12#255#221#25#4#255#221 - +#22#0#255#221#22#0#255#221#22#0#255'F'#7#0#250#4#0#0#144#255#255#255#0#255 + ,#22#0#255#221#22#0#255#221#22#0#255'F'#7#0#250#4#0#0#144#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - ,#255#0#255#255#255#0#0#0#0')'#1#0#0#254#208'B7'#255#229'K>'#255#229'L?'#255 + +#255#0#255#255#255#0#0#0#0')'#1#0#0#254#208'B7'#255#229'K>'#255#229'L?'#255 +#229'L@'#255#229'K?'#255#229'I='#255#228'G:'#255#228'D7'#255#227'@2'#255#227 +'<-'#255#226'7'''#255#225'2!'#255#224','#27#255#223''''#20#255#222' '#12#255 +#221#26#5#255#221#22#0#255#221#22#0#255#221#22#0#255#213#21#0#255#6#1#0#251#0 @@ -2943,9 +2945,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 @@ -3007,9 +3009,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#138#138#138#255'|||'#255'***'#255#127#127#127#255#179#179#179#255#164#164 +#164#255#5#5#5#254#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#157#4#1#1 +#253#166';<'#255#216'}'#127#255#234#187#188#255#240#207#207#255#239#202#202 - +#255#222#144#145#255#202'NP'#255#215'|}'#255#233#184#185#255#240#207#207#255 + ,#255#222#144#145#255#202'NP'#255#215'|}'#255#233#184#185#255#240#207#207#255 +#236#193#194#255#225#156#157#255#163'WY'#255#8#3#3#255#0#0#0#255#1#0#0#255#0 - ,#0#0#255'777'#255#139#139#139#255#152#152#152#255'333'#255'aaa'#255#181#181 + +#0#0#255'777'#255#139#139#139#255#152#152#152#255'333'#255'aaa'#255#181#181 +#181#255#183#183#183#255#179#179#179#255#175#175#175#255'==='#255#255#255#255 +#0#0#0#0'"'#0#0#0#152#0#0#0#254'u89'#255#230#173#174#255#240#207#207#255#239 +#202#202#255#222#146#147#255#203'RT'#255#206']_'#255#231#177#177#255#240#207 @@ -3071,9 +3073,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#175#255#170#170#170#255#166#166#166#255#200'GI'#255#200'GI'#255#203'RT'#255 +#225#154#155#255#231#175#176#255#222#146#147#255#202'PR'#255#200'GI'#255#200 +'GI'#255#200'GI'#255#196'EG'#255'|,-'#255'w*+'#255#152'57'#255'3'#19#19#255#3 - +#2#1#255#142#127']'#255#220#197#144#255#218#195#142#255#216#193#140#255#214 + ,#2#1#255#142#127']'#255#220#197#144#255#218#195#142#255#216#193#140#255#214 +#191#138#255#212#189#136#255#210#187#134#255#208#185#132#255#206#183#130#255 - ,#204#181#128#255#202#179'~'#255#200#177'|'#255'\TD'#255#172#172#172#255#170 + +#204#181#128#255#202#179'~'#255#200#177'|'#255'\TD'#255#172#172#172#255#170 +#170#170#255#166#166#166#255#200'GI'#255#203'RT'#255#237#195#195#255#240#207 +#207#255#240#207#207#255#240#207#207#255#213'su'#255#200'GI'#255#200'GI'#255 +#200'GI'#255#200'GI'#255#181'@B'#255#138'12'#255#129'-/'#255#189'CD'#255'>' @@ -3135,9 +3137,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 @@ -3199,9 +3201,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#204#204#204#255#198#198#198#255#195#195#195#255#195#195#195#255#195#195 +#195#255#190#190#190#255#24#24#24#249#3#3#3#160#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#0#0#0#22#6#6#6#250#1#1#1#255#20#20#20#255'DDD'#255'nnn' - ,#255#194#194#194#255#225#225#225#255#219#219#219#255#214#214#214#255#207#207 + +#255#194#194#194#255#225#225#225#255#219#219#219#255#214#214#214#255#207#207 +#207#255#201#201#201#255#195#195#195#255#195#195#195#255#195#195#195#255#195 +#195#195#255#138#138#138#255#0#0#0#254#0#0#0'Y'#0#0#0#5#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 @@ -3263,9 +3265,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255'z'#240#247#255'y'#239#246#255'u'#237#244#255'p'#234#240#255'j'#231#236 +#255'd'#227#232#255']'#223#228#255'W'#220#224#255'P'#216#220#255'J'#212#216 +#255'C'#209#212#255'='#205#207#255'5'#199#201#255'"'#141#143#255#234#230#144 - +#255#234#230#144#255#234#230#144#255#234#230#144#255#234#230#144#255#234#230 + ,#255#234#230#144#255#234#230#144#255#234#230#144#255#234#230#144#255#234#230 +#144#255#234#230#144#255#229#225#141#255#28#27#17#249#2#1#1#148#255#255#255#0 - ,#255#255#255#0#255#255#255#0#255#255#255#0#2#5#5#240'y'#178#181#255#210#249 + +#255#255#255#0#255#255#255#0#255#255#255#0#2#5#5#240'y'#178#181#255#210#249 +#251#255#143#242#249#255#130#244#252#255#128#243#251#255'y'#240#247#255's' +#236#243#255'l'#232#238#255'f'#228#234#255'_'#225#230#255'Y'#221#225#255'R' +#217#221#255'L'#213#217#255'E'#209#213#255'>'#206#208#255','#161#162#255#6#26 @@ -3327,9 +3329,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#7#7#180#0#0#0#2#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#0#0#0#17#9#9#9#248#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 - +#255#255#255#255#255#7#7#7#255#163#163#163#255#14#14#14#255#8#8#8#206#0#0#0#9 + ,#255#255#255#255#255#7#7#7#255#163#163#163#255#14#14#14#255#8#8#8#206#0#0#0#9 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0 - ,#18#10#10#10#247#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#18#10#10#10#247#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#3#3#3 +#255#209#209#209#255#167#167#167#255#11#11#11#255#8#8#8#221#0#0#0#12#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#19#11#11#11#247#255 @@ -3391,9 +3393,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#247#255#255#255#240#255#255#255#228#255#255#255#228#255#255#255#228#255 +#255#255#231#255#0#0#0#255#0#0#0#2#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#0#0#0#31#0#0#0#254#4#4#4#251#6#6#6#249#7#7#7#249#9#9#9#247#15 - +#15#13#246#25#25#20#246#26#26#21#245#26#26#22#244#25#25#22#243#25#25#23#242 + ,#15#13#246#25#25#20#246#26#26#21#245#26#26#22#244#25#25#22#243#25#25#23#242 +#25#25#24#242#25#25#25#241#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255 - ,#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 @@ -3455,9 +3457,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +'_'#255#229#152'^'#255#229#150'\'#255#229#148'['#255#228#147'Z'#255#227#147 +'X'#255#224#143'T'#255#220#138'N'#255#211#132'H'#255#201'|@'#255#187'p7'#255 +#161'[%'#255'I('#12#255#8#4#0#177#255#255#255#0#255#255#255#0#0#0#0'D'#15#12 - +#10#240#6#4#3#252#3#2#1#254#3#2#2#254#3#2#2#254#3#2#2#254#3#2#1#254#3#2#1#254 + ,#10#240#6#4#3#252#3#2#1#254#3#2#2#254#3#2#2#254#3#2#2#254#3#2#1#254#3#2#1#254 +#3#2#2#254#4#3#2#253#2#2#1#254#1#1#1#254#2#2#1#253#11#9#6#245#22#17#13#231#18 - ,#14#10#194#0#0#0#27#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#14#10#194#0#0#0#27#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 @@ -3519,9 +3521,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#152#152#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 - +#255#255#218#184#184#255'V'#0#0#255#9#0#0#186#9#0#0#219'h'#0#0#255#201#152 + ,#255#255#218#184#184#255'V'#0#0#255#9#0#0#186#9#0#0#219'h'#0#0#255#201#152 +#152#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 - ,#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#218#184#184#255'V'#0#0#255#9#0#0#185#9#0#0#218'h'#0#0#255#201#152#152 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 @@ -3583,9 +3585,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +',,/'#255#1#1#5#249#0#0#6':'#255#255#255#0#0#0#5'A'#2#2#6#248'112'#255'AAA' +#255'==='#255#17#18#26#254#2#3#10#233#0#0#0#22#255#255#255#0#255#255#255#0#0 +#0#0#24#1#2#9#233#20#21#29#250';;;'#255'AAA'#255'**.'#255#1#1#4#250#0#0#6'C' - +#255#255#255#0#255#255#255#0#255#255#255#0#1#1#8'K'#1#2#6#249'""'''#255#14#15 + ,#255#255#255#0#255#255#255#0#255#255#255#0#1#1#8'K'#1#2#6#249'""'''#255#14#15 +#23#248#2#3#10#231#0#0#0#21#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - ,#255#0#0#0#0#24#1#2#9#232#16#17#26#245#29#30'$'#255#1#1#5#248#0#0#3'='#255 + +#255#0#0#0#0#24#1#2#9#232#16#17#26#245#29#30'$'#255#1#1#5#248#0#0#3'='#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#5'A'#3 +#4#19#191#1#3#16#169#0#0#0#10#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#0#0#0#16#1#3#18#175#2#3#17#205#0#0#0 @@ -3647,9 +3649,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#0'353e5=4'#246'O'#175'C'#255'=}4'#255'372'#244'3337'#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +'333'#2'493'#148'6A5'#245'G'#151'='#255';q3'#255'393'#245'333L'#255#255#255#0 + ,'333'#2'493'#148'6A5'#245'G'#151'='#255';q3'#255'393'#245'333L'#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0'333'#14'4:4'#192'5>4'#251'B{<'#255'5F3'#243'4:4'#213'333='#255#255#255 +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 @@ -3711,9 +3713,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'333R5;5'#245 - +'R'#145'J'#255'X'#164'N'#255'7@6'#245'594'#136'333'#1#255#255#255#0#255#255 + ,'R'#145'J'#255'X'#164'N'#255'7@6'#245'594'#136'333'#1#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0'333B5:4'#217':M8'#242'H}@'#255'5=4'#251'5:4'#185'33' +'3'#11#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 @@ -3775,9 +3777,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0 +#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0 - +#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + ,#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255 - ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255 +#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 @@ -3839,9 +3841,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#0#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#0#0#0#255#255#255#255#255#0#0#0 +#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#21#21#21#255#255 + ,#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 - +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 - ,#255#255#255#255#255#255#255#255#255#0#0#0#255#255#255#255#255#0#0#0#255#255 + +#255#255#255#255#255#255#255#255#255#0#0#0#255#255#255#255#255#0#0#0#255#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#21#21#21#255#255#255#255 +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 +#0#0#255#0#0#0#255#0#0#0#255#255#255#255#255#0#0#0#255#255#255#255#255#0#0#0 @@ -3903,9 +3905,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#255#0#0#0#0#255#128#128#128#255#0#0#0#255#128#128#128#255#0#0#0#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0' !'#255#128#128#128#255#0#0#0#255#255#255#255#0#0#0#0#255#128#128#128 + ,#255#0' !'#255#128#128#128#255#0#0#0#255#255#255#255#0#0#0#0#255#128#128#128 +#255#0#0#0#255#128#128#128#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255 - ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0' '#255#128#128#128#255#0#0#0#255 +#255#255#255#0#0#0#0#255#128#128#128#255#0#0#0#255#128#128#128#255#0#0#0#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 @@ -3967,9 +3969,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#0#0#0#0#14#1#2#17#221#19#20'D'#250'QQ'#221#255'@@'#222#255'CC'#223#255'FF' +#223#255'HH'#224#255'II'#224#255'II'#224#255'HH'#224#255'GG'#224#255'EE'#223 +#255'AA'#222#255'II'#220#255#22#23'D'#249#1#2#17#217#0#0#0#12#255#255#255#0#0 - +#0#0#8#1#2#17#218#15#16'A'#250'II'#218#255'66'#219#255'99'#220#255'=='#221 + ,#0#0#8#1#2#17#218#15#16'A'#250'II'#218#255'66'#219#255'99'#220#255'=='#221 +#255'??'#221#255'AA'#222#255'AA'#221#255'AA'#221#255'AA'#222#255'@@'#222#255 - ,'>>'#221#255';;'#220#255'77'#219#255'AA'#217#255#19#20'D'#249#1#2#18#215#0#0 + +'>>'#221#255';;'#220#255'77'#219#255'AA'#217#255#19#20'D'#249#1#2#18#215#0#0 +#0#4#0#2#20#156#8#9','#251'=='#215#255',,'#216#255'//'#217#255'33'#218#255'6' +'6'#219#255'88'#219#255'66'#214#255#19#20'S'#250#25#25'i'#251'55'#204#255'88' +#220#255'66'#219#255'44'#218#255'11'#218#255'--'#217#255'55'#215#255#11#12'6' @@ -4031,9 +4033,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#5'\'#146'o='#130#173#246#142#193#227#255'C'#133#175#247#7']' +#146'o'#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#5'\'#146'v<'#130#172 - ,#246#142#193#227#255'/x'#165#247#5'['#145'e'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#246#142#193#227#255'/x'#165#247#5'['#145'e'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#5'\'#146'y+w'#165#245#175#210#232#255#9'^'#148#243#0#0#0 @@ -4095,9 +4097,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#5'\'#146'v<'#130#172 +#246#142#193#227#255'/x'#165#247#5'['#145'e'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#5'\'#146'y+w'#165#245#175#210#232#255#9'^'#148#243#0#0#0 - ,#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#6'\'#146'v'#7'\'#146 +#245#8'_'#148#143#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 @@ -4159,9 +4161,9 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +'tSelectAll'#8'Category'#6#4'Edit'#7'Caption'#6#11'Select &All'#4'Hint'#6#10 +'Select All'#9'OnExecute'#7#20'EditSelectAllExecute'#8'ShortCut'#3'A@'#0#0#7 +'TAction'#13'PictureResize'#8'Category'#6#7'Picture'#7'Caption'#6#9'Resize..' - +'.'#0#0#7'TAction'#18'PictureResizePaper'#8'Category'#6#7'Picture'#7'Caption' + ,'.'#0#0#7'TAction'#18'PictureResizePaper'#8'Category'#6#7'Picture'#7'Caption' +#6#15'Resize Paper...'#0#0#7'TAction'#16'FlipHorizontally'#8'Category'#6#11 - ,'PictureFlip'#7'Caption'#6#12'Horizontally'#9'OnExecute'#7#23'FlipHorizontal' + +'PictureFlip'#7'Caption'#6#12'Horizontally'#9'OnExecute'#7#23'FlipHorizontal' +'lyExecute'#0#0#7'TAction'#14'FlipVertically'#8'Category'#6#11'PictureFlip'#7 +'Caption'#6#10'Vertically'#9'OnExecute'#7#21'FlipVerticallyExecute'#0#0#7'TA' +'ction'#8'Rotate90'#8'Category'#6#13'PictureRotate'#7'Caption'#6#11'90Clockw' diff --git a/applications/lazimageeditor/main.pas b/applications/lazimageeditor/main.pas index ab38f11e9..f360e309d 100644 --- a/applications/lazimageeditor/main.pas +++ b/applications/lazimageeditor/main.pas @@ -163,6 +163,7 @@ type PanelTools: TPanel; ExportResourceDialog: TSaveDialog; SavePictureDialog: TSavePictureDialog; + ToolBrush: TToolButton; ZoomInBtn: TToolButton; ZoomOutBtn: TToolButton; ToolCircleShape: TSpeedButton; @@ -257,6 +258,7 @@ type procedure Rotate270Execute(Sender: TObject); procedure Rotate90Execute(Sender: TObject); procedure spinFillAlphaChange(Sender: TObject); + procedure ToolBrushClick(Sender: TObject); procedure ZoomInBtnClick(Sender: TObject); procedure ZoomOutBtnClick(Sender: TObject); procedure ToolCircleShapeClick(Sender: TObject); @@ -461,6 +463,13 @@ begin ActivePictureEdit.FillAlpha := spinFillAlpha.Value; end; +procedure TMainForm.ToolBrushClick(Sender: TObject); +begin + if not Pictures.CanEdit then + Exit; + ChangeTool(ptBrush); +end; + procedure TMainForm.ZoomInBtnClick(Sender: TObject); var V, E: integer; diff --git a/applications/lazimageeditor/picturectrls.pas b/applications/lazimageeditor/picturectrls.pas index 2e6cccbc2..87dc1dba5 100644 --- a/applications/lazimageeditor/picturectrls.pas +++ b/applications/lazimageeditor/picturectrls.pas @@ -17,7 +17,7 @@ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * * *************************************************************************** - + Author: Tom Gregorovic Abstract: @@ -32,11 +32,11 @@ interface uses Classes, SysUtils, LCLType, LCLIntf, Controls, Forms, ExtCtrls, Graphics, Math, BmpRGBGraph, BmpRGBUtils, BmpRGBTypes; - + type TPictureViewOption = (poShowGrid, poShowMask); TPictureViewOptions = set of TPictureViewOption; - + TPictureBitmap = TRGB32Bitmap; { TCustomPictureView } @@ -47,32 +47,32 @@ type FOnPictureMouseMove: TMouseMoveEvent; FOnPictureMouseUp: TMouseEvent; FOptions: TPictureViewOptions; - FZoom: Single; + FZoom: single; FScrollStop: TPanel; FPicture: TPictureBitmap; FPictureRect: TRect; FOldPos: TPoint; FStartPos: TPoint; FEndPos: TPoint; - FPaintIndex: Integer; + FPaintIndex: integer; procedure SetOptions(const AValue: TPictureViewOptions); procedure SetPicture(const AValue: TPictureBitmap); - procedure SetZoom(const AValue: Single); + procedure SetZoom(const AValue: single); procedure MaskDraw(Data: PtrInt); protected procedure PictureMouseDown(Button: TMouseButton; Shift: TShiftState; - X, Y: Integer); dynamic; - procedure PictureMouseMove(Shift: TShiftState; X, Y: Integer); dynamic; + X, Y: integer); dynamic; + procedure PictureMouseMove(Shift: TShiftState; X, Y: integer); dynamic; procedure PictureMouseUp(Button: TMouseButton; Shift: TShiftState; - X, Y: Integer); dynamic; - - procedure MouseDown(Button: TMouseButton; Shift:TShiftState; X,Y:Integer); override; - procedure MouseMove(Shift: TShiftState; X,Y: Integer); override; - procedure MouseUp(Button: TMouseButton; Shift:TShiftState; X,Y:Integer); override; + X, Y: integer); dynamic; + + procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: integer); override; + procedure MouseMove(Shift: TShiftState; X, Y: integer); override; + procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: integer); override; procedure UpdatePictureRect; public constructor Create(TheOwner: TComponent); override; - + procedure Paint; override; procedure Resize; override; procedure EraseBackground(DC: HDC); override; @@ -82,61 +82,63 @@ type function PictureToClient(const P: TPoint): TPoint; function PictureToClient(const R: TRect): TRect; - procedure LoadPicture(const FileName: String); virtual; + procedure LoadPicture(const FileName: string); virtual; procedure LoadBitmap(ABitmap: TRasterImage); virtual; - procedure SavePicture(const FileName: String); virtual; - procedure ExportPictureAsLazarusResource(const AFileName, AName: String); virtual; - + procedure SavePicture(const FileName: string); virtual; + procedure ExportPictureAsLazarusResource(const AFileName, AName: string); virtual; + property StartPos: TPoint read FStartPos; property EndPos: TPoint read FEndPos; public property Options: TPictureViewOptions read FOptions write SetOptions; property Picture: TPictureBitmap read FPicture write SetPicture; - property Zoom: Single read FZoom write SetZoom; - - property OnPictureMouseDown: TMouseEvent read FOnPictureMouseDown write - FOnPictureMouseDown; - property OnPictureMouseMove: TMouseMoveEvent read FOnPictureMouseMove write - FOnPictureMouseMove; - property OnPictureMouseUp: TMouseEvent read FOnPictureMouseUp write FOnPictureMouseUp; + property Zoom: single read FZoom write SetZoom; + + property OnPictureMouseDown: TMouseEvent + read FOnPictureMouseDown write FOnPictureMouseDown; + property OnPictureMouseMove: TMouseMoveEvent + read FOnPictureMouseMove write FOnPictureMouseMove; + property OnPictureMouseUp: TMouseEvent read FOnPictureMouseUp + write FOnPictureMouseUp; end; - + TPictureView = class(TCustomPictureView) end; - + TPictureEditShape = (psRect, psCircle); - - TPictureEditToolDrag = (tdNone, tdLine, tdRectangle, tdEllipse, tdRoundRectangle); - + + TPictureEditToolDrag = (tdNone, tdLine, tdRectangle, tdEllipse, + tdRoundRectangle, tdPolygon); + TPictureEditTool = (ptLine, ptPen, ptRectangle, ptFloodFill, ptEllipse, - ptMask, ptColorPick, ptEraser, ptSpray, ptPolygon); - + ptMask, ptColorPick, ptEraser, ptSpray, ptPolygon, ptBrush); + TPicturePos = (ppTopLeft, ppTopCenter, ppTopRight, ppCenterLeft, ppCentered, ppCenterRight, ppBottomLeft, ppBottomCenter, ppBottomRight); - + TMaskTool = (mtRectangle, mtEllipse, mtFloodFill); - + { TCustomPictureEdit } TCustomPictureEdit = class(TCustomPictureView) private FDrawMode: TDrawMode; - FFillAlpha: Integer; + FFillAlpha: integer; FFillAndOutline: TDrawMode; FFillColor: TColor; - FFloodFillTolerance: Single; - FFuzzy: Boolean; + FFloodFillTolerance: single; + FFuzzy: boolean; FMaskTool: TMaskTool; - FModified: Boolean; + FModified: boolean; FOnChange: TNotifyEvent; FOnColorChange: TNotifyEvent; FOnPictureSizeChange: TNotifyEvent; FOutlineColor: TColor; FPaperColor: TColor; - FRandomDensity: Single; - FRectangleRoundness: Integer; + FRandomDensity: single; + FRectangleRoundness: integer; FShape: TPictureEditShape; - FSize: Integer; + FSize: integer; FTool: TPictureEditTool; FToolDrag: TPictureEditToolDrag; FTempPos: TPoint; @@ -148,51 +150,56 @@ type procedure Change; dynamic; procedure ColorChange; dynamic; procedure PictureSizeChange; dynamic; - procedure PictureMouseDown(Button: TMouseButton; Shift:TShiftState; X,Y:Integer); override; - procedure PictureMouseMove(Shift: TShiftState; X,Y: Integer); override; - procedure PictureMouseUp(Button: TMouseButton; Shift:TShiftState; X,Y:Integer); override; - + procedure PictureMouseDown(Button: TMouseButton; Shift: TShiftState; + X, Y: integer); override; + procedure PictureMouseMove(Shift: TShiftState; X, Y: integer); override; + procedure PictureMouseUp(Button: TMouseButton; Shift: TShiftState; + X, Y: integer); override; + function GetToolDrag: TPictureEditToolDrag; virtual; - procedure DrawToolDrag(X1, Y1, X2, Y2: Integer); virtual; + procedure DrawToolDrag(X1, Y1, X2, Y2: integer); virtual; public constructor Create(TheOwner: TComponent); override; - procedure NewPicture(AWidth, AHeight: Integer; APaperColor: TColor); - procedure LoadPicture(const FileName: String); override; + procedure NewPicture(AWidth, AHeight: integer; APaperColor: TColor); + procedure LoadPicture(const FileName: string); override; procedure LoadBitmap(ABitmap: TRasterImage); override; - procedure SavePicture(const FileName: String); override; - - procedure ColorPick(X, Y: Integer; Shift: TShiftState = [ssLeft]); - procedure FloodFill(X, Y: Integer; Shift: TShiftState = [ssLeft]); - procedure MaskFloodFill(X, Y: Integer; Shift: TShiftState = [ssLeft]); - procedure Eraser(X, Y: Integer; Shift: TShiftState = [ssLeft]); - procedure Spray(X, Y: Integer; Shift: TShiftState = [ssLeft]); - 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 Mask(X1, Y1, X2, Y2: Integer; Shift: TShiftState = [ssLeft]); - + procedure SavePicture(const FileName: string); override; + + procedure ColorPick(X, Y: integer; Shift: TShiftState = [ssLeft]); + procedure FloodFill(X, Y: integer; Shift: TShiftState = [ssLeft]); + procedure MaskFloodFill(X, Y: integer; Shift: TShiftState = [ssLeft]); + procedure Eraser(X, Y: integer; Shift: TShiftState = [ssLeft]); + procedure Spray(X, Y: integer; Shift: TShiftState = [ssLeft]); + procedure Brush(X, Y: integer; Shift: TShiftState = [ssLeft]); + 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 ProcessPointAddr(X1, Y1, X2, Y2: integer; Points: array of TPoint; PCount: integer); + procedure Mask(X1, Y1, X2, Y2: integer; Shift: TShiftState = [ssLeft]); + procedure FlipHorizontally; procedure FlipVertically; procedure Rotate90Clockwise; procedure Rotate180Clockwise; procedure Rotate270Clockwise; - - procedure StretchTruncate(AWidth, AHeight: Integer); - procedure StretchSmooth(AWidth, AHeight: Integer; Method: TSmoothMethod); - procedure ResizePaper(AWidth, AHeight: Integer; PicturePos: TPicturePos); + + procedure StretchTruncate(AWidth, AHeight: integer); + procedure StretchSmooth(AWidth, AHeight: integer; Method: TSmoothMethod); + procedure ResizePaper(AWidth, AHeight: integer; PicturePos: TPicturePos); procedure ClipPaperToMask; - + procedure RemoveMask; procedure InvertMask; - + procedure Cut; procedure Copy; procedure Paste; procedure Delete; procedure SelectAll; - - + + procedure Invert; procedure Grayscale; procedure Disable; @@ -208,20 +215,23 @@ type property Shape: TPictureEditShape read FShape write FShape; property FillAndOutline: TDrawMode read FFillAndOutline write FFillAndOutline; property MaskTool: TMaskTool read FMaskTool write FMaskTool; - property RandomDensity: Single read FRandomDensity write FRandomDensity; - property RectangleRoundness: Integer read FRectangleRoundness write FRectangleRoundness; - property FloodFillTolerance: Single read FFloodFillTolerance write FFloodFillTolerance; - property Size: Integer read FSize write FSize; + property RandomDensity: single read FRandomDensity write FRandomDensity; + property RectangleRoundness: integer read FRectangleRoundness + write FRectangleRoundness; + property FloodFillTolerance: single read FFloodFillTolerance + write FFloodFillTolerance; + property Size: integer read FSize write FSize; property Tool: TPictureEditTool read FTool write SetTool; - property FillAlpha: Integer read FFillAlpha write FFillAlpha; - property Fuzzy: Boolean read FFuzzy write FFuzzy; + property FillAlpha: integer read FFillAlpha write FFillAlpha; + property Fuzzy: boolean read FFuzzy write FFuzzy; - property Modified: Boolean read FModified; + property Modified: boolean read FModified; property OnChange: TNotifyEvent read FOnChange write FOnChange; property OnColorChange: TNotifyEvent read FOnColorChange write FOnColorChange; - property OnPictureSizeChange: TNotifyEvent read FOnPictureSizeChange write FOnPictureSizeChange; + property OnPictureSizeChange: TNotifyEvent + read FOnPictureSizeChange write FOnPictureSizeChange; end; - + { TPictureEdit } TPictureEdit = class(TCustomPictureEdit) @@ -234,78 +244,90 @@ implementation procedure TCustomPictureView.SetPicture(const AValue: TPictureBitmap); begin FPicture := AValue; - + FZoom := 1; UpdatePictureRect; end; procedure TCustomPictureView.SetOptions(const AValue: TPictureViewOptions); begin - if FOptions = AValue then Exit; + if FOptions = AValue then + Exit; FOptions := AValue; Invalidate; end; -procedure TCustomPictureView.SetZoom(const AValue: Single); +procedure TCustomPictureView.SetZoom(const AValue: single); begin - if AValue = FZoom then Exit; + if AValue = FZoom then + Exit; FZoom := AValue; - if FZoom < 0.1 then FZoom := 0.1; - if FZoom > 20 then FZoom := 20; - + if FZoom < 0.1 then + FZoom := 0.1; + if FZoom > 20 then + FZoom := 20; + UpdatePictureRect; end; procedure TCustomPictureView.MaskDraw(Data: PtrInt); var - I, J, CI, CJ, X, Y: Integer; + I, J, CI, CJ, X, Y: integer; const PORTION_SIZE = 128; begin Application.ProcessMessages; - if Application.Terminated then Exit; - if FPaintIndex <> Data then Exit; + if Application.Terminated then + Exit; + if FPaintIndex <> Data then + Exit; CI := Ceil(Picture.Width / PORTION_SIZE); CJ := Ceil(Picture.Height / PORTION_SIZE); for J := 0 to Pred(CJ) do - for I := 0 to Pred(CI) do - with Canvas do - begin - X := FPictureRect.Left - GetClientScrollOffset.X; - Y := FPictureRect.Top - GetClientScrollOffset.Y; - - FPicture.Mask.StretchDrawShapePortionTo(Canvas, X, Y, - FPictureRect.Right - FPictureRect.Left, FPictureRect.Bottom - FPictureRect.Top, - I * PORTION_SIZE, J * PORTION_SIZE, PORTION_SIZE, PORTION_SIZE); - - Application.ProcessMessages; - if Application.Terminated then Exit; - if FPaintIndex <> Data then Exit; - end; + for I := 0 to Pred(CI) do + with Canvas do + begin + X := FPictureRect.Left - GetClientScrollOffset.X; + Y := FPictureRect.Top - GetClientScrollOffset.Y; + + FPicture.Mask.StretchDrawShapePortionTo(Canvas, X, Y, + FPictureRect.Right - FPictureRect.Left, FPictureRect.Bottom - FPictureRect.Top, + I * PORTION_SIZE, J * PORTION_SIZE, PORTION_SIZE, PORTION_SIZE); + + Application.ProcessMessages; + if Application.Terminated then + Exit; + if FPaintIndex <> Data then + Exit; + end; end; procedure TCustomPictureView.UpdatePictureRect; var - W, H, X, Y: Integer; + W, H, X, Y: integer; begin if FPicture <> nil then begin W := Round(FPicture.Width * FZoom); H := Round(FPicture.Height * FZoom); - - if W > ClientWidth then X := 0 - else X := (ClientWidth - W) div 2; - - if H > ClientHeight then Y := 0 - else Y := (ClientHeight - H) div 2; - - FPictureRect := Bounds(X, Y, W, H) + + if W > ClientWidth then + X := 0 + else + X := (ClientWidth - W) div 2; + + if H > ClientHeight then + Y := 0 + else + Y := (ClientHeight - H) div 2; + + FPictureRect := Bounds(X, Y, W, H); end else FPictureRect := Rect(0, 0, 0, 0); - + //VertScrollBar.Range := FPictureRect.Bottom; //HorzScrollBar.Range := FPictureRect.Right; if Assigned(FScrollStop) then @@ -316,7 +338,7 @@ begin end; procedure TCustomPictureView.PictureMouseDown(Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); + Shift: TShiftState; X, Y: integer); begin FStartPos := Point(X, Y); FEndPos := FStartPos; @@ -325,40 +347,41 @@ begin FOnPictureMouseDown(Self, Button, Shift, X, Y); end; -procedure TCustomPictureView.PictureMouseMove(Shift: TShiftState; X, Y: Integer); +procedure TCustomPictureView.PictureMouseMove(Shift: TShiftState; X, Y: integer); begin FEndPos := Point(X, Y); - if Shift * [ssLeft, ssMiddle, ssRight] = [] then FStartPos := FEndPos; + if Shift * [ssLeft, ssMiddle, ssRight] = [] then + FStartPos := FEndPos; if Assigned(FOnPictureMouseMove) then FOnPictureMouseMove(Self, Shift, X, Y); end; procedure TCustomPictureView.PictureMouseUp(Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); + Shift: TShiftState; X, Y: integer); begin if Assigned(FOnPictureMouseUp) then FOnPictureMouseUp(Self, Button, Shift, X, Y); end; procedure TCustomPictureView.MouseDown(Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); + Shift: TShiftState; X, Y: integer); var C: TPoint; begin inherited MouseDown(Button, Shift, X, Y); - + C := ClientToPicture(Point(X, Y)); PictureMouseDown(Button, Shift, C.X, C.Y); FOldPos := C; end; -procedure TCustomPictureView.MouseMove(Shift: TShiftState; X, Y: Integer); +procedure TCustomPictureView.MouseMove(Shift: TShiftState; X, Y: integer); var C: TPoint; begin inherited MouseMove(Shift, X, Y); - + C := ClientToPicture(Point(X, Y)); if FOldPos <> C then begin @@ -368,12 +391,12 @@ begin end; procedure TCustomPictureView.MouseUp(Button: TMouseButton; Shift: TShiftState; - X, Y: Integer); + X, Y: integer); var C: TPoint; begin inherited MouseUp(Button, Shift, X, Y); - + C := ClientToPicture(Point(X, Y)); PictureMouseUp(Button, Shift, C.X, C.Y); end; @@ -381,14 +404,14 @@ end; constructor TCustomPictureView.Create(TheOwner: TComponent); begin inherited Create(TheOwner); - + Color := clSilver; FOptions := [poShowGrid, poShowMask]; DoubleBuffered := True; FStartPos := Point(0, 0); FEndPos := Point(0, 0); AutoScroll := True; - + FScrollStop := TPanel.Create(Self); FScrollStop.SetBounds(0, 0, 0, 0); FScrollStop.Parent := Self; @@ -396,7 +419,7 @@ end; procedure TCustomPictureView.Paint; var - I: Integer; + I: integer; R: TRect; begin Inc(FPaintIndex); @@ -428,7 +451,7 @@ begin LineTo(FPictureRect.Right, FPictureRect.Top + Round(I * Zoom)); end; end; - + if (poShowMask in Options) and not FPicture.Mask.IsEmpty then begin Application.QueueAsyncCall(@MaskDraw, FPaintIndex); @@ -478,7 +501,7 @@ begin Result := R; SortRect(Result); S := GetClientScrollOffset; - + Result.Left := Floor((Result.Left - FPictureRect.Left + S.X) / FZoom); Result.Top := Floor((Result.Top - FPictureRect.Top + S.Y) / FZoom); Result.Right := Ceil((Result.Right - FPictureRect.Right + S.X) / FZoom); @@ -501,14 +524,14 @@ begin Result := R; SortRect(Result); S := GetClientScrollOffset; - + Result.Left := Floor((Result.Left - 1) * FZoom) + FPictureRect.Left + S.X; Result.Top := Floor((Result.Top - 1) * FZoom) + FPictureRect.Top + S.Y; Result.Right := Ceil((Result.Right + 2) * FZoom) + FPictureRect.Left + S.X; Result.Bottom := Ceil((Result.Bottom + 2) * FZoom) + FPictureRect.Top + S.Y; end; -procedure TCustomPictureView.LoadPicture(const FileName: String); +procedure TCustomPictureView.LoadPicture(const FileName: string); begin Picture.Free; Picture := TPictureBitmap.CreateFromFile(FileName); @@ -520,23 +543,25 @@ begin Picture := TPictureBitmap.CreateFromBitmap(ABitmap); end; -procedure TCustomPictureView.SavePicture(const FileName: String); -var Pic: TPicture; ExtName: string; +procedure TCustomPictureView.SavePicture(const FileName: string); +var + Pic: TPicture; + ExtName: string; begin Pic := TPicture.Create; //Picture.SaveToFile(UTF8Decode(FileName)); Pic.Bitmap.Width := Picture.Width; Pic.Bitmap.Height := Picture.Height; - Pic.Bitmap.Canvas.Draw(0,0,Picture); + Pic.Bitmap.Canvas.Draw(0, 0, Picture); ExtName := ExtractFileExt(FileName); -// if ExtName = 'PNG' then -// Pic.Graphic.; + // if ExtName = 'PNG' then + // Pic.Graphic.; Pic.SaveToFile(FileName, ExtName); Pic.Free; end; -procedure TCustomPictureView.ExportPictureAsLazarusResource(const AFileName, - AName: String); +procedure TCustomPictureView.ExportPictureAsLazarusResource( + const AFileName, AName: string); begin Picture.SaveToLazarusResource(AFileName, AName); end; @@ -545,102 +570,130 @@ end; procedure TCustomPictureEdit.SetTool(const AValue: TPictureEditTool); begin - if FTool = AValue then Exit; + if FTool = AValue then + Exit; FTool := AValue; end; procedure TCustomPictureEdit.Change; begin - if Assigned(FOnChange) then FOnChange(Self); + if Assigned(FOnChange) then + FOnChange(Self); end; procedure TCustomPictureEdit.SetFillColor(const AValue: TColor); begin - if AValue = FFillColor then Exit; + if AValue = FFillColor then + Exit; FFillColor := AValue; ColorChange; end; procedure TCustomPictureEdit.SetOutlineColor(const AValue: TColor); begin - if AValue = FOutlineColor then Exit; + if AValue = FOutlineColor then + Exit; FOutlineColor := AValue; ColorChange; end; procedure TCustomPictureEdit.SetPaperColor(const AValue: TColor); begin - if AValue = FPaperColor then Exit; + if AValue = FPaperColor then + Exit; FPaperColor := AValue; ColorChange; end; procedure TCustomPictureEdit.ColorChange; begin - if Assigned(FOnColorChange) then FOnColorChange(Self); + if Assigned(FOnColorChange) then + FOnColorChange(Self); end; procedure TCustomPictureEdit.PictureSizeChange; begin - if Assigned(FOnPictureSizeChange) then FOnPictureSizeChange(Self); + if Assigned(FOnPictureSizeChange) then + FOnPictureSizeChange(Self); end; procedure TCustomPictureEdit.PictureMouseDown(Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); + Shift: TShiftState; X, Y: integer); begin inherited PictureMouseDown(Button, Shift, X, Y); FTempPos := Point(X, Y); case Tool of - ptPen: Line(X, Y, X, Y, Shift); - ptFloodFill: FloodFill(X, Y, Shift); - ptMask: if MaskTool = mtFloodFill then MaskFloodFill(X, Y, Shift); - ptColorPick: ColorPick(X, Y, Shift); - ptEraser: Eraser(X, Y, Shift); - ptSpray: Spray(X, Y, Shift); + ptPen: Line(X, Y, X, Y, Shift); + ptFloodFill: FloodFill(X, Y, Shift); + ptMask: if MaskTool = mtFloodFill then + MaskFloodFill(X, Y, Shift); + ptColorPick: ColorPick(X, Y, Shift); + ptEraser: Eraser(X, Y, Shift); + ptSpray: Spray(X, Y, Shift); + ptBrush: Brush(X, Y, Shift); end; - + FToolDrag := GetToolDrag; DrawToolDrag(StartPos.X, StartPos.Y, FTempPos.X, FTempPos.Y); end; -procedure TCustomPictureEdit.PictureMouseMove(Shift: TShiftState; X, Y: Integer); +procedure TCustomPictureEdit.PictureMouseMove(Shift: TShiftState; X, Y: integer); begin inherited PictureMouseMove(Shift, X, Y); - + if Shift * [ssLeft, ssRight] <> [] then begin case Tool of - ptPen: - begin - Line(FTempPos.X, FTempPos.Y, X, Y, Shift); - end; - ptEraser: Eraser(X, Y, Shift); - ptSpray: Spray(X, Y, Shift); - ptColorPick: ColorPick(X, Y, Shift); + ptPen: + begin + Line(FTempPos.X, FTempPos.Y, X, Y, Shift); + end; + ptEraser: Eraser(X, Y, Shift); + ptSpray: Spray(X, Y, Shift); + ptBrush: Brush(X, Y, Shift); + ptColorPick: ColorPick(X, Y, Shift); end; end; - + DrawToolDrag(StartPos.X, StartPos.Y, FTempPos.X, FTempPos.Y); FTempPos := Point(X, Y); - + DrawToolDrag(StartPos.X, StartPos.Y, X, Y); end; -procedure TCustomPictureEdit.PictureMouseUp(Button: TMouseButton; Shift: TShiftState; - X, Y: Integer); +procedure TCustomPictureEdit.PictureMouseUp(Button: TMouseButton; + Shift: TShiftState; X, Y: integer); +var + paddr: array of TPoint; i, pXUnit, pYUnit: integer; begin inherited PictureMouseUp(Button, Shift, X, Y); - if Button = mbLeft then Shift := Shift + [ssLeft]; - if Button = mbRight then Shift := Shift + [ssRight]; - + if Button = mbLeft then + Shift := Shift + [ssLeft]; + if Button = mbRight then + Shift := Shift + [ssRight]; + case Tool of - ptLine: Line(StartPos.X, StartPos.Y, X, Y, Shift); - ptRectangle: Rectangle(StartPos.X, StartPos.Y, X, Y, Shift); - ptEllipse: Ellipse(StartPos.X, StartPos.Y, X, Y, Shift); - ptMask: if MaskTool <> mtFloodFill then Mask(StartPos.X, StartPos.Y, X, Y, Shift); + ptLine: Line(StartPos.X, StartPos.Y, X, Y, Shift); + ptRectangle: Rectangle(StartPos.X, StartPos.Y, X, Y, Shift); + 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); + end; + ptMask: if MaskTool <> mtFloodFill then + Mask(StartPos.X, StartPos.Y, X, Y, Shift); end; - + FToolDrag := tdNone; end; @@ -650,39 +703,47 @@ begin ptLine: Result := tdLine; ptRectangle: Result := tdRoundRectangle; ptEllipse: Result := tdEllipse; + ptPolygon: Result := tdPolygon; ptMask: begin case MaskTool of - mtEllipse: Result := tdEllipse; - mtRectangle: Result := tdRectangle; - mtFloodFill: Result := tdNone; + mtEllipse: Result := tdEllipse; + mtRectangle: Result := tdRectangle; + mtFloodFill: Result := tdNone; end; end; - else - Result := tdNone; + else + Result := tdNone; end; end; -procedure TCustomPictureEdit.DrawToolDrag(X1, Y1, X2, Y2: Integer); +procedure TCustomPictureEdit.DrawToolDrag(X1, Y1, X2, Y2: integer); var S, E: TPoint; - R: Integer; + R: integer; begin - if FToolDrag = tdNone then Exit; + if FToolDrag = tdNone then + Exit; - // Canvas.Pen.Mode := pmNot; + // Canvas.Pen.Mode := pmNot; Canvas.Pen.Mode := pmNotXor; Canvas.Brush.Style := bsClear; S := PictureToClient(Point(X1, Y1)); E := PictureToClient(Point(X2, Y2)); R := Round(RectangleRoundness * Zoom); - - if FToolDrag = tdLine then Canvas.Line(S.X, S.Y, E.X, E.Y); - if FToolDrag = tdRectangle then Canvas.Rectangle(S.X, S.Y, E.X, E.Y); - if FToolDrag = tdRoundRectangle then Canvas.RoundRect(S.X, S.Y, E.X, E.Y, R, R); - if FToolDrag = tdEllipse then Canvas.Ellipse(S.X, S.Y, E.X, E.Y); - + + if FToolDrag = tdLine then + Canvas.Line(S.X, S.Y, E.X, E.Y); + if FToolDrag = tdRectangle then + Canvas.Rectangle(S.X, S.Y, E.X, E.Y); + if FToolDrag = tdRoundRectangle then + Canvas.RoundRect(S.X, S.Y, E.X, E.Y, R, R); + 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]); + Canvas.Pen.Mode := pmCopy; Canvas.Brush.Style := bsSolid; end; @@ -701,12 +762,11 @@ begin RectangleRoundness := 0; Size := 10; FloodFillTolerance := 0; - + Cursor := crCross; end; -procedure TCustomPictureEdit.NewPicture(AWidth, AHeight: Integer; - APaperColor: TColor); +procedure TCustomPictureEdit.NewPicture(AWidth, AHeight: integer; APaperColor: TColor); begin Picture.Free; Picture := TPictureBitmap.Create(AWidth, AHeight); @@ -716,7 +776,7 @@ begin Change; end; -procedure TCustomPictureEdit.LoadPicture(const FileName: String); +procedure TCustomPictureEdit.LoadPicture(const FileName: string); begin inherited LoadPicture(FileName); FModified := False; @@ -730,19 +790,20 @@ begin Change; end; -procedure TCustomPictureEdit.SavePicture(const FileName: String); +procedure TCustomPictureEdit.SavePicture(const FileName: string); begin inherited SavePicture(FileName); FModified := False; Change; end; -procedure TCustomPictureEdit.ColorPick(X, Y: Integer; Shift: TShiftState); +procedure TCustomPictureEdit.ColorPick(X, Y: integer; Shift: TShiftState); var C: TColor; begin - if Picture = nil then Exit; - + if Picture = nil then + Exit; + BeginDraw; try C := Picture.GetColor(X, Y); @@ -751,21 +812,26 @@ begin end; if C <> clNone then begin - if ssLeft in Shift then OutlineColor := C; - if ssRight in Shift then FillColor := C; - if ssMiddle in Shift then PaperColor := C; + if ssLeft in Shift then + OutlineColor := C; + if ssRight in Shift then + FillColor := C; + if ssMiddle in Shift then + PaperColor := C; end; end; -procedure TCustomPictureEdit.FloodFill(X, Y: Integer; Shift: TShiftState); +procedure TCustomPictureEdit.FloodFill(X, Y: integer; Shift: TShiftState); begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; - if not (ssLeft in Shift) then Picture.EraseMode := ermErase; + if not (ssLeft in Shift) then + Picture.EraseMode := ermErase; try //Picture.Canvas.FloodFill(X, Y, FFillColor, fsSurface); //Picture.Canvas.Brush.Color, fsSurface); Picture.Canvas.Brush.Color := FFillColor; - Picture.Canvas.FloodFill(x, y, Picture.Canvas.Pixels[x,y], fsSurface); + Picture.Canvas.FloodFill(x, y, Picture.Canvas.Pixels[x, y], fsSurface); finally Picture.EraseMode := ermNone; EndDraw; @@ -773,15 +839,18 @@ begin Invalidate; end; -procedure TCustomPictureEdit.MaskFloodFill(X, Y: Integer; Shift: TShiftState); +procedure TCustomPictureEdit.MaskFloodFill(X, Y: integer; Shift: TShiftState); begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.Mask.FillMode := mfXOR; - if ssLeft in Shift then Picture.Mask.FillMode := mfAdd; - if ssRight in Shift then Picture.Mask.FillMode := mfRemove; + if ssLeft in Shift then + Picture.Mask.FillMode := mfAdd; + if ssRight in Shift then + Picture.Mask.FillMode := mfRemove; Picture.MaskFloodFill(X, Y); finally @@ -791,22 +860,25 @@ begin Invalidate; end; -procedure TCustomPictureEdit.Eraser(X, Y: Integer; Shift: TShiftState); +procedure TCustomPictureEdit.Eraser(X, Y: integer; Shift: TShiftState); var R: TRect; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; - if ssLeft in Shift then Picture.EraseMode := ermErase; - if ssRight in Shift then Picture.EraseMode := ermReplace; + if ssLeft in Shift then + Picture.EraseMode := ermErase; + if ssRight in Shift then + Picture.EraseMode := ermReplace; try R := Bounds(X - FSize div 2, Y - FSize div 2, FSize, FSize); - Picture.Canvas.Pen.Color:=FPaperColor; - Picture.Canvas.Brush.Color:=FpaperColor; + Picture.Canvas.Pen.Color := FPaperColor; + Picture.Canvas.Brush.Color := FpaperColor; case Shape of - psRect: Picture.Canvas.FillRect(R.Left, R.Top, R.Right, R.Bottom); - psCircle: Picture.FillEllipse(R.Left, R.Top, R.Right, R.Bottom); + psRect: Picture.Canvas.FillRect(R.Left, R.Top, R.Right, R.Bottom); + psCircle: Picture.FillEllipse(R.Left, R.Top, R.Right, R.Bottom); end; finally Picture.EraseMode := ermNone; @@ -815,22 +887,51 @@ begin InvalidatePictureRect(R); end; -procedure TCustomPictureEdit.Spray(X, Y: Integer; Shift: TShiftState); +procedure TCustomPictureEdit.Spray(X, Y: integer; Shift: TShiftState); var R: TRect; begin - if Picture = nil then Exit; - + if Picture = nil then + Exit; + BeginDraw; - if not (ssLeft in Shift) then Picture.EraseMode := ermErase; - Picture.RandomEnabled := True; + // if not (ssLeft in Shift) then Picture.EraseMode := ermErase; + // Picture.RandomEnabled := True; try - Picture.Canvas.Pen.Color:=FFillColor; - Picture.Canvas.Brush.Color:=FFillColor; + // Picture.Canvas.Pen.Color:=FFillColor; + // Picture.Canvas.Brush.Color:=FFillColor; R := Bounds(X - FSize div 2, Y - FSize div 2, FSize, FSize); - case Shape of + {case Shape of psRect: Picture.Canvas.FillRect(R.Left, R.Top, R.Right, R.Bottom); psCircle: Picture.FillEllipse(R.Left, R.Top, R.Right, R.Bottom); + end; } + Picture.Spray(X, Y, 11, FFillColor); + finally + Picture.EraseMode := ermNone; + Picture.RandomEnabled := False; + EndDraw; + end; + InvalidatePictureRect(R); +end; + +procedure TCustomPictureEdit.Brush(X, Y: integer; Shift: TShiftState); +var + R: TRect; +begin + if Picture = nil then + Exit; + + BeginDraw; + if not (ssLeft in Shift) then + Picture.EraseMode := ermErase; + Picture.RandomEnabled := True; + try + Picture.Canvas.Pen.Color := FFillColor; + Picture.Canvas.Brush.Color := FFillColor; + R := Bounds(X - FSize div 2, Y - FSize div 2, FSize, FSize); + case Shape of + psRect: Picture.Canvas.FillRect(R.Left, R.Top, R.Right, R.Bottom); + psCircle: Picture.FillEllipse(R.Left, R.Top, R.Right, R.Bottom); end; finally Picture.EraseMode := ermNone; @@ -840,13 +941,15 @@ begin InvalidatePictureRect(R); end; -procedure TCustomPictureEdit.Line(X1, Y1, X2, Y2: Integer; Shift: TShiftState); +procedure TCustomPictureEdit.Line(X1, Y1, X2, Y2: integer; Shift: TShiftState); begin - if Picture = nil then Exit; + if Picture = nil then + Exit; - Picture.Canvas.Pen.Color:=FOutLineColor; + Picture.Canvas.Pen.Color := FOutLineColor; BeginDraw; - if not (ssLeft in Shift) then Picture.EraseMode := ermErase; + if not (ssLeft in Shift) then + Picture.EraseMode := ermErase; try if (X1 = X2) and (Y1 = Y2) and (Tool = ptPen) then Picture.Canvas.Pixels[X1, Y1] := FOutLineColor @@ -859,16 +962,17 @@ begin InvalidatePictureRect(Rect(X1, Y1, X2, Y2)); end; -procedure TCustomPictureEdit.Rectangle(X1, Y1, X2, Y2: Integer; - Shift: TShiftState); +procedure TCustomPictureEdit.Rectangle(X1, Y1, X2, Y2: integer; Shift: TShiftState); begin - if Picture = nil then Exit; - + if Picture = nil then + Exit; + BeginDraw; - if not (ssLeft in Shift) then Picture.EraseMode := ermErase; + if not (ssLeft in Shift) then + Picture.EraseMode := ermErase; try - Picture.Canvas.Brush.Color:=FFillColor; - Picture.Canvas.Pen.Color:=FOutlineColor; + Picture.Canvas.Brush.Color := FFillColor; + Picture.Canvas.Pen.Color := FOutlineColor; if FFuzzy then begin Picture.FuzzyRectangle(X1, Y1, X2, Y2); @@ -876,7 +980,8 @@ begin else begin if FFillAlpha = 100 then - Picture.Canvas.RoundRect(X1, Y1, X2, Y2, FRectangleRoundness, FRectangleRoundness) + Picture.Canvas.RoundRect(X1, Y1, X2, Y2, FRectangleRoundness, + FRectangleRoundness) else Picture.AlphaRectangle(X1, Y1, X2, Y2, FFillAlpha); end; @@ -887,15 +992,17 @@ begin InvalidatePictureRect(Rect(X1, Y1, X2, Y2)); end; -procedure TCustomPictureEdit.Ellipse(X1, Y1, X2, Y2: Integer; Shift: TShiftState); +procedure TCustomPictureEdit.Ellipse(X1, Y1, X2, Y2: integer; Shift: TShiftState); begin - if Picture = nil then Exit; - + if Picture = nil then + Exit; + BeginDraw; - if not (ssLeft in Shift) then Picture.EraseMode := ermErase; + if not (ssLeft in Shift) then + Picture.EraseMode := ermErase; try - Picture.Canvas.Brush.Color:=FFillColor; - Picture.Canvas.Pen.Color:=FOutlineColor; + Picture.Canvas.Brush.Color := FFillColor; + Picture.Canvas.Pen.Color := FOutlineColor; Picture.Canvas.Ellipse(X1, Y1, X2, Y2); finally Picture.EraseMode := ermNone; @@ -904,19 +1011,77 @@ begin InvalidatePictureRect(Rect(X1, Y1, X2, Y2)); end; -procedure TCustomPictureEdit.Mask(X1, Y1, X2, Y2: Integer; Shift: TShiftState); +procedure TCustomPictureEdit.ProcessPointAddr(X1, Y1, X2, Y2: integer; + Points: array of TPoint; PCount: integer); +var i, pXUnit, pYUnit: integer; begin - if Picture = nil then Exit; +{ pXUnit := (X2 - X1) div (PCount - 1); + pYUnit := (Y2 - Y1) div (PCount - 1); + for i := 0 to PCount - 1 do + 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; +end; + +procedure TCustomPictureEdit.Polygon(X1, Y1, X2, Y2: integer; Shift: TShiftState); +var + paddr: array of TPoint; i, pXUnit, pYUnit: integer; +begin + if Picture = nil then + Exit; + + BeginDraw; + if not (ssLeft in Shift) then + Picture.EraseMode := ermErase; + try + 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); + finally + Picture.EraseMode := ermNone; + EndDraw; + end; + InvalidatePictureRect(Rect(X1, Y1, X2, Y2)); +end; + +procedure TCustomPictureEdit.Mask(X1, Y1, X2, Y2: integer; Shift: TShiftState); +begin + if Picture = nil then + Exit; BeginDraw; try Picture.Mask.FillMode := mfXOR; - if ssLeft in Shift then Picture.Mask.FillMode := mfAdd; - if ssRight in Shift then Picture.Mask.FillMode := mfRemove; + if ssLeft in Shift then + Picture.Mask.FillMode := mfAdd; + if ssRight in Shift then + Picture.Mask.FillMode := mfRemove; case MaskTool of - mtEllipse: Picture.Mask.Ellipse(X1, Y1, X2, Y2); - mtRectangle: Picture.Mask.Rectangle(X1, Y1, X2, Y2); + mtEllipse: Picture.Mask.Ellipse(X1, Y1, X2, Y2); + mtRectangle: Picture.Mask.Rectangle(X1, Y1, X2, Y2); end; finally Picture.Mask.FillMode := mfAdd; @@ -927,7 +1092,8 @@ end; procedure TCustomPictureEdit.FlipHorizontally; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.FlipHorz; @@ -939,7 +1105,8 @@ end; procedure TCustomPictureEdit.FlipVertically; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.FlipVert; @@ -951,7 +1118,8 @@ end; procedure TCustomPictureEdit.Rotate90Clockwise; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.Rotate90; @@ -963,7 +1131,8 @@ end; procedure TCustomPictureEdit.Rotate180Clockwise; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.Rotate180; @@ -975,7 +1144,8 @@ end; procedure TCustomPictureEdit.Rotate270Clockwise; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.Rotate270; @@ -985,9 +1155,10 @@ begin UpdatePicture; end; -procedure TCustomPictureEdit.StretchTruncate(AWidth, AHeight: Integer); +procedure TCustomPictureEdit.StretchTruncate(AWidth, AHeight: integer); begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.StretchTrunc(AWidth, AHeight); @@ -997,10 +1168,11 @@ begin UpdatePicture; end; -procedure TCustomPictureEdit.StretchSmooth(AWidth, AHeight: Integer; +procedure TCustomPictureEdit.StretchSmooth(AWidth, AHeight: integer; Method: TSmoothMethod); begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.StretchSmooth(AWidth, AHeight, Method); @@ -1010,13 +1182,14 @@ begin UpdatePicture; end; -procedure TCustomPictureEdit.ResizePaper(AWidth, AHeight: Integer; +procedure TCustomPictureEdit.ResizePaper(AWidth, AHeight: integer; PicturePos: TPicturePos); var New: TPictureBitmap; - X, Y: Integer; + X, Y: integer; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try New := TPictureBitmap.Create(AWidth, AHeight); @@ -1025,15 +1198,17 @@ begin New.Fill(PaperColor); case PicturePos of - ppTopLeft, ppCenterLeft, ppBottomLeft: X := 0; - ppTopCenter, ppCentered, ppBottomCenter: X := Round((AWidth - Picture.Width) * 0.5); - ppTopRight, ppCenterRight, ppBottomRight: X := AWidth - Picture.Width; + ppTopLeft, ppCenterLeft, ppBottomLeft: X := 0; + ppTopCenter, ppCentered, ppBottomCenter: X := + Round((AWidth - Picture.Width) * 0.5); + ppTopRight, ppCenterRight, ppBottomRight: X := AWidth - Picture.Width; end; case PicturePos of - ppTopLeft, ppTopCenter, ppTopRight: Y := 0; - ppCenterLeft, ppCentered, ppCenterRight: Y := Round((AHeight - Picture.Height) * 0.5); - ppBottomLeft, ppBottomCenter, ppBottomRight: Y := AHeight - Picture.Height; + ppTopLeft, ppTopCenter, ppTopRight: Y := 0; + ppCenterLeft, ppCentered, ppCenterRight: Y := + Round((AHeight - Picture.Height) * 0.5); + ppBottomLeft, ppBottomCenter, ppBottomRight: Y := AHeight - Picture.Height; end; New.Draw(X, Y, Picture); New.Mask.Draw(X, Y, Picture.Mask); @@ -1053,11 +1228,13 @@ var New: TPictureBitmap; R: TRect; begin - if Picture = nil then Exit; -// R := Picture.Mask.GetMaskedRect; - if (Picture.Width = (R.Right - R.Left)) and - (Picture.Height = (R.Bottom - R.Top)) then Exit; - + if Picture = nil then + Exit; + // R := Picture.Mask.GetMaskedRect; + if (Picture.Width = (R.Right - R.Left)) and (Picture.Height = + (R.Bottom - R.Top)) then + Exit; + BeginDraw; try New := TPictureBitmap.Create(R.Right - R.Left, R.Bottom - R.Top); @@ -1077,7 +1254,8 @@ end; procedure TCustomPictureEdit.RemoveMask; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.Mask.Clear; @@ -1089,7 +1267,8 @@ end; procedure TCustomPictureEdit.InvertMask; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.Mask.Invert; @@ -1101,7 +1280,8 @@ end; procedure TCustomPictureEdit.Cut; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.CutToClipboard; @@ -1113,13 +1293,15 @@ end; procedure TCustomPictureEdit.Copy; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; Picture.CopyToClipboard; end; procedure TCustomPictureEdit.Paste; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try //Assert(True, 'Implement Paste'); @@ -1132,7 +1314,8 @@ end; procedure TCustomPictureEdit.Delete; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.Delete; @@ -1144,7 +1327,8 @@ end; procedure TCustomPictureEdit.SelectAll; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.Mask.ClearWhite; @@ -1156,7 +1340,8 @@ end; procedure TCustomPictureEdit.Invert; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.Invert; @@ -1168,7 +1353,8 @@ end; procedure TCustomPictureEdit.Grayscale; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.Grayscale; @@ -1180,7 +1366,8 @@ end; procedure TCustomPictureEdit.Disable; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; BeginDraw; try Picture.Disable; @@ -1192,8 +1379,9 @@ end; procedure TCustomPictureEdit.BeginDraw; begin - if Picture = nil then Exit; - + if Picture = nil then + Exit; + Picture.OutlineColor := OutlineColor; Picture.FillColor := FillColor; Picture.PaperColor := PaperColor; @@ -1205,7 +1393,8 @@ end; procedure TCustomPictureEdit.EndDraw; begin - if Picture = nil then Exit; + if Picture = nil then + Exit; FModified := True; Change; end; @@ -1218,4 +1407,3 @@ end; end. -