The rotate functions implemented now.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1530 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
yangjixian
2011-03-13 15:47:45 +00:00
parent ef16a00e01
commit 1747e6b114
6 changed files with 803 additions and 671 deletions

View File

@ -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;

View File

@ -56,8 +56,8 @@
<UnitName Value="Main"/>
<EditorIndex Value="0"/>
<WindowIndex Value="0"/>
<TopLine Value="426"/>
<CursorPos X="28" Y="444"/>
<TopLine Value="445"/>
<CursorPos X="26" Y="449"/>
<UsageCount Value="53"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
@ -68,7 +68,7 @@
<EditorIndex Value="2"/>
<WindowIndex Value="0"/>
<TopLine Value="915"/>
<CursorPos X="16" Y="934"/>
<CursorPos X="21" Y="934"/>
<UsageCount Value="23"/>
<Loaded Value="True"/>
</Unit2>
@ -174,8 +174,8 @@
<UnitName Value="PictureManager"/>
<EditorIndex Value="1"/>
<WindowIndex Value="0"/>
<TopLine Value="7"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<CursorPos X="78" Y="5"/>
<UsageCount Value="24"/>
<Loaded Value="True"/>
</Unit13>
@ -240,8 +240,8 @@
<UnitName Value="BmpRGBTypes"/>
<EditorIndex Value="3"/>
<WindowIndex Value="0"/>
<TopLine Value="367"/>
<CursorPos X="12" Y="386"/>
<TopLine Value="370"/>
<CursorPos X="34" Y="384"/>
<UsageCount Value="24"/>
<Loaded Value="True"/>
</Unit21>
@ -273,8 +273,8 @@
<UnitName Value="BmpRGBUtils"/>
<EditorIndex Value="5"/>
<WindowIndex Value="0"/>
<TopLine Value="42"/>
<CursorPos X="53" Y="59"/>
<TopLine Value="1"/>
<CursorPos X="72" Y="5"/>
<UsageCount Value="19"/>
<Loaded Value="True"/>
</Unit25>
@ -299,19 +299,19 @@
<UnitName Value="BmpRGBGraph"/>
<EditorIndex Value="6"/>
<WindowIndex Value="0"/>
<TopLine Value="375"/>
<CursorPos X="20" Y="394"/>
<TopLine Value="378"/>
<CursorPos X="47" Y="394"/>
<UsageCount Value="15"/>
<Loaded Value="True"/>
</Unit28>
<Unit29>
<Filename Value="rgbdrawutils.pas"/>
<UnitName Value="rgbdrawutils"/>
<UnitName Value="RGBDrawUtils"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="4"/>
<WindowIndex Value="0"/>
<TopLine Value="50"/>
<CursorPos X="25" Y="72"/>
<TopLine Value="414"/>
<CursorPos X="22" Y="440"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit29>
@ -324,127 +324,123 @@
<UsageCount Value="11"/>
</Unit30>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<JumpHistory Count="29" HistoryIndex="28">
<Position1>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="70" Column="12" TopLine="71"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="333" Column="40" TopLine="314"/>
</Position1>
<Position2>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="94" Column="46" TopLine="78"/>
<Filename Value="main.pas"/>
<Caret Line="449" Column="26" TopLine="445"/>
</Position2>
<Position3>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="95" Column="20" TopLine="78"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="177" Column="32" TopLine="161"/>
</Position3>
<Position4>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="265" Column="7" TopLine="240"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="934" Column="17" TopLine="918"/>
</Position4>
<Position5>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="213" Column="22" TopLine="197"/>
<Filename Value="bmprgbgraph.pas"/>
<Caret Line="130" Column="22" TopLine="114"/>
</Position5>
<Position6>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="200" Column="1" TopLine="170"/>
<Filename Value="bmprgbtypes.pas"/>
<Caret Line="115" Column="17" TopLine="99"/>
</Position6>
<Position7>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="49" Column="1" TopLine="34"/>
<Caret Line="41" Column="23" TopLine="25"/>
</Position7>
<Position8>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="56" Column="18" TopLine="51"/>
<Caret Line="53" Column="25" TopLine="39"/>
</Position8>
<Position9>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="316" Column="1" TopLine="285"/>
<Caret Line="93" Column="22" TopLine="67"/>
</Position9>
<Position10>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="60" Column="33" TopLine="44"/>
<Caret Line="196" Column="16" TopLine="170"/>
</Position10>
<Position11>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="91" Column="23" TopLine="82"/>
<Caret Line="439" Column="15" TopLine="417"/>
</Position11>
<Position12>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="78" Column="1" TopLine="35"/>
<Caret Line="433" Column="45" TopLine="420"/>
</Position12>
<Position13>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="388" Column="23" TopLine="370"/>
<Caret Line="9" Column="74" TopLine="1"/>
</Position13>
<Position14>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="56" Column="28" TopLine="54"/>
<Caret Line="41" Column="23" TopLine="15"/>
</Position14>
<Position15>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="62" Column="48" TopLine="40"/>
<Caret Line="53" Column="25" TopLine="27"/>
</Position15>
<Position16>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="152" Column="21" TopLine="126"/>
<Caret Line="93" Column="22" TopLine="67"/>
</Position16>
<Position17>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="155" Column="13" TopLine="129"/>
<Caret Line="196" Column="16" TopLine="170"/>
</Position17>
<Position18>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="157" Column="22" TopLine="131"/>
<Caret Line="2" Column="82" TopLine="1"/>
</Position18>
<Position19>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="159" Column="19" TopLine="133"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="5" Column="82" TopLine="1"/>
</Position19>
<Position20>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="184" Column="33" TopLine="158"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="177" Column="23" TopLine="151"/>
</Position20>
<Position21>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="264" Column="45" TopLine="242"/>
<Filename Value="picturectrls.pas"/>
<Caret Line="929" Column="38" TopLine="915"/>
</Position21>
<Position22>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="387" Column="9" TopLine="371"/>
<Filename Value="bmprgbtypes.pas"/>
<Caret Line="4" Column="96" TopLine="1"/>
</Position22>
<Position23>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="406" Column="1" TopLine="375"/>
<Filename Value="bmprgbtypes.pas"/>
<Caret Line="105" Column="58" TopLine="89"/>
</Position23>
<Position24>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="387" Column="11" TopLine="371"/>
<Filename Value="bmprgbtypes.pas"/>
<Caret Line="115" Column="23" TopLine="89"/>
</Position24>
<Position25>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="73" Column="17" TopLine="49"/>
<Filename Value="bmprgbtypes.pas"/>
<Caret Line="196" Column="19" TopLine="185"/>
</Position25>
<Position26>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="65" Column="51" TopLine="58"/>
<Filename Value="bmprgbtypes.pas"/>
<Caret Line="248" Column="19" TopLine="234"/>
</Position26>
<Position27>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="55" Column="28" TopLine="45"/>
<Filename Value="bmprgbgraph.pas"/>
<Caret Line="6" Column="56" TopLine="1"/>
</Position27>
<Position28>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="72" Column="26" TopLine="46"/>
<Filename Value="bmprgbgraph.pas"/>
<Caret Line="130" Column="23" TopLine="119"/>
</Position28>
<Position29>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="275" Column="29" TopLine="251"/>
<Filename Value="bmprgbgraph.pas"/>
<Caret Line="392" Column="32" TopLine="378"/>
</Position29>
<Position30>
<Filename Value="rgbdrawutils.pas"/>
<Caret Line="71" Column="18" TopLine="50"/>
</Position30>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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);