Thanks a lot! Would I be correct to interpret it this way:
1. Basically, the current code would not allow "multiple stops."
2. But it'd still be possible to have a one-stop on-canvas handle
(maybe two, for rows and columns), that basically converts the
end values into percentage values to feed into the current system
3. Since Inkscape doesn't store tiling values right now, changing
the tiling mechanism completely (to allow interpolations) would
not break any backward compatibility or something like that
(not that changing the mechanism is an easy
task)
So, the possible way to implement the tiling tool is:
1. First create a separate a "render frame" object (with a central
tile), and make it output values (to feed into the tiling system). It'd
basically be a separate file that can be tested independently.
Also, you can't add or delete tiles individually at this point, just
rows and columns, since the tiling system only handles a "rows
and column" entry at this point.
2. Once it is considered "stable", it is made to call upon the
tiling system, to which it inputs appropriate values.
On-canvas dynamics would require adding to the code for the
render frame object, not the current tiling system. What it'd do is
generate percentage values that are then fed into the tiling
system as well.
So, for a "basic" tiling tool, the tiling system would not need to be
changed much. However, adding both the fuse mode and multi-
node interpolation tiling would requiring significant changes to the
system.
Is that more or less correct?
From: Jasper van de Gronde <th.v.d.gronde@...528...>
To: Valerie <valerie_vk@...36...>
Sent: Wednesday, April 4, 2012 1:24 AM
Subject: Re: [Inkscape-devel] New tiling interface proposal
On 2012-03-31 16:20, Valerie wrote:
Now, I know nothing about
programming. Has anyone looked at
the tiling dialogue code yet to see how hard it'd be to
mess around
a bit with it? Possibilities to add extra stops etc. even?
Replacing
the opacity/blur/color mechanism with a gradient-like
approach?
I'm afraid I haven't been able to keep up over the last few days,
but I have had a look at the code. For those interested, all the
code is in src/ui/dialog/clonetiler.cpp. The main function is
CloneTiler::clonetiler_get_transform. This function essentially gets
all info, as well as a row and column index. It then computes all
the transforms required for that position and combines them. As far
as I can tell it combines them in such a way that first a scaling is
applied, then a rotation and finally a translation. If you select a
different symmetry group then the translation can become a more
complicated transform.
The scheme we talked about earlier that would interpolate transforms
is not necessarily compatible. This is because in the latter the
case the entire transform would be interpolated, while what Inkscape
does is essentially interpolating per kind of transform. That this
is not the same can be seen by realizing that
rotate(50)translate(1)rotate(50)translate(1) is not the same as
rotate(100)translate(2). The former is more or less what we talked
about (or at least what I had in mind during that discussion), the
latter is what Inkscape does.
However, Inkscape currently seems to store almost nothing about the
tiling in the file. So it would be relatively benign to change
behaviour. Existing files would not be affected in any way, users
would only be affected when trying to change a tiling or create a
new one. (This is not to say that it's necessarily a good idea to
make it impossible to achieve the current behaviour, just that if we
cannot reconcile the two, there is some room for change.)
Note that it would be possible to emulate Inkscape's current
behaviour through interpolation of transforms, but only if we would
allow "stacking" transforms. I'm not sure how this would have to be
supported UI-wise though.