Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/src/drawoops.c')
-rw-r--r--source/blender/src/drawoops.c527
1 files changed, 0 insertions, 527 deletions
diff --git a/source/blender/src/drawoops.c b/source/blender/src/drawoops.c
deleted file mode 100644
index 75bea40a8b4..00000000000
--- a/source/blender/src/drawoops.c
+++ /dev/null
@@ -1,527 +0,0 @@
-/**
- * $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) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "BMF_Api.h"
-
-#include "BLI_blenlib.h"
-#include "BLI_arithb.h"
-
-#include "DNA_ID.h"
-#include "DNA_object_types.h"
-#include "DNA_oops_types.h"
-#include "DNA_scene_types.h"
-#include "DNA_screen_types.h"
-#include "DNA_space_types.h"
-#include "DNA_view2d_types.h"
-
-#include "BKE_utildefines.h"
-#include "BKE_global.h"
-
-#include "BIF_interface.h"
-#include "BIF_interface_icons.h"
-#include "BIF_language.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
-#include "BIF_mywindow.h"
-#include "BIF_outliner.h"
-#include "BIF_resources.h"
-#include "BIF_screen.h"
-
-/* #include "BIF_drawoops.h" bad name :(*/
-#include "BIF_oops.h"
-
-#include "BSE_drawipo.h"
-#include "BSE_drawoops.h"
-
-float aspect;
-void *font;
-
-
-static float icon_width();
-float center_oops_text(char *str);
-
-
-void boundbox_oops(short sel)
-{
- Oops *oops;
- float min[2], max[2];
- int ok= 0;
-
- if(G.soops==0) return;
-
- min[0]= 1000.0;
- max[0]= -1000.0;
- min[1]= 1000.0;
- max[1]= -1000.0;
-
- oops= G.soops->oops.first;
- while(oops) {
- if ((oops->hide==0 && !sel) || (sel && oops->flag & SELECT )) {
- ok= 1;
-
- min[0]= MIN2(min[0], oops->x);
- max[0]= MAX2(max[0], oops->x+OOPSX);
- min[1]= MIN2(min[1], oops->y);
- max[1]= MAX2(max[1], oops->y+OOPSY);
- }
- oops= oops->next;
- }
-
- if(ok==0) return;
-
- G.v2d->tot.xmin= min[0];
- G.v2d->tot.xmax= max[0];
- G.v2d->tot.ymin= min[1];
- G.v2d->tot.ymax= max[1];
-
-}
-
-void give_oopslink_line(Oops *oops, OopsLink *ol, float *v1, float *v2)
-{
-
- if(ol->to && ol->to->hide==0) {
- v1[0]= oops->x+ol->xof;
- v1[1]= oops->y+ol->yof;
- v2[0]= ol->to->x+OOPSX/2;
- v2[1]= ol->to->y;
- }
- else if(ol->from && ol->from->hide==0) {
- v1[0]= ol->from->x + ol->xof;
- v1[1]= ol->from->y + ol->xof;
- v2[0]= oops->x+OOPSX/2;
- v2[1]= oops->y;
- }
-}
-
-void draw_oopslink(Oops *oops)
-{
- OopsLink *ol;
- float vec[4][3], dist, spline_step;
- short curve_res;
-
- if(oops->type==ID_SCE || oops->type==ID_GR) {
- if(oops->flag & SELECT) {
- /* when using python Mesh to make meshes a file was saved
- that had an oops with no ID, stops a segfault when looking for lib */
- if(oops->id && oops->id->lib) cpack(0x4080A0);
- else cpack(0x808080);
- }
- else cpack(0x606060);
- }
- else {
- if(oops->flag & SELECT) {
- if(oops->id && oops->id->lib) cpack(0x11AAFF);
- else cpack(0xFFFFFF);
- }
- else cpack(0x0);
- }
-
- glEnable(GL_MAP1_VERTEX_3);
- vec[0][2]= vec[1][2]= vec[2][2]= vec[3][2]= 0.0; /* only 2d spline, set the Z to 0*/
-
- ol= oops->link.first;
- while(ol) {
- if(ol->to && ol->to->hide==0) {
-
- give_oopslink_line(oops, ol, vec[0], vec[3]);
-
- dist= 0.5*VecLenf(vec[0], vec[3]);
-
- /* check ol->xof and yof for direction */
- if(ol->xof == 0.0) {
- vec[1][0]= vec[0][0]-dist;
- vec[1][1]= vec[0][1];
- }
- else if(ol->xof==OOPSX) {
- vec[1][0]= vec[0][0]+dist;
- vec[1][1]= vec[0][1];
- }
- else {
- vec[1][0]= vec[0][0];
- vec[1][1]= vec[0][1]+dist;
- }
-
- /* v3 is always pointing down */
- vec[2][0]= vec[3][0];
- vec[2][1]= vec[3][1] - dist;
-
- if( MIN4(vec[0][0], vec[1][0], vec[2][0], vec[3][0]) > G.v2d->cur.xmax); /* clipped */
- else if ( MAX4(vec[0][0], vec[1][0], vec[2][0], vec[3][0]) < G.v2d->cur.xmin); /* clipped */
- else {
- /* calculate a curve resolution to use based on the length of the curve.*/
- curve_res = MIN2(40, MAX2(2, 2*dist/aspect));
-
- /* we can reuse the dist variable here to increment the GL curve eval amount*/
- dist = (float)1/curve_res;
- spline_step = 0.0;
-
- glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, vec[0]);
- glBegin(GL_LINE_STRIP);
- while (spline_step < 1.000001) {
- glEvalCoord1f(spline_step);
- spline_step += dist;
- }
- glEnd();
- }
-
- }
- ol= ol->next;
- }
-}
-
-static float icon_width()
-{
- /* change it in *one place* when you mess around */
- return 0.8*OOPSY;
-}
-
-void draw_icon_oops(float *co, short type)
-{
- BIFIconID icon;
- float ofs;
-
- switch(type) {
- default: return;
-
- case ID_OB: icon= ICON_OBJECT_HLT; break;
- case ID_ME: icon= ICON_MESH_HLT; break;
- case ID_CU: icon= ICON_CURVE_HLT; break;
- case ID_MB: icon= ICON_MBALL_HLT; break;
- case ID_LT: icon= ICON_LATTICE_HLT; break;
- case ID_LA: icon= ICON_LAMP_HLT; break;
- case ID_MA: icon= ICON_MATERIAL_HLT; break;
- case ID_TE: icon= ICON_TEXTURE_HLT; break;
- case ID_IP: icon= ICON_IPO_HLT; break;
- case ID_LI: icon= ICON_LIBRARY_HLT; break;
- case ID_IM: icon= ICON_IMAGE_HLT; break;
- case ID_GR: icon= ICON_CIRCLE_DEHLT; break;
- case ID_CA: icon= ICON_CAMERA_DEHLT; break;
- case ID_AR: icon= ICON_ARMATURE; break;
- }
-
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- /* height of box is OOPSY...icon is centered vertically */
- ofs = (OOPSY - icon_width())/2.0;
- BIF_icon_draw_aspect(co[0], co[1]+ofs, icon, icon_width()*aspect*ICON_DEFAULT_HEIGHT/OOPSY);
-
- glBlendFunc(GL_ONE, GL_ZERO);
- glDisable(GL_BLEND);
-}
-
-void mysbox(float x1, float y1, float x2, float y2)
-{
- float vec[2];
-
- glBegin(GL_LINE_LOOP);
- vec[0]= x1; vec[1]= y1;
- glVertex2fv(vec);
- vec[0]= x2;
- glVertex2fv(vec);
- vec[1]= y2;
- glVertex2fv(vec);
- vec[0]= x1;
- glVertex2fv(vec);
- glEnd();
-}
-
-unsigned int give_oops_color(short type, short sel, unsigned int *border)
-{
- unsigned int body;
- /* also finds out if a dashed line should be drawn */
-
- switch(type) {
- case ID_OB:
- body= 0x707070; break;
- case ID_SCE:
- body= 0x608060; break;
- case ID_MA:
- body= 0x808060; break;
- case ID_TE:
- body= 0x7080a0; break;
- case ID_IP:
- body= 0x906050; break;
- case ID_LA:
- body= 0x608080; break;
- case ID_LI:
- body= 0x2198DC; break;
- case ID_IM:
- body= 0x35659F; break;
- case ID_GR:
- body= 0x507050; break;
- case ID_CA:
- body= 0x7570A0; break;
- case ID_LT:
- body= 0xA08090; break;
- case ID_AR:
- body= 0x70B0C0; break;
- default:
- body= 0x606070; break;
- }
-
- if(sel) {
- if(G.moving) *border= 0xf0f0f0;
- else *border= 0xc0c0c0;
- }
- else *border= 0x0;
-
-
- return body;
-}
-
-
-float center_oops_text(char *str)
-/* gives x offset at which to draw oops text -- takes icon into account */
-{
- int len;
- float width;
-
- len= strlen(str);
- if(len < 1) return 0;
-
- /* center at box width of OOPSX */
- width= aspect*BIF_GetStringWidth(font, str, 0) + icon_width();
-
- while(width > OOPSX && len >= 0) {
- str[len] = 0;
- width= aspect*BIF_GetStringWidth(font, str, 0) + icon_width();
- len--;
- }
- return (OOPSX - width)/2;
-}
-
-void draw_oops(Oops *oops)
-{
- OopsLink *ol;
- float v1[2], x1, y1, x2, y2, f1, f2;
- unsigned int body, border;
- short line= 0;
- char str[FILE_MAXDIR+FILE_MAXFILE+5];
-
- x1= oops->x;
- x2= oops->x+OOPSX;
- y1= oops->y;
- y2= oops->y+OOPSY;
-
- /* do clip */
- if(x2 < G.v2d->cur.xmin || x1 > G.v2d->cur.xmax) return;
- if(y2 < G.v2d->cur.ymin || y1 > G.v2d->cur.ymax) return;
-
- body= give_oops_color(oops->type, oops->flag & SELECT, &border);
- if(oops->id== (ID *)((G.scene->basact) ? (G.scene->basact->object) : 0)) line= 1;
- else if(oops->id== (ID *)G.scene) line= 1;
-
- if (!oops->id) return;
-
- if(oops->id->us) {
- cpack(body);
-
- glRectf(x1, y1, x2, y2);
- }
-
- if(oops->id->lib) {
- if(oops->id->flag & LIB_INDIRECT) cpack(0x1144FF);
- else cpack(0x11AAFF);
-
- glRectf(x2-0.2*OOPSX, y2-0.2*OOPSX, x2-0.1*OOPSX, y2-0.1*OOPSX);
- }
-
- v1[0]= x1;
- v1[1] = y1;
-
- if(oops->type==ID_LI) {
- sprintf(str, " %s", ((Library *)oops->id)->name);
- }
- else {
- sprintf(str, " %s", oops->id->name+2);
- }
-
- BIF_SetScale(aspect);
- v1[0] += center_oops_text(str);
-
- draw_icon_oops(v1, oops->type);
- v1[0] += icon_width();
-
- v1[1] = y1+(y2-y1)/3.0;
- if(oops->flag & SELECT) BIF_ThemeColor(TH_TEXT_HI);
- else BIF_ThemeColor(TH_TEXT);
- glRasterPos2f(v1[0], v1[1]);
- BIF_RasterPos(v1[0], v1[1]);
- BIF_SetScale(aspect);
- BIF_DrawString(font, str, 0);
-
-
- if(line) setlinestyle(2);
- cpack(border);
-
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- glRectf(x1, y1, x2, y2);
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- if(line) setlinestyle(0);
-
- /* connection blocks */
- ol= oops->link.first;
- while(ol) {
-
- f1= x1+ol->xof;
- f2= y1+ol->yof;
-
- body= give_oops_color(ol->type, oops->flag & SELECT, &border);
- cpack(body);
-
- glRectf(f1-.2, f2-.2, f1+.2, f2+.2);
- cpack(border);
-
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
-
- glRectf(f1-.2, f2-.2, f1+.2, f2+.2);
-
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-
- ol= ol->next;
- }
-
- if(oops->flag & OOPS_REFER) {
- /* Draw the little rounded connection point */
- glColor3ub(0, 0, 0);
- glPushMatrix();
-
- glTranslatef(oops->x + 0.5*OOPSX, oops->y, 0.0);
- glutil_draw_filled_arc(0.0, M_PI, 0.05*OOPSX, 7);
-
- glPopMatrix();
- }
-}
-
-void drawoopsspace(ScrArea *sa, void *spacedata)
-{
- SpaceOops *soops= spacedata;
- Oops *oops;
- float col[3];
-
- BIF_GetThemeColor3fv(TH_BACK, col);
-
- if(soops==0) return;
-
- /* darker background for oops */
- if(soops->type!=SO_OUTLINER) {
- col[0] = col[0] * 0.75; col[1] = col[1] * 0.75; col[2] = col[2] * 0.75;
- }
-
- glClearColor(col[0], col[1], col[2], 0.0);
- glClear(GL_COLOR_BUFFER_BIT);
-
- if(soops->type==SO_OUTLINER) draw_outliner(sa, soops);
- else {
- build_oops(); /* changed to become first call... */
-
- boundbox_oops(0);
- calc_scrollrcts(sa, G.v2d, curarea->winx, curarea->winy);
-
- myortho2(G.v2d->cur.xmin, G.v2d->cur.xmax, G.v2d->cur.ymin, G.v2d->cur.ymax);
- bwin_clear_viewmat(sa->win); /* clear buttons view */
- glLoadIdentity();
-
- aspect= (G.v2d->cur.xmax - G.v2d->cur.xmin)/((float)sa->winx);
- font= uiSetCurFont_ext(30*aspect);
-
- calc_ipogrid(); /* for scrollvariables */
-
- /* drop shadow */
- BIF_ThemeColorShade(TH_BACK, -96); /* drop shadow color */
- glRectf(G.v2d->tot.xmin-1, G.v2d->tot.ymin-3, G.v2d->tot.xmax+3,
- G.v2d->tot.ymax+1);
-
- /* light square in the center */
- BIF_GetThemeColor3fv(TH_BACK, col);
- glColor3fv(col);
- glRectf(G.v2d->tot.xmin-2, G.v2d->tot.ymin-2, G.v2d->tot.xmax+2,
- G.v2d->tot.ymax+2);
-
- /* box around the oops. */
- cpack(0x0);
- mysbox(G.v2d->tot.xmin-2, G.v2d->tot.ymin-2, G.v2d->tot.xmax+2,
- G.v2d->tot.ymax+2);
-
-
- /* Draw unselected oops links */
- for(oops= soops->oops.first; oops; oops = oops->next) {
- if(oops->hide==0 && (oops->flag & SELECT)); else {
- draw_oopslink(oops);
- }
- }
-
- /* Draw selected oops links */
- for(oops= soops->oops.first; oops; oops = oops->next) {
- if(oops->hide==0 && (oops->flag & SELECT)) {
- draw_oopslink(oops);
- }
- }
-
- for(oops= soops->oops.first; oops; oops = oops->next) {
- if(oops->hide==0) {
- if(oops->flag & SELECT); else draw_oops(oops);
- }
- }
-
- for(oops= soops->oops.first; oops; oops = oops->next) {
- if(oops->hide==0) {
- if(oops->flag & SELECT) draw_oops(oops);
- }
- }
- }
-
- /* restore viewport */
- mywinset(curarea->win);
-
- /* ortho at pixel level curarea */
- myortho2(-0.375, sa->winx-0.375, -0.375, sa->winy-0.375);
-
- if(soops->type==SO_OUTLINER) {
- if(sa->winx>SCROLLB+10 && sa->winy>SCROLLH+10) {
- if(G.v2d->scroll) drawscroll(0);
- }
- }
- draw_area_emboss(sa);
-
- curarea->win_swap= WIN_BACK_OK;
-}
-
-
-
-