AltME groups: search
Help · search scripts · search articles · search mailing listresults summary
world | hits |
r4wp | 1 |
r3wp | 370 |
total: | 371 |
results window for this page: [start: 1 end: 100]
world-name: r4wp
Group: Rebol School ... REBOL School [web-public] | ||
Cyphre: 20-Dec-2012 | Nice stuff Geomol...Most people doesn't even know what could be done with DRAW. DRAW has most of the capabilities advanced vector(SVG) editors have under the hood. For R3 DRAW we need to make sure converting any complex SVG art is possible to render. |
world-name: r3wp
Group: View ... discuss view related issues [web-public] | ||
Graham: 7-Jan-2005 | SVG viewer required ... | |
Gabriele: 7-Jan-2005 | hmm, i think i don't have the svg viewer installed here, i was able to open it with inkscape but maybe it doesn't support that? i just see a line. | |
Graham: 7-Jan-2005 | with IE, I see the graph, with Firefox and the SVG viewer installed, I just see the xml | |
Graham: 7-Jan-2005 | so, I was thinking of switching to svg instead to produce the graphs I need. | |
Graham: 9-Jan-2005 | I've managed to write a script that generates SVG line graphs that look like the one referenced above :) | |
Graham: 9-Jan-2005 | http://www.compkarori.com/vanilla/display/svg-linegraph.r | |
Graham: 9-Jan-2005 | generates a SVG graph of size 1000x1000, and scales the data automatically | |
Graham: 10-Jan-2005 | using the code I posted above, my portal is now generating dynamic svg graphs | |
Terry: 10-Jan-2005 | http://www.adobe.com/svg/overview/whatsnew.html | |
Group: !RebGUI ... A lightweight alternative to VID [web-public] | ||
Ashley: 20-Jun-2005 | I'm currently developing a load-svg-icon function that will take an SVG file name and size, and return a scaled draw block. Some questions need addressing first though (feel free to post the GPL answers to the licensing group): 1) Can I distribute a set of GPL SVG icons with the RebGUI zip bundle? If so, under what terms / conditions? 2) If someone creates a RebGUI binary application (with the to be released SDK) can they include GPLed SVG files, and if so, under what terms / conditions? 3) Can GPLed SVG files be distributed under a different file name(s)? (e.g. rename gnome-gtk-folder-icon3.svg to open.svg) 4) What if I want to take a set of GPLed SVG files and distribute them as pre-converted draw-blocks (so RebGUI apps don't need to convert icons from SVG to Draw)? Now some design questions: 1) Should the result of the proposed load-svg-icon be a draw block or an image? 2) Should RebGUI have a stock image cache or a stock draw-cmds cache? (i.e. is it better to cache draw cmds or images) | |
shadwolf: 20-Jun-2005 | 4) What if I want to take a set of GPLed SVG files and distribute them as pre-converted draw-blocks (so RebGUI apps don't need to convert icons from SVG to Draw)? Normally the LGPL force you to keep the original names and author reference but you can warn the author and ask them a special permission to not repect this term... But then you obviously have to mention it with a text like " Thank to the authors of GTK for allowing us to exploit their SVG icon set and allow us to repack and interger it to the rebGUI project" | |
BrianH: 21-Jun-2005 | Actually, in this case the SVG is the source and the Draw blocks are the "binaries". You can change the file names of the "binaries" and distribute the source SVG files in a seperate archive with their original file names. | |
shadwolf: 21-Jun-2005 | BrianH but the utility and the meanning of SVG is to use text files | |
shadwolf: 21-Jun-2005 | BrianH http://www.dobeash.com/files/svg-demo.zip | |
shadwolf: 21-Jun-2005 | but I think the best is to make our own svg icon collection using InkScape Draw WorkBench | |
BrianH: 21-Jun-2005 | That's why i put "binaries" in quotes before when referring to the preconverted draw blocks you mentioned before. Since SVG is text, even human-readable (with difficulty at times) the SVG files can be considered the source and the draw converter can be considered the compiler. Still, I agree that it would be best to make your own if you can, since the GPL is really poorly suited as a picture content license - they should have tried one of the Creative Commons licenses instead. | |
Gabriele: 21-Jun-2005 | shadwolf: draw blocks are text files too. more readable than svg, too. | |
Ashley: 22-Jun-2005 | From the AGG Group: "Having our own SVG icons is a good idea as we don't have to worry about licence / distribution issues and we can tweak the generation to make it as AGG compatible as possible. To do that we need to settle on *one* tool so as we generate consistent SVG code, and we should generate SVG that uses a single unit of measure, preferably pixels, as it's a real pain trying to handle multiple units of measure within the same file." | |
Ashley: 22-Jun-2005 | shadwolf: Once you've settled on the "best" SVG generation tool to use (with feedback from folks here), then create a simple SVG icon (a shaded "next" arrow for instance) and post a link to the file. I'll have a look at the underlying SVG code it generates and we'll see if it's clean enough to use easily. We can then start creating more complex icons and improving the SVG renderer as we go. My hope is that we will end up with a nice set of REBOL / RebGUI SVG icons that are free of any licence / distribution issues. | |
Pekr: 22-Jun-2005 | btw - why do we need to use SVG for icons? Wouldn't draw be sufficient for us? Or is it because there are authoring tools out there, which you can use to visually produce SVG stuff? | |
Vincent: 22-Jun-2005 | Yes, why SVG? The SVG files are big, compared to draw blocks, and far less readable. | |
Ashley: 22-Jun-2005 | Reasons: 1) Solid authoring tools 2) Access to a large number of existing SVG icons (if needed) 3) The standard for vector graphics 4) Interoperability 5) Publicity ("we support SVG icons", as opposed to, "our icons are just REBOL blocks") If we generate our own content then there is nothing stopping us having icons in source form (SVG) *and* pre-compiled form (draw block). | |
Allen: 22-Jun-2005 | There's probably more windows metafiles floating around than SVG. ooh another project for someone :-) | |
Allen: 22-Jun-2005 | There was a version of paint.r that output to SVG. I think Jeff did it | |
shadwolf: 22-Jun-2005 | AS far I I done My test InkSCape is the good one ... (but it's SVG output can be little bit complicated...) I have tested thegimp sodipodi (abandonned) and inkscape . and the more suitable od those 3 is InkScape very easy of use portable and full featured :) | |
Group: XML ... xml related conversations [web-public] | ||
CarstenK: 6-Nov-2005 | Doing my first steps with REBOL I tried to do something with XML (reading/eventually modifing/writing). I looked for some scripts helping me to do this and found: 1. xml2rebxml/rebxml2xml: I got the following problems: - missing/loosing comments - missing/loosing elements - that's realy serious my steps were: my-doc: xml2rebxml read %simple.xml write %simple2.xml rebxml2xml my-doc The second documents finishes outputting elements after some comment block in the source xml doc. 2. xml-parse/xml-object: The versions I found on the reb library didn't work, I used some older versions from rebXR-1.3.0, I've got my objects, but it would be nice to have a third module like xml-write to get the object tree back to xml. Is somebody developing something like this? 3. mt.r: I tried to figure out how it works. Basically I can write some XML based on a REBOL block but I couldn't figure out how to define the rules about elements and attributes. Where can I find an example about writing for instance svg with mt.r, how looks the coresponding REBOL block and the rules for svg? Where can I find more about xml and REBOL, I think it would be very nice to have some REBOL scripts, doing things like some-elem: xml-create [ elem "foo" namespace "myns" attribs [ bar "something" xyz "123"] ] xml-modify [ elem another-elem append some-elem ] and finally xml-write %mynewxml.xml my-doc Is somebody developing something like this with REBOL? Some scripts giving me the same comfort in REBOL like maybe XOM (http://www.xom.nu) is giving for XML in Java. Of course done with some nice REBOL dialects? What is the above mentioned "EasyXML" - is it available for use/testing? Thank you for any tips, carsten | |
Group: SVG Renderer ... SVG rendering in Draw AGG [web-public] | ||
shadwolf: 23-Jun-2005 | REBOL [ Title: "SVG Demo" Owner: "Ashley G. Trüter" Version: 0.0.1 Date: 21-Jun-2005 Purpose: "Loads and displays a resizeable SVG file." History: { 0.0.1 Initial release } Notes: { Tested on very simple SVG icons Only a few basic styles / attributes / commands supported Does not handle sizes in units other than pixels (e.g. pt, in, cm, mm, etc) SVG path has an optional close command, "z" ... AGG shape equivalent auto-closes load-svg function needs to be totally refactored / optimized ... *sample only* } ] ; The following commands are available for path data: ; ; M = moveto ; L = lineto ; H = horizontal lineto ; V = vertical lineto ; C = curveto ; S = smooth curveto ; Q = quadratic Belzier curve ; T = smooth quadratic Belzier curveto ; A = elliptical Arc ; Z = closepath ;print: none ; comment out this line to enable debug messages load-svg: function [svg-file [file! string!] size [pair!]] [ id defs x y to-color to-byte draw-blk append-style svg-size scale-x scale-y ][ xml: either string? svg-file [parse-xml svg-file] [ unless %.svg = suffix? svg-file [to error! "File has an invalid suffix!"] parse-xml read svg-file ] unless xml/3/1/1 = "svg" [to error! "Could not find SVG header!"] ;unless find ["id" "xmlns"] xml/3/1/2/1 [to error! "Could not find ID header!"] ;unless xml/3/1/3/1/1 = "defs" [to error! "Could not find DEFS header!"] id: xml/3/1/2 defs: xml/3/1/3 ; ; --- Parse SVG id ; svg-size: either find ["32pt" "48pt" "72pt"] select id "width" [ switch select id "width" [ "72pt" [120x120] "48pt" [80x80] "32pt" [60x60] ] ][ as-pair to integer! any [select id "width" "100"] to integer! any [select id "height" "100"] ] x: to integer! any [select id "x" "0"] y: to integer! any [select id "y" "0"] scale-x: size/x / svg-size/x scale-y: size/y / svg-size/y ; ; --- Helper functions ; to-color: func [s [string!]] [ ; converts a string in the form "#FFFFFF" to a 4-byte tuple to tuple! load rejoin ["#{" next s "00}"] ] to-byte: func [s [string!]] [ ; converts a string with a value 0-1 to an inverted byte 255 - to integer! 255 * to decimal! s ] ; ; --- Parse SVG defs ; draw-blk: copy [] append-style: function [ command [string!] blk [block!] ][ x xy pen-color fill-color line-width mode size radius shape closed? matrix transf-command ][ xy: 0x0 size: 0x0 line-width: 1 matrice: make block! [] radius: none transf-command: none foreach [attr val] blk [ switch attr [ "transform" [print "tranform have been found" ;probe val halt val: parse val "()," transf-command: first val probe transf-command switch transf-command [ "matrix" [ foreach word val [ if not find word "matrix" [ insert tail matrice to-decimal word ] ] ] ] ] "style" [ foreach [attr val] parse val ":;" [ switch/default attr [ "font-size" [ ] "stroke" [ switch/default first val [ #"#" [pen-color: to-color val] #"n" [pen-color: none] ][ print ["Unknown stroke:" val] ] ] "stroke-width" [line-width: to decimal! val] "fill" [ fill-color: switch/default first val [ #"#" [to-color val] #"n" [none] ][ print ["Unknown fill value:" val] none ] ] "fill-rule" [ mode: switch/default val [ "evenodd" ['even-odd] ][ print ["Unknown fill-rule value:" val] none ] ] "stroke-opacity" [pen-color: any [pen-color 0.0.0.0] pen-color/4: to-byte val] "fill-opacity" [fill-color: any [fill-color 0.0.0.0] fill-color/4: to-byte val] "stroke-linejoin" [ insert tail draw-blk switch/default val [ "miter" [compose [line-join miter]] "round" [compose [line-join round]] "bevel" [compose [line-join bevel]] ][ print ["Unknown stroke-linejoin value:" val] none ] ] "stroke-linecap" [ insert tail draw-blk 'line-cap insert tail draw-blk to word! val ] ][ print ["Unknown style:" attr] ] ] ] "x" [xy/x: scale-x * val] "y" [xy/y: scale-y * val] "width" [size/x: scale-x * val] "height" [size/y: scale-y * val] "rx" [print "rx"] "ry" [radius: to decimal! val] "d" [ shape: copy [] x: none closed?: false foreach token load val [ switch/default token [ M [insert tail shape 'move] C [insert tail shape 'curve] L [insert tail shape 'line] z [closed?: true] ][ unless number? token [print ["Unknown path command:" token]] either x [insert tail shape as-pair x scale-y * token x: none] [x: scale-x * token] ] ] ] ] ] insert tail draw-blk compose [ pen (pen-color) fill-pen (fill-color) fill-rule (mode) line-width (line-width * min scale-x scale-y) ] switch command [ "rect" [ insert tail draw-blk compose [box (xy) (xy + size)] if radius [insert tail draw-blk radius] ] "path" [ unless closed? [print "Path closed"] either transf-command <> none [ switch transf-command [ "matrix" [insert tail draw-blk compose/only [ (to-word transf-command) (matrice) shape (shape) reset-matrix]] ] ][ insert tail draw-blk compose/only [shape (shape)] ] ] "g" [ print "Write here how to handle G insertion to Draw block" insert tail draw-blk probe compose/only [reset-matrix (to-word transf-command) (matrice)] ] ] ] probe defs foreach blk defs [ switch first blk [ "rect" [append-style first blk second blk] "path" [append-style first blk second blk] "g" [ print "key word" probe first blk print "matrix and style in G" probe second blk append-style first blk second blk ;print "what to draw in G" probe third blk foreach blk2 third blk [ probe blk2 switch first blk2[ "path" [append-style first blk2 second blk2] ] ] ] ] ] probe draw-blk draw-blk ] view make face [ offset: 100x100 size: 200x200 action: request-file/filter/only "*.svg" text: rejoin ["SVG Demo [" last split-path action "]"] data: read action color: white effect: compose/only [draw (load-svg data size)] edge: font: para: none feel: make feel [ detect: func [face event] [ if event/type = 'resize [ insert clear face/effect/draw load-svg face/data face/size show face ] if event/type = 'close [quit] ] ] options: [resize] ] | |
shadwolf: 23-Jun-2005 | AS reference take the file blender.svg from svg-demo.zip package maide by ashley | |
shadwolf: 23-Jun-2005 | REBOL [ Title: "SVG Demo" Owner: "Ashley G. Trüter" Version: 0.0.1 Date: 21-Jun-2005 Purpose: "Loads and displays a resizeable SVG file." History: { 0.0.1 Initial release } Notes: { Tested on very simple SVG icons Only a few basic styles / attributes / commands supported Does not handle sizes in units other than pixels (e.g. pt, in, cm, mm, etc) SVG path has an optional close command, "z" ... AGG shape equivalent auto-closes load-svg function needs to be totally refactored / optimized ... *sample only* } ] ; The following commands are available for path data: ; ; M = moveto ; L = lineto ; H = horizontal lineto ; V = vertical lineto ; C = curveto ; S = smooth curveto ; Q = quadratic Belzier curve ; T = smooth quadratic Belzier curveto ; A = elliptical Arc ; Z = closepath ;print: none ; comment out this line to enable debug messages load-svg: function [svg-file [file! string!] size [pair!]] [ id defs x y to-color to-byte draw-blk append-style svg-size scale-x scale-y ][ xml: either string? svg-file [parse-xml svg-file] [ unless %.svg = suffix? svg-file [to error! "File has an invalid suffix!"] parse-xml read svg-file ] unless xml/3/1/1 = "svg" [to error! "Could not find SVG header!"] ;unless find ["id" "xmlns"] xml/3/1/2/1 [to error! "Could not find ID header!"] ;unless xml/3/1/3/1/1 = "defs" [to error! "Could not find DEFS header!"] id: xml/3/1/2 defs: xml/3/1/3 ; ; --- Parse SVG id ; svg-size: either find ["32pt" "48pt" "72pt"] select id "width" [ switch select id "width" [ "72pt" [120x120] "48pt" [80x80] "32pt" [60x60] ] ][ as-pair to integer! any [select id "width" "100"] to integer! any [select id "height" "100"] ] x: to integer! any [select id "x" "0"] y: to integer! any [select id "y" "0"] scale-x: size/x / svg-size/x scale-y: size/y / svg-size/y ; ; --- Helper functions ; to-color: func [s [string!]] [ ; converts a string in the form "#FFFFFF" to a 4-byte tuple to tuple! load rejoin ["#{" next s "00}"] ] to-byte: func [s [string!]] [ ; converts a string with a value 0-1 to an inverted byte 255 - to integer! 255 * to decimal! s ] ; ; --- Parse SVG defs ; draw-blk: copy [] append-style: function [ command [string!] blk [block!] ][ x xy pen-color fill-color line-width mode size radius shape closed? matrix transf-command ][ xy: 0x0 size: 0x0 line-width: 1 matrice: make block! [] radius: none transf-command: none foreach [attr val] blk [ switch attr [ "transform" [print "tranform have been found" ;probe val halt val: parse val "()," transf-command: first val probe transf-command switch transf-command [ "matrix" [ foreach word val [ if not find word "matrix" [ insert tail matrice to-decimal word ] ] ] ] ] "style" [ foreach [attr val] parse val ":;" [ switch/default attr [ "font-size" [ ] "stroke" [ switch/default first val [ #"#" [pen-color: to-color val] #"n" [pen-color: none] ][ print ["Unknown stroke:" val] ] ] "stroke-width" [line-width: to decimal! val] "fill" [ fill-color: switch/default first val [ #"#" [to-color val] #"n" [none] ][ print ["Unknown fill value:" val] none ] ] "fill-rule" [ mode: switch/default val [ "evenodd" ['even-odd] ][ print ["Unknown fill-rule value:" val] none ] ] "stroke-opacity" [pen-color: any [pen-color 0.0.0.0] pen-color/4: to-byte val] "fill-opacity" [fill-color: any [fill-color 0.0.0.0] fill-color/4: to-byte val] "stroke-linejoin" [ insert tail draw-blk switch/default val [ "miter" [compose [line-join miter]] "round" [compose [line-join round]] "bevel" [compose [line-join bevel]] ][ print ["Unknown stroke-linejoin value:" val] none ] ] "stroke-linecap" [ insert tail draw-blk 'line-cap insert tail draw-blk to word! val ] ][ print ["Unknown style:" attr] ] ] ] "x" [xy/x: scale-x * val] "y" [xy/y: scale-y * val] "width" [size/x: scale-x * val] "height" [size/y: scale-y * val] "rx" [print "rx"] "ry" [radius: to decimal! val] "d" [ shape: copy [] x: none closed?: false foreach token load val [ switch/default token [ M [insert tail shape 'move] C [insert tail shape 'curve] S [insert tail shape 'curv] L [insert tail shape 'line] Q [insert tail shape 'qcurve] T [insert tail shape 'qcurv] z [closed?: true] H [insert tail shape 'hline] V [insert tail shape 'vline] A [insert tail shape 'arc] ][ unless number? token [print ["Unknown path command:" token]] either x [insert tail shape as-pair x scale-y * token x: none] [x: scale-x * token] ] ] ] ] ] insert tail draw-blk compose [ pen (pen-color) fill-pen (fill-color) fill-rule (mode) line-width (line-width * min scale-x scale-y) ] switch command [ "rect" [ insert tail draw-blk compose [box (xy) (xy + size)] if radius [insert tail draw-blk radius] ] "path" [ unless closed? [print "Path closed"] either transf-command <> none [ switch transf-command [ "matrix" [insert tail draw-blk compose/only [ (to-word transf-command) (matrice) shape (shape) reset-matrix]] ] ][ insert tail draw-blk compose/only [shape (shape)] ] ] "g" [ print "Write here how to handle G insertion to Draw block" insert tail draw-blk probe compose/only [reset-matrix (to-word transf-command) (matrice)] ] ] ] probe defs foreach blk defs [ switch first blk [ "rect" [append-style first blk second blk] "path" [append-style first blk second blk] "g" [ print "key word" probe first blk print "matrix and style in G" probe second blk append-style first blk second blk ;print "what to draw in G" probe third blk foreach blk2 third blk [ probe blk2 switch first blk2[ "path" [append-style first blk2 second blk2] ] ] ] ] ] probe draw-blk draw-blk ] view make face [ offset: 100x100 size: 200x200 action: request-file/filter/only "*.svg" text: rejoin ["SVG Demo [" last split-path action "]"] data: read action color: white effect: compose/only [draw (load-svg data size)] edge: font: para: none feel: make feel [ detect: func [face event] [ if event/type = 'resize [ insert clear face/effect/draw load-svg face/data face/size show face ] if event/type = 'close [quit] ] ] options: [resize] ] | |
shadwolf: 23-Jun-2005 | REBOL [ Title: "SVG Demo" Owner: "Ashley G. Trüter" Version: 0.0.1 Date: 21-Jun-2005 Purpose: "Loads and displays a resizeable SVG file." History: { 0.0.1 Initial release } Notes: { Tested on very simple SVG icons Only a few basic styles / attributes / commands supported Does not handle sizes in units other than pixels (e.g. pt, in, cm, mm, etc) SVG path has an optional close command, "z" ... AGG shape equivalent auto-closes load-svg function needs to be totally refactored / optimized ... *sample only* } ] ; The following commands are available for path data: ; ; M = moveto ; L = lineto ; H = horizontal lineto ; V = vertical lineto ; C = curveto ; S = smooth curveto ; Q = quadratic Belzier curve ; T = smooth quadratic Belzier curveto ; A = elliptical Arc ; Z = closepath ;print: none ; comment out this line to enable debug messages load-svg: function [svg-file [file! string!] size [pair!]] [ id defs x y to-color to-byte draw-blk append-style svg-size scale-x scale-y ][ xml: either string? svg-file [parse-xml svg-file] [ unless %.svg = suffix? svg-file [to error! "File has an invalid suffix!"] parse-xml read svg-file ] unless xml/3/1/1 = "svg" [to error! "Could not find SVG header!"] ;unless find ["id" "xmlns"] xml/3/1/2/1 [to error! "Could not find ID header!"] ;unless xml/3/1/3/1/1 = "defs" [to error! "Could not find DEFS header!"] id: xml/3/1/2 defs: xml/3/1/3 ; ; --- Parse SVG id ; svg-size: either find ["32pt" "48pt" "72pt"] select id "width" [ switch select id "width" [ "72pt" [120x120] "48pt" [80x80] "32pt" [60x60] ] ][ as-pair to integer! any [select id "width" "100"] to integer! any [select id "height" "100"] ] x: to integer! any [select id "x" "0"] y: to integer! any [select id "y" "0"] scale-x: size/x / svg-size/x scale-y: size/y / svg-size/y ; ; --- Helper functions ; to-color: func [s [string!]] [ ; converts a string in the form "#FFFFFF" to a 4-byte tuple to tuple! load rejoin ["#{" next s "00}"] ] to-byte: func [s [string!]] [ ; converts a string with a value 0-1 to an inverted byte 255 - to integer! 255 * to decimal! s ] ; ; --- Parse SVG defs ; draw-blk: copy [] append-style: function [ command [string!] blk [block!] ][ x xy pen-color fill-color line-width mode size radius shape closed? matrix transf-command ][ xy: 0x0 size: 0x0 line-width: 1 matrice: make block! [] radius: none transf-command: none foreach [attr val] blk [ switch attr [ "transform" [print "tranform have been found" ;probe val halt val: parse val "()," transf-command: first val probe transf-command switch transf-command [ "matrix" [ foreach word val [ if not find word "matrix" [ insert tail matrice to-decimal word ] ] ] ] ] "style" [ foreach [attr val] parse val ":;" [ switch/default attr [ "font-size" [ ] "stroke" [ switch/default first val [ #"#" [pen-color: to-color val] #"n" [pen-color: none] ][ print ["Unknown stroke:" val] ] ] "stroke-width" [line-width: to decimal! val] "fill" [ fill-color: switch/default first val [ #"#" [to-color val] #"n" [none] ][ print ["Unknown fill value:" val] none ] ] "fill-rule" [ mode: switch/default val [ "evenodd" ['even-odd] ][ print ["Unknown fill-rule value:" val] none ] ] "stroke-opacity" [pen-color: any [pen-color 0.0.0.0] pen-color/4: to-byte val] "fill-opacity" [fill-color: any [fill-color 0.0.0.0] fill-color/4: to-byte val] "stroke-linejoin" [ insert tail draw-blk switch/default val [ "miter" [compose [line-join miter]] "round" [compose [line-join round]] "bevel" [compose [line-join bevel]] ][ print ["Unknown stroke-linejoin value:" val] none ] ] "stroke-linecap" [ insert tail draw-blk 'line-cap insert tail draw-blk to word! val ] ][ print ["Unknown style:" attr] ] ] ] "x" [xy/x: scale-x * val] "y" [xy/y: scale-y * val] "width" [size/x: scale-x * val] "height" [size/y: scale-y * val] "rx" [print "rx"] "ry" [radius: to decimal! val] "d" [ shape: copy [] x: none closed?: false if all [x not number? token] [ insert tail shape x * either token = 'V [scale-y][scale-x] x: none ] foreach token load val [ switch/default token [ M [insert tail shape 'move] C [insert tail shape 'curve] S [insert tail shape 'curv] L [insert tail shape 'line] Q [insert tail shape 'qcurve] T [insert tail shape 'qcurv] z [closed?: true] H [insert tail shape 'hline] V [insert tail shape 'vline] A [insert tail shape 'arc] ][ unless number? token [print ["Unknown path command:" token]] either x [insert tail shape as-pair x scale-y * token x: none] [x: scale-x * token] ] ] ] ] ] insert tail draw-blk compose [ pen (pen-color) fill-pen (fill-color) fill-rule (mode) line-width (line-width * min scale-x scale-y) ] switch command [ "rect" [ insert tail draw-blk compose [box (xy) (xy + size)] if radius [insert tail draw-blk radius] ] "path" [ unless closed? [print "Path closed"] either transf-command <> none [ switch transf-command [ "matrix" [insert tail draw-blk compose/only [ (to-word transf-command) (matrice) shape (shape) reset-matrix]] ] ][ insert tail draw-blk compose/only [shape (shape)] ] ] "g" [ print "Write here how to handle G insertion to Draw block" insert tail draw-blk probe compose/only [reset-matrix (to-word transf-command) (matrice)] ] ] ] probe defs foreach blk defs [ switch first blk [ "rect" [append-style first blk second blk] "path" [append-style first blk second blk] "g" [ print "key word" probe first blk print "matrix and style in G" probe second blk append-style first blk second blk ;print "what to draw in G" probe third blk foreach blk2 third blk [ probe blk2 switch first blk2[ "path" [append-style first blk2 second blk2] ] ] ] ] ] probe draw-blk draw-blk ] view make face [ offset: 100x100 size: 200x200 action: request-file/filter/only "*.svg" text: rejoin ["SVG Demo [" last split-path action "]"] data: read action color: white effect: compose/only [draw (load-svg data size)] edge: font: para: none feel: make feel [ detect: func [face event] [ if event/type = 'resize [ insert clear face/effect/draw load-svg face/data face/size show face ] if event/type = 'close [quit] ] ] options: [resize] ] | |
shadwolf: 23-Jun-2005 | my FTP tis back from death so here is my last script http://shadwolf.free.fr/svg-demo-shadwolf.r | |
shadwolf: 23-Jun-2005 | I allways use as reference script for my work the blender.svg file provided in ashley's archive svg-demo.zip | |
shadwolf: 23-Jun-2005 | so my version of the script supports in the SVG <g> block with in this block header transform matrix and in block <G> path with or without in it tranform matrix. I have a little problem with this point. Then I add the support for path d field coded in the format of INKSCAPE SVG PLAIN TEXT (the SVG light weight version available under inkscape ) | |
shadwolf: 23-Jun-2005 | can be found on http://shadwolf.free.fr/svg-demo-shadwolf.r | |
Ashley: 23-Jun-2005 | Thanks for taking this up and running with it guys, you're making great progress (far better than I could have). Feel free to take ownership of the code and refactor it as needed. Two minor improvements are: unless closed? [insert tail shape reduce ['move 0x0]] which is Gabriele's fix to the shape close problem, and: feel: make feel [ redraw: func [face act pos] [ if act = 'draw [insert clear face/effect/draw load-svg face/data face/size] ] ] which cleans the sample feel code up a bit. I'd also remove "VID" from the title of this group as DRAW AGG is tied to View. ;) | |
shadwolf: 23-Jun-2005 | okay I have imporved matrix support it seems to be good for scale-x: 1 scale-y: 1 if cyphre can see the code of the matrix gestion and makes some fix optimisation it could allow us to advance more with the rest of the SVG word format | |
Vincent: 23-Jun-2005 | Thanks Ashley: there's still a lot of work to do - as SVG is quite flexible | |
shadwolf: 24-Jun-2005 | I'm working hard on the translation of the linearGradient informations from SVG files to AGG | |
shadwolf: 24-Jun-2005 | http://shadwolf.free.fr/svg-demo02.zip | |
shadwolf: 26-Jun-2005 | Ashley yes !!! You noticed right I found them deep hided in the SVG format documentation on W3C dedicated pages to SVG format .... | |
shadwolf: 26-Jun-2005 | I copy past the conversion units into the script becaus I know that could be usefull but AS I was working on lineargradient and as it's a complicated part of the format SVG I had no time to make a conversion algorithm I glad to see that you make it :) | |
shadwolf: 26-Jun-2005 | http://www.w3.org/TR/SVG/coords.html | |
shadwolf: 26-Jun-2005 | in svg-size | |
Ashley: 26-Jun-2005 | Yes, to-unit is called from svg-size; and also from "path d", stroke-width, fill-width, etc ... probably anywhere in SVG where we "expect" an integer or decimal! ;) | |
shadwolf: 29-Jun-2005 | okay good stuf in it Vincent and I are planning to use the xml-to-object.r script from Brian Wisti to enbetter and make a more sophisticate support for our actual work upon SVG parsing translation and rendering into a VID window | |
shadwolf: 29-Jun-2005 | opkay so we are planning on the opportinity to use a REBOL tree object! structure to represente SVG datas :) | |
shadwolf: 30-Jun-2005 | I I want to interrogate the first shape description on the top level ( out of group blocks) I have to build a path like that xml/svg/path/1/d | |
shadwolf: 30-Jun-2005 | or maybe build the path xml/svg/path then attribute to a temporary var the foreach ob xml/svg/path [ ob processing ] | |
shadwolf: 30-Jun-2005 | so to build the path we start xml/svg "/ " g or path if g we seek 3 thing transform field and path field or sub g field | |
shadwolf: 30-Jun-2005 | shadwolf.free.fr/svg-demo-shad04.r | |
shadwolf: 30-Jun-2005 | http://shadwolf.free.fr/svg-demo-shad03.r | |
shadwolf: 30-Jun-2005 | in this file we have xml-to-object function load-svg function (mostly empty there is where to put the data conversion and draw block construction) and the widget that start the program | |
shadwolf: 2-Jul-2005 | hum xpdf.svg file shows me a problem with the use of xml-to-object ... if you have serveral g block at the same level all g block are compacted into the same reference | |
shadwolf: 2-Jul-2005 | Okay so here is the first version of my work on SVG to rebol objects tree structure | |
shadwolf: 2-Jul-2005 | http://shadwolf.free.fr/svg-demo-shad04.r | |
shadwolf: 2-Jul-2005 | try to load all the files that Ashley provides with his svg-demo | |
Ashley: 2-Jul-2005 | Good progress! If you change: "stroke-width" [line-width: to decimal! val] to "stroke-width" [line-width: to-unit val] then it'll run all your sample SVG icon files as well. Wish I knew the answers to your AGG questions, but like you I'm waiting on more documentation / examples. | |
Ashley: 2-Jul-2005 | I've spent quite a bit of time looking at Inkscape (http://www.inkscape.org/) and it seems to be the only / best SVG game in town (their command-line driven SVG to PNG conversion seems to be particularly well regarded). Looking forward to their 0.42 release as it supports OS/X as well. The Clip Art site that they link to (http://www.openclipart.org/) is also a treasure trove of Public Domain files (which solves the GPL concerns I had with many of the dedicated KDE / Gnome icon sets). I'm also looking forward to their release 15 which seems to be just around the corner. Lots of good news in the SVG world, I wonder how long before mainstream browsers start supporting it? (without plugins). | |
shadwolf: 2-Jul-2005 | Inkscape is the successor project of sodipodi (for example you can see reference to sodipodi into teh SVG output files ...) Sodipodi was abandonned by the dev team so some of them retakes it and continue the adventure with inkscape | |
shadwolf: 2-Jul-2005 | I like particularly the capability of generating light weight SVG files (plein text) the drawing tools are simple powerfull very well thinked and pretty good | |
shadwolf: 2-Jul-2005 | I psent lot of time using it (more than 80 hours since this last weeks ) all SVG files that I could found exists | |
shadwolf: 2-Jul-2005 | I like the XML primitive draw explorer like a tree view of the compoun of your draw this is particularly good to write SVG renderer | |
shadwolf: 2-Jul-2005 | Handling SVG as REBOL object! tree makes it really really easier to set recursivity and code writing ( as all can be exploded into small fonctions I hope the resulting code once terminated won't be so deficult to read | |
shadwolf: 2-Jul-2005 | http://shadwolf.free.fr/svg-demo-shad04.r | |
Graham: 2-Jul-2005 | Firefox is supposed to be able to support SVG ( a subset at least ) without plugins, but I couldn't get it to work. I had to download Adobe's plugin. | |
shadwolf: 2-Jul-2005 | so you have to remaining choice (3 in fact ) 1) using IE but then your not my pal any more, 2) installing Inkscape and relate it to svg file 3) help me finishing the SVG viewer using REBOL !!! ;)) | |
shadwolf: 2-Jul-2005 | this could be a good promotion point to insert SVG rendering into the rebplug for firefox once it's completed and optimised ;) | |
shadwolf: 2-Jul-2005 | I improve some more the rendering now the file gnome-keyboard-dev.svg is fully and perfectly rendererd. I put a red pen-fill color for identify all primitives that needs fill:url related gradient | |
shadwolf: 4-Jul-2005 | I have improved the svg rendering engine | |
shadwolf: 4-Jul-2005 | http://shadwolf.free.fr/svg-demo-shad05.r | |
Ashley: 11-Jul-2005 | Release 15 of the OpenClipart library is out: http://www.openclipart.org/downloads/index.php ... over 4,000 high-quality *public domain* SVG images! | |
shadwolf: 22-Jul-2005 | Features still on the work table are: - SVG Transformation translation (mostly matrix) - SVG Gradient translation (linear partern radiant) - SVG drawing primitives (some drawing primitives are not supported actually ) - SVG Animation translation (don't know if this is a usefull and suitable fonctionnality tellme what do you think about it) | |
Robert: 5-Aug-2005 | FYI: Ed Pegg writes "I did a survey of all available vector-based drawing programs, in anticipation of SVG in the next Firefox. I found 29 different vector drawing programs. Of these, 14 were free or open source. More than I expected. Did I miss any good ones?" http://developers.slashdot.org/article.pl?sid=05/08/02/0117224&from=rss | |
shadwolf: 5-Aug-2005 | personnaly I'm working with InkScape a very good SVG software... | |
shadwolf: 1-Jan-2006 | For ppl interrested in SVG rendering engine. My tonight work and test on the engine is resumed in the AGG topic. To resume before matrix bug as causing bad scale and bad position. Now we have good position but still bad scale i post screen cap samples and we can see that the evolution is good betwin View 1.3.1 and 1.3.2 | |
shadwolf: 1-Jan-2006 | transform problem are on their way to be solve gradient too by cyphre and Carl those two things are the most blockant problems until they are not completly solved we can't expect to have a full working SVG rendering engine -> most of SVG imagines use transform effects and gradients this means that if we want to get a pretty good and reliable SVG engine we have to fixe those two issue. SVR rendering engine is a good and hudge test upon AGG integration to REBOL/View and it allows us to embetter it !!! Once we get a fully working engine with basic human understandable algorithm i will start the optimisation process using parse (but to be franck i don't know how parse will react in front svg row data or how will be the time to dev this parse based SVG engine ... in all cases I think the actual engine have teached me a lot arrounf the SVG to AGG adaptation process so i hope the translation to parse and parse/rules will not be too hard and too long) | |
shadwolf: 1-Jan-2006 | well last thing i can say is that SVG rendering engine is very high on my task list ( task number one) i worked on the adding of some other new drawing primitive (image rect, circles). I will continue to work on the close support of all SVG datas that can have a meaning in AGG context. SVG rendering engine is a 2 weeks of work only!!! ... until i fall on the gradient and transforms problems so this ensure us advancing on this project will be very fast once we solve bugs in REBOL/View related to AGG (wich is in progress actually) | |
shadwolf: 1-Jan-2006 | I still take as SVG workshop / reference software INKSCAPE pretty good LGPL sofware available for all OS. | |
shadwolf: 1-Jan-2006 | In the futur i hope we will use a lot svg in dynamic drawing composition. | |
shadwolf: 2-Jan-2006 | for me to be honnest the advantages of using SVG instead of images are a lot this is a quick list of my thoughts on what can be done with SVG format. - easier embeding of graphical content - resizing auto ith not grphics quality loss - cheap but sharp skining - graphical content of an User Interface very low because rebol is pretty able to work with compression of text content ( compress/decompress) A little sample to enlight this compressed SVG file with blender logo -> less than 500 octets (any size can be applyed with no graphic loss (aliasing, color loose, blur, pixelisation etc..) ) a fixed jped for same content will use around 50ko. This means less datas in memory to as graphic pixel tables are very heavy in VM memory - Dynamic graphical content. some thing like text scrolling or efffect like Flash ones but with a reduction of 1000 of the data and memory use SVG use a labeling system for each graphical content that compose the image we can provided a tiny system to handle easy animation and show/hide of graphical content using raw rebol commands -> this will make pretty easier the realisation of dynamic animations in rebol ViD content and as any REBOL/View face is DRaw/AGG capable the effects that we can create isn the futur with this idea will have no limits -> this means too to have a pretty fast and ell designed SVG engine (that's my actual path on research) | |
Ashley: 2-Jan-2006 | One other big advantage is that there is a lot of high-quality SVG in the public domain, and it's growing fast. | |
Joe: 3-Jan-2006 | shadwolf, a good example to use with your svg renderer is the word map with political borders (public domain license) http://www.mappinghacks.com/maps/world_borders.svgz | |
shadwolf: 24-Jan-2006 | surfing around on internet i found another common application for SVG -> graphs representation. The idea is inspired by a ruby project http://www.germane-software.com/software/SVG/SVG::Graph/#N10034. To do this in rebol we need teh ability to save data in an image PNG. The way we can use a thing like this could be to use a simple rebol draw based dialect to write the graphs if we are in REBOL/view application the graph is isealy shown if we need to show the graph in webrowser we can have 2 external sources SVG and PNG. For importing graphs from another application the SVG is the best way. So our REBOL::SVG::GRAPH would be able to import graphi content from a SVG file, output SVG and PNG files, render graphs to REBOL/view draw pane, propose a simple way to implement graphs using a rebol dialect. | |
shadwolf: 1-Feb-2006 | hum new rebol/view have save/png hability woooooooooooopy so there is nothing that prevent us to make a graph /AGG/SVG/PNG dialect ^^ | |
shadwolf: 1-Feb-2006 | on a project like an svg graph system save.png take really all it's sens imagine a way to make easyly graphs with your rebol GCI to display graph stats in your web pages for example | |
shadwolf: 1-Feb-2006 | as svg or as png in a simple and easy way | |
Pekr: 20-Jun-2006 | would following news help us to get AGG - SVG compatible gradients? It regards AGG 2.4, new branch of AGG, and I am sure we will get it ported to REBOL too ... New utility class template is added, gradient_lut. It allows you to easily create a color LUT for gradients from a set of color stops as they are defined in SVG, section Gradients and Patterns. | |
shadwolf: 10-Nov-2006 | okay thank you for the link in my idea my SVG/REBOL graph render should be easy to use and render basical graphs using a psecial graph dialect but ofcourse it will be enhanced afterward... | |
Group: RT Q&A ... [RT Q&A] Questions and Answers to REBOL Technologies [web-public] | ||
Pekr: 12-Oct-2005 | Hi .... with recent Rebcode releases, we can see that internally new Core is marked as 2.7 and View is marked as 1.4 Is it just working "title" or will those products be marked as that? And if so, can we know, what other changes will go for 1.4 View release target? Will there be any AGG fixes/additions (to support SVG RebGUI progress), or even VID changes? I still think, that VID is missing few fine styles as tab, group-box, better list as was introduced on IOS Developer's server, (eventually tree, menu), to allow novices to start using VID/View more productively. Any chance RT can tell us, what is the plan for 1.4 release? | |
Gabriele: 13-Oct-2005 | Q: What does the world on Nov-15-2005 look like? A: Our main goal is to get REBOL into the hands of more users, not just programmers and techies.... by the millions over time. By doing that, we create a market for not only handy free REBOL apps, but also for commercial apps and entire businesses that are related to REBOL. Q: Given that window transparency is OS specific, will there be a dialect that covers both Windows, Linux and 40+ other OS? In other words, does RT plan on continued support of so many languages, or are we entering a new era of specific OS support? A: Our plan is to make that a window option that is part of the face/options for a window. If an OS does not support this mode, then the option will be ignored, but the application will still be fully functional. Q: I hope it is still valid that cooperation with RT is possible. I mean - last few weeks I play with some Win32 functions (thanks to Gregg) and I would like we would have proper app behavior in multi-monitor/multi-desktop environments .... so I wonder if any SIGs will be created, some ppl will be invited to participate, comment etc., or if RT is gonna cook it all themselves? A: Yes, there are many such special interest projects currently going on. (Most of them are occurring via private projects in AltME and IOS.) These days 90% of REBOL changes are done in cooperation with the REBOL community. Q: Hi .... with recent Rebcode releases, we can see that internally new Core is marked as 2.7 and View is marked as 1.4 Is it just working "title" or will those products be marked as that? And if so, can we know, what other changes will go for 1.4 View release target? Will there be any AGG fixes/additions (to support SVG RebGUI progress), or even VID changes? I still think, that VID is missing few fine styles as tab, group-box, better list as was introduced on IOS Developer's server, (eventually tree, menu), to allow novices to start using VID/View more productively. Any chance RT can tell us, what is the plan for 1.4 release? A: Regarding 2.7 and 1.4 question: we change the revision numbers (the second number) whenever there is a major change in REBOL that may be unstable. The /core 2.7 kernel (that is in /view 1.4 as well) adds new datatypes to REBOL, and they are the first datatypes added in several years, so we consider this to be a major change, and marked it that way. Yes, we do plan to be making a few AGG fixes very soon. Oh, and regarding VID: we plan to be making very big changes there. More to come soon. Q: Could you add struct! support to /Core? I keep on having situations that would be made much easier by struct! when I don't need libraries. For instance, conversions from external binary data encodings to internal REBOL values, say for file formats, network protocols and so on. Now rebcode has added other forms of strong typing like the type-specific opcodes and the vectors. Having structs with their constrained field types, their specific data layouts, would be a perfect match for the low level operations of rebcode. They would be helpful later when implementing your own data types as well. A: On structs: yes, we will enable this feature on core, but it should only be used for lower level code. Objects are more powerful. Q: Could you add an APPLY opcode to rebcode? apply: ["Apply function or path to arguments, save result" word! word! | path! block!] In rebcode: apply x f [arg1 arg2 ...] Is equivalent to this in REBOL: x: do f arg1 arg2 ... The advantage to doing function calls this way is that the arity of the opcode is fixed, even if the arity of the function called can't be known ahead of time. The value assigned to the function word could be either a function or a path, or for efficiency you could have a seperate opcode APPLYP for path values (I'd prefer just one opcode for generality but it's your call). A: I'm not sure what is meant by the path for it. You mean for refinements? That may actually slow down the apply interface. | |
Group: AJAX ... Web Development Using AJAX [web-public] | ||
Reichart: 30-Jan-2009 | SVG though I think of as ONLY 2D vector stuff. No? | |
Group: Tech News ... Interesting technology [web-public] | ||
Volker: 15-May-2006 | I guess there are svg->gflash-tools? | |
Pekr: 15-May-2006 | well, Terry - for those who like animations? We don't have any Authoring tools for view/draw yet ... so why not to be able to "play" some SVG or Flash vector data? | |
Group: Postscript ... Emitting Postscript from REBOL [web-public] | ||
Graham: 15-Apr-2006 | I got the impression that AGG draw is skewed a little to assist producing SVG graphics .. but there's a strong case to support postscript better instead. | |
Pekr: 26-Apr-2006 | Gabriele - I know, browsers are just containers for other technologies. It will last at least one or two years, before browsers (for most userbase) support ajax, svg, css 3, etc., but they are actively developed and will always be at user's desktops .... there is also one czech product, called formfiller ( http://www.ff.cz), which allows (internally hopefully xml) docs. xForms is the standard we should watch ... | |
Pekr: 7-Nov-2006 | hmm, my opinion was based upon SVG dialect, which we were able to render, using translation into AGG ... | |
Cyphre: 7-Nov-2006 | Regarding the coordinate system: I''ll ty to thing how to incorporate both, the PS like and SVG like orientation. But do we really need this at low-level? IIRC I have posted some example how to change the coordinates using simple reparsing the coord values? | |
Geomol: 10-Apr-2007 | Yeah, it's a bit tricky. There's a link in the DRAW docs to: http://www.w3.org/TR/SVG/coords.html#EstablishingANewUserSpace where you might get some explanation. | |
Group: Plugin-2 ... Browser Plugins [web-public] | ||
ScottT: 11-May-2006 | wrt own window on top to do the window messages, etc -- I'm all for slamming itself on top of the browser, and not going through it to embed view. or make it a "windowed" control, which is how IE does SELECT elements. The complexity there is having it crop to be part of the page. I think wndows media control is like that, where you can pick a windowed version, which performs better (probably from similar things that you are running into. MSAgent runs in the browser, and is allowed ro roam anywhere on the screen in an irregularly shaped winoow. It also starts a server process which handles all calls to the interactions with applications like IE and Office that take advantage of that aspect. It's all asynchronous/multithreaded, and shuts down automatically when there are no more client controls to serve. The DOM provides screen position information, but the downside is that with embedded controls like Adobe SVG viewer and Flash is that they will respond correctly to transparency (showing html page background through transparent parts of control -- never got REBOL plugin to do that, which has something to do with wmode="transparent" or something similar |
1 / 371 | [1] | 2 | 3 | 4 |