Difference between revisions of "LPE for groups"

From Inkscape Wiki
Jump to navigation Jump to search
Line 49: Line 49:
      
      
     </g>
     </g>
==The work==
===Storing LPE group in the svg file===
15/02/08 : we store information as we described before : ''original-d'' for each shape and ''inkscape:path-effect'' to the group.
===Calculating the LPE for each shape===
04/03/08 : A shape has now a group_path_effect_ref attribute that store in memory the Lpe applied to the group.
In the following screenshot, A "Gear" LPE is applied to a group of two shapes.
[http://steren.giannini.googlepages.com/lpe_group_test.png]

Revision as of 21:20, 4 March 2008

LPE for groups

This Project is part of a student project from Ecole Centrale de Lyon. (SVN : http://svn.eclair.ec-lyon.fr/ )


Introduction

Today, LPE can only be applied to single path. The goal of this project is to enable LPE for groups of paths.

There may be a default implementation that does LPE recursively on each path but many behavior will have to be effect dependent.

For example "Bend path": if you apply it recursively, then all paths of the group will be bent along the path from start to end. We have to consider the bounding box of the group and to generate new coordinates for each path.

Main points are :

  • a. how to put it in SVG > See the svg code mock-up
  • b. how to render it in inkscape
  • c. what happens when a path in a group with LPE has its own LPE applied (chaining?)

svg code

Here is an idea of the svg code :

   <defs>
   
   <inkscape:path-effect
      effect="bend_path"
      id="path-effect2391"
      bendpath="M 62.8571,376.648 C 227.61907,256.19958 392.38103,260.92537 557.143,376.648"
      prop_scale="1"
      bendpath-nodetypes="cc" />
   
   </defs>

And then, for the group : the effect params are for the group, the original paths are for each shape.

   <g
       id="g2438"
       inkscape:path-effect="#path-effect2391">
   
   <path
                  style="opacity:0.93699993;fill:#00ffff;fill-opacity:0.99685531;fill-rule:nonzero;stroke:#000000;stroke-width:8.60000038;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
      d="M -7.11922,280.927 C 37.9458,247.569 89.2988,218.713 146.607,197.876 C 198.322,179.282 253.844,169.323 310.85,169.515 C 310.85,169.515 310.85,169.515 310.85,169.515 C 367.851,170.198 422.845,180.778 473.748,199.332 C 529.85,219.891 580.42,247.738 625.293,279.618 L 488.993,473.678 C 457.274,451.763 425.352,433.602 393.395,422.447 C 365.1,412.479 336.324,406.573 309.15,406.652 C 282.11,406.242 253.702,411.611 226.251,421.245 C 194.956,432 163.706,450.213 132.833,472.369"
      id="rect2388"
      inkscape:original-d="M 62.857143,258.07648 L 557.14285,258.07648 L 557.14285,495.21933 L 62.857143,495.21933 L 62.857143,258.07648 z" />
   
   <path
              style="opacity:0.93699993;fill:#00ffff;fill-opacity:0.99685531;fill-rule:nonzero;stroke:#000000;stroke-width:8.60000038;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
      d="M -7.11922,280.927 C 37.9458,247.569 89.2988,218.713 146.607,197.876  C 367.851,170.198 422.845,180.778 473.748,199.332 C 529.85,219.891 580.42,247.738 625.293,279.618 L 488.993,473.678 C 457.274,451.763 425.352,433.602 393.395,422.447 C 365.1,412.479 336.324,406.573 309.15,406.652 C 282.11,406.242 253.702,411.611 226.251,421.245 C 194.956,432 163.706,450.213 132.833,472.369"
      id="rect2348"
      inkscape:original-d="M 137.38075,749.31641 L 331.33005,749.31641 L 331.33005,1040.2404 L 137.38075,1040.2404 L 137.38075,749.31641 z" />
   
   </g>

The work

Storing LPE group in the svg file

15/02/08 : we store information as we described before : original-d for each shape and inkscape:path-effect to the group.

Calculating the LPE for each shape

04/03/08 : A shape has now a group_path_effect_ref attribute that store in memory the Lpe applied to the group.

In the following screenshot, A "Gear" LPE is applied to a group of two shapes. [1]