Removed draw_mode from SculptData, replaced with draw_flag, which currently controls whether to use partial redraw and whether to draw the brush circle. Added new menu option for display of brush circle.

This commit is contained in:
Nicholas Bishop 2007-01-14 04:55:51 +00:00
parent 8903169218
commit e835a0ea55
5 changed files with 51 additions and 64 deletions

@ -381,7 +381,7 @@ typedef struct SculptData
char averaging;
char draw_mode;
char draw_flag;
/* Control tablet input */
char tablet_size, tablet_strength;
@ -391,10 +391,6 @@ typedef struct SculptData
char symm;
} SculptData;
#define SCULPTREPT_DRAG 1
#define SCULPTREPT_TILE 2
#define SCULPTREPT_3D 3
typedef struct Scene {
ID id;
struct Object *camera;
@ -598,13 +594,20 @@ typedef struct Scene {
#define FFMPEG_MULTIPLEX_AUDIO 1
#define FFMPEG_AUTOSPLIT_OUTPUT 2
/* SculptData brushtype */
/* SculptData.brushtype */
#define DRAW_BRUSH 1
#define SMOOTH_BRUSH 2
#define PINCH_BRUSH 3
#define INFLATE_BRUSH 4
#define GRAB_BRUSH 5
#define LAYER_BRUSH 6
/* SculptData.texrept */
#define SCULPTREPT_DRAG 1
#define SCULPTREPT_TILE 2
#define SCULPTREPT_3D 3
/* SculptData.draw_flag */
#define SCULPTDRAW_FAST 1
#define SCULPTDRAW_BRUSH 2
#define SYMM_X 1
#define SYMM_Y 2

@ -2162,7 +2162,7 @@ static int draw_mesh_object(Base *base, int dt, int flag)
cageDM->release(cageDM);
finalDM->release(finalDM);
}
else if(!G.obedit && G.scene->sculptdata.draw_mode &&
else if(!G.obedit && (G.scene->sculptdata.draw_flag & SCULPTDRAW_FAST) &&
OBACT==ob && !sculpt_modifiers_active(ob)) {
sculptmode_draw_mesh(0);
}

@ -2830,7 +2830,8 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
pd->origloc[0]+200*cos(ang), pd->origloc[1]+200*sin(ang));
sdrawXORline(pd->origloc[0], pd->origloc[1], mouse[0], mouse[1]);
}
} else {
}
else if(sculpt_data()->draw_flag & SCULPTDRAW_BRUSH) {
short c[2];
getmouseco_areawin(c);
fdrawXORcirc((float)c[0], (float)c[1], sculptmode_brush()->size);

@ -4080,21 +4080,22 @@ void do_view3d_sculptmenu(void *arg, int event)
case 6:
br->dir= br->dir==1 ? 2 : 1; break;
case 7:
break; /* Remove */
case 8:
br->airbrush= !br->airbrush; break;
case 9:
case 8:
sd->symm ^= SYMM_X; break;
case 10:
case 9:
sd->symm ^= SYMM_Y; break;
case 11:
case 10:
sd->symm ^= SYMM_Z; break;
case 12:
case 11:
if(G.vd)
G.vd->pivot_last= !G.vd->pivot_last;
break;
case 12:
sd->draw_flag ^= SCULPTDRAW_FAST;
break;
case 13:
sd->draw_mode= !sd->draw_mode;
sd->draw_flag ^= SCULPTDRAW_BRUSH;
break;
case 14:
add_blockhandler(curarea, VIEW3D_HANDLER_OBJECT, UI_PNL_UNSTOW);
@ -4122,29 +4123,6 @@ uiBlock *view3d_sculpt_inputmenu(void *arg_unused)
return block;
}
/*static uiBlock *view3d_view_alignviewmenu(void *arg_unused)
{
block= uiNewBlock(&curarea->uiblocks, "view3d_view_alignviewmenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin);
uiBlockSetButmFunc(block, do_view3d_view_alignviewmenu, NULL);
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Center View to Cursor|C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 3, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Center Cursor and View All|Shift C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 6, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Align Active Camera to View|Ctrl Alt NumPad 0", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, "");
if (((G.obedit) && (G.obedit->type == OB_MESH)) || (G.f & G_FACESELECT)) {
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Align View to Selected (Top)|Shift V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 2, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Align View to Selected (Front)|Shift V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 1, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Align View to Selected (Side)|Shift V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, "");
} else {
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Align View to Selected|NumPad *", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 5, "");
}
uiBlockSetDirection(block, UI_RIGHT);
uiTextBoundsBlock(block, 50);
return block;
}*/
uiBlock *view3d_sculptmenu(void *arg_unused)
{
uiBlock *block;
@ -4159,15 +4137,16 @@ uiBlock *view3d_sculptmenu(void *arg_unused)
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
uiDefIconTextBlockBut(block, view3d_sculpt_inputmenu, NULL, ICON_RIGHTARROW_THIN, "Input Devices", 0, yco-=20, 120, 19, "");
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
uiDefIconTextBut(block, BUTM, 1, (sd->draw_mode ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Partial Redraw", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
uiDefIconTextBut(block, BUTM, 1, ((sd->draw_flag & SCULPTDRAW_BRUSH) ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Display Brush", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
uiDefIconTextBut(block, BUTM, 1, ((sd->draw_flag & SCULPTDRAW_FAST) ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Partial Redraw", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, "");
if(G.vd)
uiDefIconTextBut(block, BUTM, 1, (G.vd->pivot_last ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Pivot last", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 12, "");
uiDefIconTextBut(block, BUTM, 1, (G.vd->pivot_last ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Pivot last", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, "");
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
uiDefIconTextBut(block, BUTM, 1, (sd->symm & SYMM_Z ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Symmetry Z|Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, "");
uiDefIconTextBut(block, BUTM, 1, (sd->symm & SYMM_Y ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Symmetry Y|Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
uiDefIconTextBut(block, BUTM, 1, (sd->symm & SYMM_X ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Symmetry X|X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
uiDefIconTextBut(block, BUTM, 1, (sd->symm & SYMM_Z ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Symmetry Z|Z", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
uiDefIconTextBut(block, BUTM, 1, (sd->symm & SYMM_Y ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Symmetry Y|Y", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
uiDefIconTextBut(block, BUTM, 1, (sd->symm & SYMM_X ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Symmetry X|X", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
if(sd->brush_type!=GRAB_BRUSH)
uiDefIconTextBut(block, BUTM, 1, (br->airbrush ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Airbrush|A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
uiDefIconTextBut(block, BUTM, 1, (br->airbrush ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Airbrush|A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
if(sd->brush_type!=SMOOTH_BRUSH && sd->brush_type!=GRAB_BRUSH) {
uiDefIconTextBut(block, BUTM, 1, (br->dir==1 ? ICON_CHECKBOX_HLT : ICON_CHECKBOX_DEHLT), "Add|V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
}

@ -205,7 +205,7 @@ void sculptmode_init(Scene *sce)
sd->averaging= 1;
sd->texsep= 0;
sd->texrept= SCULPTREPT_DRAG;
sd->draw_mode= 0;
sd->draw_flag= SCULPTDRAW_BRUSH;
sd->tablet_size=3;
sd->tablet_strength=10;
}
@ -497,7 +497,7 @@ void sculptmode_undo_update(SculptUndoStep *newcur)
ss->undo->cur= newcur;
if(!sculpt_data()->draw_mode || sculpt_modifiers_active(ob))
if(!(sculpt_data()->draw_flag & SCULPTDRAW_FAST) || sculpt_modifiers_active(ob))
DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
if(G.vd->depths) G.vd->depths->damaged= 1;
@ -1605,6 +1605,7 @@ void sculptmode_propset_init(PropsetMode mode)
void sculpt_paint_brush(char clear)
{
if(sculpt_data()->draw_flag & SCULPTDRAW_BRUSH) {
static short mvalo[2];
short mval[2];
const short rad= sculptmode_brush()->size;
@ -1619,6 +1620,7 @@ void sculpt_paint_brush(char clear)
mvalo[0]= mval[0];
mvalo[1]= mval[1];
}
}
void sculptmode_propset(unsigned short event)
@ -1907,7 +1909,7 @@ void sculpt()
e.layer_store= NULL;
/* Capture original copy */
if(sd->draw_mode)
if(sd->draw_flag & SCULPTDRAW_FAST)
glAccum(GL_LOAD, 1);
while (get_mbut() & mousebut) {
@ -1954,7 +1956,7 @@ void sculpt()
if(modifier_calculations || ob_get_keyblock(ob))
DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
if(modifier_calculations || sd->brush_type == GRAB_BRUSH || !sd->draw_mode) {
if(modifier_calculations || sd->brush_type == GRAB_BRUSH || !(sd->draw_flag & SCULPTDRAW_FAST)) {
calc_damaged_verts(&damaged_verts,e.grabdata);
scrarea_do_windraw(curarea);
screen_swapbuffers();
@ -1997,9 +1999,11 @@ void sculpt()
glEnable(GL_SCISSOR_TEST);
/* Draw cursor */
if(sculpt_data()->draw_flag & SCULPTDRAW_BRUSH) {
persp(PERSP_WIN);
glDisable(GL_DEPTH_TEST);
fdrawXORcirc((float)mouse[0],(float)mouse[1],sculptmode_brush()->size);
}
myswapbuffers();
}