# HG changeset patch # User Thinker K.F. Li # Date 1280554238 -28800 # Node ID 1748dce31cdbae76173dffb19481802d00441f5e # Parent aa52883534fccee25294d55ca6ea814e1f158aa1# Parent 492da72e6537f7aeb8617e13712273b20a981ffa Merge the head from wycc diff -r aa52883534fc -r 1748dce31cdb nodejs/logo.png Binary file nodejs/logo.png has changed diff -r aa52883534fc -r 1748dce31cdb nodejs/svg.js --- a/nodejs/svg.js Sat Jul 31 13:28:48 2010 +0800 +++ b/nodejs/svg.js Sat Jul 31 13:30:38 2010 +0800 @@ -2,6 +2,7 @@ var sys=require('sys'); var mbfly = require("mbfly"); var mb_rt = new mbfly.mb_rt(":0.0", 720,480); +var ldr = mbfly.img_ldr_new("."); function MB_loadSVG(mb_rt,root,filename) { var doc = libxml.parseXmlFile(filename); @@ -192,11 +193,52 @@ _MB_parseText(coord, id, nodes[k]); } else if (n == "rect") { _MB_parseRect(coord, id, nodes[k]); + } else if (n == "image") { + _MB_parseImage(coord, id, nodes[k]); } } } +function _MB_parseImage(coord,id, n) +{ + sys.puts("---> image"); + var ref = n.attr('href').value(); + + if (ref == null) return; + sys.puts(ref); + if (ref.substr(0,7) == "file://") { + ref = ref.substring(7); + } else if (ref.substr(0,5)=="file:") { + ref = ref.substring(5); + } else { + return; + } + sys.puts("Load image "+ref); + var w; + var h; + var x,y; + + w = n.attr("width"); + if (w == null) return; + w = parseInt(w.value()); + h = n.attr("height"); + if (h == null) return; + h = parseInt(h.value()); + x = n.attr("x"); + if (x == null) return; + x = parseInt(x.value()); + y = n.attr("y"); + if (y == null) return; + y = parseInt(y.value()); + sys.puts("x="+x+",y="+y+",w="+w+",h="+h); + var img = mb_rt.image_new(x,y,w,h); + var img_data = ldr.load(ref); + sys.puts(img_data); + var paint = mb_rt.paint_image_new(img_data); + paint.fill(img); + coord.add_shape(img); +} function _MB_parseDefs(root,n) { diff -r aa52883534fc -r 1748dce31cdb nodejs/test.svg --- a/nodejs/test.svg Sat Jul 31 13:28:48 2010 +0800 +++ b/nodejs/test.svg Sat Jul 31 13:30:38 2010 +0800 @@ -1,5 +1,6 @@ + + inkscape:window-y="25" + inkscape:window-maximized="0" /> + diff -r aa52883534fc -r 1748dce31cdb src/img_ldr.c --- a/src/img_ldr.c Sat Jul 31 13:28:48 2010 +0800 +++ b/src/img_ldr.c Sat Jul 31 13:30:38 2010 +0800 @@ -33,7 +33,10 @@ sz = strlen(sldr->repo); sz += strlen(img_id); fname = (char *)malloc(sz + 2); - strcpy(fname, sldr->repo); + if (img_id[0] != '/') + strcpy(fname, sldr->repo); + else + fname[0] = 0; strcat(fname, img_id); surf = mbe_image_surface_create_from_png(fname);