From 1747e6b114f5c4c43bc2bdacd1cada82fec53ab3 Mon Sep 17 00:00:00 2001 From: yangjixian Date: Sun, 13 Mar 2011 15:47:45 +0000 Subject: [PATCH] The rotate functions implemented now. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1530 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- applications/lazimageeditor/bmprgbgraph.pas | 10 +- .../lazimageeditor/lazimageeditor.lpi | 126 ++-- applications/lazimageeditor/main.lfm | 50 +- applications/lazimageeditor/main.lrs | 664 +++++++++--------- applications/lazimageeditor/main.pas | 509 ++++++++------ applications/lazimageeditor/rgbdrawutils.pas | 115 ++- 6 files changed, 803 insertions(+), 671 deletions(-) diff --git a/applications/lazimageeditor/bmprgbgraph.pas b/applications/lazimageeditor/bmprgbgraph.pas index 4e76d1720..15db1d302 100644 --- a/applications/lazimageeditor/bmprgbgraph.pas +++ b/applications/lazimageeditor/bmprgbgraph.pas @@ -379,31 +379,31 @@ end; procedure TRGB32Bitmap.FlipHorz; begin - inherited FlipHorz; + inherited; Mask.FlipHorz; end; procedure TRGB32Bitmap.FlipVert; begin - inherited FlipVert; + inherited; Mask.FlipVert; end; procedure TRGB32Bitmap.Rotate90; begin - inherited Rotate90; + inherited; Mask.Rotate90; end; procedure TRGB32Bitmap.Rotate180; begin - inherited Rotate180; + inherited; Mask.Rotate180; end; procedure TRGB32Bitmap.Rotate270; begin - inherited Rotate270; + inherited; Mask.Rotate270; end; diff --git a/applications/lazimageeditor/lazimageeditor.lpi b/applications/lazimageeditor/lazimageeditor.lpi index 98edbcd42..f95dcf84c 100644 --- a/applications/lazimageeditor/lazimageeditor.lpi +++ b/applications/lazimageeditor/lazimageeditor.lpi @@ -56,8 +56,8 @@ - - + + @@ -68,7 +68,7 @@ - + @@ -174,8 +174,8 @@ - - + + @@ -240,8 +240,8 @@ - - + + @@ -273,8 +273,8 @@ - - + + @@ -299,19 +299,19 @@ - - + + - + - - + + @@ -324,127 +324,123 @@ - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - diff --git a/applications/lazimageeditor/main.lfm b/applications/lazimageeditor/main.lfm index 5687e4935..2cd3a625f 100644 --- a/applications/lazimageeditor/main.lfm +++ b/applications/lazimageeditor/main.lfm @@ -1,11 +1,11 @@ object MainForm: TMainForm Left = 209 - Height = 631 + Height = 666 Top = 146 - Width = 897 + Width = 905 Caption = 'Lazarus Image Editor' - ClientHeight = 609 - ClientWidth = 897 + ClientHeight = 644 + ClientWidth = 905 Font.CharSet = GB2312_CHARSET Font.Height = -13 Font.Name = '微软雅黑' @@ -18,18 +18,18 @@ LCLVersion = '0.9.31' object PanelTools: TPanel Left = 0 - Height = 482 + Height = 517 Top = 105 Width = 40 Align = alLeft BevelOuter = bvNone - ClientHeight = 482 + ClientHeight = 517 ClientWidth = 40 ParentColor = False TabOrder = 0 object ToolBarTools: TToolBar Left = 0 - Height = 482 + Height = 517 Top = 0 Width = 40 Align = alLeft @@ -156,8 +156,8 @@ object StatusBar: TStatusBar Left = 0 Height = 22 - Top = 587 - Width = 897 + Top = 622 + Width = 905 Panels = < item Width = 250 @@ -182,19 +182,19 @@ SimplePanel = False end object PanelPallete: TPanel - Left = 822 - Height = 482 + Left = 830 + Height = 517 Top = 105 Width = 75 Align = alRight AutoSize = True BevelOuter = bvNone - ClientHeight = 482 + ClientHeight = 517 ClientWidth = 75 TabOrder = 1 object Palette: TColorPalette Left = 0 - Height = 482 + Height = 517 Top = 0 Width = 75 Align = alClient @@ -206,17 +206,17 @@ Left = 0 Height = 105 Top = 0 - Width = 897 + Width = 905 Align = alTop BevelOuter = bvNone ClientHeight = 105 - ClientWidth = 897 + ClientWidth = 905 TabOrder = 2 object Bevel1: TBevel Left = 0 Height = 2 Top = 69 - Width = 897 + Width = 905 Align = alTop Shape = bsBottomLine end @@ -224,7 +224,7 @@ Left = 0 Height = 2 Top = 33 - Width = 897 + Width = 905 Align = alTop Shape = bsBottomLine end @@ -232,7 +232,7 @@ Left = 0 Height = 33 Top = 0 - Width = 897 + Width = 905 ButtonHeight = 32 ButtonWidth = 36 Color = clBtnFace @@ -379,13 +379,13 @@ Left = 0 Height = 34 Top = 35 - Width = 897 + Width = 905 Align = alTop BorderSpacing.InnerBorder = 4 BorderSpacing.CellAlignVertical = ccaCenter BevelOuter = bvNone ClientHeight = 34 - ClientWidth = 897 + ClientWidth = 905 TabOrder = 1 object LabelFillOutline: TLabel Left = 103 @@ -421,7 +421,7 @@ ParentColor = False end object PanelColors: TPanel - Left = 685 + Left = 693 Height = 34 Top = 0 Width = 212 @@ -1009,11 +1009,11 @@ Left = 0 Height = 34 Top = 71 - Width = 897 + Width = 905 Align = alTop BevelOuter = bvNone ClientHeight = 34 - ClientWidth = 897 + ClientWidth = 905 TabOrder = 2 object LabelSize: TLabel Left = 0 @@ -1258,9 +1258,9 @@ end object PanelPictures: TPanel Left = 40 - Height = 482 + Height = 517 Top = 105 - Width = 782 + Width = 790 Align = alClient BevelOuter = bvLowered TabOrder = 3 diff --git a/applications/lazimageeditor/main.lrs b/applications/lazimageeditor/main.lrs index 518bdc631..0b0654325 100644 --- a/applications/lazimageeditor/main.lrs +++ b/applications/lazimageeditor/main.lrs @@ -1,139 +1,138 @@ +{ This is an automatically generated lazarus resource file } + LazarusResources.Add('TMainForm','FORMDATA',[ - 'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3#209#0#6'Height'#3'w'#2#3'Top'#3#146 - +#0#5'Width'#3#129#3#7'Caption'#6#20'Lazarus Image Editor'#12'ClientHeight'#3 - +'a'#2#11'ClientWidth'#3#129#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 + 'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3#209#0#6'Height'#3#154#2#3'Top'#3#146 + +#0#5'Width'#3#137#3#7'Caption'#6#20'Lazarus Image Editor'#12'ClientHeight'#3 + +#132#2#11'ClientWidth'#3#137#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 +#145#10'Font.Pitch'#7#10'fpVariable'#12'Font.Quality'#7#7'fqDraft'#4'Menu'#7 +#8'MainMenu'#12'OnCloseQuery'#7#14'FormCloseQuery'#8'OnCreate'#7#10'FormCrea' +'te'#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#6'0.9.31'#0#6'TPanel'#10'Panel' - +'Tools'#4'Left'#2#0#6'Height'#3#226#1#3'Top'#2'i'#5'Width'#2'('#5'Align'#7#6 - +'alLeft'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#226#1#11'ClientWidth' - +#2'('#11'ParentColor'#8#8'TabOrder'#2#0#0#8'TToolBar'#12'ToolBarTools'#4'Lef' - +'t'#2#0#6'Height'#3#226#1#3'Top'#2#0#5'Width'#2'('#5'Align'#7#6'alLeft'#12'B' - +'uttonHeight'#2'('#11'ButtonWidth'#2'('#7'Caption'#6#12'ToolBarTools'#21'Con' - +'straints.MinHeight'#3#146#1#6'Images'#7#14'ImageListTools'#6'Indent'#2#0#8 - +'TabOrder'#2#0#0#11'TToolButton'#9'ToolSpray'#4'Left'#2#0#4'Hint'#6#5'Spray' - +#3'Top'#3'j'#1#7'Grouped'#9#10'ImageIndex'#2#9#7'OnClick'#7#14'ToolSprayClic' - +'k'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolBu' - +'tton'#13'ToolFloodFill'#4'Left'#2#0#4'Hint'#6#10'Flood Fill'#3'Top'#3'B'#1#7 - +'Grouped'#9#10'ImageIndex'#2#8#7'OnClick'#7#18'ToolFloodFillClick'#14'Parent' - +'ShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#10'Too' - +'lEraser'#4'Left'#2#0#4'Hint'#6#15'Eraser/Replacer'#3'Top'#2'z'#7'Grouped'#9 - +#10'ImageIndex'#2#3#7'OnClick'#7#15'ToolEraserClick'#14'ParentShowHint'#8#8 - +'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#7'ToolPen'#4'Left'#2 - +#0#4'Hint'#6#3'Pen'#3'Top'#2'R'#7'Grouped'#9#10'ImageIndex'#2#2#7'OnClick'#7 - +#12'ToolPenClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0 - +#0#11'TToolButton'#13'ToolColorPick'#4'Left'#2#0#4'Hint'#6#10'Color Pick'#3 - +'Top'#2'*'#7'Grouped'#9#10'ImageIndex'#2#1#7'OnClick'#7#18'ToolColorPickClic' - +'k'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolBu' - +'tton'#8'ToolMask'#4'Left'#2#0#4'Hint'#6#4'Mask'#3'Top'#2#2#7'Grouped'#9#10 - +'ImageIndex'#2#0#7'OnClick'#7#13'ToolMaskClick'#14'ParentShowHint'#8#8'ShowH' - +'int'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#8'ToolLine'#4'Left'#2#0#4 - +'Hint'#6#4'Line'#3'Top'#3#162#0#4'Down'#9#7'Grouped'#9#10'ImageIndex'#2#4#7 - +'OnClick'#7#13'ToolLineClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8 - +'tbsCheck'#0#0#11'TToolButton'#13'ToolRectangle'#4'Left'#2#0#4'Hint'#6#7'Pol' - +'ygon'#3'Top'#3#202#0#7'Grouped'#9#10'ImageIndex'#2#5#7'OnClick'#7#18'ToolRe' - +'ctangleClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0 - +#11'TToolButton'#11'ToolPolygon'#4'Left'#2#0#4'Hint'#6#7'Ellipse'#3'Top'#3#26 - +#1#7'Grouped'#9#10'ImageIndex'#2#7#7'OnClick'#7#16'ToolPolygonClick'#14'Pare' - +'ntShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#11'T' - +'oolEllipse'#4'Left'#2#0#4'Hint'#6#25'Rectangle/Round rectangle'#3'Top'#3#242 - +#0#7'Grouped'#9#10'ImageIndex'#2#6#7'OnClick'#7#12'ToolEllClick'#14'ParentSh' - +'owHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#0#0#10'TStatusBar'#9'Sta' - +'tusBar'#4'Left'#2#0#6'Height'#2#22#3'Top'#3'K'#2#5'Width'#3#129#3#6'Panels' - +#14#1#5'Width'#3#250#0#0#1#9'Alignment'#7#8'taCenter'#5'Width'#2'P'#0#1#9'Al' - +'ignment'#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 - +'6'#3#6'Height'#3#226#1#3'Top'#2'i'#5'Width'#2'K'#5'Align'#7#7'alRight'#8'Au' - +'toSize'#9#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#226#1#11'ClientWidt' - +'h'#2'K'#8'TabOrder'#2#1#0#13'TColorPalette'#7'Palette'#4'Left'#2#0#6'Height' - +#3#226#1#3'Top'#2#0#5'Width'#2'K'#5'Align'#7#8'alClient'#11'ButtonWidth'#2#12 - +#12'ButtonHeight'#2#12#0#0#0#6'TPanel'#12'PanelToolBar'#4'Left'#2#0#6'Height' - +#2'i'#3'Top'#2#0#5'Width'#3#129#3#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvN' - +'one'#12'ClientHeight'#2'i'#11'ClientWidth'#3#129#3#8'TabOrder'#2#2#0#6'TBev' - +'el'#6'Bevel1'#4'Left'#2#0#6'Height'#2#2#3'Top'#2'E'#5'Width'#3#129#3#5'Alig' - +'n'#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#129#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'To' - +'p'#2#0#5'Width'#3#129#3#12'ButtonHeight'#2' '#11'ButtonWidth'#2'$'#5'Color' - +#7#9'clBtnFace'#11'EdgeBorders'#11#0#6'Images'#7#16'ImageListActions'#11'Par' - +'entColor'#8#8'TabOrder'#2#0#0#6'TLabel'#9'LabelZoom'#4'Left'#3#129#1#6'Heig' - +'ht'#2' '#3'Top'#2#0#5'Width'#2'('#7'Caption'#6#5'Zoom:'#21'Constraints.MinH' - +'eight'#2' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#11'TToolButton'#9 - +'ToolClose'#4'Left'#2'm'#3'Top'#2#0#6'Action'#7#9'FileClose'#14'ParentShowHi' - +'nt'#8#8'ShowHint'#9#0#0#11'TToolButton'#8'ToolSave'#4'Left'#2'I'#3'Top'#2#0 - +#6'Action'#7#8'FileSave'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButt' - ,'on'#8'ToolOpen'#4'Left'#2'%'#3'Top'#2#0#6'Action'#7#8'FileOpen'#14'ParentSh' - +'owHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#7'ToolNew'#4'Left'#2#1#3'Top'#2 - +#0#6'Action'#7#7'FileNew'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolBut' - +'ton'#11'ToolButton6'#4'Left'#3#145#0#3'Top'#2#0#5'Width'#2#8#7'Caption'#6#11 - +'ToolButton6'#5'Style'#7#12'tbsSeparator'#0#0#11'TToolButton'#7'ToolCut'#4'L' - +'eft'#3#233#0#3'Top'#2#0#6'Action'#7#7'EditCut'#14'ParentShowHint'#8#8'ShowH' - +'int'#9#0#0#11'TToolButton'#11'ToolButton8'#4'Left'#3#13#1#3'Top'#2#0#6'Acti' - +'on'#7#8'EditCopy'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11 - +'ToolButton9'#4'Left'#3'1'#1#3'Top'#2#0#6'Action'#7#9'EditPaste'#14'ParentSh' - +'owHint'#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'tbsSepa' - +'rator'#0#0#11'TToolButton'#12'ToolButton11'#4'Left'#3'U'#1#3'Top'#2#0#6'Act' - +'ion'#7#10'EditDelete'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton' - +#8'ToolUndo'#4'Left'#3#153#0#3'Top'#2#0#6'Action'#7#8'EditUndo'#14'ParentSho' - +'wHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11'ToolButton2'#4'Left'#3#225#0#3 - +'Top'#2#0#5'Width'#2#8#7'Caption'#6#11'ToolButton2'#5'Style'#7#12'tbsSeparat' - +'or'#0#0#11'TToolButton'#8'ToolRedo'#4'Left'#3#189#0#3'Top'#2#0#6'Action'#7#8 - +'EditRedo'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#6'TPanel'#9'PanelZoom'#4'L' - +'eft'#3#169#1#6'Height'#2' '#3'Top'#2#0#5'Width'#2'M'#10'BevelOuter'#7#6'bvN' - +'one'#12'ClientHeight'#2' '#11'ClientWidth'#2'M'#8'TabOrder'#2#0#0#9'TComboB' - +'ox'#12'ComboBoxZoom'#4'Left'#2#4#6'Height'#2#27#3'Top'#2#2#5'Width'#2'F'#7 - +'Anchors'#11#6'akLeft'#0#10'ItemHeight'#2#19#9'ItemIndex'#2#2#13'Items.Strin' - +'gs'#1#6#4'25 %'#6#4'50 %'#6#5'100 %'#6#5'200 %'#6#5'400 %'#6#5'800 %'#6#6'1' - +'000 %'#0#8'OnChange'#7#18'ComboBoxZoomChange'#13'OnEditingDone'#7#23'ComboB' - +'oxZoomEditingDone'#14'ParentShowHint'#8#8'TabOrder'#2#0#4'Text'#6#5'100 %'#0 - +#0#0#0#6'TPanel'#12'PanelOptions'#4'Left'#2#0#6'Height'#2'"'#3'Top'#2'#'#5'W' - +'idth'#3#129#3#5'Align'#7#5'alTop'#25'BorderSpacing.InnerBorder'#2#4#31'Bord' - +'erSpacing.CellAlignVertical'#7#9'ccaCenter'#10'BevelOuter'#7#6'bvNone'#12'C' - +'lientHeight'#2'"'#11'ClientWidth'#3#129#3#8'TabOrder'#2#1#0#6'TLabel'#16'La' - +'belFillOutline'#4'Left'#2'g'#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'H'#5'Alig' - +'n'#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'Height'#2'"'#3'Top'#2#0#5'Width'#2'*'#5'Align'#7#6'alLeft'#7'Ca' - +'ption'#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'Width'#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#173#2#6'Height'#2'"'#3'Top'#2#0#5'Width'#3 - +#212#0#5'Align'#7#7'alRight'#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4 - +'!BorderSpacing.CellAlignHorizontal'#7#10'ccaLeftTop'#31'BorderSpacing.CellA' - +'lignVertical'#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'L' - +'eft'#2#8#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'1'#5'Align'#7#7'alRight'#7'Ca' - +'ption'#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'Widt' - +'h'#2''''#5'Align'#7#7'alRight'#7'Caption'#6#6'Paper:'#6'Layout'#7#8'tlCente' - +'r'#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'#11'ParentColor'#8#8'T' - +'abOrder'#2#0#10'OnDblClick'#7#20'PanelOutlineDblClick'#0#0#6'TPanel'#9'Pane' - +'lFill'#4'Left'#2's'#6'Height'#2#22#3'Top'#2#6#5'Width'#2#20#5'Align'#7#7'al' - +'Right'#20'BorderSpacing.Around'#2#6#10'BevelInner'#7#9'bvLowered'#5'Color'#7 - +#7'clWhite'#11'ParentColor'#8#8'TabOrder'#2#1#10'OnDblClick'#7#17'PanelFillD' - +'blClick'#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'Bev' - +'elInner'#7#9'bvLowered'#5'Color'#7#7'clWhite'#11'ParentColor'#8#8'TabOrder' - +#2#2#10'OnDblClick'#7#18'PanelPaperDblClick'#0#0#0#6'TPanel'#16'PanelFillOut' - +'line'#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'TabOrder'#2#1#0#12'TSpeedButton'#15'ToolFillOutline'#4'Left'#2#4#6'Hei' - +'ght'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11#6'akLeft'#0#4'Down'#9#10'G' - +'lyph.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 + +'Tools'#4'Left'#2#0#6'Height'#3#5#2#3'Top'#2'i'#5'Width'#2'('#5'Align'#7#6'a' + +'lLeft'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#5#2#11'ClientWidth'#2 + +'('#11'ParentColor'#8#8'TabOrder'#2#0#0#8'TToolBar'#12'ToolBarTools'#4'Left' + +#2#0#6'Height'#3#5#2#3'Top'#2#0#5'Width'#2'('#5'Align'#7#6'alLeft'#12'Button' + +'Height'#2'('#11'ButtonWidth'#2'('#7'Caption'#6#12'ToolBarTools'#21'Constrai' + +'nts.MinHeight'#3#146#1#6'Images'#7#14'ImageListTools'#6'Indent'#2#0#8'TabOr' + +'der'#2#0#0#11'TToolButton'#9'ToolSpray'#4'Left'#2#0#4'Hint'#6#5'Spray'#3'To' + +'p'#3'j'#1#7'Grouped'#9#10'ImageIndex'#2#9#7'OnClick'#7#14'ToolSprayClick'#14 + +'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton' + +#13'ToolFloodFill'#4'Left'#2#0#4'Hint'#6#10'Flood Fill'#3'Top'#3'B'#1#7'Grou' + +'ped'#9#10'ImageIndex'#2#8#7'OnClick'#7#18'ToolFloodFillClick'#14'ParentShow' + +'Hint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#10'ToolEra' + +'ser'#4'Left'#2#0#4'Hint'#6#15'Eraser/Replacer'#3'Top'#2'z'#7'Grouped'#9#10 + +'ImageIndex'#2#3#7'OnClick'#7#15'ToolEraserClick'#14'ParentShowHint'#8#8'Sho' + +'wHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#7'ToolPen'#4'Left'#2#0#4 + +'Hint'#6#3'Pen'#3'Top'#2'R'#7'Grouped'#9#10'ImageIndex'#2#2#7'OnClick'#7#12 + +'ToolPenClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0 + +#11'TToolButton'#13'ToolColorPick'#4'Left'#2#0#4'Hint'#6#10'Color Pick'#3'To' + +'p'#2'*'#7'Grouped'#9#10'ImageIndex'#2#1#7'OnClick'#7#18'ToolColorPickClick' + +#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButto' + +'n'#8'ToolMask'#4'Left'#2#0#4'Hint'#6#4'Mask'#3'Top'#2#2#7'Grouped'#9#10'Ima' + +'geIndex'#2#0#7'OnClick'#7#13'ToolMaskClick'#14'ParentShowHint'#8#8'ShowHint' + +#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#8'ToolLine'#4'Left'#2#0#4'Hint' + +#6#4'Line'#3'Top'#3#162#0#4'Down'#9#7'Grouped'#9#10'ImageIndex'#2#4#7'OnClic' + +'k'#7#13'ToolLineClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsC' + +'heck'#0#0#11'TToolButton'#13'ToolRectangle'#4'Left'#2#0#4'Hint'#6#7'Polygon' + +#3'Top'#3#202#0#7'Grouped'#9#10'ImageIndex'#2#5#7'OnClick'#7#18'ToolRectangl' + +'eClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TT' + +'oolButton'#11'ToolPolygon'#4'Left'#2#0#4'Hint'#6#7'Ellipse'#3'Top'#3#26#1#7 + +'Grouped'#9#10'ImageIndex'#2#7#7'OnClick'#7#16'ToolPolygonClick'#14'ParentSh' + +'owHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#11'ToolE' + +'llipse'#4'Left'#2#0#4'Hint'#6#25'Rectangle/Round rectangle'#3'Top'#3#242#0#7 + +'Grouped'#9#10'ImageIndex'#2#6#7'OnClick'#7#12'ToolEllClick'#14'ParentShowHi' + +'nt'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#0#0#10'TStatusBar'#9'StatusB' + +'ar'#4'Left'#2#0#6'Height'#2#22#3'Top'#3'n'#2#5'Width'#3#137#3#6'Panels'#14#1 + +#5'Width'#3#250#0#0#1#9'Alignment'#7#8'taCenter'#5'Width'#2'P'#0#1#9'Alignme' + +'nt'#7#8'taCenter'#5'Width'#2'P'#0#1#5'Width'#2'P'#0#1#5'Width'#2'P'#0#1#5'W' + +'idth'#2'2'#0#0#11'SimplePanel'#8#0#0#6'TPanel'#12'PanelPallete'#4'Left'#3'>' + +#3#6'Height'#3#5#2#3'Top'#2'i'#5'Width'#2'K'#5'Align'#7#7'alRight'#8'AutoSiz' + +'e'#9#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#5#2#11'ClientWidth'#2'K' + +#8'TabOrder'#2#1#0#13'TColorPalette'#7'Palette'#4'Left'#2#0#6'Height'#3#5#2#3 + +'Top'#2#0#5'Width'#2'K'#5'Align'#7#8'alClient'#11'ButtonWidth'#2#12#12'Butto' + +'nHeight'#2#12#0#0#0#6'TPanel'#12'PanelToolBar'#4'Left'#2#0#6'Height'#2'i'#3 + +'Top'#2#0#5'Width'#3#137#3#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12 + +'ClientHeight'#2'i'#11'ClientWidth'#3#137#3#8'TabOrder'#2#2#0#6'TBevel'#6'Be' + +'vel1'#4'Left'#2#0#6'Height'#2#2#3'Top'#2'E'#5'Width'#3#137#3#5'Align'#7#5'a' + +'lTop'#5'Shape'#7#12'bsBottomLine'#0#0#6'TBevel'#6'Bevel2'#4'Left'#2#0#6'Hei' + +'ght'#2#2#3'Top'#2'!'#5'Width'#3#137#3#5'Align'#7#5'alTop'#5'Shape'#7#12'bsB' + +'ottomLine'#0#0#8'TToolBar'#7'ToolBar'#4'Left'#2#0#6'Height'#2'!'#3'Top'#2#0 + +#5'Width'#3#137#3#12'ButtonHeight'#2' '#11'ButtonWidth'#2'$'#5'Color'#7#9'cl' + +'BtnFace'#11'EdgeBorders'#11#0#6'Images'#7#16'ImageListActions'#11'ParentCol' + +'or'#8#8'TabOrder'#2#0#0#6'TLabel'#9'LabelZoom'#4'Left'#3#129#1#6'Height'#2 + +' '#3'Top'#2#0#5'Width'#2'('#7'Caption'#6#5'Zoom:'#21'Constraints.MinHeight' + +#2' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#11'TToolButton'#9'ToolCl' + +'ose'#4'Left'#2'm'#3'Top'#2#0#6'Action'#7#9'FileClose'#14'ParentShowHint'#8#8 + +'ShowHint'#9#0#0#11'TToolButton'#8'ToolSave'#4'Left'#2'I'#3'Top'#2#0#6'Actio' + +'n'#7#8'FileSave'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#8'T' + ,'oolOpen'#4'Left'#2'%'#3'Top'#2#0#6'Action'#7#8'FileOpen'#14'ParentShowHint' + +#8#8'ShowHint'#9#0#0#11'TToolButton'#7'ToolNew'#4'Left'#2#1#3'Top'#2#0#6'Act' + +'ion'#7#7'FileNew'#14'ParentShowHint'#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'ToolBu' + +'tton6'#5'Style'#7#12'tbsSeparator'#0#0#11'TToolButton'#7'ToolCut'#4'Left'#3 + +#233#0#3'Top'#2#0#6'Action'#7#7'EditCut'#14'ParentShowHint'#8#8'ShowHint'#9#0 + +#0#11'TToolButton'#11'ToolButton8'#4'Left'#3#13#1#3'Top'#2#0#6'Action'#7#8'E' + +'ditCopy'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11'ToolButt' + +'on9'#4'Left'#3'1'#1#3'Top'#2#0#6'Action'#7#9'EditPaste'#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#3'Top'#2#0#6'Action'#7#10'E' + +'ditDelete'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#8'ToolUnd' + +'o'#4'Left'#3#153#0#3'Top'#2#0#6'Action'#7#8'EditUndo'#14'ParentShowHint'#8#8 + +'ShowHint'#9#0#0#11'TToolButton'#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'ToolRedo'#4'Left'#3#189#0#3'Top'#2#0#6'Action'#7#8'EditRedo' + +#14'ParentShowHint'#8#8'ShowHint'#9#0#0#6'TPanel'#9'PanelZoom'#4'Left'#3#169 + +#1#6'Height'#2' '#3'Top'#2#0#5'Width'#2'M'#10'BevelOuter'#7#6'bvNone'#12'Cli' + +'entHeight'#2' '#11'ClientWidth'#2'M'#8'TabOrder'#2#0#0#9'TComboBox'#12'Comb' + +'oBoxZoom'#4'Left'#2#4#6'Height'#2#27#3'Top'#2#2#5'Width'#2'F'#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'O' + +'nChange'#7#18'ComboBoxZoomChange'#13'OnEditingDone'#7#23'ComboBoxZoomEditin' + +'gDone'#14'ParentShowHint'#8#8'TabOrder'#2#0#4'Text'#6#5'100 %'#0#0#0#0#6'TP' + +'anel'#12'PanelOptions'#4'Left'#2#0#6'Height'#2'"'#3'Top'#2'#'#5'Width'#3#137 + +#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#137#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#181#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'#11'ParentColor'#8#8'TabOrd' + +'er'#2#0#10'OnDblClick'#7#20'PanelOutlineDblClick'#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'clW' + +'hite'#11'ParentColor'#8#8'TabOrder'#2#1#10'OnDblClick'#7#17'PanelFillDblCli' + +'ck'#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'BevelInne' + +'r'#7#9'bvLowered'#5'Color'#7#7'clWhite'#11'ParentColor'#8#8'TabOrder'#2#2#10 + +'OnDblClick'#7#18'PanelPaperDblClick'#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 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#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 @@ -176,92 +175,98 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#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 + +#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 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#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'OnClick'#7#20'ToolFillOutlineClick'#0#0#12'TSpeedButto' - +'n'#11'ToolOutline'#4'Left'#2#29#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'A' - +'nchors'#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#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 + +#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 +#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#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#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#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#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#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#255#0#255#255#255#0#255#255#255#0#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#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#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#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 +#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#10'Grou' - +'pIndex'#2#1#9'NumGlyphs'#2#0#7'OnClick'#7#16'ToolOutlineClick'#0#0#12'TSpee' - +'dButton'#8'ToolFill'#4'Left'#2'6'#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7 - +'Anchors'#11#6'akLeft'#0#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#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#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#10'GroupIndex'#2#1 + +#9'NumGlyphs'#2#0#7'OnClick'#7#16'ToolOutlineClick'#0#0#12'TSpeedButton'#8'T' + +'oolFill'#4'Left'#2'6'#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11 + +#6'akLeft'#0#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#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#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#128#128#128 + +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 + +#128#128#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#255#255#255#255#255#255#255#255#255 @@ -309,29 +314,23 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#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#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#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#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#10'GroupIndex'#2#1#9'NumGlyphs'#2#0 - ,#7'OnClick'#7#13'ToolFillClick'#0#0#0#6'TPanel'#10'PanelShape'#4'Left'#2'*'#6 - +'Height'#2'"'#3'Top'#2#0#5'Width'#2'='#5'Align'#7#6'alLeft'#10'BevelOuter'#7 - +#6'bvNone'#12'ClientHeight'#2'"'#11'ClientWidth'#2'='#8'TabOrder'#2#2#0#12'T' - +'SpeedButton'#13'ToolRectShape'#4'Left'#2#7#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 + +#255#255#255#255#255#255#255#10'GroupIndex'#2#1#9'NumGlyphs'#2#0#7'OnClick'#7 + ,#13'ToolFillClick'#0#0#0#6'TPanel'#10'PanelShape'#4'Left'#2'*'#6'Height'#2'"' + +#3'Top'#2#0#5'Width'#2'='#5'Align'#7#6'alLeft'#10'BevelOuter'#7#6'bvNone'#12 + +'ClientHeight'#2'"'#11'ClientWidth'#2'='#8'TabOrder'#2#2#0#12'TSpeedButton' + +#13'ToolRectShape'#4'Left'#2#7#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anc' + +'hors'#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#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 + +#0#0#0#0#0#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 @@ -374,97 +373,97 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#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 + +#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#0#0#0#0#0#0#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#18'ToolRectShapeClick'#0#0#12'TSpeedButton'#15'ToolCircleShape'#4'Lef' - +'t'#2#31#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#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#216#216 - ,#216#0#132#132#132#0'CCC'#255'((('#255' '#255' '#255'((('#255'CCC'#255 - +#132#132#132#0#216#216#216#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#133#133#133#0#25#25#25#255#1#1#1#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#1#1#1#255#25#25#25#255#133#133#133#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#251 - +#251#251#0'PPP'#255#1#1#1#255#3#3#3#255'+++'#255'WWW'#255'jjj'#255'ooo'#255 - +'ooo'#255'jjj'#255'WWW'#255'+++'#255#3#3#3#255#1#1#1#255'PPP'#255#251#251#251 - +#0#255#255#255#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP'#255#0#0#0#255 - +#9#9#9#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'}}}'#255'[[['#255#9#9#9#255 - +#0#0#0#255'PPP'#255#251#251#251#0#255#255#255#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#127#127#255#127#127#127 - +#255#127#127#127#255#127#127#127#255'hhh'#255#9#9#9#255#1#1#1#255#133#133#133 - +#0#255#255#255#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#127#255#127#127#127#255'[[['#255#3#3#3#255#25#25#25#255#216#216#216#0 - +#132#132#132#0#1#1#1#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'CCC'#255#0#0#0#255'WWW' + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#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'OnClick'#7#18'Too' + +'lRectShapeClick'#0#0#12'TSpeedButton'#15'ToolCircleShape'#4'Left'#2#31#6'He' + +'ight'#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#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#216#216#216#0#132 + ,#132#132#0'CCC'#255'((('#255' '#255' '#255'((('#255'CCC'#255#132#132#132 + +#0#216#216#216#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#133#133 + +#133#0#25#25#25#255#1#1#1#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#1#1#1#255#25#25#25#255#133#133#133#0#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP' + +#255#1#1#1#255#3#3#3#255'+++'#255'WWW'#255'jjj'#255'ooo'#255'ooo'#255'jjj' + +#255'WWW'#255'+++'#255#3#3#3#255#1#1#1#255'PPP'#255#251#251#251#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP'#255#0#0#0#255#9#9#9#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'}}}'#255'[[['#255#9#9#9#255#0#0#0#255'P' + +'PP'#255#251#251#251#0#255#255#255#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#127#127#255#127#127#127#255#127#127 + +#127#255#127#127#127#255'hhh'#255#9#9#9#255#1#1#1#255#133#133#133#0#255#255 + +#255#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#127#255 - +'WWW'#255#0#0#0#255'CCC'#255'((('#255#0#0#0#255'jjj'#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#127#255#127#127#127#255'jjj'#255#0#0#0#255'(((' - +#255' '#255#0#0#0#255'ooo'#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#127#255#127#127#127#255'ooo'#255#0#0#0#255' '#255' '#255#0#0#0#255 - +'ooo'#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#127#255#127#127#127 - +#255'ooo'#255#0#0#0#255' '#255'((('#255#0#0#0#255'jjj'#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#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#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#127#127#255'[[['#255#3#3#3#255#25#25#25#255#216#216#216#0#132#132#132#0 + +#1#1#1#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#1#1#1#255#132#132#132#0'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#127#255#127#127#127#255'WWW'#255#0#0#0#255 + +'CCC'#255'((('#255#0#0#0#255'jjj'#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#127#255#127#127#127#255'jjj'#255#0#0#0#255'((('#255' '#255#0#0#0 + +#255'ooo'#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#127#255#127#127 + +#127#255'ooo'#255#0#0#0#255' '#255' '#255#0#0#0#255'ooo'#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#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'ooo'#255#0#0#0 + +#255' '#255'((('#255#0#0#0#255'jjj'#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'hhh'#255#9#9#9#255#1#1#1#255#133#133#133#0#255#255#255#0#255#255#255#0 - +#251#251#251#0'PPP'#255#0#0#0#255#9#9#9#255'[[['#255'}}}'#255#127#127#127#255 + +#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#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#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 +#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127 - +#255'}}}'#255'[[['#255#9#9#9#255#0#0#0#255'PPP'#255#251#251#251#0#255#255#255 - +#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP'#255#1#1#1#255#3#3#3#255'++' - +'+'#255'WWW'#255'jjj'#255'ooo'#255'ooo'#255'jjj'#255'WWW'#255'+++'#255#3#3#3 - +#255#1#1#1#255'PPP'#255#251#251#251#0#255#255#255#0#255#255#255#0#255#255#255 - +#0#255#255#255#0#255#255#255#0#255#255#255#0#133#133#133#0#25#25#25#255#1#1#1 - +#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#1#1#1#255#25 - ,#25#25#255#133#133#133#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#216#216#216#0#132#132#132#0'CCC'#255'((('#255' '#255' '#255'((('#255'CC' - +'C'#255#132#132#132#0#216#216#216#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#10'GroupIndex'#2#1#9'NumGlyphs'#2#0#7'OnClick'#7 - +#20'ToolCircleShapeClick'#0#0#0#6'TPanel'#13'PanelMaskTool'#4'Left'#3'E'#1#6 - +'Height'#2'"'#3'Top'#2#0#5'Width'#2'V'#5'Align'#7#6'alLeft'#10'BevelOuter'#7 - +#6'bvNone'#12'ClientHeight'#2'"'#11'ClientWidth'#2'V'#8'TabOrder'#2#3#0#12'T' - +'SpeedButton'#17'ToolMaskRectangle'#4'Left'#2#7#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 + +#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 + +#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255'hhh'#255#9#9#9 + +#255#1#1#1#255#133#133#133#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP' + +#255#0#0#0#255#9#9#9#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'}}}'#255'[[' + +'['#255#9#9#9#255#0#0#0#255'PPP'#255#251#251#251#0#255#255#255#0#255#255#255 + +#0#255#255#255#0#251#251#251#0'PPP'#255#1#1#1#255#3#3#3#255'+++'#255'WWW'#255 + +'jjj'#255'ooo'#255'ooo'#255'jjj'#255'WWW'#255'+++'#255#3#3#3#255#1#1#1#255'P' + +'PP'#255#251#251#251#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#133#133#133#0#25#25#25#255#1#1#1#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#1#1#1#255#25#25#25#255#133 + ,#133#133#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#216#216#216#0 + +#132#132#132#0'CCC'#255'((('#255' '#255' '#255'((('#255'CCC'#255#132#132 + +#132#0#216#216#216#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#10'GroupIndex'#2#1#9'NumGlyphs'#2#0#7'OnClick'#7#20'ToolCircl' + +'eShapeClick'#0#0#0#6'TPanel'#13'PanelMaskTool'#4'Left'#3'E'#1#6'Height'#2'"' + +#3'Top'#2#0#5'Width'#2'V'#5'Align'#7#6'alLeft'#10'BevelOuter'#7#6'bvNone'#12 + +'ClientHeight'#2'"'#11'ClientWidth'#2'V'#8'TabOrder'#2#3#0#12'TSpeedButton' + +#17'ToolMaskRectangle'#4'Left'#2#7#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#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 - +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#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 + +#0#0#0#0#0#0#0#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 @@ -507,78 +506,81 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#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 + +#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#0#0#0#0#0#0#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'O' - ,'nClick'#7#22'ToolMaskRectangleClick'#0#0#12'TSpeedButton'#15'ToolMaskEllips' - +'e'#4'Left'#2#31#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11#6'akL' - +'eft'#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#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#216#216#216#0#132#132#132#0'CCC'#255'((('#255' '#255' '#255'((('#255'CC' - +'C'#255#132#132#132#0#216#216#216#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 - +#255#255#0#133#133#133#0#25#25#25#255#1#1#1#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#1#1#1#255#25#25#25#255#133#133#133#0#255#255 - +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 - +#251#251#251#0'PPP'#255#1#1#1#255#3#3#3#255'+++'#255'WWW'#255'jjj'#255'ooo' - +#255'ooo'#255'jjj'#255'WWW'#255'+++'#255#3#3#3#255#1#1#1#255'PPP'#255#251#251 - +#251#0#255#255#255#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP'#255#0#0#0 - +#255#9#9#9#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'}}}'#255'[[['#255#9#9#9 - +#255#0#0#0#255'PPP'#255#251#251#251#0#255#255#255#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#127#127#255#127#127 - +#127#255#127#127#127#255#127#127#127#255'hhh'#255#9#9#9#255#1#1#1#255#133#133 - +#133#0#255#255#255#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 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#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'OnClick'#7#22 + ,'ToolMaskRectangleClick'#0#0#12'TSpeedButton'#15'ToolMaskEllipse'#4'Left'#2 + +#31#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11#6'akLeft'#0#10'Gly' + +'ph.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#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#216#216#216#0 + +#132#132#132#0'CCC'#255'((('#255' '#255' '#255'((('#255'CCC'#255#132#132 + +#132#0#216#216#216#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#133 + +#133#133#0#25#25#25#255#1#1#1#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#1#1#1#255#25#25#25#255#133#133#133#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#251#251#251#0 + +'PPP'#255#1#1#1#255#3#3#3#255'+++'#255'WWW'#255'jjj'#255'ooo'#255'ooo'#255'j' + +'jj'#255'WWW'#255'+++'#255#3#3#3#255#1#1#1#255'PPP'#255#251#251#251#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP'#255#0#0#0#255#9#9#9#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'}}}'#255'[[['#255#9#9#9#255#0#0#0 + +#255'PPP'#255#251#251#251#0#255#255#255#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#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#132#132#132#0#1#1#1#255'+++'#255'}}}'#255#127#127#127#255#127#127#127#255 + +#127#127#127#255#127#127#127#255'hhh'#255#9#9#9#255#1#1#1#255#133#133#133#0 + +#255#255#255#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 - +#127#255'}}}'#255'+++'#255#1#1#1#255#132#132#132#0'CCC'#255#0#0#0#255'WWW' + +#127#255#127#127#127#255'[[['#255#3#3#3#255#25#25#25#255#216#216#216#0#132 + +#132#132#0#1#1#1#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'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#127#255#127#127#127#255'WWW' + +#255#0#0#0#255'CCC'#255'((('#255#0#0#0#255'jjj'#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#127#255#127#127#127#255'jjj'#255#0#0#0#255'((('#255 + +' '#255#0#0#0#255'ooo'#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 + +#127#255#127#127#127#255'ooo'#255#0#0#0#255' '#255' '#255#0#0#0#255'ooo' +#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#127#255#127#127#127#255 - +'WWW'#255#0#0#0#255'CCC'#255'((('#255#0#0#0#255'jjj'#255#127#127#127#255#127 + +'ooo'#255#0#0#0#255' '#255'((('#255#0#0#0#255'jjj'#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#127#255#127#127#127#255'jjj'#255#0#0#0#255'(((' - +#255' '#255#0#0#0#255'ooo'#255#127#127#127#255#127#127#127#255#127#127#127 + +#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#127#255#127#127#127#255'ooo'#255#0#0#0#255' '#255' '#255#0#0#0#255 - +'ooo'#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 +#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'ooo'#255#0#0#0#255' '#255'((('#255#0#0#0#255'jjj'#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#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'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'[[['#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#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#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#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#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 + +'hhh'#255#9#9#9#255#1#1#1#255#133#133#133#0#255#255#255#0#255#255#255#0#251 + +#251#251#0'PPP'#255#0#0#0#255#9#9#9#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'hhh'#255#9#9#9#255#1#1#1#255#133#133#133#0#255#255#255#0#255#255#255#0 - +#251#251#251#0'PPP'#255#0#0#0#255#9#9#9#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'}}}'#255'[[['#255#9#9#9#255#0#0#0#255'PPP'#255#251#251#251#0#255#255#255 - ,#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP'#255#1#1#1#255#3#3#3#255'++' - +'+'#255'WWW'#255'jjj'#255'ooo'#255'ooo'#255'jjj'#255'WWW'#255'+++'#255#3#3#3 - +#255#1#1#1#255'PPP'#255#251#251#251#0#255#255#255#0#255#255#255#0#255#255#255 - +#0#255#255#255#0#255#255#255#0#255#255#255#0#133#133#133#0#25#25#25#255#1#1#1 + +'}}}'#255'[[['#255#9#9#9#255#0#0#0#255'PPP'#255#251#251#251#0#255#255#255#0 + ,#255#255#255#0#255#255#255#0#251#251#251#0'PPP'#255#1#1#1#255#3#3#3#255'+++' + +#255'WWW'#255'jjj'#255'ooo'#255'ooo'#255'jjj'#255'WWW'#255'+++'#255#3#3#3#255 + +#1#1#1#255'PPP'#255#251#251#251#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#133#133#133#0#25#25#25#255#1#1#1 +#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#1#1#1#255#25 +#25#25#255#133#133#133#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 @@ -662,8 +664,8 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#10'Gr' +'oupIndex'#2#1#9'NumGlyphs'#2#0#7'OnClick'#7#22'ToolMaskFloodFillClick'#0#0#0 +#0#6'TPanel'#16'PanelToolOptions'#4'Left'#2#0#6'Height'#2'"'#3'Top'#2'G'#5'W' - +'idth'#3#129#3#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHeigh' - +'t'#2'"'#11'ClientWidth'#3#129#3#8'TabOrder'#2#2#0#6'TLabel'#9'LabelSize'#4 + +'idth'#3#137#3#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHeigh' + +'t'#2'"'#11'ClientWidth'#3#137#3#8'TabOrder'#2#2#0#6'TLabel'#9'LabelSize'#4 +'Left'#2#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#2#28#5'Align'#7#6'alLeft'#7'Ca' +'ption'#6#5'Size:'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11 +'ParentColor'#8#0#0#6'TLabel'#12'LabelDensity'#4'Left'#3#234#0#6'Height'#2'"' @@ -719,10 +721,10 @@ LazarusResources.Add('TMainForm','FORMDATA',[ +#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' +#7#16'checkFuzzyChange'#8'TabOrder'#2#0#0#0#0#0#0#6'TPanel'#13'PanelPictures' - +#4'Left'#2'('#6'Height'#3#226#1#3'Top'#2'i'#5'Width'#3#14#3#5'Align'#7#8'alC' - +'lient'#10'BevelOuter'#7#9'bvLowered'#8'TabOrder'#2#3#0#0#9'TMainMenu'#8'Mai' - +'nMenu'#6'Images'#7#16'ImageListActions'#4'left'#2'r'#3'top'#2'~'#0#9'TMenuI' - +'tem'#12'MenuItemFile'#7'Caption'#6#5'&File'#0#9'TMenuItem'#11'MenuItemNew'#6 + +#4'Left'#2'('#6'Height'#3#5#2#3'Top'#2'i'#5'Width'#3#22#3#5'Align'#7#8'alCli' + +'ent'#10'BevelOuter'#7#9'bvLowered'#8'TabOrder'#2#3#0#0#9'TMainMenu'#8'MainM' + +'enu'#6'Images'#7#16'ImageListActions'#4'left'#2'r'#3'top'#2'~'#0#9'TMenuIte' + +'m'#12'MenuItemFile'#7'Caption'#6#5'&File'#0#9'TMenuItem'#11'MenuItemNew'#6 +'Action'#7#7'FileNew'#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#255#255#255#0#255#255#255#0#0#0#0#31#0#0#0#254#4#4#4#251 diff --git a/applications/lazimageeditor/main.pas b/applications/lazimageeditor/main.pas index e197bbe3a..5ff3b8980 100644 --- a/applications/lazimageeditor/main.pas +++ b/applications/lazimageeditor/main.pas @@ -17,7 +17,7 @@ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * * *************************************************************************** - + Author: Tom Gregorovic Abstract: @@ -243,8 +243,7 @@ type procedure MenuItemResizePaperClick(Sender: TObject); procedure PaletteColorMouseMove(Sender: TObject; AColor: TColor; Shift: TShiftState); - procedure PaletteColorPick(Sender: TObject; AColor: TColor; - Shift: TShiftState); + procedure PaletteColorPick(Sender: TObject; AColor: TColor; Shift: TShiftState); procedure PanelFillDblClick(Sender: TObject); procedure PanelOutlineDblClick(Sender: TObject); procedure PanelPaperDblClick(Sender: TObject); @@ -274,7 +273,7 @@ type procedure ToolRectShapeClick(Sender: TObject); procedure ToolEraserClick(Sender: TObject); procedure ToolSprayClick(Sender: TObject); - procedure PictureMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); + procedure PictureMouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer); procedure PictureColorChange(Sender: TObject); procedure PictureFileNameChange(Sender: TObject); procedure PictureSizeChange(Sender: TObject); @@ -286,7 +285,7 @@ type function GetActivePicture: TPictureBitmap; function GetActivePictureEdit: TPictureEdit; function GetActivePicturePage: TPicturePage; - + procedure UpdateToolSettings; procedure SelectTool(Tool: TPictureEditTool); procedure ChangeTool(Tool: TPictureEditTool); @@ -296,11 +295,11 @@ type property ActivePicture: TPictureBitmap read GetActivePicture; property ActivePicturePage: TPicturePage read GetActivePicturePage; property ActivePictureEdit: TPictureEdit read GetActivePictureEdit; - end; - + end; + TToolSetting = (tsFillAndOutline, tsShape, tsMaskTools, tsSize, tsDensity, tsRoundness, tsTolerance); - + TToolSettings = set of TToolSetting; var @@ -310,17 +309,17 @@ implementation uses Test, IconStrConsts; -procedure SetControlsEnabled(AControl: TControl; AEnabled: Boolean); +procedure SetControlsEnabled(AControl: TControl; AEnabled: boolean); var AWinControl: TWinControl; - I: Integer; + I: integer; begin AControl.Enabled := AEnabled; if AControl is TWinControl then begin AWinControl := AControl as TWinControl; for I := 0 to Pred(AWinControl.ControlCount) do - SetControlsEnabled(AWinControl.Controls[I], AEnabled); + SetControlsEnabled(AWinControl.Controls[I], AEnabled); end; end; @@ -333,13 +332,15 @@ end; procedure TMainForm.MenuItemResizeClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ResizeDialogForm.ShowDialog(ActivePicturePage); end; procedure TMainForm.MenuItemResizePaperClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ResizePaperDialogForm.ShowDialog(ActivePicturePage); end; @@ -354,43 +355,44 @@ procedure TMainForm.PicturePageChange(Sender: TObject); begin UpdatePictureToolsEnabled; - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; with ActivePictureEdit do begin PanelOutline.Color := OutlineColor; PanelFill.Color := FillColor; PanelPaper.Color := PaperColor; - + UpDownDensity.Position := Round(RandomDensity * 100); UpDownSize.Position := Size; case Shape of - psRect: ToolRectShape.Down := True; - psCircle: ToolCircleShape.Down := True; + psRect: ToolRectShape.Down := True; + psCircle: ToolCircleShape.Down := True; end; - + { case FillAndOutline of dmFillAndOutline: ToolFillOutline.Down := True; dmOutline: ToolOutline.Down := True; dmFill: ToolFill.Down := True; end; } - + case MaskTool of - mtRectangle: ToolMaskRectangle.Down := True; - mtEllipse: ToolmaskEllipse.Down := True; - mtFloodFill: ToolMaskFloodFill.Down := True; + mtRectangle: ToolMaskRectangle.Down := True; + mtEllipse: ToolmaskEllipse.Down := True; + mtFloodFill: ToolMaskFloodFill.Down := True; end; - + UpDownRoundness.Position := RectangleRoundness; UpDownTolerance.Position := Round(FloodFillTolerance * 100); - + ComboBoxZoom.Text := Format('%d %%', [Round(Zoom * 100)]); - + ViewShowGrid.Checked := poShowGrid in ActivePictureEdit.Options; ViewShowMask.Checked := poShowMask in ActivePictureEdit.Options; SelectTool(Tool); - + PictureSizeChange(nil); PictureFileNameChange(nil); end; @@ -408,171 +410,198 @@ end; procedure TMainForm.PicturePageCloseQuery(Sender: TObject; var CanClose: boolean); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; CanClose := True; - + if ActivePictureEdit.Modified then begin - case MessageDlg(Application.Title, - Format(lieSaveChanges, [ActivePicturePage.Caption]), mtWarning, - mbYesNoCancel, 0) of - mrYes: - begin - ActivePicturePage.Save; - CanClose := not ActivePictureEdit.Modified; - end; - mrCancel: CanClose := False; + case MessageDlg(Application.Title, Format(lieSaveChanges, + [ActivePicturePage.Caption]), mtWarning, mbYesNoCancel, 0) of + mrYes: + begin + ActivePicturePage.Save; + CanClose := not ActivePictureEdit.Modified; + end; + mrCancel: CanClose := False; end; end; end; procedure TMainForm.Rotate180Execute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.Rotate180Clockwise; end; procedure TMainForm.Rotate270Execute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.Rotate270Clockwise; end; procedure TMainForm.Rotate90Execute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.Rotate90Clockwise; end; procedure TMainForm.spinFillAlphaChange(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.FillAlpha := spinFillAlpha.Value; end; procedure TMainForm.ToolCircleShapeClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.Shape := psCircle; end; procedure TMainForm.ToolColorPickClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ChangeTool(ptColorPick); end; procedure TMainForm.ToolEllClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ChangeTool(ptEllipse); end; procedure TMainForm.ToolFillClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; -// ActivePictureEdit.FillAndOutline := dmFill; + if not Pictures.CanEdit then + Exit; + // ActivePictureEdit.FillAndOutline := dmFill; end; procedure TMainForm.ToolFillOutlineClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; -// ActivePictureEdit.FillAndOutline := dmFillAndOutline; + if not Pictures.CanEdit then + Exit; + // ActivePictureEdit.FillAndOutline := dmFillAndOutline; end; procedure TMainForm.ToolFloodFillClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ChangeTool(ptFloodFill); end; procedure TMainForm.ToolLineClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ChangeTool(ptLine); end; procedure TMainForm.ToolMaskClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ChangeTool(ptMask); end; procedure TMainForm.ToolMaskEllipseClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.MaskTool := mtEllipse; end; procedure TMainForm.ToolMaskFloodFillClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.MaskTool := mtFloodFill; end; procedure TMainForm.ToolMaskRectangleClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.MaskTool := mtRectangle; end; procedure TMainForm.ToolOutlineClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; -// ActivePictureEdit.FillAndOutline := dmOutline; + if not Pictures.CanEdit then + Exit; + // ActivePictureEdit.FillAndOutline := dmOutline; end; procedure TMainForm.ToolPenClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ChangeTool(ptPen); end; procedure TMainForm.ToolPolygonClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ChangeTool(ptPolygon); end; procedure TMainForm.ToolRectangleClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ChangeTool(ptRectangle); end; procedure TMainForm.ToolRectShapeClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.Shape := psRect; end; procedure TMainForm.ToolEraserClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ChangeTool(ptEraser); end; procedure TMainForm.ToolSprayClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ChangeTool(ptSpray); end; -procedure TMainForm.PictureMouseMove(Sender: TObject; Shift: TShiftState; X, - Y: Integer); +procedure TMainForm.PictureMouseMove(Sender: TObject; Shift: TShiftState; + X, Y: integer); var - DX, DY: Integer; + DX, DY: integer; begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; StatusBar.Panels[2].Text := Format('%3.d : %3.d', [X, Y]); - + DX := ActivePictureEdit.EndPos.X - ActivePictureEdit.StartPos.X; DY := ActivePictureEdit.EndPos.Y - ActivePictureEdit.StartPos.Y; - if DX >= 0 then Inc(DX) - else Dec(DX); - if DY >= 0 then Inc(DY) - else Dec(DY); - + if DX >= 0 then + Inc(DX) + else + Dec(DX); + if DY >= 0 then + Inc(DY) + else + Dec(DY); + StatusBar.Panels[3].Text := Format('%3.d x %3.d', [DX, DY]); StatusBar.Panels[4].Text := ColorToString(ActivePicture.GetColor(X, Y)); @@ -580,7 +609,8 @@ end; procedure TMainForm.PictureColorChange(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; with ActivePictureEdit do begin PanelOutline.Color := OutlineColor; @@ -591,21 +621,23 @@ end; procedure TMainForm.PictureFileNameChange(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; StatusBar.Panels[0].Text := ActivePicturePage.Filename; end; procedure TMainForm.PictureSizeChange(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; with ActivePictureEdit do - StatusBar.Panels[1].Text := Format('%d x %d', - [Picture.Width, Picture.Height]); + StatusBar.Panels[1].Text := Format('%d x %d', [Picture.Width, Picture.Height]); end; procedure TMainForm.ViewShowGridExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; if ViewShowGrid.Checked then ActivePictureEdit.Options := ActivePictureEdit.Options + [poShowGrid] else @@ -616,7 +648,8 @@ end; procedure TMainForm.ViewShowMaskExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; if ViewShowMask.Checked then ActivePictureEdit.Options := ActivePictureEdit.Options + [poShowMask] else @@ -627,24 +660,30 @@ end; procedure TMainForm.ViewShowPreviewExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; end; procedure TMainForm.PaletteColorPick(Sender: TObject; AColor: TColor; Shift: TShiftState); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; with ActivePictureEdit do begin - if ssLeft in Shift then OutlineColor := AColor; - if ssRight in Shift then FillColor := AColor; - if ssMiddle in Shift then PaperColor := AColor; + if ssLeft in Shift then + OutlineColor := AColor; + if ssRight in Shift then + FillColor := AColor; + if ssMiddle in Shift then + PaperColor := AColor; end; end; procedure TMainForm.PanelFillDblClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ColorDialog.Color := ActivePictureEdit.FillColor; if ColorDialog.Execute then begin @@ -654,7 +693,8 @@ end; procedure TMainForm.PanelOutlineDblClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ColorDialog.Color := ActivePictureEdit.OutlineColor; if ColorDialog.Execute then begin @@ -664,7 +704,8 @@ end; procedure TMainForm.PanelPaperDblClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ColorDialog.Color := ActivePictureEdit.PaperColor; if ColorDialog.Execute then begin @@ -702,23 +743,23 @@ end; procedure TMainForm.UpdatePictureToolsEnabled; var - AValue: Boolean; + AValue: boolean; begin AValue := Pictures.CanEdit; - + SetControlsEnabled(PanelZoom, AValue); SetControlsEnabled(PanelOptions, AValue); SetControlsEnabled(PanelToolOptions, AValue); SetControlsEnabled(ToolBarTools, AValue); SetControlsEnabled(Palette, AValue); - + FileNew.Enabled := True; FileOpen.Enabled := True; FileSave.Enabled := AValue and ActivePictureEdit.Modified; FileSaveAs.Enabled := AValue; FileExportAsLRS.Enabled := AValue; FileClose.Enabled := AValue; - + EditUndo.Enabled := False;//AValue; EditRedo.Enabled := False;//AValue; EditCopy.Enabled := AValue; @@ -726,26 +767,26 @@ begin EditPaste.Enabled := False;//AValue; EditDelete.Enabled := AValue; EditSelectAll.Enabled := AValue; - + PictureResize.Enabled := AValue; PictureResizePaper.Enabled := AValue; PictureClipPaperToMask.Enabled := AValue; - + FlipHorizontally.Enabled := AValue; FlipVertically.Enabled := AValue; - + Rotate90.Enabled := AValue; Rotate180.Enabled := AValue; Rotate270.Enabled := AValue; RotateCustom.Enabled := AValue; - + ColorsInvert.Enabled := AValue; ColorsGrayscale.Enabled := AValue; ColorsDisable.Enabled := AVAlue; - + ViewShowGrid.Enabled := AValue; ViewShowMask.Enabled := AValue; - + ToolBar.Invalidate; ToolBarTools.Invalidate; end; @@ -770,40 +811,41 @@ procedure TMainForm.UpdateToolSettings; var Settings: TToolSettings; begin - if not Pictures.CanEdit then Exit; - + if not Pictures.CanEdit then + Exit; + case ActivePictureEdit.Tool of - ptColorPick: Settings := []; - ptMask: Settings := [tsMaskTools, tsTolerance]; - ptLine, ptPen: Settings := []; - ptRectangle: Settings := [tsFillAndOutline, tsRoundness]; - ptEllipse: Settings := [tsFillAndOutline]; - ptPolygon: Settings := [tsFillAndOutline]; - ptFloodFill: Settings := [tsTolerance]; - ptEraser: Settings := [tsShape, tsSize]; - ptSpray: Settings := [tsShape, tsSize, tsDensity]; + ptColorPick: Settings := []; + ptMask: Settings := [tsMaskTools, tsTolerance]; + ptLine, ptPen: Settings := []; + ptRectangle: Settings := [tsFillAndOutline, tsRoundness]; + ptEllipse: Settings := [tsFillAndOutline]; + ptPolygon: Settings := [tsFillAndOutline]; + ptFloodFill: Settings := [tsTolerance]; + ptEraser: Settings := [tsShape, tsSize]; + ptSpray: Settings := [tsShape, tsSize, tsDensity]; end; - + // PanelToolBar/PanelToolOptions PanelSize.Enabled := tsSize in Settings; LabelSize.Enabled := tsSize in Settings; - + PanelDensity.Enabled := tsDensity in Settings; LabelDensity.Enabled := tsDensity in Settings; - + PanelRoundness.Enabled := tsRoundness in Settings; LabelRoundness.Enabled := tsRoundness in Settings; - + PanelTolerance.Enabled := tsTolerance in Settings; LabelTolerance.Enabled := tsTolerance in Settings; // PanelToolbar/PanelOptions PanelShape.Enabled := tsShape in Settings; LabelShape.Enabled := tsShape in Settings; - + PanelFillOutline.Enabled := tsFillAndOutline in Settings; LabelFillOutline.Enabled := tsFillAndOutline in Settings; - + PanelMaskTool.Enabled := tsMaskTools in Settings; LabelMaskTool.Enabled := tsMaskTools in Settings; end; @@ -825,11 +867,11 @@ begin UpdatePictureToolsEnabled; UpdateToolSettings; - + Palette.LoadPalette('default.pal'); - + // Main Form - Caption:=lieMain; + Caption := lieMain; // Menus MenuItemFile.Caption := lieMenuFile; @@ -841,94 +883,94 @@ begin // Actions FileNew.Caption := lieFileNew; - FileOpen.Caption:=lieFileOpen; - FileSave.Caption:=lieFileSave; - FileSaveAs.Caption:=lieFileSaveAs; - FileExportAsLRS.Caption:=lieFileExportAsLRS; - FileClose.Caption:=lieFileClose; - Rotate90.Caption:=lieRotate90; - Rotate180.Caption:=lieRotate180; - Rotate270.Caption:=lieRotate270; - RotateCustom.Caption:=lieRotateCustom; - FlipVertically.Caption:=lieFlipVertically; - FlipHorizontally.Caption:=lieFlipHorizontally; - PictureResizePaper.Caption:=liePictureResizePaper; - PictureResize.Caption:=liePictureResize; - ColorsGrayscale.Caption:=lieColorsGrayscale; - ColorsInvert.Caption:=lieColorsInvert; - ColorsDisable.Caption:=lieColorsDisable; - ViewShowMask.Caption:=lieViewShowMask; - ViewShowGrid.Caption:=lieViewShowGrid; - MaskInvert.Caption:=lieMaskInvert; - MaskRemove.Caption:=lieMaskRemove; - EditCopy.Caption:=lieEditCopy; - EditCut.Caption:=lieEditCut; - EditDelete.Caption:=lieEditDelete; - EditPaste.Caption:=lieEditPaste; - EditRedo.Caption:=lieEditRedo; - EditSelectAll.Caption:=lieEditSelectAll; - EditUndo.Caption:=lieEditUndo; + FileOpen.Caption := lieFileOpen; + FileSave.Caption := lieFileSave; + FileSaveAs.Caption := lieFileSaveAs; + FileExportAsLRS.Caption := lieFileExportAsLRS; + FileClose.Caption := lieFileClose; + Rotate90.Caption := lieRotate90; + Rotate180.Caption := lieRotate180; + Rotate270.Caption := lieRotate270; + RotateCustom.Caption := lieRotateCustom; + FlipVertically.Caption := lieFlipVertically; + FlipHorizontally.Caption := lieFlipHorizontally; + PictureResizePaper.Caption := liePictureResizePaper; + PictureResize.Caption := liePictureResize; + ColorsGrayscale.Caption := lieColorsGrayscale; + ColorsInvert.Caption := lieColorsInvert; + ColorsDisable.Caption := lieColorsDisable; + ViewShowMask.Caption := lieViewShowMask; + ViewShowGrid.Caption := lieViewShowGrid; + MaskInvert.Caption := lieMaskInvert; + MaskRemove.Caption := lieMaskRemove; + EditCopy.Caption := lieEditCopy; + EditCut.Caption := lieEditCut; + EditDelete.Caption := lieEditDelete; + EditPaste.Caption := lieEditPaste; + EditRedo.Caption := lieEditRedo; + EditSelectAll.Caption := lieEditSelectAll; + EditUndo.Caption := lieEditUndo; // Hints for Actions FileNew.Hint := lieHintFileNew; - FileOpen.Hint:=lieHintFileOpen; - FileSave.Hint:=lieHintFileSave; - FileSaveAs.Hint:=lieHintFileSaveAs; - FileExportAsLRS.Hint:=lieHintFileExportAsLRS; - FileClose.Hint:=lieHintFileClose; - Rotate90.Hint:=lieHintRotate90; - Rotate180.Hint:=lieHintRotate180; - Rotate270.Hint:=lieHintRotate270; - RotateCustom.Hint:=lieHintRotateCustom; - FlipVertically.Hint:=lieHintFlipVertically; - FlipHorizontally.Hint:=lieHintFlipHorizontally; - PictureResizePaper.Hint:=lieHintPictureResizePaper; - PictureResize.Hint:=lieHintPictureResize; - ColorsGrayscale.Hint:=lieHintColorsGrayscale; - ColorsInvert.Hint:=lieHintColorsInvert; - ColorsDisable.Hint:=lieHintColorsDisable; - ViewShowMask.Hint:=lieHintViewShowMask; - ViewShowGrid.Hint:=lieHintViewShowGrid; - MaskInvert.Hint:=lieHintMaskInvert; - MaskRemove.Hint:=lieHintMaskRemove; - EditCopy.Hint:=lieHintEditCopy; - EditCut.Hint:=lieHintEditCut; - EditDelete.Hint:=lieHintEditDelete; - EditPaste.Hint:=lieHintEditPaste; - EditRedo.Hint:=lieHintEditRedo; - EditSelectAll.Hint:=lieHintEditSelectAll; - EditUndo.Hint:=lieHintEditUndo; + FileOpen.Hint := lieHintFileOpen; + FileSave.Hint := lieHintFileSave; + FileSaveAs.Hint := lieHintFileSaveAs; + FileExportAsLRS.Hint := lieHintFileExportAsLRS; + FileClose.Hint := lieHintFileClose; + Rotate90.Hint := lieHintRotate90; + Rotate180.Hint := lieHintRotate180; + Rotate270.Hint := lieHintRotate270; + RotateCustom.Hint := lieHintRotateCustom; + FlipVertically.Hint := lieHintFlipVertically; + FlipHorizontally.Hint := lieHintFlipHorizontally; + PictureResizePaper.Hint := lieHintPictureResizePaper; + PictureResize.Hint := lieHintPictureResize; + ColorsGrayscale.Hint := lieHintColorsGrayscale; + ColorsInvert.Hint := lieHintColorsInvert; + ColorsDisable.Hint := lieHintColorsDisable; + ViewShowMask.Hint := lieHintViewShowMask; + ViewShowGrid.Hint := lieHintViewShowGrid; + MaskInvert.Hint := lieHintMaskInvert; + MaskRemove.Hint := lieHintMaskRemove; + EditCopy.Hint := lieHintEditCopy; + EditCut.Hint := lieHintEditCut; + EditDelete.Hint := lieHintEditDelete; + EditPaste.Hint := lieHintEditPaste; + EditRedo.Hint := lieHintEditRedo; + EditSelectAll.Hint := lieHintEditSelectAll; + EditUndo.Hint := lieHintEditUndo; //Labels - LabelZoom.Caption:=lieLabelZoom; - LabelShape.Caption:=lieLabelShape; - LabelFillOutline.Caption:=lieLabelFillOutline; - LabelMaskTool.Caption:=lieLabelMaskTool; - LabelOutline.Caption:=lieLabelOutline; - LabelFill.Caption:=lieLabelFill; - LabelPaper.Caption:=lieLabelPaper; - LabelSize.Caption:=lieLabelSize; - LabelRoundness.Caption:=lieLabelRoundness; - LabelDensity.Caption:=lieLabelDensity; - LabelTolerance.Caption:=lieLabelTolerance; + LabelZoom.Caption := lieLabelZoom; + LabelShape.Caption := lieLabelShape; + LabelFillOutline.Caption := lieLabelFillOutline; + LabelMaskTool.Caption := lieLabelMaskTool; + LabelOutline.Caption := lieLabelOutline; + LabelFill.Caption := lieLabelFill; + LabelPaper.Caption := lieLabelPaper; + LabelSize.Caption := lieLabelSize; + LabelRoundness.Caption := lieLabelRoundness; + LabelDensity.Caption := lieLabelDensity; + LabelTolerance.Caption := lieLabelTolerance; //Hints for Tools - ToolSpray.Hint:=lieHintToolSpray; - ToolFloodFill.Hint:=lieHintToolFloodFill; - ToolEraser.Hint:=lieHintToolEraser; - ToolPen.Hint:=lieHintToolPen; - ToolColorPick.Hint:=lieHintToolColorPick; - ToolMask.Hint:=lieHintToolMask; - ToolLine.Hint:=lieHintToolLine; - ToolRectangle.Hint:=lieHintToolPolygon; - ToolPolygon.Hint:=lieHintToolEllipse; - ToolEllipse.Hint:=lieHintToolRectangle; + ToolSpray.Hint := lieHintToolSpray; + ToolFloodFill.Hint := lieHintToolFloodFill; + ToolEraser.Hint := lieHintToolEraser; + ToolPen.Hint := lieHintToolPen; + ToolColorPick.Hint := lieHintToolColorPick; + ToolMask.Hint := lieHintToolMask; + ToolLine.Hint := lieHintToolLine; + ToolRectangle.Hint := lieHintToolPolygon; + ToolPolygon.Hint := lieHintToolEllipse; + ToolEllipse.Hint := lieHintToolRectangle; //File Dialogs - ColorDialog.Title:=lieColorDialog; - OpenPictureDialog.Title:=lieOpenPictureDialog; - SavePictureDialog.Title:=lieSavePictureDialog; - ExportResourceDialog.Title:=lieExportResourceDialog; + ColorDialog.Title := lieColorDialog; + OpenPictureDialog.Title := lieOpenPictureDialog; + SavePictureDialog.Title := lieSavePictureDialog; + ExportResourceDialog.Title := lieExportResourceDialog; end; procedure TMainForm.FormShow(Sender: TObject); @@ -940,13 +982,15 @@ end; procedure TMainForm.MaskInvertExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.InvertMask; end; procedure TMainForm.MaskRemoveExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.RemoveMask; end; @@ -962,13 +1006,14 @@ end; procedure TMainForm.MenuItemClipPaperToMaskClick(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.ClipPaperToMask; end; procedure TMainForm.FileNewExecute(Sender: TObject); begin - if NewDialogForm.ShowModal = mrOK then + if NewDialogForm.ShowModal = mrOk then begin with NewDialogForm do Pictures.New(UpDownWidth.Position, UpDownHeight.Position, @@ -978,7 +1023,7 @@ end; procedure TMainForm.FileOpenExecute(Sender: TObject); var - I: Integer; + I: integer; begin if OpenPictureDialog.Execute then begin @@ -997,7 +1042,7 @@ end; procedure TMainForm.FileExportAsLRSExecute(Sender: TObject); var - Value: String; + Value: string; begin if ExportResourceDialog.Execute then begin @@ -1017,13 +1062,15 @@ end; procedure TMainForm.FlipHorizontallyExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.FlipHorizontally; end; procedure TMainForm.FlipVerticallyExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.FlipVertically; end; @@ -1040,41 +1087,47 @@ end; procedure TMainForm.ComboBoxZoomChange(Sender: TObject); var - V, E: Integer; - S: String; + V, E: integer; + S: string; begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; if Pos('%', ComboBoxZoom.Text) > 0 then S := Trim(Copy(ComboBoxZoom.Text, 1, Pos('%', ComboBoxZoom.Text) - 1)) else S := Trim(ComboBoxZoom.Text); - + Val(S, V, E); - if V <= 0 then V := 100; + if V <= 0 then + V := 100; ActivePictureEdit.Zoom := V / 100; end; procedure TMainForm.EditCopyExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.Copy; end; procedure TMainForm.EditCutExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.Cut; end; procedure TMainForm.EditDeleteExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.Delete; end; procedure TMainForm.EditDensityChange(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.RandomDensity := UpDownDensity.Position / 100; end; @@ -1085,56 +1138,65 @@ end; procedure TMainForm.EditRoundnessChange(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.RectangleRoundness := UpDownRoundness.Position; end; procedure TMainForm.EditSelectAllExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.SelectAll; end; procedure TMainForm.ColorsInvertExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.Invert; end; procedure TMainForm.ComboBoxZoomEditingDone(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ComboBoxZoomChange(nil); ComboBoxZoom.Text := Format('%d %%', [Round(ActivePictureEdit.Zoom * 100)]); end; procedure TMainForm.ColorsGrayscaleExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.Grayscale; end; procedure TMainForm.ColorsDisableExecute(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.Disable; end; procedure TMainForm.checkFuzzyChange(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.Fuzzy := checkFuzzy.Checked; end; procedure TMainForm.EditSizeChange(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.Size := UpDownSize.Position; end; procedure TMainForm.EditToleranceChange(Sender: TObject); begin - if not Pictures.CanEdit then Exit; + if not Pictures.CanEdit then + Exit; ActivePictureEdit.FloodFillTolerance := UpDownTolerance.Position / 100; end; @@ -1145,6 +1207,3 @@ initialization end. - - - diff --git a/applications/lazimageeditor/rgbdrawutils.pas b/applications/lazimageeditor/rgbdrawutils.pas index 89f664a79..d332ac24f 100644 --- a/applications/lazimageeditor/rgbdrawutils.pas +++ b/applications/lazimageeditor/rgbdrawutils.pas @@ -1,4 +1,4 @@ -unit rgbdrawutils; +unit RGBDrawUtils; {$mode objfpc}{$H+} @@ -31,7 +31,8 @@ type public constructor Create; override; destructor Destroy; override; - procedure ApplyScanLine; + procedure SetScanLineValue; + procedure Assign(Source: TPersistent); override; procedure Clear; virtual; procedure ClearWhite; virtual; procedure Invert; virtual; @@ -49,6 +50,46 @@ type implementation +procedure LazBMPRotate90(const aBitmap: TCustomRGBBitmapCore; IsTurnRight: boolean); +var + i, j: integer; + rowIn, rowOut: PRGBTripleArray; + Bmp: TCustomRGBBitmapCore; + Width, Height: integer; + IntfImg1, IntfImg2: TLazIntfImage; + ImgHandle, ImgMaskHandle: HBitmap; +begin + Bmp := TCustomRGBBitmapCore.Create; + Bmp.Width := aBitmap.Height; + Bmp.Height := aBitmap.Width; + Bmp.PixelFormat := pf24bit; + IntfImg1 := TLazIntfImage.Create(0, 0); + IntfImg1.LoadFromBitmap(Bmp.Handle, Bmp.MaskHandle); + IntfImg2 := TLazIntfImage.Create(0, 0); + IntfImg2.LoadFromBitmap(aBitmap.Handle, aBitmap.MaskHandle); + Width := aBitmap.Width - 1; + Height := aBitmap.Height - 1; + for j := 0 to Height do + begin + rowIn := IntfImg2.GetDataLineStart(j); + for i := 0 to Width do + begin + rowOut := IntfImg1.GetDataLineStart(i); + if IsTurnRight then + rowOut^[Height - j] := rowIn^[i] + else + rowOut^[j] := rowIn^[Width - i]; + end; + end; + IntfImg1.CreateBitmaps(ImgHandle, ImgMaskHandle, False); + Bmp.Handle := ImgHandle; + Bmp.MaskHandle := ImgMaskHandle; + IntfImg1.Free; + IntfImg2.Free; + aBitmap.Assign(Bmp); + Bmp.Free; +end; + procedure BMPRotate90(const Bitmap: TCustomRGBBitmapCore); var i, j: integer; @@ -68,12 +109,12 @@ begin for i := 0 to Width do begin rowOut := Bmp.ScanLine[i]; - // Inc(rowOut, Height - j); - rowOut^[i * (Height - j)] := rowIn^[i]; - // Inc(rowIn); + // Inc(rowOut, Height - j); + rowOut^[j] := rowIn^[i]; + // Inc(rowIn); end; end; - Bmp.ApplyScanLine; + Bmp.SetScanLineValue; Bitmap.Assign(Bmp); end; @@ -101,7 +142,7 @@ begin Inc(rowIn); end; end; - Bmp.ApplyScanLine; + Bmp.SetScanLineValue; Bitmap.Assign(Bmp); end; @@ -129,7 +170,7 @@ begin Inc(rowIn); end; end; - Bmp.ApplyScanLine; + Bmp.SetScanLineValue; Bitmap.Assign(Bmp); end; @@ -252,7 +293,7 @@ begin end; end; end; - Result.ApplyScanLine; + Result.SetScanLineValue; end; procedure DrawSamePixel(ABitmap: TCustomRGBBitmapCore; Value: integer); @@ -267,13 +308,14 @@ begin LScan := ABitmap.Scanline[i]; for j := 0 to ABitmap.Width - 1 do begin - LNew.rgbtBlue := Value; //LNew.rgbtBlue - Value; - LNew.rgbtGreen := Value; //LNew.rgbtGreen - Value; - LNew.rgbtRed := Value; //LNew.rgbtRed - Value; - LScan^[j] := LNew; + LNew := LScan^[j]; + LScan^[j].rgbtBlue := LNew.rgbtBlue; + LScan^[j].rgbtGreen := LNew.rgbtGreen; + LScan^[j].rgbtRed := LNew.rgbtRed; + //LScan^[j] := LNew; end; end; - ABitmap.ApplyScanLine; + ABitmap.SetScanLineValue; end; constructor TCustomRGBBitmapCore.Create; @@ -297,7 +339,7 @@ begin Result := FIntfImg.GetDataLineStart(Row); end; -procedure TCustomRGBBitmapCore.ApplyScanLine; +procedure TCustomRGBBitmapCore.SetScanLineValue; var TmpBmp: TBitmap; ImgHandle, ImgMaskHandle: HBitmap; @@ -308,8 +350,14 @@ begin TmpBmp.Handle := ImgHandle; TmpBmp.MaskHandle := ImgMaskHandle; Empty; - Canvas.Draw(0, 0, TmpBmp); + //Canvas.Draw(0, 0, TmpBmp); + Assign(TmpBmp); TmpBmp.Free; +end; + +procedure TCustomRGBBitmapCore.Assign(Source: TPersistent); +begin + inherited; FIntfImg.LoadFromBitmap(Handle, MaskHandle); end; @@ -381,19 +429,46 @@ begin end; procedure TCustomRGBBitmapCore.Rotate90; +var + tmp: TCustomRGBBitmapCore; begin - //DrawSamePixel(Self, 240); - BMPRotate90(Self); + tmp := TCustomRGBBitmapCore.Create; + tmp.Width := Width; + tmp.Height := Height; + tmp.Canvas.Draw(0, 0, Self); + LazBMPRotate90(tmp, True); + Self.Width := tmp.Width; + Self.Height := tmp.Height; + Canvas.Draw(0, 0, tmp); end; procedure TCustomRGBBitmapCore.Rotate180; +var + tmp: TCustomRGBBitmapCore; begin - RotateBitmap(Self, 180, clWhite); + tmp := TCustomRGBBitmapCore.Create; + tmp.Width := Width; + tmp.Height := Height; + tmp.Canvas.Draw(0, 0, Self); + LazBMPRotate90(tmp, True); + LazBMPRotate90(tmp, True); + Self.Width := tmp.Width; + Self.Height := tmp.Height; + Canvas.Draw(0, 0, tmp); end; procedure TCustomRGBBitmapCore.Rotate270; +var + tmp: TCustomRGBBitmapCore; begin - RotateBitmap(Self, 270, clWhite); + tmp := TCustomRGBBitmapCore.Create; + tmp.Width := Width; + tmp.Height := Height; + tmp.Canvas.Draw(0, 0, Self); + LazBMPRotate90(tmp, False); + Self.Width := tmp.Width; + Self.Height := tmp.Height; + Canvas.Draw(0, 0, tmp); end; procedure TCustomRGBBitmapCore.FillEllipse(X1, Y1, X2, Y2: integer);