Hey, On Sat, Sep 24, 2016 at 07:23:30PM +0200, Jon Nordby wrote:
On 10 September 2016 at 23:12, Philip R. Dutton <fooledbyprimes gmail com> wrote:I ran across much talk and some implementation of GEGL. I can see how the Undo /History features would make great use of the DAG graph data structure used by GEGL. Q: How hard will it be to log the GEGL graph evolution to disk in real-time using perhaps a rolling log? What is the best approach for an idea like this?For the approach, pippin and I sketched together a basic spec a couple of years back. https://mail.gnome.org/archives/gegl-developer-list/2012-June/msg00004.html https://git.gnome.org/browse/gegl/tree/docs/journal.txt [...] *However*, I believe the GEGL graphs used in GIMP are still "short lived" - used for the duration of one operation and then applied destructively. Meaning that there is no one graph which represents the entire document and thus the evolution of your artwork. It may be possible to try to stich together a sort of journal from all these , but probably there would be need for a significant amount of GIMP specific logic in addition... Not sure of the feasibility here.
Other than what Jon already said, I wanted to point out that if you ran gnome-photos [*] with G_MESSAGES_DEBUG=all and GNOME_PHOTOS_DEBUG=gegl, then it logs an XML representation of the graph whenever something causes it to change. The final graph is stored persistently (as XML) in ~/.local/share/gnome-photos. Since the editing UI is relatively simple compared to GIMP, we use snapshots to undo a whole series of operations, instead of undoing every single change in the properties. I think this is similar to transactions in Jon's references. The snapshots are again just XML in memory. All this is pretty straightforward in gnome-photos, because, unlike current GIMP versions, it is structured for non-destructive editing. Cheers, Rishi [*] You'd need at least version 3.20.x.
Attachment:
pgpLySF4RbQHv.pgp
Description: PGP signature