diff options
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 24 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_view3d_types.h | 9 | ||||
-rw-r--r-- | source/blender/src/drawview.c | 197 | ||||
-rw-r--r-- | source/blender/src/space.c | 4 |
4 files changed, 182 insertions, 52 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 701d621bafc..99d0a9df7ee 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -3975,6 +3975,30 @@ static void do_versions(Main *main) } wrld= wrld->id.next; } + + /* new bit flags for showing/hiding grid floor and axes */ + bScreen *sc = main->screen.first; + while(sc) { + ScrArea *sa= sc->areabase.first; + while(sa) { + SpaceLink *sl= sa->spacedata.first; + while (sl) { + if (sl->spacetype==SPACE_VIEW3D) { + View3D *v3d= (View3D*) sl; + + if (v3d->gridflag==0) { + v3d->gridflag |= V3D_SHOW_X; + v3d->gridflag |= V3D_SHOW_Y; + v3d->gridflag |= V3D_SHOW_FLOOR; + v3d->gridflag &= ~V3D_SHOW_Z; + } + } + sl= sl->next; + } + sa= sa->next; + } + sc= sc->id.next; + } } /* don't forget to set version number in blender.c! */ } diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h index 2acfdac7103..ac867c315b1 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -104,7 +104,8 @@ typedef struct View3D { short mxo, myo; short gridlines, viewbut; - short modeselect, menunr, texnr, pad1; + short gridflag; + short modeselect, menunr, texnr; } View3D; /* View3D->flag */ @@ -131,5 +132,11 @@ typedef struct View3D { #define V3D_PERSP_DO_3D_PERSP 1 #define V3D_PERSP_USE_THE_CAMERA 2 +/* View3d->gridflag */ +#define V3D_SHOW_FLOOR 1 +#define V3D_SHOW_X 2 +#define V3D_SHOW_Y 4 +#define V3D_SHOW_Z 8 + #endif diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c index ab2695d725d..9f130f64195 100644 --- a/source/blender/src/drawview.c +++ b/source/blender/src/drawview.c @@ -621,7 +621,8 @@ static void drawfloor(void) float vert[3], grid; int a, gridlines; char col[3], col2[3]; - + short draw_line = 0; + vd= curarea->spacedata.first; vert[2]= 0.0; @@ -633,43 +634,97 @@ static void drawfloor(void) BIF_GetThemeColor3ubv(TH_GRID, col); + /* draw the Y axis and/or grid lines */ for(a= -gridlines;a<=gridlines;a++) { - if(a==0) { - make_axis_color(col, col2, 'y'); - glColor3ubv(col2); - } - else if( (a % 10)==0) { - BIF_ThemeColorShade(TH_GRID, -10); + /* check for the 'show Y axis' preference */ + if (vd->gridflag & V3D_SHOW_Y) { + make_axis_color(col, col2, 'y'); + glColor3ubv(col2); + + draw_line = 1; + } else if (vd->gridflag & V3D_SHOW_FLOOR) { + BIF_ThemeColorShade(TH_GRID, -10); + } else { + draw_line = 0; + } + } else { + /* check for the 'show grid floor' preference */ + if (vd->gridflag & V3D_SHOW_FLOOR) { + if( (a % 10)==0) { + BIF_ThemeColorShade(TH_GRID, -10); + } + else BIF_ThemeColorShade(TH_GRID, 10); + + draw_line = 1; + } else { + draw_line = 0; + } } - else BIF_ThemeColorShade(TH_GRID, 10); - - glBegin(GL_LINE_STRIP); - vert[0]= a*vd->grid; - vert[1]= grid; - glVertex3fv(vert); - vert[1]= -grid; - glVertex3fv(vert); - glEnd(); + if (draw_line) { + glBegin(GL_LINE_STRIP); + vert[0]= a*vd->grid; + vert[1]= grid; + glVertex3fv(vert); + vert[1]= -grid; + glVertex3fv(vert); + glEnd(); + } } + /* draw the X axis and/or grid lines */ for(a= -gridlines;a<=gridlines;a++) { if(a==0) { - make_axis_color(col, col2, 'x'); - glColor3ubv(col2); + /* check for the 'show X axis' preference */ + if (vd->gridflag & V3D_SHOW_X) { + make_axis_color(col, col2, 'x'); + glColor3ubv(col2); + + draw_line = 1; + } else if (vd->gridflag & V3D_SHOW_FLOOR) { + BIF_ThemeColorShade(TH_GRID, -10); + } else { + draw_line = 0; + } + } else { + /* check for the 'show grid floor' preference */ + if (vd->gridflag & V3D_SHOW_FLOOR) { + if( (a % 10)==0) { + BIF_ThemeColorShade(TH_GRID, -10); + } + else BIF_ThemeColorShade(TH_GRID, 10); + + draw_line = 1; + } else { + draw_line = 0; + } } - else if( (a % 10)==0) { - BIF_ThemeColorShade(TH_GRID, -10); + + if (draw_line) { + glBegin(GL_LINE_STRIP); + vert[1]= a*vd->grid; + vert[0]= grid; + glVertex3fv(vert ); + vert[0]= -grid; + glVertex3fv(vert); + glEnd(); } - else BIF_ThemeColorShade(TH_GRID, 10); + } + /* draw the Z axis line */ + /* check for the 'show Z axis' preference */ + if (vd->gridflag & V3D_SHOW_Z) { + make_axis_color(col, col2, 'z'); + glColor3ubv(col2); + glBegin(GL_LINE_STRIP); - vert[1]= a*vd->grid; - vert[0]= grid; - glVertex3fv(vert ); - vert[0]= -grid; - glVertex3fv(vert); + vert[0]= 0; + vert[1]= 0; + vert[2]= grid; + glVertex3fv(vert ); + vert[2]= -grid; + glVertex3fv(vert); glEnd(); } @@ -1417,7 +1472,7 @@ static void view3d_panel_background(cntrl) // VIEW3D_HANDLER_BACKGROUND block= uiNewBlock(&curarea->uiblocks, "view3d_panel_background", UI_EMBOSS, UI_HELV, curarea->win); uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl); uiSetPanelHandler(VIEW3D_HANDLER_BACKGROUND); // for close and esc - if(uiNewPanel(curarea, block, "Background", "View3d", 340, 10, 318, 204)==0) return; + if(uiNewPanel(curarea, block, "Background Image", "View3d", 340, 10, 318, 204)==0) return; if(vd->flag & V3D_DISPBGPIC) { if(vd->bgpic==0) { @@ -1426,43 +1481,73 @@ static void view3d_panel_background(cntrl) // VIEW3D_HANDLER_BACKGROUND vd->bgpic->blend= 0.5; } } - uiDefButS(block, TOG|BIT|1, REDRAWVIEW3D, "BackGroundPic", 10,160,150,20 , &vd->flag, 0, 0, 0, 0, "Display a picture in the 3D background"); - if(vd->bgpic) { - - uiDefButF(block, NUM, REDRAWVIEW3D, "Size:", 160,160,150,20, &vd->bgpic->size, 0.1, 250.0, 100, 0, "Set the size for the width of the BackGroundPic"); + uiDefButBitS(block, TOG, V3D_DISPBGPIC, REDRAWVIEW3D, "Use Background Image", 0, 162, 200, 20, &vd->flag, 0, 0, 0, 0, "Display an image in the background of the 3D View"); + + uiDefBut(block, LABEL, 1, " ", 206, 162, 84, 20, NULL, 0.0, 0.0, 0, 0, ""); + + + if(vd->flag & V3D_DISPBGPIC) { + + /* Background Image */ + uiDefBut(block, LABEL, 1, "Image:", 0, 128, 76, 19, NULL, 0.0, 0.0, 0, 0, ""); + uiBlockBeginAlign(block); + uiDefIconBut(block, BUT, B_LOADBGPIC, ICON_FILESEL, 90, 128, 20, 20, 0, 0, 0, 0, 0, "Open a new background image"); + id= (ID *)vd->bgpic->ima; IDnames_to_pupstring(&strp, NULL, NULL, &(G.main->image), id, &(vd->menunr)); if(strp[0]) { - uiBlockBeginAlign(block); - uiDefButS(block, MENU, B_BGPICBROWSE, strp, 10,130,20,20, &(vd->menunr), 0, 0, 0, 0, "Browse"); + + uiDefButS(block, MENU, B_BGPICBROWSE, strp, 110, 128, 20, 20, &(vd->menunr), 0, 0, 0, 0, "Select a background image"); if(vd->bgpic->ima) { - uiDefBut(block, TEX, 0,"BGpic: ", 30,130,260,20,&vd->bgpic->ima->name,0.0,100.0, 0, 0, "The Selected BackGroundPic"); - uiDefIconBut(block, BUT, B_BGPICCLEAR, ICON_X, 290,130,20,20, 0, 0, 0, 0, 0, "Remove background image link"); + uiDefBut(block, TEX, 0,"BG: ", 130, 128, 140, 20, &vd->bgpic->ima->name,0.0,100.0, 0, 0, "The currently selected background image"); + uiDefIconBut(block, BUT, B_BGPICCLEAR, ICON_X, 270, 128, 20, 20, 0, 0, 0, 0, 0, "Remove background image link"); } uiBlockEndAlign(block); + } else { + uiBlockEndAlign(block); } MEM_freeN(strp); - uiDefBut(block, BUT, B_LOADBGPIC, "LOAD", 10,100,100,20, 0, 0, 0, 0, 0, "Specify the BackGroundPic"); - uiDefButF(block, NUMSLI, B_BLENDBGPIC, "Blend:", 120,100,190,20,&vd->bgpic->blend, 0.0,1.0, 0, 0, "Set the BackGroundPic transparency"); - - uiDefButF(block, NUM, B_DIFF, "Center X: ", 10,70,140,20,&vd->bgpic->xof, -20.0,20.0, 10, 2, "Set the BackGroundPic X Offset"); - uiDefButF(block, NUM, B_DIFF, "Center Y: ", 160,70,140,20,&vd->bgpic->yof, -20.0,20.0, 10, 2, "Set the BackGroundPic Y Offset"); - /* texture block: */ + /* Background texture */ + uiDefBut(block, LABEL, 1, "Texture:", 0, 100, 76, 19, NULL, 0.0, 0.0, 0, 0, ""); + id= (ID *)vd->bgpic->tex; IDnames_to_pupstring(&strp, NULL, NULL, &(G.main->tex), id, &(vd->texnr)); - if (strp[0]) - uiDefButS(block, MENU, B_BGPICTEX, strp, 10, 50, 20,20, &(vd->texnr), 0, 0, 0, 0, "Select texture for animated backgroundimage"); + if (strp[0]) + uiBlockBeginAlign(block); + uiDefButS(block, MENU, B_BGPICTEX, strp, 90, 100, 20,20, &(vd->texnr), 0, 0, 0, 0, "Select a texture to use as an animated background image"); MEM_freeN(strp); if (id) { - uiDefBut(block, TEX, B_IDNAME, "TE:", 30,50,260,20, id->name+2, 0.0, 18.0, 0, 0, ""); - uiDefIconBut(block, BUT, B_BGPICTEXCLEAR, ICON_X, 290,50,20,20, 0, 0, 0, 0, 0, "Remove background texture link"); + uiDefBut(block, TEX, B_IDNAME, "TE:", 110, 100, 160, 20, id->name+2, 0.0, 18.0, 0, 0, ""); + uiDefIconBut(block, BUT, B_BGPICTEXCLEAR, ICON_X, 270, 100, 20, 20, 0, 0, 0, 0, 0, "Remove background texture link"); + uiBlockEndAlign(block); + } else { + uiBlockEndAlign(block); } + + uiDefButF(block, NUMSLI, B_BLENDBGPIC, "Blend:", 0, 60 , 290, 19, &vd->bgpic->blend, 0.0,1.0, 0, 0, "Set the transparency of the background image"); + + uiDefButF(block, NUM, REDRAWVIEW3D, "Size:", 0, 28, 140, 19, &vd->bgpic->size, 0.1, 250.0, 100, 0, "Set the size (width) of the background image"); + + uiDefButF(block, NUM, REDRAWVIEW3D, "X Offset:", 0, 6, 140, 19, &vd->bgpic->xof, -20.0,20.0, 10, 2, "Set the horizontal offset of the background image"); + uiDefButF(block, NUM, REDRAWVIEW3D, "Y Offset:", 150, 6, 140, 19, &vd->bgpic->yof, -20.0,20.0, 10, 2, "Set the vertical offset of the background image"); + + + + // uiDefButF(block, NUM, REDRAWVIEW3D, "Size:", 160,160,150,20, &vd->bgpic->size, 0.1, 250.0, 100, 0, "Set the size for the width of the BackGroundPic"); + + + +// uiDefButF(block, NUMSLI, B_BLENDBGPIC, "Blend:", 120,100,190,20,&vd->bgpic->blend, 0.0,1.0, 0, 0, "Set the BackGroundPic transparency"); + +// uiDefButF(block, NUM, B_DIFF, "Center X: ", 10,70,140,20,&vd->bgpic->xof, -20.0,20.0, 10, 2, "Set the BackGroundPic X Offset"); +// uiDefButF(block, NUM, B_DIFF, "Center Y: ", 160,70,140,20,&vd->bgpic->yof, -20.0,20.0, 10, 2, "Set the BackGroundPic Y Offset"); + } } @@ -1477,16 +1562,26 @@ static void view3d_panel_properties(cntrl) // VIEW3D_HANDLER_SETTINGS block= uiNewBlock(&curarea->uiblocks, "view3d_panel_properties", UI_EMBOSS, UI_HELV, curarea->win); uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl); uiSetPanelHandler(VIEW3D_HANDLER_PROPERTIES); // for close and esc - if(uiNewPanel(curarea, block, "3D Viewport properties", "View3d", 10, 10, 318, 204)==0) return; + if(uiNewPanel(curarea, block, "View Properties", "View3d", 340, 10, 318, 204)==0) return; + uiDefBut(block, LABEL, 1, "Grid:", 0, 162, 150, 19, NULL, 0.0, 0.0, 0, 0, ""); - uiDefButF(block, NUM, REDRAWVIEW3D, "Grid:", 10, 50, 140, 19, &vd->grid, 0.001, 100.0, 10, 0, "Set the distance between gridlines"); - uiDefButS(block, NUM, REDRAWVIEW3D, "GridLines:", 160, 50, 140, 19, &vd->gridlines, 0.0, 100.0, 100, 0, "Set the number of gridlines"); - uiDefButF(block, NUM, REDRAWVIEW3D, "Lens:", 10, 30, 140, 19, &vd->lens, 10.0, 120.0, 100, 0, "Set the lens for the perspective view"); + uiDefButF(block, NUM, REDRAWVIEW3D, "Spacing:", 0, 140, 140, 19, &vd->grid, 0.001, 100.0, 10, 0, "Set the distance between grid lines"); + uiDefButS(block, NUM, REDRAWVIEW3D, "Lines:", 150, 140, 140, 19, &vd->gridlines, 0.0, 100.0, 100, 0, "Set the number of grid lines"); + + uiDefBut(block, LABEL, 1, "3D Grid:", 0, 110, 150, 19, NULL, 0.0, 0.0, 0, 0, ""); - uiDefButF(block, NUM, REDRAWVIEW3D, "ClipStart:", 10, 10, 140, 19, &vd->near, vd->grid/10.0, 100.0, 10, 0, "Set startvalue in perspective view mode"); - uiDefButF(block, NUM, REDRAWVIEW3D, "ClipEnd:", 160, 10, 140, 19, &vd->far, 1.0, 1000.0*vd->grid, 100, 0, "Set endvalue in perspective view mode"); + uiDefButBitS(block, TOG, V3D_SHOW_FLOOR, REDRAWVIEW3D, "Grid Floor", 0, 88, 90, 19, &vd->gridflag, 0, 0, 0, 0, "Show the grid floor in free camera mode"); + uiDefButBitS(block, TOG, V3D_SHOW_X, REDRAWVIEW3D, "X Axis", 102, 88, 60, 19, &vd->gridflag, 0, 0, 0, 0, "Show the X Axis line"); + uiDefButBitS(block, TOG, V3D_SHOW_Y, REDRAWVIEW3D, "Y Axis", 166, 88, 60, 19, &vd->gridflag, 0, 0, 0, 0, "Show the Y Axis line"); + uiDefButBitS(block, TOG, V3D_SHOW_Z, REDRAWVIEW3D, "Z Axis", 230, 88, 60, 19, &vd->gridflag, 0, 0, 0, 0, "Show the Z Axis line"); + uiDefBut(block, LABEL, 1, "View Camera:", 0, 50, 150, 19, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefButF(block, NUM, REDRAWVIEW3D, "Lens:", 0, 28, 140, 19, &vd->lens, 10.0, 120.0, 100, 0, "The lens angle in perspective view"); + + uiDefButF(block, NUM, REDRAWVIEW3D, "Clip Start:", 0, 6, 140, 19, &vd->near, vd->grid/10.0, 100.0, 10, 0, "Set the beginning of the range in which 3D objects are displayed (perspective view)"); + uiDefButF(block, NUM, REDRAWVIEW3D, "Clip End:", 150, 6, 140, 19, &vd->far, 1.0, 1000.0*vd->grid, 100, 0, "Set the end of the range in which 3D objects are displayed (perspective view)"); } diff --git a/source/blender/src/space.c b/source/blender/src/space.c index 1533273286c..412f7289013 100644 --- a/source/blender/src/space.c +++ b/source/blender/src/space.c @@ -1523,6 +1523,10 @@ void initview3d(ScrArea *sa) vd->camera= G.scene->camera; } vd->scenelock= 1; + vd->gridflag |= V3D_SHOW_X; + vd->gridflag |= V3D_SHOW_Y; + vd->gridflag |= V3D_SHOW_FLOOR; + vd->gridflag &= ~V3D_SHOW_Z; } |