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; procedure TRGB32Bitmap.FlipHorz;
begin begin
inherited FlipHorz; inherited;
Mask.FlipHorz; Mask.FlipHorz;
end; end;
procedure TRGB32Bitmap.FlipVert; procedure TRGB32Bitmap.FlipVert;
begin begin
inherited FlipVert; inherited;
Mask.FlipVert; Mask.FlipVert;
end; end;
procedure TRGB32Bitmap.Rotate90; procedure TRGB32Bitmap.Rotate90;
begin begin
inherited Rotate90; inherited;
Mask.Rotate90; Mask.Rotate90;
end; end;
procedure TRGB32Bitmap.Rotate180; procedure TRGB32Bitmap.Rotate180;
begin begin
inherited Rotate180; inherited;
Mask.Rotate180; Mask.Rotate180;
end; end;
procedure TRGB32Bitmap.Rotate270; procedure TRGB32Bitmap.Rotate270;
begin begin
inherited Rotate270; inherited;
Mask.Rotate270; Mask.Rotate270;
end; end;

View File

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

View File

@ -1,11 +1,11 @@
object MainForm: TMainForm object MainForm: TMainForm
Left = 209 Left = 209
Height = 631 Height = 666
Top = 146 Top = 146
Width = 897 Width = 905
Caption = 'Lazarus Image Editor' Caption = 'Lazarus Image Editor'
ClientHeight = 609 ClientHeight = 644
ClientWidth = 897 ClientWidth = 905
Font.CharSet = GB2312_CHARSET Font.CharSet = GB2312_CHARSET
Font.Height = -13 Font.Height = -13
Font.Name = '微软雅黑' Font.Name = '微软雅黑'
@ -18,18 +18,18 @@
LCLVersion = '0.9.31' LCLVersion = '0.9.31'
object PanelTools: TPanel object PanelTools: TPanel
Left = 0 Left = 0
Height = 482 Height = 517
Top = 105 Top = 105
Width = 40 Width = 40
Align = alLeft Align = alLeft
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 482 ClientHeight = 517
ClientWidth = 40 ClientWidth = 40
ParentColor = False ParentColor = False
TabOrder = 0 TabOrder = 0
object ToolBarTools: TToolBar object ToolBarTools: TToolBar
Left = 0 Left = 0
Height = 482 Height = 517
Top = 0 Top = 0
Width = 40 Width = 40
Align = alLeft Align = alLeft
@ -156,8 +156,8 @@
object StatusBar: TStatusBar object StatusBar: TStatusBar
Left = 0 Left = 0
Height = 22 Height = 22
Top = 587 Top = 622
Width = 897 Width = 905
Panels = < Panels = <
item item
Width = 250 Width = 250
@ -182,19 +182,19 @@
SimplePanel = False SimplePanel = False
end end
object PanelPallete: TPanel object PanelPallete: TPanel
Left = 822 Left = 830
Height = 482 Height = 517
Top = 105 Top = 105
Width = 75 Width = 75
Align = alRight Align = alRight
AutoSize = True AutoSize = True
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 482 ClientHeight = 517
ClientWidth = 75 ClientWidth = 75
TabOrder = 1 TabOrder = 1
object Palette: TColorPalette object Palette: TColorPalette
Left = 0 Left = 0
Height = 482 Height = 517
Top = 0 Top = 0
Width = 75 Width = 75
Align = alClient Align = alClient
@ -206,17 +206,17 @@
Left = 0 Left = 0
Height = 105 Height = 105
Top = 0 Top = 0
Width = 897 Width = 905
Align = alTop Align = alTop
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 105 ClientHeight = 105
ClientWidth = 897 ClientWidth = 905
TabOrder = 2 TabOrder = 2
object Bevel1: TBevel object Bevel1: TBevel
Left = 0 Left = 0
Height = 2 Height = 2
Top = 69 Top = 69
Width = 897 Width = 905
Align = alTop Align = alTop
Shape = bsBottomLine Shape = bsBottomLine
end end
@ -224,7 +224,7 @@
Left = 0 Left = 0
Height = 2 Height = 2
Top = 33 Top = 33
Width = 897 Width = 905
Align = alTop Align = alTop
Shape = bsBottomLine Shape = bsBottomLine
end end
@ -232,7 +232,7 @@
Left = 0 Left = 0
Height = 33 Height = 33
Top = 0 Top = 0
Width = 897 Width = 905
ButtonHeight = 32 ButtonHeight = 32
ButtonWidth = 36 ButtonWidth = 36
Color = clBtnFace Color = clBtnFace
@ -379,13 +379,13 @@
Left = 0 Left = 0
Height = 34 Height = 34
Top = 35 Top = 35
Width = 897 Width = 905
Align = alTop Align = alTop
BorderSpacing.InnerBorder = 4 BorderSpacing.InnerBorder = 4
BorderSpacing.CellAlignVertical = ccaCenter BorderSpacing.CellAlignVertical = ccaCenter
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 34 ClientHeight = 34
ClientWidth = 897 ClientWidth = 905
TabOrder = 1 TabOrder = 1
object LabelFillOutline: TLabel object LabelFillOutline: TLabel
Left = 103 Left = 103
@ -421,7 +421,7 @@
ParentColor = False ParentColor = False
end end
object PanelColors: TPanel object PanelColors: TPanel
Left = 685 Left = 693
Height = 34 Height = 34
Top = 0 Top = 0
Width = 212 Width = 212
@ -1009,11 +1009,11 @@
Left = 0 Left = 0
Height = 34 Height = 34
Top = 71 Top = 71
Width = 897 Width = 905
Align = alTop Align = alTop
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 34 ClientHeight = 34
ClientWidth = 897 ClientWidth = 905
TabOrder = 2 TabOrder = 2
object LabelSize: TLabel object LabelSize: TLabel
Left = 0 Left = 0
@ -1258,9 +1258,9 @@
end end
object PanelPictures: TPanel object PanelPictures: TPanel
Left = 40 Left = 40
Height = 482 Height = 517
Top = 105 Top = 105
Width = 782 Width = 790
Align = alClient Align = alClient
BevelOuter = bvLowered BevelOuter = bvLowered
TabOrder = 3 TabOrder = 3

View File

@ -1,139 +1,138 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TMainForm','FORMDATA',[ LazarusResources.Add('TMainForm','FORMDATA',[
'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3#209#0#6'Height'#3'w'#2#3'Top'#3#146 'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3#209#0#6'Height'#3#154#2#3'Top'#3#146
+#0#5'Width'#3#129#3#7'Caption'#6#20'Lazarus Image Editor'#12'ClientHeight'#3 +#0#5'Width'#3#137#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.' +#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 +'.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 +#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' +#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' +'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 +'Tools'#4'Left'#2#0#6'Height'#3#5#2#3'Top'#2'i'#5'Width'#2'('#5'Align'#7#6'a'
+'alLeft'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#226#1#11'ClientWidth' +'lLeft'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#5#2#11'ClientWidth'#2
+#2'('#11'ParentColor'#8#8'TabOrder'#2#0#0#8'TToolBar'#12'ToolBarTools'#4'Lef' +'('#11'ParentColor'#8#8'TabOrder'#2#0#0#8'TToolBar'#12'ToolBarTools'#4'Left'
+'t'#2#0#6'Height'#3#226#1#3'Top'#2#0#5'Width'#2'('#5'Align'#7#6'alLeft'#12'B' +#2#0#6'Height'#3#5#2#3'Top'#2#0#5'Width'#2'('#5'Align'#7#6'alLeft'#12'Button'
+'uttonHeight'#2'('#11'ButtonWidth'#2'('#7'Caption'#6#12'ToolBarTools'#21'Con' +'Height'#2'('#11'ButtonWidth'#2'('#7'Caption'#6#12'ToolBarTools'#21'Constrai'
+'straints.MinHeight'#3#146#1#6'Images'#7#14'ImageListTools'#6'Indent'#2#0#8 +'nts.MinHeight'#3#146#1#6'Images'#7#14'ImageListTools'#6'Indent'#2#0#8'TabOr'
+'TabOrder'#2#0#0#11'TToolButton'#9'ToolSpray'#4'Left'#2#0#4'Hint'#6#5'Spray' +'der'#2#0#0#11'TToolButton'#9'ToolSpray'#4'Left'#2#0#4'Hint'#6#5'Spray'#3'To'
+#3'Top'#3'j'#1#7'Grouped'#9#10'ImageIndex'#2#9#7'OnClick'#7#14'ToolSprayClic' +'p'#3'j'#1#7'Grouped'#9#10'ImageIndex'#2#9#7'OnClick'#7#14'ToolSprayClick'#14
+'k'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolBu' +'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'
+'tton'#13'ToolFloodFill'#4'Left'#2#0#4'Hint'#6#10'Flood Fill'#3'Top'#3'B'#1#7 +#13'ToolFloodFill'#4'Left'#2#0#4'Hint'#6#10'Flood Fill'#3'Top'#3'B'#1#7'Grou'
+'Grouped'#9#10'ImageIndex'#2#8#7'OnClick'#7#18'ToolFloodFillClick'#14'Parent' +'ped'#9#10'ImageIndex'#2#8#7'OnClick'#7#18'ToolFloodFillClick'#14'ParentShow'
+'ShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#10'Too' +'Hint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#10'ToolEra'
+'lEraser'#4'Left'#2#0#4'Hint'#6#15'Eraser/Replacer'#3'Top'#2'z'#7'Grouped'#9 +'ser'#4'Left'#2#0#4'Hint'#6#15'Eraser/Replacer'#3'Top'#2'z'#7'Grouped'#9#10
+#10'ImageIndex'#2#3#7'OnClick'#7#15'ToolEraserClick'#14'ParentShowHint'#8#8 +'ImageIndex'#2#3#7'OnClick'#7#15'ToolEraserClick'#14'ParentShowHint'#8#8'Sho'
+'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#7'ToolPen'#4'Left'#2 +'wHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#7'ToolPen'#4'Left'#2#0#4
+#0#4'Hint'#6#3'Pen'#3'Top'#2'R'#7'Grouped'#9#10'ImageIndex'#2#2#7'OnClick'#7 +'Hint'#6#3'Pen'#3'Top'#2'R'#7'Grouped'#9#10'ImageIndex'#2#2#7'OnClick'#7#12
+#12'ToolPenClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0 +'ToolPenClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0
+#0#11'TToolButton'#13'ToolColorPick'#4'Left'#2#0#4'Hint'#6#10'Color Pick'#3 +#11'TToolButton'#13'ToolColorPick'#4'Left'#2#0#4'Hint'#6#10'Color Pick'#3'To'
+'Top'#2'*'#7'Grouped'#9#10'ImageIndex'#2#1#7'OnClick'#7#18'ToolColorPickClic' +'p'#2'*'#7'Grouped'#9#10'ImageIndex'#2#1#7'OnClick'#7#18'ToolColorPickClick'
+'k'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolBu' +#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButto'
+'tton'#8'ToolMask'#4'Left'#2#0#4'Hint'#6#4'Mask'#3'Top'#2#2#7'Grouped'#9#10 +'n'#8'ToolMask'#4'Left'#2#0#4'Hint'#6#4'Mask'#3'Top'#2#2#7'Grouped'#9#10'Ima'
+'ImageIndex'#2#0#7'OnClick'#7#13'ToolMaskClick'#14'ParentShowHint'#8#8'ShowH' +'geIndex'#2#0#7'OnClick'#7#13'ToolMaskClick'#14'ParentShowHint'#8#8'ShowHint'
+'int'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#8'ToolLine'#4'Left'#2#0#4 +#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#8'ToolLine'#4'Left'#2#0#4'Hint'
+'Hint'#6#4'Line'#3'Top'#3#162#0#4'Down'#9#7'Grouped'#9#10'ImageIndex'#2#4#7 +#6#4'Line'#3'Top'#3#162#0#4'Down'#9#7'Grouped'#9#10'ImageIndex'#2#4#7'OnClic'
+'OnClick'#7#13'ToolLineClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8 +'k'#7#13'ToolLineClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsC'
+'tbsCheck'#0#0#11'TToolButton'#13'ToolRectangle'#4'Left'#2#0#4'Hint'#6#7'Pol' +'heck'#0#0#11'TToolButton'#13'ToolRectangle'#4'Left'#2#0#4'Hint'#6#7'Polygon'
+'ygon'#3'Top'#3#202#0#7'Grouped'#9#10'ImageIndex'#2#5#7'OnClick'#7#18'ToolRe' +#3'Top'#3#202#0#7'Grouped'#9#10'ImageIndex'#2#5#7'OnClick'#7#18'ToolRectangl'
+'ctangleClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0 +'eClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TT'
+#11'TToolButton'#11'ToolPolygon'#4'Left'#2#0#4'Hint'#6#7'Ellipse'#3'Top'#3#26 +'oolButton'#11'ToolPolygon'#4'Left'#2#0#4'Hint'#6#7'Ellipse'#3'Top'#3#26#1#7
+#1#7'Grouped'#9#10'ImageIndex'#2#7#7'OnClick'#7#16'ToolPolygonClick'#14'Pare' +'Grouped'#9#10'ImageIndex'#2#7#7'OnClick'#7#16'ToolPolygonClick'#14'ParentSh'
+'ntShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#11'T' +'owHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#11'ToolE'
+'oolEllipse'#4'Left'#2#0#4'Hint'#6#25'Rectangle/Round rectangle'#3'Top'#3#242 +'llipse'#4'Left'#2#0#4'Hint'#6#25'Rectangle/Round rectangle'#3'Top'#3#242#0#7
+#0#7'Grouped'#9#10'ImageIndex'#2#6#7'OnClick'#7#12'ToolEllClick'#14'ParentSh' +'Grouped'#9#10'ImageIndex'#2#6#7'OnClick'#7#12'ToolEllClick'#14'ParentShowHi'
+'owHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#0#0#10'TStatusBar'#9'Sta' +'nt'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#0#0#10'TStatusBar'#9'StatusB'
+'tusBar'#4'Left'#2#0#6'Height'#2#22#3'Top'#3'K'#2#5'Width'#3#129#3#6'Panels' +'ar'#4'Left'#2#0#6'Height'#2#22#3'Top'#3'n'#2#5'Width'#3#137#3#6'Panels'#14#1
+#14#1#5'Width'#3#250#0#0#1#9'Alignment'#7#8'taCenter'#5'Width'#2'P'#0#1#9'Al' +#5'Width'#3#250#0#0#1#9'Alignment'#7#8'taCenter'#5'Width'#2'P'#0#1#9'Alignme'
+'ignment'#7#8'taCenter'#5'Width'#2'P'#0#1#5'Width'#2'P'#0#1#5'Width'#2'P'#0#1 +'nt'#7#8'taCenter'#5'Width'#2'P'#0#1#5'Width'#2'P'#0#1#5'Width'#2'P'#0#1#5'W'
+#5'Width'#2'2'#0#0#11'SimplePanel'#8#0#0#6'TPanel'#12'PanelPallete'#4'Left'#3 +'idth'#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' +#3#6'Height'#3#5#2#3'Top'#2'i'#5'Width'#2'K'#5'Align'#7#7'alRight'#8'AutoSiz'
+'toSize'#9#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#226#1#11'ClientWidt' +'e'#9#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#5#2#11'ClientWidth'#2'K'
+'h'#2'K'#8'TabOrder'#2#1#0#13'TColorPalette'#7'Palette'#4'Left'#2#0#6'Height' +#8'TabOrder'#2#1#0#13'TColorPalette'#7'Palette'#4'Left'#2#0#6'Height'#3#5#2#3
+#3#226#1#3'Top'#2#0#5'Width'#2'K'#5'Align'#7#8'alClient'#11'ButtonWidth'#2#12 +'Top'#2#0#5'Width'#2'K'#5'Align'#7#8'alClient'#11'ButtonWidth'#2#12#12'Butto'
+#12'ButtonHeight'#2#12#0#0#0#6'TPanel'#12'PanelToolBar'#4'Left'#2#0#6'Height' +'nHeight'#2#12#0#0#0#6'TPanel'#12'PanelToolBar'#4'Left'#2#0#6'Height'#2'i'#3
+#2'i'#3'Top'#2#0#5'Width'#3#129#3#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvN' +'Top'#2#0#5'Width'#3#137#3#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12
+'one'#12'ClientHeight'#2'i'#11'ClientWidth'#3#129#3#8'TabOrder'#2#2#0#6'TBev' +'ClientHeight'#2'i'#11'ClientWidth'#3#137#3#8'TabOrder'#2#2#0#6'TBevel'#6'Be'
+'el'#6'Bevel1'#4'Left'#2#0#6'Height'#2#2#3'Top'#2'E'#5'Width'#3#129#3#5'Alig' +'vel1'#4'Left'#2#0#6'Height'#2#2#3'Top'#2'E'#5'Width'#3#137#3#5'Align'#7#5'a'
+'n'#7#5'alTop'#5'Shape'#7#12'bsBottomLine'#0#0#6'TBevel'#6'Bevel2'#4'Left'#2 +'lTop'#5'Shape'#7#12'bsBottomLine'#0#0#6'TBevel'#6'Bevel2'#4'Left'#2#0#6'Hei'
+#0#6'Height'#2#2#3'Top'#2'!'#5'Width'#3#129#3#5'Align'#7#5'alTop'#5'Shape'#7 +'ght'#2#2#3'Top'#2'!'#5'Width'#3#137#3#5'Align'#7#5'alTop'#5'Shape'#7#12'bsB'
+#12'bsBottomLine'#0#0#8'TToolBar'#7'ToolBar'#4'Left'#2#0#6'Height'#2'!'#3'To' +'ottomLine'#0#0#8'TToolBar'#7'ToolBar'#4'Left'#2#0#6'Height'#2'!'#3'Top'#2#0
+'p'#2#0#5'Width'#3#129#3#12'ButtonHeight'#2' '#11'ButtonWidth'#2'$'#5'Color' +#5'Width'#3#137#3#12'ButtonHeight'#2' '#11'ButtonWidth'#2'$'#5'Color'#7#9'cl'
+#7#9'clBtnFace'#11'EdgeBorders'#11#0#6'Images'#7#16'ImageListActions'#11'Par' +'BtnFace'#11'EdgeBorders'#11#0#6'Images'#7#16'ImageListActions'#11'ParentCol'
+'entColor'#8#8'TabOrder'#2#0#0#6'TLabel'#9'LabelZoom'#4'Left'#3#129#1#6'Heig' +'or'#8#8'TabOrder'#2#0#0#6'TLabel'#9'LabelZoom'#4'Left'#3#129#1#6'Height'#2
+'ht'#2' '#3'Top'#2#0#5'Width'#2'('#7'Caption'#6#5'Zoom:'#21'Constraints.MinH' +' '#3'Top'#2#0#5'Width'#2'('#7'Caption'#6#5'Zoom:'#21'Constraints.MinHeight'
+'eight'#2' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#11'TToolButton'#9 +#2' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#11'TToolButton'#9'ToolCl'
+'ToolClose'#4'Left'#2'm'#3'Top'#2#0#6'Action'#7#9'FileClose'#14'ParentShowHi' +'ose'#4'Left'#2'm'#3'Top'#2#0#6'Action'#7#9'FileClose'#14'ParentShowHint'#8#8
+'nt'#8#8'ShowHint'#9#0#0#11'TToolButton'#8'ToolSave'#4'Left'#2'I'#3'Top'#2#0 +'ShowHint'#9#0#0#11'TToolButton'#8'ToolSave'#4'Left'#2'I'#3'Top'#2#0#6'Actio'
+#6'Action'#7#8'FileSave'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButt' +'n'#7#8'FileSave'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#8'T'
,'on'#8'ToolOpen'#4'Left'#2'%'#3'Top'#2#0#6'Action'#7#8'FileOpen'#14'ParentSh' ,'oolOpen'#4'Left'#2'%'#3'Top'#2#0#6'Action'#7#8'FileOpen'#14'ParentShowHint'
+'owHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#7'ToolNew'#4'Left'#2#1#3'Top'#2 +#8#8'ShowHint'#9#0#0#11'TToolButton'#7'ToolNew'#4'Left'#2#1#3'Top'#2#0#6'Act'
+#0#6'Action'#7#7'FileNew'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolBut' +'ion'#7#7'FileNew'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11
+'ton'#11'ToolButton6'#4'Left'#3#145#0#3'Top'#2#0#5'Width'#2#8#7'Caption'#6#11 +'ToolButton6'#4'Left'#3#145#0#3'Top'#2#0#5'Width'#2#8#7'Caption'#6#11'ToolBu'
+'ToolButton6'#5'Style'#7#12'tbsSeparator'#0#0#11'TToolButton'#7'ToolCut'#4'L' +'tton6'#5'Style'#7#12'tbsSeparator'#0#0#11'TToolButton'#7'ToolCut'#4'Left'#3
+'eft'#3#233#0#3'Top'#2#0#6'Action'#7#7'EditCut'#14'ParentShowHint'#8#8'ShowH' +#233#0#3'Top'#2#0#6'Action'#7#7'EditCut'#14'ParentShowHint'#8#8'ShowHint'#9#0
+'int'#9#0#0#11'TToolButton'#11'ToolButton8'#4'Left'#3#13#1#3'Top'#2#0#6'Acti' +#0#11'TToolButton'#11'ToolButton8'#4'Left'#3#13#1#3'Top'#2#0#6'Action'#7#8'E'
+'on'#7#8'EditCopy'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11 +'ditCopy'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11'ToolButt'
+'ToolButton9'#4'Left'#3'1'#1#3'Top'#2#0#6'Action'#7#9'EditPaste'#14'ParentSh' +'on9'#4'Left'#3'1'#1#3'Top'#2#0#6'Action'#7#9'EditPaste'#14'ParentShowHint'#8
+'owHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#12'ToolButton10'#4'Left'#3'y'#1 +#8'ShowHint'#9#0#0#11'TToolButton'#12'ToolButton10'#4'Left'#3'y'#1#3'Top'#2#0
+#3'Top'#2#0#5'Width'#2#8#7'Caption'#6#12'ToolButton10'#5'Style'#7#12'tbsSepa' +#5'Width'#2#8#7'Caption'#6#12'ToolButton10'#5'Style'#7#12'tbsSeparator'#0#0
+'rator'#0#0#11'TToolButton'#12'ToolButton11'#4'Left'#3'U'#1#3'Top'#2#0#6'Act' +#11'TToolButton'#12'ToolButton11'#4'Left'#3'U'#1#3'Top'#2#0#6'Action'#7#10'E'
+'ion'#7#10'EditDelete'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton' +'ditDelete'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#8'ToolUnd'
+#8'ToolUndo'#4'Left'#3#153#0#3'Top'#2#0#6'Action'#7#8'EditUndo'#14'ParentSho' +'o'#4'Left'#3#153#0#3'Top'#2#0#6'Action'#7#8'EditUndo'#14'ParentShowHint'#8#8
+'wHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11'ToolButton2'#4'Left'#3#225#0#3 +'ShowHint'#9#0#0#11'TToolButton'#11'ToolButton2'#4'Left'#3#225#0#3'Top'#2#0#5
+'Top'#2#0#5'Width'#2#8#7'Caption'#6#11'ToolButton2'#5'Style'#7#12'tbsSeparat' +'Width'#2#8#7'Caption'#6#11'ToolButton2'#5'Style'#7#12'tbsSeparator'#0#0#11
+'or'#0#0#11'TToolButton'#8'ToolRedo'#4'Left'#3#189#0#3'Top'#2#0#6'Action'#7#8 +'TToolButton'#8'ToolRedo'#4'Left'#3#189#0#3'Top'#2#0#6'Action'#7#8'EditRedo'
+'EditRedo'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#6'TPanel'#9'PanelZoom'#4'L' +#14'ParentShowHint'#8#8'ShowHint'#9#0#0#6'TPanel'#9'PanelZoom'#4'Left'#3#169
+'eft'#3#169#1#6'Height'#2' '#3'Top'#2#0#5'Width'#2'M'#10'BevelOuter'#7#6'bvN' +#1#6'Height'#2' '#3'Top'#2#0#5'Width'#2'M'#10'BevelOuter'#7#6'bvNone'#12'Cli'
+'one'#12'ClientHeight'#2' '#11'ClientWidth'#2'M'#8'TabOrder'#2#0#0#9'TComboB' +'entHeight'#2' '#11'ClientWidth'#2'M'#8'TabOrder'#2#0#0#9'TComboBox'#12'Comb'
+'ox'#12'ComboBoxZoom'#4'Left'#2#4#6'Height'#2#27#3'Top'#2#2#5'Width'#2'F'#7 +'oBoxZoom'#4'Left'#2#4#6'Height'#2#27#3'Top'#2#2#5'Width'#2'F'#7'Anchors'#11
+'Anchors'#11#6'akLeft'#0#10'ItemHeight'#2#19#9'ItemIndex'#2#2#13'Items.Strin' +#6'akLeft'#0#10'ItemHeight'#2#19#9'ItemIndex'#2#2#13'Items.Strings'#1#6#4'25'
+'gs'#1#6#4'25 %'#6#4'50 %'#6#5'100 %'#6#5'200 %'#6#5'400 %'#6#5'800 %'#6#6'1' +' %'#6#4'50 %'#6#5'100 %'#6#5'200 %'#6#5'400 %'#6#5'800 %'#6#6'1000 %'#0#8'O'
+'000 %'#0#8'OnChange'#7#18'ComboBoxZoomChange'#13'OnEditingDone'#7#23'ComboB' +'nChange'#7#18'ComboBoxZoomChange'#13'OnEditingDone'#7#23'ComboBoxZoomEditin'
+'oxZoomEditingDone'#14'ParentShowHint'#8#8'TabOrder'#2#0#4'Text'#6#5'100 %'#0 +'gDone'#14'ParentShowHint'#8#8'TabOrder'#2#0#4'Text'#6#5'100 %'#0#0#0#0#6'TP'
+#0#0#0#6'TPanel'#12'PanelOptions'#4'Left'#2#0#6'Height'#2'"'#3'Top'#2'#'#5'W' +'anel'#12'PanelOptions'#4'Left'#2#0#6'Height'#2'"'#3'Top'#2'#'#5'Width'#3#137
+'idth'#3#129#3#5'Align'#7#5'alTop'#25'BorderSpacing.InnerBorder'#2#4#31'Bord' +#3#5'Align'#7#5'alTop'#25'BorderSpacing.InnerBorder'#2#4#31'BorderSpacing.Ce'
+'erSpacing.CellAlignVertical'#7#9'ccaCenter'#10'BevelOuter'#7#6'bvNone'#12'C' +'llAlignVertical'#7#9'ccaCenter'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'
+'lientHeight'#2'"'#11'ClientWidth'#3#129#3#8'TabOrder'#2#1#0#6'TLabel'#16'La' +#2'"'#11'ClientWidth'#3#137#3#8'TabOrder'#2#1#0#6'TLabel'#16'LabelFillOutlin'
+'belFillOutline'#4'Left'#2'g'#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'H'#5'Alig' +'e'#4'Left'#2'g'#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'H'#5'Align'#7#6'alLeft'
+'n'#7#6'alLeft'#7'Caption'#6#14'Fill, Outline:'#21'Constraints.MinHeight'#2 +#7'Caption'#6#14'Fill, Outline:'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8
+' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#10'LabelShape'#4 +'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#10'LabelShape'#4'Left'#2#0#6'Heig'
+'Left'#2#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'*'#5'Align'#7#6'alLeft'#7'Ca' +'ht'#2'"'#3'Top'#2#0#5'Width'#2'*'#5'Align'#7#6'alLeft'#7'Caption'#6#6'Shape'
+'ption'#6#6'Shape:'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11 +':'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8
+'ParentColor'#8#0#0#6'TLabel'#13'LabelMaskTool'#4'Left'#3#2#1#6'Height'#2'"' +#0#0#6'TLabel'#13'LabelMaskTool'#4'Left'#3#2#1#6'Height'#2'"'#3'Top'#2#0#5'W'
+#3'Top'#2#0#5'Width'#2'C'#5'Align'#7#6'alLeft'#7'Caption'#6#10'Mask Tool:'#21 +'idth'#2'C'#5'Align'#7#6'alLeft'#7'Caption'#6#10'Mask Tool:'#21'Constraints.'
+'Constraints.MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6 +'MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TPanel'#11
+'TPanel'#11'PanelColors'#4'Left'#3#173#2#6'Height'#2'"'#3'Top'#2#0#5'Width'#3 +'PanelColors'#4'Left'#3#181#2#6'Height'#2'"'#3'Top'#2#0#5'Width'#3#212#0#5'A'
+#212#0#5'Align'#7#7'alRight'#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4 +'lign'#7#7'alRight'#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4'!BorderS'
+'!BorderSpacing.CellAlignHorizontal'#7#10'ccaLeftTop'#31'BorderSpacing.CellA' +'pacing.CellAlignHorizontal'#7#10'ccaLeftTop'#31'BorderSpacing.CellAlignVert'
+'lignVertical'#7#9'ccaCenter'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2 +'ical'#7#9'ccaCenter'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'"'#11'Cl'
+'"'#11'ClientWidth'#3#212#0#8'TabOrder'#2#0#0#6'TLabel'#12'LabelOutline'#4'L' +'ientWidth'#3#212#0#8'TabOrder'#2#0#0#6'TLabel'#12'LabelOutline'#4'Left'#2#8
+'eft'#2#8#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'1'#5'Align'#7#7'alRight'#7'Ca' +#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'1'#5'Align'#7#7'alRight'#7'Caption'#6#8
+'ption'#6#8'Outline:'#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel' +'Outline:'#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#9'LabelFi'
+#9'LabelFill'#4'Left'#2'Y'#6'Height'#2'"'#3'Top'#2#0#5'Width'#2#20#5'Align'#7 +'ll'#4'Left'#2'Y'#6'Height'#2'"'#3'Top'#2#0#5'Width'#2#20#5'Align'#7#7'alRig'
+#7'alRight'#7'Caption'#6#5'Fill:'#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0 +'ht'#7'Caption'#6#5'Fill:'#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'T'
+#0#6'TLabel'#10'LabelPaper'#4'Left'#3#141#0#6'Height'#2'"'#3'Top'#2#0#5'Widt' +'Label'#10'LabelPaper'#4'Left'#3#141#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#2
+'h'#2''''#5'Align'#7#7'alRight'#7'Caption'#6#6'Paper:'#6'Layout'#7#8'tlCente' +''''#5'Align'#7#7'alRight'#7'Caption'#6#6'Paper:'#6'Layout'#7#8'tlCenter'#11
+'r'#11'ParentColor'#8#0#0#6'TPanel'#12'PanelOutline'#4'Left'#2'?'#6'Height'#2 +'ParentColor'#8#0#0#6'TPanel'#12'PanelOutline'#4'Left'#2'?'#6'Height'#2#22#3
+#22#3'Top'#2#6#5'Width'#2#20#5'Align'#7#7'alRight'#20'BorderSpacing.Around'#2 +'Top'#2#6#5'Width'#2#20#5'Align'#7#7'alRight'#20'BorderSpacing.Around'#2#6#10
+#6#10'BevelInner'#7#9'bvLowered'#5'Color'#7#7'clWhite'#11'ParentColor'#8#8'T' +'BevelInner'#7#9'bvLowered'#5'Color'#7#7'clWhite'#11'ParentColor'#8#8'TabOrd'
+'abOrder'#2#0#10'OnDblClick'#7#20'PanelOutlineDblClick'#0#0#6'TPanel'#9'Pane' +'er'#2#0#10'OnDblClick'#7#20'PanelOutlineDblClick'#0#0#6'TPanel'#9'PanelFill'
+'lFill'#4'Left'#2's'#6'Height'#2#22#3'Top'#2#6#5'Width'#2#20#5'Align'#7#7'al' +#4'Left'#2's'#6'Height'#2#22#3'Top'#2#6#5'Width'#2#20#5'Align'#7#7'alRight'
+'Right'#20'BorderSpacing.Around'#2#6#10'BevelInner'#7#9'bvLowered'#5'Color'#7 +#20'BorderSpacing.Around'#2#6#10'BevelInner'#7#9'bvLowered'#5'Color'#7#7'clW'
+#7'clWhite'#11'ParentColor'#8#8'TabOrder'#2#1#10'OnDblClick'#7#17'PanelFillD' +'hite'#11'ParentColor'#8#8'TabOrder'#2#1#10'OnDblClick'#7#17'PanelFillDblCli'
+'blClick'#0#0#6'TPanel'#10'PanelPaper'#4'Left'#3#186#0#6'Height'#2#22#3'Top' +'ck'#0#0#6'TPanel'#10'PanelPaper'#4'Left'#3#186#0#6'Height'#2#22#3'Top'#2#6#5
+#2#6#5'Width'#2#20#5'Align'#7#7'alRight'#20'BorderSpacing.Around'#2#6#10'Bev' +'Width'#2#20#5'Align'#7#7'alRight'#20'BorderSpacing.Around'#2#6#10'BevelInne'
+'elInner'#7#9'bvLowered'#5'Color'#7#7'clWhite'#11'ParentColor'#8#8'TabOrder' +'r'#7#9'bvLowered'#5'Color'#7#7'clWhite'#11'ParentColor'#8#8'TabOrder'#2#2#10
+#2#2#10'OnDblClick'#7#18'PanelPaperDblClick'#0#0#0#6'TPanel'#16'PanelFillOut' +'OnDblClick'#7#18'PanelPaperDblClick'#0#0#0#6'TPanel'#16'PanelFillOutline'#4
+'line'#4'Left'#3#175#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'S'#5'Align'#7#6 +'Left'#3#175#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'S'#5'Align'#7#6'alLeft'
+'alLeft'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'"'#11'ClientWidth'#2 +#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'"'#11'ClientWidth'#2'S'#8'Tab'
+'S'#8'TabOrder'#2#1#0#12'TSpeedButton'#15'ToolFillOutline'#4'Left'#2#4#6'Hei' +'Order'#2#1#0#12'TSpeedButton'#15'ToolFillOutline'#4'Left'#2#4#6'Height'#2#24
+'ght'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11#6'akLeft'#0#4'Down'#9#10'G' +#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11#6'akLeft'#0#4'Down'#9#10'Glyph.Data'
+'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 +#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#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#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#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#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 +#0#0#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0 +#128#128#128#128#128#128#128#128#128#128#128#128#128#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#0#0#0#0#0#0#0#0#0#0#0#0#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#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#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#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 +#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'
+#1#9'NumGlyphs'#2#0#7'OnClick'#7#20'ToolFillOutlineClick'#0#0#12'TSpeedButto' +'phs'#2#0#7'OnClick'#7#20'ToolFillOutlineClick'#0#0#12'TSpeedButton'#11'Tool'
+'n'#11'ToolOutline'#4'Left'#2#29#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'A' +'Outline'#4'Left'#2#29#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11
+'nchors'#11#6'akLeft'#0#10'Glyph.Data'#10'z'#6#0#0'v'#6#0#0'BMv'#6#0#0#0#0#0 +#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'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#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#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#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#0#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 +#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#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 +#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#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#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#0#255#255#255#0#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#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#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#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#255#0#255#255#255#0#255#255#255#0#255#255#255#0#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 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#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#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#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 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#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#255#0#255#255#255#0#255#255#255#0#255#255#255#0#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 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#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#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#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 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#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#255#0#255#255#255#0#255#255#255#0#255#255#255#0#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 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#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#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#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 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#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#255#0#255#255#255#0#255#255#255#0#255#255#255#0#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 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#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#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#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 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#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#255#0#255#255#255#0#255#255#255#0#255#255#255#0#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 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#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#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#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 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#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#255#0#255#255#255#0#255#255#255#0#255#255#255#0#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 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#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#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#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 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#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#255#0#255#255#255#0#255#255#255#0#255#255#255#0#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 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#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#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#255#255#255#0#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 +#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 +#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#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 +#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' +#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
+'pIndex'#2#1#9'NumGlyphs'#2#0#7'OnClick'#7#16'ToolOutlineClick'#0#0#12'TSpee' +#9'NumGlyphs'#2#0#7'OnClick'#7#16'ToolOutlineClick'#0#0#12'TSpeedButton'#8'T'
+'dButton'#8'ToolFill'#4'Left'#2'6'#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7 +'oolFill'#4'Left'#2'6'#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11
+'Anchors'#11#6'akLeft'#0#10'Glyph.Data'#10#234#4#0#0#230#4#0#0'BM'#230#4#0#0 +#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'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'('#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'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#255#255#255#255 ,#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#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#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#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#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 +#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 +#255#255#255#255#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#255#255#255#255#255 +#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#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255
+#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 +#255#255#255#255#255#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 +#255#255#255#255#255#255#255#10'GroupIndex'#2#1#9'NumGlyphs'#2#0#7'OnClick'#7
,#7'OnClick'#7#13'ToolFillClick'#0#0#0#6'TPanel'#10'PanelShape'#4'Left'#2'*'#6 ,#13'ToolFillClick'#0#0#0#6'TPanel'#10'PanelShape'#4'Left'#2'*'#6'Height'#2'"'
+'Height'#2'"'#3'Top'#2#0#5'Width'#2'='#5'Align'#7#6'alLeft'#10'BevelOuter'#7 +#3'Top'#2#0#5'Width'#2'='#5'Align'#7#6'alLeft'#10'BevelOuter'#7#6'bvNone'#12
+#6'bvNone'#12'ClientHeight'#2'"'#11'ClientWidth'#2'='#8'TabOrder'#2#2#0#12'T' +'ClientHeight'#2'"'#11'ClientWidth'#2'='#8'TabOrder'#2#2#0#12'TSpeedButton'
+'SpeedButton'#13'ToolRectShape'#4'Left'#2#7#6'Height'#2#24#3'Top'#2#5#5'Widt' +#13'ToolRectShape'#4'Left'#2#7#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anc'
+'h'#2#25#7'Anchors'#11#6'akLeft'#0#4'Down'#9#10'Glyph.Data'#10#234#4#0#0#230 +'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'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 +#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
+#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 +'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#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#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 +#0#0#0#0#0#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#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128 +#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128
@ -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#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#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#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#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' +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+'ck'#7#18'ToolRectShapeClick'#0#0#12'TSpeedButton'#15'ToolCircleShape'#4'Lef' +#0#0#0#0#0#0#0#0#0#0#10'GroupIndex'#2#1#9'NumGlyphs'#2#0#7'OnClick'#7#18'Too'
+'t'#2#31#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11#6'akLeft'#0#10 +'lRectShapeClick'#0#0#12'TSpeedButton'#15'ToolCircleShape'#4'Left'#2#31#6'He'
+'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 +'ight'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11#6'akLeft'#0#10'Glyph.Data'
+#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 +#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
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#216#216 +#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
,#216#0#132#132#132#0'CCC'#255'((('#255' '#255' '#255'((('#255'CCC'#255 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#216#216#216#0#132
+#132#132#132#0#216#216#216#0#255#255#255#0#255#255#255#0#255#255#255#0#255 ,#132#132#0'CCC'#255'((('#255' '#255' '#255'((('#255'CCC'#255#132#132#132
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#0#216#216#216#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#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 +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#133#133
+#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 +#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#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#251 +#255#0#0#0#255#1#1#1#255#25#25#25#255#133#133#133#0#255#255#255#0#255#255#255
+#251#251#0'PPP'#255#1#1#1#255#3#3#3#255'+++'#255'WWW'#255'jjj'#255'ooo'#255 +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP'
+'ooo'#255'jjj'#255'WWW'#255'+++'#255#3#3#3#255#1#1#1#255'PPP'#255#251#251#251 +#255#1#1#1#255#3#3#3#255'+++'#255'WWW'#255'jjj'#255'ooo'#255'ooo'#255'jjj'
+#0#255#255#255#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP'#255#0#0#0#255 +#255'WWW'#255'+++'#255#3#3#3#255#1#1#1#255'PPP'#255#251#251#251#0#255#255#255
+#9#9#9#255'[[['#255'}}}'#255#127#127#127#255#127#127#127#255#127#127#127#255 +#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP'#255#0#0#0#255#9#9#9#255'[['
+#127#127#127#255#127#127#127#255#127#127#127#255'}}}'#255'[[['#255#9#9#9#255 +'['#255'}}}'#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127
+#0#0#0#255'PPP'#255#251#251#251#0#255#255#255#0#255#255#255#0#133#133#133#0#1 +#255#127#127#127#255#127#127#127#255'}}}'#255'[[['#255#9#9#9#255#0#0#0#255'P'
+#1#1#255#9#9#9#255'hhh'#255#127#127#127#255#127#127#127#255#127#127#127#255 +'PP'#255#251#251#251#0#255#255#255#0#255#255#255#0#133#133#133#0#1#1#1#255#9
+#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127 +#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'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'
+#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127 +#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127
+#127#255#127#127#127#255'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#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127
+#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255 +#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255
+'WWW'#255#0#0#0#255'CCC'#255'((('#255#0#0#0#255'jjj'#255#127#127#127#255#127 +#127#127#127#255'[[['#255#3#3#3#255#25#25#25#255#216#216#216#0#132#132#132#0
+#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255 +#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'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#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127 +#127#127#127#255#127#127#127#255#127#127#127#255#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#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 +#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127
+#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127 +#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127
+#127#127#255#127#127#127#255#127#127#127#255'[[['#255#3#3#3#255#25#25#25#255 +#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255'ooo'#255#0#0#0
+#216#216#216#0#255#255#255#0#133#133#133#0#1#1#1#255#9#9#9#255'hhh'#255#127 +#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#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255
+#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127 +#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 +#255#127#127#127#255#127#127#127#255'jjj'#255#0#0#0#255'((('#255'CCC'#255#0#0
+#251#251#251#0'PPP'#255#0#0#0#255#9#9#9#255'[[['#255'}}}'#255#127#127#127#255 +#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 +#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 +#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127
+#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP'#255#1#1#1#255#3#3#3#255'++' +#127#255#127#127#127#255'[[['#255#3#3#3#255#25#25#25#255#216#216#216#0#255
+'+'#255'WWW'#255'jjj'#255'ooo'#255'ooo'#255'jjj'#255'WWW'#255'+++'#255#3#3#3 +#255#255#0#133#133#133#0#1#1#1#255#9#9#9#255'hhh'#255#127#127#127#255#127#127
+#255#1#1#1#255'PPP'#255#251#251#251#0#255#255#255#0#255#255#255#0#255#255#255 +#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127
+#0#255#255#255#0#255#255#255#0#255#255#255#0#133#133#133#0#25#25#25#255#1#1#1 +#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255'hhh'#255#9#9#9
+#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 +#255#1#1#1#255#133#133#133#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP'
,#25#25#255#133#133#133#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 +#255#0#0#0#255#9#9#9#255'[[['#255'}}}'#255#127#127#127#255#127#127#127#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 +#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255'}}}'#255'[['
+#216#216#216#0#132#132#132#0'CCC'#255'((('#255' '#255' '#255'((('#255'CC' +'['#255#9#9#9#255#0#0#0#255'PPP'#255#251#251#251#0#255#255#255#0#255#255#255
+'C'#255#132#132#132#0#216#216#216#0#255#255#255#0#255#255#255#0#255#255#255#0 +#0#255#255#255#0#251#251#251#0'PPP'#255#1#1#1#255#3#3#3#255'+++'#255'WWW'#255
+#255#255#255#0#255#255#255#0#10'GroupIndex'#2#1#9'NumGlyphs'#2#0#7'OnClick'#7 +'jjj'#255'ooo'#255'ooo'#255'jjj'#255'WWW'#255'+++'#255#3#3#3#255#1#1#1#255'P'
+#20'ToolCircleShapeClick'#0#0#0#6'TPanel'#13'PanelMaskTool'#4'Left'#3'E'#1#6 +'PP'#255#251#251#251#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+'Height'#2'"'#3'Top'#2#0#5'Width'#2'V'#5'Align'#7#6'alLeft'#10'BevelOuter'#7 +#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
+#6'bvNone'#12'ClientHeight'#2'"'#11'ClientWidth'#2'V'#8'TabOrder'#2#3#0#12'T' +#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
+'SpeedButton'#17'ToolMaskRectangle'#4'Left'#2#7#6'Height'#2#24#3'Top'#2#5#5 ,#133#133#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+'Width'#2#25#7'Anchors'#11#6'akLeft'#0#4'Down'#9#10'Glyph.Data'#10#234#4#0#0 +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#216#216#216#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 +#132#132#132#0'CCC'#255'((('#255' '#255' '#255'((('#255'CCC'#255#132#132
+#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 +#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 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#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#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128 +#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128
@ -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#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128 +#128#128#128#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#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#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' +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
,'nClick'#7#22'ToolMaskRectangleClick'#0#0#12'TSpeedButton'#15'ToolMaskEllips' +#0#0#0#0#0#0#0#0#0#0#0#0#10'GroupIndex'#2#1#9'NumGlyphs'#2#0#7'OnClick'#7#22
+'e'#4'Left'#2#31#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11#6'akL' ,'ToolMaskRectangleClick'#0#0#12'TSpeedButton'#15'ToolMaskEllipse'#4'Left'#2
+'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 +#31#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11#6'akLeft'#0#10'Gly'
+#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 +'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
+#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#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
+#216#216#216#0#132#132#132#0'CCC'#255'((('#255' '#255' '#255'((('#255'CC' +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#216#216#216#0
+'C'#255#132#132#132#0#216#216#216#0#255#255#255#0#255#255#255#0#255#255#255#0 +#132#132#132#0'CCC'#255'((('#255' '#255' '#255'((('#255'CCC'#255#132#132
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 +#132#0#216#216#216#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#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 +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#133
+#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 +#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
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#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
+#251#251#251#0'PPP'#255#1#1#1#255#3#3#3#255'+++'#255'WWW'#255'jjj'#255'ooo' +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#251#251#251#0
+#255'ooo'#255'jjj'#255'WWW'#255'+++'#255#3#3#3#255#1#1#1#255'PPP'#255#251#251 +'PPP'#255#1#1#1#255#3#3#3#255'+++'#255'WWW'#255'jjj'#255'ooo'#255'ooo'#255'j'
+#251#0#255#255#255#0#255#255#255#0#255#255#255#0#251#251#251#0'PPP'#255#0#0#0 +'jj'#255'WWW'#255'+++'#255#3#3#3#255#1#1#1#255'PPP'#255#251#251#251#0#255#255
+#255#9#9#9#255'[[['#255'}}}'#255#127#127#127#255#127#127#127#255#127#127#127 +#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#127#127#127#255#127#127#127#255#127#127#127#255'}}}'#255'[[['#255#9#9#9 +'[[['#255'}}}'#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127
+#255#0#0#0#255'PPP'#255#251#251#251#0#255#255#255#0#255#255#255#0#133#133#133 +#127#255#127#127#127#255#127#127#127#255'}}}'#255'[[['#255#9#9#9#255#0#0#0
+#0#1#1#1#255#9#9#9#255'hhh'#255#127#127#127#255#127#127#127#255#127#127#127 +#255'PPP'#255#251#251#251#0#255#255#255#0#255#255#255#0#133#133#133#0#1#1#1
+#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127 +#255#9#9#9#255'hhh'#255#127#127#127#255#127#127#127#255#127#127#127#255#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#255#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 +#127#127#127#255#127#127#127#255'hhh'#255#9#9#9#255#1#1#1#255#133#133#133#0
+#0#132#132#132#0#1#1#1#255'+++'#255'}}}'#255#127#127#127#255#127#127#127#255 +#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 +#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127
+#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127 +#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127
+#127#255'}}}'#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 +#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127
+#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127 +#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127
+#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255 +#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255
+'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#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255
+#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127 +#127#127#127#255#127#127#127#255#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#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 +#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127
+#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127 +#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127
+#127#127#255#127#127#127#255'ooo'#255#0#0#0#255' '#255' '#255#0#0#0#255 +#127#127#255#127#127#127#255'WWW'#255#0#0#0#255'CCC'#255#132#132#132#0#1#1#1
+'ooo'#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127 +#255'+++'#255'}}}'#255#127#127#127#255#127#127#127#255#127#127#127#255#127
+#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255 +#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255
+#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127 +#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255'}}}'#255'++'
+#255'ooo'#255#0#0#0#255' '#255'((('#255#0#0#0#255'jjj'#255#127#127#127#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 +#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127
+#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127 +#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127
+#127#255#127#127#127#255#127#127#127#255#127#127#127#255'jjj'#255#0#0#0#255 +#127#255#127#127#127#255#127#127#127#255'[[['#255#3#3#3#255#25#25#25#255#216
+'((('#255'CCC'#255#0#0#0#255'WWW'#255#127#127#127#255#127#127#127#255#127#127 +#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#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127
+#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255 +#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255
+#127#127#127#255#127#127#127#255'WWW'#255#0#0#0#255'CCC'#255#132#132#132#0#1 +'hhh'#255#9#9#9#255#1#1#1#255#133#133#133#0#255#255#255#0#255#255#255#0#251
+#1#1#255'+++'#255'}}}'#255#127#127#127#255#127#127#127#255#127#127#127#255 +#251#251#0'PPP'#255#0#0#0#255#9#9#9#255'[[['#255'}}}'#255#127#127#127#255#127
+#127#127#127#255#127#127#127#255#127#127#127#255#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
+#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255 +#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255
+#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127 +'}}}'#255'[[['#255#9#9#9#255#0#0#0#255'PPP'#255#251#251#251#0#255#255#255#0
+#255'hhh'#255#9#9#9#255#1#1#1#255#133#133#133#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'+++'
+#251#251#251#0'PPP'#255#0#0#0#255#9#9#9#255'[[['#255'}}}'#255#127#127#127#255 +#255'WWW'#255'jjj'#255'ooo'#255'ooo'#255'jjj'#255'WWW'#255'+++'#255#3#3#3#255
+#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127#255#127#127#127 +#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#9#9#9#255#0#0#0#255'PPP'#255#251#251#251#0#255#255#255 +#255#255#255#0#255#255#255#0#255#255#255#0#133#133#133#0#25#25#25#255#1#1#1
,#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 +#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 +#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 +#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' +#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 +'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' +#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' +'idth'#3#137#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 +'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' +'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 +'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'"' +'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 +#12'ClientHeight'#2'"'#11'ClientWidth'#2#30#8'TabOrder'#2#5#0#9'TCheckBox'#10
+'checkFuzzy'#4'Left'#2#4#6'Height'#2#19#3'Top'#2#9#5'Width'#2#20#8'OnChange' +'checkFuzzy'#4'Left'#2#4#6'Height'#2#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' +#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' +#4'Left'#2'('#6'Height'#3#5#2#3'Top'#2'i'#5'Width'#3#22#3#5'Align'#7#8'alCli'
+'lient'#10'BevelOuter'#7#9'bvLowered'#8'TabOrder'#2#3#0#0#9'TMainMenu'#8'Mai' +'ent'#10'BevelOuter'#7#9'bvLowered'#8'TabOrder'#2#3#0#0#9'TMainMenu'#8'MainM'
+'nMenu'#6'Images'#7#16'ImageListActions'#4'left'#2'r'#3'top'#2'~'#0#9'TMenuI' +'enu'#6'Images'#7#16'ImageListActions'#4'left'#2'r'#3'top'#2'~'#0#9'TMenuIte'
+'tem'#12'MenuItemFile'#7'Caption'#6#5'&File'#0#9'TMenuItem'#11'MenuItemNew'#6 +'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 +'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 +'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 +#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

@ -243,8 +243,7 @@ type
procedure MenuItemResizePaperClick(Sender: TObject); procedure MenuItemResizePaperClick(Sender: TObject);
procedure PaletteColorMouseMove(Sender: TObject; AColor: TColor; procedure PaletteColorMouseMove(Sender: TObject; AColor: TColor;
Shift: TShiftState); Shift: TShiftState);
procedure PaletteColorPick(Sender: TObject; AColor: TColor; procedure PaletteColorPick(Sender: TObject; AColor: TColor; Shift: TShiftState);
Shift: TShiftState);
procedure PanelFillDblClick(Sender: TObject); procedure PanelFillDblClick(Sender: TObject);
procedure PanelOutlineDblClick(Sender: TObject); procedure PanelOutlineDblClick(Sender: TObject);
procedure PanelPaperDblClick(Sender: TObject); procedure PanelPaperDblClick(Sender: TObject);
@ -274,7 +273,7 @@ type
procedure ToolRectShapeClick(Sender: TObject); procedure ToolRectShapeClick(Sender: TObject);
procedure ToolEraserClick(Sender: TObject); procedure ToolEraserClick(Sender: TObject);
procedure ToolSprayClick(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 PictureColorChange(Sender: TObject);
procedure PictureFileNameChange(Sender: TObject); procedure PictureFileNameChange(Sender: TObject);
procedure PictureSizeChange(Sender: TObject); procedure PictureSizeChange(Sender: TObject);
@ -310,10 +309,10 @@ implementation
uses Test, IconStrConsts; uses Test, IconStrConsts;
procedure SetControlsEnabled(AControl: TControl; AEnabled: Boolean); procedure SetControlsEnabled(AControl: TControl; AEnabled: boolean);
var var
AWinControl: TWinControl; AWinControl: TWinControl;
I: Integer; I: integer;
begin begin
AControl.Enabled := AEnabled; AControl.Enabled := AEnabled;
if AControl is TWinControl then if AControl is TWinControl then
@ -333,13 +332,15 @@ end;
procedure TMainForm.MenuItemResizeClick(Sender: TObject); procedure TMainForm.MenuItemResizeClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ResizeDialogForm.ShowDialog(ActivePicturePage); ResizeDialogForm.ShowDialog(ActivePicturePage);
end; end;
procedure TMainForm.MenuItemResizePaperClick(Sender: TObject); procedure TMainForm.MenuItemResizePaperClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ResizePaperDialogForm.ShowDialog(ActivePicturePage); ResizePaperDialogForm.ShowDialog(ActivePicturePage);
end; end;
@ -354,7 +355,8 @@ procedure TMainForm.PicturePageChange(Sender: TObject);
begin begin
UpdatePictureToolsEnabled; UpdatePictureToolsEnabled;
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
with ActivePictureEdit do with ActivePictureEdit do
begin begin
PanelOutline.Color := OutlineColor; PanelOutline.Color := OutlineColor;
@ -408,14 +410,14 @@ end;
procedure TMainForm.PicturePageCloseQuery(Sender: TObject; var CanClose: boolean); procedure TMainForm.PicturePageCloseQuery(Sender: TObject; var CanClose: boolean);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
CanClose := True; CanClose := True;
if ActivePictureEdit.Modified then if ActivePictureEdit.Modified then
begin begin
case MessageDlg(Application.Title, case MessageDlg(Application.Title, Format(lieSaveChanges,
Format(lieSaveChanges, [ActivePicturePage.Caption]), mtWarning, [ActivePicturePage.Caption]), mtWarning, mbYesNoCancel, 0) of
mbYesNoCancel, 0) of
mrYes: mrYes:
begin begin
ActivePicturePage.Save; ActivePicturePage.Save;
@ -428,150 +430,177 @@ end;
procedure TMainForm.Rotate180Execute(Sender: TObject); procedure TMainForm.Rotate180Execute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.Rotate180Clockwise; ActivePictureEdit.Rotate180Clockwise;
end; end;
procedure TMainForm.Rotate270Execute(Sender: TObject); procedure TMainForm.Rotate270Execute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.Rotate270Clockwise; ActivePictureEdit.Rotate270Clockwise;
end; end;
procedure TMainForm.Rotate90Execute(Sender: TObject); procedure TMainForm.Rotate90Execute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.Rotate90Clockwise; ActivePictureEdit.Rotate90Clockwise;
end; end;
procedure TMainForm.spinFillAlphaChange(Sender: TObject); procedure TMainForm.spinFillAlphaChange(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.FillAlpha := spinFillAlpha.Value; ActivePictureEdit.FillAlpha := spinFillAlpha.Value;
end; end;
procedure TMainForm.ToolCircleShapeClick(Sender: TObject); procedure TMainForm.ToolCircleShapeClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.Shape := psCircle; ActivePictureEdit.Shape := psCircle;
end; end;
procedure TMainForm.ToolColorPickClick(Sender: TObject); procedure TMainForm.ToolColorPickClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ChangeTool(ptColorPick); ChangeTool(ptColorPick);
end; end;
procedure TMainForm.ToolEllClick(Sender: TObject); procedure TMainForm.ToolEllClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ChangeTool(ptEllipse); ChangeTool(ptEllipse);
end; end;
procedure TMainForm.ToolFillClick(Sender: TObject); procedure TMainForm.ToolFillClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
// ActivePictureEdit.FillAndOutline := dmFill; Exit;
// ActivePictureEdit.FillAndOutline := dmFill;
end; end;
procedure TMainForm.ToolFillOutlineClick(Sender: TObject); procedure TMainForm.ToolFillOutlineClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
// ActivePictureEdit.FillAndOutline := dmFillAndOutline; Exit;
// ActivePictureEdit.FillAndOutline := dmFillAndOutline;
end; end;
procedure TMainForm.ToolFloodFillClick(Sender: TObject); procedure TMainForm.ToolFloodFillClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ChangeTool(ptFloodFill); ChangeTool(ptFloodFill);
end; end;
procedure TMainForm.ToolLineClick(Sender: TObject); procedure TMainForm.ToolLineClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ChangeTool(ptLine); ChangeTool(ptLine);
end; end;
procedure TMainForm.ToolMaskClick(Sender: TObject); procedure TMainForm.ToolMaskClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ChangeTool(ptMask); ChangeTool(ptMask);
end; end;
procedure TMainForm.ToolMaskEllipseClick(Sender: TObject); procedure TMainForm.ToolMaskEllipseClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.MaskTool := mtEllipse; ActivePictureEdit.MaskTool := mtEllipse;
end; end;
procedure TMainForm.ToolMaskFloodFillClick(Sender: TObject); procedure TMainForm.ToolMaskFloodFillClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.MaskTool := mtFloodFill; ActivePictureEdit.MaskTool := mtFloodFill;
end; end;
procedure TMainForm.ToolMaskRectangleClick(Sender: TObject); procedure TMainForm.ToolMaskRectangleClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.MaskTool := mtRectangle; ActivePictureEdit.MaskTool := mtRectangle;
end; end;
procedure TMainForm.ToolOutlineClick(Sender: TObject); procedure TMainForm.ToolOutlineClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
// ActivePictureEdit.FillAndOutline := dmOutline; Exit;
// ActivePictureEdit.FillAndOutline := dmOutline;
end; end;
procedure TMainForm.ToolPenClick(Sender: TObject); procedure TMainForm.ToolPenClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ChangeTool(ptPen); ChangeTool(ptPen);
end; end;
procedure TMainForm.ToolPolygonClick(Sender: TObject); procedure TMainForm.ToolPolygonClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ChangeTool(ptPolygon); ChangeTool(ptPolygon);
end; end;
procedure TMainForm.ToolRectangleClick(Sender: TObject); procedure TMainForm.ToolRectangleClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ChangeTool(ptRectangle); ChangeTool(ptRectangle);
end; end;
procedure TMainForm.ToolRectShapeClick(Sender: TObject); procedure TMainForm.ToolRectShapeClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.Shape := psRect; ActivePictureEdit.Shape := psRect;
end; end;
procedure TMainForm.ToolEraserClick(Sender: TObject); procedure TMainForm.ToolEraserClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ChangeTool(ptEraser); ChangeTool(ptEraser);
end; end;
procedure TMainForm.ToolSprayClick(Sender: TObject); procedure TMainForm.ToolSprayClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ChangeTool(ptSpray); ChangeTool(ptSpray);
end; end;
procedure TMainForm.PictureMouseMove(Sender: TObject; Shift: TShiftState; X, procedure TMainForm.PictureMouseMove(Sender: TObject; Shift: TShiftState;
Y: Integer); X, Y: integer);
var var
DX, DY: Integer; DX, DY: integer;
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
StatusBar.Panels[2].Text := Format('%3.d : %3.d', [X, Y]); StatusBar.Panels[2].Text := Format('%3.d : %3.d', [X, Y]);
DX := ActivePictureEdit.EndPos.X - ActivePictureEdit.StartPos.X; DX := ActivePictureEdit.EndPos.X - ActivePictureEdit.StartPos.X;
DY := ActivePictureEdit.EndPos.Y - ActivePictureEdit.StartPos.Y; DY := ActivePictureEdit.EndPos.Y - ActivePictureEdit.StartPos.Y;
if DX >= 0 then Inc(DX) if DX >= 0 then
else Dec(DX); Inc(DX)
if DY >= 0 then Inc(DY) else
else Dec(DY); 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[3].Text := Format('%3.d x %3.d', [DX, DY]);
StatusBar.Panels[4].Text := StatusBar.Panels[4].Text :=
@ -580,7 +609,8 @@ end;
procedure TMainForm.PictureColorChange(Sender: TObject); procedure TMainForm.PictureColorChange(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
with ActivePictureEdit do with ActivePictureEdit do
begin begin
PanelOutline.Color := OutlineColor; PanelOutline.Color := OutlineColor;
@ -591,21 +621,23 @@ end;
procedure TMainForm.PictureFileNameChange(Sender: TObject); procedure TMainForm.PictureFileNameChange(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
StatusBar.Panels[0].Text := ActivePicturePage.Filename; StatusBar.Panels[0].Text := ActivePicturePage.Filename;
end; end;
procedure TMainForm.PictureSizeChange(Sender: TObject); procedure TMainForm.PictureSizeChange(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
with ActivePictureEdit do with ActivePictureEdit do
StatusBar.Panels[1].Text := Format('%d x %d', StatusBar.Panels[1].Text := Format('%d x %d', [Picture.Width, Picture.Height]);
[Picture.Width, Picture.Height]);
end; end;
procedure TMainForm.ViewShowGridExecute(Sender: TObject); procedure TMainForm.ViewShowGridExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
if ViewShowGrid.Checked then if ViewShowGrid.Checked then
ActivePictureEdit.Options := ActivePictureEdit.Options + [poShowGrid] ActivePictureEdit.Options := ActivePictureEdit.Options + [poShowGrid]
else else
@ -616,7 +648,8 @@ end;
procedure TMainForm.ViewShowMaskExecute(Sender: TObject); procedure TMainForm.ViewShowMaskExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
if ViewShowMask.Checked then if ViewShowMask.Checked then
ActivePictureEdit.Options := ActivePictureEdit.Options + [poShowMask] ActivePictureEdit.Options := ActivePictureEdit.Options + [poShowMask]
else else
@ -627,24 +660,30 @@ end;
procedure TMainForm.ViewShowPreviewExecute(Sender: TObject); procedure TMainForm.ViewShowPreviewExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
end; end;
procedure TMainForm.PaletteColorPick(Sender: TObject; AColor: TColor; procedure TMainForm.PaletteColorPick(Sender: TObject; AColor: TColor;
Shift: TShiftState); Shift: TShiftState);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
with ActivePictureEdit do with ActivePictureEdit do
begin begin
if ssLeft in Shift then OutlineColor := AColor; if ssLeft in Shift then
if ssRight in Shift then FillColor := AColor; OutlineColor := AColor;
if ssMiddle in Shift then PaperColor := AColor; if ssRight in Shift then
FillColor := AColor;
if ssMiddle in Shift then
PaperColor := AColor;
end; end;
end; end;
procedure TMainForm.PanelFillDblClick(Sender: TObject); procedure TMainForm.PanelFillDblClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ColorDialog.Color := ActivePictureEdit.FillColor; ColorDialog.Color := ActivePictureEdit.FillColor;
if ColorDialog.Execute then if ColorDialog.Execute then
begin begin
@ -654,7 +693,8 @@ end;
procedure TMainForm.PanelOutlineDblClick(Sender: TObject); procedure TMainForm.PanelOutlineDblClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ColorDialog.Color := ActivePictureEdit.OutlineColor; ColorDialog.Color := ActivePictureEdit.OutlineColor;
if ColorDialog.Execute then if ColorDialog.Execute then
begin begin
@ -664,7 +704,8 @@ end;
procedure TMainForm.PanelPaperDblClick(Sender: TObject); procedure TMainForm.PanelPaperDblClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ColorDialog.Color := ActivePictureEdit.PaperColor; ColorDialog.Color := ActivePictureEdit.PaperColor;
if ColorDialog.Execute then if ColorDialog.Execute then
begin begin
@ -702,7 +743,7 @@ end;
procedure TMainForm.UpdatePictureToolsEnabled; procedure TMainForm.UpdatePictureToolsEnabled;
var var
AValue: Boolean; AValue: boolean;
begin begin
AValue := Pictures.CanEdit; AValue := Pictures.CanEdit;
@ -770,7 +811,8 @@ procedure TMainForm.UpdateToolSettings;
var var
Settings: TToolSettings; Settings: TToolSettings;
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
case ActivePictureEdit.Tool of case ActivePictureEdit.Tool of
ptColorPick: Settings := []; ptColorPick: Settings := [];
@ -829,7 +871,7 @@ begin
Palette.LoadPalette('default.pal'); Palette.LoadPalette('default.pal');
// Main Form // Main Form
Caption:=lieMain; Caption := lieMain;
// Menus // Menus
MenuItemFile.Caption := lieMenuFile; MenuItemFile.Caption := lieMenuFile;
@ -841,94 +883,94 @@ begin
// Actions // Actions
FileNew.Caption := lieFileNew; FileNew.Caption := lieFileNew;
FileOpen.Caption:=lieFileOpen; FileOpen.Caption := lieFileOpen;
FileSave.Caption:=lieFileSave; FileSave.Caption := lieFileSave;
FileSaveAs.Caption:=lieFileSaveAs; FileSaveAs.Caption := lieFileSaveAs;
FileExportAsLRS.Caption:=lieFileExportAsLRS; FileExportAsLRS.Caption := lieFileExportAsLRS;
FileClose.Caption:=lieFileClose; FileClose.Caption := lieFileClose;
Rotate90.Caption:=lieRotate90; Rotate90.Caption := lieRotate90;
Rotate180.Caption:=lieRotate180; Rotate180.Caption := lieRotate180;
Rotate270.Caption:=lieRotate270; Rotate270.Caption := lieRotate270;
RotateCustom.Caption:=lieRotateCustom; RotateCustom.Caption := lieRotateCustom;
FlipVertically.Caption:=lieFlipVertically; FlipVertically.Caption := lieFlipVertically;
FlipHorizontally.Caption:=lieFlipHorizontally; FlipHorizontally.Caption := lieFlipHorizontally;
PictureResizePaper.Caption:=liePictureResizePaper; PictureResizePaper.Caption := liePictureResizePaper;
PictureResize.Caption:=liePictureResize; PictureResize.Caption := liePictureResize;
ColorsGrayscale.Caption:=lieColorsGrayscale; ColorsGrayscale.Caption := lieColorsGrayscale;
ColorsInvert.Caption:=lieColorsInvert; ColorsInvert.Caption := lieColorsInvert;
ColorsDisable.Caption:=lieColorsDisable; ColorsDisable.Caption := lieColorsDisable;
ViewShowMask.Caption:=lieViewShowMask; ViewShowMask.Caption := lieViewShowMask;
ViewShowGrid.Caption:=lieViewShowGrid; ViewShowGrid.Caption := lieViewShowGrid;
MaskInvert.Caption:=lieMaskInvert; MaskInvert.Caption := lieMaskInvert;
MaskRemove.Caption:=lieMaskRemove; MaskRemove.Caption := lieMaskRemove;
EditCopy.Caption:=lieEditCopy; EditCopy.Caption := lieEditCopy;
EditCut.Caption:=lieEditCut; EditCut.Caption := lieEditCut;
EditDelete.Caption:=lieEditDelete; EditDelete.Caption := lieEditDelete;
EditPaste.Caption:=lieEditPaste; EditPaste.Caption := lieEditPaste;
EditRedo.Caption:=lieEditRedo; EditRedo.Caption := lieEditRedo;
EditSelectAll.Caption:=lieEditSelectAll; EditSelectAll.Caption := lieEditSelectAll;
EditUndo.Caption:=lieEditUndo; EditUndo.Caption := lieEditUndo;
// Hints for Actions // Hints for Actions
FileNew.Hint := lieHintFileNew; FileNew.Hint := lieHintFileNew;
FileOpen.Hint:=lieHintFileOpen; FileOpen.Hint := lieHintFileOpen;
FileSave.Hint:=lieHintFileSave; FileSave.Hint := lieHintFileSave;
FileSaveAs.Hint:=lieHintFileSaveAs; FileSaveAs.Hint := lieHintFileSaveAs;
FileExportAsLRS.Hint:=lieHintFileExportAsLRS; FileExportAsLRS.Hint := lieHintFileExportAsLRS;
FileClose.Hint:=lieHintFileClose; FileClose.Hint := lieHintFileClose;
Rotate90.Hint:=lieHintRotate90; Rotate90.Hint := lieHintRotate90;
Rotate180.Hint:=lieHintRotate180; Rotate180.Hint := lieHintRotate180;
Rotate270.Hint:=lieHintRotate270; Rotate270.Hint := lieHintRotate270;
RotateCustom.Hint:=lieHintRotateCustom; RotateCustom.Hint := lieHintRotateCustom;
FlipVertically.Hint:=lieHintFlipVertically; FlipVertically.Hint := lieHintFlipVertically;
FlipHorizontally.Hint:=lieHintFlipHorizontally; FlipHorizontally.Hint := lieHintFlipHorizontally;
PictureResizePaper.Hint:=lieHintPictureResizePaper; PictureResizePaper.Hint := lieHintPictureResizePaper;
PictureResize.Hint:=lieHintPictureResize; PictureResize.Hint := lieHintPictureResize;
ColorsGrayscale.Hint:=lieHintColorsGrayscale; ColorsGrayscale.Hint := lieHintColorsGrayscale;
ColorsInvert.Hint:=lieHintColorsInvert; ColorsInvert.Hint := lieHintColorsInvert;
ColorsDisable.Hint:=lieHintColorsDisable; ColorsDisable.Hint := lieHintColorsDisable;
ViewShowMask.Hint:=lieHintViewShowMask; ViewShowMask.Hint := lieHintViewShowMask;
ViewShowGrid.Hint:=lieHintViewShowGrid; ViewShowGrid.Hint := lieHintViewShowGrid;
MaskInvert.Hint:=lieHintMaskInvert; MaskInvert.Hint := lieHintMaskInvert;
MaskRemove.Hint:=lieHintMaskRemove; MaskRemove.Hint := lieHintMaskRemove;
EditCopy.Hint:=lieHintEditCopy; EditCopy.Hint := lieHintEditCopy;
EditCut.Hint:=lieHintEditCut; EditCut.Hint := lieHintEditCut;
EditDelete.Hint:=lieHintEditDelete; EditDelete.Hint := lieHintEditDelete;
EditPaste.Hint:=lieHintEditPaste; EditPaste.Hint := lieHintEditPaste;
EditRedo.Hint:=lieHintEditRedo; EditRedo.Hint := lieHintEditRedo;
EditSelectAll.Hint:=lieHintEditSelectAll; EditSelectAll.Hint := lieHintEditSelectAll;
EditUndo.Hint:=lieHintEditUndo; EditUndo.Hint := lieHintEditUndo;
//Labels //Labels
LabelZoom.Caption:=lieLabelZoom; LabelZoom.Caption := lieLabelZoom;
LabelShape.Caption:=lieLabelShape; LabelShape.Caption := lieLabelShape;
LabelFillOutline.Caption:=lieLabelFillOutline; LabelFillOutline.Caption := lieLabelFillOutline;
LabelMaskTool.Caption:=lieLabelMaskTool; LabelMaskTool.Caption := lieLabelMaskTool;
LabelOutline.Caption:=lieLabelOutline; LabelOutline.Caption := lieLabelOutline;
LabelFill.Caption:=lieLabelFill; LabelFill.Caption := lieLabelFill;
LabelPaper.Caption:=lieLabelPaper; LabelPaper.Caption := lieLabelPaper;
LabelSize.Caption:=lieLabelSize; LabelSize.Caption := lieLabelSize;
LabelRoundness.Caption:=lieLabelRoundness; LabelRoundness.Caption := lieLabelRoundness;
LabelDensity.Caption:=lieLabelDensity; LabelDensity.Caption := lieLabelDensity;
LabelTolerance.Caption:=lieLabelTolerance; LabelTolerance.Caption := lieLabelTolerance;
//Hints for Tools //Hints for Tools
ToolSpray.Hint:=lieHintToolSpray; ToolSpray.Hint := lieHintToolSpray;
ToolFloodFill.Hint:=lieHintToolFloodFill; ToolFloodFill.Hint := lieHintToolFloodFill;
ToolEraser.Hint:=lieHintToolEraser; ToolEraser.Hint := lieHintToolEraser;
ToolPen.Hint:=lieHintToolPen; ToolPen.Hint := lieHintToolPen;
ToolColorPick.Hint:=lieHintToolColorPick; ToolColorPick.Hint := lieHintToolColorPick;
ToolMask.Hint:=lieHintToolMask; ToolMask.Hint := lieHintToolMask;
ToolLine.Hint:=lieHintToolLine; ToolLine.Hint := lieHintToolLine;
ToolRectangle.Hint:=lieHintToolPolygon; ToolRectangle.Hint := lieHintToolPolygon;
ToolPolygon.Hint:=lieHintToolEllipse; ToolPolygon.Hint := lieHintToolEllipse;
ToolEllipse.Hint:=lieHintToolRectangle; ToolEllipse.Hint := lieHintToolRectangle;
//File Dialogs //File Dialogs
ColorDialog.Title:=lieColorDialog; ColorDialog.Title := lieColorDialog;
OpenPictureDialog.Title:=lieOpenPictureDialog; OpenPictureDialog.Title := lieOpenPictureDialog;
SavePictureDialog.Title:=lieSavePictureDialog; SavePictureDialog.Title := lieSavePictureDialog;
ExportResourceDialog.Title:=lieExportResourceDialog; ExportResourceDialog.Title := lieExportResourceDialog;
end; end;
procedure TMainForm.FormShow(Sender: TObject); procedure TMainForm.FormShow(Sender: TObject);
@ -940,13 +982,15 @@ end;
procedure TMainForm.MaskInvertExecute(Sender: TObject); procedure TMainForm.MaskInvertExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.InvertMask; ActivePictureEdit.InvertMask;
end; end;
procedure TMainForm.MaskRemoveExecute(Sender: TObject); procedure TMainForm.MaskRemoveExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.RemoveMask; ActivePictureEdit.RemoveMask;
end; end;
@ -962,13 +1006,14 @@ end;
procedure TMainForm.MenuItemClipPaperToMaskClick(Sender: TObject); procedure TMainForm.MenuItemClipPaperToMaskClick(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.ClipPaperToMask; ActivePictureEdit.ClipPaperToMask;
end; end;
procedure TMainForm.FileNewExecute(Sender: TObject); procedure TMainForm.FileNewExecute(Sender: TObject);
begin begin
if NewDialogForm.ShowModal = mrOK then if NewDialogForm.ShowModal = mrOk then
begin begin
with NewDialogForm do with NewDialogForm do
Pictures.New(UpDownWidth.Position, UpDownHeight.Position, Pictures.New(UpDownWidth.Position, UpDownHeight.Position,
@ -978,7 +1023,7 @@ end;
procedure TMainForm.FileOpenExecute(Sender: TObject); procedure TMainForm.FileOpenExecute(Sender: TObject);
var var
I: Integer; I: integer;
begin begin
if OpenPictureDialog.Execute then if OpenPictureDialog.Execute then
begin begin
@ -997,7 +1042,7 @@ end;
procedure TMainForm.FileExportAsLRSExecute(Sender: TObject); procedure TMainForm.FileExportAsLRSExecute(Sender: TObject);
var var
Value: String; Value: string;
begin begin
if ExportResourceDialog.Execute then if ExportResourceDialog.Execute then
begin begin
@ -1017,13 +1062,15 @@ end;
procedure TMainForm.FlipHorizontallyExecute(Sender: TObject); procedure TMainForm.FlipHorizontallyExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.FlipHorizontally; ActivePictureEdit.FlipHorizontally;
end; end;
procedure TMainForm.FlipVerticallyExecute(Sender: TObject); procedure TMainForm.FlipVerticallyExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.FlipVertically; ActivePictureEdit.FlipVertically;
end; end;
@ -1040,41 +1087,47 @@ end;
procedure TMainForm.ComboBoxZoomChange(Sender: TObject); procedure TMainForm.ComboBoxZoomChange(Sender: TObject);
var var
V, E: Integer; V, E: integer;
S: String; S: string;
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
if Pos('%', ComboBoxZoom.Text) > 0 then if Pos('%', ComboBoxZoom.Text) > 0 then
S := Trim(Copy(ComboBoxZoom.Text, 1, Pos('%', ComboBoxZoom.Text) - 1)) S := Trim(Copy(ComboBoxZoom.Text, 1, Pos('%', ComboBoxZoom.Text) - 1))
else else
S := Trim(ComboBoxZoom.Text); S := Trim(ComboBoxZoom.Text);
Val(S, V, E); Val(S, V, E);
if V <= 0 then V := 100; if V <= 0 then
V := 100;
ActivePictureEdit.Zoom := V / 100; ActivePictureEdit.Zoom := V / 100;
end; end;
procedure TMainForm.EditCopyExecute(Sender: TObject); procedure TMainForm.EditCopyExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.Copy; ActivePictureEdit.Copy;
end; end;
procedure TMainForm.EditCutExecute(Sender: TObject); procedure TMainForm.EditCutExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.Cut; ActivePictureEdit.Cut;
end; end;
procedure TMainForm.EditDeleteExecute(Sender: TObject); procedure TMainForm.EditDeleteExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.Delete; ActivePictureEdit.Delete;
end; end;
procedure TMainForm.EditDensityChange(Sender: TObject); procedure TMainForm.EditDensityChange(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.RandomDensity := UpDownDensity.Position / 100; ActivePictureEdit.RandomDensity := UpDownDensity.Position / 100;
end; end;
@ -1085,56 +1138,65 @@ end;
procedure TMainForm.EditRoundnessChange(Sender: TObject); procedure TMainForm.EditRoundnessChange(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.RectangleRoundness := UpDownRoundness.Position; ActivePictureEdit.RectangleRoundness := UpDownRoundness.Position;
end; end;
procedure TMainForm.EditSelectAllExecute(Sender: TObject); procedure TMainForm.EditSelectAllExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.SelectAll; ActivePictureEdit.SelectAll;
end; end;
procedure TMainForm.ColorsInvertExecute(Sender: TObject); procedure TMainForm.ColorsInvertExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.Invert; ActivePictureEdit.Invert;
end; end;
procedure TMainForm.ComboBoxZoomEditingDone(Sender: TObject); procedure TMainForm.ComboBoxZoomEditingDone(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ComboBoxZoomChange(nil); ComboBoxZoomChange(nil);
ComboBoxZoom.Text := Format('%d %%', [Round(ActivePictureEdit.Zoom * 100)]); ComboBoxZoom.Text := Format('%d %%', [Round(ActivePictureEdit.Zoom * 100)]);
end; end;
procedure TMainForm.ColorsGrayscaleExecute(Sender: TObject); procedure TMainForm.ColorsGrayscaleExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.Grayscale; ActivePictureEdit.Grayscale;
end; end;
procedure TMainForm.ColorsDisableExecute(Sender: TObject); procedure TMainForm.ColorsDisableExecute(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.Disable; ActivePictureEdit.Disable;
end; end;
procedure TMainForm.checkFuzzyChange(Sender: TObject); procedure TMainForm.checkFuzzyChange(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.Fuzzy := checkFuzzy.Checked; ActivePictureEdit.Fuzzy := checkFuzzy.Checked;
end; end;
procedure TMainForm.EditSizeChange(Sender: TObject); procedure TMainForm.EditSizeChange(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.Size := UpDownSize.Position; ActivePictureEdit.Size := UpDownSize.Position;
end; end;
procedure TMainForm.EditToleranceChange(Sender: TObject); procedure TMainForm.EditToleranceChange(Sender: TObject);
begin begin
if not Pictures.CanEdit then Exit; if not Pictures.CanEdit then
Exit;
ActivePictureEdit.FloodFillTolerance := UpDownTolerance.Position / 100; ActivePictureEdit.FloodFillTolerance := UpDownTolerance.Position / 100;
end; end;
@ -1145,6 +1207,3 @@ initialization
end. end.

View File

@ -1,4 +1,4 @@
unit rgbdrawutils; unit RGBDrawUtils;
{$mode objfpc}{$H+} {$mode objfpc}{$H+}
@ -31,7 +31,8 @@ type
public public
constructor Create; override; constructor Create; override;
destructor Destroy; override; destructor Destroy; override;
procedure ApplyScanLine; procedure SetScanLineValue;
procedure Assign(Source: TPersistent); override;
procedure Clear; virtual; procedure Clear; virtual;
procedure ClearWhite; virtual; procedure ClearWhite; virtual;
procedure Invert; virtual; procedure Invert; virtual;
@ -49,6 +50,46 @@ type
implementation 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); procedure BMPRotate90(const Bitmap: TCustomRGBBitmapCore);
var var
i, j: integer; i, j: integer;
@ -69,11 +110,11 @@ begin
begin begin
rowOut := Bmp.ScanLine[i]; rowOut := Bmp.ScanLine[i];
// Inc(rowOut, Height - j); // Inc(rowOut, Height - j);
rowOut^[i * (Height - j)] := rowIn^[i]; rowOut^[j] := rowIn^[i];
// Inc(rowIn); // Inc(rowIn);
end; end;
end; end;
Bmp.ApplyScanLine; Bmp.SetScanLineValue;
Bitmap.Assign(Bmp); Bitmap.Assign(Bmp);
end; end;
@ -101,7 +142,7 @@ begin
Inc(rowIn); Inc(rowIn);
end; end;
end; end;
Bmp.ApplyScanLine; Bmp.SetScanLineValue;
Bitmap.Assign(Bmp); Bitmap.Assign(Bmp);
end; end;
@ -129,7 +170,7 @@ begin
Inc(rowIn); Inc(rowIn);
end; end;
end; end;
Bmp.ApplyScanLine; Bmp.SetScanLineValue;
Bitmap.Assign(Bmp); Bitmap.Assign(Bmp);
end; end;
@ -252,7 +293,7 @@ begin
end; end;
end; end;
end; end;
Result.ApplyScanLine; Result.SetScanLineValue;
end; end;
procedure DrawSamePixel(ABitmap: TCustomRGBBitmapCore; Value: integer); procedure DrawSamePixel(ABitmap: TCustomRGBBitmapCore; Value: integer);
@ -267,13 +308,14 @@ begin
LScan := ABitmap.Scanline[i]; LScan := ABitmap.Scanline[i];
for j := 0 to ABitmap.Width - 1 do for j := 0 to ABitmap.Width - 1 do
begin begin
LNew.rgbtBlue := Value; //LNew.rgbtBlue - Value; LNew := LScan^[j];
LNew.rgbtGreen := Value; //LNew.rgbtGreen - Value; LScan^[j].rgbtBlue := LNew.rgbtBlue;
LNew.rgbtRed := Value; //LNew.rgbtRed - Value; LScan^[j].rgbtGreen := LNew.rgbtGreen;
LScan^[j] := LNew; LScan^[j].rgbtRed := LNew.rgbtRed;
//LScan^[j] := LNew;
end; end;
end; end;
ABitmap.ApplyScanLine; ABitmap.SetScanLineValue;
end; end;
constructor TCustomRGBBitmapCore.Create; constructor TCustomRGBBitmapCore.Create;
@ -297,7 +339,7 @@ begin
Result := FIntfImg.GetDataLineStart(Row); Result := FIntfImg.GetDataLineStart(Row);
end; end;
procedure TCustomRGBBitmapCore.ApplyScanLine; procedure TCustomRGBBitmapCore.SetScanLineValue;
var var
TmpBmp: TBitmap; TmpBmp: TBitmap;
ImgHandle, ImgMaskHandle: HBitmap; ImgHandle, ImgMaskHandle: HBitmap;
@ -308,8 +350,14 @@ begin
TmpBmp.Handle := ImgHandle; TmpBmp.Handle := ImgHandle;
TmpBmp.MaskHandle := ImgMaskHandle; TmpBmp.MaskHandle := ImgMaskHandle;
Empty; Empty;
Canvas.Draw(0, 0, TmpBmp); //Canvas.Draw(0, 0, TmpBmp);
Assign(TmpBmp);
TmpBmp.Free; TmpBmp.Free;
end;
procedure TCustomRGBBitmapCore.Assign(Source: TPersistent);
begin
inherited;
FIntfImg.LoadFromBitmap(Handle, MaskHandle); FIntfImg.LoadFromBitmap(Handle, MaskHandle);
end; end;
@ -381,19 +429,46 @@ begin
end; end;
procedure TCustomRGBBitmapCore.Rotate90; procedure TCustomRGBBitmapCore.Rotate90;
var
tmp: TCustomRGBBitmapCore;
begin begin
//DrawSamePixel(Self, 240); tmp := TCustomRGBBitmapCore.Create;
BMPRotate90(Self); 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; end;
procedure TCustomRGBBitmapCore.Rotate180; procedure TCustomRGBBitmapCore.Rotate180;
var
tmp: TCustomRGBBitmapCore;
begin 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; end;
procedure TCustomRGBBitmapCore.Rotate270; procedure TCustomRGBBitmapCore.Rotate270;
var
tmp: TCustomRGBBitmapCore;
begin 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; end;
procedure TCustomRGBBitmapCore.FillEllipse(X1, Y1, X2, Y2: integer); procedure TCustomRGBBitmapCore.FillEllipse(X1, Y1, X2, Y2: integer);