X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fundostack.h;h=e6791d0a27d65441a6d3073272f047b22fb15a63;hp=9fbbd0052ea680d5572a1f4015dafffcd31e4d9e;hb=7ead44762b23da404eee89b63e0474153fdf58a1;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd diff --git a/cinelerra-5.1/cinelerra/undostack.h b/cinelerra-5.1/cinelerra/undostack.h index 9fbbd005..e6791d0a 100644 --- a/cinelerra-5.1/cinelerra/undostack.h +++ b/cinelerra-5.1/cinelerra/undostack.h @@ -2,21 +2,21 @@ /* * CINELERRA * Copyright (C) 2008 Adam Williams - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * + * */ #ifndef 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,15 +101,9 @@ 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(); @@ -78,7 +117,7 @@ private: // type of modification uint64_t load_flags; - + // data after the modification for redos char *data; int data_size; @@ -94,22 +133,22 @@ class UndoStack : public List public: UndoStack(); ~UndoStack(); - + +// get current undo/redo stack item + UndoStackItem *get_current_undo(); + UndoStackItem *get_current_redo(); + // Create a new undo entry and put on the stack. // The current pointer points to the new entry. // delete future undos if in the middle // delete undos older than UNDOLEVELS if last UndoStackItem* push(); -// move to the previous undo entry - void pull(); - - // move to the next undo entry for a redo UndoStackItem* pull_next(); void dump(FILE *fp=stdout); - + UndoStackItem* current; };