Hopefully a working merge with trunk (could be one error left in raytrace.c - will...
[blender.git] / source / blender / blenloader / intern / undofile.c
index 25ed891f0a4cdd02c0b9963b6b4100c6e76f33c2..f6fabbdad2113d9af23ac0135c8e3bb0e9b1fd2e 100644 (file)
@@ -1,15 +1,12 @@
 /**
  * $Id: 
  *
- * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
+ * ***** BEGIN GPL LICENSE BLOCK *****
  *
  * 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. The Blender
- * Foundation also sells licenses for use in proprietary software under
- * the Blender License.  See http://www.blender.org/BL/ for information
- * about this.
+ * 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
@@ -27,7 +24,7 @@
  *
  * Contributor(s): none yet.
  *
- * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ * ***** END GPL LICENSE BLOCK *****
  * .blend file reading entry point
  */
 
 #include <config.h>
 #endif
 
-#ifdef WIN32
-#include "BLI_winstuff.h"
-#endif
-
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
@@ -66,7 +59,7 @@ void BLO_free_memfile(MemFile *memfile)
 {
        MemFileChunk *chunk;
        
-       while(chunk = (memfile->chunks.first) ) {
+       while( (chunk = (memfile->chunks.first) ) ) {
                if(chunk->ident==0) MEM_freeN(chunk->buf);
                BLI_remlink(&memfile->chunks, chunk);
                MEM_freeN(chunk);
@@ -148,151 +141,3 @@ void add_memfilechunk(MemFile *compare, MemFile *current, char *buf, unsigned in
        }
 }
 
-/* ***************** GLOBAL UNDO *************** */
-
-#define UNDO_DISK      0
-
-#define MAXUNDONAME    64
-typedef struct UndoElem {
-       struct UndoElem *next, *prev;
-       char str[FILE_MAXDIR+FILE_MAXFILE];
-       char name[MAXUNDONAME];
-       MemFile memfile;
-} UndoElem;
-
-#define MAXUNDO         32
-static ListBase undobase={NULL, NULL};
-static UndoElem *curundo= NULL;
-
-
-static int read_undosave(UndoElem *uel)
-{
-       char scestr[FILE_MAXDIR+FILE_MAXFILE];
-       int success=0, fileflags;
-       
-       strcpy(scestr, G.sce);  /* temporal store */
-       fileflags= G.fileflags;
-       G.fileflags |= G_FILE_NO_UI;
-
-       if(UNDO_DISK) 
-               success= BKE_read_file(uel->str, NULL);
-       else
-               success= BKE_read_file_from_memfile(&uel->memfile);
-       
-       /* restore */
-       strcpy(G.sce, scestr);
-       G.fileflags= fileflags;
-
-       return success;
-}
-
-/* name can be a dynamic string */
-void BIF_write_undo(char *name)
-{
-       int nr, success;
-       UndoElem *uel;
-       
-       if( (U.uiflag & USER_GLOBALUNDO)==0) return;
-
-       /* remove all undos after (also when curundo==NULL) */
-       while(undobase.last != curundo) {
-               uel= undobase.last;
-               BLI_remlink(&undobase, uel);
-               BLO_free_memfile(&uel->memfile);
-               MEM_freeN(uel);
-       }
-       
-       /* make new */
-       curundo= uel= MEM_callocN(sizeof(UndoElem), "undo file");
-       strncpy(uel->name, name, MAXUNDONAME-1);
-       BLI_addtail(&undobase, uel);
-       
-       /* and limit amount to the maximum */
-       nr= 0;
-       uel= undobase.last;
-       while(uel) {
-               nr++;
-               if(nr==MAXUNDO) break;
-               uel= uel->prev;
-       }
-       if(uel) {
-               while(undobase.first!=uel) {
-                       UndoElem *first= undobase.first;
-                       BLI_remlink(&undobase, first);
-                       /* the merge is because of compression */
-                       BLO_merge_memfile(&first->memfile, &first->next->memfile);
-                       MEM_freeN(first);
-               }
-       }
-
-
-       /* disk save version */
-       if(UNDO_DISK) {
-               static int counter= 0;
-               char *err, tstr[FILE_MAXDIR+FILE_MAXFILE];
-               char numstr[32];
-               
-               /* calculate current filename */
-               counter++;
-               counter= counter % MAXUNDO;     
-       
-               sprintf(numstr, "%d.blend", counter);
-               BLI_make_file_string("/", tstr, U.tempdir, numstr);
-       
-               success= BLO_write_file(tstr, G.fileflags, &err);
-               
-               strcpy(curundo->str, tstr);
-       }
-       else {
-               MemFile *prevfile=NULL;
-               char *err;
-               
-               if(curundo->prev) prevfile= &(curundo->prev->memfile);
-               
-               success= BLO_write_file_mem(prevfile, &curundo->memfile, G.fileflags, &err);
-               
-       }
-}
-
-/* 1= an undo, -1 is a redo. we have to make sure 'curundo' remains at current situation */
-void BIF_undo_step(int step)
-{
-       
-       if(step==1) {
-               /* curundo should never be NULL, after restart or load file it should call undo_save */
-               if(curundo==NULL || curundo->prev==NULL) error("No undo available");
-               else {
-                       printf("undo %s\n", curundo->name);
-                       curundo= curundo->prev;
-                       read_undosave(curundo);
-               }
-       }
-       else {
-               
-               /* curundo has to remain current situation! */
-               
-               if(curundo==NULL || curundo->next==NULL) error("No redo available");
-               else {
-                       read_undosave(curundo->next);
-                       curundo= curundo->next;
-                       printf("redo %s\n", curundo->name);
-               }
-       }
-}
-
-void BIF_reset_undo(void)
-{
-       UndoElem *uel;
-       
-       uel= undobase.first;
-       while(uel) {
-               BLO_free_memfile(&uel->memfile);
-               uel= uel->next;
-       }
-       
-       BLI_freelistN(&undobase);
-       curundo= NULL;
-}
-
-
-