[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17924] branches/blender2.5/blender/source /blender: 2.5
Ton Roosendaal
ton at blender.org
Thu Dec 18 18:38:22 CET 2008
Revision: 17924
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17924
Author: ton
Date: 2008-12-18 18:38:21 +0100 (Thu, 18 Dec 2008)
Log Message:
-----------
2.5
Drawing and viewing code for view3d back (no not objects :).
Quick test: converted 2250 ugly lines of code in 2.5 hours.
With about 300k lines todo, this will be 333 hours = 30 days? Whoa!
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/editors/include/ED_util.h
branches/blender2.5/blender/source/blender/editors/space_view3d/Makefile
branches/blender2.5/blender/source/blender/editors/space_view3d/SConscript
branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h
branches/blender2.5/blender/source/blender/makesdna/DNA_view3d_types.h
Added Paths:
-----------
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_view.c
Modified: branches/blender2.5/blender/source/blender/editors/include/ED_util.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_util.h 2008-12-18 16:15:52 UTC (rev 17923)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_util.h 2008-12-18 17:38:21 UTC (rev 17924)
@@ -33,6 +33,11 @@
#define XIC 20
#define YIC 20
+/* proposal = put scene pointers on function calls? */
+#define BASACT (scene->basact)
+#define OBACT (BASACT? BASACT->object: 0)
+
+
void apply_keyb_grid(float *val, float fac1, float fac2, float fac3, int invert);
int GetButStringLength(char *str);
Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/Makefile
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/Makefile 2008-12-18 16:15:52 UTC (rev 17923)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/Makefile 2008-12-18 17:38:21 UTC (rev 17924)
@@ -38,6 +38,8 @@
CPPFLAGS += -I$(NAN_GLEW)/include
CPPFLAGS += -I$(OPENGL_HEADERS)
+CPPFLAGS += -I$(NAN_BMFONT)/include
+
# not very neat....
CPPFLAGS += -I../../windowmanager
CPPFLAGS += -I../../blenloader
@@ -46,6 +48,7 @@
CPPFLAGS += -I../../makesdna
CPPFLAGS += -I../../imbuf
CPPFLAGS += -I../../python
+CPPFLAGS += -I../../render/extern/include
CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
# own include
Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/SConscript
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/SConscript 2008-12-18 16:15:52 UTC (rev 17923)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/SConscript 2008-12-18 17:38:21 UTC (rev 17924)
@@ -5,5 +5,6 @@
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
+incs += ' ../../render/extern/include #/intern/guardedalloc #intern/bmfont'
env.BlenderLib ( 'bf_editors_space_view3d', sources, Split(incs), [], libtype=['core','intern'], priority=[35, 40] )
Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c 2008-12-18 16:15:52 UTC (rev 17923)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c 2008-12-18 17:38:21 UTC (rev 17924)
@@ -189,17 +189,10 @@
static void view3d_main_area_draw(const bContext *C, ARegion *ar)
{
/* draw entirely, view changes should be handled here */
- float col[3], fac;
+ ScrArea *sa= CTX_wm_area(C);
+ View3D *v3d= sa->spacedata.first; /* XXX get from region */
- /* clear and setup matrix */
- UI_GetThemeColor3fv(TH_BACK, col);
- glClearColor(col[0], col[1], col[2], 0.0);
- glClear(GL_COLOR_BUFFER_BIT);
-
- /* swapbuffers indicator */
- fac= BLI_frand();
- glColor3f(fac, fac, fac);
- glRecti(20, 2, 30, 12);
+ drawview3dspace(C, ar, v3d);
}
Added: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c (rev 0)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c 2008-12-18 17:38:21 UTC (rev 17924)
@@ -0,0 +1,1454 @@
+/**
+ * $Id:
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2008 Blender Foundation.
+ * All rights reserved.
+ *
+ *
+ * Contributor(s): Blender Foundation
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <math.h>
+
+#include "DNA_action_types.h"
+#include "DNA_armature_types.h"
+#include "DNA_camera_types.h"
+#include "DNA_key_types.h"
+#include "DNA_object_types.h"
+#include "DNA_space_types.h"
+#include "DNA_scene_types.h"
+#include "DNA_screen_types.h"
+#include "DNA_userdef_types.h"
+#include "DNA_view3d_types.h"
+#include "DNA_world_types.h"
+
+#include "MEM_guardedalloc.h"
+
+#include "BLI_blenlib.h"
+#include "BLI_arithb.h"
+#include "BLI_rand.h"
+
+#include "BKE_anim.h"
+#include "BKE_context.h"
+#include "BKE_image.h"
+#include "BKE_ipo.h"
+#include "BKE_key.h"
+#include "BKE_object.h"
+#include "BKE_global.h"
+#include "BKE_scene.h"
+#include "BKE_screen.h"
+#include "BKE_utildefines.h"
+
+#include "RE_pipeline.h" // make_stars
+
+#include "IMB_imbuf_types.h"
+#include "IMB_imbuf.h"
+
+#include "BIF_gl.h"
+#include "BIF_glutil.h"
+#include "BMF_Api.h"
+
+#include "WM_api.h"
+
+#include "ED_screen.h"
+#include "ED_util.h"
+
+#include "UI_interface.h"
+#include "UI_interface_icons.h"
+#include "UI_resources.h"
+#include "UI_view2d.h"
+
+#include "view3d_intern.h" // own include
+
+
+
+static void star_stuff_init_func(void)
+{
+ cpack(-1);
+ glPointSize(1.0);
+ glBegin(GL_POINTS);
+}
+static void star_stuff_vertex_func(float* i)
+{
+ glVertex3fv(i);
+}
+static void star_stuff_term_func(void)
+{
+ glEnd();
+}
+
+void circf(float x, float y, float rad)
+{
+ GLUquadricObj *qobj = gluNewQuadric();
+
+ gluQuadricDrawStyle(qobj, GLU_FILL);
+
+ glPushMatrix();
+
+ glTranslatef(x, y, 0.);
+
+ gluDisk( qobj, 0.0, rad, 32, 1);
+
+ glPopMatrix();
+
+ gluDeleteQuadric(qobj);
+}
+
+void circ(float x, float y, float rad)
+{
+ GLUquadricObj *qobj = gluNewQuadric();
+
+ gluQuadricDrawStyle(qobj, GLU_SILHOUETTE);
+
+ glPushMatrix();
+
+ glTranslatef(x, y, 0.);
+
+ gluDisk( qobj, 0.0, rad, 32, 1);
+
+ glPopMatrix();
+
+ gluDeleteQuadric(qobj);
+}
+
+
+/* ********* custom clipping *********** */
+
+static void view3d_draw_clipping(View3D *v3d)
+{
+ BoundBox *bb= v3d->clipbb;
+
+ UI_ThemeColorShade(TH_BACK, -8);
+
+ glBegin(GL_QUADS);
+
+ glVertex3fv(bb->vec[0]); glVertex3fv(bb->vec[1]); glVertex3fv(bb->vec[2]); glVertex3fv(bb->vec[3]);
+ glVertex3fv(bb->vec[0]); glVertex3fv(bb->vec[4]); glVertex3fv(bb->vec[5]); glVertex3fv(bb->vec[1]);
+ glVertex3fv(bb->vec[4]); glVertex3fv(bb->vec[7]); glVertex3fv(bb->vec[6]); glVertex3fv(bb->vec[5]);
+ glVertex3fv(bb->vec[7]); glVertex3fv(bb->vec[3]); glVertex3fv(bb->vec[2]); glVertex3fv(bb->vec[6]);
+ glVertex3fv(bb->vec[1]); glVertex3fv(bb->vec[5]); glVertex3fv(bb->vec[6]); glVertex3fv(bb->vec[2]);
+ glVertex3fv(bb->vec[7]); glVertex3fv(bb->vec[4]); glVertex3fv(bb->vec[0]); glVertex3fv(bb->vec[3]);
+
+ glEnd();
+}
+
+void view3d_set_clipping(View3D *v3d)
+{
+ double plane[4];
+ int a;
+
+ for(a=0; a<4; a++) {
+ QUATCOPY(plane, v3d->clip[a]);
+ glClipPlane(GL_CLIP_PLANE0+a, plane);
+ glEnable(GL_CLIP_PLANE0+a);
+ }
+}
+
+void view3d_clr_clipping(void)
+{
+ int a;
+
+ for(a=0; a<4; a++) {
+ glDisable(GL_CLIP_PLANE0+a);
+ }
+}
+
+int view3d_test_clipping(View3D *v3d, float *vec)
+{
+ /* vec in world coordinates, returns 1 if clipped */
+ float view[3];
+
+ VECCOPY(view, vec);
+
+ if(0.0f < v3d->clip[0][3] + INPR(view, v3d->clip[0]))
+ if(0.0f < v3d->clip[1][3] + INPR(view, v3d->clip[1]))
+ if(0.0f < v3d->clip[2][3] + INPR(view, v3d->clip[2]))
+ if(0.0f < v3d->clip[3][3] + INPR(view, v3d->clip[3]))
+ return 0;
+
+ return 1;
+}
+
+/* ********* end custom clipping *********** */
+
+
+static void drawgrid_draw(ARegion *ar, float wx, float wy, float x, float y, float dx)
+{
+ float fx, fy;
+
+ x+= (wx);
+ y+= (wy);
+ fx= x/dx;
+ fx= x-dx*floor(fx);
+
+ while(fx< ar->winx) {
+ fdrawline(fx, 0.0, fx, (float)ar->winy);
+ fx+= dx;
+ }
+
+ fy= y/dx;
+ fy= y-dx*floor(fy);
+
+
+ while(fy< ar->winy) {
+ fdrawline(0.0, fy, (float)ar->winx, fy);
+ fy+= dx;
+ }
+
+}
+
+// not intern, called in editobject for constraint axis too
+void make_axis_color(char *col, char *col2, char axis)
+{
+ if(axis=='x') {
+ col2[0]= col[0]>219?255:col[0]+36;
+ col2[1]= col[1]<26?0:col[1]-26;
+ col2[2]= col[2]<26?0:col[2]-26;
+ }
+ else if(axis=='y') {
+ col2[0]= col[0]<46?0:col[0]-36;
+ col2[1]= col[1]>189?255:col[1]+66;
+ col2[2]= col[2]<46?0:col[2]-36;
+ }
+ else {
+ col2[0]= col[0]<26?0:col[0]-26;
+ col2[1]= col[1]<26?0:col[1]-26;
+ col2[2]= col[2]>209?255:col[2]+46;
+ }
+
+}
+
+static void drawgrid(ARegion *ar, View3D *v3d)
+{
+ /* extern short bgpicmode; */
+ float wx, wy, x, y, fw, fx, fy, dx;
+ float vec4[4];
+ char col[3], col2[3];
+ short sublines = v3d->gridsubdiv;
+
+ vec4[0]=vec4[1]=vec4[2]=0.0;
+ vec4[3]= 1.0;
+ Mat4MulVec4fl(v3d->persmat, vec4);
+ fx= vec4[0];
+ fy= vec4[1];
+ fw= vec4[3];
+
+ wx= (ar->winx/2.0); /* because of rounding errors, grid at wrong location */
+ wy= (ar->winy/2.0);
+
+ x= (wx)*fx/fw;
+ y= (wy)*fy/fw;
+
+ vec4[0]=vec4[1]=v3d->grid;
+ vec4[2]= 0.0;
+ vec4[3]= 1.0;
+ Mat4MulVec4fl(v3d->persmat, vec4);
+ fx= vec4[0];
+ fy= vec4[1];
+ fw= vec4[3];
+
+ dx= fabs(x-(wx)*fx/fw);
+ if(dx==0) dx= fabs(y-(wy)*fy/fw);
+
+ glDepthMask(0); // disable write in zbuffer
+
+ /* check zoom out */
+ UI_ThemeColor(TH_GRID);
+
+ if(dx<6.0) {
+ v3d->gridview*= sublines;
+ dx*= sublines;
+
+ if(dx<6.0) {
+ v3d->gridview*= sublines;
+ dx*= sublines;
+
+ if(dx<6.0) {
+ v3d->gridview*= sublines;
+ dx*=sublines;
+ if(dx<6.0);
+ else {
+ UI_ThemeColor(TH_GRID);
+ drawgrid_draw(ar, wx, wy, x, y, dx);
+ }
+ }
+ else { // start blending out
+ UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/60.0);
+ drawgrid_draw(ar, wx, wy, x, y, dx);
+
+ UI_ThemeColor(TH_GRID);
+ drawgrid_draw(ar, wx, wy, x, y, sublines*dx);
+ }
+ }
+ else { // start blending out (6 < dx < 60)
+ UI_ThemeColorBlend(TH_BACK, TH_GRID, dx/60.0);
+ drawgrid_draw(ar, wx, wy, x, y, dx);
+
+ UI_ThemeColor(TH_GRID);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list