merge from trunk - r17500 to HEAD
authorCampbell Barton <ideasman42@gmail.com>
Wed, 10 Dec 2008 09:45:48 +0000 (09:45 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 10 Dec 2008 09:45:48 +0000 (09:45 +0000)
1  2 
source/blender/include/butspace.h
source/blender/src/buttons_editing.c
source/blender/src/space.c

Simple merge
index 3d8bdb749bc1356ccdb3c93cef8c298cb5938ec5,edf4660b71e3fadcb23b678e6e16f71fce1bfb30..65b992682de16134a624d6a0a84996524a33e615
@@@ -946,14 -902,14 +946,14 @@@ static void editing_panel_mesh_type(Obj
        uiBlockEndAlign(block);
  
        fdata= (G.obedit)? &G.editMesh->fdata: &me->fdata;
 -      yco= customdata_buttons(block, me, fdata, CD_MTFACE, &acttface, &acttface_rnd,
 -              B_SETTFACE, B_SETTFACE_RND, B_NEWTFACE, "UV Texture", "UV Texture:",
 -              "Set active UV texture", "Set rendering UV texture", "Creates a new UV texture layer",
 +      yco= customdata_buttons(block, me, fdata, CD_MTFACE, &acttface, &acttface_rnd, (G.f & G_TEXTUREPAINT ? &acttface_clone : NULL), (G.f & G_TEXTUREPAINT ? &acttface_mask : NULL),
 +              B_SETTFACE, B_SETTFACE_RND, B_SETTFACE_CLONE, B_SETTFACE_MASK, B_NEWTFACE, "UV Texture", "UV Texture:",
-               "Set active UV texture", "Set rendering UV texture", "Set the layer used for texturepaint cloning", "Set the layer used for texturepaint masking", "Creates a new UV texture layer",
++              "Set active UV texture", "Set rendering UV texture", "Set the layer used for texturepaint cloning", "Set the texture paint stencil layer", "Creates a new UV texture layer",
                "Removes the current UV texture layer", 190, 130);
  
 -      yco= customdata_buttons(block, me, fdata, CD_MCOL, &actmcol, &actmcol_rnd,
 -              B_SETMCOL, B_SETMCOL_RND, B_NEWMCOL, "Vertex Color", "Vertex Color:",
 -              "Sets active vertex color layer", "Sets rendering vertex color layer", "Creates a new vertex color layer",
 +      yco= customdata_buttons(block, me, fdata, CD_MCOL, &actmcol, &actmcol_rnd, NULL, NULL,
 +              B_SETMCOL, B_SETMCOL_RND, B_NOP, B_NOP, B_NEWMCOL, "Vertex Color", "Vertex Color:",
 +              "Sets active vertex color layer", "Sets rendering vertex color layer", "", "", "Creates a new vertex color layer",
                "Removes the current vertex color layer", 190, yco-5);
  
        if(yco < 0)
@@@ -6329,6 -6270,94 +6329,125 @@@ void weight_paint_buttons(uiBlock *bloc
        }
  }
  
 -      int yco, xco, butw;
+ void brush_buttons(uiBlock *block, short sima,
+               int evt_nop, int evt_change,
+               int evt_browse, int evt_local,
+               int evt_del, int evt_keepdata,
+               int evt_texbrowse, int evt_texdel)
+ {
+       ToolSettings *settings= G.scene->toolsettings;
+       Brush *brush= settings->imapaint.brush;
+       ID *id;
 -      uiDefButS(block, ROW, evt_change, "Draw",               0,              yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_DRAW, 0, 0, "Draw brush");
 -      uiDefButS(block, ROW, evt_change, "Soften",             butw,   yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SOFTEN, 0, 0, "Soften brush");
 -      uiDefButS(block, ROW, evt_change, "Smear",              butw*2, yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SMEAR, 0, 0, "Smear brush");
 -      if (sima)
 -              uiDefButS(block, ROW, evt_change, "Clone",      butw*3, yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_CLONE, 0, 0, "Clone brush, use RMB to drag source image");
++      int yco, xco, butw, but_idx;
+       short *menupoin = sima ? &(G.sima->menunr) : &(G.buts->menunr);
++      short do_project = settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE ? 0:1;
+       
+       yco= 160;
+       butw = sima ? 80 : 106;
+       
+       uiBlockBeginAlign(block);
 -
 -              uiDefButBitS(block, TOG|BIT, BRUSH_TORUS, evt_change, "Wrap",   xco+10,yco-25,butw,19, &brush->flag, 0, 0, 0, 0, "Enables torus wrapping");
 -
++      but_idx = 0;
++      uiDefButS(block, ROW, evt_change, "Draw",               butw*(but_idx++),yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_DRAW, 0, 0, "Draw brush");
++      if (sima || do_project==0)
++              uiDefButS(block, ROW, evt_change, "Soften",     butw*(but_idx++),       yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SOFTEN, 0, 0, "Soften brush");
++      uiDefButS(block, ROW, evt_change, "Smear",              butw*(but_idx++),       yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SMEAR, 0, 0, "Smear brush");
++      if (sima || do_project)
++              uiDefButS(block, ROW, evt_change, "Clone",      butw*(but_idx++),       yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_CLONE, 0, 0, "Clone brush, use RMB to drag source image");
+       
+       uiBlockEndAlign(block);
+       yco -= 30;
+        
+       uiBlockSetCol(block, TH_BUT_SETTING2);
+       id= (ID*)settings->imapaint.brush;
+       xco= std_libbuttons(block, 0, yco, 0, NULL, evt_browse, ID_BR, 0, id, NULL, menupoin, 0, evt_local, evt_del, 0, evt_keepdata);
+       uiBlockSetCol(block, TH_AUTO);
+       if(brush && !brush->id.lib) {
+               butw= 320-(xco+10);
+               uiDefButS(block, MENU, evt_nop, "Mix %x0|Add %x1|Subtract %x2|Multiply %x3|Lighten %x4|Darken %x5|Erase Alpha %x6|Add Alpha %x7", xco+10,yco,butw,19, &brush->blend, 0, 0, 0, 0, "Blending method for applying brushes");
 -              uiDefButBitS(block, TOG|BIT, BRUSH_AIRBRUSH, evt_change, "Airbrush",    xco+10,yco-50,butw,19, &brush->flag, 0, 0, 0, 0, "Keep applying paint effect while holding mouse (spray)");
 -              uiDefButF(block, NUM, evt_nop, "Rate ", xco+10,yco-70,butw,19, &brush->rate, 0.01, 1.0, 0, 0, "Number of paints per second for Airbrush");
++      
+               uiBlockBeginAlign(block);
 -
 -              yco -= 25;
 -
++              uiDefButBitS(block, TOG|BIT, BRUSH_AIRBRUSH, evt_change, "Airbrush",    xco+10,yco-25,butw/2,19, &brush->flag, 0, 0, 0, 0, "Keep applying paint effect while holding mouse (spray)");
++              uiDefButF(block, NUM, evt_nop, "", xco+10 + butw/2,yco-25,butw/2,19, &brush->rate, 0.01, 1.0, 0, 0, "Number of paints per second for Airbrush");
+               uiBlockEndAlign(block);
++              
++              if (sima) {
++                      uiDefButBitS(block, TOG|BIT, BRUSH_TORUS, evt_change, "Wrap",   xco+10,yco-45,butw,19, &brush->flag, 0, 0, 0, 0, "Enables torus wrapping");
++                      yco -= 25;
++              }
++              else {
++                      yco -= 25;
++                      uiBlockBeginAlign(block);
++                      uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_DISABLE, B_REDR, "Project Paint",      xco+10,yco-25,butw,19, &settings->imapaint.flag, 0, 0, 0, 0, "Use projection painting for improved consistency in the brush strokes");
++                      
++                      if ((settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE)==0) {
++                              
++                              
++                              /* Projection Painting */
++                              
++                              uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_XRAY, B_NOP, "Occlude",        xco+10,yco-45,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Only paint onto the faces directly under the brush (slower)");
++                              uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_BACKFACE, B_NOP, "Cull",       xco+10+butw/2,yco-45,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Ignore faces pointing away from the view (faster)");
++                              
++                              uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_FLAT, B_NOP, "Normal", xco+10,yco-65,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Paint most on faces pointing towards the view");
++                              uiDefButS(block, NUM, B_NOP, "", xco+10 +(butw/2),yco-65,butw/2,19, &settings->imapaint.normal_angle, 10.0, 90.0, 0, 0, "Paint most on faces pointing towards the view acording to this angle)");
++                              
++                              uiDefButS(block, NUM, B_NOP, "Bleed: ", xco+10,yco-85,butw,19, &settings->imapaint.seam_bleed, 0.0, 8.0, 0, 0, "Extend paint beyond the faces UVs to reduce seams (in pixels, slower)");
++                              uiBlockEndAlign(block);
++                              
++                              uiBlockBeginAlign(block);
++                              uiDefButBitS(block, TOG|BIT, IMAGEPAINT_PROJECT_LAYER_MASK, B_NOP, "Stencil Layer",     xco+10,yco-110,butw-30,19, &settings->imapaint.flag, 0, 0, 0, 0, "Set the mask layer from the UV layer buttons");
++                              uiDefButBitS(block, TOG|BIT, IMAGEPAINT_PROJECT_LAYER_MASK_INV, B_NOP, "Inv",   xco+10 + butw-30,yco-110,30,19, &settings->imapaint.flag, 0, 0, 0, 0, "Invert the mask");
++                              uiBlockEndAlign(block);
++                              
++                      }
++                      uiBlockEndAlign(block);
++              }
++              
+               uiBlockBeginAlign(block);
+               uiDefButF(block, COL, B_VPCOLSLI, "",                                   0,yco,200,19, brush->rgb, 0, 0, 0, 0, "");
+               uiDefButF(block, NUMSLI, evt_nop, "Opacity ",           0,yco-20,180,19, &brush->alpha, 0.0, 1.0, 0, 0, "The amount of pressure on the brush");
+               uiDefButBitS(block, TOG|BIT, BRUSH_ALPHA_PRESSURE, evt_nop, "P",        180,yco-20,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets");
+               uiDefButI(block, NUMSLI, evt_nop, "Size ",              0,yco-40,180,19, &brush->size, 1, 200, 0, 0, "The size of the brush");
+               uiDefButBitS(block, TOG|BIT, BRUSH_SIZE_PRESSURE, evt_nop, "P", 180,yco-40,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets");
+               uiDefButF(block, NUMSLI, evt_nop, "Falloff ",           0,yco-60,180,19, &brush->innerradius, 0.0, 1.0, 0, 0, "The fall off radius of the brush");
+               uiDefButBitS(block, TOG|BIT, BRUSH_RAD_PRESSURE, evt_nop, "P",  180,yco-60,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets");
+               uiDefButF(block, NUMSLI, evt_nop, "Spacing ",0,yco-80,180,19, &brush->spacing, 1.0, 100.0, 0, 0, "Repeating paint on %% of brush diameter");
+       uiDefButBitS(block, TOG|BIT, BRUSH_SPACING_PRESSURE, evt_nop, "P",      180,yco-80,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets");
+               uiBlockEndAlign(block);
+               yco -= 110;
+               if(sima && settings->imapaint.tool == PAINT_TOOL_CLONE) {
+                       id= (ID*)brush->clone.image;
+                       uiBlockSetCol(block, TH_BUT_SETTING2);
+                       xco= std_libbuttons(block, 0, yco, 0, NULL, B_SIMACLONEBROWSE, ID_IM, 0, id, 0, menupoin, 0, 0, B_SIMACLONEDELETE, 0, 0);
+                       uiBlockSetCol(block, TH_AUTO);
+                       if(id) {
+                               butw= 320-(xco+5);
+                               uiDefButF(block, NUMSLI, evt_change, "B ",xco+5,yco,butw,19, &brush->clone.alpha , 0.0, 1.0, 0, 0, "Opacity of clone image display");
+                       }
+               }
+               else {
+                       MTex *mtex= brush->mtex[brush->texact];
+                       
+                       uiBlockSetCol(block, TH_BUT_SETTING2);
+                       id= (mtex)? (ID*)mtex->tex: NULL;
+                       xco= std_libbuttons(block, 0, yco, 0, NULL, evt_texbrowse, ID_TE, 0, id, NULL, menupoin, 0, 0, evt_texdel, 0, 0);
+                       /*uiDefButBitS(block, TOG|BIT, BRUSH_FIXED_TEX, evt_change, "Fixed",    xco+5,yco,butw,19, &brush->flag, 0, 0, 0, 0, "Keep texture origin in fixed position");*/
+                       uiBlockSetCol(block, TH_AUTO);
+               }
+       }
+       
+ #if 0
+               uiDefButBitS(block, TOG|BIT, IMAGEPAINT_DRAW_TOOL_DRAWING, B_SIMABRUSHCHANGE, "TD", 0,1,50,19, &settings->imapaint.flag.flag, 0, 0, 0, 0, "Enables brush shape while drawing");
+               uiDefButBitS(block, TOG|BIT, IMAGEPAINT_DRAW_TOOL, B_SIMABRUSHCHANGE, "TP", 50,1,50,19, &settings->imapaint.flag.flag, 0, 0, 0, 0, "Enables brush shape while not drawing");
+ #endif
+ }
  static void editing_panel_mesh_paint(void)
  {
        uiBlock *block;
Simple merge