On Tue, Jul 29, 2008 at 12:17 AM, Souichi TAKASHIGE <[EMAIL PROTECTED]> wrote:
>> No, it's only destructive if we have no way of regenerating the cache as
>> With GEGL, we can cache just at the newest node in the graph. Stroke
>> information can be fully stored in the node.
> I'm confused.
> From my understanding, if stroke information is stored in the node,
> then the stroke can be regenerated, and that operation will be
> non-destructive since the cache can be regenerated. I think David says
> about "non-destructive" brush operation.
I was only addressing what you said "So it can't be non-destructive
unless we save
that cache forever.", by indicating why little caching is needed for
the non-destructive case -- the actual parameters of the operation are
> I saw source code of gegl-paint. It seems that gegl_vector stores the
> information of the path, so I think it is also about non-destructive
> brush tool.
> On the other hand, Øyvind says that we can implement "destructive"
> brush. I think being "destructive" implies that there's no way to
> regenerate the stroke since being able to regenerate the stroke means
> that the cache is regeneratable, so the operation must not have any
> path information.
> My concern is about this case.
> Let's say, If the following operation sequences are executed, how can
> we undo and redo the brush operation (C) and (D)? And what will happen
> if we change the prarameter of the operation (B)?
After a destructive operation, you cannot change parameters of earlier
steps -- the information necessary to do so no longer exists.
Therefore, after C happens, changing B is meaningless -- B no longer
exists in any sensible way.
I think this is a subject where it is very easy to find yourself
confused. (I certainly am confused!)
I personally believe that destructive editing doesn't have merit by
itself, it doesn't save time or improve the responsiveness of a
Rather, it is worth using as a tool similar to 'clear undo history' --
in GEGL, it is like collapsing a branch of the graph into a single
I also think it's important to keep in mind, when working fully with
GEGL, undo and redo would be implemented by modification of the GEGL
graph. I admit I do not understand how there can really be any
destructive operation, in that framework; unless you allow old graph
modifications to expire (and turn that branch into a GeglBuffer)
> (A) load an image from external resource.
> (B) do filter operation, "non-destructive."
> (C) do brush operation, "destructive."
> (D) do another brush operation, "destructive."
> (E) do filter operation, "non-destructive."
> If my assumption is wrong, please let me know.
> Souichi TAKASHIGE
Gimp-developer mailing list