2002-10-12 11:37:38 +00:00
|
|
|
/**
|
|
|
|
|
* $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_SPACE_H
|
|
|
|
|
#define BIF_SPACE_H
|
|
|
|
|
|
|
|
|
|
struct ListBase;
|
|
|
|
|
struct ScrArea;
|
|
|
|
|
struct SpaceButs;
|
|
|
|
|
struct View2D;
|
2003-03-23 22:52:11 +00:00
|
|
|
struct BWinEvent;
|
2004-10-14 13:52:12 +00:00
|
|
|
struct SpaceOops;
|
2002-10-12 11:37:38 +00:00
|
|
|
|
|
|
|
|
#define REMAKEIPO 1
|
|
|
|
|
#define OOPS_TEST 2
|
|
|
|
|
|
2003-10-04 20:35:50 +00:00
|
|
|
#define BUT_HORIZONTAL 1
|
|
|
|
|
#define BUT_VERTICAL 2
|
|
|
|
|
|
2003-10-15 12:26:26 +00:00
|
|
|
/* is hardcoded in DNA_space_types.h */
|
|
|
|
|
#define SPACE_MAXHANDLER 8
|
|
|
|
|
|
|
|
|
|
/* view3d handler codes */
|
2003-10-15 16:01:08 +00:00
|
|
|
#define VIEW3D_HANDLER_BACKGROUND 1
|
2003-10-25 22:03:19 +00:00
|
|
|
#define VIEW3D_HANDLER_PROPERTIES 2
|
2003-10-15 16:01:08 +00:00
|
|
|
#define VIEW3D_HANDLER_OBJECT 3
|
Giant commit!
A full detailed description of this will be done later... is several days
of work. Here's a summary:
Render:
- Full cleanup of render code, removing *all* globals and bad level calls
all over blender. Render module is now not called abusive anymore
- API-fied calls to rendering
- Full recode of internal render pipeline. Is now rendering tiles by
default, prepared for much smarter 'bucket' render later.
- Each thread now can render a full part
- Renders were tested with 4 threads, goes fine, apart from some lookup
tables in softshadow and AO still
- Rendering is prepared to do multiple layers and passes
- No single 32 bits trick in render code anymore, all 100% floats now.
Writing images/movies
- moved writing images to blender kernel (bye bye 'schrijfplaatje'!)
- made a new Movie handle system, also in kernel. This will enable much
easier use of movies in Blender
PreviewRender:
- Using new render API, previewrender (in buttons) now uses regular render
code to generate images.
- new datafile 'preview.blend.c' has the preview scenes in it
- previews get rendered in exact displayed size (1 pixel = 1 pixel)
3D Preview render
- new; press Pkey in 3d window, for a panel that continuously renders
(pkey is for games, i know... but we dont do that in orange now!)
- this render works nearly identical to buttons-preview render, so it stops
rendering on any event (mouse, keyboard, etc)
- on moving/scaling the panel, the render code doesn't recreate all geometry
- same for shifting/panning view
- all other operations (now) regenerate the full render database still.
- this is WIP... but big fun, especially for simple scenes!
Compositor
- Using same node system as now in use for shaders, you can composit images
- works pretty straightforward... needs much more options/tools and integration
with rendering still
- is not threaded yet, nor is so smart to only recalculate changes... will be
done soon!
- the "Render Result" node will get all layers/passes as output sockets
- The "Output" node renders to a builtin image, which you can view in the Image
window. (yes, output nodes to render-result, and to files, is on the list!)
The Bad News
- "Unified Render" is removed. It might come back in some stage, but this
system should be built from scratch. I can't really understand this code...
I expect it is not much needed, especially with advanced layer/passes
control
- Panorama render, Field render, Motion blur, is not coded yet... (I had to
recode every single feature in render, so...!)
- Lens Flare is also not back... needs total revision, might become composit
effect though (using zbuffer for visibility)
- Part render is gone! (well, thats obvious, its default now).
- The render window is only restored with limited functionality... I am going
to check first the option to render to a Image window, so Blender can become
a true single-window application. :)
For example, the 'Spare render buffer' (jkey) doesnt work.
- Render with border, now default creates a smaller image
- No zbuffers are written yet... on the todo!
- Scons files and MSVC will need work to get compiling again
OK... thats what I can quickly recall. Now go compiling!
2006-01-23 22:05:47 +00:00
|
|
|
#define VIEW3D_HANDLER_PREVIEW 4
|
2003-10-15 12:26:26 +00:00
|
|
|
|
|
|
|
|
/* ipo handler codes */
|
2003-10-28 14:20:03 +00:00
|
|
|
#define IPO_HANDLER_PROPERTIES 20
|
2003-10-15 12:26:26 +00:00
|
|
|
|
2004-04-19 22:05:37 +00:00
|
|
|
/* image handler codes */
|
|
|
|
|
#define IMAGE_HANDLER_PROPERTIES 30
|
2004-05-15 02:28:03 +00:00
|
|
|
#define IMAGE_HANDLER_PAINT 31
|
2006-01-09 23:52:51 +00:00
|
|
|
#define IMAGE_HANDLER_CURVES 32
|
Compositing workflow upgrade;
You now can set a Preview panel in the Image window, to define a sub-rect
of an image to be processed. Works like the preview in 3D Window. Just
press SHIFT+P to get it activated. Very nice speedup!
This is how it works:
- The compositor still uses the scene image size (including % setting) for
Viewer or Composite output size
- If a preview exists, it calculates the cropped rect from its position
in the Image window, and stores that in the Scene render data
- On composite execute, it copies only this part from the 'generator nodes',
right now Images or Render Results. That makes the entire composite tree
only using small rects, so it will execute fast.
- Also the render window will only display the cropped rect, and on F12
only the cropped part is being executed
- On rendering in background mode, the cropping is ignored though.
Usability notes:
- translating or zooming view will automatically invoke a recalculation
- if you zoom in on details, the calculated rect will even become smaller
- only one Imagewindow can have this Preview Panel, to prevent conflicts of
what the cropped area should be. Compositing is on Scene level, not local
per image window. (Note; 3D Previews are local per window!)
- Closing the preview panel will invoke a full-size recalculation
- All passes/layers from rendering are nicely cropped, including Z and
vectors.
The work to make the compositor do cropping was simple, but getting the
Image window displaying correctly and get all events OK was a lot of work...
indeed, we need to refactor Image Window usage once. Sorry for making the
mess even bigger now. :) I've tried not to interfere with UV edit or Paint
though... only when you're in compositing mode the panel will work.
BUG fix:
3D Preview render didn't work when multiple layers were set in the current
scene.
2006-02-09 11:07:04 +00:00
|
|
|
#define IMAGE_HANDLER_PREVIEW 33
|
2004-04-19 22:05:37 +00:00
|
|
|
|
2004-04-20 22:00:33 +00:00
|
|
|
/* action handler codes */
|
|
|
|
|
#define ACTION_HANDLER_PROPERTIES 40
|
2004-04-20 18:27:10 +00:00
|
|
|
|
2004-04-20 22:00:33 +00:00
|
|
|
/* nla handler codes */
|
|
|
|
|
#define NLA_HANDLER_PROPERTIES 50
|
2004-04-19 22:05:37 +00:00
|
|
|
|
2004-06-16 20:25:56 +00:00
|
|
|
/* sequence handler codes */
|
|
|
|
|
#define SEQ_HANDLER_PROPERTIES 60
|
|
|
|
|
|
2005-08-01 01:46:10 +00:00
|
|
|
/* theme codes */
|
|
|
|
|
#define B_ADD_THEME 3301
|
|
|
|
|
#define B_DEL_THEME 3302
|
|
|
|
|
#define B_NAME_THEME 3303
|
|
|
|
|
#define B_THEMECOL 3304
|
|
|
|
|
#define B_UPDATE_THEME 3305
|
|
|
|
|
#define B_CHANGE_THEME 3306
|
|
|
|
|
#define B_THEME_COPY 3307
|
|
|
|
|
#define B_THEME_PASTE 3308
|
|
|
|
|
|
|
|
|
|
#define B_RECALCLIGHT 3310
|
|
|
|
|
|
2003-10-04 20:35:50 +00:00
|
|
|
|
2002-10-12 11:37:38 +00:00
|
|
|
void scrarea_do_windraw (struct ScrArea *sa);
|
|
|
|
|
void scrarea_do_winchange (struct ScrArea *sa);
|
2003-03-23 22:52:11 +00:00
|
|
|
void scrarea_do_winhandle (struct ScrArea *sa, struct BWinEvent *evt);
|
2002-10-12 11:37:38 +00:00
|
|
|
void scrarea_do_headdraw (struct ScrArea *sa);
|
|
|
|
|
void scrarea_do_headchange (struct ScrArea *sa);
|
|
|
|
|
|
|
|
|
|
/* space.c */
|
2003-10-16 00:17:24 +00:00
|
|
|
extern void add_blockhandler(struct ScrArea *sa, short eventcode, short action);
|
2003-10-15 12:26:26 +00:00
|
|
|
extern void rem_blockhandler(struct ScrArea *sa, short eventcode);
|
2004-06-19 12:25:28 +00:00
|
|
|
extern void toggle_blockhandler(struct ScrArea *sa, short eventcode, short action);
|
2003-10-15 12:26:26 +00:00
|
|
|
|
2002-10-12 11:37:38 +00:00
|
|
|
extern void space_set_commmandline_options(void);
|
|
|
|
|
extern void allqueue(unsigned short event, short val);
|
|
|
|
|
extern void allspace(unsigned short event, short val);
|
|
|
|
|
extern void copy_view3d_lock(short val);
|
2003-03-24 01:46:05 +00:00
|
|
|
extern void drawemptyspace(struct ScrArea *sa, void *spacedata);
|
2003-05-04 11:20:14 +00:00
|
|
|
extern void drawinfospace(struct ScrArea *sa, void *spacedata);
|
2002-10-12 11:37:38 +00:00
|
|
|
extern void duplicatespacelist(struct ScrArea *area, struct ListBase *lb1, struct ListBase *lb2);
|
|
|
|
|
extern void extern_set_butspace(int fkey);
|
2004-11-07 18:20:44 +00:00
|
|
|
extern void force_draw(int header);
|
|
|
|
|
extern void force_draw_all(int header);
|
|
|
|
|
extern void force_draw_plus(int type, int header);
|
Giant commit!
A full detailed description of this will be done later... is several days
of work. Here's a summary:
Render:
- Full cleanup of render code, removing *all* globals and bad level calls
all over blender. Render module is now not called abusive anymore
- API-fied calls to rendering
- Full recode of internal render pipeline. Is now rendering tiles by
default, prepared for much smarter 'bucket' render later.
- Each thread now can render a full part
- Renders were tested with 4 threads, goes fine, apart from some lookup
tables in softshadow and AO still
- Rendering is prepared to do multiple layers and passes
- No single 32 bits trick in render code anymore, all 100% floats now.
Writing images/movies
- moved writing images to blender kernel (bye bye 'schrijfplaatje'!)
- made a new Movie handle system, also in kernel. This will enable much
easier use of movies in Blender
PreviewRender:
- Using new render API, previewrender (in buttons) now uses regular render
code to generate images.
- new datafile 'preview.blend.c' has the preview scenes in it
- previews get rendered in exact displayed size (1 pixel = 1 pixel)
3D Preview render
- new; press Pkey in 3d window, for a panel that continuously renders
(pkey is for games, i know... but we dont do that in orange now!)
- this render works nearly identical to buttons-preview render, so it stops
rendering on any event (mouse, keyboard, etc)
- on moving/scaling the panel, the render code doesn't recreate all geometry
- same for shifting/panning view
- all other operations (now) regenerate the full render database still.
- this is WIP... but big fun, especially for simple scenes!
Compositor
- Using same node system as now in use for shaders, you can composit images
- works pretty straightforward... needs much more options/tools and integration
with rendering still
- is not threaded yet, nor is so smart to only recalculate changes... will be
done soon!
- the "Render Result" node will get all layers/passes as output sockets
- The "Output" node renders to a builtin image, which you can view in the Image
window. (yes, output nodes to render-result, and to files, is on the list!)
The Bad News
- "Unified Render" is removed. It might come back in some stage, but this
system should be built from scratch. I can't really understand this code...
I expect it is not much needed, especially with advanced layer/passes
control
- Panorama render, Field render, Motion blur, is not coded yet... (I had to
recode every single feature in render, so...!)
- Lens Flare is also not back... needs total revision, might become composit
effect though (using zbuffer for visibility)
- Part render is gone! (well, thats obvious, its default now).
- The render window is only restored with limited functionality... I am going
to check first the option to render to a Image window, so Blender can become
a true single-window application. :)
For example, the 'Spare render buffer' (jkey) doesnt work.
- Render with border, now default creates a smaller image
- No zbuffers are written yet... on the todo!
- Scons files and MSVC will need work to get compiling again
OK... thats what I can quickly recall. Now go compiling!
2006-01-23 22:05:47 +00:00
|
|
|
extern void freespacelist(struct ScrArea *sa);
|
2004-07-19 07:08:51 +00:00
|
|
|
extern void handle_view3d_around(void);
|
2002-10-12 11:37:38 +00:00
|
|
|
extern void handle_view3d_lock(void);
|
Version 1.0 of the new Outliner
The outliner is a hierarchical diagram displaying a list of data in Blender
and its dependencies. The 'databrowse' doesn't really show it, and Oops is
too chaotic still. And most of all, the former two don't offer much tools.
After discussions on irc, Matt came with this design proposal;
http://mke3.net/blender/interface/layout/outliner/
Which is closely followed for the implementation.
The current version only shows all 'library data' in Blender (objects,
meshes, ipos, etc) and not the 'direct data' such as vertex groups or NLA.
I decided to make it inside the Oopw window, as an option. You can find the
option in the "View" pulldown, or directly invoke it with ALT+SHIFT+F9
Here's a quick overview of the Outliner GUI:
- Header pulldown has options what it can show (Visible = in current layers)
- click on triangle arrow to open/close
- press AKEY to open/close all
- Leftmouse click on an item activates; and does based on type a couple of
extra things:
- activates a scene
- selects/activates the Object
- enters editmode (if clicked on Mesh, Curve, etc)
- shows the appropriate Shading buttons (Lamp, Material, Texture)
- sets the IpoWindow to the current IPO
- activates the Ipo-channel in an Action
- Selected and Active objects are drawn in its Theme selection color
- SHIFT+click on Object does extend-select
- Press DOTkey to get the current active data in center of view
TODO;
- rightmouse selection; for indicating operations like delete or duplicate
- showing more data types
- icon (re)design...
- lotsof options as described in Matts paper still...
2004-10-06 18:55:00 +00:00
|
|
|
extern void init_v2d_oops(struct ScrArea *, struct SpaceOops *);
|
2002-10-12 11:37:38 +00:00
|
|
|
extern void initipo(struct ScrArea *sa);
|
|
|
|
|
extern void newspace(struct ScrArea *sa, int type);
|
|
|
|
|
extern void set_rects_butspace(struct SpaceButs *buts);
|
|
|
|
|
extern void test_butspace(void);
|
|
|
|
|
extern void start_game(void);
|
2006-03-25 04:37:40 +00:00
|
|
|
extern void select_object_grouped(short nr);
|
2005-12-30 14:17:15 +00:00
|
|
|
extern void join_menu(void);
|
2003-10-04 20:35:50 +00:00
|
|
|
|
Another step in the undo evolution.
- Made unified API for undo calls, to be found in space.c
BIF_undo_push(char *str)
BIF_undo(void)
BIF_redo(void)
These calls will do all undo levels, including editmode and vpaint.
The transition is work in progress, because mesh undo needs recode.
- New global hotkey CTR+Z for undo
Note: 'shaded draw mode' still is SHIFT+Z, the old CTRL+Z was to recalc
the lighting in shaded mode, which already became much more interactive,
like during/after any transform().
Recalc hotkey now is SHIFT+ALT+Z
CTRL+<any modifier>+Z is redo.
- For OSX users; the Apple-key ("Command") now maps to CTRL as well. This
disables the one-mouse-button hack for rightmouse btw, will be fixed in
next commit. At least we can use Apple-Z :)
- Old Ukey for undo is still there, as a training period... my preference is
to restore Ukey to "reload original data" as in past, and only use new
CTRL+Z for undo.
- Added undo_push() for all of editobject.c and editview.c. Meaning we can
start using/testing global undo in the 3d window. Please dont comment on
missing parts for now, first I want someone to volunteer to tackle all of
that.
- Since the global undo has a full 'file' in memory, it can save extremely
fast on exit to <temp dir>/quit.blend. That's default now when global undo
is enabled. It prints "Saved session recovery to ..." in console then.
- In file menu, a new option is added "Recover Last Session". Note that this
reads the undo-save, which is without UI.
- With such nice new features we then can also kill the disputed
Cancel/Confirm menu on Q-KEY.
- Added fix which initializes seam/normal theme color on saved themes.
They showed black now.... (Note: that's in usiblender.c!)
2004-09-18 12:12:45 +00:00
|
|
|
extern void BIF_undo_push(char *str);
|
|
|
|
|
extern void BIF_undo(void);
|
|
|
|
|
extern void BIF_redo(void);
|
|
|
|
|
extern void BIF_undo_menu(void);
|
2002-10-12 11:37:38 +00:00
|
|
|
|
2005-03-23 21:10:03 +00:00
|
|
|
#if 0
|
|
|
|
|
//#ifdef _WIN32 // FULLSCREEN
|
2003-05-08 16:24:58 +00:00
|
|
|
extern void mainwindow_toggle_fullscreen(int fullscreen);
|
|
|
|
|
#endif
|
|
|
|
|
|
2003-12-08 15:13:00 +00:00
|
|
|
extern void mainwindow_set_filename_to_title(char *title);
|
2002-10-12 11:37:38 +00:00
|
|
|
extern void mainwindow_raise(void);
|
|
|
|
|
extern void mainwindow_make_active(void);
|
|
|
|
|
extern void mainwindow_close(void);
|
|
|
|
|
|
|
|
|
|
#endif
|
2002-10-30 02:07:20 +00:00
|
|
|
|