huge commit, sorry!

this is part 1 of the UI makeover. It has:
- menu system from Matt integrated
- buttons drawing from Matt
- generic button panel system implemented
- converted displaybuttons (not the rest yet)
- cleaned up a lot in drawing spaces itself, to make it aligned and pixel exact.
- cleaned loads of little compiler warnings, protos...

still a lot of work needed, will all be in next week i hope!

(warn: 2 new c files! butspace.c and buttons_scene.c)
This commit is contained in:
Ton Roosendaal 2003-10-04 20:35:50 +00:00
parent c355aa06a8
commit 842bb449c5
34 changed files with 8227 additions and 2043 deletions

@ -42,7 +42,7 @@ extern "C" {
struct ListBase;
#define BLENDER_VERSION 228
#define BLENDER_VERSION 229
int BKE_read_file(char *dir, void *type_r);
int BKE_read_file_from_memory(char* filebuf, int filelength, void *type_r);

@ -2526,6 +2526,7 @@ static void direct_link_screen(FileData *fd, bScreen *sc)
SpaceLink *sl;
link_list(fd, &(sa->spacedata));
link_list(fd, &(sa->panels));
for (sl= sa->spacedata.first; sl; sl= sl->next) {
if (sl->spacetype==SPACE_VIEW3D) {
@ -3733,7 +3734,73 @@ static void do_versions(Main *main)
}
}
}
}
if(main->versionfile <= 228) {
Scene *sce;
bScreen *sc;
for (sce= main->scene.first; sce; sce= sce->id.next) {
sce->r.mode |= R_ENVMAP;
}
// convert old mainb values for new button panels
for (sc= main->screen.first; sc; sc= sc->id.next) {
ScrArea *sa;
for (sa= sc->areabase.first; sa; sa= sa->next) {
SpaceLink *sl;
for (sl= sa->spacedata.first; sl; sl= sl->next) {
if (sl->spacetype==SPACE_BUTS) {
SpaceButs *sbuts= (SpaceButs *) sl;
if(sbuts->mainb==BUTS_LAMP) {
sbuts->mainb= CONTEXT_SHADING;
sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_LAMP;
}
else if(sbuts->mainb==BUTS_MAT) {
sbuts->mainb= CONTEXT_SHADING;
sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_MAT;
}
else if(sbuts->mainb==BUTS_TEX) {
sbuts->mainb= CONTEXT_SHADING;
sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_TEX;
}
else if(sbuts->mainb==BUTS_ANIM) {
sbuts->mainb= CONTEXT_OBJECT;
}
else if(sbuts->mainb==BUTS_WORLD) {
sbuts->mainb= CONTEXT_SCENE;
sbuts->tab[CONTEXT_SCENE]= TAB_SCENE_WORLD;
}
else if(sbuts->mainb==BUTS_RENDER) {
sbuts->mainb= CONTEXT_SCENE;
sbuts->tab[CONTEXT_SCENE]= TAB_SCENE_RENDER;
}
else if(sbuts->mainb==BUTS_GAME) {
sbuts->mainb= CONTEXT_LOGIC;
}
else if(sbuts->mainb==BUTS_FPAINT) {
sbuts->mainb= CONTEXT_EDITING;
}
else if(sbuts->mainb==BUTS_RADIO) {
sbuts->mainb= CONTEXT_SHADING;
sbuts->tab[CONTEXT_SHADING]= TAB_SHADING_RAD;
}
else if(sbuts->mainb==BUTS_CONSTRAINT) {
sbuts->mainb= CONTEXT_OBJECT;
}
else if(sbuts->mainb==BUTS_SCRIPT) {
sbuts->mainb= CONTEXT_OBJECT;
}
else if(sbuts->mainb==BUTS_EDIT) {
sbuts->mainb= CONTEXT_EDITING;
}
else sbuts->mainb= CONTEXT_SCENE;
}
}
}
}
}
/* don't forget to set version number in blender.c! */

@ -1201,9 +1201,16 @@ static void write_screens(WriteData *wd, ListBase *scrbase)
sa= sc->areabase.first;
while(sa) {
SpaceLink *sl;
Panel *pa;
writestruct(wd, DATA, "ScrArea", 1, sa);
pa= sa->panels.first;
while(pa) {
writestruct(wd, DATA, "Panel", 1, pa);
pa= pa->next;
}
sl= sa->spacedata.first;
while(sl) {
if(sl->spacetype==SPACE_VIEW3D) {

@ -0,0 +1,413 @@
/**
* $Id$
*
* ***** BEGIN GPL/BL DUAL 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. The Blender
* Foundation also sells licenses for use in proprietary software under
* the Blender License. See http://www.blender.org/BL/ for information
* about this.
*
* 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/BL DUAL LICENSE BLOCK *****
*/
#ifndef BIF_BUTSPACE_H
#define BIF_BUTSPACE_H
/* all internal calls and event codes for buttons space */
extern void render_panels(void);
/* -------------- event defines ------------ */
#define B_DIFF 1
/* *********************** */
#define B_VIEWBUTS 1100
#define B_LOADBGPIC 1001
#define B_BLENDBGPIC 1002
#define B_BGPICBROWSE 1003
#define B_BGPICTEX 1004
#define B_BGPICCLEAR 1005
#define B_BGPICTEXCLEAR 1006
/* *********************** */
#define B_LAMPBUTS 1200
#define B_LAMPREDRAW 1101
#define B_COLLAMP 1102
#define B_TEXCLEARLAMP 1103
#define B_SBUFF 1104
/* *********************** */
#define B_MATBUTS 1300
#define B_MATCOL 1201
#define B_SPECCOL 1202
#define B_MIRCOL 1203
#define B_ACTCOL 1204
#define B_MATFROM 1205
#define B_MATPRV 1206
#define B_MTEXCOL 1207
#define B_TEXCLEAR 1208
#define B_MATPRV_DRAW 1209
#define B_MTEXPASTE 1210
#define B_MTEXCOPY 1211
#define B_MATLAY 1212
/* *********************** */
#define B_TEXBUTS 1400
#define B_TEXTYPE 1301
#define B_DEFTEXVAR 1302
#define B_LOADTEXIMA 1303
#define B_NAMEIMA 1304
#define B_TEXCHANNEL 1305
#define B_TEXREDR_PRV 1306
#define B_TEXIMABROWSE 1307
#define B_IMAPTEST 1308
#define B_RELOADIMA 1309
#define B_LOADPLUGIN 1310
#define B_NAMEPLUGIN 1311
#define B_COLORBAND 1312
#define B_ADDCOLORBAND 1313
#define B_DELCOLORBAND 1314
#define B_CALCCBAND 1315
#define B_CALCCBAND2 1316
#define B_DOCOLORBAND 1317
#define B_REDRAWCBAND 1318
#define B_BANDCOL 1319
#define B_LOADTEXIMA1 1320
#define B_PLUGBUT 1321
/* plugbut reserves 24 buttons at least! */
#define B_ENV_MAKE 1350
#define B_ENV_FREE 1351
#define B_ENV_DELETE 1352
#define B_ENV_SAVE 1353
#define B_ENV_OB 1354
#define B_PACKIMA 1355
#define B_TEXSETFRAMES 1356
#define B_ENV_FREE_ALL 1357
/* *********************** */
#define B_ANIMBUTS 1500
#define B_RECALCPATH 1401
#define B_MUL_IPO 1402
#define B_AUTOTIMEOFS 1403
#define B_FRAMEMAP 1404
#define B_NEWEFFECT 1405
#define B_PREVEFFECT 1406
#define B_NEXTEFFECT 1407
#define B_CHANGEEFFECT 1408
#define B_CALCEFFECT 1409
#define B_DELEFFECT 1410
#define B_RECALCAL 1411
#define B_SETSPEED 1412
#define B_PRINTSPEED 1413
#define B_PRINTLEN 1414
#define B_RELKEY 1415
/* this has MAX_EFFECT settings! Next free define is 1450... */
#define B_SELEFFECT 1430
/* *********************** */
#define B_WORLDBUTS 1600
#define B_TEXCLEARWORLD 1501
/* *********************** */
#define B_RENDERBUTS 1700
#define B_FS_PIC 1601
#define B_FS_BACKBUF 1602
#define B_FS_FTYPE 1604
#define B_DORENDER 1605
#define B_DOANIM 1606
#define B_PLAYANIM 1607
#define B_PR_PAL 1608
#define B_PR_FULL 1609
#define B_PR_PRV 1610
#define B_PR_CDI 1611
#define B_PR_PAL169 1612
#define B_PR_D2MAC 1613
#define B_PR_MPEG 1614
#define B_REDRAWDISP 1615
#define B_SETBROWSE 1616
#define B_CLEARSET 1617
#define B_PR_PRESET 1618
#define B_PR_PANO 1619
#define B_PR_NTSC 1620
#define B_IS_FTYPE 1622
#define B_IS_BACKBUF 1623
#define B_PR_PC 1624
#define B_PR_PANO360 1627
#define B_PR_HALFFIELDS 1628
#define B_NEWRENDERPIPE 1629
#define B_R_SCALE 1630
#define B_G_SCALE 1631
#define B_B_SCALE 1632
#define B_USE_R_SCALE 1633
#define B_USE_G_SCALE 1634
#define B_USE_B_SCALE 1635
#define B_EDGECOLSLI 1636
#define B_GAMMASLI 1637
#define B_FILETYPEMENU 1638
#define B_SELECTCODEC 1639
#define B_RTCHANGED 1640
#ifdef __NLA
/* *********************** */
enum {
B_ARMATUREBUTS = 1800,
B_POSE = 1701
};
#endif
/* *********************** */
#define B_COMMONEDITBUTS 2049
#define B_MATWICH 2003
#define B_MATNEW 2004
#define B_MATDEL 2005
#define B_MATASS 2006
#define B_MATSEL 2007
#define B_MATDESEL 2008
#define B_HIDE 2009
#define B_REVEAL 2010
#define B_SELSWAP 2011
#define B_SETSMOOTH 2012
#define B_SETSOLID 2013
#define B_AUTOTEX 2014
#define B_DOCENTRE 2015
#define B_DOCENTRENEW 2016
#define B_DOCENTRECURSOR 2017
/* 32 values! */
#define B_OBLAY 2018
#define B_MESHBUTS 2100
#define B_FLIPNORM 2050
#define B_SPIN 2051
#define B_SPINDUP 2052
#define B_EXTR 2053
#define B_SCREW 2054
#define B_EXTREP 2055
#define B_SPLIT 2056
#define B_REMDOUB 2057
#define B_SUBDIV 2058
#define B_FRACSUBDIV 2059
#define B_XSORT 2060
#define B_HASH 2061
#define B_DELSTICKY 2062
#define B_DELVERTCOL 2063
#define B_MAKE_TFACES 2064
#define B_TOSPHERE 2065
#define B_DEL_TFACES 2066
#define B_NEWVGROUP 2067
#define B_DELVGROUP 2068
#define B_ASSIGNVGROUP 2069
#define B_REMOVEVGROUP 2070
#define B_SELVGROUP 2071
#define B_DESELVGROUP 2072
#define B_DECIM_FACES 2073
#define B_DECIM_CANCEL 2074
#define B_DECIM_APPLY 2075
#define B_AUTOVGROUP 2076
#define B_SLOWERDRAW 2077
#define B_FASTERDRAW 2078
#define B_VERTEXNOISE 2079
#define B_VERTEXSMOOTH 2080
#define B_MAKESTICKY 2082
#define B_MAKEVERTCOL 2083
/* *********************** */
#define B_CURVEBUTS 2200
#define B_CONVERTPOLY 2101
#define B_CONVERTBEZ 2102
#define B_CONVERTBSPL 2103
#define B_CONVERTCARD 2104
#define B_CONVERTNURB 2105
#define B_UNIFU 2106
#define B_ENDPU 2107
#define B_BEZU 2108
#define B_UNIFV 2109
#define B_ENDPV 2110
#define B_BEZV 2111
#define B_SETWEIGHT 2112
#define B_SETW1 2113
#define B_SETW2 2114
#define B_SETW3 2115
#define B_SETORDER 2116
#define B_MAKEDISP 2117
#define B_SUBDIVCURVE 2118
#define B_SPINNURB 2119
#define B_CU3D 2120
#define B_SETRESOLU 2121
#define B_SETW4 2122
/* *********************** */
#define B_FONTBUTS 2300
#define B_MAKEFONT 2201
#define B_TOUPPER 2202
#define B_SETFONT 2203
#define B_LOADFONT 2204
#define B_TEXTONCURVE 2205
#define B_PACKFONT 2206
/* *********************** */
#define B_IKABUTS 2400
#define B_IKASETREF 2301
#define B_IKARECALC 2302
/* *********************** */
#define B_CAMBUTS 2500
/* *********************** */
#define B_MBALLBUTS 2600
#define B_RECALCMBALL 2501
/* *********************** */
#define B_LATTBUTS 2700
#define B_RESIZELAT 2601
#define B_DRAWLAT 2602
#define B_LATTCHANGED 2603
/* *********************** */
#define B_GAMEBUTS 2800
/* in editsca.c */
/* *********************** */
#define B_FPAINTBUTS 2900
#define B_VPCOLSLI 2801
#define B_VPGAMMA 2802
#define B_COPY_TF_MODE 2804
#define B_COPY_TF_UV 2805
#define B_COPY_TF_COL 2806
#define B_REDR_3D_IMA 2807
#define B_SET_VCOL 2808
#define B_COPY_TF_TEX 2814
#define B_TFACE_HALO 2815
#define B_TFACE_BILLB 2816
#define B_SHOWTEX 2832
#define B_ASSIGNMESH 2833
/* *********************** */
#define B_RADIOBUTS 3000
#define B_RAD_GO 2901
#define B_RAD_INIT 2902
#define B_RAD_LIMITS 2903
#define B_RAD_FAC 2904
#define B_RAD_NODELIM 2905
#define B_RAD_NODEFILT 2906
#define B_RAD_FACEFILT 2907
#define B_RAD_ADD 2908
#define B_RAD_DELETE 2909
#define B_RAD_COLLECT 2910
#define B_RAD_SHOOTP 2911
#define B_RAD_SHOOTE 2912
#define B_RAD_REPLACE 2913
#define B_RAD_DRAW 2914
#define B_RAD_FREE 2915
#define B_RAD_ADDMESH 2916
/* *********************** */
#define B_SCRIPTBUTS 3100
#define B_SCRIPT_ADD 3001
#define B_SCRIPT_DEL 3002
#define B_SCRIPT_TYPE 3003
/* Scene script buttons */
#define B_SSCRIPT_ADD 3004
#define B_SSCRIPT_DEL 3005
#define B_SSCRIPT_TYPE 3006
/* *********************** */
#define B_SOUNDBUTS 3200
enum B_SOUND_BUTTONS {
B_SOUND_CHANGED = 3101,
B_SOUND_REDRAW,
B_SOUND_VOLUME,
B_SOUND_PANNING,
B_SOUND_PITCH,
B_SOUND_LOAD_SAMPLE,
B_SOUND_MENU_SAMPLE,
B_SOUND_NAME_SAMPLE,
B_SOUND_UNLINK_SAMPLE,
B_SOUND_RELOAD_SAMPLE,
B_SOUND_UNPACK_SAMPLE,
B_SOUND_PLAY_SAMPLE,
B_SOUND_COPY_SOUND,
B_SOUND_LOOPSTART,
B_SOUND_LOOPEND,
B_SOUND_BIDIRECTIONAL,
B_SOUND_RECALC,
B_SOUND_RATECHANGED,
B_SOUND_MIXDOWN
};
/* *********************** */
#define B_CONSTRAINTBUTS 3300
enum {
B_CONSTRAINT_REDRAW = 3201,
B_CONSTRAINT_ADD,
B_CONSTRAINT_DEL,
B_CONSTRAINT_TEST,
B_CONSTRAINT_CHANGETYPE,
B_CONSTRAINT_CHANGENAME,
B_CONSTRAINT_CHANGETARGET
};
/* *********************** */
/* BUTTON BUT: > 4000 */
/* BUTTON 4001-4032: layers */
#endif

@ -41,6 +41,11 @@ typedef struct uiBut uiBut;
typedef struct uiBlock uiBlock;
void uiEmboss(float x1, float y1, float x2, float y2, int sel);
void uiRoundBoxEmboss(float minx, float miny, float maxx, float maxy, float rad);
void uiRoundBox(float minx, float miny, float maxx, float maxy, float rad);
void uiSetRoundBox(int type);
void uiRoundRect(float minx, float miny, float maxx, float maxy, float rad);
void uiDrawMenuBox(float minx, float miny, float maxx, float maxy);
void uiTextBoundsBlock(uiBlock *block, int addval);
void uiBoundsBlock(struct uiBlock *block, int addval);
@ -99,6 +104,7 @@ typedef uiBlock* (*uiBlockFuncFP) (void *arg1);
void uiDefBlockBut(uiBlock *block, uiBlockFuncFP func, void *func_arg1, char *str, short x1, short y1, short x2, short y2, char *tip);
void uiDefIconBlockBut(uiBlock *block, uiBlockFuncFP func, void *func_arg1, int icon, short x1, short y1, short x2, short y2, char *tip);
void uiDefIconTextBlockBut(uiBlock *block, uiBlockFuncFP func, void *arg, int icon, char *str, short x1, short y1, short x2, short y2, char *tip);
void uiDefKeyevtButS(uiBlock *block, int retval, char *str, short x1, short y1, short x2, short y2, short *spoin, char *tip);
@ -133,5 +139,12 @@ void uiButSetFunc (uiBut *but, void (*func)(void *arg1, void *arg2), void *arg
short pupmenu(char *instr);
short pupmenu_col(char *instr, int maxrow);
extern void uiFreePanels(struct ListBase *lb);
extern void uiNewPanel(struct ScrArea *sa, struct uiBlock *block, char *panelname, char *tabname, int ofsx, int ofsy, int sizex, int sizey);
extern void uiScalePanelBlock(struct uiBlock *block);
extern int uiIsPanelClosed(struct uiBlock *block);
extern void uiAnimatePanels(struct ScrArea *sa);
extern void uiSetPanel_view2d(struct ScrArea *sa);
#endif /* BIF_INTERFACE_H */

@ -262,6 +262,8 @@ typedef enum {
#define BIFCOLORSHADE_FIRST (COLORSHADE_DARK)
COLORSHADE_DARK,
COLORSHADE_GREY,
COLORSHADE_LGREY,
COLORSHADE_LMEDIUM,
COLORSHADE_MEDIUM,
COLORSHADE_HILITE,
COLORSHADE_LIGHT,
@ -287,6 +289,15 @@ typedef enum {
BUTDPINK,
BUTMACTIVE,
ACTIONBUTCOL,
NUMBUTCOL,
TEXBUTCOL,
TOGBUTCOL,
SLIDERCOL,
TABCOL,
MENUCOL,
MENUACTIVECOL,
BUTIPO,
BUTAUDIO,
BUTCAMERA,
@ -303,6 +314,10 @@ typedef enum {
BUTYUCK,
BUTSEASICK,
BUTCHOKE,
HEADERCOL,
HEADERCOLSEL,
BUTIMPERIAL,
#define BIFCOLORID_LAST (BUTIMPERIAL)
#define BIFNCOLORIDS (BIFCOLORID_LAST-BIFCOLORID_FIRST + 1)

@ -75,7 +75,7 @@ void getmouseco_headwin(short *mval);
unsigned short qtest(void);
int anyqtest(void);
void areawinset(short win);
void headerbox(int selcol, int width);
void headerbox(struct ScrArea *sa);
void defheaddraw(void);
void defheadchange(void);
unsigned short winqtest(struct ScrArea *sa);
@ -103,13 +103,13 @@ int mywinopen(int mode, short posx, short posy, short sizex, short sizey);
void setscreen(struct bScreen *sc);
void area_fullscreen(void);
int select_area(int spacetype);
void drawedge(short x1, short y1, short x2, short y2);
void drawscreen(void);
struct bScreen *default_twosplit(void);
void initscreen(void);
void unlink_screen(struct bScreen *sc);
void reset_autosave(void);
int area_is_active_area(struct ScrArea *area);
void draw_area_emboss(struct ScrArea *sa);
/***/

@ -43,6 +43,10 @@ struct BWinEvent;
#define OOPS_TEST 2
#define REMAKEALLIPO 3 /* Reevan's ipo fixing test */
#define BUT_HORIZONTAL 1
#define BUT_VERTICAL 2
void scrarea_do_windraw (struct ScrArea *sa);
void scrarea_do_winchange (struct ScrArea *sa);
void scrarea_do_winhandle (struct ScrArea *sa, struct BWinEvent *evt);
@ -84,6 +88,8 @@ extern void winqreadnlaspace(struct ScrArea *sa, void *spacedata, struct B
extern void winqreadseqspace(struct ScrArea *sa, void *spacedata, struct BWinEvent *evt);
extern void test_butspace(void);
extern void start_game(void);
extern void group_menu(void);
#ifdef _WIN32 // FULLSCREEN
extern void mainwindow_toggle_fullscreen(int fullscreen);

@ -40,8 +40,7 @@
/* **************** MAX ********************* */
#define MAXLAMP 32766
#define MAXLAMP 32765
/* max length material array, 16 because of bits in matfrom */
#define MAXPICKBUF 2000
#define MAXSEQ 32
@ -244,6 +243,7 @@
#define B_POSEMODE 153
#define B_TEXTUREPAINT 154
#define B_WPAINT 155
#define B_MODESELECT 156
/* IPO: 200 */
#define B_IPOHOME 201
@ -284,15 +284,21 @@
#define B_SETTRANSBUTS 315
#define B_DOLANGUIFONT 316
#define B_UITHEMECHANGED 317
#define B_UITHEMECOLORMOD 318
#define B_UITHEMERESET 319
#define B_UITHEMEIMPORT 320
#define B_UITHEMEEXPORT 321
/* Definitions for the fileselect buttons in user prefs */
#define B_FONTDIRFILESEL 320
#define B_TEXTUDIRFILESEL 321
#define B_PLUGTEXDIRFILESEL 322
#define B_PLUGSEQDIRFILESEL 323
#define B_RENDERDIRFILESEL 324
#define B_PYTHONDIRFILESEL 325
#define B_SOUNDDIRFILESEL 326
#define B_TEMPDIRFILESEL 327
#define B_FONTDIRFILESEL 330
#define B_TEXTUDIRFILESEL 331
#define B_PLUGTEXDIRFILESEL 332
#define B_PLUGSEQDIRFILESEL 333
#define B_RENDERDIRFILESEL 334
#define B_PYTHONDIRFILESEL 335
#define B_SOUNDDIRFILESEL 336
#define B_TEMPDIRFILESEL 337
/* END Definitions for the fileselect buttons in user prefs */
/* IMAGE: 350 */
@ -366,6 +372,8 @@
#define B_KEEPORIG 2
#define B_BEAUTY 4
#define B_SMOOTH 8
#define B_KNIFE 0x80
#define B_PERCENTSUBD 0x40
/* ***************** DISPLIST ***************** */

@ -91,6 +91,7 @@
#define UI_RETURN_OK 4
#define UI_RETURN_OUT 8
#define UI_RETURN 14
#define UI_EXIT_LOOP 16
/* uiBut->flag */
#define UI_SELECT 1
@ -120,6 +121,10 @@
#define UI_EMBOSSM 4 /* Colored Border */
#define UI_EMBOSSP 5 /* Borderless coloured button */
#define UI_EMBOSSA 6 /* same as EMBOSSX but with arrows to simulate */
#define UI_EMBOSSTABL 7
#define UI_EMBOSSTABM 8
#define UI_EMBOSSTABR 9
#define UI_EMBOSST 10
/* uiBlock->direction */
#define UI_TOP 0

@ -78,6 +78,19 @@ typedef struct ScrEdge {
typedef unsigned short dna_ushort_fix;
#endif
/* panel->flag */
#define PNL_SELECT 1
#define PNL_CLOSED 2
typedef struct Panel { /* the part from uiBlock that needs saved in file */
struct Panel *next, *prev;
char panelname[64], tabname[64]; /* defined as UI_MAX_NAME_STR */
short ofsx, ofsy, sizex, sizey;
short flag, pad;
int pad2;
} Panel;
typedef struct ScrArea {
struct ScrArea *next, *prev;
ScrVert *v1, *v2, *v3, *v4;
@ -97,16 +110,17 @@ typedef struct ScrArea {
ListBase spacedata;
ListBase uiblocks;
ListBase panels;
} ScrArea;
#define MAXWIN 128
/* If you change EDGEWIDTH, also do the global arrat edcol[] */
#define EDGEWIDTH 5
#define EDGEWIDTH2 (2)
#define EDGEWIDTH 1
#define EDGEWIDTH2 0
#define AREAGRID 4
#define AREAMINX 32
#define HEADERY 21
#define HEADERY 24
#define AREAMINY (HEADERY+EDGEWIDTH)
#define HEADERDOWN 1

@ -93,7 +93,7 @@ typedef struct SpaceButs {
struct ScrArea *area;
short cursens, curact;
int pad2;
short align, pad2; /* align for panels */
View2D v2d;
short mainb, menunr; /* texnr and menunr have to remain shorts */
@ -110,12 +110,8 @@ typedef struct SpaceButs {
short scriptblock;
short scaflag;
char texact, pad3[7];
/* a hackish link the anim buts keep
* to a SpaceIpo.
*/
struct SpaceIpo *anim_linked_sipo;
char texact, tab[7]; /* storing tabs for each context */
} SpaceButs;
typedef struct SpaceSeq {
@ -337,7 +333,7 @@ typedef struct SpaceImaSel {
#define V3D_LOCAL 2
*/
/* buts->mainb */
/* buts->mainb old */
#define BUTS_VIEW 0
#define BUTS_LAMP 1
#define BUTS_MAT 2
@ -353,6 +349,27 @@ typedef struct SpaceImaSel {
#define BUTS_SOUND 12
#define BUTS_CONSTRAINT 13
/* warning: the values of these defines are used in sbuts->tabs[7] */
/* buts->mainb new */
#define CONTEXT_SCENE 0
#define CONTEXT_OBJECT 1
#define CONTEXT_TYPES 2
#define CONTEXT_SHADING 3
#define CONTEXT_EDITING 4
#define CONTEXT_SCRIPT 5
#define CONTEXT_LOGIC 6
/* buts->tab new */
#define TAB_SCENE_RENDER 0
#define TAB_SCENE_WORLD 1
#define TAB_SCENE_SETTINGS 2
#define TAB_SHADING_MAT 0
#define TAB_SHADING_TEX 1
#define TAB_SHADING_RAD 2
#define TAB_SHADING_WORLD 3
#define TAB_SHADING_LAMP 4
/* buts->scaflag */
#define BUTS_SENS_SEL 1
#define BUTS_SENS_ACT 2

@ -97,6 +97,7 @@ typedef struct View3D {
short mxo, myo;
short gridlines, viewbut;
short modeselect, pad4, pad5, pad6;
int pad2, pad3;
} View3D;

@ -1041,7 +1041,7 @@ int make_structDNA(FILE *file)
void make_bad_file(char *file)
{
FILE *fp= fopen(file, "w");
fprintf(fp, "NO NO NO! YOUR STUPID STUPID STUPID!\n");
fprintf(fp, "ERROR! Cannot make correct DNA.c file\n");
fclose(fp);
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,166 @@
/**
* $Id:
*
* ***** BEGIN GPL/BL DUAL 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. The Blender
* Foundation also sells licenses for use in proprietary software under
* the Blender License. See http://www.blender.org/BL/ for information
* about this.
*
* 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/BL DUAL LICENSE BLOCK *****
*/
#include <time.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "MEM_guardedalloc.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
#include "DNA_scene_types.h"
#include "BKE_global.h"
#include "BLI_blenlib.h"
#include "BIF_gl.h"
#include "BIF_graphics.h"
#include "BIF_keyval.h"
#include "BIF_mainqueue.h"
#include "BIF_resources.h"
#include "BIF_screen.h"
#include "BIF_mywindow.h"
#include "BIF_space.h"
#include "BIF_glutil.h"
#include "BIF_interface.h"
#include "BIF_butspace.h"
/* here the calls for building the button main/tabs tree */
static void context_scene_buttons(ScrArea *sa, SpaceButs *sbuts)
{
/* select tabs */
if(sbuts->tab[CONTEXT_SCENE] == TAB_SCENE_RENDER)
render_panels();
}
static void context_object_buttons(ScrArea *sa, SpaceButs *sbuts)
{
/* select tabs */
}
static void context_types_buttons(ScrArea *sa, SpaceButs *sbuts)
{
/* select tabs */
}
static void context_shading_buttons(ScrArea *sa, SpaceButs *sbuts)
{
/* select tabs */
}
static void context_editing_buttons(ScrArea *sa, SpaceButs *sbuts)
{
/* select tabs */
}
static void context_logic_buttons(ScrArea *sa, SpaceButs *sbuts)
{
/* select tabs */
}
static void context_script_buttons(ScrArea *sa, SpaceButs *sbuts)
{
/* select tabs */
}
/* callback */
void drawbutspace(ScrArea *sa, void *spacedata)
{
SpaceButs *sbuts= sa->spacedata.first;
View2D *v2d= &sbuts->v2d;
myortho2(v2d->cur.xmin, v2d->cur.xmax, v2d->cur.ymin, v2d->cur.ymax);
glClearColor(0.73, 0.73, 0.73, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
uiSetButLock(G.scene->id.lib!=0, "Can't edit library data");
uiFreeBlocksWin(&sa->uiblocks, sa->win);
/* select the context to be drawn, per contex/tab the actual context is tested */
switch(sbuts->mainb) {
case CONTEXT_SCENE:
context_scene_buttons(sa, sbuts);
break;
case CONTEXT_OBJECT:
context_object_buttons(sa, sbuts);
break;
case CONTEXT_TYPES:
context_types_buttons(sa, sbuts);
break;
case CONTEXT_SHADING:
context_shading_buttons(sa, sbuts);
break;
case CONTEXT_EDITING:
context_editing_buttons(sa, sbuts);
break;
case CONTEXT_SCRIPT:
context_script_buttons(sa, sbuts);
break;
case CONTEXT_LOGIC:
context_logic_buttons(sa, sbuts);
break;
}
uiClearButLock();
myortho2(-0.5, (float)(sa->winx)-.05, -0.5, (float)(sa->winy)-0.5);
draw_area_emboss(sa);
myortho2(v2d->cur.xmin, v2d->cur.xmax, v2d->cur.ymin, v2d->cur.ymax);
/* always in end */
sa->win_swap= WIN_BACK_OK;
}

@ -7299,7 +7299,7 @@ static void do_constraintbuts(unsigned short event)
/* ***************************<>******************************** */
void drawbutspace(ScrArea *sa, void *spacedata)
void drawbutspace_old(ScrArea *sa, void *spacedata)
{
SpaceButs *sbuts= curarea->spacedata.first;
View2D *v2d= &sbuts->v2d;

@ -0,0 +1,922 @@
/**
* $Id:
*
* ***** BEGIN GPL/BL DUAL 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. The Blender
* Foundation also sells licenses for use in proprietary software under
* the Blender License. See http://www.blender.org/BL/ for information
* about this.
*
* 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/BL DUAL LICENSE BLOCK *****
*/
#include <time.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "MEM_guardedalloc.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
#include "DNA_scene_types.h"
#include "BKE_global.h"
#include "BKE_main.h"
#include "BKE_library.h"
#include "BLI_blenlib.h"
#include "BSE_filesel.h"
#include "BIF_gl.h"
#include "BIF_graphics.h"
#include "BIF_keyval.h"
#include "BIF_mainqueue.h"
#include "BIF_resources.h"
#include "BIF_screen.h"
#include "BIF_mywindow.h"
#include "BIF_space.h"
#include "BIF_glutil.h"
#include "BIF_interface.h"
#include "BIF_toolbox.h"
#include "BIF_butspace.h"
#include "interface.h"
#include "mydevice.h"
#include "blendef.h"
/* -----includes for this file specific----- */
#include "render.h"
#include "DNA_image_types.h"
#include "BKE_writeavi.h"
#include "BKE_image.h"
#include "BIF_renderwin.h"
#include "BIF_writeimage.h"
#include "BIF_writeavicodec.h"
#ifdef WITH_QUICKTIME
#include "quicktime_export.h"
#endif
/* here the calls for scene buttons
- render
- world
- anim settings, audio
*/
static void output_pic(char *name)
{
strcpy(G.scene->r.pic, name);
allqueue(REDRAWBUTSRENDER, 0);
}
static void backbuf_pic(char *name)
{
Image *ima;
strcpy(G.scene->r.backbuf, name);
allqueue(REDRAWBUTSRENDER, 0);
ima= add_image(name);
if(ima) {
free_image_buffers(ima); /* force read again */
ima->ok= 1;
}
}
static void ftype_pic(char *name)
{
strcpy(G.scene->r.ftype, name);
allqueue(REDRAWBUTSRENDER, 0);
}
static void scene_change_set(Scene *sc, Scene *set) {
if (sc->set!=set) {
sc->set= set;
allqueue(REDRAWBUTSRENDER, 0);
allqueue(REDRAWVIEW3D, 0);
}
}
static void run_playanim(char *file) {
extern char bprogname[]; /* usiblender.c */
char str[FILE_MAXDIR+FILE_MAXFILE];
int pos[2], size[2];
calc_renderwin_rectangle(R.winpos, pos, size);
sprintf(str, "%s -a -p %d %d \"%s\"", bprogname, pos[0], pos[1], file);
system(str);
}
void do_render_panels(unsigned short event)
{
ScrArea *sa;
ID *id;
char file[FILE_MAXDIR+FILE_MAXFILE];
switch(event) {
case B_DORENDER:
BIF_do_render(0);
break;
case B_RTCHANGED:
allqueue(REDRAWALL, 0);
break;
case B_PLAYANIM:
#ifdef WITH_QUICKTIME
if(G.scene->r.imtype == R_QUICKTIME)
makeqtstring(file);
else
#endif
makeavistring(file);
if(BLI_exist(file)) {
run_playanim(file);
}
else {
makepicstring(file, G.scene->r.sfra);
if(BLI_exist(file)) {
run_playanim(file);
}
else error("Can't find image: %s", file);
}
break;
case B_DOANIM:
BIF_do_render(1);
break;
case B_FS_PIC:
sa= closest_bigger_area();
areawinset(sa->win);
activate_fileselect(FILE_SPECIAL, "SELECT OUTPUT PICTURES", G.scene->r.pic, output_pic);
break;
case B_FS_BACKBUF:
sa= closest_bigger_area();
areawinset(sa->win);
activate_fileselect(FILE_SPECIAL, "SELECT BACKBUF PICTURE", G.scene->r.backbuf, backbuf_pic);
break;
case B_IS_BACKBUF:
sa= closest_bigger_area();
areawinset(sa->win);
activate_imageselect(FILE_SPECIAL, "SELECT BACKBUF PICTURE", G.scene->r.backbuf, backbuf_pic);
break;
case B_FS_FTYPE:
sa= closest_bigger_area();
areawinset(sa->win);
activate_fileselect(FILE_SPECIAL, "SELECT FTYPE", G.scene->r.ftype, ftype_pic);
break;
case B_IS_FTYPE:
sa= closest_bigger_area();
areawinset(sa->win);
activate_imageselect(FILE_SPECIAL, "SELECT FTYPE", G.scene->r.ftype, ftype_pic);
break;
case B_PR_PAL:
G.scene->r.xsch= 720;
G.scene->r.ysch= 576;
G.scene->r.xasp= 54;
G.scene->r.yasp= 51;
G.scene->r.size= 100;
G.scene->r.frs_sec= 25;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 1;
BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9);
allqueue(REDRAWBUTSRENDER, 0);
allqueue(REDRAWVIEWCAM, 0);
break;
#ifdef WITH_QUICKTIME
case B_FILETYPEMENU:
allqueue(REDRAWBUTSRENDER, 0);
#if defined (_WIN32) || defined (__APPLE__)
// fall through to codec settings if this is the first
// time R_AVICODEC is selected for this scene.
if (((G.scene->r.imtype == R_AVICODEC)
&& (G.scene->r.avicodecdata == NULL)) ||
((G.scene->r.imtype == R_QUICKTIME)
&& (G.scene->r.qtcodecdata == NULL))) {
} else {
break;
}
#else /* libquicktime */
if(G.scene->r.imtype == R_QUICKTIME) {
/* i'm not sure if this should be here... */
/* set default quicktime codec */
if (!G.scene->r.qtcodecdata) {
G.scene->r.qtcodecdata = MEM_callocN(sizeof(QtCodecData),
"QtCodecData");
qtcodec_idx = 1;
}
qt_init_codecs();
if (qtcodec_idx < 1) qtcodec_idx = 1;
G.scene->r.qtcodecdata->fourcc =
qtcodecidx_to_fcc(qtcodec_idx-1);
qt_init_codecdata(G.scene->r.qtcodecdata);
/* I'm not sure if this is really needed, so don't remove it yet */
#if 0
/* get index of codec that can handle a given fourcc */
if (qtcodec_idx < 1)
qtcodec_idx = get_qtcodec_idx(G.scene->r.qtcodecdata->fourcc)+1;
/* no suitable codec found, alert user */
if (qtcodec_idx < -1) {
error("no suitable codec found!");
qtcodec_idx = 1;
}
#endif /* 0 */
}
#endif /*_WIN32 || __APPLE__ */
case B_SELECTCODEC:
#if defined (_WIN32) || defined (__APPLE__)
if ((G.scene->r.imtype == R_QUICKTIME)) /* || (G.scene->r.qtcodecdata)) */
get_qtcodec_settings();
#ifdef _WIN32
else
get_avicodec_settings();
#endif /* _WIN32 */
#else /* libquicktime */
if (!G.scene->r.qtcodecdata) {
G.scene->r.qtcodecdata = MEM_callocN(sizeof(QtCodecData),
"QtCodecData");
qtcodec_idx = 1;
}
if (qtcodec_idx < 1) {
qtcodec_idx = 1;
qt_init_codecs();
}
G.scene->r.qtcodecdata->fourcc = qtcodecidx_to_fcc(qtcodec_idx-1);
/* if the selected codec differs from the previous one, reinit it */
qt_init_codecdata(G.scene->r.qtcodecdata);
allqueue(REDRAWBUTSRENDER, 0);
#endif /* _WIN32 || __APPLE__ */
break;
#endif /* WITH_QUICKTIME */
case B_PR_FULL:
G.scene->r.xsch= 1280;
G.scene->r.ysch= 1024;
G.scene->r.xasp= 1;
G.scene->r.yasp= 1;
G.scene->r.size= 100;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 1;
BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9);
allqueue(REDRAWBUTSRENDER, 0);
allqueue(REDRAWVIEWCAM, 0);
break;
case B_PR_PRV:
G.scene->r.xsch= 640;
G.scene->r.ysch= 512;
G.scene->r.xasp= 1;
G.scene->r.yasp= 1;
G.scene->r.size= 50;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 1;
BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9);
allqueue(REDRAWVIEWCAM, 0);
allqueue(REDRAWBUTSRENDER, 0);
break;
case B_PR_CDI:
G.scene->r.xsch= 384;
G.scene->r.ysch= 280;
G.scene->r.xasp= 1;
G.scene->r.yasp= 1;
G.scene->r.size= 100;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 1;
BLI_init_rctf(&G.scene->r.safety, 0.15, 0.85, 0.15, 0.85);
allqueue(REDRAWVIEWCAM, 0);
allqueue(REDRAWBUTSRENDER, 0);
break;
case B_PR_PAL169:
G.scene->r.xsch= 720;
G.scene->r.ysch= 576;
G.scene->r.xasp= 64;
G.scene->r.yasp= 45;
G.scene->r.size= 100;
G.scene->r.frs_sec= 25;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 1;
BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9);
allqueue(REDRAWVIEWCAM, 0);
allqueue(REDRAWBUTSRENDER, 0);
break;
case B_PR_D2MAC:
G.scene->r.xsch= 1024;
G.scene->r.ysch= 576;
G.scene->r.xasp= 1;
G.scene->r.yasp= 1;
G.scene->r.size= 50;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 1;
BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9);
allqueue(REDRAWVIEWCAM, 0);
allqueue(REDRAWBUTSRENDER, 0);
break;
case B_PR_MPEG:
G.scene->r.xsch= 368;
G.scene->r.ysch= 272;
G.scene->r.xasp= 105;
G.scene->r.yasp= 100;
G.scene->r.size= 100;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 1;
BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9);
allqueue(REDRAWVIEWCAM, 0);
allqueue(REDRAWBUTSRENDER, 0);
break;
case B_PR_PC:
G.scene->r.xsch= 640;
G.scene->r.ysch= 480;
G.scene->r.xasp= 100;
G.scene->r.yasp= 100;
G.scene->r.size= 100;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 1;
BLI_init_rctf(&G.scene->r.safety, 0.0, 1.0, 0.0, 1.0);
allqueue(REDRAWVIEWCAM, 0);
allqueue(REDRAWBUTSRENDER, 0);
break;
case B_PR_PRESET:
G.scene->r.xsch= 720;
G.scene->r.ysch= 576;
G.scene->r.xasp= 54;
G.scene->r.yasp= 51;
G.scene->r.size= 100;
G.scene->r.mode= R_OSA+R_SHADOW+R_FIELDS;
G.scene->r.imtype= R_TARGA;
G.scene->r.xparts= G.scene->r.yparts= 1;
BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9);
allqueue(REDRAWVIEWCAM, 0);
allqueue(REDRAWBUTSRENDER, 0);
break;
case B_PR_PANO:
G.scene->r.xsch= 36;
G.scene->r.ysch= 176;
G.scene->r.xasp= 115;
G.scene->r.yasp= 100;
G.scene->r.size= 100;
G.scene->r.mode |= R_PANORAMA;
G.scene->r.xparts= 16;
G.scene->r.yparts= 1;
BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9);
allqueue(REDRAWVIEWCAM, 0);
allqueue(REDRAWBUTSRENDER, 0);
break;
case B_PR_NTSC:
G.scene->r.xsch= 720;
G.scene->r.ysch= 480;
G.scene->r.xasp= 10;
G.scene->r.yasp= 11;
G.scene->r.size= 100;
G.scene->r.frs_sec= 30;
G.scene->r.mode &= ~R_PANORAMA;
G.scene->r.xparts= G.scene->r.yparts= 1;
BLI_init_rctf(&G.scene->r.safety, 0.1, 0.9, 0.1, 0.9);
allqueue(REDRAWBUTSRENDER, 0);
allqueue(REDRAWVIEWCAM, 0);
break;
case B_SETBROWSE:
id= (ID*) G.scene->set;
if (G.buts->menunr==-2) {
activate_databrowse(id, ID_SCE, 0, B_SETBROWSE, &G.buts->menunr, do_render_panels);
} else if (G.buts->menunr>0) {
Scene *newset= (Scene*) BLI_findlink(&G.main->scene, G.buts->menunr-1);
if (newset==G.scene)
error("Not allowed");
else if (newset)
scene_change_set(G.scene, newset);
}
break;
case B_CLEARSET:
scene_change_set(G.scene, NULL);
break;
}
}
static uiBlock *edge_render_menu(void *arg_unused)
{
uiBlock *block;
block= uiNewBlock(&curarea->uiblocks,
"edge render", UI_EMBOSSX, UI_HELV,
curarea->win);
/* use this for a fake extra empy space around the buttons */
uiDefBut(block, LABEL, 0, "",
/* 285, -20, 230, 100, NULL, */
285, -20, 230, 120, NULL,
0, 0, 0, 0, "");
uiDefButS(block, NUM, 0,"Eint:",
295,50,70,19,
&G.scene->r.edgeint, 0.0, 255.0, 0, 0,
"Sets edge intensity for Toon shading");
uiBlockSetCol(block, BUTGREEN);
uiDefButI(block, TOG, 0,"Shift",
365,50,70,19,
&G.compat, 0, 0, 0, 0,
"For unified renderer: use old offsets for edges");
uiDefButI(block, TOG, 0,"All", 435,50,70,19,
&G.notonlysolid, 0, 0, 0, 0,
"For unified renderer: also consider transparent "
"faces for toon shading");
/* colour settings for the toon shading */
uiBlockSetCol(block, BUTGREY);
uiDefButF(block, COL, B_EDGECOLSLI, "",
295,-10,30,60,
&(G.scene->r.edgeR), 0, 0, 0, 0,
"");
uiDefButF(block, NUMSLI, 0, "R ",
325, 30, 180,19,
&G.scene->r.edgeR, 0.0, 1.0, B_EDGECOLSLI, 0,
"For unified renderer: Colour for edges in toon shading mode.");
uiDefButF(block, NUMSLI, 0, "G ",
325, 10, 180,19,
&G.scene->r.edgeG, 0.0, 1.0, B_EDGECOLSLI, 0,
"For unified renderer: Colour for edges in toon shading mode.");
uiDefButF(block, NUMSLI, 0, "B ",
325, -10, 180,19,
&G.scene->r.edgeB, 0.0, 1.0, B_EDGECOLSLI, 0,
"For unified renderer: Colour for edges in toon shading mode.");
uiDefButS(block, NUM, 0,"AntiShift",
365,70,140,19,
&(G.scene->r.same_mat_redux), 0, 255.0, 0, 0,
"For unified renderer: reduce intensity on boundaries "
"with identical materials with this number.");
uiBlockSetDirection(block, UI_TOP);
return block;
}
static uiBlock *post_render_menu(void *arg_unused)
{
uiBlock *block;
block= uiNewBlock(&curarea->uiblocks, "post render", UI_EMBOSSX, UI_HELV, curarea->win);
/* use this for a fake extra empy space around the buttons */
uiDefBut(block, LABEL, 0, "", -10, 10, 200, 80, NULL, 0, 0, 0, 0, "");
uiDefButF(block, NUMSLI, 0,"Add:", 0,60,180,19,
&G.scene->r.postadd, -1.0, 1.0, 0, 0, "");
uiDefButF(block, NUMSLI, 0,"Mul:", 0,40,180,19,
&G.scene->r.postmul, 0.01, 4.0, 0, 0, "");
uiDefButF(block, NUMSLI, 0,"Gamma:", 0,20,180,19,
&G.scene->r.postgamma, 0.2, 2.0, 0, 0, "");
uiBlockSetDirection(block, UI_TOP);
return block;
}
static uiBlock *framing_render_menu(void *arg_unused)
{
uiBlock *block;
short yco = 60, xco = 0;
int randomcolorindex = 1234;
block= uiNewBlock(&curarea->uiblocks, "framing_options", UI_EMBOSSX, UI_HELV, curarea->win);
/* use this for a fake extra empy space around the buttons */
uiDefBut(block, LABEL, 0, "", -10, -10, 300, 100, NULL, 0, 0, 0, 0, "");
uiDefBut(block, LABEL, B_NOP, "Framing:", xco, yco, 68,19, 0, 0, 0, 0, 0, "");
uiDefButC(block, ROW, 0, "Stretch", xco += 70, yco, 68, 19, &G.scene->framing.type, 1.0, SCE_GAMEFRAMING_SCALE , 0, 0, "Stretch or squeeze the viewport to fill the display window");
uiDefButC(block, ROW, 0, "Expose", xco += 70, yco, 68, 19, &G.scene->framing.type, 1.0, SCE_GAMEFRAMING_EXTEND, 0, 0, "Show the entire viewport in the display window, viewing more horizontally or vertically");
uiDefButC(block, ROW, 0, "Bars", xco += 70, yco, 68, 19, &G.scene->framing.type, 1.0, SCE_GAMEFRAMING_BARS , 0, 0, "Show the entire viewport in the display window, using bar horizontally or vertically");
yco -= 20;
xco = 35;
uiDefButF(block, COL, randomcolorindex, "", 0, yco - 58 + 18, 33, 58, &G.scene->framing.col[0], 0, 0, 0, 0, "");
uiDefButF(block, NUMSLI, 0, "R ", xco,yco,243,18, &G.scene->framing.col[0], 0.0, 1.0, randomcolorindex, 0, "Set the red component of the bars");
yco -= 20;
uiDefButF(block, NUMSLI, 0, "G ", xco,yco,243,18, &G.scene->framing.col[1], 0.0, 1.0, randomcolorindex, 0, "Set the green component of the bars");
yco -= 20;
uiDefButF(block, NUMSLI, 0, "B ", xco,yco,243,18, &G.scene->framing.col[2], 0.0, 1.0, randomcolorindex, 0, "Set the blue component of the bars");
uiBlockSetDirection(block, UI_TOP);
return block;
}
static char *imagetype_pup(void)
{
static char string[1024];
char formatstring[1024];
strcpy(formatstring, "Save image as: %%t|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d|%s %%x%d");
#ifdef __sgi
strcat(formatstring, "|%s %%x%d"); // add space for Movie
#endif
strcat(formatstring, "|%s %%x%d"); // add space for PNG
#ifdef _WIN32
strcat(formatstring, "|%s %%x%d"); // add space for AVI Codec
#endif
#ifdef WITH_QUICKTIME
if(G.have_quicktime)
strcat(formatstring, "|%s %%x%d"); // add space for Quicktime
#endif
if(G.have_quicktime) {
sprintf(string, formatstring,
"AVI Raw", R_AVIRAW,
"AVI Jpeg", R_AVIJPEG,
#ifdef _WIN32
"AVI Codec", R_AVICODEC,
#endif
#ifdef WITH_QUICKTIME
"QuickTime", R_QUICKTIME,
#endif
"Targa", R_TARGA,
"Targa Raw", R_RAWTGA,
"PNG", R_PNG,
"Jpeg", R_JPEG90,
"HamX", R_HAMX,
"Iris", R_IRIS,
"Iris + Zbuffer", R_IRIZ,
"Ftype", R_FTYPE,
"Movie", R_MOVIE
);
} else {
sprintf(string, formatstring,
"AVI Raw", R_AVIRAW,
"AVI Jpeg", R_AVIJPEG,
#ifdef _WIN32
"AVI Codec", R_AVICODEC,
#endif
"Targa", R_TARGA,
"Targa Raw", R_RAWTGA,
"PNG", R_PNG,
"Jpeg", R_JPEG90,
"HamX", R_HAMX,
"Iris", R_IRIS,
"Iris + Zbuffer", R_IRIZ,
"Ftype", R_FTYPE,
"Movie", R_MOVIE
);
}
return (string);
}
#ifdef _WIN32
static char *avicodec_str(void)
{
static char string[1024];
sprintf(string, "Codec: %s", G.scene->r.avicodecdata->avicodecname);
return string;
}
#endif
static void test_scenepoin_but(char *name, ID **idpp)
{
ID *id;
if( *idpp ) (*idpp)->us--;
id= G.main->scene.first;
while(id) {
if( strcmp(name, id->name+2)==0 ) {
*idpp= id;
id_us_plus(id);
return;
}
id= id->next;
}
*idpp= 0;
}
static void render_panel_output()
{
ID *id;
int a,b;
uiBlock *block;
char *strp;
block= uiNewBlock(&curarea->uiblocks, "render_panel_output", UI_EMBOSSX, UI_HELV, curarea->win);
uiNewPanel(curarea, block, "Output", "Render", 0, 0, 318, 204);
if( uiIsPanelClosed(block) ) return; // does draw when closed
uiDefBut(block, TEX,0,"", 30, 170, 268, 19,G.scene->r.pic, 0.0,79.0, 0, 0, "Directory/name to save rendered Pics to");
uiDefBut(block, BUT,B_FS_PIC," ", 8, 170, 20, 19, 0, 0, 0, 0, 0, "Open Fileselect to get Pics dir/name");
uiDefBut(block, TEX,0,"", 30, 148, 268, 19,G.scene->r.backbuf, 0.0,79.0, 0, 0, "Image to use as background for rendering");
uiDefBut(block, BUT,B_FS_BACKBUF," ", 15, 148, 10, 19, 0, 0, 0, 0, 0, "Open Fileselect to get Backbuf image");
uiDefBut(block, TEX,0,"", 30, 125, 268, 19,G.scene->r.ftype,0.0,79.0, 0, 0, "Image to use with FTYPE Image type");
uiDefBut(block, BUT,B_FS_FTYPE," ", 15, 125, 10, 19, 0, 0, 0, 0, 0, "Open Fileselect to get Ftype image");
uiDefIconBut(block, BUT, B_CLEARSET, ICON_X, 131, 95, 20, 19, 0, 0, 0, 0, 0, "Remove Set link");
uiBlockSetCol(block, BUTSALMON);
uiDefBut(block, BUT,B_IS_BACKBUF," ", 8, 148, 10, 19, 0, 0, 0, 0, 0, "Open Imageselect to get Backbuf image");
uiDefBut(block, BUT,B_IS_FTYPE," ", 8, 125, 10, 19, 0, 0, 0, 0, 0, "Open Imageselect to get Ftype image");
uiBlockSetCol(block, BUTGREY);
/* SET BUTTON */
id= (ID *)G.scene->set;
IDnames_to_pupstring(&strp, NULL, NULL, &(G.main->scene), id, &(G.buts->menunr));
if(strp[0])
uiDefButS(block, MENU, B_SETBROWSE, strp, 8, 96, 20, 19, &(G.buts->menunr), 0, 0, 0, 0, "Scene to link as a Set");
MEM_freeN(strp);
uiBlockSetCol(block, BUTBLUE);
if(G.scene->set) {
uiSetButLock(1, NULL);
uiDefIDPoinBut(block, test_scenepoin_but, 0, "", 25, 97, 104, 19, &(G.scene->set), "Name of the Set");
uiClearButLock();
}
uiDefButS(block, TOG|BIT|0, 0,"Backbuf", 8, 70, 62, 19, &G.scene->r.bufflag, 0, 0, 0, 0, "Enable/Disable use of Backbuf image");
uiBlockSetCol(block, BUTGREY);
for(b=0; b<3; b++)
for(a=0; a<3; a++)
uiDefButS(block, TOG|BIT|(3*b+a), 800,"", (short)(9+18*a),(short)(7+12*b),16,10, &R.winpos, 0, 0, 0, 0, "Render window placement on screen");
uiDefButS(block, ROW, B_REDR, "DispView", 72, 7, 65, 19, &R.displaymode, 0.0, (float)R_DISPLAYVIEW, 0, 0, "Sets render output to display in 3D view");
uiDefButS(block, ROW, B_REDR, "DispWin", 139, 7, 62, 19, &R.displaymode, 0.0, (float)R_DISPLAYWIN, 0, 0, "Sets render output to display in a seperate window");
uiDefButS(block, TOG|BIT|4, 0, "Extensions", 228, 8, 67, 18, &G.scene->r.scemode, 0.0, 0.0, 0, 0, "Adds extensions to the output when rendering animations");
/* Toon shading buttons */
uiDefButS(block, TOG|BIT|5, 0,"Edge", 154, 70, 47, 19, &G.scene->r.mode, 0, 0, 0, 0, "Enable Toon shading");
uiDefBlockBut(block, edge_render_menu, NULL, "Edge Settings |>> ", 204, 71, 93, 19, "Display edge settings");
/* unified render buttons */
if(G.scene->r.mode & R_UNIFIED) {
uiDefBlockBut(block, post_render_menu, NULL, "Post process |>> ", 205, 48, 92, 19, "Only for unified render");
if (G.scene->r.mode & R_GAMMA) {
uiDefButF(block, NUMSLI, 0,"Gamma:", 8, 48, 143, 19,
&(G.scene->r.gamma), 0.2, 5.0, B_GAMMASLI, 0,
"The gamma value for blending oversampled images (1.0 = no correction).");
}
}
uiScalePanelBlock(block); // scales and centers
uiDrawBlock(block);
}
static void render_panel_render()
{
uiBlock *block;
block= uiNewBlock(&curarea->uiblocks, "render_panel_render", UI_EMBOSSX, UI_HELV, curarea->win);
uiNewPanel(curarea, block, "Render", "Render", 320, 0, 318, 204);
if( uiIsPanelClosed(block) ) return; // does draw when closed
uiBlockSetCol(block, BUTSALMON);
uiDefBut(block, BUT,B_DORENDER,"RENDER", 369,142,192,47, 0, 0, 0, 0, 0, "Start the rendering");
uiBlockSetCol(block, BUTGREY);
uiDefButS(block, TOG|BIT|0, 0, "OSA", 369,114,124,20,&G.scene->r.mode, 0, 0, 0, 0, "Enables Oversampling (Anti-aliasing)");
uiDefButF(block, NUM,B_DIFF,"Bf:", 495,90,65,20,&G.scene->r.blurfac, 0.01, 5.0, 10, 0, "Sets motion blur factor");
uiDefButS(block, TOG|BIT|14, 0, "MBLUR", 495,114,66,20,&G.scene->r.mode, 0, 0, 0, 0, "Enables Motion Blur calculation");
uiDefButS(block, ROW,B_DIFF,"5", 369,90,29,20,&G.scene->r.osa,2.0,5.0, 0, 0, "Sets oversample level to 5");
uiDefButS(block, ROW,B_DIFF,"8", 400,90,29,20,&G.scene->r.osa,2.0,8.0, 0, 0, "Sets oversample level to 8 (Recommended)");
uiDefButS(block, ROW,B_DIFF,"11", 431,90,33,20,&G.scene->r.osa,2.0,11.0, 0, 0, "Sets oversample level to 11");
uiDefButS(block, ROW,B_DIFF,"16", 466,90,28,20,&G.scene->r.osa,2.0,16.0, 0, 0, "Sets oversample level to 16");
uiDefButS(block, NUM,B_DIFF,"Xparts:", 369,42,99,31,&G.scene->r.xparts,1.0, 64.0, 0, 0, "Sets the number of horizontal parts to render image in (For panorama sets number of camera slices)");
uiDefButS(block, NUM,B_DIFF,"Yparts:", 472,42,86,31,&G.scene->r.yparts,1.0, 64.0, 0, 0, "Sets the number of vertical parts to render image in");
uiDefButS(block, ROW,800,"Sky", 369,11,38,24,&G.scene->r.alphamode,3.0,0.0, 0, 0, "Fill background with sky");
uiDefButS(block, ROW,800,"Premul", 410,11,54,24,&G.scene->r.alphamode,3.0,1.0, 0, 0, "Multiply alpha in advance");
uiDefButS(block, ROW,800,"Key", 467,11,44,24,&G.scene->r.alphamode,3.0,2.0, 0, 0, "Alpha and colour values remain unchanged");
uiBlockSetCol(block, BUTGREY);
uiDefButS(block, TOG|BIT|1,0,"Shadow", 565,167,61,22, &G.scene->r.mode, 0, 0, 0, 0, "Enable shadow calculation");
uiDefButS(block, TOG|BIT|4,0,"EnvMap", 626,167,61,22, &G.scene->r.mode, 0, 0, 0, 0, "Enable environment map renering");
uiDefButS(block, TOG|BIT|10,0,"Pano", 565,142,61,22, &G.scene->r.mode, 0, 0, 0, 0, "Enable panorama rendering (output width is multiplied by Xparts)");
uiDefButS(block, TOG|BIT|8,0,"Radio", 626,142,61,22, &G.scene->r.mode, 0, 0, 0, 0, "Enable radiosity rendering");
uiDefButS(block, ROW,B_DIFF,"100%", 565,114,121,20,&G.scene->r.size,1.0,100.0, 0, 0, "Set render size to defined size");
uiDefButS(block, ROW,B_DIFF,"75%", 565,90,36,20,&G.scene->r.size,1.0,75.0, 0, 0, "Set render size to 3/4 of defined size");
uiDefButS(block, ROW,B_DIFF,"50%", 604,90,40,20,&G.scene->r.size,1.0,50.0, 0, 0, "Set render size to 1/2 of defined size");
uiDefButS(block, ROW,B_DIFF,"25%", 647,90,39,20,&G.scene->r.size,1.0,25.0, 0, 0, "Set render size to 1/4 of defined size");
uiDefButS(block, TOG|BIT|6,0,"Fields", 564,42,90,31,&G.scene->r.mode, 0, 0, 0, 0, "Enables field rendering");
uiDefButS(block, TOG|BIT|13,0,"Odd", 655,57,30,16,&G.scene->r.mode, 0, 0, 0, 0, "Enables Odd field first rendering (Default: Even field)");
uiDefButS(block, TOG|BIT|7,0,"x", 655,42,30,15,&G.scene->r.mode, 0, 0, 0, 0, "Disables time difference in field calculations");
uiDefButS(block, TOG|BIT|9,REDRAWVIEWCAM, "Border", 565,11,58,24, &G.scene->r.mode, 0, 0, 0, 0, "Render a small cut-out of the image");
uiDefButS(block, TOG|BIT|2,0, "Gamma", 626,11,58,24, &G.scene->r.mode, 0, 0, 0, 0, "Enable gamma correction");
uiScalePanelBlock(block); // scales and centers
uiDrawBlock(block);
}
static void render_panel_anim()
{
uiBlock *block;
block= uiNewBlock(&curarea->uiblocks, "render_panel_anim", UI_EMBOSSX, UI_HELV, curarea->win);
uiNewPanel(curarea, block, "Anim", "Render", 640, 0, 318, 204);
if( uiIsPanelClosed(block) ) return; // does draw when closed
uiBlockSetCol(block, BUTSALMON);
uiDefBut(block, BUT,B_DOANIM,"ANIM", 692,142,192,47, 0, 0, 0, 0, 0, "Start rendering a sequence");
uiBlockSetCol(block, BUTBLUE);
uiDefButS(block, TOG|BIT|0, 0, "Do Sequence", 692,114,192,20, &G.scene->r.scemode, 0, 0, 0, 0, "Enables sequence output rendering (Default: 3D rendering)");
uiDefButS(block, TOG|BIT|1, 0, "Render Daemon", 692,90,192,20, &G.scene->r.scemode, 0, 0, 0, 0, "Let external network render current scene");
uiBlockSetCol(block, BUTGREY);
uiDefBut(block, BUT,B_PLAYANIM, "PLAY", 692,40,94,33, 0, 0, 0, 0, 0, "Play animation of rendered images/avi (searches Pics: field)");
uiDefButS(block, NUM, B_RTCHANGED, "rt:", 790,40,95,33, &G.rt, 0.0, 256.0, 0, 0, "General testing/debug button");
uiDefButS(block, NUM,REDRAWSEQ,"Sta:", 692,10,94,24, &G.scene->r.sfra,1.0,18000.0, 0, 0, "The start frame of the animation");
uiDefButS(block, NUM,REDRAWSEQ,"End:", 790,10,95,24, &G.scene->r.efra,1.0,18000.0, 0, 0, "The end frame of the animation");
uiScalePanelBlock(block); // scales and centers
uiDrawBlock(block);
}
static void render_panel_format()
{
uiBlock *block;
int yofs;
block= uiNewBlock(&curarea->uiblocks, "render_panel_format", UI_EMBOSSX, UI_HELV, curarea->win);
uiNewPanel(curarea, block, "Format", "Render", 960, 0, 318, 204);
if( uiIsPanelClosed(block) ) return; // does draw when closed
uiDefBlockBut(block, framing_render_menu, NULL, "Game framing settings |>> ", 892, 169, 227, 20, "Display game framing settings");
uiDefButS(block, NUM,REDRAWVIEWCAM,"SizeX:", 892 ,136,112,27, &G.scene->r.xsch, 4.0, 10000.0, 0, 0, "The image width in pixels");
uiDefButS(block, NUM,REDRAWVIEWCAM,"SizeY:", 1007,136,112,27, &G.scene->r.ysch, 4.0,10000.0, 0, 0, "The image height in scanlines");
uiDefButS(block, NUM,REDRAWVIEWCAM,"AspX:", 892 ,114,112,20, &G.scene->r.xasp, 1.0,200.0, 0, 0, "The horizontal aspect ratio");
uiDefButS(block, NUM,REDRAWVIEWCAM,"AspY:", 1007,114,112,20, &G.scene->r.yasp, 1.0,200.0, 0, 0, "The vertical aspect ratio");
yofs = 54;
#ifdef __sgi
yofs = 76;
uiDefButS(block, NUM,B_DIFF,"MaxSize:", 892,32,165,20, &G.scene->r.maximsize, 0.0, 500.0, 0, 0, "Maximum size per frame to save in an SGI movie");
uiBlockSetCol(block, BUTGREEN);
uiDefButS(block, TOG|BIT|12,0,"Cosmo", 1059,32,60,20, &G.scene->r.mode, 0, 0, 0, 0, "Attempt to save SGI movies using Cosmo hardware");
uiBlockSetCol(block, BUTGREY);
#endif
uiDefButS(block, MENU,B_FILETYPEMENU,imagetype_pup(), 892,yofs,174,20, &G.scene->r.imtype, 0, 0, 0, 0, "Images are saved in this file format");
uiBlockSetCol(block, BUTGREEN);
uiDefButS(block, TOG|BIT|11,0, "Crop", 1068,yofs,51,20, &G.scene->r.mode, 0, 0, 0, 0, "Exclude border rendering from total image");
uiBlockSetCol(block, BUTGREY);
yofs -= 22;
if(G.scene->r.quality==0) G.scene->r.quality= 90;
#ifdef WITH_QUICKTIME
if (G.scene->r.imtype == R_AVICODEC || G.scene->r.imtype == R_QUICKTIME) {
#else /* WITH_QUICKTIME */
if (0) {
#endif
if(G.scene->r.imtype == R_QUICKTIME) {
#ifdef WITH_QUICKTIME
#if defined (_WIN32) || defined (__APPLE__)
glColor3f(0.65, 0.65, 0.7);
glRecti(892,yofs+46,892+225,yofs+45+20);
if(G.scene->r.qtcodecdata == NULL)
uiDefBut(block, LABEL, 0, "Codec: not set", 892,yofs+44,225,20, 0, 0, 0, 0, 0, "");
else
uiDefBut(block, LABEL, 0, G.scene->r.qtcodecdata->qtcodecname, 892,yofs+44,225,20, 0, 0, 0, 0, 0, "");
uiDefBut(block, BUT,B_SELECTCODEC, "Set codec", 892,yofs,112,20, 0, 0, 0, 0, 0, "Set codec settings for Quicktime");
#else /* libquicktime */
if (!G.scene->r.qtcodecdata) G.scene->r.qtcodecdata = MEM_callocN(sizeof(QtCodecData), "QtCodecData");
uiDefButI(block, MENU, B_SELECTCODEC, qtcodecs_pup(), 892,yofs, 112, 20, &qtcodec_idx, 0, 0, 0, 0, "Codec");
/* make sure the codec stored in G.scene->r.qtcodecdata matches the selected
* one, especially if it's not set.. */
if (!G.scene->r.qtcodecdata->fourcc) {
G.scene->r.qtcodecdata->fourcc = qtcodecidx_to_fcc(qtcodec_idx-1);
qt_init_codecdata(G.scene->r.qtcodecdata);
}
yofs -= 22;
uiDefBlockBut(block, qtcodec_menu, NULL, "Codec Settings |>> ", 892,yofs, 227, 20, "Edit Codec settings for QuickTime");
yofs +=22;
#endif /* libquicktime */
#endif /* WITH_QUICKTIME */
} else {
#ifdef _WIN32
glColor3f(0.65, 0.65, 0.7);
glRecti(892,yofs+46,892+225,yofs+45+20);
if(G.scene->r.avicodecdata == NULL)
uiDefBut(block, LABEL, 0, "Codec: not set.", 892,yofs+43,225,20, 0, 0, 0, 0, 0, "");
else
uiDefBut(block, LABEL, 0, avicodec_str(), 892,yofs+43,225,20, 0, 0, 0, 0, 0, "");
#endif
uiDefBut(block, BUT,B_SELECTCODEC, "Set codec", 892,yofs,112,20, 0, 0, 0, 0, 0, "Set codec settings for AVI");
}
} else {
uiDefButS(block, NUM,0, "Quality:", 892,yofs,112,20, &G.scene->r.quality, 10.0, 100.0, 0, 0, "Quality setting for JPEG images, AVI Jpeg and SGI movies");
}
uiDefButS(block, NUM,REDRAWSEQ,"Frs/sec:", 1006,yofs,113,20, &G.scene->r.frs_sec, 1.0, 120.0, 100.0, 0, "Frames per second");
uiDefButS(block, ROW,B_DIFF,"BW", 892, 10,74,20, &G.scene->r.planes, 5.0,(float)R_PLANESBW, 0, 0, "Images are saved with BW (grayscale) data");
uiDefButS(block, ROW,B_DIFF,"RGB", 968, 10,74,20, &G.scene->r.planes, 5.0,(float)R_PLANES24, 0, 0, "Images are saved with RGB (color) data");
uiDefButS(block, ROW,B_DIFF,"RGBA", 1044, 10,75,20, &G.scene->r.planes, 5.0,(float)R_PLANES32, 0, 0, "Images are saved with RGB and Alpha data (if supported)");
uiDefBut(block, BUT,B_PR_PAL, "PAL", 1146,170,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 720x576, Aspect ratio - 54x51, 25 fps");
uiDefBut(block, BUT,B_PR_NTSC, "NTSC", 1146,150,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 720x480, Aspect ratio - 10x11, 30 fps");
uiDefBut(block, BUT,B_PR_PRESET, "Default", 1146,130,100,18, 0, 0, 0, 0, 0, "Same as PAL, with render settings (OSA, Shadows, Fields)");
uiDefBut(block, BUT,B_PR_PRV, "Preview", 1146,110,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 640x512, Render size 50%");
uiDefBut(block, BUT,B_PR_PC, "PC", 1146,90,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 640x480, Aspect ratio - 100x100");
uiDefBut(block, BUT,B_PR_PAL169, "PAL 16:9",1146,70,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 720x576, Aspect ratio - 64x45");
uiDefBut(block, BUT,B_PR_PANO, "PANO", 1146,50,100,18, 0, 0, 0, 0, 0, "Standard panorama settings");
uiDefBut(block, BUT,B_PR_FULL, "FULL", 1146,30,100,18, 0, 0, 0, 0, 0, "Size preset: Image size - 1280x1024, Aspect ratio - 1x1");
uiDefButS(block, TOG|BIT|15, B_REDR, "Unified Renderer", 1146,10,100,18, &G.scene->r.mode, 0, 0, 0, 0, "Use the unified renderer.");
uiScalePanelBlock(block); // scales and centers
uiDrawBlock(block);
}
void render_panels()
{
render_panel_output();
render_panel_render();
render_panel_anim();
render_panel_format();
}

@ -126,7 +126,7 @@ void meshactionbuts(SpaceAction *saction, Key *key)
* correctly *grumble*
*/
mywinset(curarea->win);
myortho2(-0.5, curarea->winx+0.5, -0.5, curarea->winy+0.5);
myortho2(-0.5, curarea->winx-0.5, -0.5, curarea->winy-0.5);
sprintf(str, "actionbuttonswin %d", curarea->win);
block= uiNewBlock (&curarea->uiblocks, str,
@ -302,7 +302,7 @@ static void draw_channel_names(void)
bAction *act;
Key *key;
myortho2 (0, NAMEWIDTH, G.v2d->cur.ymin, G.v2d->cur.ymax); // Scaling
myortho2(0, NAMEWIDTH, G.v2d->cur.ymin, G.v2d->cur.ymax); // Scaling
/* Blank out the area */
if(curarea->winx>SCROLLB+10 && curarea->winy>SCROLLH+10) {
@ -343,8 +343,7 @@ static void draw_channel_names(void)
}
}
myortho2 (0, NAMEWIDTH, 0,
(ofsy+G.v2d->mask.ymax) -
myortho2(0, NAMEWIDTH, 0, (ofsy+G.v2d->mask.ymax) -
(ofsy+G.v2d->mask.ymin-SCROLLB)); // Scaling
glShadeModel(GL_SMOOTH);
@ -615,8 +614,7 @@ void drawactionspace(ScrArea *sa, void *spacedata)
glClearColor(.45, .45, .45, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
myortho2 (G.v2d->cur.xmin, G.v2d->cur.xmax,
G.v2d->cur.ymin, G.v2d->cur.ymax);
myortho2(G.v2d->cur.xmin, G.v2d->cur.xmax, G.v2d->cur.ymin, G.v2d->cur.ymax);
/* Draw backdrop */
calc_ipogrid();
@ -643,14 +641,13 @@ void drawactionspace(ScrArea *sa, void *spacedata)
ofsy+G.v2d->mask.ymin,
( ofsx+G.v2d->mask.xmax-1)-(ofsx+G.v2d->mask.xmin)+1,
( ofsy+G.v2d->mask.ymax-1)-( ofsy+G.v2d->mask.ymin)+1);
myortho2(G.v2d->cur.xmin, G.v2d->cur.xmax,
G.v2d->cur.ymin, G.v2d->cur.ymax);
myortho2(G.v2d->cur.xmin, G.v2d->cur.xmax, G.v2d->cur.ymin, G.v2d->cur.ymax);
draw_cfra_action();
/* Draw scroll */
mywinset(curarea->win);
mywinset(curarea->win); // reset scissor too
if(curarea->winx>SCROLLB+10 && curarea->winy>SCROLLH+10) {
myortho2(-0.5, curarea->winx+0.5, -0.5, curarea->winy+0.5);
myortho2(-0.5, curarea->winx-0.5, -0.5, curarea->winy-0.5);
if(G.v2d->scroll) drawscroll(0);
}
@ -664,6 +661,9 @@ void drawactionspace(ScrArea *sa, void *spacedata)
meshactionbuts(G.saction, key);
}
mywinset(curarea->win); // reset scissor too
myortho2(-0.5, curarea->winx-0.5, -0.5, curarea->winy-0.5);
draw_area_emboss(sa);
curarea->win_swap= WIN_BACK_OK;
}

@ -32,6 +32,7 @@
#include <stdio.h>
#include <math.h>
#include <string.h>
#ifdef HAVE_CONFIG_H
#include <config.h>
@ -115,7 +116,6 @@ static void scroll_prstr(float x, float y, float val, char dir, int disptype)
len= strlen(str);
if(dir=='h') x-= 4*len;
else y-= 4*len;
if(dir=='v' && disptype==IPO_DISPDEGR) {
str[len]= 186; /* Degree symbol */
@ -389,7 +389,7 @@ void test_view2d(View2D *v2d, int winx, int winy)
v2d->cur.xmax=v2d->cur.xmin+((float)winx);
if(v2d->keepzoom & V2D_KEEPZOOM) {
/* do not test for min/max: usiig curarea try to fixate zoom */
/* do not test for min/max: use curarea try to fixate zoom */
zoom= ((float)winx)/dx;
if(zoom<v2d->minzoom || zoom>v2d->maxzoom) {
@ -450,9 +450,6 @@ void test_view2d(View2D *v2d, int winx, int winy)
}
if(v2d->keeptot) {
dx= cur->xmax-cur->xmin;
dy= cur->ymax-cur->ymin;
@ -527,9 +524,9 @@ void test_view2d(View2D *v2d, int winx, int winy)
/* dx/dy is the total aspect */
/* this exception is for buttons...keepzoom doesnt work proper */
if(v2d->keepzoom) fac= dy;
else fac= dx/dy;
//if(v2d->keepzoom) fac= dy;
//else fac= dx/dy;
fac= dx/dy;
if(fac>1.0) {
/* portrait window: correct for x */
@ -574,23 +571,23 @@ void calc_scrollrcts(View2D *v2d, int winx, int winy)
if(v2d->scroll & L_SCROLL) {
v2d->vert= v2d->mask;
v2d->vert.xmax= SCROLLB;
v2d->mask.xmin= SCROLLB+1;
v2d->mask.xmin= SCROLLB;
}
else if(v2d->scroll & R_SCROLL) {
v2d->vert= v2d->mask;
v2d->vert.xmin= v2d->vert.xmax-SCROLLB;
v2d->mask.xmax= v2d->vert.xmin-1;
v2d->mask.xmax= v2d->vert.xmin;
}
if(v2d->scroll & B_SCROLL) {
v2d->hor= v2d->mask;
v2d->hor.ymax= SCROLLH;
v2d->mask.ymin= SCROLLH+1;
v2d->mask.ymin= SCROLLH;
}
else if(v2d->scroll & T_SCROLL) {
v2d->hor= v2d->mask;
v2d->hor.ymin= v2d->hor.ymax-SCROLLH;
v2d->mask.ymax= v2d->hor.ymin-1;
v2d->mask.ymax= v2d->hor.ymin;
}
}
}
@ -643,42 +640,38 @@ void drawscroll(int disptype)
{
rcti vert, hor;
float fac, dfac, val, fac2, tim;
unsigned int dark, darker, light;
unsigned int darker, dark, light, lighter;
vert= (G.v2d->vert);
hor= (G.v2d->hor);
darker= 0x525252;
dark= 0x656565;
darker= 0x404040;
dark= 0x858585;
light= 0x989898;
lighter= 0xc0c0c0;
cpack(dark);
if(G.v2d->scroll & HOR_SCROLL) {
cpack(light);
glRecti(hor.xmin, hor.ymin, hor.xmax, hor.ymax);
glColor3ub(0, 0, 0);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glRecti(hor.xmin, hor.ymin, hor.xmax, hor.ymax); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
/* slider */
fac= (G.v2d->cur.xmin- G.v2d->tot.xmin)/(G.v2d->tot.xmax-G.v2d->tot.xmin);
if(fac<0.0) fac= 0.0;
horxmin= hor.xmin+fac*(hor.xmax-hor.xmin) + 1;
horxmin= hor.xmin+fac*(hor.xmax-hor.xmin);
fac= (G.v2d->cur.xmax- G.v2d->tot.xmin)/(G.v2d->tot.xmax-G.v2d->tot.xmin);
if(fac>1.0) fac= 1.0;
horxmax= hor.xmin+fac*(hor.xmax-hor.xmin) -1;
horxmax= hor.xmin+fac*(hor.xmax-hor.xmin);
if(horxmin > horxmax-2) horxmin= horxmax-2;
glColor3ub(0x78, 0x78, 0x78);
glRecti(horxmin, hor.ymin+1, horxmax, hor.ymax-1);
cpack(light);
sdrawline(horxmin, hor.ymax-1, horxmax, hor.ymax-1); /* top */
sdrawline(horxmin, hor.ymin+1, horxmin, hor.ymax-1); /* left */
cpack(darker);
sdrawline(horxmin, hor.ymin+1, horxmax, hor.ymin+1); /* bottom */
sdrawline(horxmax, hor.ymin+1, horxmax, hor.ymax-1); /* right */
if(horxmin > horxmax) horxmin= horxmax;
cpack(dark);
glRecti(horxmin, hor.ymin, horxmax, hor.ymax);
/* decoration bright line */
cpack(lighter);
sdrawline(hor.xmin, hor.ymax, hor.xmax, hor.ymax);
/* the numbers: convert ipogrid_startx and -dx to scroll coordinates */
fac= (ipogrid_startx- G.v2d->cur.xmin)/(G.v2d->cur.xmax-G.v2d->cur.xmin);
fac= hor.xmin+fac*(hor.xmax-hor.xmin);
@ -708,35 +701,33 @@ void drawscroll(int disptype)
val+= ipogrid_dx;
}
}
cpack(dark);
if(G.v2d->scroll & VERT_SCROLL) {
cpack(light);
glRecti(vert.xmin, vert.ymin, vert.xmax, vert.ymax);
glColor3ub(0, 0, 0);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glRecti(vert.xmin, vert.ymin, vert.xmax, vert.ymax); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
/* slider */
fac= (G.v2d->cur.ymin- G.v2d->tot.ymin)/(G.v2d->tot.ymax-G.v2d->tot.ymin);
if(fac<0.0) fac= 0.0;
vertymin= vert.ymin+fac*(vert.ymax-vert.ymin) + 1;
vertymin= vert.ymin+fac*(vert.ymax-vert.ymin);
fac= (G.v2d->cur.ymax- G.v2d->tot.ymin)/(G.v2d->tot.ymax-G.v2d->tot.ymin);
if(fac>1.0) fac= 1.0;
vertymax= vert.ymin+fac*(vert.ymax-vert.ymin) -1;
vertymax= vert.ymin+fac*(vert.ymax-vert.ymin);
if(vertymin > vertymax-2) vertymin= vertymax-2;
if(vertymin > vertymax) vertymin= vertymax;
glColor3ub(0x78, 0x78, 0x78);
glRecti(vert.xmin+1, vertymin, vert.xmax-1, vertymax);
cpack(light);
sdrawline(vert.xmin+1, vertymax, vert.xmax-1, vertymax); /* top */
sdrawline(vert.xmin+1, vertymin, vert.xmin+1, vertymax); /* left */
cpack(dark);
glRecti(vert.xmin, vertymin, vert.xmax, vertymax);
/* decoration black line */
cpack(darker);
sdrawline(vert.xmin+1, vertymin, vert.xmax-1, vertymin); /* bottom */
sdrawline(vert.xmax-1, vertymin, vert.xmax-1, vertymax); /* right */
if(G.v2d->scroll & HOR_SCROLL)
sdrawline(vert.xmax, vert.ymin+SCROLLH, vert.xmax, vert.ymax);
else
sdrawline(vert.xmax, vert.ymin, vert.xmax, vert.ymax);
/* the numbers: convert ipogrid_starty and -dy to scroll coordinates */
fac= (ipogrid_starty- G.v2d->cur.ymin)/(G.v2d->cur.ymax-G.v2d->cur.ymin);
fac= vert.ymin+SCROLLH+fac*(vert.ymax-vert.ymin-SCROLLH);
@ -763,7 +754,7 @@ void drawscroll(int disptype)
glColor3ub(0, 0, 0);
val= ipogrid_starty;
while(fac < vert.ymax) {
scroll_prstr((float)(vert.xmax)-3.0, fac, val, 'v', disptype);
scroll_prstr((float)(vert.xmax)-14.0, fac, val, 'v', disptype);
fac+= dfac;
val+= ipogrid_dy;
}
@ -788,11 +779,13 @@ static void draw_ipobuts(SpaceIpo *sipo)
if(tot<area->winy) sipo->butofs= 0;
}
drawedge(v2d->mask.xmax+3, 0, v2d->mask.xmax+3, area->winy);
glColor3ub(0x7f, 0x70, 0x70);
glRects(v2d->mask.xmax+6, 0, area->winx, area->winy);
glRects(v2d->mask.xmax, 0, area->winx, area->winy);
cpack(0x0);
sdrawline(v2d->mask.xmax, 0, v2d->mask.xmax, area->winy);
if(sipo->totipo==0) return;
if(sipo->editipo==0) return;
@ -1412,7 +1405,7 @@ void drawipospace(ScrArea *sa, void *spacedata)
if(curarea->winx>SCROLLB+10 && curarea->winy>SCROLLH+10) {
/* ortho at pixel level curarea */
myortho2(-0.5, curarea->winx+0.5, -0.5, curarea->winy+0.5);
myortho2(-0.5, curarea->winx-0.5, -0.5, curarea->winy-0.5);
if(v2d->scroll) {
drawscroll(disptype);
@ -1427,6 +1420,9 @@ void drawipospace(ScrArea *sa, void *spacedata)
draw_ipogrid();
}
myortho2(-0.5, curarea->winx-0.5, -0.5, curarea->winy-0.5);
draw_area_emboss(sa);
curarea->win_swap= WIN_BACK_OK;
}
@ -1457,78 +1453,79 @@ void scroll_ipobuts()
}
}
/* total mess function, especially with mousewheel, needs cleanup badly (ton) */
int view2dzoom(unsigned short event)
{
float fac, dx, dy, wtemp;
short mval[2], mvalo[2];
areawinset(curarea->win); /* from buttons */
curarea->head_swap= 0;
getmouseco_areawin(mvalo);
while( (get_mbut()&(L_MOUSE|M_MOUSE)) ||
(event==WHEELUPMOUSE) ||
(event==WHEELDOWNMOUSE) ) {
/* regular mousewheel: zoom regular
* alt-shift mousewheel: zoom y only
* alt-ctrl mousewheel: zoom x only
*/
while( (get_mbut()&(L_MOUSE|M_MOUSE)) || (event==WHEELUPMOUSE) || (event==WHEELDOWNMOUSE) ) {
/* regular mousewheel: zoom regular
* alt-shift mousewheel: zoom y only
* alt-ctrl mousewheel: zoom x only
*/
if (event==WHEELUPMOUSE) {
if(U.uiflag & WHEELZOOMDIR)
wtemp = -0.1154;
wtemp = -0.0375;
else
wtemp = 0.1154;
wtemp = 0.03;
if(curarea->spacetype!=SPACE_BUTS) wtemp*= 3;
dx= (float)(wtemp*(G.v2d->cur.xmax-G.v2d->cur.xmin));
dy= (float)(wtemp*(G.v2d->cur.ymax-G.v2d->cur.ymin));
switch (G.qual & (LR_CTRLKEY|LR_SHIFTKEY|LR_ALTKEY)) {
case 0:
break;
case (LR_SHIFTKEY|LR_ALTKEY):
dx = 0;
break;
case (LR_CTRLKEY|LR_ALTKEY):
dy = 0;
break;
default:
return 0;
break;
}
}
switch (G.qual & (LR_CTRLKEY|LR_SHIFTKEY|LR_ALTKEY)) {
case 0:
break;
case (LR_SHIFTKEY|LR_ALTKEY):
dx = 0;
break;
case (LR_CTRLKEY|LR_ALTKEY):
dy = 0;
break;
default:
if(curarea->spacetype==SPACE_BUTS); // exception
else return 0;
break;
}
}
else if (event==WHEELDOWNMOUSE) {
if(U.uiflag & WHEELZOOMDIR)
wtemp = 0.1154;
wtemp = 0.03;
else
wtemp = -0.1154;
wtemp = -0.0375;
if(curarea->spacetype!=SPACE_BUTS) wtemp*= 3;
dx= (float)(wtemp*(G.v2d->cur.xmax-G.v2d->cur.xmin));
dy= (float)(wtemp*(G.v2d->cur.ymax-G.v2d->cur.ymin));
switch (G.qual & (LR_CTRLKEY|LR_SHIFTKEY|LR_ALTKEY)) {
case 0:
break;
case (LR_SHIFTKEY|LR_ALTKEY):
dx = 0;
break;
case (LR_CTRLKEY|LR_ALTKEY):
dy = 0;
break;
default:
return 0;
break;
}
}
else {
getmouseco_areawin(mval);
switch (G.qual & (LR_CTRLKEY|LR_SHIFTKEY|LR_ALTKEY)) {
case 0:
break;
case (LR_SHIFTKEY|LR_ALTKEY):
dx = 0;
break;
case (LR_CTRLKEY|LR_ALTKEY):
dy = 0;
break;
default:
if(curarea->spacetype==SPACE_BUTS);
else return 0;
break;
}
}
else {
getmouseco_areawin(mval);
fac= 0.001*(mval[0]-mvalo[0]);
dx= fac*(G.v2d->cur.xmax-G.v2d->cur.xmin);
fac= 0.001*(mval[1]-mvalo[1]);
dy= fac*(G.v2d->cur.ymax-G.v2d->cur.ymin);
}
}
if(mval[0]!=mvalo[0] || mval[1]!=mvalo[1]) {
G.v2d->cur.xmin+= dx;
@ -1537,17 +1534,17 @@ int view2dzoom(unsigned short event)
G.v2d->cur.ymin+= dy;
G.v2d->cur.ymax-= dy;
}
test_view2d(G.v2d, curarea->winx, curarea->winy); /* cur min max rects */
scrarea_do_windraw(curarea);
screen_swapbuffers();
}
else BIF_wait_for_statechange();
/* return if we were using the mousewheel
*/
if ( (event==WHEELUPMOUSE) || (event==WHEELDOWNMOUSE) ) return 1;
/* return if we were using the mousewheel
*/
if ( (event==WHEELUPMOUSE) || (event==WHEELDOWNMOUSE) ) return 1;
}
return 1;
return 1;
}
void center_currframe(void)
@ -1570,6 +1567,7 @@ void center_currframe(void)
curarea->head_swap= 0;
}
/* total mess function, especially with mousewheel, needs cleanup badly (ton) */
int view2dmove(unsigned short event)
{
/* return 1 when something was done */
@ -1585,10 +1583,12 @@ int view2dmove(unsigned short event)
* or if the mousewheel is being used.
* Return if zooming was done.
*/
if ( (G.qual & LR_CTRLKEY) ||
(event==WHEELUPMOUSE) ||
(event==WHEELDOWNMOUSE) ) {
if (view2dzoom(event)) {
if ( (G.qual & LR_CTRLKEY) || (event==WHEELUPMOUSE) || (event==WHEELDOWNMOUSE) ) {
/* patch for buttonswin, standard scroll no zoom */
if(curarea->spacetype==SPACE_BUTS && (G.qual & LR_CTRLKEY)==0);
else if (view2dzoom(event)) {
curarea->head_swap= 0;
return 0;
}
@ -1643,63 +1643,59 @@ int view2dmove(unsigned short event)
* is used with the ctrl key then scroll left
* and right.
*/
if (event==WHEELUPMOUSE) {
switch (G.qual & (LR_CTRLKEY|LR_SHIFTKEY|LR_ALTKEY)) {
case (LR_SHIFTKEY):
dx = 0.0;
dy= facy*10.0;
break;
case (LR_CTRLKEY):
dx= facx*10.0;
dy = 0.0;
break;
default:
return 0;
break;
}
}
else if (event==WHEELDOWNMOUSE) {
switch (G.qual & (LR_CTRLKEY|LR_SHIFTKEY|LR_ALTKEY)) {
case (LR_SHIFTKEY):
dx = 0.0;
dy= -facy*10.0;
break;
case (LR_CTRLKEY):
dx= -facx*10.0;
dy = 0.0;
break;
default:
return 0;
break;
}
}
else {
getmouseco_areawin(mval);
dx= facx*(mvalo[0]-mval[0]);
dy= facy*(mvalo[1]-mval[1]);
}
if (event==WHEELUPMOUSE || event==WHEELDOWNMOUSE) {
if(event==WHEELDOWNMOUSE) {
facx= -facx; facy= -facy;
}
switch (G.qual & (LR_CTRLKEY|LR_SHIFTKEY|LR_ALTKEY)) {
case (LR_SHIFTKEY):
dx = 0.0;
dy= facy*20.0;
break;
case (LR_CTRLKEY):
dx= facx*20.0;
dy = 0.0;
break;
default:
if(curarea->spacetype==SPACE_BUTS) {
if(G.buts->align==BUT_HORIZONTAL) {
dx= facx*30; dy= 0.0;
} else {
dx= 0.0; dy= facy*30;
}
}
else return 0;
break;
}
}
else {
getmouseco_areawin(mval);
dx= facx*(mvalo[0]-mval[0]);
dy= facy*(mvalo[1]-mval[1]);
}
if(mval[0]!=mvalo[0] || mval[1]!=mvalo[1]) {
if(mval[0]!=mvalo[0] || mval[1]!=mvalo[1]) {
G.v2d->cur.xmin+= left*dx;
G.v2d->cur.xmax+= right*dx;
G.v2d->cur.ymin+= left*dy;
G.v2d->cur.ymax+= right*dy;
G.v2d->cur.xmin+= left*dx;
G.v2d->cur.xmax+= right*dx;
G.v2d->cur.ymin+= left*dy;
G.v2d->cur.ymax+= right*dy;
test_view2d(G.v2d, curarea->winx, curarea->winy);
test_view2d(G.v2d, curarea->winx, curarea->winy);
scrarea_do_windraw(curarea);
screen_swapbuffers();
scrarea_do_windraw(curarea);
screen_swapbuffers();
mvalo[0]= mval[0];
mvalo[1]= mval[1];
mvalo[0]= mval[0];
mvalo[1]= mval[1];
}
else BIF_wait_for_statechange();
/* return if we were using the mousewheel
*/
if ( (event==WHEELUPMOUSE) || (event==WHEELDOWNMOUSE) ) return 1;
}
}
else BIF_wait_for_statechange();
/* return if we were using the mousewheel
*/
if ( (event==WHEELUPMOUSE) || (event==WHEELDOWNMOUSE) ) return 1;
}
curarea->head_swap= 0;
return 1;

@ -93,7 +93,7 @@ static void draw_nlatree(void)
bActionStrip *strip;
bConstraintChannel *conchan;
myortho2 (0, NLAWIDTH, G.v2d->cur.ymin, G.v2d->cur.ymax); // Scaling
myortho2(0, NLAWIDTH, G.v2d->cur.ymin, G.v2d->cur.ymax); // Scaling
/* Blank out the area */
if(curarea->winx>SCROLLB+10 && curarea->winy>SCROLLH+10) {
@ -191,7 +191,7 @@ static void draw_nlatree(void)
}
}
myortho2 (0, NLAWIDTH, 0, ( ofsy+G.v2d->mask.ymax)-( ofsy+G.v2d->mask.ymin-SCROLLB)); // Scaling
myortho2(0, NLAWIDTH, 0, ( ofsy+G.v2d->mask.ymax)-( ofsy+G.v2d->mask.ymin-SCROLLB)); // Scaling
glShadeModel(GL_SMOOTH);
@ -450,7 +450,7 @@ void drawnlaspace(ScrArea *sa, void *spacedata)
glClearColor(.45, .45, .45, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
myortho2 (G.v2d->cur.xmin, G.v2d->cur.xmax, G.v2d->cur.ymin, G.v2d->cur.ymax);
myortho2(G.v2d->cur.xmin, G.v2d->cur.xmax, G.v2d->cur.ymin, G.v2d->cur.ymax);
/* Draw backdrop */
calc_ipogrid();
@ -466,15 +466,19 @@ void drawnlaspace(ScrArea *sa, void *spacedata)
draw_cfra_action();
/* Draw scroll */
mywinset(curarea->win);
mywinset(curarea->win); // reset scissor too
if(curarea->winx>SCROLLB+10 && curarea->winy>SCROLLH+10) {
myortho2(-0.5, curarea->winx+0.5, -0.5, curarea->winy+0.5);
myortho2(-0.5, curarea->winx-0.5, -0.5, curarea->winy-0.5);
if(G.v2d->scroll) drawscroll(0);
}
/* Draw channel names */
draw_nlatree();
mywinset(curarea->win); // reset scissor too
myortho2(-0.5, sa->winx-0.5, -0.5, sa->winy-0.5);
draw_area_emboss(sa);
curarea->win_swap= WIN_BACK_OK;
}

@ -426,11 +426,12 @@ void drawoopsspace(ScrArea *sa, void *spacedata)
mywinset(curarea->win);
/* ortho at pixel level curarea */
myortho2(-0.5, sa->winx-0.5, -0.5, sa->winy-0.5);
if(G.v2d->scroll) {
/* ortho at pixel level curarea */
myortho2(-0.5, curarea->winx+0.5, -0.5, curarea->winy+0.5);
drawscroll(0);
}
draw_area_emboss(sa);
uiDrawBlock(block);

@ -642,18 +642,17 @@ void drawseqspace(ScrArea *sa, void *spacedata)
/* restore viewport */
mywinset(curarea->win);
/* ortho at pixel level curarea */
myortho2(-0.5, curarea->winx-0.5, -0.5, curarea->winy-0.5);
if(curarea->winx>SCROLLB+10 && curarea->winy>SCROLLH+10) {
/* ortho at pixel level curarea */
myortho2(-0.5, curarea->winx+0.5, -0.5, curarea->winy+0.5);
if(G.v2d->scroll) {
drawscroll(0);
}
}
draw_area_emboss(sa);
curarea->win_swap= WIN_BACK_OK;
}

@ -197,15 +197,16 @@ void drawsoundspace(ScrArea *sa, void *spacedata)
/* restore viewport */
mywinset(curarea->win);
/* ortho at pixel level curarea */
myortho2(-0.5, curarea->winx-0.5, -0.5, curarea->winy-0.5);
if(curarea->winx>SCROLLB+10 && curarea->winy>SCROLLH+10) {
/* ortho at pixel level curarea */
myortho2(-0.5, curarea->winx+0.5, -0.5, curarea->winy+0.5);
if(G.v2d->scroll) {
drawscroll(0);
}
}
myortho2(-0.5, curarea->winx-0.5, -0.5, curarea->winy-0.5);
draw_area_emboss(sa);
curarea->win_swap= WIN_BACK_OK;
}

@ -32,6 +32,7 @@
#include <stdlib.h>
#include <math.h>
#include <string.h>
#ifdef HAVE_CONFIG_H
#include <config.h>
@ -290,11 +291,13 @@ static void draw_cursor(SpaceText *st) {
glColor3f(0.75, 0.44, 0.44);
if(st->showlinenrs)
if(st->showlinenrs) {
if (!x) x= TXT_OFFSET + TEXTXLOC -4;
else
}
else {
if (!x) x= TXT_OFFSET - 4;
}
if (!x) x= TXT_OFFSET-10;
while (linef && linef != linel) {
h= txt_get_span(text->lines.first, linef) - st->top;
@ -549,7 +552,9 @@ void drawtextspace(ScrArea *sa, void *spacedata)
glClearColor(0.6, 0.6, 0.6, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
myortho2(-0.5, curarea->winrct.xmax-curarea->winrct.xmin-0.5, -0.5, curarea->winrct.ymax-curarea->winrct.ymin-0.5);
myortho2(-0.5, (float)(sa->winx)-.05, -0.5, (float)(sa->winy)-0.5);
draw_area_emboss(sa);
text= st->text;
if(!text) return;

@ -803,7 +803,7 @@ static void draw_view_icon(void)
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glRasterPos2f(5.0, 5.0);
glRasterPos2f(curarea->winx-25.0, 5.0);
BIF_draw_icon(icon);
glBlendFunc(GL_ONE, GL_ZERO);
@ -990,6 +990,11 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
if(G.scene->radio) RAD_drawall(G.vd->drawtype>=OB_SOLID);
if(G.zbuf) {
G.zbuf= FALSE;
glDisable(GL_DEPTH_TEST);
}
persp(0);
if(G.vd->persp>1) drawviewborder();
@ -999,15 +1004,12 @@ void drawview3dspace(ScrArea *sa, void *spacedata)
ob= OBACT;
if(ob!=0 && (U.uiflag & DRAWVIEWINFO)) draw_selected_name(ob->id.name+2);
draw_area_emboss(sa);
persp(1);
curarea->win_swap= WIN_BACK_OK;
if(G.zbuf) {
G.zbuf= FALSE;
glDisable(GL_DEPTH_TEST);
}
if(G.f & (G_VERTEXPAINT|G_FACESELECT|G_TEXTUREPAINT|G_WEIGHTPAINT)) {
G.vd->flag |= V3D_NEEDBACKBUFDRAW;
addafterqueue(curarea->win, BACKBUFDRAW, 1);

@ -527,14 +527,14 @@ void free_editArmature(void)
static EditBone * get_nearest_editbonepoint (int findunsel, int *selmask){
EditBone *ebone;
GLuint buffer[MAXPICKBUF];
unsigned int buffer[MAXPICKBUF];
short hits;
int i, takeNext=0;
int sel;
unsigned int hitresult, hitbone, firstunSel=-1;
glInitNames();
hits=selectprojektie(buffer, 0, 0, 0, 0);
hits= selectprojektie(buffer, 0, 0, 0, 0);
/* See if there are any selected bones in this group */
if (hits){
@ -606,7 +606,7 @@ static EditBone * get_nearest_editbonepoint (int findunsel, int *selmask){
static void * get_nearest_bone (int findunsel){
void *firstunSel=NULL, *data;
GLuint buffer[MAXPICKBUF];
unsigned int buffer[MAXPICKBUF];
short hits;
int i, takeNext=0;
int sel;
@ -615,7 +615,7 @@ static void * get_nearest_bone (int findunsel){
EditBone *ebone;
glInitNames();
hits=selectprojektie(buffer, 0, 0, 0, 0);
hits= selectprojektie(buffer, 0, 0, 0, 0);
/* See if there are any selected bones in this group */
@ -1788,7 +1788,7 @@ void armaturebuts(void)
/* Dist and weight buttons */
uiBlockSetCol(block, BUTGREY);
but=uiDefButI(block, MENU, REDRAWVIEW3D,
but=uiDefButS(block, MENU, REDRAWVIEW3D,
"Skinnable %x0|"
"Unskinnable %x1|"
"Head %x2|"
@ -1901,7 +1901,7 @@ static void build_bonestring (char *string, EditBone *bone){
static void validate_editbonebutton(EditBone *eBone){
EditBone *prev;
bAction *act;
bAction *act=NULL;
bActionChannel *chan;
Base *base;

@ -140,7 +140,6 @@
#include "BDR_editobject.h"
#include "BDR_drawobject.h"
#include "BDR_editcurve.h"
#include "BDR_editface.h"
#include "render.h"
#include <time.h>
@ -221,11 +220,14 @@ void free_and_unlink_base(Base *base)
void delete_obj(int ok)
{
Base *base;
extern int undo_push(char *);
if(G.obpose) return;
if(G.obedit) return;
if(G.scene->id.lib) return;
//if (undo_push("Erase")) return;
base= FIRSTBASE;
while(base) {
Base *nbase= base->next;
@ -1397,7 +1399,7 @@ void special_editmenu(void)
if(me==0 || me->tface==0) return;
nr= pupmenu("Specials%t|Set Tex%x1| Shared%x2| Light%x3| Invisible%x4| Collision%x5|Clr Tex%x6| Shared%x7| Light%x8| Invisible%x9| Collision%x10|Sel Same UV%x11");
nr= pupmenu("Specials%t|Set Tex%x1| Shared%x2| Light%x3| Invisible%x4| Collision%x5|Clr Tex%x6| Shared%x7| Light%x8| Invisible%x9| Collision%x10");
for(a=me->totface, tface= me->tface; a>0; a--, tface++) {
if(tface->flag & SELECT) {
@ -1424,8 +1426,6 @@ void special_editmenu(void)
tface->mode &= ~TF_INVISIBLE; break;
case 10:
tface->mode &= ~TF_DYNAMIC; break;
case 11:
get_same_uv(); break;
}
}
}
@ -3514,7 +3514,7 @@ void headerprint(char *str)
{
areawinset(curarea->headwin);
headerbox(0xA09090, curarea->winx);
headerbox(curarea);
cpack(0x0);
glRasterPos2i(20+curarea->headbutofs, 6);
BMF_DrawString(G.font, str);

@ -91,6 +91,7 @@
#include "BIF_toolbox.h"
#include "BIF_usiblender.h"
#include "BIF_keyval.h"
#include "BIF_resources.h"
#include "BSE_edit.h"
#include "BSE_filesel.h"
@ -120,7 +121,7 @@ static void wait_for_event(void);
static Window *mainwin= NULL;
static int prefsizx= 0, prefsizy= 0, prefstax= 0, prefstay= 0, start_maximized= 1;
static short dodrawscreen= 0;
static short dodrawscreen= 1;
static ScrArea *areawinar[MAXWIN];
static ScrArea *g_activearea= NULL;
short winqueue_break= 0;
@ -223,11 +224,11 @@ static ScrEdge *screen_find_active_scredge(bScreen *sc, short *mval)
for (se= sc->edgebase.first; se; se= se->next) {
if (scredge_is_horizontal(se)) {
if (abs(mval[1]-se->v1->vec.y)<=EDGEWIDTH2 &&
if (abs(mval[1]-se->v1->vec.y)<=2 &&
abs(mval[0]-se->v1->vec.x)<=abs(se->v2->vec.x-se->v1->vec.x))
return se;
} else {
if (abs(mval[0]-se->v1->vec.x)<=EDGEWIDTH2 &&
if (abs(mval[0]-se->v1->vec.x)<=2 &&
abs(mval[1]-se->v1->vec.y)<=abs(se->v2->vec.y-se->v1->vec.y))
return se;
}
@ -290,30 +291,30 @@ void areawinset(short win)
if(win) mywinset(win);
}
void headerbox(int selcol, int width)
#define SCR_BACK 0.55
#define SCR_ROUND 9
void headerbox(ScrArea *area)
{
if(selcol) glClearColor(.75, .75, .75, 0.0);
else glClearColor(.65, .65, .65, 0.0);
float width= area->winx;
glClearColor(SCR_BACK, SCR_BACK, SCR_BACK, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3ub(0, 0, 0);
sdrawbox(0, 0, width, HEADERY);
glColor3ub(220, 220, 220);
sdrawline(0, HEADERY-1, width, HEADERY-1);
if(area_is_active_area(area)) BIF_set_color(HEADERCOLSEL, COLORSHADE_MEDIUM);
else BIF_set_color(HEADERCOL, COLORSHADE_MEDIUM);
glColor3ub(176, 176, 176);
sdrawline(0, HEADERY-2, width, HEADERY-2);
/* weird values here... is because of window matrix that centres buttons */
if(area->headertype==HEADERTOP) {
uiSetRoundBox(3);
uiRoundBoxEmboss(-0.5+area->headbutofs, -10.0, width-1.5+area->headbutofs, HEADERY-1, SCR_ROUND);
}
else {
uiSetRoundBox(12);
uiRoundBoxEmboss(-0.5+area->headbutofs, -2.0, width-1.5+area->headbutofs, HEADERY+10, SCR_ROUND);
}
glColor3ub(128, 128, 128);
sdrawline(0, 2, width, 2);
glColor3ub(64, 64, 64);
sdrawline(0, 1, width, 1);
glColor3ub(0, 0, 0);
sdrawline(0, 0, width, 0);
uiSetRoundBox(15);
}
int area_is_active_area(ScrArea *area)
@ -326,8 +327,11 @@ void scrarea_do_headdraw(ScrArea *area)
if (area->headertype) {
areawinset(area->headwin);
headerbox(area_is_active_area(area), area->winx+100);
headerbox(area);
/* we make scissor test slightly smaller not to destroy rounded headers */
glScissor(area->headrct.xmin+5, area->headrct.ymin, area->winx-10, HEADERY);
switch(area->spacetype) {
case SPACE_FILE: file_buttons(); break;
case SPACE_INFO: info_buttons(); break;
@ -343,7 +347,8 @@ void scrarea_do_headdraw(ScrArea *area)
case SPACE_ACTION: action_buttons(); break;
case SPACE_NLA: nla_buttons(); break;
}
//glScissor(area->winrct.xmin, area->winrct.xmax, area->winx, area->winy);
area->head_swap= WIN_BACK_OK;
}
}
@ -352,9 +357,9 @@ void scrarea_do_headchange(ScrArea *area)
float ofs= area->headbutofs;
if (area->headertype==HEADERDOWN) {
bwin_ortho2(area->headwin, 0.5+ofs, area->headrct.xmax-area->headrct.xmin-0.5+ofs, +0.6, area->headrct.ymax-area->headrct.ymin+0.6);
bwin_ortho2(area->headwin, -0.5+ofs, area->headrct.xmax-area->headrct.xmin-0.5+ofs, -2.5, area->headrct.ymax-area->headrct.ymin-2.5);
} else if (area->headertype==HEADERTOP) {
bwin_ortho2(area->headwin, -0.5+ofs, area->headrct.xmax-area->headrct.xmin-0.5+ofs, -0.5, area->headrct.ymax-area->headrct.ymin-0.5);
bwin_ortho2(area->headwin, -0.5+ofs, area->headrct.xmax-area->headrct.xmin-0.5+ofs, -1.5, area->headrct.ymax-area->headrct.ymin-1.5);
}
}
@ -378,6 +383,7 @@ static void scrarea_change_headertype(ScrArea *sa, int newtype)
}
testareas();
mainqenter(DRAWEDGES, 1);
winqueue_break= 1;
}
@ -566,8 +572,31 @@ void splash(void *data, int datasize, char *string)
oldwin = mywinget();
mywinset(G.curscreen->mainwin);
if (string) {
int x, y, maxy;
unsigned int *rect;
rect = bbuf->rect;
maxy = MIN2(bbuf->y, 18);
for (y = 0; y < maxy; y++) {
for (x = 0; x < bbuf->x; x++) {
*rect = 0xffffffff;
rect++;
}
}
}
glDrawBuffer(GL_FRONT);
/*
// this dims the whole screen a bit. I didn't like it afterall
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(0.0,0.0,0.0,0.3);
glRecti(0, 0, G.curscreen->sizex, G.curscreen->sizey);
glDisable(GL_BLEND);
*/
glRasterPos2i((prefsizx-bbuf->x)/2, (prefsizy-bbuf->y)/2);
glDrawPixels(bbuf->x, bbuf->y, GL_RGBA, GL_UNSIGNED_BYTE, bbuf->rect);
@ -875,10 +904,15 @@ static ScrArea *screen_find_area_for_pt(bScreen *sc, short *mval)
{
ScrArea *sa;
for (sa= sc->areabase.first; sa; sa= sa->next)
if (BLI_in_rcti(&sa->totrct, mval[0], mval[1]))
return sa;
/* hotspot area of 1 pixel extra */
for (sa= sc->areabase.first; sa; sa= sa->next) {
if( sa->totrct.xmin + 1 < mval[0] )
if( sa->totrct.ymin + 1 < mval[1] )
if( sa->totrct.xmax - 1 > mval[0] )
if( sa->totrct.ymax - 1 > mval[1] )
return sa;
}
return NULL;
}
@ -1342,11 +1376,11 @@ void calc_arearcts(ScrArea *sa)
if(sa->headertype) {
sa->headrct= sa->totrct;
if(sa->headertype==HEADERDOWN) {
sa->headrct.ymax= sa->headrct.ymin+HEADERY-1;
sa->headrct.ymax= sa->headrct.ymin+HEADERY;
sa->winrct.ymin= sa->headrct.ymax+1;
}
else if(sa->headertype==HEADERTOP) {
sa->headrct.ymin= sa->headrct.ymax-HEADERY+1;
sa->headrct.ymin= sa->headrct.ymax-HEADERY;
sa->winrct.ymax= sa->headrct.ymin-1;
}
}
@ -1386,7 +1420,8 @@ static void closeheadwin(ScrArea *sa)
static void closeareawin(ScrArea *sa)
{
uiFreeBlocksWin(&sa->uiblocks, sa->win);
uiFreePanels(&sa->panels);
if(sa->win) mywinclose(sa->win);
sa->win= 0;
}
@ -1404,15 +1439,19 @@ static void del_area(ScrArea *sa)
if(sa==g_activearea) g_activearea= 0;
}
/* sa2 to sa1 */
static void copy_areadata(ScrArea *sa1, ScrArea *sa2)
{
sa1->headertype= sa2->headertype;
sa1->spacetype= sa2->spacetype;
Mat4CpyMat4(sa1->winmat, sa2->winmat);
freespacelist(&sa1->spacedata);
duplicatespacelist(sa1, &sa1->spacedata, &sa2->spacedata);
BLI_freelistN(&sa1->panels);
duplicatelist(&sa1->panels, &sa2->panels);
}
static ScrArea *screen_addarea(bScreen *sc, ScrVert *v1, ScrVert *v2, ScrVert *v3, ScrVert *v4, short headertype, short spacetype)
@ -1635,6 +1674,15 @@ void add_to_mainqueue(Window *win, void *user_data, short evt, short val, char a
mainqenter_ext(evt, val, ascii);
}
/* ScrVert ordering in a ScrArea:
2---------3
| |
| |
1---------4
*/
static bScreen *addscreen(char *name) /* use setprefsize() if you want something else than a full windpw */
{
/* this function sets variabele G.curscreen,
@ -1690,10 +1738,10 @@ static bScreen *addscreen(char *name) /* use setprefsize() if you want somethin
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glDrawBuffer(GL_FRONT);
glClearColor(.45, .45, .45, 0.0);
/* for visual speed, but still needed? */
glClearColor(.55, .55, .55, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glDrawBuffer(GL_BACK);
window_swap_buffers(mainwin);
warp_pointer(sc->sizex/2, sc->sizey/2);
@ -1874,7 +1922,7 @@ void area_fullscreen(void) /* with curarea */
curarea= old;
G.curscreen= oldscreen; /* needed because of setscreen */
/* vopy area */
/* copy area */
copy_areadata(newa, curarea);
curarea->full= oldscreen;
@ -2572,6 +2620,7 @@ static void moveareas(ScrEdge *edge)
doit= delta= 0;
getmouseco_sc(mvalo);
draw_front_xor_dirdist_line(dir, edge_position+delta, edge_start, edge_end);
while (!doit) {
short val;
unsigned short event= extern_qread(&val);
@ -2587,9 +2636,12 @@ static void moveareas(ScrEdge *edge)
delta= CLAMPIS(delta, -smaller, bigger);
draw_front_xor_dirdist_line(dir, edge_position+delta, edge_start, edge_end);
} else if (event==LEFTMOUSE) {
}
else if (event==LEFTMOUSE) {
doit= 1;
} else if (val) {
}
else if (val) {
if (ELEM(event, ESCKEY, RIGHTMOUSE))
doit= -1;
else if (ELEM(event, SPACEKEY, RETKEY))
@ -2729,99 +2781,105 @@ int select_area(int spacetype)
/* ************ END JOIN/SPLIT/MOVE ************** */
/* **************** DRAW SCREENEDGES ***************** */
#define EDGE_EXTEND 3
void drawedge(short x1, short y1, short x2, short y2)
void draw_area_emboss(ScrArea *sa)
{
static unsigned int edcol[EDGEWIDTH]= {0x0, 0x505050, 0x909090, 0xF0F0F0, 0x0};
int a;
if(x1==x2) { /* vertical */
if (y2<y1) {
SWAP(short, y1, y2);
}
if (y1==0) y1-= EDGE_EXTEND;
if (y2==G.curscreen->sizey) y2+= EDGE_EXTEND;
x1+= EDGEWIDTH2;
x2+= EDGEWIDTH2;
/* set transp line */
glEnable( GL_BLEND );
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
glBegin(GL_LINES);
for(a=0; a<EDGEWIDTH; a++) {
int rounding= abs(a-EDGEWIDTH2);
cpack(edcol[a]);
glVertex2i(x1-a, y1+rounding);
glVertex2i(x2-a, y2-rounding);
}
glEnd();
/* right */
glColor4ub(0,0,0, 80);
sdrawline(sa->winx-1, 0, sa->winx-1, sa->winy-1);
/* bottom */
if(sa->headertype!=HEADERDOWN) {
glColor4ub(0,0,0, 128);
sdrawline(0, 0, sa->winx-1, 0);
}
else { /* horizontal */
if (x2<x1) {
SWAP(short, x1, x2);
}
if (x1==0) x1-= EDGE_EXTEND;
if (x2==G.curscreen->sizex) x2+= EDGE_EXTEND;
/* top */
if(sa->headertype!=HEADERTOP) {
glColor4ub(255,255,255, 128);
sdrawline(0, sa->winy-1, sa->winx-1, sa->winy-1);
}
/* left */
glColor4ub(255,255,255, 80);
sdrawline(0, 0, 0, sa->winy);
y1-= EDGEWIDTH2;
y2-= EDGEWIDTH2;
glBegin(GL_LINES);
for(a=0; a<EDGEWIDTH; a++) {
int rounding= abs(a-EDGEWIDTH2);
cpack(edcol[a]);
glVertex2i(x1+rounding, y1+a);
glVertex2i(x2-rounding, y2+a);
}
glEnd();
glDisable( GL_BLEND );
/* for test */
if(FALSE && sa->spacetype==SPACE_VIEW3D) {
cpack(0xA0A0A0);
uiSetRoundBox(31);
uiRoundBoxEmboss(5.0, 5.0, 25.0, 100.0, 8.0);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glRasterPos2f(8.0, 10.0);
BIF_draw_icon(ICON_MATERIAL_HLT);
glRasterPos2f(8.0, 30.0);
BIF_draw_icon(ICON_IPO_HLT);
glRasterPos2f(8.0, 50.0);
BIF_draw_icon(ICON_HOME);
glRasterPos2f(8.0, 70.0);
BIF_draw_icon(ICON_BORDERMOVE);
glBlendFunc(GL_ONE, GL_ZERO);
glDisable(GL_BLEND);
}
}
static void drawscredge(ScrEdge *se)
{
bScreen *sc;
vec2s *v1, *v2;
sc= G.curscreen;
v1= &(se->v1->vec);
v2= &(se->v2->vec);
/* do not draw borders screen© */
/* bcause of different framebuffer resoltions (PC/SGI etc files)
* a bit rounding here? should be looked at further...
*/
se->border= 1;
if(v1->x<=1 && v2->x<=1) return;
if(v1->x>=sc->sizex-2 && v2->x>=sc->sizex-2) return;
if(v1->y<=1 && v2->y<=1) return;
if(v1->y>=sc->sizey-2 && v2->y>=sc->sizey-2) return;
se->border= 0;
drawedge(v1->x, v1->y, v2->x, v2->y);
void drawscredge_area(ScrArea *sa)
{
short x1= sa->v1->vec.x;
short y1= sa->v1->vec.y;
short x2= sa->v3->vec.x;
short y2= sa->v3->vec.y;
/* this to fill the (undrawn) edge area with back color first */
glColor3f(SCR_BACK,SCR_BACK,SCR_BACK);
sdrawline(x2, y1, x2, y2);
sdrawline(x1, y1, x2, y1);
cpack(0x0);
/* right border area */
if(sa->headertype==HEADERTOP) sdrawline(x2, y1, x2, y2-SCR_ROUND);
else if(sa->headertype==HEADERDOWN) sdrawline(x2, y1+SCR_ROUND, x2, y2);
else sdrawline(x2, y1, x2, y2);
/* left border area */
if(sa->headertype==HEADERTOP) sdrawline(x1, y1, x1, y2-SCR_ROUND);
else if(sa->headertype==HEADERDOWN) sdrawline(x1, y1+SCR_ROUND, x1, y2);
else sdrawline(x1, y1, x1, y2);
/* top border area */
if(sa->headertype==HEADERTOP) sdrawline(x1+SCR_ROUND, y2, x2-SCR_ROUND, y2);
else sdrawline(x1, y2, x2, y2);
/* bottom border area */
if(sa->headertype==HEADERDOWN) sdrawline(x1+SCR_ROUND, y1, x2-SCR_ROUND, y1);
else sdrawline(x1, y1, x2, y1);
}
void drawscreen(void)
{
ScrEdge *se;
ScrArea *sa;
mywinset(G.curscreen->mainwin);
myortho2(-0.5, (float)G.curscreen->sizex-0.5, -0.6, (float)G.curscreen->sizey-0.6);
myortho2(-0.5, (float)G.curscreen->sizex-0.5, -0.51, (float)G.curscreen->sizey-0.51);
/* two times, because there is no 'win_swap' for this available */
glDrawBuffer(GL_FRONT);
se= G.curscreen->edgebase.first;
while(se) {
drawscredge(se);
se= se->next;
}
glDrawBuffer(GL_BACK);
se= G.curscreen->edgebase.first;
while(se) {
drawscredge(se);
se= se->next;
sa= G.curscreen->areabase.first;
while(sa) {
drawscredge_area(sa);
sa= sa->next;
}
}

@ -91,6 +91,7 @@
#include "BIF_editview.h"
#include "BIF_space.h"
#include "BIF_screen.h"
#include "BIF_resources.h"
#include "BLO_readfile.h"
@ -104,6 +105,7 @@
#include "interface.h"
#include "nla.h"
#if defined WIN32 || defined __BeOS
int fnmatch(){return 0;}
#else
@ -886,12 +888,12 @@ static void draw_filescroll(SpaceFile *sfile)
if(scrollrct.ymin+10 >= scrollrct.ymax) return;
cpack(0x707070);
cpack(0x808080);
glRecti(scrollrct.xmin, scrollrct.ymin, scrollrct.xmax, scrollrct.ymax);
uiEmboss(scrollrct.xmin, scrollrct.ymin, scrollrct.xmax, scrollrct.ymax, 1);
cpack(0x909090);
glColor3f(.715, .715, .715);
glRecti(bar.xmin+2, bar.ymin+2, bar.xmax-2, bar.ymax-2);
uiEmboss(bar.xmin+2, bar.ymin+2, bar.xmax-2, bar.ymax-2, filescrollselect);
@ -912,13 +914,13 @@ static void printregel(SpaceFile *sfile, struct direntry *files, int x, int y)
switch(files->flags & (HILITE + ACTIVE)) {
case HILITE+ACTIVE:
boxcol= (0xC09090);
boxcol= (0xD0A0A0);
break;
case HILITE:
boxcol= (0x909090);
boxcol= (0xA0A0A0);
break;
case ACTIVE:
boxcol= (0xB08080);
boxcol= (0xC0A0A0);
break;
}
@ -1070,7 +1072,7 @@ static void set_active_file(SpaceFile *sfile, int act)
glScissor(curarea->winrct.xmin, curarea->winrct.ymin, curarea->winx-12, curarea->winy);
if( calc_filesel_regel(sfile, old, &x, &y) ) {
regelrect(0x717171, x, y);
regelrect(0x888888, x, y);
printregel(sfile, sfile->filelist+old, x, y);
}
if( calc_filesel_regel(sfile, newi, &x, &y) ) {
@ -1098,7 +1100,7 @@ static void draw_filetext(SpaceFile *sfile)
/* box */
cpack(0x717171);
cpack(0x888888);
glRecti(textrct.xmin, textrct.ymin, textrct.xmax, textrct.ymax);
/* collums */
@ -1131,7 +1133,7 @@ static void draw_filetext(SpaceFile *sfile)
/* clear drawing errors, with text at the right hand side: */
uiEmboss(textrct.xmin, textrct.ymin, textrct.xmax, textrct.ymax, 1);
glColor3f(.5625, .5625, .5625);
glColor3f(.715, .715, .715);
glRecti(textrct.xmax+2, textrct.ymin, textrct.xmax+10, textrct.ymax);
}
@ -1144,9 +1146,9 @@ void drawfilespace(ScrArea *sa, void *spacedata)
char name[20];
char *menu;
myortho2(-0.5, curarea->winrct.xmax-curarea->winrct.xmin-0.5, -0.5, curarea->winrct.ymax-curarea->winrct.ymin-0.5);
myortho2(-0.5, sa->winx-0.5, -0.5, sa->winy-0.5);
glClearColor(.56, .56, .56, 0.0);
glClearColor(.715, .715, .715, 0.0); /* headercol */
glClear(GL_COLOR_BUFFER_BIT);
sfile= curarea->spacedata.first;
@ -1166,6 +1168,7 @@ void drawfilespace(ScrArea *sa, void *spacedata)
/* HEADER */
sprintf(name, "win %d", curarea->win);
block= uiNewBlock(&curarea->uiblocks, name, UI_EMBOSSF, UI_HELV, curarea->win);
uiBlockSetCol(block, BUTGREY);
uiSetButLock( sfile->type==FILE_MAIN && sfile->returnfunc, NULL);
@ -1199,6 +1202,8 @@ void drawfilespace(ScrArea *sa, void *spacedata)
/* others diskfree etc ? */
scrarea_queue_headredraw(curarea);
myortho2(-0.5, (float)(sa->winx)-0.5, -0.5, (float)(sa->winy)-0.5);
draw_area_emboss(sa);
curarea->win_swap= WIN_BACK_OK;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -154,9 +154,11 @@ static void def_col(BIFColorID colorid, unsigned char r, unsigned char g, unsign
rgbaCCol_addNT(get_color(colorid, COLORSHADE_WHITE), col, 60);
rgbaCCol_addNT(get_color(colorid, COLORSHADE_LIGHT), col, 35);
rgbaCCol_addNT(get_color(colorid, COLORSHADE_HILITE), col, 20);
rgbaCCol_addNT(get_color(colorid, COLORSHADE_LMEDIUM), col, 10);
rgbaCCol_addNT(get_color(colorid, COLORSHADE_MEDIUM), col, 0);
rgbaCCol_addNT(get_color(colorid, COLORSHADE_GREY), col, -45);
rgbaCCol_addNT(get_color(colorid, COLORSHADE_DARK), col, -60);
rgbaCCol_addNT(get_color(colorid, COLORSHADE_LGREY), col, -20);
rgbaCCol_addNT(get_color(colorid, COLORSHADE_GREY), col, -45);
rgbaCCol_addNT(get_color(colorid, COLORSHADE_DARK), col, -80);
} else {
printf("def_col: Internal error, bad color ID: %d\n", colorid);
}
@ -265,11 +267,11 @@ void BIF_resources_init(void)
IMB_freeImBuf(bbuf);
def_col(BUTGREY, 0xB0,0xB0,0xB0);
def_col(BUTGREY, 0x90,0x90,0x90);
def_col(BUTGREEN, 0x88,0xA0,0xA4);
def_col(BUTBLUE, 0xA0,0xA0,0xB0);
def_col(BUTSALMON, 0xB0,0xA0,0x90);
def_col(MIDGREY, 0x90,0x90,0x90);
def_col(MIDGREY, 0xB0,0xB0,0xB0);
def_col(BUTPURPLE, 0xA2,0x98,0xA9);
def_col(BUTYELLOW, 0xB2,0xB2,0x99);
def_col(BUTRUST, 0x80,0x70,0x70);
@ -278,7 +280,16 @@ void BIF_resources_init(void)
def_col(BUTDBLUE, 0x80,0x80,0xA0);
def_col(BUTDPINK, 0xAA,0x88,0x55);
def_col(BUTPINK, 0xE8,0xBD,0xA7);
def_col(BUTMACTIVE, 0x70,0x70,0xC0);
def_col(BUTMACTIVE, 0x30,0x30,0x30);
def_col(ACTIONBUTCOL, 0x88,0x88,0x88);
def_col(NUMBUTCOL, 0x88,0x88,0x88);
def_col(TEXBUTCOL, 0x88,0x88,0x88);
def_col(TOGBUTCOL, 0x88,0x88,0x88);
def_col(SLIDERCOL, 0x88,0x88,0x88);
def_col(TABCOL, 0x88,0x88,0x88);
def_col(MENUCOL, 0xCF,0xCF,0xCF);
def_col(MENUACTIVECOL, 0x80,0x80,0x80);
def_col(BUTIPO, 0xB0,0xB0,0x99);
def_col(BUTAUDIO, 0xB0,0xA0,0x90);
@ -290,13 +301,17 @@ void BIF_resources_init(void)
def_col(BUTMOTION, 0x98,0xA7,0xA9);
def_col(BUTMESSAGE, 0x88,0xA0,0x94);
def_col(BUTACTION, 0xB2,0xA9,0x99);
def_col(BUTVISIBILITY, 0xB2,0xA9,0x99);
def_col(BUTVISIBILITY, 0xB2,0xA9,0x99);
def_col(BUTCD, 0xB0,0x95,0x90);
def_col(BUTGAME, 0x99,0xB2,0x9C);
def_col(BUTYUCK, 0xB0,0x99,0xB0);
def_col(BUTSEASICK, 0x99,0xB0,0xB0);
def_col(BUTCHOKE, 0x88,0x94,0xA0);
def_col(BUTIMPERIAL, 0x94,0x88,0xA0);
def_col(HEADERCOL, 165, 165, 165);
def_col(HEADERCOLSEL, 185, 185, 185);
}
void BIF_resources_free(void)

@ -437,7 +437,7 @@ void select_children(Object *ob, int recursive)
void select_parent(void) /* Makes parent active and de-selected OBACT */
{
Base *base, *startbase, *basact, *oldbasact;
Base *base, *startbase, *basact=NULL, *oldbasact;
if (!(OBACT->parent)) return;
BASACT->flag &= (~SELECT);
@ -1962,6 +1962,12 @@ void drawinfospace(ScrArea *sa, void *spacedata)
}
uiDrawBlock(block);
myortho2(-0.5, (float)(sa->winx)-.05, -0.5, (float)(sa->winy)-0.5);
draw_area_emboss(sa);
myortho2(0.0, 1280.0, 0.0, curarea->winy/fac);
sa->win_swap= WIN_BACK_OK;
}
@ -2010,7 +2016,7 @@ void winqreadbutspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
short val= evt->val;
SpaceButs *sbuts= curarea->spacedata.first;
ScrArea *sa2, *sa3d;
int doredraw= 0;
int nr, doredraw= 0;
if(val) {
@ -2026,7 +2032,14 @@ void winqreadbutspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
case WHEELDOWNMOUSE:
view2dmove(event); /* in drawipo.c */
break;
case RIGHTMOUSE:
nr= pupmenu("Align buttons%t|Free %x0|Horizontal%x1|Vertical%x2");
if (nr>=0) {
sbuts->align= nr;
if(nr) uiAnimatePanels(sa);
}
break;
case PADPLUSKEY:
view2d_zoom(&sbuts->v2d, 0.06, curarea->winx, curarea->winy);
scrarea_queue_winredraw(curarea);
@ -2087,11 +2100,11 @@ void set_rects_butspace(SpaceButs *buts)
buts->v2d.min[0]= 256.0;
buts->v2d.min[1]= 42.0;
buts->v2d.max[0]= 1600.0;
buts->v2d.max[0]= 2048.0;
buts->v2d.max[1]= 450.0;
buts->v2d.minzoom= 0.5;
buts->v2d.maxzoom= 1.41;
buts->v2d.maxzoom= 1.21;
buts->v2d.scroll= 0;
buts->v2d.keepaspect= 1;