]> O.S.I.I.S - jp/crow.git/commitdiff
Image loading detecting svg with extension, ressource tag (#) for
authorjpbruyere <jp.bruyere@hotmail.com>
Sat, 23 May 2015 13:20:53 +0000 (15:20 +0200)
committerjpbruyere <jp.bruyere@hotmail.com>
Sat, 23 May 2015 13:20:53 +0000 (15:20 +0200)
pathes
-svg sub element drawing

GOLib.csproj
Images/Icons/IconAlerte.svg [new file with mode: 0755]
Images/Icons/icon_alert.gif [deleted file]
Images/Icons/question_mark.svg [deleted file]
Images/Icons/updown.svg
Tests/Interfaces/test4.goml
Tests/Tests.csproj
Tests/image/tetra.png [new file with mode: 0755]
src/GraphicObjects/Container.cs
src/GraphicObjects/GraphicObject.cs
src/GraphicObjects/Image.cs

index 3cc7e7e2a2f95101da35ba0cc90ed1a479f341ff..b8b0fb243189e080b6c7ac16a19ebcf85a6d8ad2 100644 (file)
     </Folder>\r
   </ItemGroup>\r
   <ItemGroup>\r
-    <EmbeddedResource Include="Images\Icons\question_mark.svg">\r
-      <LogicalName>go.image.icons.question_mark</LogicalName>\r
-    </EmbeddedResource>\r
-    <EmbeddedResource Include="Images\Icons\icon_alert.gif" />\r
     <EmbeddedResource Include="Images\Icons\updown.svg" />\r
+    <EmbeddedResource Include="Images\Icons\IconAlerte.svg" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="OpenTK\Source\OpenTK\OpenTK.csproj">\r
diff --git a/Images/Icons/IconAlerte.svg b/Images/Icons/IconAlerte.svg
new file mode 100755 (executable)
index 0000000..286dbf3
--- /dev/null
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+   version="1.0"
+   width="64"
+   height="64"
+   id="svg2"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="IconAlerte.svg">
+  <metadata
+     id="metadata49">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1280"
+     inkscape:window-height="984"
+     id="namedview47"
+     showgrid="false"
+     fit-margin-top="1"
+     fit-margin-left="1"
+     fit-margin-right="1"
+     fit-margin-bottom="1"
+     inkscape:zoom="4.2211598"
+     inkscape:cx="60.205288"
+     inkscape:cy="44.735206"
+     inkscape:window-x="0"
+     inkscape:window-y="16"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4">
+    <linearGradient
+       id="Grad1"
+       x1="41.194874"
+       y1="616.47717"
+       x2="118.93135"
+       y2="527.55511"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.48821801,0,0,-0.48010384,3.766054,311.02113)">
+      <stop
+         offset="0"
+         stop-color="#bb0000"
+         id="stop7" />
+      <stop
+         offset="1"
+         stop-color="#5f0000"
+         id="stop9" />
+    </linearGradient>
+    <linearGradient
+       id="Grad2"
+       x1="530.80951"
+       y1="486.63101"
+       x2="174.80548"
+       y2="211.22995"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1028564,0,0,0.10681322,1.0000004,5.1888378)">
+      <stop
+         offset="0"
+         stop-color="#9a0000"
+         id="stop12" />
+      <stop
+         offset="1"
+         stop-color="#f22803"
+         id="stop14" />
+    </linearGradient>
+    <linearGradient
+       id="Grad3"
+       x1="187.87357"
+       y1="224.59892"
+       x2="581.83746"
+       y2="483.10001"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1028564,0,0,0.10681322,1.0000004,5.1888372)">
+      <stop
+         offset="0"
+         stop-color="#ec6c60"
+         id="stop17" />
+      <stop
+         offset="1"
+         stop-color="#d11412"
+         id="stop19" />
+    </linearGradient>
+    <linearGradient
+       id="Grad4"
+       x1="250.39845"
+       y1="101.53633"
+       x2="412.0943"
+       y2="264.54187"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1028564,0,0,0.10681322,1.0000004,5.1888378)">
+      <stop
+         offset="0"
+         stop-color="#ffd9d9"
+         id="stop22" />
+      <stop
+         offset="1"
+         stop-color="#ff2727"
+         id="stop24" />
+    </linearGradient>
+    <radialGradient
+       id="Grad5"
+       cx="295.47125"
+       cy="186.09634"
+       r="179.55"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.17037225,-0.09390987,-2.4099214e-6,49.328051,-23.159866)">
+      <stop
+         offset="0"
+         stop-color="#ffffff"
+         id="stop27" />
+      <stop
+         offset="0.5"
+         stop-color="#ffffff"
+         id="stop29" />
+      <stop
+         offset="1"
+         stop-color="#d5d5d5"
+         id="stop31" />
+    </radialGradient>
+  </defs>
+  <path
+     d="m 30.5028,7.5139081 c 0,0 -27.8740714,47.5318579 -27.8740714,47.5318579 -0.5348541,0.907918 -0.5348541,2.029451 0,2.937368 0.5245675,0.897228 1.5119883,1.463345 2.5816945,1.463345 l 55.7481489,0 c 1.059418,0 2.046843,-0.566117 2.58169,-1.463345 0.524565,-0.907917 0.524565,-2.02945 0,-2.937368 L 35.666191,7.5139081 c -0.534848,-0.9079111 -1.522275,-1.4740216 -2.5817,-1.4740216 -1.059414,0 -2.04684,0.5661105 -2.581691,1.4740216 z"
+     style="fill-opacity:0.17857104"
+     id="path33"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 29.275219,6.6628606 c 0,0 -27.8740792,47.5318564 -27.8740792,47.5318564 -0.53485309,0.907918 -0.53485309,2.029463 0,2.937369 0.5245677,0.897237 1.5119881,1.463341 2.5816944,1.463341 l 55.7481458,0 c 1.059424,0 2.046838,-0.566104 2.581701,-1.463341 0.52456,-0.907906 0.52456,-2.029451 0,-2.937369 L 34.438597,6.6628606 C 33.903747,5.7549484 32.916334,5.188839 31.856907,5.188839 c -1.059426,0 -2.046838,0.5661094 -2.581688,1.4740216 z"
+     style="fill:url(#Grad1)"
+     id="path35"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 31.856907,7.6348601 c -0.174854,0 -0.339422,0.096135 -0.431993,0.2456701 L 17.487873,31.646467 3.550838,55.41239 c -0.092571,0.14954 -0.092571,0.341802 0,0.491339 0.09257,0.149539 0.2571403,0.245671 0.4319962,0.245671 l 55.7481458,0 c 0.174855,0 0.339424,-0.09613 0.432007,-0.245671 0.09256,-0.149537 0.09256,-0.341799 0,-0.491339 L 32.288901,7.8805302 C 32.196331,7.7309918 32.031763,7.6348601 31.856907,7.6348601 Z"
+     style="fill:url(#Grad2)"
+     id="path37"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 31.853051,7.6348601 c -0.174856,0 -0.339436,0.096135 -0.432004,0.2456701 L 17.484016,31.646467 3.5469789,55.41239 c -0.092572,0.14954 -0.092572,0.341802 0,0.491339 0.09257,0.149539 0.2571404,0.245671 0.4319963,0.245671 l 55.7481468,0 c 0.174855,0 0.339424,-0.09613 0.431994,-0.245671 0.09257,-0.149537 0.09257,-0.341799 0,-0.491339 L 32.285045,7.8805302 C 32.192475,7.7309918 32.027904,7.6348601 31.853051,7.6348601 Z"
+     style="fill:none;stroke:url(#Grad3);stroke-width:1.2577858;stroke-linejoin:round"
+     id="path39"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 31.8643,8.4908547 c -0.165609,0.00854 -0.319978,0.1044731 -0.408207,0.2470058 L 17.519052,32.503792 15.577638,35.815003 c 4.728601,2.947692 10.261233,4.646368 16.174165,4.646368 5.996896,0 11.604186,-1.744327 16.376659,-4.769869 L 32.320723,8.7378605 c -0.09257,-0.1495396 -0.255854,-0.2470058 -0.430709,-0.2470058 -0.0082,0 -0.01758,-4.087e-4 -0.02572,0 z"
+     style="fill:url(#Grad4);stroke-width:10;stroke-linejoin:round"
+     id="path41"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 30.437499,20.313589 -16.837595,28.70071 c -0.287995,0.502028 -0.287995,1.121539 0,1.612881 0.288007,0.502017 0.833143,0.811785 1.419421,0.811785 l 33.664901,0 c 0.58628,0 1.131427,-0.309768 1.419424,-0.811785 0.287994,-0.502022 0.287994,-1.110853 0,-1.612881 L 33.276338,20.313589 c -0.287995,-0.502021 -0.833141,-0.811777 -1.419419,-0.811777 -0.586279,0 -1.131423,0.309756 -1.41942,0.811777 z"
+     style="fill:url(#Grad5)"
+     id="path43"
+     inkscape:connector-curvature="0" />
+  <path
+     d="m 30.969176,50.420598 c -0.964669,-0.479803 -1.699326,-1.633479 -1.699326,-2.668545 0,-1.92727 1.939303,-3.37905 3.774142,-2.825358 1.237815,0.373544 2.079121,1.533547 2.068815,2.852514 -0.0088,1.120421 -0.475773,1.945794 -1.428956,2.525663 -0.729622,0.44385 -1.950349,0.495876 -2.714675,0.115726 z m 0.219256,-7.610173 c -0.120588,-0.06883 -0.404599,-0.308433 -0.631097,-0.532473 -0.791399,-0.78278 -0.790414,-0.775892 -1.30629,-9.151632 -0.458585,-7.445434 -0.462378,-7.561125 -0.265603,-8.095945 0.442678,-1.203277 1.429043,-1.730174 3.071401,-1.640697 1.043956,0.05689 1.847956,0.437609 2.370558,1.122567 0.446394,0.585054 0.543443,0.915796 0.543036,1.850484 -4.75e-4,1.015697 -0.625235,13.471485 -0.714045,14.234796 -0.116279,0.999709 -0.678344,1.810994 -1.502164,2.168205 -0.470757,0.204147 -1.247544,0.22632 -1.565796,0.04469 z"
+     id="path45"
+     inkscape:connector-curvature="0" />
+</svg>
diff --git a/Images/Icons/icon_alert.gif b/Images/Icons/icon_alert.gif
deleted file mode 100755 (executable)
index f3d4096..0000000
Binary files a/Images/Icons/icon_alert.gif and /dev/null differ
diff --git a/Images/Icons/question_mark.svg b/Images/Icons/question_mark.svg
deleted file mode 100644 (file)
index 9272381..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<?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:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="100"
-   height="100"
-   id="svg2858"
-   version="1.1"
-   inkscape:version="0.48.0 r9654"
-   sodipodi:docname="exclamation_mark.svg">
-  <defs
-     id="defs2860">
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3795">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop3797" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop3799" />
-    </linearGradient>
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective2866" />
-    <inkscape:perspective
-       id="perspective2853"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3795"
-       id="linearGradient3801"
-       x1="29.834375"
-       y1="999.20284"
-       x2="72.173357"
-       y2="999.20284"
-       gradientUnits="userSpaceOnUse" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="5"
-     inkscape:cx="24.413577"
-     inkscape:cy="49.523097"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1280"
-     inkscape:window-height="949"
-     inkscape:window-x="0"
-     inkscape:window-y="25"
-     inkscape:window-maximized="1" />
-  <metadata
-     id="metadata2863">
-    <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></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-952.36218)">
-    <text
-       xml:space="preserve"
-       style="font-size:129.98471069px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#e00000;fill-opacity:1;stroke:#000000;stroke-width:1.78699994;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;font-family:Rachana;-inkscape-font-specification:Rachana"
-       x="18.646267"
-       y="1045.775"
-       id="text3791"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan3793"
-         x="18.646267"
-         y="1045.775"
-         style="fill:#e00000;fill-opacity:1;stroke-width:1.78699994;stroke-miterlimit:4;stroke-dasharray:none">?</tspan></text>
-  </g>
-</svg>
index df22a28b2c2618643b67aab249dbc5123ec31738..a4d5fcb4f2e61118e8aefc11856d9e17d7461ba1 100644 (file)
@@ -5,10 +5,47 @@
    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"
    viewBox="0 0 65.480012 51.479989"
    height="51.479988"
-   width="65.480011">
-
+   width="65.480011"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="updown.svg">
+  <metadata
+     id="metadata13">
+    <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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1260"
+     inkscape:window-height="644"
+     id="namedview11"
+     showgrid="false"
+     inkscape:zoom="3.2415936"
+     inkscape:cx="30.089585"
+     inkscape:cy="-4.9619855"
+     inkscape:window-x="0"
+     inkscape:window-y="16"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" />
   <defs
      id="defs4">
     <filter
          id="feGaussianBlur4393"
          stdDeviation="3.225" />
     </filter>
+    <filter
+       height="1.4299999"
+       y="-0.215"
+       width="1.3096"
+       x="-0.1548"
+       id="filter4391-5"
+       style="color-interpolation-filters:sRGB">
+      <feGaussianBlur
+         id="feGaussianBlur4393-0"
+         stdDeviation="3.225" />
+    </filter>
   </defs>
-
   <g
-     id="up">
+     id="up"
+     transform="matrix(0.88780545,0,0,0.79362094,4.0529638,4.3893292)">
     <path
        style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4391)"
        d="M 32,9 7,44 57,44 Z"
   </g>
   <g
      id="down"
-     transform="matrix(-1,0,0,-1,64,53)">
+     transform="matrix(0.88780545,0,0,0.79362094,4.0529638,4.3893292)">
     <path
-       sodipodi:nodetypes="cccc"
+       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4391-5)"
+       d="M 7,9 57,9 32,44 Z"
+       id="path4144-0"
        inkscape:connector-curvature="0"
-       id="path4142"
-       d="M 32,9 7,44 57,44 Z"
-       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4391)" />
+       sodipodi:nodetypes="cccc" />
   </g>
 </svg>
index 4118e075db6b57b5fa12f9e586eecfc094dca6f9..13d1a9f6c9fe4365fe7199090afe519c2597cf01 100755 (executable)
@@ -57,7 +57,7 @@
                        </VerticalStack>\r
                        <VerticalStack Width="-1" Height="-1" BorderWidth="1" Margin="5" WidgetSpacing="4">\r
                                <Button Width="-1" Height="-1" Margin="5">\r
-                                       <Image Path="/mnt/data/Images/130px-Blason_ville_fr_Aubure_(Haut-Rhin).svg.png"/>\r
+                                       <Image Path="#Tests.image.tetra.png"/>\r
                                </Button>\r
                                <HorizontalStack>\r
                                        <Label Text="Update" FontColor="White" VerticalAlignment="Center" />\r
index d80400f0968037b96684423a771ca7a5a517cf10..7dca8bda33c2f0ef6b5d7de1da4c2a72c0a7bef4 100644 (file)
@@ -8,7 +8,7 @@
     <OutputType>Exe</OutputType>
     <RootNamespace>Tests</RootNamespace>
     <AssemblyName>Tests</AssemblyName>
-    <StartupObject>test.GOLIBTest_fps</StartupObject>
+    <StartupObject>test.GOLIBTest_0</StartupObject>
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
     <OutputPath>..\bin\$(configuration)</OutputPath>
     <IntermediateOutputPath>obj\$(configuration)</IntermediateOutputPath>
       <Name>OpenTK</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="image\tetra.png" />
+  </ItemGroup>
 </Project>
diff --git a/Tests/image/tetra.png b/Tests/image/tetra.png
new file mode 100755 (executable)
index 0000000..be7edbe
Binary files /dev/null and b/Tests/image/tetra.png differ
index 0d0ad5b3ae2c52944bd241fda5f03fb7aea6f67b..298f1873b1bb0f44bc4eefef41e6ba15c9742746 100644 (file)
@@ -177,8 +177,8 @@ namespace go
 \r
             using (System.Xml.XmlReader subTree = reader.ReadSubtree())\r
             {\r
-                subTree.Read();\r
-                subTree.Read(); //move to first child\r
+                subTree.Read(); //skip current node\r
+                subTree.Read(); //read first child\r
 \r
                 if (!subTree.IsStartElement())\r
                     return;\r
index 683e88f3266f73d5c700ca50a35773b80a5719d1..094bc453c9a331a91aa5f10a8d7e56eb70e85171 100644 (file)
@@ -213,7 +213,7 @@ namespace go
                                registerForGraphicUpdate ();\r
                        }\r
                }\r
-               [XmlAttributeAttribute()][DefaultValue(5)]\r
+               [XmlAttributeAttribute()][DefaultValue(2)]\r
                public virtual double CornerRadius {\r
                        get { return _cornerRadius; }\r
                        set {\r
index 3858aebc22c1505694a9f6739775dfac585af731..863c95cc8200105f4ff340919f3cf4904ddaf961 100755 (executable)
@@ -5,89 +5,108 @@ using System.Text;
 using Cairo;\r
 using System.IO;\r
 using System.Runtime.InteropServices;\r
+using System.Xml.Serialization;\r
+using System.ComponentModel;\r
 \r
 namespace go\r
 {\r
        public class Image : GraphicObject\r
        {\r
-\r
                byte[] image;\r
                Rsvg.Handle hSVG;\r
                Size imgSize;\r
         string _imgPath;\r
-\r
-        [System.Xml.Serialization.XmlIgnore]\r
-               public System.Drawing.Bitmap Bitmap {\r
-                       set {\r
-                               loadImage (value);                \r
-                       }\r
-               }\r
+               string _svgSub;\r
                \r
-        [System.Xml.Serialization.XmlAttributeAttribute("Path")]        \r
+        [XmlAttributeAttribute("Path")]        \r
                public string ImagePath {\r
                        get { return _imgPath; }\r
                        set {\r
                                _imgPath = value;\r
-                               loadImage (_imgPath);\r
+                               LoadImage (_imgPath);\r
                        }\r
                }\r
 \r
+               [XmlAttributeAttribute()][DefaultValue(null)]\r
+               public string SvgSub {\r
+                       get { return _svgSub; }\r
+                       set {\r
+                               _svgSub = value;\r
+                               registerForGraphicUpdate ();\r
+                       }\r
+               }\r
+                       \r
+               #region CTOR\r
                public Image () : base()\r
                {\r
                }\r
-\r
                public Image (string ImagePath, Rectangle _bounds)\r
             : base(_bounds)\r
                {\r
                        _imgPath = ImagePath;\r
-            loadImage(_imgPath);\r
+            LoadImage(_imgPath);\r
         }\r
-\r
                public Image (string ImagePath)\r
             : base()\r
                {\r
                        _imgPath = ImagePath;\r
-            loadImage(_imgPath);\r
+            LoadImage(_imgPath);\r
                }\r
-\r
                public Image (System.Drawing.Bitmap _bitmap)\r
             : base()\r
                {\r
-                       Bitmap = _bitmap;\r
+                       LoadImage (_bitmap);\r
                }\r
+               #endregion\r
 \r
-               protected override Size measureRawSize ()\r
+               #region Image Loading\r
+               void loadFromRessource(string resId)\r
                {\r
-                       if (image == null && hSVG == null)\r
-                               loadRessourceSvg ("go.image.icons.question_mark");                              \r
+                       Stream stream = null;\r
 \r
-                       return imgSize + Margin*2;\r
-               }\r
-               void loadRessourceSvg(string resId)\r
-               {\r
-                       Stream s = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resId);\r
+                       //first, search for ressource in main executable assembly\r
+                       stream = System.Reflection.Assembly.GetEntryAssembly().GetManifestResourceStream(resId);\r
+                       if (stream == null)//try to find ressource in golib assembly                            \r
+                               stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resId);\r
+                       if (stream == null)\r
+                               return;\r
+                       \r
                        using (MemoryStream ms = new MemoryStream ()) {\r
-                               s.CopyTo (ms);\r
-                               hSVG = new Rsvg.Handle (ms.ToArray ());\r
-                               imgSize = new Size (hSVG.Dimensions.Width, hSVG.Dimensions.Height);\r
-                               _imgPath = resId;\r
+                               stream.CopyTo (ms);\r
+\r
+                               if (resId.EndsWith (".svg", true, System.Globalization.CultureInfo.InvariantCulture)) {\r
+                                       hSVG = new Rsvg.Handle (ms.ToArray ());\r
+                                       imgSize = new Size (hSVG.Dimensions.Width, hSVG.Dimensions.Height);\r
+                               } else\r
+                                       LoadImage (new System.Drawing.Bitmap (ms));                                     \r
                        }\r
                }\r
-               //load image via System.Drawing.Bitmap, cairo load png only\r
-               public void loadImage (string path)\r
+               void loadFromFile(string path)\r
                {\r
-            if (!File.Exists(path))\r
-                return;\r
-            \r
-                       if (path.EndsWith (".svg", true,System.Globalization.CultureInfo.InvariantCulture)) {\r
+                       if (!File.Exists(path))\r
+                               return;\r
+\r
+                       if (path.EndsWith (".svg", true, System.Globalization.CultureInfo.InvariantCulture)) {\r
                                hSVG = new Rsvg.Handle (path);                                                           \r
                                imgSize = new Size (hSVG.Dimensions.Width, hSVG.Dimensions.Height);\r
                        }else\r
-                               loadImage (new System.Drawing.Bitmap (path));\r
-            _imgPath = path;\r
+                               LoadImage (new System.Drawing.Bitmap (path));\r
+\r
                }\r
+               public void LoadImage (string path)\r
+               {\r
+                       hSVG = null;\r
+                       image = null;\r
 \r
-               public void loadImage (System.Drawing.Bitmap bitmap)\r
+                       if (path.StartsWith ("#"))\r
+                               loadFromRessource (path.Substring (1));\r
+                       else\r
+                               loadFromFile (path);\r
+\r
+                       _imgPath = path;\r
+               }\r
+               //load image via System.Drawing.Bitmap, cairo load png only\r
+               public void LoadImage (System.Drawing.Bitmap bitmap)\r
                {\r
                        if (bitmap == null)\r
                                return;\r
@@ -104,8 +123,18 @@ namespace go
                        image = new byte[bitmapSize];\r
                        System.Runtime.InteropServices.Marshal.Copy (data.Scan0, image, 0, bitmapSize);\r
 \r
-                       bitmap.UnlockBits (data);\r
-                       //bitmap.Dispose();            \r
+                       bitmap.UnlockBits (data);           \r
+               }\r
+               #endregion\r
+\r
+               #region GraphicObject overrides\r
+               protected override Size measureRawSize ()\r
+               {\r
+                       if (image == null && hSVG == null) {\r
+                               loadFromRessource ("go.Images.Icons.IconAlerte.svg");\r
+                       }\r
+\r
+                       return imgSize + Margin * 2;\r
                }\r
                protected override void onDraw (Context gr)\r
                {\r
@@ -126,9 +155,13 @@ namespace go
                                }\r
                        } else {\r
                                gr.Translate (rImg.X/widthRatio, rImg.Y/heightRatio);\r
-                               hSVG.RenderCairo (gr);\r
+                               if (string.IsNullOrEmpty (_svgSub))\r
+                                       hSVG.RenderCairo (gr);\r
+                               else\r
+                                       hSVG.RenderCairoSub (gr, "#" + _svgSub);\r
                        }\r
                        gr.Restore ();\r
                }\r
+               #endregion\r
        }\r
 }\r