Hi, On Tue, Jul 29, 2008 at 12:17 AM, Souichi TAKASHIGE <sigetch@xxxxxxxxx> wrote: > Hi, > >> No, it's only destructive if we have no way of regenerating the cache as needed. >> 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 kept. > 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 program. 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 leaf. 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 Gimp-developer@xxxxxxxxxxxxxxxxxxxxxx https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer