LivePathEffects Discussion

From Inkscape Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Discussion page for Johan's Live Path Effects project for GSoC2007.


What's it look like in SVG?

Simple idea

    <path
       inkscape:original-d = "..." (the original path that now has an applied effect)
       d="..."  (the output of the live-effect)
       inkscape:path-effect="..." (string with the name of the applied effect)
       inkscape:path-effect-param1= ...   (can be anything)
       inkscape:path-effect-param2 , etc
    />

This is what is implemented at this moment.

  • No chaining possible
  • Difficult to determine path-effect-param type from SVG.
  • not extendable (8 params max at the moment by copy-paste coding)

Like style atribute

<path
   inkscape:original-d = "..."
   d="..."
   inkscape:path-effect="sample1(param1:0.0;param2:loopy;) sample2(paramA:45;)"
/>
  • Parser needed
  • LPE class that stores its own params

<inkscape:patheffect>

<svg:path d="M 1 2 L 3 4">
  <inkscape:patheffect effect="org.inkscape.patheffect.a">
    <inkscape:param name="foo" type=".." value="bob" />
    <inkscape:param name="bar" type=".." value="jack" />
  </inkscape:patheffect>
  <inkscape:patheffect effect="org.inkscape.patheffect.b">
    <inkscape:param name="zort" type="bool" value="true" />
  </inkscape:patheffect>
  <inkscape:patheffect effect="org.inkscape.patheffect.a">
    <inkscape:param name="foo" type=".." value="alvin" />
    <inkscape:param name="bar" type=".." value="jack" />
  </inkscape:patheffect>
</svg:path>

defs section

<svg:svg>
...
<defs>
...
<inkscape:path-effect xlink:href="x-inkscape-plugin:org.inkscape.effect.foo"  id="path-effect2">
  <inkscape:param name="blah" type=".." value="foo" />
</inkscape:path-effect>
...
</defs>
...
<svg:path ... inkscape:path-effects="#path-effect2 ..." />
...
</svg:svg>

Looks alot like gradients.

  • upside: you can apply the same effect (with equal params) to different objects very easily.
  • downside: same as with gradients, might become a problem with parameters changing for only one object of all the objects referring to a certain effect, which then needs forking etc etc...