]> O.S.I.I.S - jp/crow.git/commitdiff
Gradient, Bitmap and Svg Filling
authorjpbruyere <jp.bruyere@hotmail.com>
Tue, 2 Feb 2016 22:38:54 +0000 (23:38 +0100)
committerjpbruyere <jp.bruyere@hotmail.com>
Tue, 2 Feb 2016 22:38:54 +0000 (23:38 +0100)
38 files changed:
Crow.csproj
Crow.userprefs
Templates/ArrowButTemplate.crow
Templates/Button.crow
Templates/GroupBox.goml
Templates/ScrollBar.goml
Templates/Window.goml
Tests/GOLIBTest_4.cs
Tests/GOLIBTest_5.cs
Tests/GOLIBTests.cs
Tests/Interfaces/0.crow [new file with mode: 0755]
Tests/Interfaces/test2WayBinding.crow [new file with mode: 0755]
Tests/Interfaces/testBorder.goml
Tests/Interfaces/testButton.crow
Tests/Interfaces/testGroupBox.goml
Tests/Interfaces/testWindow.goml
Tests/Tests.csproj
Tests/image/crow0.svg [new file with mode: 0644]
src/BmpPicture.cs
src/Cairo/IFill.cs [deleted file]
src/Colors.cs
src/Fill/Fill.cs [new file with mode: 0644]
src/Gradient.cs [new file with mode: 0644]
src/GraphicObjects/AnalogMeter.cs
src/GraphicObjects/Border.cs
src/GraphicObjects/GraduatedSlider.cs
src/GraphicObjects/GraphicObject.cs
src/GraphicObjects/Group.cs
src/GraphicObjects/Label.cs
src/GraphicObjects/ProgressBar.cs
src/GraphicObjects/Slider.cs
src/GraphicObjects/TextBox.cs
src/GraphicObjects/TextRun.cs
src/Picture.cs
src/Point.cs
src/Rectangle.cs
src/SolidColor.cs [new file with mode: 0644]
src/SvgPicture.cs

index 498e7febfb1b26cd1336f2b36d166221a39c618a..3f655d1753596130073f749cddb09bf839d1f7b1 100644 (file)
     <Compile Include="src\GraphicObjects\GroupBox.cs" />
     <Compile Include="src\GraphicObjects\ScrollBar.cs" />
     <Compile Include="src\BubblingMouseButtonEventArgs.cs" />
-    <Compile Include="src\Cairo\IFill.cs" />
+    <Compile Include="src\SolidColor.cs" />
+    <Compile Include="src\Gradient.cs" />
+    <Compile Include="src\Fill\Fill.cs" />
   </ItemGroup>
   <ItemGroup>
     <Reference Include="System" />
     <Folder Include="Images\Icons\" />
     <Folder Include="src\CompilerServices\" />
     <Folder Include="src\OpenGL\" />
+    <Folder Include="src\Fill\" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="Images\Icons\updown.svg" />
index f3fbc68eb3863486751f508ca3fc2c46c387d375..cdb46ef86776f4d00b23ad9e429433694a3d81a4 100644 (file)
@@ -1,15 +1,16 @@
 <Properties GitUserInfo="UsingGIT" StartupItem="Tests/Tests.csproj">
   <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|Linux_x86" />
-  <MonoDevelop.Ide.Workbench ActiveDocument="src/Colors.cs">
+  <MonoDevelop.Ide.Workbench ActiveDocument="Tests/Interfaces/testWindow.goml">
     <Files>
-      <File FileName="src/Colors.cs" Line="13" Column="32" />
+      <File FileName="Tests/Interfaces/testWindow.goml" Line="5" Column="35" />
+      <File FileName="src/GraphicObjects/Slider.cs" Line="1" Column="1" />
+      <File FileName="src/GraphicObjects/GraphicObject.cs" Line="1" Column="1" />
+      <File FileName="Tests/GOLIBTests.cs" Line="1" Column="1" />
+      <File FileName="src/Fill/Fill.cs" Line="1" Column="1" />
     </Files>
   </MonoDevelop.Ide.Workbench>
   <MonoDevelop.Ide.DebuggingService.Breakpoints>
-    <BreakpointStore>
-      <Breakpoint file="/mnt/data2/devel/GOLib/src/GraphicObjects/HorizontalStack.cs" line="26" column="1" />
-      <Breakpoint file="/mnt/data2/devel/GOLib/MonoDevelop.GOLib/src/GOLibNodeExtension.cs" line="99" column="1" />
-    </BreakpointStore>
+    <BreakpointStore />
   </MonoDevelop.Ide.DebuggingService.Breakpoints>
   <MonoDevelop.Ide.DebuggingService.PinnedWatches>
     <Watch file="../../src/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs" line="1399" offsetX="14" offsetY="23383" expression="ex" liveUpdate="False" />
@@ -19,7 +20,6 @@
     <Watch file="src/XCursor.cs" line="51" offsetX="812" offsetY="409" expression="pos" liveUpdate="False" />
     <Watch file="src/OpenTKGameWindow.cs" line="234" offsetX="746" offsetY="1618" expression="lqi" liveUpdate="False" />
     <Watch file="src/GraphicObjects/GenericStack.cs" line="171" offsetX="447" offsetY="1717" expression="layoutType" liveUpdate="False" />
-    <Watch file="src/GraphicObjects/GraphicObject.cs" line="925" offsetX="695" offsetY="6851" expression="d.Method.Name" liveUpdate="False" />
     <Watch file="src/GraphicObjects/Combobox.cs" line="97" offsetX="750" offsetY="1303" expression="value" liveUpdate="False" />
     <Watch file="src/Interface.cs" line="217" offsetX="623" offsetY="3315" expression="es" liveUpdate="False" />
     <Watch file="src/Interface.cs" line="217" offsetX="623" offsetY="3339" expression="es.MemberName" liveUpdate="False" />
index 94f717d7337abfef3fe7ffe6b8bbcc6d01e57439..099249c3bba064950f36db4d3d9dc788cecba3c0 100755 (executable)
@@ -4,11 +4,11 @@
        <Label Text="{../../Caption}" Height="80" Width="200"/>
 </HorizontalStack>-->
 <Border Name="Content"
-       Background="Gray" Foreground="DarkGray" 
+       Background="vgradient|0:White|0,2:Gray|0,9:Gray|1:Black" Foreground="DarkGray" 
        Height="{../TemplatedHeight}" Width="{../TemplatedWidth}"
        MouseEnter="{Foreground=White}"
        MouseLeave="{Foreground=DarkGray}"
-       MouseDown="{Background=LightGray}"
-       MouseUp="{Background=Gray}"
+       MouseDown="{Background=vgradient|0:Black|0,1:Gray|0,9:Gray|1:White}"
+       MouseUp="{Background=vgradient|0:White|0,2:Gray|0,9:Gray|1:Black}"
        >
 </Border>
\ No newline at end of file
index d95244d52a6cce4c34388a69aa0b8315e6f4f08d..9e6e541ca733de07cc2ddd87191b7189496ab8e3 100755 (executable)
@@ -3,12 +3,17 @@
        <Image Margin="2" Width="14" Height="14" Path="{../../Image}"  SvgSub="{../../SvgSub}"/>
        <Label Text="{../../Caption}" Height="80" Width="200"/>
 </HorizontalStack>-->
-<Border Fit="True" Background="Gray" MinimumSize="50;20" Foreground="Gray" CornerRadius="3" 
-       MouseEnter="{Foreground=White;caption.Foreground=White}"
-       MouseLeave="{Foreground=Gray;caption.Foreground=Black}"
-       MouseDown="{Background=LightGray}"
-       MouseUp="{Background=Gray}"
+<Border Fit="True" Background="Gray" MinimumSize="50;20" 
+               Foreground="Transparent" CornerRadius="3" BorderWidth="1" 
+       MouseEnter="{Foreground=vgradient|0:White|0,2:Gray|0,9:Gray|1:Black;caption.Foreground=White}"
+       MouseLeave="{Foreground=Transparent;caption.Foreground=Black}"
+       MouseDown="{Foreground=vgradient|0:Black|0,05:Gray|0,85:Gray|1:White}"
+       MouseUp="{Foreground=vgradient|0:White|0,2:Gray|0,9:Gray|1:Black}"                  
        >
+<!--
+       MouseDown="{Background=vgradient|0:Black|0,1:Gray|0,9:Gray|1:White}"
+       MouseUp="{Background=vgradient|0:White|0,1:Gray|0,9:Gray|1:Black}"
+-->
 <!--   <Image Height="0" Width="0" Margin="0" Path="{../../Image}" SvgSub="{../../SvgSub}"/>-->
        <Label Name="caption" Margin="5" Foreground="Black" Text="{../../Caption}"/>
 </Border>
\ No newline at end of file
index 4f6035aa0e55bf813cb5353ecbf70a384a0a1070..b92ee8b260ab65d60f23cd17988200a979bef842 100755 (executable)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <Group Height="{../TemplatedHeight}" Width="{../TemplatedWidth}">
-       <Border CornerRadius="5" BorderWidth="1" Margin="6"
+       <Border CornerRadius="5" BorderWidth="1" Margin="6" Foreground="{../../Foreground}"
                Height="{../../TemplatedHeight}" Width="{../../TemplatedWidth}">
                <Container Name="Content" Margin="10"
                                Height="{../../../TemplatedHeight}" Width="{../../../TemplatedWidth}"/>
index b279d09fb4d24c6821ebea300cb0b06e9eb75fad..4734eea9c737076db87f6738d748569ea3f29395 100755 (executable)
@@ -5,7 +5,8 @@
                        Template="#Crow.Templates.ArrowButTemplate.crow">
                        <Image Margin="1" Path="#Crow.Images.Icons.updown.svg" SvgSub="up"/>
                </Button>
-               <Slider Name="Slider" Value="{../../../Scroll}" Maximum="{../../../MaximumScroll}" 
+               <Slider Name="Slider" Value="{../../../Scroll}" Maximum="{../../../MaximumScroll}"
+                       Background="hgradient|0:Black|0,1:Gray|0,9:Gray|1:LightGray"
                        Width="{../../../TemplatedWidth}" Height="{../../../TemplatedHeight}" Orientation="{../../../Orientation}"
                        ValueChanged="../../../onSliderValueChange"/>
                <Button MouseRepeat="true" Width="12" Height="8" MouseClick="../../../onScrollForth"
index 42af9d902e6fbfd571595646a814bdee5a1f176e..dd3fec7dc3d15736211bd5f9ae9b4b3074be1b27 100755 (executable)
@@ -2,7 +2,8 @@
 <Border BorderWidth="1" Foreground="White" CornerRadius="20" Height="{../TemplatedHeight}" Width="{../TemplatedWidth}">
        <VerticalStack Height="{../../TemplatedHeight}" Width="{../../TemplatedWidth}">
                <Border Name="TitleBar" BorderWidth="1" Foreground="White" Width="{../../../TemplatedWidth}" Height="-1" 
-                               Background="0,1;0,5;1,0;0,5">
+                               Background="vgradient|0:0,1;0,5;1,0;0,5|1:0,0;0,1;0,3;0,9">
+<!--                           Background="0,1;0,5;1,0;0,5"-->
                        <HorizontalStack Name="hs" Margin="1" Spacing="1" Width="{../../../../TemplatedWidth}" Height="-1" >
                                <GraphicObject Width="5"/>
                                <Image Margin="1" Width="12" Height="12" Path="{../../../../../Icon}"/>
index 56d020e6c15a753da47053428e841f1d0ee47568..e4a37b4835565f1c39b3b30c5368472cc0a7aa68 100644 (file)
@@ -96,7 +96,7 @@ namespace test
                        //LoadInterface("golibtests/test4.xml", out c2);
                        //c2.HorizontalAlignment = HorizontalAlignment.Left;
                        //c2.VerticalAlignment = VerticalAlignment.Top;
-                       c.Background.AdjustAlpha (0.5);
+                       //((Color)c.Background).AdjustAlpha (0.5);
 //                     labMousePos = c.FindByName ("labMouse") as Label;
 //                     //pb = c.FindByName("pbBar") as ProgressBar;
 //                     pb2 = c.FindByName("pbBar2") as ProgressBar;
index 873a21eaf75242f3a457fa5db4b6cd531d3545f7..664483be0401b628eeda4b665b86f840177717ee 100644 (file)
@@ -44,7 +44,7 @@ namespace test
                                l.Text = cpt.ToString ();
                        }
                        foreach (GraphicObject o in gl) {
-                               Color a = o.Background;
+                               Color a = (Color)o.Background;
                                if (a.A > 1)
                                        a.A = 0;
                                else
index a1c8f413f250357058c9b12ef28db60a3efb066a..3a198fcb3b9c9eb1cb57d21fed4a2a98e4c1c2de 100644 (file)
@@ -36,11 +36,15 @@ namespace test
                int frameCpt = 0;
                int idx = 0;
                string[] testFiles = {
-                       "testTextBox.crow",
-                       "testSpinner.goml",
-                       "testImage.crow",
+                       "testBorder.goml",
+                       "testGroupBox.goml",
+                       "test2WayBinding.crow",
                        "testButton.crow",
+                       "0.crow",
+                       "testSpinner.goml",
                        "fps.goml",
+                       "testTextBox.crow",
+                       "testImage.crow",
                        "test4.goml",
                        "testScrollbar.goml",
                        "2.crow",
@@ -49,7 +53,6 @@ namespace test
 //                     "testCombobox.goml",
                        "testWindow3.goml",
                        "testWindow.goml",
-                       "testGroupBox.goml",
                        "testExpandable.goml",
                        "testCheckbox.goml",
                        "testPopper.goml",
@@ -58,7 +61,6 @@ namespace test
 //                     "testSpinner.goml",
                        "testRadioButton2.goml",
                        "testContainer.goml",
-                       "testBorder.goml",
                        "testRadioButton.goml",
                        "testMsgBox.goml",
                        "testGrid.goml",
diff --git a/Tests/Interfaces/0.crow b/Tests/Interfaces/0.crow
new file mode 100755 (executable)
index 0000000..aa72d58
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Border BorderWidth="2" Width="200" Height="200" Foreground="Gray" Margin="10"
+       Background="Green"
+       MouseEnter="{Background=White;Foreground=White}"
+       MouseLeave="{Background=Green;Foreground=Gray}" 
+       >
+       <GraphicObject  Width="100" Height="100" Background="Red" Margin="10"/>
+</Border>
\ No newline at end of file
diff --git a/Tests/Interfaces/test2WayBinding.crow b/Tests/Interfaces/test2WayBinding.crow
new file mode 100755 (executable)
index 0000000..f4f03be
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<VerticalStack Fit="True">
+       <TextBox Margin="2" Name="tb1" Width="300" Height="50" Font="droid,16" 
+               Text="{../tb2.Text}"
+               CurColumn="{../tb2.CurrentLine}"
+               CurLine="{../tb2.CurrentLine}"
+               />
+       <TextBox Margin="2" Name="tb2" Width="300" Height="50" Font="droid,16"
+               Text="{../tb1.Text}"
+               CurColumn="{../tb1.CurrentLine}"
+               CurLine="{../tb1.CurrentLine}"
+               />
+</VerticalStack>
\ No newline at end of file
index 02f1625773632523afa4b643a800da7965f54902..cae3c33d7a8906d11dc0e11d3ed111d35b1d3874 100755 (executable)
@@ -1,4 +1,5 @@
 <?xml version="1.0"?>
-<Border BorderWidth="5" Width="200" Height="200" CornerRadius="20" Margin="0" Background="Mantis">
-       <GraphicObject CornerRadius="0" Background="CornflowerBlue" Height="100" Width="100"/>
+<Border BorderWidth="2" Width="200" Height="200" CornerRadius="2" Margin="0" 
+               Background="vgradient|0,65:Mantis|1:Transparent">
+       <GraphicObject CornerRadius="20" Background="#Tests.image.crow0.svg" Margin="0" Height="100" Width="120" />
 </Border>
index 5e4c5a5c8c432620a526e0d60c3dfedd581a7bf2..fd52bce435b34c3327c33249707fe7ea8a5e493f 100755 (executable)
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<VerticalStack Fit="true">
+<VerticalStack Fit="true" Background="vgradient|0:DimGray|1:Black">
        <HorizontalStack Fit="True">
                <Button Caption="but" MouseClick="onButClick"/>
                <Button MouseClick="onButClick"/>
index c12c597ec3523e6b51806f8f8e8f1c6dab749efd..6b14f829a04e46834a9b4e3cdca851f4a8a24d62 100755 (executable)
@@ -1,4 +1,7 @@
 <?xml version="1.0"?>
-<GroupBox Width="-1" Height="-1" Background="Red">
-<Label/>
-</GroupBox>
+<Container Background="vgradient|0:DarkGray|1:DimGray">
+       <GroupBox Width="200" Height="150" Background="vgradient|0:SteelBlue|1:Transparent"
+               Foreground="ogradient|0:White|1:Black">
+       <!--    <Label/>-->
+       </GroupBox>
+</Container>
index 4b215be46833003becb0db1d29529d05c77026b8..7fa41b43a9295d568e31c57c9842e4682e24e2a5 100755 (executable)
@@ -2,7 +2,7 @@
 <Window Left="10" Top="10" Title="Test window" 
                Width="250" Height="550" >
        <VerticalStack Name="contentVSStack" Margin="10" Spacing="10" Background="0,4;0,4;0,4;0,4">
-               <Slider Name="slider" Height="10" Width="0"/>
+               <Slider Name="slider" Height="12" Width="0" CornerRadius="3"/>
                <GroupBox Caption="test"  Height="-1" Width="-1" Margin="5">
                        <VerticalStack  Height="-1" Width="0" >
                                <RadioButton  Caption="Radio 1" Background="Red" />
@@ -10,7 +10,8 @@
                                <RadioButton  Caption="Radio 3" />
                        </VerticalStack>
                </GroupBox>
-               <HorizontalStack Width="0" Height="-1" Margin="10" Background="BlueCrayola">
+               <HorizontalStack Width="0" Height="-1" Margin="10" CornerRadius="5" 
+                               Background="vgradient|0:White|0,1:SteelBlue|0,9:SteelBlue|1:Transparent">
                        <CheckBox Height="-1" Width="80"/>
                        <GraphicObject Width="0"/>
                        <CheckBox Height="-1" Width="80" IsChecked="true"/>
                        <VerticalStack Fit="true" Name="vsFps"  Spacing="10" >
                                <HorizontalStack Fit="true">
                                        <Label Text="Update:" Width="50" TextAlignment="RightCenter"/>
-                                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Background="AoEnglish" Width="50" TextAlignment="Center"/>
+                                       <Label Name="labUpdate" Text="{update}" Font="droid,12" Width="50" TextAlignment="Center"
+                                               Background="vgradient|0:AoEnglish|1:Black"/>
                                </HorizontalStack>
                                <HorizontalStack Fit="true">
                                        <Label Text="Drawing:" Width="50" TextAlignment="RightCenter"/>
-                                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Background="AoEnglish" Width="50" TextAlignment="Center"/>
+                                       <Label Name="labDrawing" Text="{drawing}" Font="droid,12" Width="50" TextAlignment="Center"
+                                               Background="vgradient|0:AoEnglish|1:Black"/>
                                </HorizontalStack>
                                <HorizontalStack Fit="true">
                                        <Label Name="captionFps" Text="Fps:" Width="50" TextAlignment="RightCenter"/>
-                                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" Background="AoEnglish"/>
+                                       <Label Name="valueFps" Text="{fps}" Font="droid , 12" Width="50" TextAlignment="Center" 
+                                               Background="vgradient|0:AoEnglish|1:Black"/>
                                </HorizontalStack>
                                <HorizontalStack Fit="true">
                                        <Label Text="Min:" Width="50" TextAlignment="RightCenter"/>
-                                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center" Background="AoEnglish"/>
+                                       <Label Text="{fpsMin}" Font="droid , 12" Width="50" TextAlignment="Center"
+                                               Background="vgradient|0:AoEnglish|1:Black"/>
                                </HorizontalStack>
                                <HorizontalStack Fit="true">
                                        <Label Text="Max:" Width="50" TextAlignment="RightCenter"/>
-                                       <Label Text="{fpsMax}" Font="droid , 12" Background="AoEnglish" Width="50" TextAlignment="Center"/>
+                                       <Label Text="{fpsMax}" Font="droid , 12" Width="50" TextAlignment="Center"
+                                               Background="vgradient|0:AoEnglish|1:Black"/>
                                </HorizontalStack>
                        </VerticalStack>                                
        </Container>
index a987e9024081f4ab39369e94a35ca9c8547697ca..e0c3f14c2a91f48efd95cde40e704e713a0600fb 100644 (file)
@@ -45,7 +45,6 @@
     <Reference Include="Mono.Cairo" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="GOLIBTest_5.cs" />
     <Compile Include="GOLIBTest_4.cs" />
     <Compile Include="GOLIBTest_Listbox.cs" />
     <Compile Include="GOLIBTest_0.cs" />
     <None Include="Interfaces\testTextBox.crow">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="GOLIBTest_5.cs" />
+    <None Include="Interfaces\0.crow">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="Interfaces\test2WayBinding.crow">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
   </ItemGroup>
   <ItemGroup>
     <Folder Include="Interfaces\" />
     <EmbeddedResource Include="image\tetra.png" />
     <EmbeddedResource Include="image\folder0.svg" />
     <EmbeddedResource Include="image\folder1.svg" />
+    <EmbeddedResource Include="image\crow0.svg" />
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\Crow.csproj">
diff --git a/Tests/image/crow0.svg b/Tests/image/crow0.svg
new file mode 100644 (file)
index 0000000..72ea6af
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="svg2" version="1.1" inkscape:version="0.47 r22583" width="749.44373" height="527.6217" sodipodi:docname="Carrion_crow_20090612.png">
+  <metadata id="metadata8">
+    <rdf:RDF>
+      <cc:Work rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title/>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs id="defs6">
+    <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="1 : 0.5 : 1" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" id="perspective10"/>
+  </defs>
+  <sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="640" inkscape:window-height="497" id="namedview4" showgrid="false" inkscape:zoom="0.16076294" inkscape:cx="389.06883" inkscape:cy="338.72079" inkscape:window-x="0" inkscape:window-y="48" inkscape:window-maximized="0" inkscape:current-layer="svg2"/>
+  <path style="fill:#000000" d="m 531.22503,527.47423 c -0.3438,-0.1375 -0.625,-0.6503 -0.625,-1.1395 0,-0.4893 -0.6661,-1.7278 -1.4803,-2.7523 -0.8141,-1.0244 -1.6107,-2.2366 -1.7702,-2.6937 -0.7166,-2.054 -8.0207,-6.4741 -10.8553,-6.5692 -0.1956,-0.01 -0.6114,0.9443 -0.9238,2.1131 -0.3125,1.1687 -0.7987,2.4062 -1.0805,2.75 -0.998,1.2174 -3.4469,0.6739 -6.5707,-1.4584 -1.6786,-1.1458 -3.3934,-2.0642 -3.8107,-2.0408 -1.5106,0.084 -3.3359,-0.9486 -4.1697,-2.3601 -1.5491,-2.6225 -6.626,-6.0157 -9.0004,-6.0157 -1.6548,0 -5.55,-1.7805 -7.1605,-3.273 -0.9213,-0.8538 -1.9001,-1.227 -3.2184,-1.227 -2.8135,0 -4.2699,-0.7367 -4.8722,-2.4643 -0.2944,-0.8447 -0.8496,-1.5357 -1.2338,-1.5357 -0.3842,0 -1.0806,-0.4222 -1.5475,-0.9381 -0.4669,-0.5159 -1.5859,-1.0576 -2.4866,-1.2038 -3.2233,-0.5231 -13.7505,-6.0742 -14.5694,-7.6827 -0.275,-0.5402 -1.5125,-2.1084 -2.75,-3.4851 -2.7804,-3.0929 -7.8738,-5.4521 -10.8679,-5.0338 -10.4158,1.4551 -10.8147,1.4762 -15.1066,0.7989 -4.9553,-0.782 -9.2432,-0.8634 -16.3605,-0.3103 -4.86008,0.3777 -5.09923,0.3499 -5.40958,-0.6279 -0.1786,-0.5627 0.037,-2.267 0.47885,-3.7873 0.44195,-1.5203 0.6532,-3.0074 0.46945,-3.3047 -0.6555,-1.0606 -4.60415,-0.096 -7.8144,1.9099 -2.4289,1.5173 -3.38635,2.4796 -4.2307,4.2524 -1.0448,2.1934 -2.82495,3.4125 -4.9833,3.4125 -1.36745,0 -0.1685,-6.5777 1.59655,-8.7587 0.44125,-0.5452 0.6598,-0.7101 0.48565,-0.3663 -0.1851,0.3654 5e-4,0.625 0.44725,0.625 0.4735,0 0.6544,-0.2851 0.476,-0.75 -0.1583,-0.4125 -0.039,-0.75 0.2657,-0.75 0.3044,0 0.5535,-0.2983 0.5535,-0.6629 0,-0.8582 2.2202,-2.9502 2.6621,-2.5084 0.1858,0.1859 0.3379,0.043 0.3379,-0.3163 0,-0.8065 2.7978,-3.5479 3.20515,-3.1406 0.16215,0.1622 0.29485,0.019 0.29485,-0.318 0,-0.3371 0.19915,-0.4898 0.44255,-0.3393 0.2434,0.1504 1.08715,0.067 1.875,-0.185 0.78785,-0.2521 2.7262,-0.5492 4.30745,-0.6601 2.2617,-0.1587 2.875,-0.048 2.875,0.5179 0,0.449 0.29565,0.6062 0.7862,0.418 0.43243,-0.166 1.21993,-0.07 1.75003,0.2141 0.6551,0.3506 0.9638,0.3518 0.9638,0 0,-0.8005 2.4388,-0.3982 2.788,0.4598 0.2487,0.6112 0.3996,0.5403 0.7427,-0.3494 0.4423,-1.1465 0.7638,-1.1683 4.8862,-0.3306 0.678,0.1377 1.0415,0.034 0.8677,-0.247 -0.2812,-0.455 1.5422,-1.3647 2.3254,-1.1601 0.1981,0.052 0.5997,-0.3536 0.8926,-0.9009 0.2929,-0.5473 0.9205,-0.995 1.3947,-0.995 0.4742,0 1.1542,-0.4677 1.5112,-1.0393 0.568,-0.9096 0.5273,-1.0711 -0.3261,-1.2943 -0.5964,-0.1559 -1.0945,-0.8515 -1.2823,-1.7906 -0.1689,-0.8445 -0.4542,-1.3884 -0.634,-1.2086 -0.3289,0.3289 -1.3776,-1.162 -1.9679,-2.79767 -0.1748,-0.4843 -0.8371,-1.01085 -1.4718,-1.17015 -0.6348,-0.1593 -1.2758,-0.60685 -1.4246,-0.9945 -0.1487,-0.3877 -0.5588,-0.7134 -0.9112,-0.72385 -0.3523,-0.0105 -1.4271,-1.0229 -2.3883,-2.25 -0.9612,-1.22705 -2.0675,-2.23105 -2.4584,-2.23105 -0.3908,0 -0.5731,-0.1375 -0.405,-0.3056 0.4324,-0.4324 -2.3683,-2.6944 -3.3361,-2.6944 -0.523,0 -0.8028,-0.43565 -0.8028,-1.25 0,-0.6875 -0.2445,-1.25 -0.54333,-1.25 -0.2988,0 -1.94895,-1.3498 -3.66705,-2.9996 -1.7181,-1.6498 -3.3097,-2.83105 -3.5369,-2.625 -0.2272,0.20605 -0.2658,0.11695 -0.0858,-0.198 0.3151,-0.5513 -0.98115,-1.4332 -1.82915,-1.2444 -0.22665,0.0505 -0.28485,-0.1142 -0.1293,-0.3659 0.1556,-0.25175 -0.3339,-0.8581 -1.0878,-1.34745 -0.7539,-0.48935 -1.66475,-1.30145 -2.02405,-1.8047 -0.35935,-0.5032 -0.9781,-0.91495 -1.375,-0.91495 -0.39695,0 -0.72165,-0.19875 -0.72165,-0.44165 0,-0.6423 -11.41075,-9.1628 -13.6492,-10.192 -1.06885,-0.49145 -2.41035,-0.74495 -3.0683,-0.57985 -0.82915,0.2081 -1.4977,-0.0455 -2.29935,-0.87155 -0.6216,-0.6407 -0.94525,-0.84145 -0.71915,-0.44605 0.2261,0.39545 -0.524,-0.0325 -1.6669,-0.95095 -2.0588,-1.6545 -2.9214,-3.08875 -2.38225,-3.9611 0.15365,-0.24865 -0.0504,-0.5786 -0.4533,-0.73325 -0.4628,-0.17755 -0.7094,-0.90125 -0.66945,-1.96455 0.068,-1.80945 -1.7003,-4.89025 -3.551,-6.18655 -0.58185,-0.4075 -0.9273,-0.9521 -0.7678,-1.21025 0.15955,-0.2581 -0.0617,-0.6043 -0.49165,-0.7693 -0.4299,-0.16495 -0.78165,-0.7086 -0.78165,-1.2081 0,-0.49945 -0.5625,-1.5766 -1.25,-2.39365 -1.12955,-1.3424 -1.24905,-1.9122 -1.2402,-5.9134 0.0155,-6.85325 1.50745,-13.94735 5.08565,-24.1778 1.96035,-5.6049 3.4407,-11.38431 4.114,-16.06156 0.2931,-2.03595 0.1741,-2.5001 -0.9982,-3.8933 -1.33805,-1.5902 -4.07105,-3.04515 -5.71995,-3.04515 -0.48765,0 -2.4618,-0.6703 -4.3871,-1.48955 -4.9094,-2.08915 -10.23795,-2.92701 -22.3542,-3.51495 -5.775,-0.28023 -12.5529,-0.84385 -15.06195,-1.2525 -2.50905,-0.40984 -5.92565,-0.74418 -7.59245,-0.74418 -1.6668,0 -3.6639,-0.2521 -4.43805,-0.56023 -0.77415,-0.30812 -3.35935,-0.58205 -5.74485,-0.60873 -2.38555,-0.0267 -4.2285,-0.22458 -4.0955,-0.43978 0.133,-0.21519 -0.16525,-0.38809 -0.6627,-0.38421 -0.4975,0.004 -4.6252,-0.70534 -9.17275,-1.57603 l -8.2682,-1.58308 -4.9818,1.57726 c -2.73995,0.86749 -5.1243,1.5767 -5.29845,1.57603 -0.599,-0.002 -0.82665,-1.95349 -0.25525,-2.18779 0.31455,-0.12897 -0.0335,-0.25226 -0.77355,-0.27397 -0.74005,-0.0217 -1.4685,0.15952 -1.6188,0.40274 -0.4704,0.76113 -6.71675,1.73732 -7.41525,1.15887 -0.4121,-0.34131 -1.376,-0.35484 -2.87045,-0.0403 -1.2375,0.26047 -4.10625,0.72583 -6.375,1.03414 -2.26875,0.30831 -4.125,0.77464 -4.125,1.0363 0,0.26165 -0.3375,0.34623 -0.75,0.18793 -0.4125,-0.15829 -0.75105,-0.12611 -0.75225,0.0715 0,0.19762 -0.8233,0.40197 -1.82685,0.45412 -1.0035,0.0521 -1.95875,0.27714 -2.12275,0.5 -0.3821,0.51928 -2.05235,0.60782 -11.67315,0.61886 -4.3631,0.005 -7.875,0.21098 -7.875,0.46186 0,0.24906 -1.96875,0.46081 -4.375,0.47056 -5.41745,0.0219 -7.9037,0.29189 -12.375,1.34352 -1.925,0.45275 -5.46875,0.95485 -7.875,1.1158 -2.40625,0.16095 -4.375,0.47015 -4.375,0.68715 0,0.217 -0.7875,0.26675 -1.75,0.1106 -1.1786,-0.1913 -1.75,-0.0898 -1.75,0.3109 0,0.32725 -0.21165,0.46415 -0.4703,0.3043 -0.49975,-0.30885 -8.60635,1.63775 -9.0297,2.1683 -0.1375,0.1723 -0.7,0.3705 -1.25,0.44035 -4.68507,0.59535 -5.68928,0.8167 -5.45128,1.2018 0.15043,0.2434 -0.3615,0.3995 -1.13761,0.34695 -1.57279,-0.10655 -4.86736,1.67965 -4.28433,2.3228 0.20527,0.22645 0.098,0.2536 -0.23834,0.0603 -0.58441,-0.33575 -6.01908,2.50305 -11.38845,5.9488 -1.375,0.88235 -5.875,3.36996 -10,5.52796 -12.3617,6.467 -22.14846,11.5375 -28.5,14.76575 -4.857,2.46865 -11.22486,6.03585 -17.75,9.94335 -1.7712,1.06065 -10.60818,5.1132 -14.75,6.76415 -2.475,0.9866 -5.175,2.09755 -6,2.4688 -5.54538,2.49555 -6.58003,3.00345 -7.25,3.5592 -1.63924,1.3598 -11.42887,7.0769 -14.28954,8.345 -1.67174,0.7411 -4.70924,1.5867 -6.75,1.87915 -4.09752,0.5872 -9.96046,0.49645 -9.96046,-0.15415 0,-0.2288 -0.21841,-0.281 -0.48534,-0.116 -0.26694,0.16495 -0.62883,-0.27175 -0.80421,-0.9705 -0.17537,-0.69875 -0.42176,-1.27045 -0.54753,-1.27045 -0.4082,0 -2.40583,1.13925 -2.66292,1.51865 -0.35229,0.5199 -3.96519,1.98135 -4.89822,1.98135 -0.59126,0 -0.4874,-0.31415 0.43606,-1.31895 l 1.21216,-1.3189 -2.25,0.3655 c -1.2375,0.20105 -4.05,0.40355 -6.25,0.45005 -2.37193,0.0501 -4.59437,0.38485 -5.4603,0.8225 -1.12431,0.56825 -1.50777,0.5956 -1.66666,0.1189 -0.11351,-0.3405 -0.73685,-0.6191 -1.3852,-0.6191 -0.64835,0 -1.33098,-0.2462 -1.51694,-0.5471 -0.18597,-0.3009 -0.87425,-0.4446 -1.52951,-0.3193 -0.65527,0.12525 -1.19139,0.041 -1.19139,-0.18725 0,-0.22825 -0.33172,-0.28765 -0.73715,-0.1321 -0.40544,0.1556 -1.09651,-0.0765 -1.53572,-0.5157 -0.43921,-0.4392 -1.22671,-0.79855 -1.75001,-0.79855 -1.10713,0 -2.38992,-2.279 -2.11079,-3.75 0.31736,-1.67245 1.25927,-3.95385 1.98687,-4.8124 0.37869,-0.44685 0.62288,-1.1116 0.54266,-1.4773 -0.0802,-0.36565 0.18499,-0.67505 0.58937,-0.68755 0.40438,-0.0125 1.01981,-0.58525 1.36763,-1.27275 0.34782,-0.6875 0.63571,-1.0537 0.63977,-0.8138 0.004,0.23995 0.34239,0.1582 0.75186,-0.18165 0.40947,-0.3398 0.59971,-0.85215 0.42275,-1.13845 -0.17696,-0.28635 -0.0875,-0.3758 0.19885,-0.19885 0.56094,0.34665 1.956,-1.01185 1.50361,-1.4642 -0.15004,-0.15005 -1.19183,0.19605 -2.3151,0.7691 -2.80506,1.43105 -7.77479,1.9313 -8.93581,0.8995 C 4.62391,391.6455 3.66424,391.4663 2.175,391.60585 L 0,391.8096 1.925,390.0404 c 2.96073,-2.7211 16.94413,-12.2379 17.98162,-12.2379 0.26309,0 14.67855,-8.7054 17.00174,-10.2672 l 1.55837,-1.04765 -1.42946,-0.63275 c -1.10244,-0.488 -1.33155,-0.82375 -1.00146,-1.4676 0.23539,-0.45915 0.56017,-2.1798 0.72171,-3.8237 0.20432,-2.07916 0.56747,-3.17611 1.1931,-3.60396 1.97683,-1.352 4.64937,-3.9324 4.64937,-4.48915 0,-0.63525 -3.14366,0.26635 -12.4237,3.56325 -2.84554,1.0109 -5.29141,1.7203 -5.43528,1.57645 -0.4404,-0.4404 2.77009,-4.15665 5.7658,-6.67415 1.55999,-1.31095 3.15048,-2.68005 3.53442,-3.0425 1.97896,-1.86805 10.00538,-6.79085 14.83262,-9.09726 3.01188,-1.43904 6.03864,-3.00912 6.72614,-3.48905 0.6875,-0.47994 3.32879,-1.9548 5.86953,-3.27747 2.54074,-1.32268 4.53575,-2.48864 4.43336,-2.59103 -0.1024,-0.10239 -1.59431,0.2882 -3.31536,0.86798 -2.20113,0.74151 -3.28613,0.8972 -3.65836,0.52497 -0.37223,-0.37223 -0.36122,-0.52917 0.0371,-0.52917 0.31147,0 0.71036,-0.45386 0.88642,-1.00858 0.28129,-0.88628 2.46442,-3.24822 6.79693,-7.35367 0.71481,-0.67734 2.09492,-1.71668 3.0669,-2.30964 3.1689,-1.93319 5.79289,-3.77707 6.11364,-4.29607 0.33362,-0.5398 15.55682,-8.24616 17.42024,-8.81856 0.60476,-0.18576 2.80194,-1.18149 4.88261,-2.21274 2.08067,-1.03124 4.30159,-2.03956 4.93537,-2.24072 0.63377,-0.20115 2.14578,-1.06599 3.36002,-1.92186 1.75893,-1.23981 2.38363,-1.44627 3.07313,-1.01567 0.69327,0.43295 2.2562,-0.12777 7.85693,-2.81877 3.84533,-1.84757 8.34151,-3.88484 9.99151,-4.52727 1.65,-0.64243 3.29879,-1.46391 3.66399,-1.82552 1.20152,-1.18975 2.59975,-1.70926 5.05777,-1.87922 1.65837,-0.11467 2.766,-0.50947 3.5063,-1.24977 0.59518,-0.59518 2.10898,-1.73335 3.36401,-2.52926 2.54108,-1.61151 3.34866,-2.5842 3.84675,-4.63319 0.19552,-0.80434 1.01738,-1.80474 1.9496,-2.37313 0.90281,-0.55047 1.28173,-1.00429 0.86158,-1.03189 -1.26984,-0.0834 8.14574,-2.39728 9.875,-2.42676 1.00221,-0.0171 1.625,-0.28175 1.625,-0.69056 0,-0.36456 0.55556,-1.18477 1.23459,-1.82268 1.41573,-1.33001 1.24106,-2.01447 -0.5141,-2.01447 -2.04046,0 -1.3931,-0.71608 2.40451,-2.65973 4.49538,-2.30078 6.58797,-2.36185 12.33935,-0.36011 4.15884,1.44748 4.22549,1.45397 5.05864,0.49331 0.46435,-0.53541 1.0026,-0.97347 1.19605,-0.97347 0.37295,0 6.51145,-4.22899 7.78095,-5.36049 0.4125,-0.36766 2.6625,-2.05712 5,-3.75435 2.3375,-1.69723 6.275,-4.56874 8.75,-6.38112 4.7649,-3.48923 7.6235,-5.32517 12.5,-8.02811 1.65,-0.91456 3.9976,-2.66459 5.21685,-3.88895 l 2.21685,-2.2261 -4.09185,0.23687 c -4.33795,0.25112 -4.72715,0.0236 -3.59115,-2.09909 0.78175,-1.46068 10.7924,-9.29796 16.13425,-12.63136 0.86885,-0.54218 1.27765,-1.12085 1.05965,-1.5 -0.1952,-0.33952 -0.16995,-0.44963 0.0562,-0.24469 0.2261,0.20493 1.1059,-0.15605 1.95515,-0.80218 3.21475,-2.44592 17.1688,-10.65967 20.04405,-11.7985 3.79645,-1.5037 12.63515,-5.93158 12.9916,-6.50834 0.1481,-0.23962 1.78555,-0.93333 3.63885,-1.54157 4.21645,-1.38385 4.5264,-1.56622 3.35835,-1.97595 -0.987,-0.34622 -1.0741,-0.31183 12.90875,-5.09557 3.5187,-1.20379 6.2946,-2.29261 6.16875,-2.4196 -0.12585,-0.127 0.4635,-0.25673 1.3097,-0.28831 0.8462,-0.0316 1.7828,-0.36907 2.0813,-0.75 0.31825,-0.40613 1.76865,-0.76739 3.5068,-0.87343 3.0887,-0.18845 8.84065,-2.54046 13.6105,-5.56541 1.256,-0.79652 3.88445,-1.81231 5.84105,-2.25733 1.9566,-0.44502 3.7885,-0.97309 4.0709,-1.17349 0.2824,-0.2004 1.41345,-0.66832 2.51345,-1.03982 1.1,-0.37151 2.5366,-1.09344 3.19245,-1.60429 0.6558,-0.51085 1.36325,-0.92882 1.5721,-0.92882 0.20885,0 1.0773,-0.65167 1.92995,-1.44814 1.67085,-1.5608 5.15265,-3.53244 6.7923,-3.84626 0.55725,-0.10666 1.2382,-0.48695 1.5132,-0.84511 0.275,-0.35815 1.3926,-1.31703 2.4835,-2.13084 2.8466,-2.1235 3.1454,-2.37598 7.0165,-5.92925 3.68755,-3.38476 8.8972,-7.56867 18,-14.45597 5.0449,-3.81703 8.64345,-6.35196 18.45225,-12.99836 1.95125,-1.32216 6.58525,-3.87129 10.29775,-5.66475 3.7125,-1.79345 7.7625,-3.74919 9,-4.34607 1.2375,-0.59689 2.32548,-1.2554 2.41778,-1.46337 0.092,-0.20796 0.3735,-0.25093 0.625,-0.0955 0.2515,0.15544 0.4573,0.0819 0.4573,-0.16355 0,-0.2454 0.2939,-0.44618 0.6532,-0.44618 0.3592,0 2.328,-0.85403 4.375,-1.89784 2.047,-1.04382 6.3093,-2.90007 9.4718,-4.12501 3.1625,-1.22494 7.2125,-2.86514 9,-3.64489 1.7875,-0.77974 4.4875,-1.93683 6,-2.57129 1.5125,-0.63447 4.3732,-1.9929 6.3572,-3.01874 1.984,-1.02584 5.3028,-2.571 7.375,-3.43369 2.0723,-0.86269 3.7678,-1.73502 3.7678,-1.93853 0,-0.2035 0.285,-0.37001 0.6333,-0.37001 0.3484,0 4.4546,-1.799355 9.125,-3.998585 4.6704,-2.19923 9.8979,-4.51416 11.6167,-5.1443 1.7187,-0.63013 3.125,-1.35313 3.125,-1.60665 0,-0.25353 0.2812,-0.40698 0.625,-0.34102 1.0218,0.19611 8.7144,-2.76254 9.375,-3.60575 0.1375,-0.1755 0.5875,-0.31563 1.0001,-0.31139 1.7822,0.0183 9.6862,-2.8529 13.4714,-4.89359 3.5377,-1.90729 8.6142,-5.61581 10.2785,-7.50866 0.275,-0.31278 0.8988,-0.71839 1.3863,-0.90136 0.4875,-0.18297 1.0264,-0.69774 1.1977,-1.14394 0.3946,-1.02832 2.5594,-3.21141 3.1845,-3.21141 0.2601,0 0.754,-0.45 1.0975,-1 0.3435,-0.55 0.9454,-1 1.3376,-1 0.3922,0 0.57,-0.14305 0.3952,-0.31787 -0.1749,-0.17483 0.8478,-1.41233 2.2726,-2.75 1.4248,-1.33768 2.3741,-2.44639 2.1096,-2.46383 -0.2646,-0.0175 0.04,-0.24052 0.6761,-0.49577 0.696,-0.27916 1.0139,-0.69577 0.7977,-1.04556 -0.1977,-0.31994 -0.1433,-0.44794 0.1211,-0.28458 0.2642,0.16329 1.3406,-0.58944 2.392,-1.67275 1.0513,-1.0833 1.7262,-1.96964 1.4997,-1.96964 -0.2266,0 0.3038,-0.52802 1.1785,-1.17338 0.8748,-0.64536 1.4247,-1.33911 1.2222,-1.54167 -0.2026,-0.20256 -0.139,-0.29329 0.1414,-0.20162 0.7241,0.23678 3.2798,-1.86922 2.8483,-2.34712 -0.1969,-0.21809 -0.1062,-0.25286 0.2016,-0.0773 0.8938,0.50991 8.9141,-6.72936 8.2629,-7.45826 -0.1774,-0.19856 -0.057,-0.20868 0.2683,-0.0225 0.3296,0.1889 0.9374,-0.15635 1.375,-0.78109 0.4313,-0.61579 0.7842,-0.94173 0.7842,-0.72431 0,0.51937 2.2796,-1.14555 4.6037,-3.3623 1.0195,-0.97245 2.8034,-2.39638 3.9642,-3.1643 l 2.1105,-1.3962 -1.3872,-0.25 c -1.3501,-0.24331 -1.3139,-0.29636 1.3539,-1.98214 1.5077,-0.95267 2.6431,-1.98789 2.5232,-2.30048 -0.12,-0.3126 0.5243,-0.93426 1.4318,-1.38148 l 1.6499,-0.81313 -1.625,-0.0114 c -1.784,-0.0125 -2.1838,-0.76663 -0.6625,-1.24949 0.5294,-0.16802 2.5996,-1.88829 4.6005,-3.82282 2.0009,-1.93453 4.324,-3.86861 5.1625,-4.29796 0.8384,-0.42936 1.6466,-0.96829 1.7958,-1.19764 0.1492,-0.22935 1.2742,-0.95805 2.5,-1.61934 1.2258,-0.66128 2.1799,-1.43223 2.1203,-1.71322 -0.06,-0.28098 0.4852,-0.65983 1.2106,-0.84189 0.7254,-0.18206 1.8732,-0.76706 2.5507,-1.3000201 0.6776,-0.53295 1.6241,-0.969 2.1034,-0.969 1.2375,0 4.5619,-1.4352 5.7437,-2.47961 1.0591,-0.93601 7.5005,-3.52039 8.7743,-3.52039 0.4143,0 1.2503,-0.34818 1.8578,-0.77374 2.0129,-1.40986005 9.6931,-2.10420005 22.3679,-2.02220005 11.6212,0.0752 12.1262,0.12032 16,1.43040005 2.2,0.74402 4.2797,1.35564 4.6215,1.35915 1.3776,0.0142 14.3184,6.23276 16.1285,7.7504001 0.4125,0.34586 2.3385,1.38869 4.2801,2.31741 3.4577,1.65397 3.7199,1.8649 3.7199,2.99278 0,0.34148 0.4798,0.43378 1.25,0.24048 0.7334,-0.18409 1.25,-0.0987 1.25,0.20651 0,0.28614 0.6187,0.79506 1.375,1.13094 0.7562,0.33588 1.8112,1.00606 2.3443,1.48928 0.5331,0.48322 1.2643,0.87859 1.625,0.87859 0.3606,0 0.6557,0.18888 0.6557,0.41974 0,0.55421 2.2878,1.58026 3.5235,1.58026 0.5371,0 0.9765,0.225 0.9765,0.5 0,0.73451 1.4971,0.61105 1.5159,-0.125 0.01,-0.37405 0.2893,-0.26449 0.6968,0.27287 0.4916,0.64814 1.0434,0.80689 1.9841,0.57079 0.8468,-0.21253 1.3032,-0.12266 1.3032,0.25664 0,0.32104 0.2196,0.448 0.488,0.28212 0.6759,-0.41776 6.513,0.83637 6.2059,1.33337 -0.1369,0.2214 0.2698,0.39598 0.9036,0.38794 1.4058,-0.0178 7.5086,1.4204 6.2775,1.47936 -0.4813,0.023 -0.875,0.24287 -0.875,0.48848 0,0.47781 6.0237,1.69641 6.4211,1.299 0.1303,-0.13029 0.4826,-0.0377 0.7829,0.20562 0.9954,0.80678 10.8029,3.60352 11.3819,3.2457 0.3151,-0.19471 0.4324,-0.13106 0.2632,0.14275 -0.168,0.27178 1.9195,1.54574 4.6388,2.83102 2.7193,1.28527 6.9282,3.83442 9.3531,5.66477 2.425,1.83035 4.6902,3.32866 5.034,3.32957 0.3437,0.001 0.5203,0.10632 0.3924,0.23422 -0.1279,0.12791 0.5403,1.13544 1.4849,2.23895 0.9445,1.10352 1.613,2.17529 1.4854,2.38172 -0.1276,0.20643 0.1042,0.50434 0.5151,0.66202 0.411,0.15769 0.7506,0.0125 0.7548,-0.3226 0.01,-0.47305 0.093,-0.47461 0.3905,-0.007 0.2106,0.33128 0.3289,1.56701 0.263,2.74607 -0.084,1.50202 0.022,1.9204 0.3519,1.39766 0.3892,-0.6156 0.4799,-0.57119 0.5188,0.25393 0.026,0.55 0.1606,0.71875 0.2993,0.375 0.1387,-0.34375 0.4106,-0.625 0.6041,-0.625 0.5544,0 0.5569,1.94584 0,2.28816 -0.294,0.18173 -0.1638,0.55225 0.3178,0.90444 0.5834,0.4266 0.719,0.98284 0.4758,1.952 -0.1872,0.74547 -0.5541,1.3554 -0.8155,1.3554 -0.2615,0 -0.302,-0.28125 -0.09,-0.625 0.2119,-0.34375 -0.2046,-0.23932 -0.9255,0.23207 -1.2679,0.82909 -3.2163,1.42977 -5.0256,1.54938 -0.4813,0.0318 -0.875,0.2321 -0.875,0.44509 0,0.213 -0.5063,0.38405 -1.125,0.38012 -0.6188,-0.004 -1.8,0.0867 -2.625,0.2014 -14.2491,1.98101 -26.0951,3.39636 -30.5,3.64411 -3.025,0.17014 -5.7714,0.523 -6.1031,0.78413 -0.3317,0.26114 -0.8177,0.34219 -1.0799,0.18013 -0.8568,-0.52952 -2.0213,0.2448 -1.6918,1.12495 0.2716,0.72577 0.2029,0.74484 -0.5316,0.1474 -0.5837,-0.47478 -0.8436,-0.50654 -0.8436,-0.10308 0,0.32073 -0.2813,0.54662 -0.625,0.50198 -1.6669,-0.21646 -2.469,0.0713 -2.1942,0.78732 0.3196,0.83281 -0.4439,1.03786 -0.9308,0.25 -0.17,-0.275 -0.802,-0.48223 -1.4045,-0.46052 -0.6026,0.0217 -0.8269,0.14874 -0.4986,0.2823 0.3283,0.13356 0.4692,0.57551 0.3132,0.98211 -0.2456,0.64011 -0.404,0.63043 -1.1803,-0.0722 -0.6764,-0.61217 -1.1326,-0.68517 -1.8574,-0.29726 -0.5284,0.2828 -1.4727,0.38029 -2.0985,0.21665 -1.0054,-0.26291 -1.099,-0.1581 -0.805,0.90067 0.2971,1.06942 0.2599,1.10821 -0.3456,0.36088 -0.6308,-0.77854 -0.7906,-0.76631 -2.2759,0.1741 -0.8786,0.55628 -1.5974,1.41826 -1.5974,1.91551 0,0.65793 -0.2723,0.83289 -1,0.64259 -0.673,-0.17598 -1,-0.0154 -1,0.49116 0,0.4613 -0.6635,0.87713 -1.7138,1.07417 -1.3855,0.25994 -1.7763,0.60652 -2.0406,1.80981 -0.319,1.45242 -1.9262,2.8038 -3.0637,2.57603 -0.3125,-0.0626 -0.6992,0.22773 -0.8593,0.6451 -0.1602,0.41737 -0.5016,0.75885 -0.7587,0.75885 -0.5132,0 -2.0427,1.30904 -7.2824,6.23269 -1.9076,1.79259 -3.8764,3.38873 -4.375,3.54698 -0.4986,0.15824 -0.9135,0.66631 -0.922,1.12903 -0.01,0.46271 -0.9647,1.56246 -2.125,2.44387 -3.9721,3.01753 -7.7866,7.116285 -7.4796,8.037135 0.1119,0.33566 -0.037,0.61029 -0.3311,0.61029 -0.2939,0 -0.7894,1.0125 -1.101,2.25 -0.3116,1.2375 -0.7578,2.25 -0.9915,2.25 -0.2337,0 -0.2954,0.3375 -0.1371,0.75 0.1583,0.4125 0.082,0.75 -0.1686,0.75 -0.251,0 -0.4568,0.50625 -0.4573,1.125 0,1.94848 -0.7907,5.87384 -1.1374,5.65955 -0.2939,-0.18161 -0.3995,1.97113 -0.624,12.71545 -0.031,1.5125 -0.2485,2.87227 -0.482,3.02171 -0.4526,0.28955 -0.8518,1.98789 -0.9128,3.8828 -0.021,0.63498 -0.2595,1.01704 -0.5314,0.84903 -0.2834,-0.17517 -0.3673,0.0256 -0.1965,0.47049 0.1638,0.42679 0.056,0.77597 -0.24,0.77597 -0.2958,0 -0.3996,0.36021 -0.2307,0.80046 0.169,0.44026 0.058,0.95425 -0.2458,1.14221 -0.3041,0.18796 -0.6567,1.45312 -0.7836,2.81147 -0.1269,1.35835 -0.4495,2.54265 -0.7169,2.63177 -0.2673,0.0891 -0.3719,0.59852 -0.2324,1.13199 0.158,0.60415 -0.05,1.08629 -0.5502,1.27842 -0.4421,0.16966 -0.6794,0.50989 -0.5272,0.75607 0.1521,0.24619 0.073,0.44761 -0.1768,0.44761 -0.2494,0 -0.4732,0.69535 -0.4974,1.54521 -0.075,2.63491 -1.7218,9.44361 -2.2111,9.14121 -0.2552,-0.15772 -0.4123,0.017 -0.3491,0.38841 0.063,0.37134 -0.034,1.23767 -0.2167,1.92517 -0.1823,0.6875 -0.4286,2.2625 -0.5473,3.5 -0.5348,5.5744 -2.4417,11.92042 -3.8421,12.78589 -0.2431,0.15022 -0.4419,0.93485 -0.4419,1.74362 0,0.80877 -0.2192,1.47049 -0.4872,1.47049 -0.6336,0 -2.1337,2.8999 -1.7888,3.45803 0.1457,0.23577 -0.07,0.70671 -0.4795,1.04654 -0.4095,0.33983 -0.7445,0.90908 -0.7445,1.26499 0,0.35591 -0.2231,0.72211 -0.4957,0.81378 -0.2726,0.0917 -0.5814,0.90471 -0.6861,1.80676 -0.1048,0.90206 -0.5573,2.04532 -1.0055,2.54058 -0.4482,0.49526 -0.6644,1.05096 -0.4805,1.2349 0.184,0.18393 0.034,0.33442 -0.3322,0.33442 -0.3667,0 -0.5257,0.14103 -0.3533,0.31339 0.4487,0.44869 -1.0767,3.23721 -2.4966,4.56382 -0.6635,0.61997 -1.0825,1.32764 -0.9311,1.57261 0.1514,0.24497 -0.061,0.57441 -0.4719,0.7321 -0.4109,0.15768 -0.7471,0.75704 -0.7471,1.3319 0,0.57486 -0.2137,0.91312 -0.4749,0.75169 -0.5221,-0.32264 -1.6579,1.43503 -1.2142,1.8788 0.1517,0.15168 -0.3043,0.65588 -1.0133,1.12043 -0.7089,0.46456 -1.1735,1.03162 -1.0322,1.26015 0.2781,0.44997 -1.6768,2.47511 -2.3892,2.47511 -0.2394,0 -0.2971,0.22346 -0.1283,0.49658 0.1688,0.27312 -0.488,1.31507 -1.4596,2.31544 -0.9715,1.00037 -1.6265,2.04529 -1.4555,2.32203 0.1711,0.27674 -0.2276,0.94182 -0.8859,1.47795 -0.6583,0.53613 -0.8594,0.82561 -0.4469,0.6433 0.4125,-0.18232 0.2437,0.11547 -0.375,0.66175 -0.6188,0.54629 -1.125,1.18431 -1.125,1.41783 0,0.23351 -0.4588,0.71106 -1.0194,1.0612 -0.5607,0.35015 -0.8995,0.83069 -0.7529,1.06788 0.1466,0.23719 -0.084,0.56575 -0.5123,0.73012 -0.4283,0.16437 -0.6353,0.53102 -0.46,0.81478 0.1754,0.28376 0.041,0.45409 -0.299,0.37853 -0.3398,-0.0756 -0.7841,0.42511 -0.9873,1.11261 -0.2032,0.6875 -0.3919,1.06518 -0.4193,0.83929 -0.069,-0.56877 -1.5498,0.96706 -1.5498,1.60741 0,0.28496 -0.4563,0.76232 -1.014,1.0608 -0.5577,0.29847 -0.896,0.73372 -0.7517,0.96722 0.1444,0.2335 -0.4681,1.06596 -1.361,1.84991 -0.8929,0.78396 -1.7359,1.65037 -1.8734,1.92537 -0.1374,0.275 -0.3739,0.45869 -0.5254,0.40819 -0.1515,-0.0505 -0.5618,0.36679 -0.9119,0.92732 -0.5228,0.83716 -0.5183,0.95076 0.025,0.63619 0.8436,-0.48807 -1.4719,2.18162 -2.9678,3.42178 -0.6214,0.51513 -1.0019,1.14358 -0.8455,1.39656 0.1563,0.25298 -0.04,0.45996 -0.4359,0.45996 -0.7508,0 -2.9135,2.57583 -3.5032,4.17247 -0.1874,0.50736 -0.7896,1.03985 -1.3382,1.18332 -0.5486,0.14346 -0.9975,0.4776 -0.9975,0.74253 0,0.26492 -1.3998,1.86993 -3.1107,3.56668 -1.7109,1.69675 -3.0609,3.25375 -3,3.46 0.061,0.20625 -0.1994,0.375 -0.5785,0.375 -0.6144,0 -5.3108,5.01642 -5.3108,5.67264 0,0.26568 -2.468,3.04644 -6.3718,7.1792 -1.1685,1.23714 -1.9782,2.48634 -1.7992,2.77601 0.1791,0.28966 0.092,0.3821 -0.1942,0.20542 -0.2859,-0.17668 -2.1839,1.43727 -4.2177,3.58656 -2.0338,2.14928 -4.0512,4.11533 -4.4831,4.36898 -1.6679,0.97963 -8.434,7.48715 -8.434,8.11175 0,0.36215 -0.2137,0.52638 -0.4749,0.36495 -0.2612,-0.16144 -0.7249,0.17356 -1.0304,0.74442 -0.3055,0.57087 -1.1178,1.25175 -1.8052,1.51307 -0.6873,0.26132 -1.1261,0.67506 -0.9751,0.91941 0.1511,0.24436 0,0.67565 -0.3449,0.95842 -0.6127,0.50848 -0.8956,0.59917 -1.8695,0.59917 -0.275,0 -0.4437,0.26133 -0.375,0.58074 0.069,0.31941 -0.325,0.71316 -0.875,0.875 -1.4069,0.414 -6.75,4.09049 -6.75,4.64456 0,0.2523 -0.184,0.34498 -0.4089,0.20597 -0.225,-0.13902 -1.0125,0.30681 -1.75,0.99072 -0.7376,0.68392 -1.3479,1.06563 -1.3563,0.84825 -0.01,-0.21738 -0.2445,-0.001 -0.5248,0.47976 -0.2803,0.48125 -0.9485,0.875 -1.4848,0.875 -0.5364,0 -1.3877,0.39375 -1.8918,0.875 -0.5042,0.48125 -1.2355,0.94362 -1.625,1.02748 -0.3896,0.0839 -0.9473,0.4627 -1.2393,0.84185 -0.2919,0.37916 -1.1357,0.84119 -1.875,1.02673 -0.7392,0.18554 -1.3441,0.57546 -1.3441,0.86648 0,0.29102 -0.1426,0.38646 -0.317,0.21208 -0.6345,-0.63445 -7.8005,3.59025 -10.5801,6.23742 -1.5691,1.49435 -4.3154,3.95102 -6.1029,5.45926 -5.1472,4.34307 -7,6.14958 -7,6.82524 0,0.34565 -0.183,0.57221 -0.4068,0.50346 -0.5419,-0.16652 -5.8816,5.24198 -5.7058,5.77936 0.076,0.23098 -0.065,0.29488 -0.3124,0.142 -0.2474,-0.15289 -1.7717,1.27898 -3.3874,3.18194 -1.6156,1.90295 -3.1626,3.47949 -3.4376,3.5034 -0.275,0.0239 -2.0493,1.50032 -3.9428,3.28089 -1.8936,1.78059 -3.5507,3.23739 -3.6824,3.23739 -0.3719,0 -5.9503,4.04185 -8.3864,6.07645 -1.2029,1.00455 -4.6173,3.5172 -7.5877,5.58365 -5.6828,3.9535 -8.3477,6.46596 -11.2326,10.58991 -2.2526,3.22015 -5.4181,9.07255 -5.4181,10.0172 0,0.40305 -0.1726,0.7328 -0.3836,0.7328 -0.4644,0 -2.2933,4.71705 -3.2956,8.5 -0.4008,1.5125 -0.8759,5.675 -1.0558,9.25 -0.1799,3.575 -0.5381,6.71375 -0.796,6.975 -0.258,0.26125 -0.469,2.17995 -0.469,4.26375 0,2.59045 -0.2418,4.13395 -0.7645,4.8802 -0.9186,1.3115 -0.5319,3.36675 0.8103,4.30685 0.5123,0.35885 4.0045,3.55985 7.7605,7.1133 3.7559,3.5535 7.0235,6.5359 7.2613,6.62755 0.2378,0.0917 0.4324,0.48545 0.4324,0.875 0,0.3896 0.1901,0.70835 0.4224,0.70835 0.2323,0 1.5135,1.11125 2.8472,2.46945 1.3336,1.3582 2.5722,2.37835 2.7523,2.26705 0.1801,-0.1113 0.8099,0.35245 1.3995,1.03055 0.5896,0.6781 1.2985,1.23295 1.5753,1.23295 0.2768,0 0.5033,0.3375 0.5033,0.75 0,0.4125 0.3508,0.75 0.7795,0.75 0.4288,0 0.6455,0.21695 0.4816,0.4821 -0.1639,0.26515 0.5541,1.0345 1.5955,1.70965 2.1499,1.3939 6.0189,4.80825 5.4485,4.80825 -0.2071,0 -0.039,0.3375 0.3735,0.75 0.4125,0.4125 1.1036,0.75 1.5357,0.75 0.4322,0 0.7295,0.28125 0.6607,0.625 -0.069,0.34375 0.1563,0.56875 0.5,0.5 0.3438,-0.0688 0.5688,0.15625 0.5,0.5 -0.069,0.34375 0.1563,0.56875 0.5,0.5 0.3438,-0.0688 0.625,0.1 0.625,0.375 0,0.275 0.1688,0.4643 0.375,0.4206 0.2063,-0.0435 0.7876,0.10015 1.2919,0.3196 0.7215,0.31395 0.7748,0.48905 0.25,0.82175 -0.4556,0.2888 -0.222,0.42515 0.7376,0.4304 0.7725,0.005 1.2922,0.18935 1.155,0.41145 -0.1373,0.2221 0.2432,0.7714 0.8455,1.2207 3.1079,2.3184 4.7133,3.41418 5.845,3.98978 1.6949,0.8619 2.9988,1.9993 3.0058,2.6218 0.01,0.2826 0.9594,0.9524 2.125,1.4884 2.0738,0.9537 4.9862,3.4918 4.5301,3.948 -0.3986,0.3985 1.0018,2.2534 1.8734,2.4813 1.0186,0.2664 2.7602,4.0564 4.7044,10.2376 1.2321,3.9172 1.737,4.8509 3.2356,5.9847 0.9767,0.7389 2.1581,1.8212 2.6254,2.4053 1.3615,1.7015 5.9699,4.608 8.2388,5.1961 3.1113,0.8065 4.6615,2.9029 4.6615,6.3041 0,2.596 0.067,2.7332 1.676,3.4052 0.9217,0.3851 2.6655,0.8588 3.875,1.0525 1.2094,0.1938 3.8727,0.7817 5.9182,1.3065 2.0455,0.5248 4.7959,0.9542 6.112,0.9542 2.8016,0 9.1403,2.3553 11.8018,4.3853 0.9746,0.7433 2.1822,2.2545 2.6835,3.3581 1.2235,2.6932 1.1958,3.4072 -0.1158,2.9909 -0.9207,-0.2922 -1.0032,-0.189 -0.6728,0.8413 0.8898,2.7751 1.199,4.8956 1.2102,8.2994 l 0.012,3.625 -1.5,0 c -2.0673,0 -3.293,-1.4148 -3.9611,-4.5723 -0.3235,-1.5287 -1.3525,-3.8255 -2.3981,-5.3527 -1.7493,-2.5549 -1.9112,-2.662 -3.6095,-2.3864 -2.1969,0.3565 -3.0313,1.4344 -3.0313,3.916 l 0,1.9135 -2.125,-0.1341 c -1.8881,-0.1191 -2.104,-0.023 -1.9362,0.866 0.4042,2.1408 0.2861,5.9165 -0.1888,6.0383 -0.275,0.071 -0.7813,0.016 -1.125,-0.1217 z m -61.4852,-58.4731 c 0.4772,-0.4772 -1.7384,-3.2123 -3.2294,-3.9868 -0.7368,-0.3827 -1.4752,-1.092 -1.6411,-1.5762 -0.1658,-0.4843 -1.2969,-1.6591 -2.5136,-2.6107 -1.2166,-0.9516 -2.1201,-1.8221 -2.0077,-1.9345 0.2676,-0.2676 -3.707,-3.5853 -4.2953,-3.5853 -0.249,0 -0.4527,-0.3375 -0.4527,-0.75002 0,-0.4125 -0.2813,-0.69375 -0.625,-0.625 -0.3438,0.0687 -0.5688,-0.15625 -0.5,-0.5 0.069,-0.34375 -0.2125,-0.625 -0.625,-0.625 -0.4125,0 -0.75,-0.3174 -0.75,-0.70535 0,-0.38795 -1.4004,-1.9067 -3.1119,-3.375 -1.7115,-1.4683 -3.7143,-3.2884 -4.4506,-4.04465 -0.7363,-0.75625 -1.449,-1.375 -1.5838,-1.375 -0.1348,0 -1.4553,-1.18125 -2.9345,-2.625 -2.734,-2.66845 -5.275,-4.875 -5.614,-4.875 -0.1029,0 -1.2729,-0.9969 -2.6,-2.21535 -1.327,-1.21845 -2.5911,-2.1052 -2.809,-1.9705 -0.2179,0.13465 -0.3962,0.034 -0.3962,-0.22405 0,-0.61605 -7.5035,-6.25675 -8.323,-6.25675 -0.3482,0 -0.521,-0.18125 -0.3841,-0.40275 0.3216,-0.52045 -4.1267,-3.3043 -5.9179,-3.7036 -0.7563,-0.16855 -1.375,-0.5215 -1.375,-0.7843 0,-0.27865 -0.4334,-0.24595 -1.0396,0.0785 -0.996,0.533 -0.9384,0.6595 1.375,3.01685 1.328,1.35325 2.6958,2.4608 3.0396,2.4612 0.3437,4e-4 0.625,0.19075 0.625,0.423 0,0.23225 1.7175,2.0885 3.8168,4.125 2.0992,2.0365 4.2929,4.2445 4.875,4.90665 1.8333,2.0858 7.1502,7.2655 8.2244,8.0122 0.5666,0.3938 0.8937,0.9563 0.7268,1.25 -0.1668,0.29365 -0.127,0.3749 0.089,0.1805 0.2155,-0.19435 1.0954,0.17135 1.9552,0.81265 0.8598,0.64135 2.4229,1.56475 3.4735,2.0521 1.3723,0.6365 1.7243,1.00395 1.25,1.3047 -0.4957,0.31435 -0.4349,0.42055 0.2443,0.4263 0.4974,0.005 0.7816,0.20655 0.6313,0.4496 -0.2444,0.39555 2.192,1.6938 3.4642,1.84595 0.275,0.033 0.7945,0.0941 1.1545,0.13595 0.3599,0.042 0.5154,0.30115 0.3455,0.57615 -0.17,0.275 0.054,0.5 0.497,0.5 0.4433,0 1.6338,0.5625 2.6456,1.25 1.0117,0.6875 1.506,1.25342 1.0984,1.25762 -0.6487,0.01 -0.6476,0.068 0.01,0.4886 0.4125,0.2645 1.1201,0.3659 1.5723,0.2254 0.8623,-0.268 2.0766,0.6881 2.9525,2.3247 0.285,0.5325 1.4204,1.5378 2.5231,2.2339 1.6101,1.0164 1.94,1.4704 1.675,2.3053 -0.2098,0.6609 -0.1409,0.9228 0.189,0.7189 0.2855,-0.1764 0.6504,-0.1082 0.811,0.1517 0.1606,0.2598 -0.2176,0.5703 -0.8405,0.69 -0.98,0.1884 -0.9473,0.2269 0.2426,0.2858 1.1399,0.056 1.375,0.2965 1.375,1.4037 0,2.196 1.2989,3.1644 4.2442,3.1644 1.424,0 2.7271,-0.138 2.8957,-0.3065 z m -57.4242,-49.13787 c 0.151,-0.24445 -0.5669,-1.06695 -1.5955,-1.8278 -2.38313,-1.7629 -3.59493,-3.23535 -3.60903,-4.38515 -0.0155,-1.2703 -2.0386,-5.8427 -2.58505,-5.8427 -0.24795,0 -0.6647,-0.5625 -0.92605,-1.25 -0.2614,-0.6875 -0.69875,-1.25 -0.97195,-1.25 -0.2732,0 -0.36715,-0.3375 -0.2089,-0.75 0.1583,-0.4125 0.0838,-0.75 -0.16565,-0.75 -0.7284,0 -1.76515,5.85715 -1.2178,6.87995 0.26065,0.4869 2.10625,2.3444 4.10145,4.1277 1.99515,1.7833 4.09675,3.72485 4.6702,4.31455 1.12918,1.1612 2.07328,1.43725 2.50828,0.73345 z m -11.30398,-36.71835 c -0.0631,-0.323 0.2684,-1.3074 0.73675,-2.18745 0.46835,-0.8801 0.8516,-2.18715 0.8516,-2.90455 0,-0.79705 0.2075,-1.17605 0.53365,-0.9745 0.44345,0.2741 1.39225,-1.70075 1.0395,-2.16365 -0.0599,-0.0786 0.23665,-0.4884 0.659,-0.9107 0.4223,-0.42235 0.76785,-1.30105 0.76785,-1.95265 0,-0.65165 0.20725,-1.3129 0.4606,-1.46945 0.25335,-0.1566 0.8561,-1.3511 1.33945,-2.6545 0.48335,-1.30345 1.28195,-2.95775 1.7746,-3.6763 0.4927,-0.71855 0.75245,-1.4498 0.57725,-1.625 -0.17525,-0.1752 -0.0561,-0.31855 0.26475,-0.31855 0.32088,0 0.57988,-0.39375 0.57568,-0.875 -0.01,-0.7558 -0.081,-0.77285 -0.54338,-0.125 -0.4406,0.6168 -0.4937,0.57245 -0.29905,-0.25 0.13015,-0.55 0.41373,-1.4328 0.63013,-1.96181 0.3152,-0.7702 0.2269,-0.89785 -0.44323,-0.6407 -1.03975,0.399 -1.0872,-0.3257 -0.0868,-1.32605 0.41253,-0.4125 0.74253,-1.15985 0.73333,-1.66075 -0.014,-0.78925 -0.1494,-0.75125 -1.01248,0.28515 -0.54775,0.6577 -1.14075,1.05095 -1.3178,0.8739 -0.17705,-0.17705 -0.7863,0.0723 -1.3539,0.55415 -0.98065,0.83255 -0.99825,0.8326 -0.35435,0 0.41445,-0.53515 0.4693,-0.875 0.14125,-0.875 -0.295,0 -0.7163,0.28125 -0.9362,0.625 -0.21995,0.34375 -0.83575,0.9625 -1.3685,1.375 -0.88055,0.6818 -0.9388,0.67045 -0.6407,-0.125 0.1804,-0.48125 0.1187,-0.875 -0.1371,-0.875 -0.25575,0 -0.7098,0.95625 -1.009,2.12501 -0.29915,1.16875 -0.66875,2.4625 -0.8213,2.875 -0.711,1.92255 -1.63965,7.31815 -1.3932,8.0947 0.15145,0.47715 0.0265,1.333 -0.27825,1.9019 -0.6575,1.22855 -0.11545,12.13265 0.5817,11.70175 0.24365,-0.15055 0.3913,-0.53805 0.32815,-0.86105 z M 407.1,361.33711 c 0,-0.2912 0.225,-0.5295 0.5,-0.5295 0.275,0 0.5,0.0992 0.5,0.2205 0,0.12125 -0.225,0.35955 -0.5,0.5295 -0.275,0.16995 -0.5,0.0707 -0.5,-0.2205 z m 1,-1.5 c 0,-0.2912 0.225,-0.52951 0.5,-0.52951 0.275,0 0.5,0.0992 0.5,0.22051 0,0.12125 -0.225,0.35955 -0.5,0.5295 -0.275,0.16995 -0.5,0.0707 -0.5,-0.2205 z M 738.20043,42.685845 c -0.5899,-0.58997 -1.2476,-0.88561 -1.4615,-0.65699 -0.2139,0.22862 -0.1063,0.51659 0.2392,0.63992 0.3455,0.12334 0.5298,0.38333 0.4096,0.57776 -0.1201,0.19443 0.2549,0.38916 0.8335,0.43274 l 1.0519,0.0792 -1.0727,-1.07267 z M 418.60003,464.08713 c 0,-0.1213 0.225,-0.3596 0.5,-0.5295 0.275,-0.17 0.5,-0.071 0.5,0.2205 0,0.2912 -0.225,0.5295 -0.5,0.5295 -0.275,0 -0.5,-0.099 -0.5,-0.2205 z M 695.96553,23.479655 c 0.3385,-0.13696 1.0135,-0.1453 1.5,-0.0186 0.4864,0.12677 0.2095,0.23883 -0.6155,0.24902 -0.825,0.0102 -1.2231,-0.0935 -0.8845,-0.2305 z" id="path2818"/>
+</svg>
\ No newline at end of file
index 879329aac67fc9ea8f5199450ce68ea6640bad18..fc227747b005ee69e922f4bb1848b591d5571a60 100644 (file)
@@ -61,6 +61,42 @@ namespace Crow
                        bitmap.UnlockBits (data);           
                }
 
+               #region implemented abstract members of Fill
+
+               public override void SetAsSource (Context ctx, Rectangle bounds = default(Rectangle))
+               {
+                       float widthRatio = 1f;
+                       float heightRatio = 1f;
+
+                       if (Scaled){
+                               widthRatio = (float)bounds.Width / Dimensions.Width;
+                               heightRatio = (float)bounds.Height / Dimensions.Height;
+                       }
+
+                       if (KeepProportions) {
+                               if (widthRatio < heightRatio)
+                                       heightRatio = widthRatio;
+                               else
+                                       widthRatio = heightRatio;
+                       }
+
+                       using (ImageSurface tmp = new ImageSurface (Format.Argb32, bounds.Width, bounds.Height)) {
+                               using (Cairo.Context gr = new Context (tmp)) {
+                                       gr.Translate (bounds.Left, bounds.Top);
+                                       gr.Scale (widthRatio, heightRatio);
+                                       gr.Translate ((bounds.Width/widthRatio - Dimensions.Width)/2, (bounds.Height/heightRatio - Dimensions.Height)/2);
+
+                                       using (ImageSurface imgSurf = new ImageSurface (image, Format.Argb32, 
+                                               Dimensions.Width, Dimensions.Height, 4 * Dimensions.Width)) {
+                                               gr.SetSourceSurface (imgSurf, 0,0);
+                                               gr.Paint ();
+                                       }
+                               }
+                               ctx.SetSource (tmp);
+                       }                               
+               }
+               #endregion
+
                public override void Paint (Cairo.Context gr, Rectangle rect, string subPart = "")
                {
                        float widthRatio = 1f;
diff --git a/src/Cairo/IFill.cs b/src/Cairo/IFill.cs
deleted file mode 100644 (file)
index e3459bb..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-namespace Crow
-{
-       public interface ICairoFill
-       {
-               void SetAsSource (Cairo.Context ctx);
-       }
-}
-
index c88e172992dcbe837c693737a4080ebf5aa567df..ccc42493cd99e625768bb796f2a89ae475deed09 100644 (file)
@@ -10,7 +10,7 @@ using System.Diagnostics;
 
 namespace Crow
 {
-       public struct Color : ICairoFill
+       public struct Color
     {
                #region CTOR
                public Color(double _R, double _G, double _B, double _A)
@@ -63,7 +63,6 @@ namespace Crow
                                                return cr;
                                }
                        }
-
                        return new Color(
                                double.Parse(c[0]),
                                double.Parse(c[1]),
@@ -92,6 +91,10 @@ namespace Crow
         {
             return new Cairo.Color(c.R, c.G, c.B, c.A);
         }
+               public static implicit operator Fill(Color c){
+                       return new SolidColor (c) as Fill;
+               }
+
 
                public static bool operator ==(Color left, Color right)
                {
@@ -147,16 +150,7 @@ namespace Crow
                {
                        return new Color (this.R, this.G, this.B, _A);
                }
-
-               #region IFill implementation
-
-               public void SetAsSource (Cairo.Context ctx)
-               {
-                       ctx.SetSourceRGBA (R, G, B, A);
-               }
-
-               #endregion
-
+                       
                #region Predefined colors
         public static readonly Color Transparent = new Color(0, 0, 0, 0, "Transparent");
                public static readonly Color Clear = new Color(-1, -1, -1, -1, "Clear");
diff --git a/src/Fill/Fill.cs b/src/Fill/Fill.cs
new file mode 100644 (file)
index 0000000..322fa5a
--- /dev/null
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+
+namespace Crow
+{
+       public abstract class Fill
+       {
+               public abstract void SetAsSource (Cairo.Context ctx, Rectangle bounds = default(Rectangle));
+               public static object Parse (string s){
+                       if (string.IsNullOrEmpty (s))
+                               return null;
+                       if (s.Substring (1).StartsWith ("gradient"))
+                               return (Gradient)Gradient.Parse (s);
+                       if (s.EndsWith (".svg", true, System.Globalization.CultureInfo.InvariantCulture))
+                               return SvgPicture.Parse (s);
+                       if (s.EndsWith (".png", true, System.Globalization.CultureInfo.InvariantCulture) ||
+                           s.EndsWith (".jpg", true, System.Globalization.CultureInfo.InvariantCulture) ||
+                           s.EndsWith (".jpeg", true, System.Globalization.CultureInfo.InvariantCulture) ||
+                           s.EndsWith (".bmp", true, System.Globalization.CultureInfo.InvariantCulture) ||
+                           s.EndsWith (".gif", true, System.Globalization.CultureInfo.InvariantCulture))
+                               return BmpPicture.Parse (s);
+                       
+                       return (SolidColor)SolidColor.Parse (s);
+               }
+
+               public static implicit operator Fill(Color c){
+                       return new SolidColor (c);
+               }
+
+       }
+}
+
diff --git a/src/Gradient.cs b/src/Gradient.cs
new file mode 100644 (file)
index 0000000..c521fd6
--- /dev/null
@@ -0,0 +1,130 @@
+//
+//  Gradient.cs
+//
+//  Author:
+//       Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+//  Copyright (c) 2016 jp
+//
+//  This program is free software: you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation, either version 3 of the License, or
+//  (at your option) any later version.
+//
+//  This program is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//  GNU General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+using System;
+using System.Collections.Generic;
+
+namespace Crow
+{
+       public class Gradient : Fill
+       {
+               public enum Type
+               {
+                       Vertical,
+                       Horizontal,
+                       Oblic,
+                       Radial
+               }
+               public class ColorStop
+               {
+                       public double Offset;
+                       public Color Color;
+
+                       public ColorStop(double offset, Color color){ 
+                               Offset = offset;
+                               Color = color;
+                       }
+                       public static object Parse(string s)
+                       {
+                               if (string.IsNullOrEmpty (s))
+                                       return null;
+                               
+                               string[] parts = s.Trim ().Split (':');
+
+                               if (parts.Length > 2)
+                                       throw new Exception ("too many parameters in color stop: " + s);
+                               
+                               if (parts.Length == 2)
+                                       return new ColorStop (double.Parse (parts [0]), (Color)parts [1]);
+
+                               return new ColorStop (-1, (Color)parts [0]);
+                       }
+               }
+               public Gradient.Type GradientType = Type.Vertical;
+//             public double x0;
+//             public double y0;
+//             public double x1;
+//             public double y1;
+//             public double Radius1;
+//             public double Radius2;
+               public List<ColorStop> Stops = new List<ColorStop>();
+               public Gradient(Gradient.Type _type)
+               {
+                       GradientType = _type;
+               }
+
+               #region implemented abstract members of Fill
+
+               public override void SetAsSource (Cairo.Context ctx, Rectangle bounds = default(Rectangle))
+               {
+                       Cairo.Gradient grad = null;
+                       switch (GradientType) {
+                       case Type.Vertical:
+                               grad = new Cairo.LinearGradient (bounds.Left, bounds.Top, bounds.Left, bounds.Bottom);
+                               break;
+                       case Type.Horizontal:
+                               grad = new Cairo.LinearGradient (bounds.Left, bounds.Top, bounds.Right, bounds.Top);
+                               break;
+                       case Type.Oblic:
+                               grad = new Cairo.LinearGradient (bounds.Left, bounds.Top, bounds.Right, bounds.Bottom);
+                               break;
+                       case Type.Radial:
+                               throw new NotImplementedException ();
+                       }
+
+                       foreach (ColorStop cs in Stops)
+                               grad.AddColorStop (cs.Offset, cs.Color);
+                       
+                       ctx.SetSource (grad);
+                       grad.Dispose ();
+               }
+               #endregion
+
+               public static object Parse(string s)
+               {
+                       if (string.IsNullOrEmpty (s))
+                               return Color.White;
+
+                       Crow.Gradient tmp;
+
+                       string[] stops = s.Trim ().Split ('|');
+
+                       switch (stops[0].Trim()) {
+                       case "vgradient":
+                               tmp = new Gradient (Type.Vertical);
+                               break;
+                       case "hgradient":
+                               tmp = new Gradient (Type.Horizontal);
+                               break;
+                       case "ogradient":
+                               tmp = new Gradient (Type.Oblic);
+                               break;
+                       default:
+                               throw new Exception ("Unknown gradient type: " + stops [0]);
+                       }
+
+                       for (int i = 1; i < stops.Length; i++)
+                               tmp.Stops.Add((ColorStop)ColorStop.Parse(stops[i]));
+
+                       return tmp;
+               }
+       }
+}
+
index 39e012dd0bb14f33636ae2d072385257cb95d193..80e0e850c6eb28e3f8fa895a7a86e9e1a6c6f918 100644 (file)
@@ -34,7 +34,7 @@ namespace Crow
                        gr.Translate (-m.X, -m.Y);
 
                        gr.LineWidth = 2;
-                       gr.Color = Foreground;
+                       Foreground.SetAsSource (gr);
                        gr.MoveTo (m.X,0.0);
                        gr.LineTo (m.X, -m.Y*0.5);
                        gr.Stroke ();
index c04a135e58da4772d5e28fca6915c345644ad17e..58ccff33f6c1af870182cac47efdd339cc13ae50 100644 (file)
@@ -25,7 +25,7 @@ namespace Crow
                        }
                }
                [XmlAttributeAttribute()][DefaultValue("White")]
-               public override Color Foreground {
+               public override Fill Foreground {
                        get { return base.Foreground;}
                        set {base.Foreground = value;}
                }
@@ -52,13 +52,13 @@ namespace Crow
                        if (BorderWidth > 0) 
                                rBack.Inflate (-BorderWidth / 2);                       
 
-                       gr.SetSourceColor(Background);
-                       CairoHelpers.CairoRectangle(gr,rBack,CornerRadius);
+                       Background.SetAsSource (gr, rBack);
+                       CairoHelpers.CairoRectangle(gr, rBack, CornerRadius);
                        gr.Fill ();
 
                        if (BorderWidth > 0) {
                                gr.LineWidth = BorderWidth;
-                               gr.SetSourceColor(Foreground);
+                               Foreground.SetAsSource (gr, rBack);
                                CairoHelpers.CairoRectangle(gr, rBack, CornerRadius);
                                gr.Stroke ();
                        }
index 3d916a8ca441257ce7338673642b19a0479e5d4b..b7a181e02f080da8e5f0b6e887cf2b8b7e0adb21 100644 (file)
@@ -25,7 +25,7 @@ namespace Crow
                protected override void DrawGraduations(Context gr, PointD pStart, PointD pEnd)
                {
                        Rectangle r = ClientRectangle;
-                       gr.SetSourceColor(Foreground);
+                       Foreground.SetAsSource (gr);
 
                        gr.LineWidth = 2;
                        gr.MoveTo(pStart);
index 5613c0c91ed35c9a958630fc11d5993d26ec2d4b..7fd0e1ca3fab34d2b2a7ac580ebafd130ba63e36 100644 (file)
@@ -66,8 +66,8 @@ namespace Crow
                #region private fields
                ILayoutable _parent;
                string _name = "unamed";
-               Color _background = Color.Transparent;
-               Color _foreground = Color.White;
+               Fill _background = Color.Transparent;
+               Fill _foreground = Color.White;
                Font _font = "droid, 10";
                double _cornerRadius = 0;
                int _margin = 0;
@@ -79,9 +79,6 @@ namespace Crow
                HorizontalAlignment _horizontalAlignment = HorizontalAlignment.Center;
                Size _maximumSize = "0;0";
                Size _minimumSize = "0;0";
-
-               Picture _backgroundImage;
-               string _backgroundImagePath;
                #endregion
 
                #region public fields
@@ -278,7 +275,7 @@ namespace Crow
                        }
                } 
                [XmlAttributeAttribute()][DefaultValue("Transparent")]
-               public virtual Color Background {
+               public virtual Fill Background {
                        get { return _background; }
                        set {
                                if (_background == value)
@@ -289,7 +286,7 @@ namespace Crow
                        }
                } 
                [XmlAttributeAttribute()][DefaultValue("White")]
-               public virtual Color Foreground {
+               public virtual Fill Foreground {
                        get { return _foreground; }
                        set {
                                if (_foreground == value)
@@ -415,7 +412,6 @@ namespace Crow
                                                        name = xaa.AttributeName;
                                                continue;
                                        }
-
                                        XmlIgnoreAttribute xia = o as XmlIgnoreAttribute;
                                        if (xia != null)
                                                continue;
@@ -707,7 +703,7 @@ namespace Crow
                {
                        Rectangle rBack = new Rectangle (Slot.Size);
 
-                       Background.SetAsSource (gr);
+                       Background.SetAsSource (gr, rBack);
                        CairoHelpers.CairoRectangle(gr,rBack,_cornerRadius);
                        gr.Fill ();
                }
@@ -747,12 +743,15 @@ namespace Crow
                        Rectangle rb = Parent.ContextCoordinates(Slot);
 
                        using (ImageSurface source = new ImageSurface(bmp, Format.Argb32, Slot.Width, Slot.Height, 4 * Slot.Width)) {
-                               if (this.Background == Color.Clear) {
-                                       ctx.Save ();
-                                       ctx.Operator = Operator.Clear;
-                                       ctx.Rectangle(rb);
-                                       ctx.Fill ();
-                                       ctx.Restore ();
+                               //TODO:improve equality test for basic color and Fill
+                               if (this.Background is SolidColor) {                                    
+                                       if ((this.Background as SolidColor).Equals(Color.Clear)) {
+                                               ctx.Save ();
+                                               ctx.Operator = Operator.Clear;
+                                               ctx.Rectangle (rb);
+                                               ctx.Fill ();
+                                               ctx.Restore ();
+                                       }
                                }
                                ctx.SetSourceSurface (source, rb.X, rb.Y);
                                ctx.Paint ();
@@ -1146,16 +1145,16 @@ namespace Crow
                                        il.Emit(OpCodes.Ldstr,strcst);
 
                                }else{
-                                       //search for a static field in left operand type named 'rop name'
-                                       FieldInfo ropFi = lopT.GetField (rop, BindingFlags.Static|BindingFlags.Public);
-                                       if (ropFi != null)
-                                       {
-                                               il.Emit (OpCodes.Ldsfld, ropFi);
-                                       }else{
-                                               //search if parsing methods are present
-                                               MethodInfo lopTryParseMi = lopT.GetMethod("TryParse");
-                                               //TODO
-                                       }
+                                       if (lopT.IsEnum)
+                                               throw new NotImplementedException();
+                                               
+                                       MethodInfo lopParseMi = lopT.GetMethod("Parse");
+                                       if (lopParseMi == null)
+                                               throw new Exception (string.Format
+                                                       ("GOML:no parse method found in: {0}", lopT.Name));     
+                                       il.Emit(OpCodes.Ldstr, rop);
+                                       il.Emit(OpCodes.Callvirt, lopParseMi);
+                                       il.Emit(OpCodes.Unbox_Any, lopT);
                                }
 
                                #endregion
index e03399e99b73e4c5db6361ef2bdd25d6883650c8..087cd38d5f0a52ce577a4607f1cd5c741dd5239a 100644 (file)
@@ -188,8 +188,9 @@ namespace Crow
                protected override void onDraw (Context gr)
                {
                        Rectangle rBack = new Rectangle (Slot.Size);
-                       gr.SetSourceColor(Background);
-                       CairoHelpers.CairoRectangle(gr,rBack,CornerRadius);
+
+                       Background.SetAsSource (gr, rBack);
+                       CairoHelpers.CairoRectangle(gr, rBack, CornerRadius);
                        gr.Fill ();
 
                        foreach (GraphicObject g in Children) {
@@ -225,9 +226,10 @@ namespace Crow
                                                clip.clearAndClip (gr);
 
                                                Rectangle rBack = Slot.Size;
-                                               gr.SetSourceColor(Background);
-                                               CairoHelpers.CairoRectangle(gr,rBack,CornerRadius);
+                                               Background.SetAsSource (gr, rBack);
+                                               CairoHelpers.CairoRectangle(gr, rBack, CornerRadius);
                                                gr.Fill ();
+
                                                #if DEBUG_CLIP_RECTANGLE
                                                clip.stroke (gr, Color.Amaranth.AdjustAlpha (0.8));
                                                #endif
index 0b93924a41e8d07bea71b56bf8dff807d02b4c8e..ee7dd0459ee8a4fa9e303129567b1af410995d54 100644 (file)
@@ -106,7 +106,7 @@ namespace Crow
 
                                this.registerForGraphicUpdate ();
                                this.RegisterForLayouting ((int)LayoutingType.Sizing);
-                               NotifyValueChanged ("Text", Text);
+                               NotifyValueChanged ("Text", _text);
             }
         }
                [XmlAttributeAttribute()][DefaultValue(false)]
@@ -122,7 +122,8 @@ namespace Crow
                                registerForGraphicUpdate();
                        }
                }
-               [XmlIgnore]public int CurrentColumn{
+               [XmlAttributeAttribute()][DefaultValue(0)]
+               public int CurrentColumn{
                        get { return _currentCol; }
                        set { 
                                if (value == _currentCol)
@@ -136,7 +137,8 @@ namespace Crow
                                NotifyValueChanged ("CurrentColumn", _currentCol);
                        }
                }
-               [XmlIgnore]public int CurrentLine{
+               [XmlAttributeAttribute()][DefaultValue(0)]
+               public int CurrentLine{
                        get { return _currentLine; }
                        set { 
                                if (value == _currentLine)
@@ -150,7 +152,9 @@ namespace Crow
                                NotifyValueChanged ("CurrentLine", _currentLine);
                        }
                }
-               [XmlIgnore]public Point SelBegin {
+               //TODO:using HasFocus for drawing selection cause SelBegin and Release binding not to work
+               [XmlAttributeAttribute()][DefaultValue("-1")]
+               public Point SelBegin {
                        get {
                                return _selBegin;
                        }
@@ -158,10 +162,12 @@ namespace Crow
                                if (value == _selBegin)
                                        return;
                                _selBegin = value;
+                               NotifyValueChanged ("SelBegin", _selBegin);
                                NotifyValueChanged ("SelectedText", SelectedText);
                        }
                }                       
-               [XmlIgnore]public Point SelRelease {
+               [XmlAttributeAttribute()][DefaultValue("-1")]
+               public Point SelRelease {
                        get {
                                return _selRelease;
                        }
@@ -169,6 +175,7 @@ namespace Crow
                                if (value == _selRelease)
                                        return;
                                _selRelease = value;
+                               NotifyValueChanged ("SelRelease", _selRelease);
                                NotifyValueChanged ("SelectedText", SelectedText);
                        }
                }
@@ -228,6 +235,7 @@ namespace Crow
                                        CurrentColumn = lines [CurrentLine].Count ();
                                        lines [CurrentLine] += lines [CurrentLine + 1];
                                        lines.RemoveAt (CurrentLine + 1);
+                                       NotifyValueChanged ("Text", Text);
                                        return;
                                }
                                CurrentColumn--;
@@ -251,6 +259,7 @@ namespace Crow
                                SelBegin = -1;
                                SelRelease = -1;
                        }
+                       NotifyValueChanged ("Text", Text);
                }
                /// <summary>
                /// Insert new string at caret position, should be sure no line break is inside.
@@ -260,6 +269,7 @@ namespace Crow
                {
                        lines [CurrentLine] = lines [CurrentLine].Insert (CurrentColumn, str);
                        CurrentColumn += str.Length;
+                       NotifyValueChanged ("Text", Text);
                }
 
                #region GraphicObject overrides
@@ -483,7 +493,7 @@ namespace Crow
 
                        if (HasFocus )
                        {
-                               gr.SetSourceColor(Foreground);
+                               Foreground.SetAsSource (gr);
                                gr.LineWidth = 1.5;
                                gr.MoveTo(new PointD(textCursorPos + rText.X, rText.Y + CurrentLine * fe.Height));
                                gr.LineTo(new PointD(textCursorPos + rText.X, rText.Y + (CurrentLine + 1) * fe.Height));
@@ -535,7 +545,7 @@ namespace Crow
                                if (string.IsNullOrWhiteSpace (l))
                                        continue;
 
-                               gr.SetSourceColor(Foreground);  
+                               Foreground.SetAsSource (gr);    
                                gr.MoveTo (lineRect.X, rText.Y + fe.Ascent + fe.Height * i);
 
                                #if _WIN32 || _WIN64
index c8dcbb7725a0eadb856038f958fe5d2c4b8c6c1f..c816535362c1bbb9bff64442885d2ff9d6fcdafd 100644 (file)
@@ -68,7 +68,7 @@ namespace Crow
 
                #region GraphicObject overrides
                [XmlAttributeAttribute()][DefaultValue("Gray")]
-               public override Color Background {
+               public override Fill Background {
                        get { return base.Background; }
                        set { base.Background = value; }
                }
@@ -78,7 +78,7 @@ namespace Crow
                        set { base.BorderWidth = value; }
                }
                [XmlAttributeAttribute()][DefaultValue("BlueCrayola")]
-               public override Color Foreground {
+               public override Fill Foreground {
                        get { return base.Foreground; }
                        set { base.Foreground = value; }
                }
@@ -94,7 +94,7 @@ namespace Crow
 
                        rBack.Width = (int)((double)rBack.Width / Maximum * Value);
 
-                       gr.SetSourceColor(Foreground);
+                       Foreground.SetAsSource (gr, rBack);
 
                        CairoHelpers.CairoRectangle(gr,rBack,CornerRadius);
                        gr.Fill();
index a931934ac4808dce721bdcb3e417d2786978568a..f21202a8f643113c0a9d0f3f996c369fdff0c90e 100644 (file)
@@ -32,7 +32,7 @@ namespace Crow
                #region private fields
         Rectangle cursor;
                int _cursorSize;
-               Color _cursorColor;
+               Fill _cursorColor;
                Orientation _orientation;
                bool holdCursor = false;
                #endregion
@@ -40,33 +40,47 @@ namespace Crow
                protected double unity;
 
                #region Public properties
-               [XmlAttributeAttribute()][DefaultValue("BlueGray")]
-               public virtual Color CursorColor {
+               [XmlAttributeAttribute()][DefaultValue("vgradient|0:White|0,1:SteelBlue|0,9:SteelBlue|1:DimGray")]
+               public virtual Fill CursorColor {
                        get { return _cursorColor; }
                        set {
+                               if (_cursorColor == value)
+                                       return;
                                _cursorColor = value;
                                registerForGraphicUpdate ();
+                               NotifyValueChanged ("CursorColor", _cursorColor);
                        }
                }
                [XmlAttributeAttribute()][DefaultValue(20)]
                public virtual int CursorSize {
                        get { return _cursorSize; }
                        set {
+                               if (_cursorSize == value)
+                                       return;
                                _cursorSize = value;
+                               RegisterForLayouting ((int)LayoutingType.Sizing);
                                registerForGraphicUpdate ();
+                               NotifyValueChanged ("CursorSize", _cursorSize);
                        }
                }
                [XmlAttributeAttribute()][DefaultValue(Orientation.Horizontal)]
                public virtual Orientation Orientation
                {
                        get { return _orientation; }
-                       set { _orientation = value; }
+                       set { 
+                               if (_orientation == value)
+                                       return;
+                               _orientation = value; 
+
+                               RegisterForLayouting ((int)LayoutingType.All);
+                               NotifyValueChanged ("Orientation", _orientation);
+                       }
                }
                #endregion
                [XmlAttributeAttribute()][DefaultValue(10.0)]
                public override double Maximum {
                        get { return base.Maximum; }
-                       set {
+                       set {                           
                                if (value == base.Maximum)
                                        return;
                                base.Maximum = value;
@@ -75,12 +89,18 @@ namespace Crow
 
                        }
                }
+
                #region GraphicObject Overrides
-               [XmlAttributeAttribute()][DefaultValue("Gray")]
-               public override Color Background {
+               [XmlAttributeAttribute()][DefaultValue("vgradient|0:Black|0,1:Gray|0,9:Gray|1:LightGray")]
+               public override Fill Background {
                        get { return base.Background; }
                        set { base.Background = value; }
                }
+               [XmlAttributeAttribute()][DefaultValue("Gray")]
+               public override Fill Foreground {
+                       get { return base.Foreground; }
+                       set { base.Foreground = value; }
+               }
                [XmlAttributeAttribute()][DefaultValue(true)]
                public override bool Focusable
                {
@@ -120,7 +140,7 @@ namespace Crow
 
                protected virtual void DrawGraduations(Context gr, PointD pStart, PointD pEnd)
                {
-                       gr.SetSourceColor(Foreground);
+                       Foreground.SetAsSource (gr);
 
                        gr.LineWidth = 1;
                        gr.MoveTo(pStart);
@@ -131,9 +151,9 @@ namespace Crow
                }
                protected virtual void DrawCursor(Context gr, Rectangle _cursor)
                {
-                       gr.SetSourceColor(CursorColor);
+                       CursorColor.SetAsSource (gr, _cursor);
                        CairoHelpers.CairoRectangle (gr, _cursor, CornerRadius);
-                       gr.FillPreserve();
+                       gr.Fill();
                }
 
         void computeCursorPosition()
index 6af75f1ede633139a49859ed6b0053bcf32fc598..d9003b615ad024712fd8f2e09c26ea990c2eeb9a 100644 (file)
@@ -45,12 +45,12 @@ namespace Crow
                        set { base.Focusable = value; }
                }
                [XmlAttributeAttribute()][DefaultValue("White")]
-               public override Color Background {
+               public override Fill Background {
                        get { return base.Background; }
                        set { base.Background = value; }
                }
                [XmlAttributeAttribute()][DefaultValue("Black")]
-               public override Color Foreground {
+               public override Fill Foreground {
                        get { return base.Foreground; }
                        set { base.Foreground = value; }
                }
index 1c539c67ea728b839bb15b3af872ffbae29a464c..bee580b38aab25d5fa62364a638592fabcef2fb2 100644 (file)
@@ -313,7 +313,7 @@ namespace Crow
                                                continue;
                                        }
 
-                                       gr.SetSourceColor (Foreground); 
+                                       Foreground.SetAsSource (gr);    
                                        gr.MoveTo (rText.X, rText.Y + fe.Ascent + fe.Height * curLineCount);
 
                                        #if _WIN32 || _WIN64
index c1d830614a064d8134555d4c1ce370f87aece31e..6e928e6cc2ba99425613c9922162676c80d5c1d9 100644 (file)
@@ -24,7 +24,7 @@ using Cairo;
 
 namespace Crow
 {
-       public abstract class Picture
+       public abstract class Picture : Fill
        {
                public string Path;
                public Size Dimensions;
index 369cf01d3f4506e64626f3c2dab05a9b980c6ffe..76beaa996fe9329eb730ba40649716a3f8dd1295 100644 (file)
@@ -130,7 +130,7 @@ namespace Crow
 
         public override string ToString()
         {
-            return string.Format("({0},{1})", X, Y);
+                       return string.Format("({0};{1})", X, Y);
         }
 
         public override bool Equals(object obj)
@@ -141,6 +141,19 @@ namespace Crow
         {
             return base.GetHashCode();
         }
+               public static Point Parse(string s)
+               {
+                       if (string.IsNullOrEmpty (s))
+                               return default(Point);
+                       string[] d = s.Trim().Split(';');
+                       if (d.Length == 2)
+                               return new Point (int.Parse (d [0]), int.Parse (d [1]));
+                       else if (d.Length == 1) {
+                               int tmp = int.Parse (d [0]);
+                               return new Point (tmp, tmp);
+                       }
+                       throw new Exception ("Crow.Point Parsing Error: " + s);
+               }
     }
 
 }
index ea410ff360a11c9b56eb64a8e8ee7b88dc76be6d..c0b985202196573fbde3cca3e23f7c4f3bfcb6b0 100644 (file)
@@ -233,10 +233,7 @@ namespace Crow
             }
         }
 
-        public static Rectangle Zero
-        {
-            get { return new Rectangle(0, 0, 0, 0); }
-        }
+               public static readonly Rectangle Zero = new Rectangle(0, 0, 0, 0);
         public static Rectangle Empty
         {
             get { return Zero; }
diff --git a/src/SolidColor.cs b/src/SolidColor.cs
new file mode 100644 (file)
index 0000000..7a1178c
--- /dev/null
@@ -0,0 +1,96 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml.Serialization;
+using System.Reflection;
+using System.Diagnostics;
+
+
+
+namespace Crow
+{
+       public class SolidColor : Fill
+    {
+               Color color = Color.Transparent;
+               #region CTOR
+               public SolidColor(Color c)
+               {
+                       color = c;
+               }
+               #endregion
+
+               #region implemented abstract members of Fill
+
+               public override void SetAsSource (Cairo.Context ctx, Rectangle bounds = default(Rectangle))
+               {
+                       ctx.SetSourceRGBA (color.R, color.G, color.B, color.A);
+               }
+               public static object Parse(string s)
+               {
+                       return new SolidColor((Color)s);
+               }
+               #endregion
+
+               #region Operators
+        public static implicit operator Color(SolidColor c)
+        {
+                       return c.color;
+        }
+               public static implicit operator SolidColor(Color c)
+               {
+                       return new SolidColor (c);
+               }
+               public static bool operator ==(SolidColor left, SolidColor right)
+               {
+                       return left.color == right.color ? true : false;
+               }
+               public static bool operator !=(SolidColor left, SolidColor right)
+               {
+                       return left.color == right.color ? false : true;
+
+               }
+               public override bool Equals (object obj)
+               {
+                       if (obj is Crow.Color)
+                               return color == (Color)obj;
+                       if (obj is SolidColor)
+                               return color == (obj as SolidColor).color;
+                       return false;                   
+               }
+//             public static bool operator ==(SolidColor c, string n)
+//             {
+//                     return c.color.Name == n ? true : false;
+//             }
+//             public static bool operator !=(SolidColor c, string n)
+//             {
+//                     return c.color.Name == n ? false : true;
+//             }
+//             public static bool operator ==(string n, SolidColor c)
+//             {
+//                     return c.color.Name == n ? true : false;
+//             }
+//             public static bool operator !=(string n, SolidColor c)
+//             {
+//                     return c.color.Name == n ? false : true;
+//             }
+               public static SolidColor operator *(SolidColor c, Double f)
+               {
+                       return new SolidColor(new Color(c.color.R,c.color.G,c.color.B,c.color.A * f));
+               }
+               public static SolidColor operator +(SolidColor c1, SolidColor c2)
+               {
+                       return new SolidColor(new Color(c1.color.R + c2.color.R,c1.color.G + c2.color.G,c1.color.B + c2.color.B,c1.color.A + c2.color.A));
+               }
+               public static SolidColor operator -(SolidColor c1, SolidColor c2)
+               {
+                       return new SolidColor(new Color(c1.color.R - c2.color.R,c1.color.G - c2.color.G,c1.color.B - c2.color.B,c1.color.A - c2.color.A));
+               }
+               #endregion                                      
+
+               public override string ToString()
+               {
+                       return color.ToString ();
+               }
+    }
+}
index 38781a1cd6c72e307fb4f7a400f55265cbec916e..19ace4db5a1683ffeb9ae7d1b4ae092c731e2fe6 100644 (file)
@@ -41,6 +41,38 @@ namespace Crow
                                Dimensions = new Size (hSVG.Dimensions.Width, hSVG.Dimensions.Height);
                        }
                }
+
+               #region implemented abstract members of Fill
+
+               public override void SetAsSource (Context ctx, Rectangle bounds = default(Rectangle))
+               {
+                       float widthRatio = 1f;
+                       float heightRatio = 1f;
+
+                       if (Scaled){
+                               widthRatio = (float)bounds.Width / Dimensions.Width;
+                               heightRatio = (float)bounds.Height / Dimensions.Height;
+                       }
+
+                       if (KeepProportions) {
+                               if (widthRatio < heightRatio)
+                                       heightRatio = widthRatio;
+                               else
+                                       widthRatio = heightRatio;
+                       }
+
+                       using (ImageSurface tmp = new ImageSurface (Format.Argb32, bounds.Width, bounds.Height)) {
+                               using (Cairo.Context gr = new Context (tmp)) {
+                                       gr.Translate (bounds.Left, bounds.Top);
+                                       gr.Scale (widthRatio, heightRatio);
+                                       gr.Translate ((bounds.Width/widthRatio - Dimensions.Width)/2, (bounds.Height/heightRatio - Dimensions.Height)/2);
+
+                                       hSVG.RenderCairo (gr);
+                               }
+                               ctx.SetSource (tmp);
+                       }       
+               }
+               #endregion
                        
                public override void Paint (Cairo.Context gr, Rectangle rect, string subPart = "")
                {
@@ -64,10 +96,6 @@ namespace Crow
                        gr.Scale (widthRatio, heightRatio);
                        gr.Translate (((float)rect.Width/widthRatio - Dimensions.Width)/2f, ((float)rect.Height/heightRatio - Dimensions.Height)/2f);
 
-                       if (string.IsNullOrEmpty (subPart))
-                               hSVG.RenderCairo (gr);
-                       else
-                               hSVG.RenderCairoSub (gr, "#" + subPart);                        
                        gr.Restore ();                  
                }
        }