Perhaps the drawing library could do with 'CompileIcon' which does the wrapping as your code does and then compiles the resulting SVG XML.
In the interim - IIRC - there is an '_internal' command used in the drawing library which returns the bbox of an SVG path string which will allow you to compute width/height correctly. Warmest Regards, Mark. Sent from my iPhone > On 16 Sep 2018, at 17:50, hh via use-livecode <use-livecode@lists.runrev.com> > wrote: > > Import the source of a SVG icon widget to a PNG file: > +++++++++++++++++++++++++++++++++++++++++++++++++++++ > > The iconPath of an SVG icon is path data only (could be used as > "instructions" for a path in LCB). > > So try to write a wrapper around it to make it valid SSVG data. > > The problem is the bounding box of the path (the values for w > and h), there is no info about and it's hard to estimate from all > the control points of the path. > > I tried just now to do it this way (works here, tested several times): > > on mouseUp > lock screen; lock messages > put the iconPath of widget "SVG Icon" into path > put 2048 into w -- estimate general width of the icons > put 2048 into h -- estimate general height of the icons > put merge(svgWrapper()) into t > if there is no img "import" then create img "import" > set text of img "import" to drawingSVGCompile(t) > cropIt "import" --> because w and h may be too large > set width of img "import" to 100 --> your target width > set height of img "import" to 100 --> your target height > set topleft of img "import" to 10,10 > end mouseUp > > function svgWrapper > return "<?xml version=" "e& "1.0" "e& " encoding=" "e& "UTF-8" > "e& "?>" &CR& \ > "<svg" &CR& \ > " xmlns:svg=" "e& "http://www.w3.org/2000/svg" "e& "" &CR& \ > " xmlns=" "e& "http://www.w3.org/2000/svg" "e& "" &CR& \ > " version=" "e& "1.0" "e& "" &CR& \ > " width=" "e& "[[w]]" "e& " height=" "e& "[[h]]" > "e& "" &CR& \ > ">" &CR& \ > "<path d=" "e& "[[path]]" "e& " />" &CR& \ > "</svg>"end svgWrapper > > ## CROP image ft to its opaque pixels [-hh fecit 2018] > ## from my stack SVGHandles89 of "Sample Stacks" > on cropIt ft > put the width of img ft into w > put the height of img ft into h > put the maskdata of img ft into mData > put numToByte(0) into c0 > -- left and right transparency limits > put w into cmin; put 1 into cmax > repeat with i=0 to h-1 > put i*w into h1 > repeat with j=1 to cmin > if byte h1+j of mData is not c0 then > put j into cmin; exit repeat > end if > end repeat > repeat with j=w down to max(cmax,cmin) > if byte h1+j of mData is not c0 then > put j into cmax; exit repeat > end if > end repeat > end repeat > put max(0,cmin-1) into cmin > put max(1+cmin,min(w,1+cmax)) into cmax > -- top and bottom transparency limits > put h into rmin; put 1 into rmax > repeat with j=cmin to cmax > repeat with i=0 to rmin-1 > if byte i*w+j of mData is not c0 then > put i into rmin; exit repeat > end if > end repeat > repeat with i=h-1 down to max(rmax,rmin) > if byte i*w+j of mData is not c0 then > put i into rmax; exit repeat > end if > end repeat > end repeat > put max(0,rmin-1) into rmin > put max(1+rmin,min(h,1+rmax)) into rmax > -- > put the left of img ft into L; put the top of img ft into T > crop img ft to L+cmin,T+rmin,L+cmax,T+rmax > -- LC Bug: resizes instead of cropping when image has angle <> 0 > end cropIt > > > > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode