Revision: 17790
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17790
Author:   ton
Date:     2008-12-11 20:35:27 +0100 (Thu, 11 Dec 2008)

Log Message:
-----------
2.5

Today's progress; half working, but i better commit to prevent
conflicts tomorrow :)

- added storage for regions in spacedata
- added space switching (unfinished, gives mem-free errors)
- bugfix: icon of timewindow gave error on split-area
- cleaned interface_icons.c a bit, no warnings
- first work on space new() callbacks, they have to make regions too


NOTE: probably files saved with 2.5 crash now. Have to look at
patching this.

NOTE2: the Makefiles required libeditor screen twice... scons too?

Modified Paths:
--------------
    branches/blender2.5/blender/source/Makefile
    branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c
    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
    branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
    
branches/blender2.5/blender/source/blender/editors/interface/interface_icons.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c
    branches/blender2.5/blender/source/blender/editors/screen/space.c
    branches/blender2.5/blender/source/blender/editors/space_time/space_time.c
    branches/blender2.5/blender/source/blender/editors/space_time/time_header.c
    
branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_action_types.h
    branches/blender2.5/blender/source/blender/makesdna/DNA_sound_types.h
    branches/blender2.5/blender/source/blender/makesdna/DNA_space_types.h
    branches/blender2.5/blender/source/blender/makesdna/DNA_view3d_types.h

Modified: branches/blender2.5/blender/source/Makefile
===================================================================
--- branches/blender2.5/blender/source/Makefile 2008-12-11 15:38:16 UTC (rev 
17789)
+++ branches/blender2.5/blender/source/Makefile 2008-12-11 19:35:27 UTC (rev 
17790)
@@ -230,6 +230,7 @@
     COMLIB += $(NAN_OPENEXR_LIBS)
 endif
 
+# silly: libed_screen.a twice :(
 PULIB = $(NAN_MOTO)/lib/libmoto.a
 PULIB += $(NAN_ELBEEM)/lib/$(DEBUG_DIR)libelbeem.a
 PULIB += $(OCGDIR)/blender/readblenfile/$(DEBUG_DIR)libreadblenfile.a
@@ -241,6 +242,7 @@
 PULIB += $(OCGDIR)/blender/ed_util/libed_util.a
 PULIB += $(OCGDIR)/blender/ed_datafiles/libed_datafiles.a
 PULIB += $(OCGDIR)/blender/windowmanager/libwindowmanager.a
+PULIB += $(OCGDIR)/blender/ed_screen/libed_screen.a
 PULIB += $(OCGDIR)/blender/python/$(DEBUG_DIR)libpython.a
 PULIB += $(OCGDIR)/blender/makesrna/$(DEBUG_DIR)librna.a
 

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c       
2008-12-11 15:38:16 UTC (rev 17789)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c       
2008-12-11 19:35:27 UTC (rev 17790)
@@ -101,12 +101,17 @@
 void BKE_spacedata_freelist(ListBase *lb)
 {
        SpaceLink *sl;
+       ARegion *ar;
        
        for (sl= lb->first; sl; sl= sl->next) {
                SpaceType *st= BKE_spacetype_from_id(sl->spacetype);
                
                if(st && st->free) 
                        st->free(sl);
+               /* regions for pushed spaces */
+               for(ar=sl->regionbase.first; ar; ar=ar->next)
+                       BKE_area_region_free(ar);
+               BLI_freelistN(&sl->regionbase);
        }
        
        BLI_freelistN(lb);

Modified: 
branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c     
2008-12-11 15:38:16 UTC (rev 17789)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c     
2008-12-11 19:35:27 UTC (rev 17790)
@@ -5038,64 +5038,64 @@
        }
 }
 
-static void do_versions_windowmanager_2_50(bScreen *screen)
+/* 2.50 patch */
+static void area_add_header_region(ScrArea *sa, ListBase *lb)
 {
-       struct ScrArea *sa;
-       struct ARegion *ar;
+       ARegion *ar= MEM_callocN(sizeof(ARegion), "area region from 
do_versions");
        
-       /* add regions */
-       for(sa= screen->areabase.first; sa; sa= sa->next) {
-               /* we keep headertype variable to convert old files only */
-               if(sa->headertype) {
-                       ar= MEM_callocN(sizeof(ARegion), "area region from 
do_versions");
-                       BLI_addtail(&sa->regionbase, ar);
-                       ar->regiontype= RGN_TYPE_HEADER;
-                       if(sa->headertype==1)
-                               ar->alignment= RGN_ALIGN_BOTTOM;
-                       else
-                               ar->alignment= RGN_ALIGN_TOP;
-                       
-                       /* initialise view2d data for header region, to allow 
panning */
-                       ar->v2d.keepaspect= 1;
-                       ar->v2d.keepzoom = 
(V2D_LOCKZOOM_X|V2D_LOCKZOOM_Y|V2D_KEEPZOOM);
-                       ar->v2d.keepofs = V2D_LOCKOFS_Y;
-                       ar->v2d.keeptot = 2; // this keeps the view in place 
when region size changes...
-                       ar->v2d.align = V2D_ALIGN_NO_NEG_X;
-                       
-                       ar->v2d.minzoom= ar->v2d.maxzoom= 1.0f;
-                       
-                       ar->v2d.mask.xmin= ar->v2d.mask.ymin= 0;
-                       ar->v2d.mask.xmax= sa->winx;
-                       ar->v2d.mask.ymax= HEADERY;
-                       
-                       ar->v2d.cur.xmin= sa->headbutofs;
-                       ar->v2d.cur.xmax= sa->winx + sa->headbutofs;
-                       ar->v2d.tot.xmin= 0.0f;
-                       ar->v2d.tot.xmax= sa->headbutlen;
-                       
-                       if (ar->alignment == RGN_ALIGN_BOTTOM) {
-                               ar->v2d.align = V2D_ALIGN_NO_NEG_Y;
-                               ar->v2d.tot.ymin= ar->v2d.cur.ymin= 0.0f; // 
what was area->headrct.ymin?
-                               ar->v2d.tot.ymax= ar->v2d.cur.ymax= HEADERY;
-                       }
-                       else {
-                               // XXX what were the extents of the old headers?
-                               ar->v2d.align = V2D_ALIGN_NO_NEG_Y;
-                               ar->v2d.tot.ymin= ar->v2d.cur.ymin= 0.0f; // 
what was area->headrct.ymin?
-                               ar->v2d.tot.ymax= ar->v2d.cur.ymax= HEADERY;
-                       }
-               }
-               
-               ar= MEM_callocN(sizeof(ARegion), "area region from 
do_versions");
-               BLI_addtail(&sa->regionbase, ar);
-               ar->winrct= sa->totrct;
-               ar->regiontype= RGN_TYPE_WINDOW;
-               
+       BLI_addtail(lb, ar);
+       ar->regiontype= RGN_TYPE_HEADER;
+       if(sa->headertype==1)
+               ar->alignment= RGN_ALIGN_BOTTOM;
+       else
+               ar->alignment= RGN_ALIGN_TOP;
+       
+       /* initialise view2d data for header region, to allow panning */
+       ar->v2d.keepaspect= 1;
+       ar->v2d.keepzoom = (V2D_LOCKZOOM_X|V2D_LOCKZOOM_Y|V2D_KEEPZOOM);
+       ar->v2d.keepofs = V2D_LOCKOFS_Y;
+       ar->v2d.keeptot = 2; // this keeps the view in place when region size 
changes...
+       ar->v2d.align = V2D_ALIGN_NO_NEG_X;
+       
+       ar->v2d.minzoom= ar->v2d.maxzoom= 1.0f;
+       
+       ar->v2d.mask.xmin= ar->v2d.mask.ymin= 0;
+       ar->v2d.mask.xmax= sa->winx;
+       ar->v2d.mask.ymax= HEADERY;
+       
+       ar->v2d.cur.xmin= sa->headbutofs;
+       ar->v2d.cur.xmax= sa->winx + sa->headbutofs;
+       ar->v2d.tot.xmin= 0.0f;
+       ar->v2d.tot.xmax= sa->headbutlen;
+       
+       if (ar->alignment == RGN_ALIGN_BOTTOM) {
+               ar->v2d.align = V2D_ALIGN_NO_NEG_Y;
+               ar->v2d.tot.ymin= ar->v2d.cur.ymin= 0.0f; // what was 
area->headrct.ymin?
+               ar->v2d.tot.ymax= ar->v2d.cur.ymax= HEADERY;
+       }
+       else {
+               // XXX what were the extents of the old headers?
+               ar->v2d.align = V2D_ALIGN_NO_NEG_Y;
+               ar->v2d.tot.ymin= ar->v2d.cur.ymin= 0.0f; // what was 
area->headrct.ymin?
+               ar->v2d.tot.ymax= ar->v2d.cur.ymax= HEADERY;
+       }
+}
+
+/* 2.50 patch */
+static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb)
+{
+       ARegion *ar= MEM_callocN(sizeof(ARegion), "area region from 
do_versions");
+       
+       BLI_addtail(lb, ar);
+       ar->winrct= sa->totrct;
+       ar->regiontype= RGN_TYPE_WINDOW;
+       
+       if(sl) {
                /* if active spacetype has view2d data, copy that over to main 
region */
-               switch(sa->spacetype) {
+               switch(sl->spacetype) {
                        case SPACE_OOPS:
                        {
-                               SpaceOops *soops= sa->spacedata.first;
+                               SpaceOops *soops= (SpaceOops *)sl;
                                
                                memcpy(&ar->v2d, &soops->v2d, sizeof(View2D));
                                
@@ -5107,7 +5107,7 @@
                                break;
                        case SPACE_TIME:
                        {
-                               SpaceTime *stime= sa->spacedata.first;
+                               SpaceTime *stime= (SpaceTime *)sl;
                                memcpy(&ar->v2d, &stime->v2d, sizeof(View2D));
                                
                                ar->v2d.scroll |= 
(V2D_SCROLL_BOTTOM|V2D_SCROLL_SCALE_BOTTOM);
@@ -5115,13 +5115,49 @@
                                ar->v2d.keepofs |= V2D_LOCKOFS_Y;
                        }
                                break;
-                       //case SPACE_XXX: // FIXME... add other ones
-                       //      memcpy(&ar->v2d, &((SpaceXxx 
*)sa->spacedata.first)->v2d, sizeof(View2D));
-                       //      break;
+                               //case SPACE_XXX: // FIXME... add other ones
+                               //      memcpy(&ar->v2d, &((SpaceXxx 
*)sl)->v2d, sizeof(View2D));
+                               //      break;
                }
+               /* further subdivision case, channels for ipo action nla... */
+               switch(sl->spacetype) {
+                       case SPACE_IPO:
+                               break;
+                       case SPACE_ACTION:
+                               break;
+                       case SPACE_NLA:
+                               break;
+               }
        }
 }
 
+static void do_versions_windowmanager_2_50(bScreen *screen)
+{
+       ScrArea *sa;
+       ARegion *ar;
+       SpaceLink *sl;
+       
+       /* add regions */
+       for(sa= screen->areabase.first; sa; sa= sa->next) {
+               
+               /* we keep headertype variable to convert old files only */
+               if(sa->headertype)
+                       area_add_header_region(sa, &sa->regionbase);
+               
+               area_add_window_regions(sa, sa->spacedata.first, 
&sa->regionbase);
+               
+               /* pushed back spaces also need regions! */
+               if(sa->spacedata.first) {
+                       sl= sa->spacedata.first;
+                       for(sl= sl->next; sl; sl= sl->next) {
+                               if(sa->headertype)
+                                       area_add_header_region(sa, 
&sl->regionbase);
+                               area_add_window_regions(sa, sl, 
&sl->regionbase);
+                       }
+               }
+       }
+}
+
 static void do_versions(FileData *fd, Library *lib, Main *main)
 {
        /* WATCH IT!!!: pointers from libdata have not been converted */
@@ -8157,6 +8193,7 @@
                        do_versions_windowmanager_2_50(screen);
        }
        
+       
        /* WATCH IT!!!: pointers from libdata have not been converted yet here! 
*/
        /* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */
 

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_screen.h      
2008-12-11 15:38:16 UTC (rev 17789)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_screen.h      
2008-12-11 19:35:27 UTC (rev 17790)
@@ -51,6 +51,7 @@
 void   ED_spacetypes_init(void);
 void   ED_spacetypes_keymap(struct wmWindowManager *wm);
 struct ARegionType *ED_regiontype_from_id(struct SpaceType *st, int regionid);
+void   ED_newspace(struct ScrArea *sa, int type);
 
 /* areas */
 void   ED_area_initialize(struct wmWindowManager *wm, struct wmWindow *win, 
struct ScrArea *sa);

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_icons.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_icons.c  
    2008-12-11 15:38:16 UTC (rev 17789)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_icons.c  
    2008-12-11 19:35:27 UTC (rev 17790)
@@ -98,8 +98,6 @@
 static struct ListBase iconfilelist = {0, 0};
 
 
-static int preview_render_size(int miplevel);
-
 /* **************************************************** */
 
 static void def_internal_icon(ImBuf *bbuf, int icon_id, int xofs, int yofs)
@@ -684,6 +682,7 @@
        init_internal_icons();
 }
 
+#if 0
 static void icon_copy_rect(ImBuf *ibuf, unsigned int w, unsigned int h, 
unsigned int *rect)
 {
        struct ImBuf *ima;
@@ -734,6 +733,16 @@
        IMB_freeImBuf(ima);
 }
 
+/* Render size for preview images at level miplevel */
+static int preview_render_size(int miplevel)
+{
+       switch (miplevel) {
+               case 0: return 32;
+               case 1: return PREVIEW_DEFAULT_HEIGHT;
+       }
+       return 0;
+}
+
 static void icon_create_mipmap(struct PreviewImage* prv_img, int miplevel) 
 {
        unsigned int size = preview_render_size(miplevel);
@@ -794,6 +803,7 @@
                }
        }
 }
+#endif
 
 /* only called when icon has changed */
 /* only call with valid pointer from UI_icon_draw */
@@ -881,16 +891,6 @@
                glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, rect);
 }
 
-/* Render size for preview images at level miplevel */
-static int preview_render_size(int miplevel)
-{
-       switch (miplevel) {
-               case 0: return 32;
-               case 1: return PREVIEW_DEFAULT_HEIGHT;
-       }
-       return 0;
-}
-
 /* Drawing size for preview images at level miplevel */
 static int preview_size(int miplevel)
 {
@@ -977,7 +977,6 @@
 
 void UI_icon_draw_aspect_blended(float x, float y, int icon_id, float aspect, 
int shade)
 {
-       
        if(shade < 0) {
                float r= (128+shade)/128.0f;
                glPixelTransferf(GL_ALPHA_SCALE, r);

Modified: 
branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to