From 70c3f379d422f0bd729c93161bb5d9e28afc9040 Mon Sep 17 00:00:00 2001 From: jpbruyere Date: Sat, 23 May 2015 15:20:53 +0200 Subject: [PATCH] Image loading detecting svg with extension, ressource tag (#) for pathes -svg sub element drawing --- GOLib.csproj | 5 +- Images/Icons/IconAlerte.svg | 177 ++++++++++++++++++++++++++++ Images/Icons/icon_alert.gif | Bin 585 -> 0 bytes Images/Icons/question_mark.svg | 105 ----------------- Images/Icons/updown.svg | 66 +++++++++-- Tests/Interfaces/test4.goml | 2 +- Tests/Tests.csproj | 5 +- Tests/image/tetra.png | Bin 0 -> 17748 bytes src/GraphicObjects/Container.cs | 4 +- src/GraphicObjects/GraphicObject.cs | 2 +- src/GraphicObjects/Image.cs | 113 +++++++++++------- 11 files changed, 316 insertions(+), 163 deletions(-) create mode 100755 Images/Icons/IconAlerte.svg delete mode 100755 Images/Icons/icon_alert.gif delete mode 100644 Images/Icons/question_mark.svg create mode 100755 Tests/image/tetra.png diff --git a/GOLib.csproj b/GOLib.csproj index 3cc7e7e2..b8b0fb24 100644 --- a/GOLib.csproj +++ b/GOLib.csproj @@ -306,11 +306,8 @@ - - go.image.icons.question_mark - - + diff --git a/Images/Icons/IconAlerte.svg b/Images/Icons/IconAlerte.svg new file mode 100755 index 00000000..286dbf3a --- /dev/null +++ b/Images/Icons/IconAlerte.svg @@ -0,0 +1,177 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Images/Icons/icon_alert.gif b/Images/Icons/icon_alert.gif deleted file mode 100755 index f3d409618dfce5fb8a892b2ea8a9bcf2debd3dc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 585 zcmZ?wbhEHb6krfwc;?RV|Mt@V-(LQIefIy``~QEv{l6vQe~-ie6;}V3+5W#i|NqJ2 z{|$owpRPD}?%e-d#s4q#{$H5z|5EY)dWQdBpZ$MazO>5v|L2GQ3mE?2?fw5~*Z&7A zmNt0)pQ`=;N$>ybz5iDhoI8E;|M99RQ>Og?{r3O&hyPb4{C|J{|JR5AKi>bp#sB}e z%l}&>{=b-SYi08E*!2I;r+qr!Zfj#XWy<6$=a2ti@9E`g`@fq1_SG|)8R<87Px!w~ z{rZVb|9?I_yMMKV&of15*t~?Smn$!hZ=CBB=FOZXR zCHi4g$k - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - ? - - diff --git a/Images/Icons/updown.svg b/Images/Icons/updown.svg index df22a28b..a4d5fcb4 100644 --- a/Images/Icons/updown.svg +++ b/Images/Icons/updown.svg @@ -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"> + + + + image/svg+xml + + + + + + + + + - + id="up" + transform="matrix(0.88780545,0,0,0.79362094,4.0529638,4.3893292)"> + transform="matrix(0.88780545,0,0,0.79362094,4.0529638,4.3893292)"> + sodipodi:nodetypes="cccc" /> diff --git a/Tests/Interfaces/test4.goml b/Tests/Interfaces/test4.goml index 4118e075..13d1a9f6 100755 --- a/Tests/Interfaces/test4.goml +++ b/Tests/Interfaces/test4.goml @@ -57,7 +57,7 @@ + + + diff --git a/Tests/image/tetra.png b/Tests/image/tetra.png new file mode 100755 index 0000000000000000000000000000000000000000..be7edbe750f85cdb5858423c5277aed38d68f9d3 GIT binary patch literal 17748 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
M}FuC!<&Ty;sqW$rO(`?i3l7RRYHSdJ+vn^pB zVUyj>X{rjPna_mAXR^+$`a_R3>?^nhrzX*FYmSJC()v6NN1@I!`(np!X5BBc<15j- z@q^5VxdOLa1uNL*U6GCp?}hvLx4yy0f-LhxmuWo25y~V71Mgrf2@P7r58tN1uIE~BZI3o zxZ{6VFmL2epG;v4zF0as&4`~)>B%lk=~Gr1vmWwvy(!4+`{Y>`Vau9+c(ygveXO}A zEjF#&<70JdABWMj9+MDL_dDq`6Zu>BUyptd9UVmL`_}gM_ce@!W)Qyr^1baXY^X{D388cF@%fU;l;UlEU|;4#xdaBv0Qkj^r4 zJcXj{!@HXaqTrc7R7bKUy6bv NFRd(9B=Oqs{{XWfG3NjP literal 0 HcmV?d00001 diff --git a/src/GraphicObjects/Container.cs b/src/GraphicObjects/Container.cs index 0d0ad5b3..298f1873 100644 --- a/src/GraphicObjects/Container.cs +++ b/src/GraphicObjects/Container.cs @@ -177,8 +177,8 @@ namespace go using (System.Xml.XmlReader subTree = reader.ReadSubtree()) { - subTree.Read(); - subTree.Read(); //move to first child + subTree.Read(); //skip current node + subTree.Read(); //read first child if (!subTree.IsStartElement()) return; diff --git a/src/GraphicObjects/GraphicObject.cs b/src/GraphicObjects/GraphicObject.cs index 683e88f3..094bc453 100644 --- a/src/GraphicObjects/GraphicObject.cs +++ b/src/GraphicObjects/GraphicObject.cs @@ -213,7 +213,7 @@ namespace go registerForGraphicUpdate (); } } - [XmlAttributeAttribute()][DefaultValue(5)] + [XmlAttributeAttribute()][DefaultValue(2)] public virtual double CornerRadius { get { return _cornerRadius; } set { diff --git a/src/GraphicObjects/Image.cs b/src/GraphicObjects/Image.cs index 3858aebc..863c95cc 100755 --- a/src/GraphicObjects/Image.cs +++ b/src/GraphicObjects/Image.cs @@ -5,89 +5,108 @@ using System.Text; using Cairo; using System.IO; using System.Runtime.InteropServices; +using System.Xml.Serialization; +using System.ComponentModel; namespace go { public class Image : GraphicObject { - byte[] image; Rsvg.Handle hSVG; Size imgSize; string _imgPath; - - [System.Xml.Serialization.XmlIgnore] - public System.Drawing.Bitmap Bitmap { - set { - loadImage (value); - } - } + string _svgSub; - [System.Xml.Serialization.XmlAttributeAttribute("Path")] + [XmlAttributeAttribute("Path")] public string ImagePath { get { return _imgPath; } set { _imgPath = value; - loadImage (_imgPath); + LoadImage (_imgPath); } } + [XmlAttributeAttribute()][DefaultValue(null)] + public string SvgSub { + get { return _svgSub; } + set { + _svgSub = value; + registerForGraphicUpdate (); + } + } + + #region CTOR public Image () : base() { } - public Image (string ImagePath, Rectangle _bounds) : base(_bounds) { _imgPath = ImagePath; - loadImage(_imgPath); + LoadImage(_imgPath); } - public Image (string ImagePath) : base() { _imgPath = ImagePath; - loadImage(_imgPath); + LoadImage(_imgPath); } - public Image (System.Drawing.Bitmap _bitmap) : base() { - Bitmap = _bitmap; + LoadImage (_bitmap); } + #endregion - protected override Size measureRawSize () + #region Image Loading + void loadFromRessource(string resId) { - if (image == null && hSVG == null) - loadRessourceSvg ("go.image.icons.question_mark"); + Stream stream = null; - return imgSize + Margin*2; - } - void loadRessourceSvg(string resId) - { - Stream s = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resId); + //first, search for ressource in main executable assembly + stream = System.Reflection.Assembly.GetEntryAssembly().GetManifestResourceStream(resId); + if (stream == null)//try to find ressource in golib assembly + stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resId); + if (stream == null) + return; + using (MemoryStream ms = new MemoryStream ()) { - s.CopyTo (ms); - hSVG = new Rsvg.Handle (ms.ToArray ()); - imgSize = new Size (hSVG.Dimensions.Width, hSVG.Dimensions.Height); - _imgPath = resId; + stream.CopyTo (ms); + + if (resId.EndsWith (".svg", true, System.Globalization.CultureInfo.InvariantCulture)) { + hSVG = new Rsvg.Handle (ms.ToArray ()); + imgSize = new Size (hSVG.Dimensions.Width, hSVG.Dimensions.Height); + } else + LoadImage (new System.Drawing.Bitmap (ms)); } } - //load image via System.Drawing.Bitmap, cairo load png only - public void loadImage (string path) + void loadFromFile(string path) { - if (!File.Exists(path)) - return; - - if (path.EndsWith (".svg", true,System.Globalization.CultureInfo.InvariantCulture)) { + if (!File.Exists(path)) + return; + + if (path.EndsWith (".svg", true, System.Globalization.CultureInfo.InvariantCulture)) { hSVG = new Rsvg.Handle (path); imgSize = new Size (hSVG.Dimensions.Width, hSVG.Dimensions.Height); }else - loadImage (new System.Drawing.Bitmap (path)); - _imgPath = path; + LoadImage (new System.Drawing.Bitmap (path)); + } + public void LoadImage (string path) + { + hSVG = null; + image = null; - public void loadImage (System.Drawing.Bitmap bitmap) + if (path.StartsWith ("#")) + loadFromRessource (path.Substring (1)); + else + loadFromFile (path); + + _imgPath = path; + } + //load image via System.Drawing.Bitmap, cairo load png only + public void LoadImage (System.Drawing.Bitmap bitmap) { if (bitmap == null) return; @@ -104,8 +123,18 @@ namespace go image = new byte[bitmapSize]; System.Runtime.InteropServices.Marshal.Copy (data.Scan0, image, 0, bitmapSize); - bitmap.UnlockBits (data); - //bitmap.Dispose(); + bitmap.UnlockBits (data); + } + #endregion + + #region GraphicObject overrides + protected override Size measureRawSize () + { + if (image == null && hSVG == null) { + loadFromRessource ("go.Images.Icons.IconAlerte.svg"); + } + + return imgSize + Margin * 2; } protected override void onDraw (Context gr) { @@ -126,9 +155,13 @@ namespace go } } else { gr.Translate (rImg.X/widthRatio, rImg.Y/heightRatio); - hSVG.RenderCairo (gr); + if (string.IsNullOrEmpty (_svgSub)) + hSVG.RenderCairo (gr); + else + hSVG.RenderCairoSub (gr, "#" + _svgSub); } gr.Restore (); } + #endregion } } -- 2.47.3