Revision: 19074
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19074
Author:   ton
Date:     2009-02-21 19:33:09 +0100 (Sat, 21 Feb 2009)

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

Useful goodies: most buttons for Image window back.
Not every button works! But what you can do:

- press Nkey to show/hide options
- use curves, with realtime updating
- image properties panel, load, browsing layers,
  setting types
- paint panel
- plus new paint color picker panel! (why it wasn't
  there in 2.4x is probably obvious, but now it can!)

Hrm... radial control should be added here too, and a nice
paint size cursor?

Modified Paths:
--------------
    
branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c
    branches/blender2.5/blender/source/blender/editors/space_graph/space_graph.c
    
branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h
    branches/blender2.5/blender/source/blender/editors/space_image/image_ops.c
    
branches/blender2.5/blender/source/blender/editors/space_image/image_panels.c
    branches/blender2.5/blender/source/blender/editors/space_image/space_image.c
    branches/blender2.5/blender/source/blender/editors/space_node/node_edit.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
    
branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c  
    2009-02-21 15:31:01 UTC (rev 19073)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c  
    2009-02-21 18:33:09 UTC (rev 19074)
@@ -243,7 +243,7 @@
 
 void uiNewPanelHeight(uiBlock *block, int sizey)
 {
-       if(sizey<64) sizey= 64;
+       if(sizey<0) sizey= 0;
        
        if(block->panel) {
                block->panel->ofsy+= (block->panel->sizey - sizey);

Modified: 
branches/blender2.5/blender/source/blender/editors/space_graph/space_graph.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/space_graph/space_graph.c    
    2009-02-21 15:31:01 UTC (rev 19073)
+++ 
branches/blender2.5/blender/source/blender/editors/space_graph/space_graph.c    
    2009-02-21 18:33:09 UTC (rev 19074)
@@ -337,6 +337,8 @@
        
        UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST_UI, ar->winx, 
ar->winy);
 
+       keymap= WM_keymap_listbase(wm, "View2D Buttons List", 0, 0);
+       WM_event_add_keymap_handler(&ar->handlers, keymap);
        keymap= WM_keymap_listbase(wm, "GraphEdit Generic", SPACE_IPO, 0);
        WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, 
&ar->winrct);
 }
@@ -567,7 +569,7 @@
        art= MEM_callocN(sizeof(ARegionType), "spacetype graphedit region");
        art->regionid = RGN_TYPE_UI;
        art->minsizey= 160;
-       art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+       art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES;
        art->listener= NULL; // graph_region_listener;
        art->init= graph_buttons_area_init;
        art->draw= graph_buttons_area_draw;

Modified: 
branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h   
    2009-02-21 15:31:01 UTC (rev 19073)
+++ 
branches/blender2.5/blender/source/blender/editors/space_image/image_intern.h   
    2009-02-21 18:33:09 UTC (rev 19074)
@@ -39,6 +39,7 @@
 struct ImBuf;
 struct wmOperatorType;
 struct Scene;
+struct bNodeTree;
 
 /* space_image.c */
 struct ARegion *image_has_buttons_region(struct ScrArea *sa);
@@ -82,6 +83,7 @@
 void draw_uvedit_main(struct SpaceImage *sima, struct ARegion *ar, struct 
Scene *scene, struct Object *obedit);
 
 /* image_panels.c */
+struct ImageUser *ntree_get_active_iuser(struct bNodeTree *ntree);
 void image_buttons_area_defbuts(const struct bContext *C, struct ARegion *ar);
 void IMAGE_OT_properties(struct wmOperatorType *ot);
 

Modified: 
branches/blender2.5/blender/source/blender/editors/space_image/image_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_image/image_ops.c  
2009-02-21 15:31:01 UTC (rev 19073)
+++ branches/blender2.5/blender/source/blender/editors/space_image/image_ops.c  
2009-02-21 18:33:09 UTC (rev 19074)
@@ -621,7 +621,6 @@
 
        RNA_string_get(op->ptr, "filename", str);
        ima= BKE_add_image_file(str, scene->r.cfra);
-       MEM_freeN(str);
 
        if(!ima)
                return OPERATOR_CANCELLED;

Modified: 
branches/blender2.5/blender/source/blender/editors/space_image/image_panels.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/space_image/image_panels.c   
    2009-02-21 15:31:01 UTC (rev 19073)
+++ 
branches/blender2.5/blender/source/blender/editors/space_image/image_panels.c   
    2009-02-21 18:33:09 UTC (rev 19074)
@@ -29,13 +29,17 @@
 #include <string.h>
 #include <stdio.h>
 
+#include "DNA_color_types.h"
 #include "DNA_image_types.h"
 #include "DNA_mesh_types.h"
 #include "DNA_meshdata_types.h"
 #include "DNA_object_types.h"
+#include "DNA_packedFile_types.h"
+#include "DNA_node_types.h"
 #include "DNA_space_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_screen_types.h"
+#include "DNA_userdef_types.h"
 
 #include "MEM_guardedalloc.h"
 
@@ -46,10 +50,18 @@
 
 #include "BKE_colortools.h"
 #include "BKE_context.h"
+#include "BKE_customdata.h"
 #include "BKE_image.h"
+#include "BKE_global.h"
+#include "BKE_library.h"
+#include "BKE_main.h"
+#include "BKE_node.h"
+#include "BKE_packedfile.h"
 #include "BKE_screen.h"
 #include "BKE_utildefines.h"
 
+#include "RE_pipeline.h"
+
 #include "IMB_imbuf.h"
 #include "IMB_imbuf_types.h"
 
@@ -58,6 +70,7 @@
 #include "ED_space_api.h"
 #include "ED_screen.h"
 #include "ED_uvedit.h"
+#include "ED_util.h"
 
 #include "BIF_gl.h"
 #include "BIF_glutil.h"
@@ -73,21 +86,140 @@
 
 #include "image_intern.h"
 
+#define B_REDR                         1
+#define B_IMAGECHANGED         2
+#define B_TRANS_IMAGE          3
+#define B_CURSOR_IMAGE         4
+#define B_NOP                          0
+#define B_TWINANIM                     5
+#define B_SIMAGETILE           6
+#define B_IDNAME                       10
+#define B_FACESEL_PAINT_TEST   11
+#define B_SIMA_RECORD          12
+#define B_SIMA_PLAY                    13
+#define B_SIMARANGE                    14
+#define B_SIMACURVES           15
 
-#if 0
+#define B_SIMANOTHING          16
+#define B_SIMABRUSHCHANGE      17      
+#define B_SIMABRUSHBROWSE      18
+#define B_SIMABRUSHLOCAL       19
+#define B_SIMABRUSHDELETE      20
+#define B_KEEPDATA                     21
+#define B_SIMABTEXBROWSE       22
+#define B_SIMABTEXDELETE       23
+#define B_VPCOLSLI                     24
+#define B_SIMACLONEBROWSE      25
+#define B_SIMACLONEDELETE      26
 
+/* XXX */
+static int okee() {return 0;}
+static int simaFaceDraw_Check() {return 0;}
+static int simaUVSel_Check() {return 0;}
+static int is_uv_tface_editing_allowed_silent() {return 0;}
+/* XXX */
+
+/* proto */
+static void image_editvertex_buts(const bContext *C, uiBlock *block);
+static void image_editcursor_buts(const bContext *C, View2D *v2d, uiBlock 
*block);
+
+
+static void do_image_panel_events(bContext *C, void *arg, int event)
+{
+       SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
+       ARegion *ar= CTX_wm_region(C);
+       
+       switch(event) {
+               case B_REDR:
+                       break;
+               case B_SIMACURVES:
+                       curvemapping_do_ibuf(sima->cumap, 
ED_space_image_buffer(sima));
+                       break;
+               case B_SIMARANGE:
+                       curvemapping_set_black_white(sima->cumap, NULL, NULL);
+                       curvemapping_do_ibuf(sima->cumap, 
ED_space_image_buffer(sima));
+                       break;
+               case B_TRANS_IMAGE:
+                       image_editvertex_buts(C, NULL);
+                       break;
+               case B_CURSOR_IMAGE:
+                       image_editcursor_buts(C, &ar->v2d, NULL);
+                       break;
+       }
+       /* all events now */
+       WM_event_add_notifier(C, NC_IMAGE, sima->image);
+}
+
+
+
+static void image_info(Image *ima, ImBuf *ibuf, char *str)
+{
+       int ofs= 0;
+       
+       str[0]= 0;
+       
+       if(ima==NULL) return;
+       if(ibuf==NULL) {
+               sprintf(str, "Can not get an image");
+               return;
+       }
+       
+       if(ima->source==IMA_SRC_MOVIE) {
+               ofs= sprintf(str, "Movie ");
+               if(ima->anim) 
+                       ofs+= sprintf(str+ofs, "%d frs", 
IMB_anim_get_duration(ima->anim));
+       }
+       else
+               ofs= sprintf(str, "Image ");
+       
+       ofs+= sprintf(str+ofs, ": size %d x %d,", ibuf->x, ibuf->y);
+       
+       if(ibuf->rect_float) {
+               if(ibuf->channels!=4) {
+                       sprintf(str+ofs, "%d float channel(s)", ibuf->channels);
+               }
+               else if(ibuf->depth==32)
+                       strcat(str, " RGBA float");
+               else
+                       strcat(str, " RGB float");
+       }
+       else {
+               if(ibuf->depth==32)
+                       strcat(str, " RGBA byte");
+               else
+                       strcat(str, " RGB byte");
+       }
+       if(ibuf->zbuf || ibuf->zbuf_float)
+               strcat(str, " + Z");
+       
+}
+
+/* gets active viewer user */
+struct ImageUser *ntree_get_active_iuser(bNodeTree *ntree)
+{
+       bNode *node;
+       
+       if(ntree)
+               for(node= ntree->nodes.first; node; node= node->next)
+                       if( ELEM(node->type, CMP_NODE_VIEWER, 
CMP_NODE_SPLITVIEWER)) 
+                               if(node->flag & NODE_DO_OUTPUT)
+                                       return node->storage;
+       return NULL;
+}
+
+
 /* ************ panel stuff ************* */
 
 /* this function gets the values for cursor and vertex number buttons */
-static void image_transform_but_attr(int *imx, int *imy, int *step, int 
*digits) /*, float *xcoord, float *ycoord)*/
+static void image_transform_but_attr(SpaceImage *sima, int *imx, int *imy, int 
*step, int *digits) /*, float *xcoord, float *ycoord)*/
 {
-       ImBuf *ibuf= imagewindow_get_ibuf(G.sima);
+       ImBuf *ibuf= ED_space_image_buffer(sima);
        if(ibuf) {
                *imx= ibuf->x;
                *imy= ibuf->y;
        }
        
-       if (G.sima->flag & SI_COORDFLOATS) {
+       if (sima->flag & SI_COORDFLOATS) {
                *step= 1;
                *digits= 3;
        }
@@ -99,20 +231,25 @@
 
 
 /* is used for both read and write... */
-void image_editvertex_buts(uiBlock *block)
+static void image_editvertex_buts(const bContext *C, uiBlock *block)
 {
+       SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
+       Object *obedit= CTX_data_edit_object(C);
        static float ocent[2];
        float cent[2]= {0.0, 0.0};
        int imx= 256, imy= 256;
        int nactive= 0, step, digits;
-       EditMesh *em = G.editMesh;
+       EditMesh *em;
        EditFace *efa;
        MTFace *tf;
        
+       if(obedit==NULL || obedit->type!=OB_MESH) return;
+       
        if( is_uv_tface_editing_allowed_silent()==0 ) return;
        
-       image_transform_but_attr(&imx, &imy, &step, &digits);
+       image_transform_but_attr(sima, &imx, &imy, &step, &digits);
        
+       em= ((Mesh *)obedit->data)->edit_mesh;
        for (efa= em->faces.first; efa; efa= efa->next) {
                tf= CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
                if (simaFaceDraw_Check(efa, tf)) {
@@ -144,7 +281,7 @@
                if (nactive) {
                        ocent[0]= cent[0]/nactive;
                        ocent[1]= cent[1]/nactive;
-                       if (G.sima->flag & SI_COORDFLOATS) {
+                       if (sima->flag & SI_COORDFLOATS) {
                        } else {
                                ocent[0] *= imx;
                                ocent[1] *= imy;
@@ -168,7 +305,7 @@
                cent[0]= cent[0]/nactive;
                cent[1]= cent[1]/nactive;
                        
-               if (G.sima->flag & SI_COORDFLOATS) {
+               if (sima->flag & SI_COORDFLOATS) {
                        delta[0]= ocent[0]-cent[0];
                        delta[1]= ocent[1]-cent[1];
                }
@@ -198,28 +335,28 @@
                                }
                        }
                }
-                       
-               allqueue(REDRAWVIEW3D, 0);
-               allqueue(REDRAWIMAGE, 0);
+               
+               WM_event_add_notifier(C, NC_IMAGE, sima->image);
        }
 }
 
 
 /* is used for both read and write... */
-void image_editcursor_buts(uiBlock *block)
+static void image_editcursor_buts(const bContext *C, View2D *v2d, uiBlock 
*block)
 {
+       SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
        static float ocent[2];
        int imx= 256, imy= 256;
        int step, digits;
        
        if( is_uv_tface_editing_allowed_silent()==0 ) return;
        
-       image_transform_but_attr(&imx, &imy, &step, &digits);
+       image_transform_but_attr(sima, &imx, &imy, &step, &digits);
                
        if(block) {     // do the buttons
-               ocent[0]= G.v2d->cursor[0];
-               ocent[1]= G.v2d->cursor[1];
-               if (G.sima->flag & SI_COORDFLOATS) {
+               ocent[0]= v2d->cursor[0];
+               ocent[1]= v2d->cursor[1];
+               if (sima->flag & SI_COORDFLOATS) {
                } else {
                        ocent[0] *= imx;
                        ocent[1] *= imy;
@@ -231,169 +368,285 @@

@@ 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