X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fundostack.h;h=8c39d8be71455a2490986a7b467af735e0b98c18;hp=f54cb0da34de7fe9392da8c6cfccf6e274e056ca;hb=2e48b660e37eb5c661264d601211e16cb6cd6e89;hpb=ae3fc4be2e74120251506615bb29b853c6e10ff6 diff --git a/cinelerra-5.1/cinelerra/undostack.h b/cinelerra-5.1/cinelerra/undostack.h index f54cb0da..8c39d8be 100644 --- a/cinelerra-5.1/cinelerra/undostack.h +++ b/cinelerra-5.1/cinelerra/undostack.h @@ -31,11 +31,56 @@ #define UNDOLEVELS 500 #define UNDO_KEY_INTERVAL 100 -// The undo stack is a series of key undo buffers and -// incremental undo buffers. The incremental buffers -// store the differences in the most compact way possible: -// a series of offsets, sizes and values. This should allow -// a huge number of undo updates. + +#define hash_sz2 8 +#define hash_sz (1< +{ +public: + UndoVersion(int v) { ver = v; } + ~UndoVersion() { remove_all_objects(); } + int ver; + + void scan_lines(UndoHashTable *hash, char *sp, char *ep); +}; class UndoStackItem : public ListItem @@ -56,19 +101,15 @@ public: // The string must be deleted by the user. char* get_data(); char* get_filename(); - int has_data(); int get_size(); int is_key(); uint64_t get_flags(); - -// Get pointer to incremental data for use in an apply_difference command. - char* get_incremental_data(); - int get_incremental_size(); - void set_creator(void *creator); void* get_creator(); + void save(FILE *fp); + void load(FILE *fp); private: // command description for the menu item char *description; @@ -108,6 +149,8 @@ public: // move to the next undo entry for a redo UndoStackItem* pull_next(); + void save(FILE *fp); + void load(FILE *fp); void dump(FILE *fp=stdout); UndoStackItem* current;