2011-02-23 10:52:22 +00:00
|
|
|
/*
|
2008-12-24 10:33:10 +00:00
|
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
|
|
|
* of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software Foundation,
|
2010-02-12 13:34:04 +00:00
|
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
2008-12-24 10:33:10 +00:00
|
|
|
*
|
|
|
|
* The Original Code is Copyright (C) 2005 Blender Foundation.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* The Original Code is: all of this file.
|
|
|
|
*
|
2009-09-18 21:04:54 +00:00
|
|
|
* Contributor(s): David Millan Escriva, Juho Vepsäläinen, Bob Holcomb, Thomas Dinges
|
2008-12-24 10:33:10 +00:00
|
|
|
*
|
|
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
|
|
*/
|
|
|
|
|
2011-02-27 20:29:51 +00:00
|
|
|
/** \file blender/editors/space_node/drawnode.c
|
|
|
|
* \ingroup spnode
|
2012-07-14 15:29:45 +00:00
|
|
|
* \brief lower level node drawing for nodes (boarders, headers etc), also node layout.
|
2011-02-27 20:29:51 +00:00
|
|
|
*/
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
#include "BLI_blenlib.h"
|
2009-11-10 20:43:45 +00:00
|
|
|
#include "BLI_math.h"
|
2008-12-24 10:33:10 +00:00
|
|
|
|
|
|
|
#include "DNA_node_types.h"
|
|
|
|
#include "DNA_object_types.h"
|
|
|
|
#include "DNA_space_types.h"
|
|
|
|
#include "DNA_screen_types.h"
|
|
|
|
|
2008-12-29 00:55:23 +00:00
|
|
|
#include "BKE_context.h"
|
2009-02-07 14:03:34 +00:00
|
|
|
#include "BKE_curve.h"
|
2008-12-24 10:33:10 +00:00
|
|
|
#include "BKE_image.h"
|
|
|
|
#include "BKE_main.h"
|
2011-09-05 21:01:50 +00:00
|
|
|
#include "BKE_node.h"
|
2012-06-19 17:29:58 +00:00
|
|
|
#include "BKE_tracking.h"
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
#include "BLF_api.h"
|
2012-06-02 19:58:12 +00:00
|
|
|
#include "BLF_translation.h"
|
2012-05-22 14:13:33 +00:00
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
|
|
|
|
#include "BIF_gl.h"
|
|
|
|
#include "BIF_glutil.h"
|
|
|
|
|
|
|
|
#include "MEM_guardedalloc.h"
|
|
|
|
|
2008-12-29 00:55:23 +00:00
|
|
|
#include "RNA_access.h"
|
|
|
|
|
2010-11-06 17:55:43 +00:00
|
|
|
#include "ED_node.h"
|
|
|
|
|
2008-12-29 00:55:23 +00:00
|
|
|
#include "WM_api.h"
|
|
|
|
#include "WM_types.h"
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
#include "UI_resources.h"
|
|
|
|
|
Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.
This introduces two configurable color spaces:
- Input color space for images and movie clips. This space is used to convert
images/movies from color space in which file is saved to Blender's linear
space (for float images, byte images are not internally converted, only input
space is stored for such images and used later).
This setting could be found in image/clip data block settings.
- Display color space which defines space in which particular display is working.
This settings could be found in scene's Color Management panel.
When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.
This conversions are:
- View, which defines tone curve applying before display transformation.
These are different ways to view the image on the same display device.
For example it could be used to emulate film view on sRGB display.
- Exposure affects on image exposure before tone map is applied.
- Gamma is post-display gamma correction, could be used to match particular
display gamma.
- RGB curves are user-defined curves which are applying before display
transformation, could be used for different purposes.
All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.
This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).
Some technical notes:
- Image buffer's float buffer is now always in linear space, even if it was
created from 16bit byte images.
- Space of byte buffer is stored in image buffer's rect_colorspace property.
- Profile of image buffer was removed since it's not longer meaningful.
- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
to support other spaces, but it's quite large project which isn't so
much important.
- Legacy Color Management option disabled is emulated by using None display.
It could have some regressions, but there's no clear way to avoid them.
- If OpenColorIO is disabled on build time, it should make blender behaving
in the same way as previous release with color management enabled.
More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management
--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
|
|
|
#include "IMB_colormanagement.h"
|
2009-10-07 22:05:30 +00:00
|
|
|
#include "IMB_imbuf.h"
|
2008-12-26 18:00:38 +00:00
|
|
|
#include "IMB_imbuf_types.h"
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-08-02 23:03:16 +00:00
|
|
|
#include "node_intern.h" /* own include */
|
2008-12-29 00:55:23 +00:00
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
/* XXX interface.h */
|
2012-06-01 14:42:21 +00:00
|
|
|
extern void ui_dropshadow(rctf *rct, float radius, float aspect, float alpha, int select);
|
2012-05-22 14:13:33 +00:00
|
|
|
|
2011-09-05 21:01:50 +00:00
|
|
|
/* ****************** SOCKET BUTTON DRAW FUNCTIONS ***************** */
|
|
|
|
|
|
|
|
static void node_sync_cb(bContext *UNUSED(C), void *snode_v, void *node_v)
|
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
SpaceNode *snode = snode_v;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (snode->treetype == NTREE_SHADER) {
|
2011-09-05 21:01:50 +00:00
|
|
|
nodeShaderSynchronizeID(node_v, 1);
|
|
|
|
// allqueue(REDRAWBUTSSHADING, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-11-07 17:35:20 +00:00
|
|
|
static void node_socket_button_label(const bContext *UNUSED(C), uiBlock *block,
|
2012-05-27 19:38:10 +00:00
|
|
|
bNodeTree *UNUSED(ntree), bNode *UNUSED(node), bNodeSocket *sock,
|
|
|
|
const char *UNUSED(name), int x, int y, int width)
|
2011-11-07 17:35:20 +00:00
|
|
|
{
|
2012-06-02 19:58:12 +00:00
|
|
|
uiDefBut(block, LABEL, 0, IFACE_(sock->name), x, y, width, NODE_DY, NULL, 0, 0, 0, 0, "");
|
2011-11-07 17:35:20 +00:00
|
|
|
}
|
|
|
|
|
2011-09-16 08:20:21 +00:00
|
|
|
static void node_socket_button_default(const bContext *C, uiBlock *block,
|
2012-05-27 19:38:10 +00:00
|
|
|
bNodeTree *ntree, bNode *node, bNodeSocket *sock,
|
|
|
|
const char *name, int x, int y, int width)
|
2011-09-05 21:01:50 +00:00
|
|
|
{
|
2012-05-02 07:18:51 +00:00
|
|
|
if (sock->link || (sock->flag & SOCK_HIDE_VALUE))
|
|
|
|
node_socket_button_label(C, block, ntree, node, sock, name, x, y, width);
|
|
|
|
else {
|
|
|
|
PointerRNA ptr;
|
|
|
|
uiBut *bt;
|
|
|
|
|
|
|
|
RNA_pointer_create(&ntree->id, &RNA_NodeSocket, sock, &ptr);
|
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
bt = uiDefButR(block, NUM, B_NODE_EXEC, IFACE_(name),
|
2012-05-27 19:38:10 +00:00
|
|
|
x, y + 1, width, NODE_DY - 2,
|
|
|
|
&ptr, "default_value", 0, 0, 0, -1, -1, NULL);
|
2012-05-02 07:18:51 +00:00
|
|
|
if (node)
|
|
|
|
uiButSetFunc(bt, node_sync_cb, CTX_wm_space_node(C), node);
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
}
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
typedef struct SocketComponentMenuArgs {
|
|
|
|
PointerRNA ptr;
|
|
|
|
int x, y, width;
|
|
|
|
uiButHandleFunc cb;
|
|
|
|
void *arg1, *arg2;
|
|
|
|
} SocketComponentMenuArgs;
|
|
|
|
/* NOTE: this is a block-menu, needs 0 events, otherwise the menu closes */
|
|
|
|
static uiBlock *socket_component_menu(bContext *C, ARegion *ar, void *args_v)
|
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
SocketComponentMenuArgs *args = (SocketComponentMenuArgs *)args_v;
|
2011-09-05 21:01:50 +00:00
|
|
|
uiBlock *block;
|
|
|
|
uiLayout *layout;
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
block = uiBeginBlock(C, ar, __func__, UI_EMBOSS);
|
2011-09-05 21:01:50 +00:00
|
|
|
uiBlockSetFlag(block, UI_BLOCK_KEEP_OPEN);
|
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
layout = uiLayoutColumn(uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL,
|
|
|
|
args->x, args->y + 2, args->width, NODE_DY, UI_GetStyle()), FALSE);
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
uiItemR(layout, &args->ptr, "default_value", UI_ITEM_R_EXPAND, "", ICON_NONE);
|
|
|
|
|
|
|
|
return block;
|
|
|
|
}
|
2011-09-16 08:20:21 +00:00
|
|
|
static void node_socket_button_components(const bContext *C, uiBlock *block,
|
2012-05-27 19:38:10 +00:00
|
|
|
bNodeTree *ntree, bNode *node, bNodeSocket *sock,
|
|
|
|
const char *name, int x, int y, int width)
|
2011-09-05 21:01:50 +00:00
|
|
|
{
|
2012-05-02 07:18:51 +00:00
|
|
|
if (sock->link || (sock->flag & SOCK_HIDE_VALUE))
|
|
|
|
node_socket_button_label(C, block, ntree, node, sock, name, x, y, width);
|
|
|
|
else {
|
|
|
|
PointerRNA ptr;
|
|
|
|
SocketComponentMenuArgs *args;
|
|
|
|
|
|
|
|
RNA_pointer_create(&ntree->id, &RNA_NodeSocket, sock, &ptr);
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
args = MEM_callocN(sizeof(SocketComponentMenuArgs), "SocketComponentMenuArgs");
|
2012-05-02 07:18:51 +00:00
|
|
|
|
|
|
|
args->ptr = ptr;
|
|
|
|
args->x = x;
|
|
|
|
args->y = y;
|
|
|
|
args->width = width;
|
|
|
|
args->cb = node_sync_cb;
|
|
|
|
args->arg1 = CTX_wm_space_node(C);
|
|
|
|
args->arg2 = node;
|
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
uiDefBlockButN(block, socket_component_menu, args, IFACE_(name), x, y + 1, width, NODE_DY - 2, "");
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
}
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
|
2011-09-16 08:20:21 +00:00
|
|
|
static void node_socket_button_color(const bContext *C, uiBlock *block,
|
2012-05-27 19:38:10 +00:00
|
|
|
bNodeTree *ntree, bNode *node, bNodeSocket *sock,
|
|
|
|
const char *name, int x, int y, int width)
|
2011-09-05 21:01:50 +00:00
|
|
|
{
|
2012-05-02 07:18:51 +00:00
|
|
|
if (sock->link || (sock->flag & SOCK_HIDE_VALUE))
|
2012-06-02 19:58:12 +00:00
|
|
|
node_socket_button_label(C, block, ntree, node, sock, IFACE_(name), x, y, width);
|
2012-05-02 07:18:51 +00:00
|
|
|
else {
|
|
|
|
PointerRNA ptr;
|
|
|
|
uiBut *bt;
|
2012-05-27 19:38:10 +00:00
|
|
|
int labelw = width - 40;
|
2012-05-02 07:18:51 +00:00
|
|
|
RNA_pointer_create(&ntree->id, &RNA_NodeSocket, sock, &ptr);
|
|
|
|
|
2012-09-11 23:10:23 +00:00
|
|
|
bt = uiDefButR(block, COLOR, B_NODE_EXEC, "",
|
2012-05-27 19:38:10 +00:00
|
|
|
x, y + 2, (labelw > 0 ? 40 : width), NODE_DY - 2,
|
|
|
|
&ptr, "default_value", 0, 0, 0, -1, -1, NULL);
|
2012-05-02 07:18:51 +00:00
|
|
|
if (node)
|
|
|
|
uiButSetFunc(bt, node_sync_cb, CTX_wm_space_node(C), node);
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (name[0] != '\0' && labelw > 0)
|
2012-06-02 19:58:12 +00:00
|
|
|
uiDefBut(block, LABEL, 0, IFACE_(name), x + 40, y + 2, labelw, NODE_DY - 2, NULL, 0, 0, 0, 0, "");
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
}
|
2012-05-02 07:18:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* standard draw function, display the default input value */
|
|
|
|
static void node_draw_input_default(const bContext *C, uiBlock *block,
|
2012-05-27 19:38:10 +00:00
|
|
|
bNodeTree *ntree, bNode *node, bNodeSocket *sock,
|
|
|
|
const char *name, int x, int y, int width)
|
2012-05-02 07:18:51 +00:00
|
|
|
{
|
|
|
|
bNodeSocketType *stype = ntreeGetSocketType(sock->type);
|
|
|
|
if (stype->buttonfunc)
|
|
|
|
stype->buttonfunc(C, block, ntree, node, sock, name, x, y, width);
|
|
|
|
else
|
2012-06-02 19:58:12 +00:00
|
|
|
node_socket_button_label(C, block, ntree, node, sock, IFACE_(name), x, y, width);
|
2012-05-02 07:18:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_draw_output_default(const bContext *C, uiBlock *block,
|
|
|
|
bNodeTree *UNUSED(ntree), bNode *node, bNodeSocket *sock,
|
|
|
|
const char *name, int UNUSED(x), int UNUSED(y), int UNUSED(width))
|
|
|
|
{
|
|
|
|
SpaceNode *snode = CTX_wm_space_node(C);
|
|
|
|
float slen;
|
|
|
|
int ofs = 0;
|
2012-06-02 19:58:12 +00:00
|
|
|
const char *ui_name = IFACE_(name);
|
2012-07-27 13:49:55 +00:00
|
|
|
int len = strlen(ui_name);
|
2012-05-02 07:18:51 +00:00
|
|
|
UI_ThemeColor(TH_TEXT);
|
2012-07-09 19:50:43 +00:00
|
|
|
slen = (UI_GetStringWidth(ui_name) + NODE_MARGIN_X) * snode->aspect_sqrt;
|
2012-07-27 13:49:55 +00:00
|
|
|
while (slen > node->width && ofs < len) {
|
2012-05-02 07:18:51 +00:00
|
|
|
ofs++;
|
2012-07-09 19:50:43 +00:00
|
|
|
slen = (UI_GetStringWidth(ui_name + ofs) + NODE_MARGIN_X) * snode->aspect_sqrt;
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
}
|
2012-07-27 13:49:55 +00:00
|
|
|
|
|
|
|
if (ofs < len) {
|
|
|
|
uiDefBut(block, LABEL, 0, ui_name + ofs,
|
|
|
|
(int)(sock->locx - slen), (int)(sock->locy - 9.0f),
|
|
|
|
(short)(node->width - NODE_DY), (short)NODE_DY,
|
|
|
|
NULL, 0, 0, 0, 0, "");
|
|
|
|
}
|
2012-07-09 19:50:43 +00:00
|
|
|
|
|
|
|
(void)snode;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* ****************** BASE DRAW FUNCTIONS FOR NEW OPERATOR NODES ***************** */
|
|
|
|
|
2011-09-20 08:48:48 +00:00
|
|
|
#if 0 /* UNUSED */
|
2011-09-16 08:20:21 +00:00
|
|
|
static void node_draw_socket_new(bNodeSocket *sock, float size)
|
2011-09-05 21:01:50 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
float x = sock->locx, y = sock->locy;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
/* 16 values of sin function */
|
|
|
|
static float si[16] = {
|
2012-05-27 19:38:10 +00:00
|
|
|
0.00000000f, 0.39435585f, 0.72479278f, 0.93775213f,
|
|
|
|
0.99871650f, 0.89780453f, 0.65137248f, 0.29936312f,
|
|
|
|
-0.10116832f, -0.48530196f, -0.79077573f, -0.96807711f,
|
|
|
|
-0.98846832f, -0.84864425f, -0.57126821f, -0.20129852f
|
2011-09-05 21:01:50 +00:00
|
|
|
};
|
|
|
|
/* 16 values of cos function */
|
2012-05-27 19:38:10 +00:00
|
|
|
static float co[16] = {
|
|
|
|
1.00000000f, 0.91895781f, 0.68896691f, 0.34730525f,
|
|
|
|
-0.05064916f, -0.44039415f, -0.75875812f, -0.95413925f,
|
|
|
|
-0.99486932f, -0.87434661f, -0.61210598f, -0.25065253f,
|
|
|
|
0.15142777f, 0.52896401f, 0.82076344f, 0.97952994f,
|
2011-09-05 21:01:50 +00:00
|
|
|
};
|
|
|
|
int a;
|
|
|
|
|
|
|
|
glColor3ub(180, 180, 180);
|
|
|
|
|
|
|
|
glBegin(GL_POLYGON);
|
2012-05-27 19:38:10 +00:00
|
|
|
for (a = 0; a < 16; a++)
|
|
|
|
glVertex2f(x + size * si[a], y + size * co[a]);
|
2011-09-05 21:01:50 +00:00
|
|
|
glEnd();
|
|
|
|
|
|
|
|
glColor4ub(0, 0, 0, 150);
|
|
|
|
glEnable(GL_BLEND);
|
2012-04-29 17:11:40 +00:00
|
|
|
glEnable(GL_LINE_SMOOTH);
|
2011-09-05 21:01:50 +00:00
|
|
|
glBegin(GL_LINE_LOOP);
|
2012-05-27 19:38:10 +00:00
|
|
|
for (a = 0; a < 16; a++)
|
|
|
|
glVertex2f(x + size * si[a], y + size * co[a]);
|
2011-09-05 21:01:50 +00:00
|
|
|
glEnd();
|
2012-04-29 17:11:40 +00:00
|
|
|
glDisable(GL_LINE_SMOOTH);
|
2011-09-05 21:01:50 +00:00
|
|
|
glDisable(GL_BLEND);
|
|
|
|
}
|
2011-09-20 08:48:48 +00:00
|
|
|
#endif
|
2011-09-05 21:01:50 +00:00
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* ****************** BUTTON CALLBACKS FOR ALL TREES ***************** */
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_value(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-11-11 02:15:09 +00:00
|
|
|
PointerRNA sockptr;
|
|
|
|
PropertyRNA *prop;
|
|
|
|
|
|
|
|
/* first socket stores value */
|
|
|
|
prop = RNA_struct_find_property(ptr, "outputs");
|
|
|
|
RNA_property_collection_lookup_int(ptr, prop, 0, &sockptr);
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, &sockptr, "default_value", 0, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_rgb(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-11-11 02:15:09 +00:00
|
|
|
uiLayout *col;
|
|
|
|
PointerRNA sockptr;
|
|
|
|
PropertyRNA *prop;
|
|
|
|
|
|
|
|
/* first socket stores value */
|
|
|
|
prop = RNA_struct_find_property(ptr, "outputs");
|
|
|
|
RNA_property_collection_lookup_int(ptr, prop, 0, &sockptr);
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2010-07-05 15:52:25 +00:00
|
|
|
uiTemplateColorWheel(col, &sockptr, "default_value", 1, 0, 0, 0);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, &sockptr, "default_value", 0, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_mix_rgb(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-27 11:00:35 +00:00
|
|
|
{
|
2012-07-10 09:12:33 +00:00
|
|
|
uiLayout *row, *col;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
bNodeTree *ntree = (bNodeTree *)ptr->id.data;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-07-10 09:12:33 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
|
|
|
row = uiLayoutRow(col, TRUE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, ptr, "blend_type", 0, "", ICON_NONE);
|
2012-03-24 06:38:07 +00:00
|
|
|
if (ntree->type == NTREE_COMPOSIT)
|
2010-08-21 04:51:00 +00:00
|
|
|
uiItemR(row, ptr, "use_alpha", 0, "", ICON_IMAGE_RGB_ALPHA);
|
2012-07-10 09:12:33 +00:00
|
|
|
|
|
|
|
uiItemR(col, ptr, "use_clamp", 0, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_time(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
|
|
|
uiLayout *row;
|
|
|
|
#if 0
|
|
|
|
/* XXX no context access here .. */
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
|
|
|
CurveMapping *cumap = node->storage;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (cumap) {
|
2009-09-16 18:59:13 +00:00
|
|
|
cumap->flag |= CUMA_DRAW_CFRA;
|
2012-05-27 19:38:10 +00:00
|
|
|
if (node->custom1 < node->custom2)
|
|
|
|
cumap->sample[0] = (float)(CFRA - node->custom1) / (float)(node->custom2 - node->custom1);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2010-01-04 17:28:37 +00:00
|
|
|
uiTemplateCurveMapping(layout, ptr, "curve", 's', 0, 0);
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, TRUE);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemR(row, ptr, "frame_start", 0, IFACE_("Sta"), ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "frame_end", 0, IFACE_("End"), ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_colorramp(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-11-10 04:01:44 +00:00
|
|
|
uiTemplateColorRamp(layout, ptr, "color_ramp", 0);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_curvevec(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2010-01-04 17:28:37 +00:00
|
|
|
uiTemplateCurveMapping(layout, ptr, "mapping", 'v', 0, 0);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2012-06-21 14:12:14 +00:00
|
|
|
#define SAMPLE_FLT_ISNONE FLT_MAX
|
2012-08-08 08:41:10 +00:00
|
|
|
static float _sample_col[4] = {SAMPLE_FLT_ISNONE}; /* bad bad, 2.5 will do better?... no it won't... */
|
2012-06-21 14:12:14 +00:00
|
|
|
void ED_node_sample_set(const float col[4])
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-06-21 14:12:14 +00:00
|
|
|
if (col) {
|
|
|
|
copy_v4_v4(_sample_col, col);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
copy_v4_fl(_sample_col, SAMPLE_FLT_ISNONE);
|
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_curvecol(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
|
|
|
CurveMapping *cumap = node->storage;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-06-21 14:12:14 +00:00
|
|
|
if (_sample_col[0] != SAMPLE_FLT_ISNONE) {
|
2009-09-16 18:59:13 +00:00
|
|
|
cumap->flag |= CUMA_DRAW_SAMPLE;
|
2011-09-11 02:50:01 +00:00
|
|
|
copy_v3_v3(cumap->sample, _sample_col);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
2012-06-21 14:12:14 +00:00
|
|
|
else {
|
2009-09-16 18:59:13 +00:00
|
|
|
cumap->flag &= ~CUMA_DRAW_SAMPLE;
|
2012-06-21 14:12:14 +00:00
|
|
|
}
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2010-01-04 17:28:37 +00:00
|
|
|
uiTemplateCurveMapping(layout, ptr, "mapping", 'c', 0, 0);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-11-06 17:55:43 +00:00
|
|
|
static void node_normal_cb(bContext *C, void *ntree_v, void *node_v)
|
|
|
|
{
|
|
|
|
Main *bmain = CTX_data_main(C);
|
|
|
|
|
|
|
|
ED_node_generic_update(bmain, ntree_v, node_v);
|
2012-05-27 19:38:10 +00:00
|
|
|
WM_event_add_notifier(C, NC_NODE | NA_EDITED, ntree_v);
|
2010-11-06 17:55:43 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_normal(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
uiBlock *block = uiLayoutAbsoluteBlock(layout);
|
|
|
|
bNodeTree *ntree = ptr->id.data;
|
|
|
|
bNode *node = ptr->data;
|
|
|
|
rctf *butr = &node->butr;
|
|
|
|
bNodeSocket *sock = node->outputs.first; /* first socket stores normal */
|
|
|
|
float *nor = ((bNodeSocketValueVector *)sock->default_value)->value;
|
2010-11-06 17:55:43 +00:00
|
|
|
uiBut *bt;
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
bt = uiDefButF(block, BUT_NORMAL, B_NODE_EXEC, "",
|
2012-07-09 17:05:47 +00:00
|
|
|
(int)butr->xmin, (int)butr->xmin,
|
2012-08-20 23:06:17 +00:00
|
|
|
(short)BLI_RCT_SIZE_X(butr), (short)BLI_RCT_SIZE_X(butr),
|
2012-05-27 19:38:10 +00:00
|
|
|
nor, 0.0f, 1.0f, 0, 0, "");
|
2010-11-06 17:55:43 +00:00
|
|
|
uiButSetFunc(bt, node_normal_cb, ntree, node);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2012-07-09 23:07:15 +00:00
|
|
|
#if 0 /* not used in 2.5x yet */
|
2008-12-29 00:55:23 +00:00
|
|
|
static void node_browse_tex_cb(bContext *C, void *ntree_v, void *node_v)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
Main *bmain = CTX_data_main(C);
|
|
|
|
bNodeTree *ntree = ntree_v;
|
|
|
|
bNode *node = node_v;
|
2008-12-24 10:33:10 +00:00
|
|
|
Tex *tex;
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (node->menunr < 1) return;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (node->id) {
|
2008-12-24 10:33:10 +00:00
|
|
|
node->id->us--;
|
2012-05-27 19:38:10 +00:00
|
|
|
node->id = NULL;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
tex = BLI_findlink(&bmain->tex, node->menunr - 1);
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
node->id = &tex->id;
|
2008-12-24 10:33:10 +00:00
|
|
|
id_us_plus(node->id);
|
2012-05-27 19:38:10 +00:00
|
|
|
BLI_strncpy(node->name, node->id->name + 2, sizeof(node->name));
|
2008-12-24 10:33:10 +00:00
|
|
|
|
|
|
|
nodeSetActive(ntree, node);
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (ntree->type == NTREE_TEXTURE)
|
2012-04-29 17:11:40 +00:00
|
|
|
ntreeTexCheckCyclics(ntree);
|
2008-12-24 10:33:10 +00:00
|
|
|
|
|
|
|
// allqueue(REDRAWBUTSSHADING, 0);
|
|
|
|
// allqueue(REDRAWNODE, 0);
|
|
|
|
NodeTagChanged(ntree, node);
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
node->menunr = 0;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2009-11-06 22:51:08 +00:00
|
|
|
#endif
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_texture(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
short multi = (
|
2012-05-27 19:38:10 +00:00
|
|
|
node->id &&
|
|
|
|
((Tex *)node->id)->use_nodes &&
|
|
|
|
(node->type != CMP_NODE_TEXTURE) &&
|
|
|
|
(node->type != TEX_NODE_TEXTURE)
|
|
|
|
);
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "texture", 0, "", ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (multi) {
|
2009-10-30 19:31:44 +00:00
|
|
|
/* Number Drawing not optimal here, better have a list*/
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "node_output", 0, "", ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_buts_math(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "operation", 0, "", ICON_NONE);
|
2012-07-10 09:12:33 +00:00
|
|
|
uiItemR(layout, ptr, "use_clamp", 0, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2011-09-05 21:01:50 +00:00
|
|
|
static int node_resize_area_default(bNode *node, int x, int y)
|
|
|
|
{
|
|
|
|
if (node->flag & NODE_HIDDEN) {
|
2012-05-27 19:38:10 +00:00
|
|
|
rctf totr = node->totr;
|
2011-09-05 21:01:50 +00:00
|
|
|
/* right part of node */
|
2012-05-27 19:38:10 +00:00
|
|
|
totr.xmin = node->totr.xmax - 20.0f;
|
2012-08-23 18:25:45 +00:00
|
|
|
if (BLI_rctf_isect_pt(&totr, x, y))
|
2012-05-22 14:13:33 +00:00
|
|
|
return NODE_RESIZE_RIGHT;
|
|
|
|
else
|
|
|
|
return 0;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-05-22 14:13:33 +00:00
|
|
|
const float size = 10.0f;
|
2012-05-27 19:38:10 +00:00
|
|
|
rctf totr = node->totr;
|
2012-05-22 14:13:33 +00:00
|
|
|
int dir = 0;
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (x >= totr.xmax - size && x < totr.xmax && y >= totr.ymin && y < totr.ymax)
|
2012-05-22 14:13:33 +00:00
|
|
|
dir |= NODE_RESIZE_RIGHT;
|
2012-05-27 19:38:10 +00:00
|
|
|
if (x >= totr.xmin && x < totr.xmin + size && y >= totr.ymin && y < totr.ymax)
|
2012-05-22 14:13:33 +00:00
|
|
|
dir |= NODE_RESIZE_LEFT;
|
|
|
|
return dir;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* ****************** BUTTON CALLBACKS FOR COMMON NODES ***************** */
|
|
|
|
|
|
|
|
/* width of socket columns in group display */
|
2012-05-27 19:38:10 +00:00
|
|
|
#define NODE_GROUP_FRAME 120
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
/* based on settings in node, sets drawing rect info. each redraw! */
|
|
|
|
/* note: this assumes only 1 group at a time is drawn (linked data) */
|
|
|
|
/* in node->totr the entire boundbox for the group is stored */
|
|
|
|
static void node_update_group(const bContext *C, bNodeTree *ntree, bNode *gnode)
|
|
|
|
{
|
|
|
|
if (!(gnode->flag & NODE_GROUP_EDIT)) {
|
|
|
|
node_update_default(C, ntree, gnode);
|
|
|
|
}
|
|
|
|
else {
|
2012-05-27 19:38:10 +00:00
|
|
|
bNodeTree *ngroup = (bNodeTree *)gnode->id;
|
2011-09-05 21:01:50 +00:00
|
|
|
bNode *node;
|
|
|
|
bNodeSocket *sock, *gsock;
|
|
|
|
float locx, locy;
|
2012-05-27 19:38:10 +00:00
|
|
|
rctf *rect = &gnode->totr;
|
|
|
|
float node_group_frame = U.dpi * NODE_GROUP_FRAME / 72;
|
|
|
|
float group_header = 26 * U.dpi / 72;
|
2011-09-05 21:01:50 +00:00
|
|
|
int counter;
|
|
|
|
int dy;
|
|
|
|
|
|
|
|
/* get "global" coords */
|
2012-05-22 14:13:33 +00:00
|
|
|
nodeToView(gnode, 0.0f, 0.0f, &locx, &locy);
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
/* center them, is a bit of abuse of locx and locy though */
|
|
|
|
node_update_nodetree(C, ngroup, locx, locy);
|
|
|
|
|
|
|
|
rect->xmin = rect->xmax = locx;
|
|
|
|
rect->ymin = rect->ymax = locy;
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
counter = 1;
|
|
|
|
for (node = ngroup->nodes.first; node; node = node->next) {
|
2012-03-24 06:38:07 +00:00
|
|
|
if (counter) {
|
2012-05-27 19:38:10 +00:00
|
|
|
*rect = node->totr;
|
|
|
|
counter = 0;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
else
|
2012-07-15 00:29:56 +00:00
|
|
|
BLI_rctf_union(rect, &node->totr);
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* add some room for links to group sockets */
|
2012-05-27 19:38:10 +00:00
|
|
|
rect->xmin -= 4 * NODE_DY;
|
|
|
|
rect->xmax += 4 * NODE_DY;
|
|
|
|
rect->ymin -= NODE_DY;
|
|
|
|
rect->ymax += NODE_DY;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
/* input sockets */
|
2012-08-20 15:29:02 +00:00
|
|
|
dy = BLI_RCT_CENTER_Y(rect) + (NODE_DY * (BLI_countlist(&gnode->inputs) - 1));
|
2012-05-27 19:38:10 +00:00
|
|
|
gsock = ngroup->inputs.first;
|
|
|
|
sock = gnode->inputs.first;
|
2011-09-05 21:01:50 +00:00
|
|
|
while (gsock || sock) {
|
|
|
|
while (sock && !sock->groupsock) {
|
|
|
|
sock->locx = rect->xmin - node_group_frame;
|
|
|
|
sock->locy = dy;
|
|
|
|
|
|
|
|
/* prevent long socket lists from growing out of the group box */
|
2012-05-27 19:38:10 +00:00
|
|
|
if (dy - 3 * NODE_DYS < rect->ymin)
|
|
|
|
rect->ymin = dy - 3 * NODE_DYS;
|
|
|
|
if (dy + 3 * NODE_DYS > rect->ymax)
|
|
|
|
rect->ymax = dy + 3 * NODE_DYS;
|
|
|
|
dy -= 2 * NODE_DY;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
sock = sock->next;
|
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
while (gsock && (!sock || sock->groupsock != gsock)) {
|
2011-09-05 21:01:50 +00:00
|
|
|
gsock->locx = rect->xmin;
|
|
|
|
gsock->locy = dy;
|
|
|
|
|
|
|
|
/* prevent long socket lists from growing out of the group box */
|
2012-05-27 19:38:10 +00:00
|
|
|
if (dy - 3 * NODE_DYS < rect->ymin)
|
|
|
|
rect->ymin = dy - 3 * NODE_DYS;
|
|
|
|
if (dy + 3 * NODE_DYS > rect->ymax)
|
|
|
|
rect->ymax = dy + 3 * NODE_DYS;
|
|
|
|
dy -= 2 * NODE_DY;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
gsock = gsock->next;
|
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
while (sock && gsock && sock->groupsock == gsock) {
|
2011-09-05 21:01:50 +00:00
|
|
|
gsock->locx = rect->xmin;
|
|
|
|
sock->locx = rect->xmin - node_group_frame;
|
|
|
|
sock->locy = gsock->locy = dy;
|
|
|
|
|
|
|
|
/* prevent long socket lists from growing out of the group box */
|
2012-05-27 19:38:10 +00:00
|
|
|
if (dy - 3 * NODE_DYS < rect->ymin)
|
|
|
|
rect->ymin = dy - 3 * NODE_DYS;
|
|
|
|
if (dy + 3 * NODE_DYS > rect->ymax)
|
|
|
|
rect->ymax = dy + 3 * NODE_DYS;
|
|
|
|
dy -= 2 * NODE_DY;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
sock = sock->next;
|
|
|
|
gsock = gsock->next;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* output sockets */
|
2012-08-20 15:29:02 +00:00
|
|
|
dy = BLI_RCT_CENTER_Y(rect) + (NODE_DY * (BLI_countlist(&gnode->outputs) - 1));
|
2012-05-27 19:38:10 +00:00
|
|
|
gsock = ngroup->outputs.first;
|
|
|
|
sock = gnode->outputs.first;
|
2011-09-05 21:01:50 +00:00
|
|
|
while (gsock || sock) {
|
|
|
|
while (sock && !sock->groupsock) {
|
|
|
|
sock->locx = rect->xmax + node_group_frame;
|
|
|
|
sock->locy = dy - NODE_DYS;
|
|
|
|
|
|
|
|
/* prevent long socket lists from growing out of the group box */
|
2012-05-27 19:38:10 +00:00
|
|
|
if (dy - 3 * NODE_DYS < rect->ymin)
|
|
|
|
rect->ymin = dy - 3 * NODE_DYS;
|
|
|
|
if (dy + 3 * NODE_DYS > rect->ymax)
|
|
|
|
rect->ymax = dy + 3 * NODE_DYS;
|
|
|
|
dy -= 2 * NODE_DY;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
sock = sock->next;
|
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
while (gsock && (!sock || sock->groupsock != gsock)) {
|
2011-09-05 21:01:50 +00:00
|
|
|
gsock->locx = rect->xmax;
|
|
|
|
gsock->locy = dy - NODE_DYS;
|
|
|
|
|
|
|
|
/* prevent long socket lists from growing out of the group box */
|
2012-05-27 19:38:10 +00:00
|
|
|
if (dy - 3 * NODE_DYS < rect->ymin)
|
|
|
|
rect->ymin = dy - 3 * NODE_DYS;
|
|
|
|
if (dy + 3 * NODE_DYS > rect->ymax)
|
|
|
|
rect->ymax = dy + 3 * NODE_DYS;
|
|
|
|
dy -= 2 * NODE_DY;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
gsock = gsock->next;
|
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
while (sock && gsock && sock->groupsock == gsock) {
|
2011-09-05 21:01:50 +00:00
|
|
|
gsock->locx = rect->xmax;
|
|
|
|
sock->locx = rect->xmax + node_group_frame;
|
|
|
|
sock->locy = gsock->locy = dy - NODE_DYS;
|
|
|
|
|
|
|
|
/* prevent long socket lists from growing out of the group box */
|
2012-05-27 19:38:10 +00:00
|
|
|
if (dy - 3 * NODE_DYS < rect->ymin)
|
|
|
|
rect->ymin = dy - 3 * NODE_DYS;
|
|
|
|
if (dy + 3 * NODE_DYS > rect->ymax)
|
|
|
|
rect->ymax = dy + 3 * NODE_DYS;
|
|
|
|
dy -= 2 * NODE_DY;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
sock = sock->next;
|
|
|
|
gsock = gsock->next;
|
|
|
|
}
|
|
|
|
}
|
2011-11-22 17:49:06 +00:00
|
|
|
|
|
|
|
/* Set the block bounds to clip mouse events from underlying nodes.
|
|
|
|
* Add margin for header and input/output columns.
|
|
|
|
*/
|
|
|
|
uiExplicitBoundsBlock(gnode->block,
|
2012-05-27 19:38:10 +00:00
|
|
|
rect->xmin - node_group_frame,
|
|
|
|
rect->ymin,
|
|
|
|
rect->xmax + node_group_frame,
|
|
|
|
rect->ymax + group_header);
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void update_group_input_cb(bContext *UNUSED(C), void *UNUSED(snode_v), void *ngroup_v)
|
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNodeTree *ngroup = (bNodeTree *)ngroup_v;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
ngroup->update |= NTREE_UPDATE_GROUP_IN;
|
|
|
|
ntreeUpdateTree(ngroup);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void update_group_output_cb(bContext *UNUSED(C), void *UNUSED(snode_v), void *ngroup_v)
|
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNodeTree *ngroup = (bNodeTree *)ngroup_v;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
ngroup->update |= NTREE_UPDATE_GROUP_OUT;
|
|
|
|
ntreeUpdateTree(ngroup);
|
|
|
|
}
|
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
static void draw_group_socket_name(SpaceNode *snode, bNode *gnode, bNodeSocket *sock,
|
|
|
|
int in_out, float xoffset, float yoffset)
|
2011-09-05 21:01:50 +00:00
|
|
|
{
|
|
|
|
if (sock->flag & SOCK_DYNAMIC) {
|
2012-09-14 05:44:47 +00:00
|
|
|
bNodeTree *ngroup = (bNodeTree *)gnode->id;
|
|
|
|
uiBut *but;
|
|
|
|
but = uiDefBut(gnode->block, TEX, 0, "",
|
|
|
|
sock->locx + xoffset, sock->locy + 1 + yoffset, 72, NODE_DY,
|
|
|
|
sock->name, 0, sizeof(sock->name), 0, 0, "");
|
2012-05-27 19:38:10 +00:00
|
|
|
if (in_out == SOCK_IN)
|
2012-09-14 05:44:47 +00:00
|
|
|
uiButSetFunc(but, update_group_input_cb, snode, ngroup);
|
2011-09-05 21:01:50 +00:00
|
|
|
else
|
2012-09-14 05:44:47 +00:00
|
|
|
uiButSetFunc(but, update_group_output_cb, snode, ngroup);
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-09-14 05:44:47 +00:00
|
|
|
const char *ui_name = IFACE_(sock->name);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiDefBut(gnode->block, LABEL, 0, ui_name,
|
2012-05-27 19:38:10 +00:00
|
|
|
sock->locx + xoffset, sock->locy + 1 + yoffset, 72, NODE_DY,
|
2012-09-14 05:44:47 +00:00
|
|
|
NULL, 0, 0, 0, 0, "");
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
static void draw_group_socket(const bContext *C, SpaceNode *snode, bNodeTree *ntree, bNode *gnode,
|
|
|
|
bNodeSocket *sock, bNodeSocket *gsock, int index, int in_out)
|
2011-09-05 21:01:50 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNodeTree *ngroup = (bNodeTree *)gnode->id;
|
|
|
|
bNodeSocketType *stype = ntreeGetSocketType(gsock ? gsock->type : sock->type);
|
2011-09-05 21:01:50 +00:00
|
|
|
uiBut *bt;
|
|
|
|
float offset;
|
|
|
|
int draw_value;
|
2012-05-27 19:38:10 +00:00
|
|
|
float node_group_frame = U.dpi * NODE_GROUP_FRAME / 72;
|
|
|
|
float socket_size = NODE_SOCKSIZE * U.dpi / 72;
|
|
|
|
float arrowbutw = 0.8f * UI_UNIT_X;
|
2011-09-05 21:01:50 +00:00
|
|
|
/* layout stuff for buttons on group left frame */
|
2012-05-27 19:38:10 +00:00
|
|
|
float colw = 0.6f * node_group_frame;
|
|
|
|
float col1 = 6 - node_group_frame;
|
|
|
|
float col2 = col1 + colw + 6;
|
|
|
|
float col3 = -arrowbutw - 6;
|
2011-09-05 21:01:50 +00:00
|
|
|
/* layout stuff for buttons on group right frame */
|
2012-05-27 19:38:10 +00:00
|
|
|
float cor1 = 6;
|
|
|
|
float cor2 = cor1 + arrowbutw + 6;
|
|
|
|
float cor3 = cor2 + arrowbutw + 6;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
/* node and group socket circles */
|
|
|
|
if (sock)
|
2012-06-01 12:38:03 +00:00
|
|
|
node_socket_circle_draw(ntree, sock, socket_size, sock->flag & SELECT);
|
2011-09-05 21:01:50 +00:00
|
|
|
if (gsock)
|
2012-06-01 12:38:03 +00:00
|
|
|
node_socket_circle_draw(ngroup, gsock, socket_size, gsock->flag & SELECT);
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
/* socket name */
|
2012-05-27 19:38:10 +00:00
|
|
|
offset = (in_out == SOCK_IN ? col1 : cor3);
|
2011-09-05 21:01:50 +00:00
|
|
|
if (!gsock)
|
2012-05-27 19:38:10 +00:00
|
|
|
offset += (in_out == SOCK_IN ? node_group_frame : -node_group_frame);
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
/* draw both name and value button if:
|
|
|
|
* 1) input: not internal
|
|
|
|
* 2) output: (node type uses const outputs) and (group output is unlinked)
|
|
|
|
*/
|
2011-09-08 07:01:29 +00:00
|
|
|
draw_value = 0;
|
2011-09-05 21:01:50 +00:00
|
|
|
switch (in_out) {
|
2012-05-27 19:38:10 +00:00
|
|
|
case SOCK_IN:
|
|
|
|
draw_value = !(gsock && (gsock->flag & SOCK_INTERNAL));
|
|
|
|
break;
|
|
|
|
case SOCK_OUT:
|
|
|
|
if (gnode->typeinfo->flag & NODE_CONST_OUTPUT)
|
|
|
|
draw_value = !(gsock && gsock->link);
|
|
|
|
break;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
if (draw_value) {
|
|
|
|
/* both name and value buttons */
|
|
|
|
if (gsock) {
|
|
|
|
draw_group_socket_name(snode, gnode, gsock, in_out, offset, 0);
|
|
|
|
if (stype->buttonfunc)
|
2012-07-09 23:07:15 +00:00
|
|
|
stype->buttonfunc(C, gnode->block, ngroup, NULL, gsock, "",
|
|
|
|
gsock->locx + offset, gsock->locy - NODE_DY, colw);
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
draw_group_socket_name(snode, gnode, sock, in_out, offset, 0);
|
|
|
|
if (stype->buttonfunc)
|
2012-07-09 23:07:15 +00:00
|
|
|
stype->buttonfunc(C, gnode->block, ngroup, NULL, sock, "",
|
|
|
|
sock->locx + offset, sock->locy - NODE_DY, colw);
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
/* only name, no value button */
|
|
|
|
if (gsock)
|
|
|
|
draw_group_socket_name(snode, gnode, gsock, in_out, offset, -NODE_DYS);
|
|
|
|
else
|
|
|
|
draw_group_socket_name(snode, gnode, sock, in_out, offset, -NODE_DYS);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (gsock && (gsock->flag & SOCK_DYNAMIC)) {
|
|
|
|
/* up/down buttons */
|
2012-05-27 19:38:10 +00:00
|
|
|
offset = (in_out == SOCK_IN ? col2 : cor2);
|
2011-09-05 21:01:50 +00:00
|
|
|
uiBlockSetDirection(gnode->block, UI_TOP);
|
|
|
|
uiBlockBeginAlign(gnode->block);
|
|
|
|
bt = uiDefIconButO(gnode->block, BUT, "NODE_OT_group_socket_move_up", 0, ICON_TRIA_UP,
|
2012-05-27 19:38:10 +00:00
|
|
|
gsock->locx + offset, gsock->locy, arrowbutw, arrowbutw, "");
|
2011-09-05 21:01:50 +00:00
|
|
|
if (!gsock->prev || !(gsock->prev->flag & SOCK_DYNAMIC))
|
|
|
|
uiButSetFlag(bt, UI_BUT_DISABLED);
|
|
|
|
RNA_int_set(uiButGetOperatorPtrRNA(bt), "index", index);
|
|
|
|
RNA_enum_set(uiButGetOperatorPtrRNA(bt), "in_out", in_out);
|
|
|
|
bt = uiDefIconButO(gnode->block, BUT, "NODE_OT_group_socket_move_down", 0, ICON_TRIA_DOWN,
|
2012-05-27 19:38:10 +00:00
|
|
|
gsock->locx + offset, gsock->locy - arrowbutw, arrowbutw, arrowbutw, "");
|
2011-09-05 21:01:50 +00:00
|
|
|
if (!gsock->next || !(gsock->next->flag & SOCK_DYNAMIC))
|
|
|
|
uiButSetFlag(bt, UI_BUT_DISABLED);
|
|
|
|
RNA_int_set(uiButGetOperatorPtrRNA(bt), "index", index);
|
|
|
|
RNA_enum_set(uiButGetOperatorPtrRNA(bt), "in_out", in_out);
|
|
|
|
uiBlockEndAlign(gnode->block);
|
|
|
|
uiBlockSetDirection(gnode->block, 0);
|
|
|
|
|
|
|
|
/* remove button */
|
2012-05-27 19:38:10 +00:00
|
|
|
offset = (in_out == SOCK_IN ? col3 : cor1);
|
2011-09-05 21:01:50 +00:00
|
|
|
uiBlockSetEmboss(gnode->block, UI_EMBOSSN);
|
|
|
|
bt = uiDefIconButO(gnode->block, BUT, "NODE_OT_group_socket_remove", 0, ICON_X,
|
2012-05-27 19:38:10 +00:00
|
|
|
gsock->locx + offset, gsock->locy - 0.5f * arrowbutw, arrowbutw, arrowbutw, "");
|
2011-09-05 21:01:50 +00:00
|
|
|
RNA_int_set(uiButGetOperatorPtrRNA(bt), "index", index);
|
|
|
|
RNA_enum_set(uiButGetOperatorPtrRNA(bt), "in_out", in_out);
|
|
|
|
uiBlockSetEmboss(gnode->block, UI_EMBOSS);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* groups are, on creation, centered around 0,0 */
|
|
|
|
static void node_draw_group(const bContext *C, ARegion *ar, SpaceNode *snode, bNodeTree *ntree, bNode *gnode)
|
|
|
|
{
|
|
|
|
if (!(gnode->flag & NODE_GROUP_EDIT)) {
|
|
|
|
node_draw_default(C, ar, snode, ntree, gnode);
|
|
|
|
}
|
|
|
|
else {
|
2012-05-27 19:38:10 +00:00
|
|
|
bNodeTree *ngroup = (bNodeTree *)gnode->id;
|
2011-09-05 21:01:50 +00:00
|
|
|
bNodeSocket *sock, *gsock;
|
|
|
|
uiLayout *layout;
|
|
|
|
PointerRNA ptr;
|
2012-05-27 19:38:10 +00:00
|
|
|
rctf rect = gnode->totr;
|
2012-07-09 23:23:47 +00:00
|
|
|
const float dpi_fac = U.dpi / 72.0f;
|
|
|
|
float node_group_frame = NODE_GROUP_FRAME * dpi_fac;
|
|
|
|
float group_header = 26 * dpi_fac;
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
int index;
|
|
|
|
|
|
|
|
/* backdrop header */
|
|
|
|
glEnable(GL_BLEND);
|
2011-09-11 06:41:09 +00:00
|
|
|
uiSetRoundBox(UI_CNR_TOP_LEFT | UI_CNR_TOP_RIGHT);
|
2011-09-05 21:01:50 +00:00
|
|
|
UI_ThemeColorShadeAlpha(TH_NODE_GROUP, 0, -70);
|
2012-07-09 23:07:15 +00:00
|
|
|
uiDrawBox(GL_POLYGON,
|
|
|
|
rect.xmin - node_group_frame, rect.ymax,
|
|
|
|
rect.xmax + node_group_frame, rect.ymax + group_header, BASIS_RAD);
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
/* backdrop body */
|
|
|
|
UI_ThemeColorShadeAlpha(TH_BACK, -8, -70);
|
2011-09-11 06:41:09 +00:00
|
|
|
uiSetRoundBox(UI_CNR_NONE);
|
2011-09-05 21:01:50 +00:00
|
|
|
uiDrawBox(GL_POLYGON, rect.xmin, rect.ymin, rect.xmax, rect.ymax, BASIS_RAD);
|
|
|
|
|
|
|
|
/* input column */
|
|
|
|
UI_ThemeColorShadeAlpha(TH_BACK, 10, -50);
|
2011-09-11 06:41:09 +00:00
|
|
|
uiSetRoundBox(UI_CNR_BOTTOM_LEFT);
|
2012-05-27 19:38:10 +00:00
|
|
|
uiDrawBox(GL_POLYGON, rect.xmin - node_group_frame, rect.ymin, rect.xmin, rect.ymax, BASIS_RAD);
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
/* output column */
|
|
|
|
UI_ThemeColorShadeAlpha(TH_BACK, 10, -50);
|
2011-09-11 06:41:09 +00:00
|
|
|
uiSetRoundBox(UI_CNR_BOTTOM_RIGHT);
|
2012-05-27 19:38:10 +00:00
|
|
|
uiDrawBox(GL_POLYGON, rect.xmax, rect.ymin, rect.xmax + node_group_frame, rect.ymax, BASIS_RAD);
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
/* input column separator */
|
|
|
|
glColor4ub(200, 200, 200, 140);
|
|
|
|
glBegin(GL_LINES);
|
|
|
|
glVertex2f(rect.xmin, rect.ymin);
|
|
|
|
glVertex2f(rect.xmin, rect.ymax);
|
|
|
|
glEnd();
|
|
|
|
|
|
|
|
/* output column separator */
|
|
|
|
glColor4ub(200, 200, 200, 140);
|
|
|
|
glBegin(GL_LINES);
|
|
|
|
glVertex2f(rect.xmax, rect.ymin);
|
|
|
|
glVertex2f(rect.xmax, rect.ymax);
|
|
|
|
glEnd();
|
|
|
|
|
|
|
|
/* group node outline */
|
2011-09-11 06:41:09 +00:00
|
|
|
uiSetRoundBox(UI_CNR_ALL);
|
2011-09-05 21:01:50 +00:00
|
|
|
glColor4ub(200, 200, 200, 140);
|
2012-04-29 17:11:40 +00:00
|
|
|
glEnable(GL_LINE_SMOOTH);
|
2012-07-09 23:07:15 +00:00
|
|
|
uiDrawBox(GL_LINE_LOOP,
|
|
|
|
rect.xmin - node_group_frame, rect.ymin,
|
|
|
|
rect.xmax + node_group_frame, rect.ymax + group_header, BASIS_RAD);
|
2012-04-29 17:11:40 +00:00
|
|
|
glDisable(GL_LINE_SMOOTH);
|
2011-09-05 21:01:50 +00:00
|
|
|
glDisable(GL_BLEND);
|
|
|
|
|
|
|
|
/* backdrop title */
|
|
|
|
UI_ThemeColor(TH_TEXT_HI);
|
|
|
|
|
2012-07-09 17:05:47 +00:00
|
|
|
layout = uiBlockLayout(gnode->block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL,
|
2012-07-09 23:23:47 +00:00
|
|
|
(int)(rect.xmin + NODE_MARGIN_X), (int)(rect.ymax + (group_header - (2.5f * dpi_fac))),
|
2012-08-20 23:06:17 +00:00
|
|
|
mini((int)(BLI_RCT_SIZE_X(&rect) - 18.0f), node_group_frame + 20), group_header, UI_GetStyle());
|
2011-09-05 21:01:50 +00:00
|
|
|
RNA_pointer_create(&ntree->id, &RNA_Node, gnode, &ptr);
|
2012-05-27 19:38:10 +00:00
|
|
|
uiTemplateIDBrowse(layout, (bContext *)C, &ptr, "node_tree", NULL, NULL, NULL);
|
2011-09-05 21:01:50 +00:00
|
|
|
uiBlockLayoutResolve(gnode->block, NULL, NULL);
|
|
|
|
|
|
|
|
/* draw the internal tree nodes and links */
|
|
|
|
node_draw_nodetree(C, ar, snode, ngroup);
|
|
|
|
|
|
|
|
/* group sockets */
|
2012-05-27 19:38:10 +00:00
|
|
|
gsock = ngroup->inputs.first;
|
|
|
|
sock = gnode->inputs.first;
|
2011-09-05 21:01:50 +00:00
|
|
|
index = 0;
|
|
|
|
while (gsock || sock) {
|
|
|
|
while (sock && !sock->groupsock) {
|
|
|
|
draw_group_socket(C, snode, ntree, gnode, sock, NULL, index, SOCK_IN);
|
|
|
|
sock = sock->next;
|
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
while (gsock && (!sock || sock->groupsock != gsock)) {
|
2011-09-05 21:01:50 +00:00
|
|
|
draw_group_socket(C, snode, ntree, gnode, NULL, gsock, index, SOCK_IN);
|
|
|
|
gsock = gsock->next;
|
2012-08-22 16:44:32 +00:00
|
|
|
index++;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
while (sock && gsock && sock->groupsock == gsock) {
|
2011-09-05 21:01:50 +00:00
|
|
|
draw_group_socket(C, snode, ntree, gnode, sock, gsock, index, SOCK_IN);
|
|
|
|
sock = sock->next;
|
|
|
|
gsock = gsock->next;
|
2012-08-22 16:44:32 +00:00
|
|
|
index++;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
gsock = ngroup->outputs.first;
|
|
|
|
sock = gnode->outputs.first;
|
2011-09-05 21:01:50 +00:00
|
|
|
index = 0;
|
|
|
|
while (gsock || sock) {
|
|
|
|
while (sock && !sock->groupsock) {
|
|
|
|
draw_group_socket(C, snode, ntree, gnode, sock, NULL, index, SOCK_OUT);
|
|
|
|
sock = sock->next;
|
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
while (gsock && (!sock || sock->groupsock != gsock)) {
|
2011-09-05 21:01:50 +00:00
|
|
|
draw_group_socket(C, snode, ntree, gnode, NULL, gsock, index, SOCK_OUT);
|
|
|
|
gsock = gsock->next;
|
2012-08-22 16:44:32 +00:00
|
|
|
index++;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
while (sock && gsock && sock->groupsock == gsock) {
|
2011-09-05 21:01:50 +00:00
|
|
|
draw_group_socket(C, snode, ntree, gnode, sock, gsock, index, SOCK_OUT);
|
|
|
|
sock = sock->next;
|
|
|
|
gsock = gsock->next;
|
2012-08-22 16:44:32 +00:00
|
|
|
index++;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
uiEndBlock(C, gnode->block);
|
|
|
|
uiDrawBlock(C, gnode->block);
|
2012-05-27 19:38:10 +00:00
|
|
|
gnode->block = NULL;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-09-15 01:52:28 +00:00
|
|
|
static void node_uifunc_group(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2011-11-04 13:31:15 +00:00
|
|
|
{
|
|
|
|
uiTemplateIDBrowse(layout, C, ptr, "node_tree", NULL, NULL, NULL);
|
|
|
|
}
|
|
|
|
|
2011-09-05 21:01:50 +00:00
|
|
|
static void node_common_buts_whileloop(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemR(layout, ptr, "max_iterations", 0, NULL, ICON_NONE);
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* XXX Does a bounding box update by iterating over all children.
|
|
|
|
* Not ideal to do this in every draw call, but doing as transform callback doesn't work,
|
|
|
|
* since the child node totr rects are not updated properly at that point.
|
|
|
|
*/
|
|
|
|
static void node_update_frame(const bContext *UNUSED(C), bNodeTree *ntree, bNode *node)
|
|
|
|
{
|
|
|
|
const float margin = 30.0f;
|
|
|
|
NodeFrame *data = (NodeFrame *)node->storage;
|
|
|
|
int bbinit;
|
|
|
|
bNode *tnode;
|
|
|
|
rctf rect, noderect;
|
|
|
|
float xmax, ymax;
|
|
|
|
|
|
|
|
/* init rect from current frame size */
|
|
|
|
nodeToView(node, node->offsetx, node->offsety, &rect.xmin, &rect.ymax);
|
2012-05-27 19:38:10 +00:00
|
|
|
nodeToView(node, node->offsetx + node->width, node->offsety - node->height, &rect.xmax, &rect.ymin);
|
2012-05-22 14:13:33 +00:00
|
|
|
|
|
|
|
/* frame can be resized manually only if shrinking is disabled or no children are attached */
|
|
|
|
data->flag |= NODE_FRAME_RESIZEABLE;
|
|
|
|
/* for shrinking bbox, initialize the rect from first child node */
|
|
|
|
bbinit = (data->flag & NODE_FRAME_SHRINK);
|
|
|
|
/* fit bounding box to all children */
|
2012-05-27 19:38:10 +00:00
|
|
|
for (tnode = ntree->nodes.first; tnode; tnode = tnode->next) {
|
|
|
|
if (tnode->parent != node)
|
2012-05-22 14:13:33 +00:00
|
|
|
continue;
|
|
|
|
|
|
|
|
/* add margin to node rect */
|
|
|
|
noderect = tnode->totr;
|
|
|
|
noderect.xmin -= margin;
|
|
|
|
noderect.xmax += margin;
|
|
|
|
noderect.ymin -= margin;
|
|
|
|
noderect.ymax += margin;
|
|
|
|
|
|
|
|
/* first child initializes frame */
|
|
|
|
if (bbinit) {
|
|
|
|
bbinit = 0;
|
|
|
|
rect = noderect;
|
|
|
|
data->flag &= ~NODE_FRAME_RESIZEABLE;
|
|
|
|
}
|
|
|
|
else
|
2012-07-15 00:29:56 +00:00
|
|
|
BLI_rctf_union(&rect, &noderect);
|
2012-05-22 14:13:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* now adjust the frame size from view-space bounding box */
|
|
|
|
nodeFromView(node, rect.xmin, rect.ymax, &node->offsetx, &node->offsety);
|
|
|
|
nodeFromView(node, rect.xmax, rect.ymin, &xmax, &ymax);
|
|
|
|
node->width = xmax - node->offsetx;
|
|
|
|
node->height = -ymax + node->offsety;
|
|
|
|
|
|
|
|
node->totr = rect;
|
|
|
|
}
|
|
|
|
|
2012-07-09 16:26:01 +00:00
|
|
|
static void node_draw_frame_label(bNode *node, const float aspect)
|
2011-09-05 21:01:50 +00:00
|
|
|
{
|
2012-05-22 14:13:33 +00:00
|
|
|
/* XXX font id is crap design */
|
2012-07-10 20:44:25 +00:00
|
|
|
const int fontid = UI_GetStyle()->widgetlabel.uifont_id;
|
2012-05-22 14:13:33 +00:00
|
|
|
NodeFrame *data = (NodeFrame *)node->storage;
|
2012-05-27 19:38:10 +00:00
|
|
|
rctf *rct = &node->totr;
|
|
|
|
int color_id = node_get_colorid(node);
|
2012-07-10 20:44:25 +00:00
|
|
|
const char *label = nodeLabel(node);
|
2012-05-22 14:13:33 +00:00
|
|
|
/* XXX a bit hacky, should use separate align values for x and y */
|
|
|
|
float width, ascender;
|
|
|
|
float x, y;
|
2012-07-09 16:26:01 +00:00
|
|
|
const int font_size = data->label_size / aspect;
|
2012-07-09 16:06:44 +00:00
|
|
|
|
|
|
|
BLF_enable(fontid, BLF_ASPECT);
|
2012-07-09 16:26:01 +00:00
|
|
|
BLF_aspect(fontid, aspect, aspect, 1.0f);
|
2012-07-09 16:06:44 +00:00
|
|
|
BLF_size(fontid, MIN2(24, font_size), U.dpi); /* clamp otherwise it can suck up a LOT of memory */
|
2012-05-22 14:13:33 +00:00
|
|
|
|
|
|
|
/* title color */
|
|
|
|
UI_ThemeColorBlendShade(TH_TEXT, color_id, 0.8f, 10);
|
|
|
|
|
|
|
|
width = BLF_width(fontid, label);
|
2012-07-09 16:26:01 +00:00
|
|
|
ascender = BLF_ascender(fontid);
|
2012-05-22 14:13:33 +00:00
|
|
|
|
2012-07-09 16:26:01 +00:00
|
|
|
/* 'x' doesn't need aspect correction */
|
2012-08-20 15:29:02 +00:00
|
|
|
x = BLI_RCT_CENTER_X(rct) - (0.5f * width);
|
2012-07-10 20:44:25 +00:00
|
|
|
y = rct->ymax - (((NODE_DY / 4) / aspect) + (ascender * aspect));
|
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
BLF_position(fontid, x, y, 0);
|
|
|
|
BLF_draw(fontid, label, BLF_DRAW_STR_DUMMY_MAX);
|
2012-07-09 16:06:44 +00:00
|
|
|
|
|
|
|
BLF_disable(fontid, BLF_ASPECT);
|
2012-05-22 14:13:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_draw_frame(const bContext *C, ARegion *ar, SpaceNode *snode, bNodeTree *UNUSED(ntree), bNode *node)
|
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
rctf *rct = &node->totr;
|
|
|
|
int color_id = node_get_colorid(node);
|
2012-06-01 14:42:21 +00:00
|
|
|
unsigned char color[4];
|
|
|
|
float alpha;
|
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* skip if out of view */
|
2012-08-05 20:40:26 +00:00
|
|
|
if (BLI_rctf_isect(&node->totr, &ar->v2d.cur, NULL) == FALSE) {
|
2012-05-22 14:13:33 +00:00
|
|
|
uiEndBlock(C, node->block);
|
2012-05-27 19:38:10 +00:00
|
|
|
node->block = NULL;
|
2012-05-22 14:13:33 +00:00
|
|
|
return;
|
|
|
|
}
|
2012-07-10 20:44:25 +00:00
|
|
|
|
|
|
|
UI_GetThemeColor4ubv(TH_NODE_FRAME, color);
|
|
|
|
alpha = (float)(color[3]) / 255.0f;
|
2012-05-22 14:13:33 +00:00
|
|
|
|
|
|
|
/* shadow */
|
2012-06-01 14:42:21 +00:00
|
|
|
node_draw_shadow(snode, node, BASIS_RAD, alpha);
|
2012-05-22 14:13:33 +00:00
|
|
|
|
|
|
|
/* body */
|
|
|
|
if (node->flag & NODE_CUSTOM_COLOR)
|
2012-06-01 14:42:21 +00:00
|
|
|
glColor4f(node->color[0], node->color[1], node->color[2], alpha);
|
2012-05-22 14:13:33 +00:00
|
|
|
else
|
2012-06-01 14:42:21 +00:00
|
|
|
UI_ThemeColor4(TH_NODE_FRAME);
|
2012-05-22 14:13:33 +00:00
|
|
|
glEnable(GL_BLEND);
|
|
|
|
uiSetRoundBox(UI_CNR_ALL);
|
|
|
|
uiRoundBox(rct->xmin, rct->ymin, rct->xmax, rct->ymax, BASIS_RAD);
|
|
|
|
glDisable(GL_BLEND);
|
2011-09-05 21:01:50 +00:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
/* outline active and selected emphasis */
|
2012-08-01 09:44:25 +00:00
|
|
|
if (node->flag & SELECT) {
|
2012-05-22 14:13:33 +00:00
|
|
|
glEnable(GL_BLEND);
|
2012-05-27 19:38:10 +00:00
|
|
|
glEnable(GL_LINE_SMOOTH);
|
2012-05-22 14:13:33 +00:00
|
|
|
|
|
|
|
if (node->flag & NODE_ACTIVE)
|
|
|
|
UI_ThemeColorShadeAlpha(TH_ACTIVE, 0, -40);
|
|
|
|
else
|
|
|
|
UI_ThemeColorShadeAlpha(TH_SELECT, 0, -40);
|
|
|
|
uiSetRoundBox(UI_CNR_ALL);
|
2012-07-09 23:07:15 +00:00
|
|
|
uiDrawBox(GL_LINE_LOOP,
|
|
|
|
rct->xmin, rct->ymin,
|
|
|
|
rct->xmax, rct->ymax, BASIS_RAD);
|
2012-05-22 14:13:33 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
glDisable(GL_LINE_SMOOTH);
|
2012-05-22 14:13:33 +00:00
|
|
|
glDisable(GL_BLEND);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* label */
|
2012-07-09 16:26:01 +00:00
|
|
|
node_draw_frame_label(node, snode->aspect);
|
2012-05-22 14:13:33 +00:00
|
|
|
|
|
|
|
UI_ThemeClearColor(color_id);
|
|
|
|
|
|
|
|
uiEndBlock(C, node->block);
|
|
|
|
uiDrawBlock(C, node->block);
|
2012-05-27 19:38:10 +00:00
|
|
|
node->block = NULL;
|
2012-05-22 14:13:33 +00:00
|
|
|
}
|
2011-09-05 21:01:50 +00:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
static int node_resize_area_frame(bNode *node, int x, int y)
|
|
|
|
{
|
|
|
|
const float size = 10.0f;
|
|
|
|
NodeFrame *data = (NodeFrame *)node->storage;
|
2012-05-27 19:38:10 +00:00
|
|
|
rctf totr = node->totr;
|
2012-05-22 14:13:33 +00:00
|
|
|
int dir = 0;
|
|
|
|
|
|
|
|
/* shrinking frame size is determined by child nodes */
|
|
|
|
if (!(data->flag & NODE_FRAME_RESIZEABLE))
|
|
|
|
return 0;
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (x >= totr.xmax - size && x < totr.xmax && y >= totr.ymin && y < totr.ymax)
|
2012-05-22 14:13:33 +00:00
|
|
|
dir |= NODE_RESIZE_RIGHT;
|
2012-05-27 19:38:10 +00:00
|
|
|
if (x >= totr.xmin && x < totr.xmin + size && y >= totr.ymin && y < totr.ymax)
|
2012-05-22 14:13:33 +00:00
|
|
|
dir |= NODE_RESIZE_LEFT;
|
2012-05-27 19:38:10 +00:00
|
|
|
if (x >= totr.xmin && x < totr.xmax && y >= totr.ymax - size && y < totr.ymax)
|
2012-05-22 14:13:33 +00:00
|
|
|
dir |= NODE_RESIZE_TOP;
|
2012-05-27 19:38:10 +00:00
|
|
|
if (x >= totr.xmin && x < totr.xmax && y >= totr.ymin && y < totr.ymin + size)
|
2012-05-22 14:13:33 +00:00
|
|
|
dir |= NODE_RESIZE_BOTTOM;
|
|
|
|
|
|
|
|
return dir;
|
|
|
|
}
|
2011-09-05 21:01:50 +00:00
|
|
|
|
2012-05-22 14:13:33 +00:00
|
|
|
static void node_buts_frame_details(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemR(layout, ptr, "label_size", 0, IFACE_("Label Size"), ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "shrink", 0, IFACE_("Shrink"), ICON_NONE);
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
|
2012-06-01 12:38:03 +00:00
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
#define NODE_REROUTE_SIZE 8.0f
|
2012-06-01 12:38:03 +00:00
|
|
|
|
|
|
|
static void node_update_reroute(const bContext *UNUSED(C), bNodeTree *UNUSED(ntree), bNode *node)
|
|
|
|
{
|
|
|
|
bNodeSocket *nsock;
|
|
|
|
float locx, locy;
|
|
|
|
float size = NODE_REROUTE_SIZE;
|
|
|
|
|
|
|
|
/* get "global" coords */
|
|
|
|
nodeToView(node, 0.0f, 0.0f, &locx, &locy);
|
|
|
|
|
|
|
|
/* reroute node has exactly one input and one output, both in the same place */
|
2012-07-09 23:07:15 +00:00
|
|
|
nsock = node->outputs.first;
|
|
|
|
nsock->locx = locx;
|
|
|
|
nsock->locy = locy;
|
2012-06-01 12:38:03 +00:00
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
nsock = node->inputs.first;
|
|
|
|
nsock->locx = locx;
|
|
|
|
nsock->locy = locy;
|
|
|
|
|
|
|
|
node->width = size * 2;
|
|
|
|
node->totr.xmin = locx - size;
|
|
|
|
node->totr.xmax = locx + size;
|
|
|
|
node->totr.ymax = locy + size;
|
|
|
|
node->totr.ymin = locy - size;
|
2012-06-01 12:38:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_draw_reroute(const bContext *C, ARegion *ar, SpaceNode *UNUSED(snode), bNodeTree *ntree, bNode *node)
|
|
|
|
{
|
|
|
|
bNodeSocket *sock;
|
2012-07-09 23:07:15 +00:00
|
|
|
#if 0 /* UNUSED */
|
|
|
|
rctf *rct = &node->totr;
|
2012-06-01 12:38:03 +00:00
|
|
|
float size = NODE_REROUTE_SIZE;
|
2012-07-09 23:07:15 +00:00
|
|
|
#endif
|
|
|
|
float socket_size = NODE_SOCKSIZE;
|
2012-06-01 12:38:03 +00:00
|
|
|
|
|
|
|
/* skip if out of view */
|
|
|
|
if (node->totr.xmax < ar->v2d.cur.xmin || node->totr.xmin > ar->v2d.cur.xmax ||
|
2012-07-09 23:07:15 +00:00
|
|
|
node->totr.ymax < ar->v2d.cur.ymin || node->totr.ymin > ar->v2d.cur.ymax) {
|
2012-07-09 20:37:09 +00:00
|
|
|
|
2012-06-01 12:38:03 +00:00
|
|
|
uiEndBlock(C, node->block);
|
2012-07-09 23:07:15 +00:00
|
|
|
node->block = NULL;
|
2012-06-01 12:38:03 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* XXX only kept for debugging
|
|
|
|
* selection state is indicated by socket outline below!
|
|
|
|
*/
|
2012-06-17 09:58:26 +00:00
|
|
|
#if 0
|
2012-06-01 12:38:03 +00:00
|
|
|
/* body */
|
|
|
|
uiSetRoundBox(15);
|
|
|
|
UI_ThemeColor4(TH_NODE);
|
|
|
|
glEnable(GL_BLEND);
|
|
|
|
uiRoundBox(rct->xmin, rct->ymin, rct->xmax, rct->ymax, size);
|
|
|
|
glDisable(GL_BLEND);
|
|
|
|
|
|
|
|
/* outline active and selected emphasis */
|
2012-08-03 11:39:34 +00:00
|
|
|
if (node->flag & SELECT) {
|
2012-06-01 12:38:03 +00:00
|
|
|
glEnable(GL_BLEND);
|
2012-06-17 09:58:26 +00:00
|
|
|
glEnable(GL_LINE_SMOOTH);
|
2012-07-09 23:07:15 +00:00
|
|
|
/* using different shades of TH_TEXT_HI for the empasis, like triangle */
|
|
|
|
if (node->flag & NODE_ACTIVE)
|
|
|
|
UI_ThemeColorShadeAlpha(TH_TEXT_HI, 0, -40);
|
|
|
|
else
|
|
|
|
UI_ThemeColorShadeAlpha(TH_TEXT_HI, -20, -120);
|
|
|
|
uiDrawBox(GL_LINE_LOOP, rct->xmin, rct->ymin, rct->xmax, rct->ymax, size);
|
2012-06-01 12:38:03 +00:00
|
|
|
|
2012-06-17 09:58:26 +00:00
|
|
|
glDisable(GL_LINE_SMOOTH);
|
2012-06-01 12:38:03 +00:00
|
|
|
glDisable(GL_BLEND);
|
|
|
|
}
|
2012-06-17 09:58:26 +00:00
|
|
|
#endif
|
2012-06-01 12:38:03 +00:00
|
|
|
|
|
|
|
/* only draw input socket. as they all are placed on the same position.
|
|
|
|
* highlight also if node itself is selected, since we don't display the node body separately!
|
|
|
|
*/
|
2012-07-09 23:07:15 +00:00
|
|
|
for (sock = node->inputs.first; sock; sock = sock->next) {
|
2012-06-01 12:38:03 +00:00
|
|
|
node_socket_circle_draw(ntree, sock, socket_size, (sock->flag & SELECT) || (node->flag & SELECT));
|
|
|
|
}
|
|
|
|
|
|
|
|
uiEndBlock(C, node->block);
|
|
|
|
uiDrawBlock(C, node->block);
|
2012-07-09 23:07:15 +00:00
|
|
|
node->block = NULL;
|
2012-06-01 12:38:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Special tweak area for reroute node.
|
|
|
|
* Since this node is quite small, we use a larger tweak area for grabbing than for selection.
|
|
|
|
*/
|
|
|
|
static int node_tweak_area_reroute(bNode *node, int x, int y)
|
|
|
|
{
|
|
|
|
/* square of tweak radius */
|
2012-07-09 23:07:15 +00:00
|
|
|
static const float tweak_radius_sq = 576; /* 24 * 24 */
|
2012-06-01 12:38:03 +00:00
|
|
|
|
|
|
|
bNodeSocket *sock = node->inputs.first;
|
|
|
|
float dx = sock->locx - x;
|
|
|
|
float dy = sock->locy - y;
|
2012-07-09 23:07:15 +00:00
|
|
|
return (dx * dx + dy * dy <= tweak_radius_sq);
|
2012-06-01 12:38:03 +00:00
|
|
|
}
|
|
|
|
|
2011-09-05 21:01:50 +00:00
|
|
|
static void node_common_set_butfunc(bNodeType *ntype)
|
|
|
|
{
|
2012-04-28 06:31:57 +00:00
|
|
|
switch (ntype->type) {
|
2011-09-05 21:01:50 +00:00
|
|
|
case NODE_GROUP:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_uifunc_group;
|
|
|
|
ntype->drawfunc = node_draw_group;
|
|
|
|
ntype->drawupdatefunc = node_update_group;
|
2011-09-05 21:01:50 +00:00
|
|
|
break;
|
|
|
|
case NODE_FORLOOP:
|
|
|
|
// ntype->uifunc= node_common_buts_group;
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->drawfunc = node_draw_group;
|
|
|
|
ntype->drawupdatefunc = node_update_group;
|
2011-09-05 21:01:50 +00:00
|
|
|
break;
|
|
|
|
case NODE_WHILELOOP:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_common_buts_whileloop;
|
|
|
|
ntype->drawfunc = node_draw_group;
|
|
|
|
ntype->drawupdatefunc = node_update_group;
|
2011-09-05 21:01:50 +00:00
|
|
|
break;
|
|
|
|
case NODE_FRAME:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->drawfunc = node_draw_frame;
|
|
|
|
ntype->drawupdatefunc = node_update_frame;
|
|
|
|
ntype->uifuncbut = node_buts_frame_details;
|
|
|
|
ntype->resize_area_func = node_resize_area_frame;
|
2011-09-05 21:01:50 +00:00
|
|
|
break;
|
2012-06-01 12:38:03 +00:00
|
|
|
case NODE_REROUTE:
|
2012-07-09 23:07:15 +00:00
|
|
|
ntype->drawfunc = node_draw_reroute;
|
|
|
|
ntype->drawupdatefunc = node_update_reroute;
|
|
|
|
ntype->tweak_area_func = node_tweak_area_reroute;
|
2012-06-01 12:38:03 +00:00
|
|
|
break;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* ****************** BUTTON CALLBACKS FOR SHADER NODES ***************** */
|
2012-06-04 19:38:33 +00:00
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
static void node_buts_image_user(uiLayout *layout, bContext *C, PointerRNA *ptr,
|
|
|
|
PointerRNA *imaptr, PointerRNA *iuserptr)
|
2012-06-04 19:38:33 +00:00
|
|
|
{
|
|
|
|
uiLayout *col;
|
|
|
|
int source;
|
|
|
|
|
2012-06-17 09:58:26 +00:00
|
|
|
if (!imaptr->data)
|
2012-06-04 19:38:33 +00:00
|
|
|
return;
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2012-06-04 19:38:33 +00:00
|
|
|
|
|
|
|
uiItemR(col, imaptr, "source", 0, "", ICON_NONE);
|
|
|
|
|
|
|
|
source = RNA_enum_get(imaptr, "source");
|
|
|
|
|
|
|
|
if (source == IMA_SRC_SEQUENCE) {
|
|
|
|
/* don't use iuser->framenr directly because it may not be updated if auto-refresh is off */
|
|
|
|
Scene *scene = CTX_data_scene(C);
|
|
|
|
ImageUser *iuser = iuserptr->data;
|
|
|
|
char numstr[32];
|
2012-07-03 14:04:39 +00:00
|
|
|
const int framenr = BKE_image_user_frame_get(iuser, CFRA, 0, NULL);
|
2012-06-04 19:38:33 +00:00
|
|
|
BLI_snprintf(numstr, sizeof(numstr), IFACE_("Frame: %d"), framenr);
|
|
|
|
uiItemL(layout, numstr, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (ELEM(source, IMA_SRC_SEQUENCE, IMA_SRC_MOVIE)) {
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2012-06-28 10:59:40 +00:00
|
|
|
uiItemR(col, ptr, "frame_duration", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "frame_start", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "frame_offset", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "use_cyclic", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "use_auto_refresh", UI_ITEM_R_ICON_ONLY, NULL, ICON_NONE);
|
2012-06-04 19:38:33 +00:00
|
|
|
}
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2012-06-04 19:38:33 +00:00
|
|
|
|
|
|
|
if (RNA_enum_get(imaptr, "type") == IMA_TYPE_MULTILAYER)
|
2012-06-28 10:59:40 +00:00
|
|
|
uiItemR(col, ptr, "layer", 0, NULL, ICON_NONE);
|
2012-06-04 19:38:33 +00:00
|
|
|
}
|
|
|
|
|
2010-10-16 02:40:31 +00:00
|
|
|
static void node_shader_buts_material(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
2009-11-10 04:01:44 +00:00
|
|
|
uiLayout *col;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2010-08-04 12:18:07 +00:00
|
|
|
uiTemplateID(layout, C, ptr, "material", "MATERIAL_OT_new", NULL, NULL);
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (!node->id) return;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "use_diffuse", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "use_specular", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "invert_normal", 0, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_shader_buts_mapping(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-11-10 04:01:44 +00:00
|
|
|
uiLayout *row;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(layout, IFACE_("Location:"), ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, TRUE);
|
2012-04-04 16:11:39 +00:00
|
|
|
uiItemR(row, ptr, "translation", 0, "", ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(layout, IFACE_("Rotation:"), ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, TRUE);
|
2011-11-14 20:39:53 +00:00
|
|
|
uiItemR(row, ptr, "rotation", 0, "", ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(layout, IFACE_("Scale:"), ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, TRUE);
|
2011-11-14 20:39:53 +00:00
|
|
|
uiItemR(row, ptr, "scale", 0, "", ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, TRUE);
|
2011-11-14 20:39:53 +00:00
|
|
|
uiItemR(row, ptr, "use_min", 0, "Min", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "min", 0, "", ICON_NONE);
|
2009-11-10 04:01:44 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, TRUE);
|
2011-11-14 20:39:53 +00:00
|
|
|
uiItemR(row, ptr, "use_max", 0, "Max", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "max", 0, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_shader_buts_vect_math(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "operation", 0, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-16 02:40:31 +00:00
|
|
|
static void node_shader_buts_geometry(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
PointerRNA obptr = CTX_data_pointer_get(C, "active_object");
|
2009-11-10 04:01:44 +00:00
|
|
|
uiLayout *col;
|
2010-04-15 10:28:32 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2010-04-15 10:28:32 +00:00
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (obptr.data && RNA_enum_get(&obptr, "type") == OB_MESH) {
|
2012-05-27 19:38:10 +00:00
|
|
|
PointerRNA dataptr = RNA_pointer_get(&obptr, "data");
|
2010-04-15 10:28:32 +00:00
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemPointerR(col, ptr, "uv_layer", &dataptr, "uv_textures", "", ICON_NONE);
|
|
|
|
uiItemPointerR(col, ptr, "color_layer", &dataptr, "vertex_colors", "", ICON_NONE);
|
2010-04-15 10:28:32 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemR(col, ptr, "uv_layer", 0, IFACE_("UV"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "color_layer", 0, IFACE_("VCol"), ICON_NONE);
|
2010-04-15 10:28:32 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2011-11-08 11:38:16 +00:00
|
|
|
static void node_shader_buts_attribute(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemR(layout, ptr, "attribute_name", 0, IFACE_("Name"), ICON_NONE);
|
2011-11-08 11:38:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_shader_buts_tex_image(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-06-04 19:38:33 +00:00
|
|
|
PointerRNA imaptr = RNA_pointer_get(ptr, "image");
|
|
|
|
PointerRNA iuserptr = RNA_pointer_get(ptr, "image_user");
|
|
|
|
|
2011-11-08 11:38:16 +00:00
|
|
|
uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL);
|
|
|
|
uiItemR(layout, ptr, "color_space", 0, "", ICON_NONE);
|
2012-09-04 13:29:07 +00:00
|
|
|
uiItemR(layout, ptr, "projection", 0, "", ICON_NONE);
|
|
|
|
|
2012-09-08 06:40:03 +00:00
|
|
|
if (RNA_enum_get(ptr, "projection") == SHD_PROJ_BOX) {
|
2012-09-04 13:29:07 +00:00
|
|
|
uiItemR(layout, ptr, "projection_blend", 0, "Blend", ICON_NONE);
|
2012-09-08 06:40:03 +00:00
|
|
|
}
|
2011-11-08 11:38:16 +00:00
|
|
|
|
2012-07-02 16:27:09 +00:00
|
|
|
/* note: image user properties used directly here, unlike compositor image node,
|
|
|
|
* which redefines them in the node struct RNA to get proper updates.
|
|
|
|
*/
|
|
|
|
node_buts_image_user(layout, C, &iuserptr, &imaptr, &iuserptr);
|
2012-06-04 19:38:33 +00:00
|
|
|
}
|
2012-03-08 19:52:58 +00:00
|
|
|
|
|
|
|
static void node_shader_buts_tex_environment(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-06-04 19:38:33 +00:00
|
|
|
PointerRNA imaptr = RNA_pointer_get(ptr, "image");
|
|
|
|
PointerRNA iuserptr = RNA_pointer_get(ptr, "image_user");
|
|
|
|
|
2012-03-08 19:52:58 +00:00
|
|
|
uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL);
|
|
|
|
uiItemR(layout, ptr, "color_space", 0, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "projection", 0, "", ICON_NONE);
|
2012-06-04 19:38:33 +00:00
|
|
|
|
2012-06-28 10:59:40 +00:00
|
|
|
node_buts_image_user(layout, C, ptr, &imaptr, &iuserptr);
|
2012-03-08 19:52:58 +00:00
|
|
|
}
|
|
|
|
|
2011-11-08 11:38:16 +00:00
|
|
|
static void node_shader_buts_tex_sky(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiItemR(layout, ptr, "sun_direction", 0, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "turbidity", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void node_shader_buts_tex_gradient(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiItemR(layout, ptr, "gradient_type", 0, "", ICON_NONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void node_shader_buts_tex_magic(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiItemR(layout, ptr, "turbulence_depth", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
2012-09-04 13:29:07 +00:00
|
|
|
static void node_shader_buts_tex_brick(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *col;
|
|
|
|
|
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
|
|
|
uiItemR(col, ptr, "offset", 0, IFACE_("Offset"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "offset_frequency", 0, IFACE_("Frequency"), ICON_NONE);
|
|
|
|
|
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
|
|
|
uiItemR(col, ptr, "squash", 0, IFACE_("Squash"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "squash_frequency", 0, IFACE_("Frequency"), ICON_NONE);
|
|
|
|
}
|
|
|
|
|
2011-11-08 11:38:16 +00:00
|
|
|
static void node_shader_buts_tex_wave(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiItemR(layout, ptr, "wave_type", 0, "", ICON_NONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void node_shader_buts_tex_musgrave(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiItemR(layout, ptr, "musgrave_type", 0, "", ICON_NONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void node_shader_buts_tex_voronoi(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiItemR(layout, ptr, "coloring", 0, "", ICON_NONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void node_shader_buts_glossy(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiItemR(layout, ptr, "distribution", 0, "", ICON_NONE);
|
|
|
|
}
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* only once called */
|
|
|
|
static void node_shader_set_butfunc(bNodeType *ntype)
|
|
|
|
{
|
2012-04-28 06:31:57 +00:00
|
|
|
switch (ntype->type) {
|
2008-12-24 10:33:10 +00:00
|
|
|
/* case NODE_GROUP: note, typeinfo for group is generated... see "XXX ugly hack" */
|
|
|
|
|
|
|
|
case SH_NODE_MATERIAL:
|
|
|
|
case SH_NODE_MATERIAL_EXT:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_material;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEXTURE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_texture;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_NORMAL:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_normal;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_CURVE_VEC:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_curvevec;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_CURVE_RGB:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_curvecol;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_MAPPING:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_mapping;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_VALUE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_value;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_RGB:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_rgb;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_MIX_RGB:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_mix_rgb;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_VALTORGB:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_colorramp;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_MATH:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_math;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_VECT_MATH:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_vect_math;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_GEOMETRY:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_geometry;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2011-11-08 11:38:16 +00:00
|
|
|
case SH_NODE_ATTRIBUTE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_attribute;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEX_SKY:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_tex_sky;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEX_IMAGE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_tex_image;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEX_ENVIRONMENT:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_tex_environment;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEX_GRADIENT:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_tex_gradient;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEX_MAGIC:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_tex_magic;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
2012-09-04 13:29:07 +00:00
|
|
|
case SH_NODE_TEX_BRICK:
|
|
|
|
ntype->uifunc = node_shader_buts_tex_brick;
|
|
|
|
break;
|
2011-11-08 11:38:16 +00:00
|
|
|
case SH_NODE_TEX_WAVE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_tex_wave;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEX_MUSGRAVE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_tex_musgrave;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_TEX_VORONOI:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_tex_voronoi;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
|
|
|
case SH_NODE_BSDF_GLOSSY:
|
|
|
|
case SH_NODE_BSDF_GLASS:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_shader_buts_glossy;
|
2011-11-08 11:38:16 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* ****************** BUTTON CALLBACKS FOR COMPOSITE NODES ***************** */
|
|
|
|
|
2010-10-16 02:40:31 +00:00
|
|
|
static void node_composit_buts_image(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
2012-06-10 07:51:57 +00:00
|
|
|
PointerRNA imaptr, iuserptr;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2010-08-04 12:18:07 +00:00
|
|
|
uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL);
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (!node->id) return;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-06-10 07:51:57 +00:00
|
|
|
imaptr = RNA_pointer_get(ptr, "image");
|
|
|
|
RNA_pointer_create((ID *)ptr->id.data, &RNA_ImageUser, node->storage, &iuserptr);
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-06-28 10:59:40 +00:00
|
|
|
node_buts_image_user(layout, C, ptr, &imaptr, &iuserptr);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-16 02:40:31 +00:00
|
|
|
static void node_composit_buts_renderlayers(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
2010-01-06 00:09:07 +00:00
|
|
|
uiLayout *col, *row;
|
|
|
|
PointerRNA op_ptr;
|
|
|
|
PointerRNA scn_ptr;
|
|
|
|
PropertyRNA *prop;
|
|
|
|
const char *layer_name;
|
2012-05-27 19:38:10 +00:00
|
|
|
char scene_name[MAX_ID_NAME - 2];
|
2012-01-22 03:30:07 +00:00
|
|
|
wmOperatorType *ot = WM_operatortype_find("RENDER_OT_render", 1);
|
|
|
|
|
|
|
|
BLI_assert(ot != 0);
|
|
|
|
|
2010-08-04 12:18:07 +00:00
|
|
|
uiTemplateID(layout, C, ptr, "scene", NULL, NULL, NULL);
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (!node->id) return;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, ptr, "layer", 0, "", ICON_NONE);
|
2009-11-10 04:01:44 +00:00
|
|
|
|
2010-01-06 00:09:07 +00:00
|
|
|
prop = RNA_struct_find_property(ptr, "layer");
|
|
|
|
if (!(RNA_property_enum_identifier(C, ptr, prop, RNA_property_enum_get(ptr, prop), &layer_name)))
|
|
|
|
return;
|
|
|
|
|
|
|
|
scn_ptr = RNA_pointer_get(ptr, "scene");
|
|
|
|
RNA_string_get(&scn_ptr, "name", scene_name);
|
|
|
|
|
2012-01-22 03:30:07 +00:00
|
|
|
WM_operator_properties_create_ptr(&op_ptr, ot);
|
2010-01-06 00:09:07 +00:00
|
|
|
RNA_string_set(&op_ptr, "layer", layer_name);
|
|
|
|
RNA_string_set(&op_ptr, "scene", scene_name);
|
2012-01-22 03:30:07 +00:00
|
|
|
uiItemFullO_ptr(row, ot, "", ICON_RENDER_STILL, op_ptr.data, WM_OP_INVOKE_DEFAULT, 0);
|
2010-01-06 00:09:07 +00:00
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_blur(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2011-02-10 20:54:02 +00:00
|
|
|
uiLayout *col, *row;
|
2012-07-19 11:05:18 +00:00
|
|
|
int reference;
|
|
|
|
int filter;
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2012-07-19 11:05:18 +00:00
|
|
|
filter = RNA_enum_get(ptr, "filter_type");
|
2012-08-14 12:39:12 +00:00
|
|
|
reference = RNA_boolean_get(ptr, "use_variable_size");
|
2012-07-19 11:05:18 +00:00
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "filter_type", 0, "", ICON_NONE);
|
2012-07-19 11:05:18 +00:00
|
|
|
if (filter != R_FILTER_FAST_GAUSS) {
|
2012-08-14 12:39:12 +00:00
|
|
|
uiItemR(col, ptr, "use_variable_size", 0, NULL, ICON_NONE);
|
2012-07-19 11:05:18 +00:00
|
|
|
if (!reference) {
|
|
|
|
uiItemR(col, ptr, "use_bokeh", 0, NULL, ICON_NONE);
|
|
|
|
}
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "use_gamma_correction", 0, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2009-09-21 16:21:54 +00:00
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "use_relative", 0, NULL, ICON_NONE);
|
2011-02-10 20:54:02 +00:00
|
|
|
|
|
|
|
if (RNA_boolean_get(ptr, "use_relative")) {
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(col, IFACE_("Aspect Correction"), ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, TRUE);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemR(row, ptr, "aspect_correction", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2011-02-10 20:54:02 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemR(col, ptr, "factor_x", 0, IFACE_("X"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "factor_y", 0, IFACE_("Y"), ICON_NONE);
|
2011-02-10 20:54:02 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemR(col, ptr, "size_x", 0, IFACE_("X"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "size_y", 0, IFACE_("Y"), ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_dblur(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-27 11:00:35 +00:00
|
|
|
uiLayout *col;
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "iterations", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "use_wrap", 0, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Center:"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "center_x", 0, IFACE_("X"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "center_y", 0, IFACE_("Y"), ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
|
|
|
uiItemS(layout);
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "distance", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "angle", 0, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
|
|
|
uiItemS(layout);
|
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "spin", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "zoom", 0, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_bilateralblur(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-18 21:04:54 +00:00
|
|
|
{
|
|
|
|
uiLayout *col;
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "iterations", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "sigma_color", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "sigma_space", 0, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_defocus(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-18 21:04:54 +00:00
|
|
|
uiLayout *sub, *col;
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Bokeh Type:"), ICON_NONE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "bokeh", 0, "", ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "angle", 0, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "use_gamma_correction", 0, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2012-05-19 13:28:19 +00:00
|
|
|
uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_zbuffer") == TRUE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "f_stop", 0, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "blur_max", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "threshold", 0, NULL, ICON_NONE);
|
2009-11-10 04:01:44 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "use_preview", 0, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "use_zbuffer", 0, NULL, ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
sub = uiLayoutColumn(col, FALSE);
|
2012-05-19 13:28:19 +00:00
|
|
|
uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_zbuffer") == FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(sub, ptr, "z_scale", 0, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* qdn: glare node */
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_glare(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-18 21:04:54 +00:00
|
|
|
{
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "glare_type", 0, "", ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "quality", 0, "", ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "glare_type") != 1) {
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "iterations", 0, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "glare_type") != 0)
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "color_modulation", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "mix", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "threshold", 0, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "glare_type") == 2) {
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "streaks", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "angle_offset", 0, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "glare_type") == 0 || RNA_enum_get(ptr, "glare_type") == 2) {
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "fade", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "glare_type") == 0)
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "use_rotate_45", 0, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
}
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "glare_type") == 1) {
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "size", 0, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_tonemap(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-18 21:04:54 +00:00
|
|
|
{
|
|
|
|
uiLayout *col;
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "tonemap_type", 0, "", ICON_NONE);
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "tonemap_type") == 0) {
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "key", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "offset", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "gamma", 0, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2009-09-16 18:59:13 +00:00
|
|
|
else {
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "intensity", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "contrast", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "adaptation", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "correction", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_lensdist(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-17 17:31:50 +00:00
|
|
|
uiLayout *col;
|
2009-09-17 15:06:03 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "use_projector", 0, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(col, FALSE);
|
2012-05-19 13:28:19 +00:00
|
|
|
uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_projector") == FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "use_jitter", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "use_fit", 0, NULL, ICON_NONE);
|
2009-09-18 21:04:54 +00:00
|
|
|
}
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_vecblur(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
|
|
|
uiLayout *col;
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "samples", 0, NULL, ICON_NONE);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemR(col, ptr, "factor", 0, IFACE_("Blur"), ICON_NONE);
|
2009-09-17 16:47:04 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Speed:"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "speed_min", 0, IFACE_("Min"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "speed_max", 0, IFACE_("Max"), ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "use_curved", 0, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_filter(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "filter_type", 0, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_flip(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "axis", 0, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_crop(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-09-17 17:31:50 +00:00
|
|
|
uiLayout *col;
|
2011-04-21 13:11:51 +00:00
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "use_crop_size", 0, NULL, ICON_NONE);
|
2011-04-21 13:11:51 +00:00
|
|
|
uiItemR(layout, ptr, "relative", 0, NULL, ICON_NONE);
|
2010-08-25 02:18:37 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2012-03-24 06:38:07 +00:00
|
|
|
if (RNA_boolean_get(ptr, "relative")) {
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemR(col, ptr, "rel_min_x", 0, IFACE_("Left"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "rel_max_x", 0, IFACE_("Right"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "rel_min_y", 0, IFACE_("Up"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "rel_max_y", 0, IFACE_("Down"), ICON_NONE);
|
2012-03-24 06:38:07 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemR(col, ptr, "min_x", 0, IFACE_("Left"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "max_x", 0, IFACE_("Right"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "min_y", 0, IFACE_("Up"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "max_y", 0, IFACE_("Down"), ICON_NONE);
|
2011-04-21 13:11:51 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_splitviewer(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-09-18 21:04:54 +00:00
|
|
|
uiLayout *row, *col;
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, ptr, "axis", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "factor", 0, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2012-01-10 19:08:08 +00:00
|
|
|
static void node_composit_buts_double_edge_mask(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *col;
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2012-01-10 19:08:08 +00:00
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Inner Edge:"), ICON_NONE);
|
2012-01-10 19:08:08 +00:00
|
|
|
uiItemR(col, ptr, "inner_mode", 0, "", ICON_NONE);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Buffer Edge:"), ICON_NONE);
|
2012-01-10 19:08:08 +00:00
|
|
|
uiItemR(col, ptr, "edge_mode", 0, "", ICON_NONE);
|
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_map_value(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-19 19:57:30 +00:00
|
|
|
uiLayout *sub, *col;
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "offset", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "size", 0, NULL, ICON_NONE);
|
2009-09-19 19:57:30 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "use_min", 0, NULL, ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
sub = uiLayoutColumn(col, FALSE);
|
2009-09-19 19:57:30 +00:00
|
|
|
uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_min"));
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(sub, ptr, "min", 0, "", ICON_NONE);
|
2009-09-19 19:57:30 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "use_max", 0, NULL, ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
sub = uiLayoutColumn(col, FALSE);
|
2009-09-19 19:57:30 +00:00
|
|
|
uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_max"));
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(sub, ptr, "max", 0, "", ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_alphaover(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-19 19:57:30 +00:00
|
|
|
{
|
|
|
|
uiLayout *col;
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "use_premultiply", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "premul", 0, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-11-12 14:59:01 +00:00
|
|
|
static void node_composit_buts_zcombine(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *col;
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "use_alpha", 0, NULL, ICON_NONE);
|
2010-11-12 14:59:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_hue_sat(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-19 19:57:30 +00:00
|
|
|
uiLayout *col;
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "color_hue", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "color_saturation", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "color_value", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_dilateerode(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-05-21 10:20:30 +00:00
|
|
|
uiItemR(layout, ptr, "type", 0, NULL, ICON_NONE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "distance", 0, NULL, ICON_NONE);
|
2012-06-21 07:45:41 +00:00
|
|
|
switch (RNA_enum_get(ptr, "type")) {
|
|
|
|
case CMP_NODE_DILATEERODE_DISTANCE_THRESH:
|
|
|
|
uiItemR(layout, ptr, "edge", 0, NULL, ICON_NONE);
|
|
|
|
break;
|
|
|
|
case CMP_NODE_DILATEERODE_DISTANCE_FEATHER:
|
|
|
|
uiItemR(layout, ptr, "falloff", 0, NULL, ICON_NONE);
|
|
|
|
break;
|
2012-05-21 10:20:30 +00:00
|
|
|
}
|
2009-09-10 04:12:22 +00:00
|
|
|
}
|
|
|
|
|
2012-08-06 13:45:11 +00:00
|
|
|
static void node_composit_buts_inpaint(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiItemR(layout, ptr, "distance", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
2012-08-23 06:48:01 +00:00
|
|
|
static void node_composit_buts_despeckle(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *col;
|
|
|
|
|
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
|
|
|
uiItemR(col, ptr, "threshold", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "threshold_neighbour", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_diff_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-10 04:12:22 +00:00
|
|
|
{
|
2009-09-20 13:34:54 +00:00
|
|
|
uiLayout *col;
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "tolerance", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "falloff", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_distance_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2012-04-29 20:07:29 +00:00
|
|
|
uiLayout *col, *row;
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2012-04-29 20:07:29 +00:00
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(layout, IFACE_("Color Space:"), ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, FALSE);
|
2012-04-29 20:07:29 +00:00
|
|
|
uiItemR(row, ptr, "channel", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "tolerance", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "falloff", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_color_spill(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-20 13:34:54 +00:00
|
|
|
uiLayout *row, *col;
|
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(layout, IFACE_("Despill Channel:"), ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, ptr, "channel", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2010-03-12 18:47:35 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2011-04-21 15:53:30 +00:00
|
|
|
uiItemR(col, ptr, "limit_method", 0, NULL, ICON_NONE);
|
2010-03-12 18:47:35 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "limit_method") == 0) {
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Limiting Channel:"), ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-04-21 15:53:30 +00:00
|
|
|
uiItemR(row, ptr, "limit_channel", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
|
|
|
}
|
2010-03-12 18:47:35 +00:00
|
|
|
|
2011-04-21 15:53:30 +00:00
|
|
|
uiItemR(col, ptr, "ratio", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "use_unspill", 0, NULL, ICON_NONE);
|
2012-05-19 13:28:19 +00:00
|
|
|
if (RNA_boolean_get(ptr, "use_unspill") == TRUE) {
|
2011-04-21 15:53:30 +00:00
|
|
|
uiItemR(col, ptr, "unspill_red", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "unspill_green", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "unspill_blue", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
}
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_chroma_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-26 16:43:20 +00:00
|
|
|
uiLayout *col;
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "tolerance", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "threshold", 0, NULL, ICON_NONE);
|
2009-09-26 16:43:20 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2011-04-21 15:53:30 +00:00
|
|
|
/*uiItemR(col, ptr, "lift", UI_ITEM_R_SLIDER, NULL, ICON_NONE); Removed for now */
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "gain", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2011-04-21 15:53:30 +00:00
|
|
|
/*uiItemR(col, ptr, "shadow_adjust", UI_ITEM_R_SLIDER, NULL, ICON_NONE); Removed for now*/
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_color_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-16 18:59:13 +00:00
|
|
|
{
|
2009-09-21 16:21:54 +00:00
|
|
|
uiLayout *col;
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "color_hue", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "color_saturation", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "color_value", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_channel_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-10-27 13:46:02 +00:00
|
|
|
{
|
|
|
|
uiLayout *col, *row;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(layout, IFACE_("Color Space:"), ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, ptr, "color_space", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Key Channel:"), ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, ptr, "matte_channel", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2009-11-10 04:01:44 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2010-03-13 14:47:26 +00:00
|
|
|
|
2011-04-21 15:53:30 +00:00
|
|
|
uiItemR(col, ptr, "limit_method", 0, NULL, ICON_NONE);
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "limit_method") == 0) {
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemL(col, IFACE_("Limiting Channel:"), ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-04-21 15:53:30 +00:00
|
|
|
uiItemR(row, ptr, "limit_channel", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "limit_max", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "limit_min", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_luma_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-10 04:12:22 +00:00
|
|
|
{
|
2009-10-27 13:46:02 +00:00
|
|
|
uiLayout *col;
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "limit_max", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "limit_min", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
2009-09-10 04:12:22 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_map_uv(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "alpha", 0, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_id_mask(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "index", 0, NULL, ICON_NONE);
|
2012-06-21 12:27:57 +00:00
|
|
|
uiItemR(layout, ptr, "use_antialiasing", 0, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2012-05-02 07:18:51 +00:00
|
|
|
/* draw function for file output node sockets, displays only sub-path and format, no value button */
|
|
|
|
static void node_draw_input_file_output(const bContext *C, uiBlock *block,
|
2012-05-27 19:38:10 +00:00
|
|
|
bNodeTree *ntree, bNode *node, bNodeSocket *sock,
|
|
|
|
const char *UNUSED(name), int x, int y, int width)
|
2012-05-02 07:18:51 +00:00
|
|
|
{
|
|
|
|
uiLayout *layout, *row;
|
|
|
|
PointerRNA nodeptr, inputptr, imfptr;
|
|
|
|
int imtype;
|
|
|
|
int rx, ry;
|
|
|
|
RNA_pointer_create(&ntree->id, &RNA_Node, node, &nodeptr);
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
layout = uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, x, y + NODE_DY, width, 20, UI_GetStyle());
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, FALSE);
|
2012-05-02 07:18:51 +00:00
|
|
|
|
|
|
|
imfptr = RNA_pointer_get(&nodeptr, "format");
|
|
|
|
imtype = RNA_enum_get(&imfptr, "file_format");
|
2012-05-11 08:06:01 +00:00
|
|
|
if (imtype == R_IMF_IMTYPE_MULTILAYER) {
|
|
|
|
NodeImageMultiFileSocket *input = sock->storage;
|
|
|
|
RNA_pointer_create(&ntree->id, &RNA_NodeOutputFileSlotLayer, input, &inputptr);
|
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, input->layer, ICON_NONE);
|
2012-05-11 08:06:01 +00:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
NodeImageMultiFileSocket *input = sock->storage;
|
2012-05-02 07:18:51 +00:00
|
|
|
PropertyRNA *imtype_prop;
|
|
|
|
const char *imtype_name;
|
2012-05-11 08:06:01 +00:00
|
|
|
RNA_pointer_create(&ntree->id, &RNA_NodeOutputFileSlotFile, input, &inputptr);
|
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, input->path, ICON_NONE);
|
2012-05-02 07:18:51 +00:00
|
|
|
|
|
|
|
if (!RNA_boolean_get(&inputptr, "use_node_format"))
|
|
|
|
imfptr = RNA_pointer_get(&inputptr, "format");
|
|
|
|
|
|
|
|
imtype_prop = RNA_struct_find_property(&imfptr, "file_format");
|
2012-07-09 23:07:15 +00:00
|
|
|
RNA_property_enum_name((bContext *)C, &imfptr, imtype_prop,
|
|
|
|
RNA_property_enum_get(&imfptr, imtype_prop), &imtype_name);
|
2012-05-02 07:18:51 +00:00
|
|
|
uiBlockSetEmboss(block, UI_EMBOSSP);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, imtype_name, ICON_NONE);
|
2012-05-02 07:18:51 +00:00
|
|
|
uiBlockSetEmboss(block, UI_EMBOSSN);
|
|
|
|
}
|
|
|
|
|
|
|
|
uiBlockLayoutResolve(block, &rx, &ry);
|
|
|
|
}
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_file_output(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2012-03-01 07:56:15 +00:00
|
|
|
PointerRNA imfptr = RNA_pointer_get(ptr, "format");
|
|
|
|
int multilayer = (RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_MULTILAYER);
|
|
|
|
|
|
|
|
if (multilayer)
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(layout, IFACE_("Path:"), ICON_NONE);
|
2012-03-01 07:56:15 +00:00
|
|
|
else
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(layout, IFACE_("Base Path:"), ICON_NONE);
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
uiItemR(layout, ptr, "base_path", 0, "", ICON_NONE);
|
|
|
|
}
|
2012-03-01 07:56:15 +00:00
|
|
|
static void node_composit_buts_file_output_details(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
{
|
2012-03-01 07:56:15 +00:00
|
|
|
PointerRNA imfptr = RNA_pointer_get(ptr, "format");
|
2012-05-02 07:18:51 +00:00
|
|
|
PointerRNA active_input_ptr, op_ptr;
|
2012-05-02 11:10:54 +00:00
|
|
|
uiLayout *row;
|
2012-05-02 07:18:51 +00:00
|
|
|
int active_index;
|
2012-03-01 07:56:15 +00:00
|
|
|
int multilayer = (RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_MULTILAYER);
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
|
2012-03-01 07:56:15 +00:00
|
|
|
node_composit_buts_file_output(layout, C, ptr);
|
Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.
This introduces two configurable color spaces:
- Input color space for images and movie clips. This space is used to convert
images/movies from color space in which file is saved to Blender's linear
space (for float images, byte images are not internally converted, only input
space is stored for such images and used later).
This setting could be found in image/clip data block settings.
- Display color space which defines space in which particular display is working.
This settings could be found in scene's Color Management panel.
When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.
This conversions are:
- View, which defines tone curve applying before display transformation.
These are different ways to view the image on the same display device.
For example it could be used to emulate film view on sRGB display.
- Exposure affects on image exposure before tone map is applied.
- Gamma is post-display gamma correction, could be used to match particular
display gamma.
- RGB curves are user-defined curves which are applying before display
transformation, could be used for different purposes.
All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.
This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).
Some technical notes:
- Image buffer's float buffer is now always in linear space, even if it was
created from 16bit byte images.
- Space of byte buffer is stored in image buffer's rect_colorspace property.
- Profile of image buffer was removed since it's not longer meaningful.
- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
to support other spaces, but it's quite large project which isn't so
much important.
- Legacy Color Management option disabled is emulated by using None display.
It could have some regressions, but there's no clear way to avoid them.
- If OpenColorIO is disabled on build time, it should make blender behaving
in the same way as previous release with color management enabled.
More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management
--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
|
|
|
uiTemplateImageSettings(layout, &imfptr, TRUE);
|
2012-03-01 07:56:15 +00:00
|
|
|
|
|
|
|
uiItemS(layout);
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemO(layout, IFACE_("Add Input"), ICON_ZOOMIN, "NODE_OT_output_file_add_socket");
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
|
2012-05-02 07:18:51 +00:00
|
|
|
active_index = RNA_int_get(ptr, "active_input_index");
|
2012-05-11 08:06:01 +00:00
|
|
|
/* using different collection properties if multilayer format is enabled */
|
|
|
|
if (multilayer) {
|
|
|
|
uiTemplateList(layout, C, ptr, "layer_slots", ptr, "active_input_index", NULL, 0, 0, 0);
|
2012-07-09 23:07:15 +00:00
|
|
|
RNA_property_collection_lookup_int(ptr, RNA_struct_find_property(ptr, "layer_slots"),
|
|
|
|
active_index, &active_input_ptr);
|
2012-05-11 08:06:01 +00:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
uiTemplateList(layout, C, ptr, "file_slots", ptr, "active_input_index", NULL, 0, 0, 0);
|
2012-07-09 23:07:15 +00:00
|
|
|
RNA_property_collection_lookup_int(ptr, RNA_struct_find_property(ptr, "file_slots"),
|
|
|
|
active_index, &active_input_ptr);
|
2012-05-11 08:06:01 +00:00
|
|
|
}
|
|
|
|
/* XXX collection lookup does not return the ID part of the pointer, setting this manually here */
|
|
|
|
active_input_ptr.id.data = ptr->id.data;
|
2012-05-02 07:18:51 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, TRUE);
|
2012-07-09 23:07:15 +00:00
|
|
|
op_ptr = uiItemFullO(row, "NODE_OT_output_file_move_active_socket", "",
|
|
|
|
ICON_TRIA_UP, NULL, WM_OP_INVOKE_DEFAULT, UI_ITEM_O_RETURN_PROPS);
|
2012-05-02 07:18:51 +00:00
|
|
|
RNA_enum_set(&op_ptr, "direction", 1);
|
2012-07-09 23:07:15 +00:00
|
|
|
op_ptr = uiItemFullO(row, "NODE_OT_output_file_move_active_socket", "",
|
|
|
|
ICON_TRIA_DOWN, NULL, WM_OP_INVOKE_DEFAULT, UI_ITEM_O_RETURN_PROPS);
|
2012-05-02 07:18:51 +00:00
|
|
|
RNA_enum_set(&op_ptr, "direction", 2);
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
|
|
|
|
if (active_input_ptr.data) {
|
2012-05-11 08:06:01 +00:00
|
|
|
if (multilayer) {
|
|
|
|
uiLayout *row, *col;
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2012-05-11 08:06:01 +00:00
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(col, IFACE_("Layer:"), ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemR(row, &active_input_ptr, "name", 0, "", ICON_NONE);
|
2012-07-09 23:07:15 +00:00
|
|
|
uiItemFullO(row, "NODE_OT_output_file_remove_active_socket", "",
|
|
|
|
ICON_X, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_R_ICON_ONLY);
|
2012-05-11 08:06:01 +00:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
uiLayout *row, *col;
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2012-05-11 08:06:01 +00:00
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(col, IFACE_("File Path:"), ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemR(row, &active_input_ptr, "path", 0, "", ICON_NONE);
|
2012-07-09 23:07:15 +00:00
|
|
|
uiItemFullO(row, "NODE_OT_output_file_remove_active_socket", "",
|
|
|
|
ICON_X, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_R_ICON_ONLY);
|
2012-05-11 08:06:01 +00:00
|
|
|
|
|
|
|
/* format details for individual files */
|
2012-03-01 07:56:15 +00:00
|
|
|
imfptr = RNA_pointer_get(&active_input_ptr, "format");
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(col, IFACE_("Format:"), ICON_NONE);
|
|
|
|
uiItemR(col, &active_input_ptr, "use_node_format", 0, NULL, ICON_NONE);
|
2012-03-01 07:56:15 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2012-05-19 13:28:19 +00:00
|
|
|
uiLayoutSetActive(col, RNA_boolean_get(&active_input_ptr, "use_node_format") == FALSE);
|
Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.
This introduces two configurable color spaces:
- Input color space for images and movie clips. This space is used to convert
images/movies from color space in which file is saved to Blender's linear
space (for float images, byte images are not internally converted, only input
space is stored for such images and used later).
This setting could be found in image/clip data block settings.
- Display color space which defines space in which particular display is working.
This settings could be found in scene's Color Management panel.
When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.
This conversions are:
- View, which defines tone curve applying before display transformation.
These are different ways to view the image on the same display device.
For example it could be used to emulate film view on sRGB display.
- Exposure affects on image exposure before tone map is applied.
- Gamma is post-display gamma correction, could be used to match particular
display gamma.
- RGB curves are user-defined curves which are applying before display
transformation, could be used for different purposes.
All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.
This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).
Some technical notes:
- Image buffer's float buffer is now always in linear space, even if it was
created from 16bit byte images.
- Space of byte buffer is stored in image buffer's rect_colorspace property.
- Profile of image buffer was removed since it's not longer meaningful.
- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
to support other spaces, but it's quite large project which isn't so
much important.
- Legacy Color Management option disabled is emulated by using None display.
It could have some regressions, but there's no clear way to avoid them.
- If OpenColorIO is disabled on build time, it should make blender behaving
in the same way as previous release with color management enabled.
More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management
--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
|
|
|
uiTemplateImageSettings(col, &imfptr, TRUE);
|
2012-03-01 07:56:15 +00:00
|
|
|
}
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_scale(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "space", 0, "", ICON_NONE);
|
2012-06-14 16:55:55 +00:00
|
|
|
|
|
|
|
if (RNA_enum_get(ptr, "space") == CMP_SCALE_RENDERPERCENT) {
|
2012-06-15 07:50:27 +00:00
|
|
|
uiLayout *row;
|
2012-06-14 16:55:55 +00:00
|
|
|
uiItemR(layout, ptr, "frame_method", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2012-06-15 07:50:27 +00:00
|
|
|
row = uiLayoutRow(layout, TRUE);
|
|
|
|
uiItemR(row, ptr, "offset_x", 0, "X", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "offset_y", 0, "Y", ICON_NONE);
|
2012-06-14 16:55:55 +00:00
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_rotate(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2010-03-15 22:36:39 +00:00
|
|
|
{
|
2011-04-21 15:53:30 +00:00
|
|
|
uiItemR(layout, ptr, "filter_type", 0, "", ICON_NONE);
|
2010-03-15 22:36:39 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_invert(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-09-20 13:34:54 +00:00
|
|
|
uiLayout *col;
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, ptr, "invert_rgb", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "invert_alpha", 0, NULL, ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_premulkey(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "mapping", 0, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_view_levels(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2009-09-10 04:12:22 +00:00
|
|
|
{
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "channel", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2009-09-10 04:12:22 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_colorbalance(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2010-01-20 04:19:55 +00:00
|
|
|
{
|
|
|
|
uiLayout *split, *col, *row;
|
|
|
|
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "correction_method", 0, NULL, ICON_NONE);
|
2010-01-20 04:19:55 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "correction_method") == 0) {
|
2010-01-20 04:19:55 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
split = uiLayoutSplit(layout, 0.0f, FALSE);
|
|
|
|
col = uiLayoutColumn(split, FALSE);
|
2010-07-05 15:52:25 +00:00
|
|
|
uiTemplateColorWheel(col, ptr, "lift", 1, 1, 0, 1);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, ptr, "lift", 0, NULL, ICON_NONE);
|
2010-01-27 00:22:29 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(split, FALSE);
|
2010-07-05 15:52:25 +00:00
|
|
|
uiTemplateColorWheel(col, ptr, "gamma", 1, 1, 1, 1);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, ptr, "gamma", 0, NULL, ICON_NONE);
|
2010-01-27 00:22:29 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(split, FALSE);
|
2010-07-05 15:52:25 +00:00
|
|
|
uiTemplateColorWheel(col, ptr, "gain", 1, 1, 1, 1);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, ptr, "gain", 0, NULL, ICON_NONE);
|
2010-01-27 00:22:29 +00:00
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
}
|
|
|
|
else {
|
2010-01-27 00:22:29 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
split = uiLayoutSplit(layout, 0.0f, FALSE);
|
|
|
|
col = uiLayoutColumn(split, FALSE);
|
2010-07-05 15:52:25 +00:00
|
|
|
uiTemplateColorWheel(col, ptr, "offset", 1, 1, 0, 1);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, ptr, "offset", 0, NULL, ICON_NONE);
|
2010-01-27 00:22:29 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(split, FALSE);
|
2010-07-05 15:52:25 +00:00
|
|
|
uiTemplateColorWheel(col, ptr, "power", 1, 1, 0, 1);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, ptr, "power", 0, NULL, ICON_NONE);
|
2010-01-27 00:22:29 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(split, FALSE);
|
2010-07-05 15:52:25 +00:00
|
|
|
uiTemplateColorWheel(col, ptr, "slope", 1, 1, 0, 1);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, ptr, "slope", 0, NULL, ICON_NONE);
|
2010-01-27 00:22:29 +00:00
|
|
|
}
|
2010-01-20 04:19:55 +00:00
|
|
|
|
|
|
|
}
|
2011-07-04 18:48:36 +00:00
|
|
|
static void node_composit_buts_colorbalance_but(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2011-07-04 19:22:37 +00:00
|
|
|
uiItemR(layout, ptr, "correction_method", 0, NULL, ICON_NONE);
|
2011-07-04 18:48:36 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "correction_method") == 0) {
|
2011-07-04 18:48:36 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
uiTemplateColorWheel(layout, ptr, "lift", 1, 1, 0, 1);
|
2011-07-04 19:22:37 +00:00
|
|
|
uiItemR(layout, ptr, "lift", 0, NULL, ICON_NONE);
|
2011-07-04 18:48:36 +00:00
|
|
|
|
2011-07-04 19:22:37 +00:00
|
|
|
uiTemplateColorWheel(layout, ptr, "gamma", 1, 1, 1, 1);
|
|
|
|
uiItemR(layout, ptr, "gamma", 0, NULL, ICON_NONE);
|
2011-07-04 18:48:36 +00:00
|
|
|
|
2011-07-04 19:22:37 +00:00
|
|
|
uiTemplateColorWheel(layout, ptr, "gain", 1, 1, 1, 1);
|
|
|
|
uiItemR(layout, ptr, "gain", 0, NULL, ICON_NONE);
|
2012-03-24 06:38:07 +00:00
|
|
|
}
|
|
|
|
else {
|
2011-07-04 19:22:37 +00:00
|
|
|
uiTemplateColorWheel(layout, ptr, "offset", 1, 1, 0, 1);
|
|
|
|
uiItemR(layout, ptr, "offset", 0, NULL, ICON_NONE);
|
2011-07-04 18:48:36 +00:00
|
|
|
|
2011-07-04 19:22:37 +00:00
|
|
|
uiTemplateColorWheel(layout, ptr, "power", 1, 1, 0, 1);
|
|
|
|
uiItemR(layout, ptr, "power", 0, NULL, ICON_NONE);
|
2011-07-04 18:48:36 +00:00
|
|
|
|
2011-07-04 19:22:37 +00:00
|
|
|
uiTemplateColorWheel(layout, ptr, "slope", 1, 1, 0, 1);
|
|
|
|
uiItemR(layout, ptr, "slope", 0, NULL, ICON_NONE);
|
|
|
|
}
|
2011-07-04 18:48:36 +00:00
|
|
|
}
|
|
|
|
|
2010-01-20 04:19:55 +00:00
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_composit_buts_huecorrect(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2010-01-21 00:00:45 +00:00
|
|
|
{
|
2012-06-21 14:37:56 +00:00
|
|
|
bNode *node = ptr->data;
|
|
|
|
CurveMapping *cumap = node->storage;
|
|
|
|
|
|
|
|
if (_sample_col[0] != SAMPLE_FLT_ISNONE) {
|
|
|
|
cumap->flag |= CUMA_DRAW_SAMPLE;
|
|
|
|
copy_v3_v3(cumap->sample, _sample_col);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
cumap->flag &= ~CUMA_DRAW_SAMPLE;
|
|
|
|
}
|
|
|
|
|
2010-01-21 00:00:45 +00:00
|
|
|
uiTemplateCurveMapping(layout, ptr, "mapping", 'h', 0, 0);
|
|
|
|
}
|
|
|
|
|
2010-12-13 21:17:00 +00:00
|
|
|
static void node_composit_buts_ycc(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "mode", 0, "", ICON_NONE);
|
2010-12-13 21:17:00 +00:00
|
|
|
}
|
|
|
|
|
2011-11-07 12:56:05 +00:00
|
|
|
static void node_composit_buts_movieclip(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiTemplateID(layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void node_composit_buts_stabilize2d(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
2011-11-07 12:56:05 +00:00
|
|
|
|
|
|
|
uiTemplateID(layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL);
|
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (!node->id)
|
2011-11-07 12:56:05 +00:00
|
|
|
return;
|
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemR(layout, ptr, "filter_type", 0, "", ICON_NONE);
|
2011-11-07 12:56:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_composit_buts_transform(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemR(layout, ptr, "filter_type", 0, "", ICON_NONE);
|
2011-11-07 12:56:05 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void node_composit_buts_moviedistortion(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
2011-11-07 12:56:05 +00:00
|
|
|
|
|
|
|
uiTemplateID(layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL);
|
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (!node->id)
|
2011-11-07 12:56:05 +00:00
|
|
|
return;
|
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemR(layout, ptr, "distortion_type", 0, "", ICON_NONE);
|
2011-11-07 12:56:05 +00:00
|
|
|
}
|
|
|
|
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
static void node_composit_buts_colorcorrection(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *row;
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, FALSE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
uiItemR(row, ptr, "red", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "green", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "blue", 0, NULL, ICON_NONE);
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, FALSE);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, "", ICON_NONE);
|
|
|
|
uiItemL(row, IFACE_("Saturation"), ICON_NONE);
|
|
|
|
uiItemL(row, IFACE_("Contrast"), ICON_NONE);
|
|
|
|
uiItemL(row, IFACE_("Gamma"), ICON_NONE);
|
|
|
|
uiItemL(row, IFACE_("Gain"), ICON_NONE);
|
|
|
|
uiItemL(row, IFACE_("Lift"), ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, FALSE);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Master"), ICON_NONE);
|
2012-05-21 20:10:21 +00:00
|
|
|
uiItemR(row, ptr, "master_saturation", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "master_contrast", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "master_gamma", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "master_gain", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "master_lift", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, FALSE);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Highlights"), ICON_NONE);
|
2012-05-21 20:10:21 +00:00
|
|
|
uiItemR(row, ptr, "highlights_saturation", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_contrast", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_gamma", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_gain", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_lift", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, FALSE);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Midtones"), ICON_NONE);
|
2012-05-21 20:10:21 +00:00
|
|
|
uiItemR(row, ptr, "midtones_saturation", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_contrast", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_gamma", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_gain", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_lift", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, FALSE);
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Shadows"), ICON_NONE);
|
2012-05-21 20:10:21 +00:00
|
|
|
uiItemR(row, ptr, "shadows_saturation", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_contrast", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_gamma", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_gain", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_lift", UI_ITEM_R_SLIDER, "", ICON_NONE);
|
2012-05-21 18:47:55 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, FALSE);
|
2012-05-21 18:47:55 +00:00
|
|
|
uiItemR(row, ptr, "midtones_start", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_end", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
}
|
2012-05-21 20:10:21 +00:00
|
|
|
|
2012-05-27 00:36:50 +00:00
|
|
|
static void node_composit_buts_colorcorrection_but(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
uiLayout *row;
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, FALSE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
uiItemR(row, ptr, "red", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "green", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "blue", 0, NULL, ICON_NONE);
|
|
|
|
row = layout;
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Saturation"), ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
uiItemR(row, ptr, "master_saturation", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_saturation", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_saturation", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_saturation", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Contrast"), ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
uiItemR(row, ptr, "master_contrast", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_contrast", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_contrast", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_contrast", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Gamma"), ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
uiItemR(row, ptr, "master_gamma", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_gamma", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_gamma", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_gamma", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Gain"), ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
uiItemR(row, ptr, "master_gain", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_gain", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_gain", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_gain", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
uiItemL(row, IFACE_("Lift"), ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
uiItemR(row, ptr, "master_lift", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "highlights_lift", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_lift", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "shadows_lift", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, FALSE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
uiItemR(row, ptr, "midtones_start", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "midtones_end", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void node_composit_buts_switch(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiItemR(layout, ptr, "check", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void node_composit_buts_boxmask(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *row;
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, TRUE);
|
2012-05-21 19:58:23 +00:00
|
|
|
uiItemR(row, ptr, "x", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "y", 0, NULL, ICON_NONE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, TRUE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
uiItemR(row, ptr, "width", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "height", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
|
|
|
|
uiItemR(layout, ptr, "rotation", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "mask_type", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void node_composit_buts_bokehimage(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiItemR(layout, ptr, "flaps", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "angle", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "rounding", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "catadioptric", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "shift", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
2012-08-14 14:31:39 +00:00
|
|
|
static void node_composit_buts_bokehblur(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiItemR(layout, ptr, "use_variable_size", 0, NULL, ICON_NONE);
|
|
|
|
// uiItemR(layout, ptr, "f_stop", 0, NULL, ICON_NONE); // UNUSED
|
|
|
|
uiItemR(layout, ptr, "blur_max", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
2012-09-15 01:52:28 +00:00
|
|
|
static void node_composit_backdrop_viewer(SpaceNode *snode, ImBuf *backdrop, bNode *node, int x, int y)
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
{
|
|
|
|
// node_composit_backdrop_canvas(snode, backdrop, node, x, y);
|
2012-06-08 09:17:07 +00:00
|
|
|
if (node->custom1 == 0) {
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
const float backdropWidth = backdrop->x;
|
|
|
|
const float backdropHeight = backdrop->y;
|
2012-05-27 19:38:10 +00:00
|
|
|
const float cx = x + snode->zoom * backdropWidth * node->custom3;
|
|
|
|
const float cy = y + snode->zoom * backdropHeight * node->custom4;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
|
|
|
glColor3f(1.0, 1.0, 1.0);
|
|
|
|
|
|
|
|
glBegin(GL_LINES);
|
2012-05-27 19:38:10 +00:00
|
|
|
glVertex2f(cx - 25, cy - 25);
|
|
|
|
glVertex2f(cx + 25, cy + 25);
|
|
|
|
glVertex2f(cx + 25, cy - 25);
|
|
|
|
glVertex2f(cx - 25, cy + 25);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
glEnd();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-09-15 01:52:28 +00:00
|
|
|
static void node_composit_backdrop_boxmask(SpaceNode *snode, ImBuf *backdrop, bNode *node, int x, int y)
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
{
|
2012-05-22 21:16:59 +00:00
|
|
|
NodeBoxMask *boxmask = node->storage;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
const float backdropWidth = backdrop->x;
|
|
|
|
const float backdropHeight = backdrop->y;
|
2012-05-27 19:38:10 +00:00
|
|
|
const float aspect = backdropWidth / backdropHeight;
|
2012-05-22 21:16:59 +00:00
|
|
|
const float rad = DEG2RADF(-boxmask->rotation);
|
|
|
|
const float cosine = cosf(rad);
|
|
|
|
const float sine = sinf(rad);
|
|
|
|
const float halveBoxWidth = backdropWidth * (boxmask->width / 2.0f);
|
|
|
|
const float halveBoxHeight = backdropHeight * (boxmask->height / 2.0f) * aspect;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
|
|
|
float cx, cy, x1, x2, x3, x4;
|
|
|
|
float y1, y2, y3, y4;
|
|
|
|
|
|
|
|
|
|
|
|
/* keep this, saves us from a version patch */
|
2012-05-22 22:03:41 +00:00
|
|
|
if (snode->zoom == 0.0f) snode->zoom = 1.0f;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
|
|
|
glColor3f(1.0, 1.0, 1.0);
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
cx = x + snode->zoom * backdropWidth * boxmask->x;
|
|
|
|
cy = y + snode->zoom * backdropHeight * boxmask->y;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
x1 = cx - (cosine * halveBoxWidth + sine * halveBoxHeight) * snode->zoom;
|
|
|
|
x2 = cx - (cosine * -halveBoxWidth + sine * halveBoxHeight) * snode->zoom;
|
|
|
|
x3 = cx - (cosine * -halveBoxWidth + sine * -halveBoxHeight) * snode->zoom;
|
|
|
|
x4 = cx - (cosine * halveBoxWidth + sine * -halveBoxHeight) * snode->zoom;
|
|
|
|
y1 = cy - (-sine * halveBoxWidth + cosine * halveBoxHeight) * snode->zoom;
|
|
|
|
y2 = cy - (-sine * -halveBoxWidth + cosine * halveBoxHeight) * snode->zoom;
|
|
|
|
y3 = cy - (-sine * -halveBoxWidth + cosine * -halveBoxHeight) * snode->zoom;
|
|
|
|
y4 = cy - (-sine * halveBoxWidth + cosine * -halveBoxHeight) * snode->zoom;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
|
|
|
glBegin(GL_LINE_LOOP);
|
|
|
|
glVertex2f(x1, y1);
|
|
|
|
glVertex2f(x2, y2);
|
|
|
|
glVertex2f(x3, y3);
|
|
|
|
glVertex2f(x4, y4);
|
|
|
|
glEnd();
|
|
|
|
}
|
|
|
|
|
2012-09-15 01:52:28 +00:00
|
|
|
static void node_composit_backdrop_ellipsemask(SpaceNode *snode, ImBuf *backdrop, bNode *node, int x, int y)
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
NodeEllipseMask *ellipsemask = node->storage;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
const float backdropWidth = backdrop->x;
|
|
|
|
const float backdropHeight = backdrop->y;
|
2012-05-22 21:16:59 +00:00
|
|
|
const float aspect = backdropWidth / backdropHeight;
|
|
|
|
const float rad = DEG2RADF(-ellipsemask->rotation);
|
|
|
|
const float cosine = cosf(rad);
|
|
|
|
const float sine = sinf(rad);
|
|
|
|
const float halveBoxWidth = backdropWidth * (ellipsemask->width / 2.0f);
|
|
|
|
const float halveBoxHeight = backdropHeight * (ellipsemask->height / 2.0f) * aspect;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
|
|
|
float cx, cy, x1, x2, x3, x4;
|
|
|
|
float y1, y2, y3, y4;
|
|
|
|
|
|
|
|
|
|
|
|
/* keep this, saves us from a version patch */
|
2012-05-22 22:03:41 +00:00
|
|
|
if (snode->zoom == 0.0f) snode->zoom = 1.0f;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
|
|
|
glColor3f(1.0, 1.0, 1.0);
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
cx = x + snode->zoom * backdropWidth * ellipsemask->x;
|
|
|
|
cy = y + snode->zoom * backdropHeight * ellipsemask->y;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
x1 = cx - (cosine * halveBoxWidth + sine * halveBoxHeight) * snode->zoom;
|
|
|
|
x2 = cx - (cosine * -halveBoxWidth + sine * halveBoxHeight) * snode->zoom;
|
|
|
|
x3 = cx - (cosine * -halveBoxWidth + sine * -halveBoxHeight) * snode->zoom;
|
|
|
|
x4 = cx - (cosine * halveBoxWidth + sine * -halveBoxHeight) * snode->zoom;
|
|
|
|
y1 = cy - (-sine * halveBoxWidth + cosine * halveBoxHeight) * snode->zoom;
|
|
|
|
y2 = cy - (-sine * -halveBoxWidth + cosine * halveBoxHeight) * snode->zoom;
|
|
|
|
y3 = cy - (-sine * -halveBoxWidth + cosine * -halveBoxHeight) * snode->zoom;
|
|
|
|
y4 = cy - (-sine * halveBoxWidth + cosine * -halveBoxHeight) * snode->zoom;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
|
|
|
glBegin(GL_LINE_LOOP);
|
|
|
|
|
|
|
|
glVertex2f(x1, y1);
|
|
|
|
glVertex2f(x2, y2);
|
|
|
|
glVertex2f(x3, y3);
|
|
|
|
glVertex2f(x4, y4);
|
|
|
|
glEnd();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void node_composit_buts_ellipsemask(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *row;
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, TRUE);
|
2012-05-21 19:58:23 +00:00
|
|
|
uiItemR(row, ptr, "x", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "y", 0, NULL, ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(layout, TRUE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
uiItemR(row, ptr, "width", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
uiItemR(row, ptr, "height", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
|
|
|
|
|
|
|
|
uiItemR(layout, ptr, "rotation", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "mask_type", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void node_composit_buts_viewer_but(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
|
|
|
uiLayout *col;
|
|
|
|
|
|
|
|
uiItemR(layout, ptr, "tile_order", 0, NULL, ICON_NONE);
|
2012-05-27 19:38:10 +00:00
|
|
|
if (RNA_enum_get(ptr, "tile_order") == 0) {
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
uiItemR(col, ptr, "center_x", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "center_y", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-06-04 16:42:58 +00:00
|
|
|
static void node_composit_buts_mask(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-07-27 09:32:47 +00:00
|
|
|
bNode *node = ptr->data;
|
|
|
|
|
2012-06-04 16:42:58 +00:00
|
|
|
uiTemplateID(layout, C, ptr, "mask", NULL, NULL, NULL);
|
2012-06-21 12:27:57 +00:00
|
|
|
uiItemR(layout, ptr, "use_antialiasing", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "use_feather", 0, NULL, ICON_NONE);
|
2012-06-13 19:57:23 +00:00
|
|
|
|
2012-07-26 13:29:38 +00:00
|
|
|
uiItemR(layout, ptr, "size_source", 0, "", ICON_NONE);
|
|
|
|
|
2012-07-27 09:32:47 +00:00
|
|
|
if (node->custom1 & (CMP_NODEFLAG_MASK_FIXED | CMP_NODEFLAG_MASK_FIXED_SCENE)) {
|
|
|
|
uiItemR(layout, ptr, "size_x", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "size_y", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
|
|
|
uiItemR(layout, ptr, "use_motion_blur", 0, NULL, ICON_NONE);
|
|
|
|
if (node->custom1 & CMP_NODEFLAG_MASK_MOTION_BLUR) {
|
|
|
|
uiItemR(layout, ptr, "motion_blur_samples", 0, NULL, ICON_NONE);
|
2012-07-27 10:20:36 +00:00
|
|
|
uiItemR(layout, ptr, "motion_blur_shutter", 0, NULL, ICON_NONE);
|
2012-07-26 13:29:38 +00:00
|
|
|
}
|
2012-06-04 16:42:58 +00:00
|
|
|
}
|
|
|
|
|
2012-06-14 12:18:42 +00:00
|
|
|
static void node_composit_buts_keyingscreen(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-07-09 23:07:15 +00:00
|
|
|
bNode *node = ptr->data;
|
2012-06-14 12:18:42 +00:00
|
|
|
|
|
|
|
uiTemplateID(layout, C, ptr, "clip", NULL, NULL, NULL);
|
|
|
|
|
|
|
|
if (node->id) {
|
|
|
|
MovieClip *clip = (MovieClip *) node->id;
|
|
|
|
uiLayout *col;
|
|
|
|
PointerRNA tracking_ptr;
|
|
|
|
|
|
|
|
RNA_pointer_create(&clip->id, &RNA_MovieTracking, &clip->tracking, &tracking_ptr);
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2012-06-14 12:18:42 +00:00
|
|
|
uiItemPointerR(col, ptr, "tracking_object", &tracking_ptr, "objects", "", ICON_OBJECT_DATA);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-05-29 14:00:47 +00:00
|
|
|
static void node_composit_buts_keying(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
|
|
|
{
|
2012-05-29 15:02:21 +00:00
|
|
|
/* bNode *node= ptr->data; */ /* UNUSED */
|
2012-05-29 14:00:47 +00:00
|
|
|
|
|
|
|
uiItemR(layout, ptr, "blur_pre", 0, NULL, ICON_NONE);
|
2012-06-10 17:41:04 +00:00
|
|
|
uiItemR(layout, ptr, "screen_balance", 0, NULL, ICON_NONE);
|
2012-05-29 14:55:01 +00:00
|
|
|
uiItemR(layout, ptr, "despill_factor", 0, NULL, ICON_NONE);
|
2012-07-10 14:53:36 +00:00
|
|
|
uiItemR(layout, ptr, "despill_balance", 0, NULL, ICON_NONE);
|
2012-06-14 12:19:13 +00:00
|
|
|
uiItemR(layout, ptr, "edge_kernel_radius", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "edge_kernel_tolerance", 0, NULL, ICON_NONE);
|
2012-05-29 14:00:47 +00:00
|
|
|
uiItemR(layout, ptr, "clip_black", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "clip_white", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "dilate_distance", 0, NULL, ICON_NONE);
|
2012-06-25 10:50:24 +00:00
|
|
|
uiItemR(layout, ptr, "feather_falloff", 0, NULL, ICON_NONE);
|
|
|
|
uiItemR(layout, ptr, "feather_distance", 0, NULL, ICON_NONE);
|
2012-05-29 14:00:47 +00:00
|
|
|
uiItemR(layout, ptr, "blur_post", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
|
2012-06-19 17:29:58 +00:00
|
|
|
static void node_composit_buts_trackpos(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
|
|
|
{
|
2012-08-04 12:54:27 +00:00
|
|
|
bNode *node = ptr->data;
|
2012-06-19 17:29:58 +00:00
|
|
|
|
|
|
|
uiTemplateID(layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL);
|
|
|
|
|
|
|
|
if (node->id) {
|
|
|
|
MovieClip *clip = (MovieClip *) node->id;
|
|
|
|
MovieTracking *tracking = &clip->tracking;
|
|
|
|
MovieTrackingObject *object;
|
|
|
|
uiLayout *col;
|
|
|
|
PointerRNA tracking_ptr;
|
|
|
|
NodeTrackPosData *data = node->storage;
|
|
|
|
|
|
|
|
RNA_pointer_create(&clip->id, &RNA_MovieTracking, tracking, &tracking_ptr);
|
|
|
|
|
2012-09-04 18:47:08 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2012-06-19 17:29:58 +00:00
|
|
|
uiItemPointerR(col, ptr, "tracking_object", &tracking_ptr, "objects", "", ICON_OBJECT_DATA);
|
|
|
|
|
|
|
|
object = BKE_tracking_object_get_named(tracking, data->tracking_object);
|
|
|
|
if (object) {
|
|
|
|
PointerRNA object_ptr;
|
|
|
|
|
|
|
|
RNA_pointer_create(&clip->id, &RNA_MovieTrackingObject, object, &object_ptr);
|
|
|
|
|
|
|
|
uiItemPointerR(col, ptr, "track_name", &object_ptr, "tracks", "", ICON_ANIM_DATA);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uiItemR(layout, ptr, "track_name", 0, "", ICON_ANIM_DATA);
|
|
|
|
}
|
2012-07-10 11:01:25 +00:00
|
|
|
|
2012-07-27 11:07:12 +00:00
|
|
|
uiItemR(layout, ptr, "position", 0, NULL, ICON_NONE);
|
|
|
|
|
|
|
|
if (node->custom1 == 2) {
|
|
|
|
uiItemR(layout, ptr, "relative_frame", 0, NULL, ICON_NONE);
|
|
|
|
}
|
2012-06-19 17:29:58 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* only once called */
|
|
|
|
static void node_composit_set_butfunc(bNodeType *ntype)
|
|
|
|
{
|
2012-04-28 06:31:57 +00:00
|
|
|
switch (ntype->type) {
|
2008-12-24 10:33:10 +00:00
|
|
|
/* case NODE_GROUP: note, typeinfo for group is generated... see "XXX ugly hack" */
|
|
|
|
|
|
|
|
case CMP_NODE_IMAGE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_image;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_R_LAYERS:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_renderlayers;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_NORMAL:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_normal;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_CURVE_VEC:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_curvevec;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_CURVE_RGB:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_curvecol;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_VALUE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_value;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_RGB:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_rgb;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_FLIP:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_flip;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_SPLITVIEWER:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_splitviewer;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_MIX_RGB:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_mix_rgb;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_VALTORGB:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_colorramp;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_CROP:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_crop;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_BLUR:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_blur;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_DBLUR:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_dblur;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_BILATERALBLUR:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_bilateralblur;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_DEFOCUS:
|
2009-09-16 18:59:13 +00:00
|
|
|
ntype->uifunc = node_composit_buts_defocus;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_GLARE:
|
2009-09-16 18:59:13 +00:00
|
|
|
ntype->uifunc = node_composit_buts_glare;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_TONEMAP:
|
2009-09-16 18:59:13 +00:00
|
|
|
ntype->uifunc = node_composit_buts_tonemap;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_LENSDIST:
|
2009-09-16 18:59:13 +00:00
|
|
|
ntype->uifunc = node_composit_buts_lensdist;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_VECBLUR:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_vecblur;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_FILTER:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_filter;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_MAP_VALUE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_map_value;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_TIME:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_time;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_ALPHAOVER:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_alphaover;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_HUE_SAT:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_hue_sat;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_TEXTURE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_texture;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_DILATEERODE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_dilateerode;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2012-08-06 13:45:11 +00:00
|
|
|
case CMP_NODE_INPAINT:
|
|
|
|
ntype->uifunc = node_composit_buts_inpaint;
|
|
|
|
break;
|
2012-08-23 06:48:01 +00:00
|
|
|
case CMP_NODE_DESPECKLE:
|
|
|
|
ntype->uifunc = node_composit_buts_despeckle;
|
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_OUTPUT_FILE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_file_output;
|
|
|
|
ntype->uifuncbut = node_composit_buts_file_output_details;
|
2012-05-02 07:18:51 +00:00
|
|
|
ntype->drawinputfunc = node_draw_input_file_output;
|
Adds a new node type for saving multiple image files from a single node.
Unlike the existing file output node this node has an arbitrary number of
possible input slots. It has a base path string that can be set to a general
base folder. Every input socket then uses its name as an extension of the base
path for file organization. This can include further subfolders on top of the
base path. Example:
Base path: '/home/user/myproject'
Input 1: 'Compo'
Input 2: 'Diffuse/'
Input 3: 'details/Normals'
would create output files
in /home/user/myproject: Compo0001.png, Compo0002.png, ...
in /home/user/myproject/Diffuse: 0001.png, 0002.png, ... (no filename base
given)
in /home/user/myproject/details: Normals0001.png, Normals0002.png, ...
Most settings for the node can be found in the sidebar (NKEY). New input sockets
can be added with the "Add Input" button. There is a list of input sockets and
below that the details for each socket can be changed, including the sub-path
and filename. Sockets can be removed here as well. By default each socket uses
the render settings file output format, but each can use its own format if
necessary.
To my knowledge this is the first node making use of such dynamic sockets in
trunk. So this is also a design test, other nodes might use this in the future.
Adding operator buttons on top of a node is a bit unwieldy atm, because all node
operators generally work on selected and/or active node(s). The operator button
would therefore either have to make sure the node is activated before the
operator is called (block callback maybe?) OR it has to store the node name
(risky, weak reference). For now it is only used in the sidebar, where only the
active node's buttons are displayed.
Also adds a new struct_type value to bNodeSocket, in order to distinguish
different socket types with the same data type (file inputs are SOCK_RGBA color
sockets). Would be nicer to use data type only for actual data evaluation, but
used in too many places, this works ok for now.
2012-02-22 12:24:04 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_DIFF_MATTE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_diff_matte;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2009-09-10 04:12:22 +00:00
|
|
|
case CMP_NODE_DIST_MATTE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_distance_matte;
|
2009-09-10 04:12:22 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_COLOR_SPILL:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_color_spill;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2009-09-10 04:12:22 +00:00
|
|
|
case CMP_NODE_CHROMA_MATTE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_chroma_matte;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2009-09-10 04:12:22 +00:00
|
|
|
case CMP_NODE_COLOR_MATTE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_color_matte;
|
2009-09-10 04:12:22 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_SCALE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_scale;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2011-04-21 15:53:30 +00:00
|
|
|
case CMP_NODE_ROTATE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_rotate;
|
2011-04-21 15:53:30 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_CHANNEL_MATTE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_channel_matte;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_LUMA_MATTE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_luma_matte;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_MAP_UV:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_map_uv;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_ID_MASK:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_id_mask;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2012-01-10 19:08:08 +00:00
|
|
|
case CMP_NODE_DOUBLEEDGEMASK:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_double_edge_mask;
|
2012-01-10 19:08:08 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
case CMP_NODE_MATH:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_buts_math;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_INVERT:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_invert;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_PREMULKEY:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_premulkey;
|
2008-12-24 10:33:10 +00:00
|
|
|
break;
|
2010-01-20 04:19:55 +00:00
|
|
|
case CMP_NODE_VIEW_LEVELS:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_view_levels;
|
2011-04-21 15:53:30 +00:00
|
|
|
break;
|
2010-01-20 04:19:55 +00:00
|
|
|
case CMP_NODE_COLORBALANCE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_colorbalance;
|
|
|
|
ntype->uifuncbut = node_composit_buts_colorbalance_but;
|
2011-07-04 19:22:37 +00:00
|
|
|
break;
|
2010-01-21 00:00:45 +00:00
|
|
|
case CMP_NODE_HUECORRECT:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_huecorrect;
|
2011-04-21 15:53:30 +00:00
|
|
|
break;
|
2010-11-12 14:59:01 +00:00
|
|
|
case CMP_NODE_ZCOMBINE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_zcombine;
|
2011-04-21 15:53:30 +00:00
|
|
|
break;
|
2010-12-13 21:17:00 +00:00
|
|
|
case CMP_NODE_COMBYCCA:
|
|
|
|
case CMP_NODE_SEPYCCA:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_ycc;
|
2010-12-13 21:17:00 +00:00
|
|
|
break;
|
2011-11-07 12:56:05 +00:00
|
|
|
case CMP_NODE_MOVIECLIP:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_movieclip;
|
2011-11-07 12:56:05 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_STABILIZE2D:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_stabilize2d;
|
2011-11-07 12:56:05 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_TRANSFORM:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_transform;
|
2011-11-07 12:56:05 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_MOVIEDISTORTION:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_moviedistortion;
|
2011-11-07 12:56:05 +00:00
|
|
|
break;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
case CMP_NODE_COLORCORRECTION:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_colorcorrection;
|
|
|
|
ntype->uifuncbut = node_composit_buts_colorcorrection_but;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_SWITCH:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_switch;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
break;
|
|
|
|
case CMP_NODE_MASK_BOX:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_boxmask;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
ntype->uibackdropfunc = node_composit_backdrop_boxmask;
|
|
|
|
break;
|
|
|
|
case CMP_NODE_MASK_ELLIPSE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_ellipsemask;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
ntype->uibackdropfunc = node_composit_backdrop_ellipsemask;
|
|
|
|
break;
|
|
|
|
case CMP_NODE_BOKEHIMAGE:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = node_composit_buts_bokehimage;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
break;
|
2012-08-14 14:31:39 +00:00
|
|
|
case CMP_NODE_BOKEHBLUR:
|
|
|
|
ntype->uifunc = node_composit_buts_bokehblur;
|
|
|
|
break;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
case CMP_NODE_VIEWER:
|
|
|
|
ntype->uifunc = NULL;
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifuncbut = node_composit_buts_viewer_but;
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
ntype->uibackdropfunc = node_composit_backdrop_viewer;
|
|
|
|
break;
|
2012-06-04 16:42:58 +00:00
|
|
|
case CMP_NODE_MASK:
|
2012-07-09 23:07:15 +00:00
|
|
|
ntype->uifunc = node_composit_buts_mask;
|
2012-06-04 16:42:58 +00:00
|
|
|
break;
|
2012-06-14 12:18:42 +00:00
|
|
|
case CMP_NODE_KEYINGSCREEN:
|
|
|
|
ntype->uifunc = node_composit_buts_keyingscreen;
|
|
|
|
break;
|
2012-05-29 14:00:47 +00:00
|
|
|
case CMP_NODE_KEYING:
|
|
|
|
ntype->uifunc = node_composit_buts_keying;
|
|
|
|
break;
|
2012-06-19 17:29:58 +00:00
|
|
|
case CMP_NODE_TRACKPOS:
|
|
|
|
ntype->uifunc = node_composit_buts_trackpos;
|
|
|
|
break;
|
2011-11-07 12:56:05 +00:00
|
|
|
default:
|
2012-05-27 19:38:10 +00:00
|
|
|
ntype->uifunc = NULL;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* ****************** BUTTON CALLBACKS FOR TEXTURE NODES ***************** */
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_texture_buts_bricks(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-10-28 22:14:31 +00:00
|
|
|
uiLayout *col;
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemR(col, ptr, "offset", 0, IFACE_("Offset"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "offset_frequency", 0, IFACE_("Frequency"), ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, TRUE);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemR(col, ptr, "squash", 0, IFACE_("Squash"), ICON_NONE);
|
|
|
|
uiItemR(col, ptr, "squash_frequency", 0, IFACE_("Frequency"), ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_texture_buts_proc(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-12-05 21:14:31 +00:00
|
|
|
PointerRNA tex_ptr;
|
2012-05-27 19:38:10 +00:00
|
|
|
bNode *node = ptr->data;
|
|
|
|
ID *id = ptr->id.data;
|
2008-12-24 10:33:10 +00:00
|
|
|
Tex *tex = (Tex *)node->storage;
|
2009-12-05 21:14:31 +00:00
|
|
|
uiLayout *col, *row;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2009-12-05 21:14:31 +00:00
|
|
|
RNA_pointer_create(id, &RNA_Texture, tex, &tex_ptr);
|
|
|
|
|
2012-06-19 23:08:16 +00:00
|
|
|
col = uiLayoutColumn(layout, FALSE);
|
2009-12-05 21:14:31 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
switch (tex->type) {
|
2008-12-24 10:33:10 +00:00
|
|
|
case TEX_BLEND:
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, &tex_ptr, "progression", 0, "", ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, &tex_ptr, "use_flip_axis", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
break;
|
2009-12-05 21:14:31 +00:00
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
case TEX_MARBLE:
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, &tex_ptr, "marble_type", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-04-05 06:05:55 +00:00
|
|
|
uiItemR(row, &tex_ptr, "noise_basis", 0, "", ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-04-05 06:05:55 +00:00
|
|
|
uiItemR(row, &tex_ptr, "noise_basis_2", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TEX_MAGIC:
|
|
|
|
uiItemR(col, &tex_ptr, "noise_depth", 0, NULL, ICON_NONE);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TEX_STUCCI:
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-04-05 06:05:55 +00:00
|
|
|
uiItemR(row, &tex_ptr, "stucci_type", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-04-05 06:05:55 +00:00
|
|
|
uiItemR(row, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
|
|
|
uiItemR(col, &tex_ptr, "noise_basis", 0, "", ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
break;
|
2009-12-05 21:14:31 +00:00
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
case TEX_WOOD:
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, &tex_ptr, "noise_basis", 0, "", ICON_NONE);
|
|
|
|
uiItemR(col, &tex_ptr, "wood_type", 0, "", ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-04-05 06:05:55 +00:00
|
|
|
uiItemR(row, &tex_ptr, "noise_basis_2", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2012-07-09 23:07:15 +00:00
|
|
|
uiLayoutSetActive(row, !(ELEM(tex->stype, TEX_BAND, TEX_RING)));
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
|
|
|
case TEX_CLOUDS:
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, &tex_ptr, "noise_basis", 0, "", ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, &tex_ptr, "cloud_type", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2012-06-19 23:08:16 +00:00
|
|
|
row = uiLayoutRow(col, FALSE);
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(row, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND, NULL, ICON_NONE);
|
2012-06-02 19:58:12 +00:00
|
|
|
uiItemR(col, &tex_ptr, "noise_depth", UI_ITEM_R_EXPAND, IFACE_("Depth"), ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
|
|
|
case TEX_DISTNOISE:
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(col, &tex_ptr, "noise_basis", 0, "", ICON_NONE);
|
|
|
|
uiItemR(col, &tex_ptr, "noise_distortion", 0, "", ICON_NONE);
|
2009-09-16 18:59:13 +00:00
|
|
|
break;
|
2011-04-05 06:05:55 +00:00
|
|
|
|
|
|
|
case TEX_MUSGRAVE:
|
|
|
|
uiItemR(col, &tex_ptr, "musgrave_type", 0, "", ICON_NONE);
|
|
|
|
uiItemR(col, &tex_ptr, "noise_basis", 0, "", ICON_NONE);
|
|
|
|
break;
|
|
|
|
case TEX_VORONOI:
|
|
|
|
uiItemR(col, &tex_ptr, "distance_metric", 0, "", ICON_NONE);
|
2012-03-24 06:38:07 +00:00
|
|
|
if (tex->vn_distm == TEX_MINKOVSKY) {
|
2011-04-05 06:05:55 +00:00
|
|
|
uiItemR(col, &tex_ptr, "minkovsky_exponent", 0, NULL, ICON_NONE);
|
|
|
|
}
|
|
|
|
uiItemR(col, &tex_ptr, "color_mode", 0, "", ICON_NONE);
|
|
|
|
break;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2010-10-16 02:40:31 +00:00
|
|
|
static void node_texture_buts_image(uiLayout *layout, bContext *C, PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2010-08-04 12:18:07 +00:00
|
|
|
uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2010-10-14 01:22:14 +00:00
|
|
|
static void node_texture_buts_output(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2011-02-27 18:03:19 +00:00
|
|
|
uiItemR(layout, ptr, "filepath", 0, "", ICON_NONE);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* only once called */
|
|
|
|
static void node_texture_set_butfunc(bNodeType *ntype)
|
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
if (ntype->type >= TEX_NODE_PROC && ntype->type < TEX_NODE_PROC_MAX) {
|
2009-09-16 18:59:13 +00:00
|
|
|
ntype->uifunc = node_texture_buts_proc;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2012-04-28 06:31:57 +00:00
|
|
|
else {
|
|
|
|
switch (ntype->type) {
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_MATH:
|
|
|
|
ntype->uifunc = node_buts_math;
|
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_MIX_RGB:
|
|
|
|
ntype->uifunc = node_buts_mix_rgb;
|
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_VALTORGB:
|
|
|
|
ntype->uifunc = node_buts_colorramp;
|
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_CURVE_RGB:
|
|
|
|
ntype->uifunc = node_buts_curvecol;
|
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_CURVE_TIME:
|
|
|
|
ntype->uifunc = node_buts_time;
|
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_TEXTURE:
|
|
|
|
ntype->uifunc = node_buts_texture;
|
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_BRICKS:
|
|
|
|
ntype->uifunc = node_texture_buts_bricks;
|
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_IMAGE:
|
|
|
|
ntype->uifunc = node_texture_buts_image;
|
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
case TEX_NODE_OUTPUT:
|
|
|
|
ntype->uifunc = node_texture_buts_output;
|
|
|
|
break;
|
2012-04-28 06:31:57 +00:00
|
|
|
}
|
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* ******* init draw callbacks for all tree types, only called in usiblender.c, once ************* */
|
|
|
|
|
2012-08-01 13:28:19 +00:00
|
|
|
void ED_node_init_butfuncs(void)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2011-09-05 21:01:50 +00:00
|
|
|
bNodeTreeType *treetype;
|
2008-12-24 10:33:10 +00:00
|
|
|
bNodeType *ntype;
|
2011-09-05 21:01:50 +00:00
|
|
|
bNodeSocketType *stype;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
/* node type ui functions */
|
2012-05-27 19:38:10 +00:00
|
|
|
for (i = 0; i < NUM_NTREE_TYPES; ++i) {
|
2011-09-05 21:01:50 +00:00
|
|
|
treetype = ntreeGetType(i);
|
|
|
|
if (treetype) {
|
2012-05-27 19:38:10 +00:00
|
|
|
for (ntype = treetype->node_types.first; ntype; ntype = ntype->next) {
|
2011-09-05 21:01:50 +00:00
|
|
|
/* default ui functions */
|
|
|
|
ntype->drawfunc = node_draw_default;
|
|
|
|
ntype->drawupdatefunc = node_update_default;
|
2012-06-01 12:38:03 +00:00
|
|
|
ntype->select_area_func = node_select_area_default;
|
|
|
|
ntype->tweak_area_func = node_tweak_area_default;
|
2011-09-05 21:01:50 +00:00
|
|
|
ntype->uifunc = NULL;
|
|
|
|
ntype->uifuncbut = NULL;
|
2012-05-02 07:18:51 +00:00
|
|
|
ntype->drawinputfunc = node_draw_input_default;
|
|
|
|
ntype->drawoutputfunc = node_draw_output_default;
|
2011-09-05 21:01:50 +00:00
|
|
|
ntype->resize_area_func = node_resize_area_default;
|
|
|
|
|
|
|
|
node_common_set_butfunc(ntype);
|
|
|
|
|
|
|
|
switch (i) {
|
2012-05-27 19:38:10 +00:00
|
|
|
case NTREE_COMPOSIT:
|
|
|
|
node_composit_set_butfunc(ntype);
|
|
|
|
break;
|
|
|
|
case NTREE_SHADER:
|
|
|
|
node_shader_set_butfunc(ntype);
|
|
|
|
break;
|
|
|
|
case NTREE_TEXTURE:
|
|
|
|
node_texture_set_butfunc(ntype);
|
|
|
|
break;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2011-09-05 21:01:50 +00:00
|
|
|
|
|
|
|
/* socket type ui functions */
|
2012-05-27 19:38:10 +00:00
|
|
|
for (i = 0; i < NUM_SOCKET_TYPES; ++i) {
|
2011-09-05 21:01:50 +00:00
|
|
|
stype = ntreeGetSocketType(i);
|
|
|
|
if (stype) {
|
2012-04-28 06:31:57 +00:00
|
|
|
switch (stype->type) {
|
2012-05-27 19:38:10 +00:00
|
|
|
case SOCK_FLOAT:
|
|
|
|
case SOCK_INT:
|
|
|
|
case SOCK_BOOLEAN:
|
|
|
|
stype->buttonfunc = node_socket_button_default;
|
|
|
|
break;
|
|
|
|
case SOCK_VECTOR:
|
|
|
|
stype->buttonfunc = node_socket_button_components;
|
|
|
|
break;
|
|
|
|
case SOCK_RGBA:
|
|
|
|
stype->buttonfunc = node_socket_button_color;
|
|
|
|
break;
|
|
|
|
case SOCK_SHADER:
|
|
|
|
stype->buttonfunc = node_socket_button_label;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
stype->buttonfunc = NULL;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* ************** Generic drawing ************** */
|
|
|
|
|
Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.
This introduces two configurable color spaces:
- Input color space for images and movie clips. This space is used to convert
images/movies from color space in which file is saved to Blender's linear
space (for float images, byte images are not internally converted, only input
space is stored for such images and used later).
This setting could be found in image/clip data block settings.
- Display color space which defines space in which particular display is working.
This settings could be found in scene's Color Management panel.
When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.
This conversions are:
- View, which defines tone curve applying before display transformation.
These are different ways to view the image on the same display device.
For example it could be used to emulate film view on sRGB display.
- Exposure affects on image exposure before tone map is applied.
- Gamma is post-display gamma correction, could be used to match particular
display gamma.
- RGB curves are user-defined curves which are applying before display
transformation, could be used for different purposes.
All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.
This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).
Some technical notes:
- Image buffer's float buffer is now always in linear space, even if it was
created from 16bit byte images.
- Space of byte buffer is stored in image buffer's rect_colorspace property.
- Profile of image buffer was removed since it's not longer meaningful.
- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
to support other spaces, but it's quite large project which isn't so
much important.
- Legacy Color Management option disabled is emulated by using None display.
It could have some regressions, but there's no clear way to avoid them.
- If OpenColorIO is disabled on build time, it should make blender behaving
in the same way as previous release with color management enabled.
More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management
--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
|
|
|
void draw_nodespace_back_pix(const bContext *C, ARegion *ar, SpaceNode *snode)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if ((snode->flag & SNODE_BACKDRAW) && snode->treetype == NTREE_COMPOSIT) {
|
|
|
|
Image *ima = BKE_image_verify_viewer(IMA_TYPE_COMPOSITE, "Viewer Node");
|
2009-10-07 22:05:30 +00:00
|
|
|
void *lock;
|
2012-05-27 19:38:10 +00:00
|
|
|
ImBuf *ibuf = BKE_image_acquire_ibuf(ima, NULL, &lock);
|
2012-03-24 06:38:07 +00:00
|
|
|
if (ibuf) {
|
Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.
This introduces two configurable color spaces:
- Input color space for images and movie clips. This space is used to convert
images/movies from color space in which file is saved to Blender's linear
space (for float images, byte images are not internally converted, only input
space is stored for such images and used later).
This setting could be found in image/clip data block settings.
- Display color space which defines space in which particular display is working.
This settings could be found in scene's Color Management panel.
When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.
This conversions are:
- View, which defines tone curve applying before display transformation.
These are different ways to view the image on the same display device.
For example it could be used to emulate film view on sRGB display.
- Exposure affects on image exposure before tone map is applied.
- Gamma is post-display gamma correction, could be used to match particular
display gamma.
- RGB curves are user-defined curves which are applying before display
transformation, could be used for different purposes.
All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.
This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).
Some technical notes:
- Image buffer's float buffer is now always in linear space, even if it was
created from 16bit byte images.
- Space of byte buffer is stored in image buffer's rect_colorspace property.
- Profile of image buffer was removed since it's not longer meaningful.
- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
to support other spaces, but it's quite large project which isn't so
much important.
- Legacy Color Management option disabled is emulated by using None display.
It could have some regressions, but there's no clear way to avoid them.
- If OpenColorIO is disabled on build time, it should make blender behaving
in the same way as previous release with color management enabled.
More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management
--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
|
|
|
SpaceNode *snode = CTX_wm_space_node(C);
|
2008-12-26 20:39:29 +00:00
|
|
|
float x, y;
|
Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.
This introduces two configurable color spaces:
- Input color space for images and movie clips. This space is used to convert
images/movies from color space in which file is saved to Blender's linear
space (for float images, byte images are not internally converted, only input
space is stored for such images and used later).
This setting could be found in image/clip data block settings.
- Display color space which defines space in which particular display is working.
This settings could be found in scene's Color Management panel.
When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.
This conversions are:
- View, which defines tone curve applying before display transformation.
These are different ways to view the image on the same display device.
For example it could be used to emulate film view on sRGB display.
- Exposure affects on image exposure before tone map is applied.
- Gamma is post-display gamma correction, could be used to match particular
display gamma.
- RGB curves are user-defined curves which are applying before display
transformation, could be used for different purposes.
All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.
This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).
Some technical notes:
- Image buffer's float buffer is now always in linear space, even if it was
created from 16bit byte images.
- Space of byte buffer is stored in image buffer's rect_colorspace property.
- Profile of image buffer was removed since it's not longer meaningful.
- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
to support other spaces, but it's quite large project which isn't so
much important.
- Legacy Color Management option disabled is emulated by using None display.
It could have some regressions, but there's no clear way to avoid them.
- If OpenColorIO is disabled on build time, it should make blender behaving
in the same way as previous release with color management enabled.
More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management
--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
|
|
|
unsigned char *display_buffer;
|
|
|
|
void *cache_handle;
|
2009-05-20 11:07:34 +00:00
|
|
|
|
2010-02-01 15:32:55 +00:00
|
|
|
glMatrixMode(GL_PROJECTION);
|
|
|
|
glPushMatrix();
|
|
|
|
glMatrixMode(GL_MODELVIEW);
|
|
|
|
glPushMatrix();
|
|
|
|
|
2010-04-08 16:36:50 +00:00
|
|
|
/* keep this, saves us from a version patch */
|
2012-05-27 19:38:10 +00:00
|
|
|
if (snode->zoom == 0.0f) snode->zoom = 1.0f;
|
2010-04-08 16:36:50 +00:00
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* somehow the offset has to be calculated inverse */
|
|
|
|
|
2009-02-17 13:37:06 +00:00
|
|
|
glaDefine2DArea(&ar->winrct);
|
2008-12-24 10:33:10 +00:00
|
|
|
/* ortho at pixel level curarea */
|
2012-08-05 17:27:52 +00:00
|
|
|
wmOrtho2(-GLA_PIXEL_OFS, ar->winx - GLA_PIXEL_OFS, -GLA_PIXEL_OFS, ar->winy - GLA_PIXEL_OFS);
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
x = (ar->winx - snode->zoom * ibuf->x) / 2 + snode->xof;
|
|
|
|
y = (ar->winy - snode->zoom * ibuf->y) / 2 + snode->yof;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2009-10-07 22:05:30 +00:00
|
|
|
|
Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.
This introduces two configurable color spaces:
- Input color space for images and movie clips. This space is used to convert
images/movies from color space in which file is saved to Blender's linear
space (for float images, byte images are not internally converted, only input
space is stored for such images and used later).
This setting could be found in image/clip data block settings.
- Display color space which defines space in which particular display is working.
This settings could be found in scene's Color Management panel.
When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.
This conversions are:
- View, which defines tone curve applying before display transformation.
These are different ways to view the image on the same display device.
For example it could be used to emulate film view on sRGB display.
- Exposure affects on image exposure before tone map is applied.
- Gamma is post-display gamma correction, could be used to match particular
display gamma.
- RGB curves are user-defined curves which are applying before display
transformation, could be used for different purposes.
All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.
This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).
Some technical notes:
- Image buffer's float buffer is now always in linear space, even if it was
created from 16bit byte images.
- Space of byte buffer is stored in image buffer's rect_colorspace property.
- Profile of image buffer was removed since it's not longer meaningful.
- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
to support other spaces, but it's quite large project which isn't so
much important.
- Legacy Color Management option disabled is emulated by using None display.
It could have some regressions, but there's no clear way to avoid them.
- If OpenColorIO is disabled on build time, it should make blender behaving
in the same way as previous release with color management enabled.
More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management
--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
|
|
|
display_buffer = IMB_display_buffer_acquire_ctx(C, ibuf, &cache_handle);
|
|
|
|
|
|
|
|
if (display_buffer) {
|
2012-07-06 09:22:59 +00:00
|
|
|
if (snode->flag & (SNODE_SHOW_R | SNODE_SHOW_G | SNODE_SHOW_B)) {
|
|
|
|
int ofs;
|
|
|
|
|
2012-07-06 11:24:43 +00:00
|
|
|
#ifdef __BIG_ENDIAN__
|
|
|
|
if (snode->flag & SNODE_SHOW_R) ofs = 2;
|
|
|
|
else if (snode->flag & SNODE_SHOW_G) ofs = 1;
|
|
|
|
else ofs = 0;
|
|
|
|
#else
|
2012-07-06 09:22:59 +00:00
|
|
|
if (snode->flag & SNODE_SHOW_R) ofs = 1;
|
|
|
|
else if (snode->flag & SNODE_SHOW_G) ofs = 2;
|
|
|
|
else ofs = 3;
|
2012-07-06 11:24:43 +00:00
|
|
|
#endif
|
2012-07-06 09:22:59 +00:00
|
|
|
|
|
|
|
glPixelZoom(snode->zoom, snode->zoom);
|
|
|
|
/* swap bytes, so alpha is most significant one, then just draw it as luminance int */
|
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
glaDrawPixelsSafe(x, y, ibuf->x, ibuf->y, ibuf->x, GL_LUMINANCE, GL_UNSIGNED_INT,
|
|
|
|
((unsigned char *)ibuf->rect) + ofs);
|
2012-07-06 09:22:59 +00:00
|
|
|
|
|
|
|
glPixelZoom(1.0f, 1.0f);
|
|
|
|
}
|
|
|
|
else if (snode->flag & SNODE_SHOW_ALPHA) {
|
2011-01-31 11:17:50 +00:00
|
|
|
glPixelZoom(snode->zoom, snode->zoom);
|
|
|
|
/* swap bytes, so alpha is most significant one, then just draw it as luminance int */
|
2012-07-06 11:24:43 +00:00
|
|
|
#ifdef __BIG_ENDIAN__
|
|
|
|
glPixelStorei(GL_UNPACK_SWAP_BYTES, 1);
|
|
|
|
#endif
|
Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.
This introduces two configurable color spaces:
- Input color space for images and movie clips. This space is used to convert
images/movies from color space in which file is saved to Blender's linear
space (for float images, byte images are not internally converted, only input
space is stored for such images and used later).
This setting could be found in image/clip data block settings.
- Display color space which defines space in which particular display is working.
This settings could be found in scene's Color Management panel.
When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.
This conversions are:
- View, which defines tone curve applying before display transformation.
These are different ways to view the image on the same display device.
For example it could be used to emulate film view on sRGB display.
- Exposure affects on image exposure before tone map is applied.
- Gamma is post-display gamma correction, could be used to match particular
display gamma.
- RGB curves are user-defined curves which are applying before display
transformation, could be used for different purposes.
All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.
This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).
Some technical notes:
- Image buffer's float buffer is now always in linear space, even if it was
created from 16bit byte images.
- Space of byte buffer is stored in image buffer's rect_colorspace property.
- Profile of image buffer was removed since it's not longer meaningful.
- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
to support other spaces, but it's quite large project which isn't so
much important.
- Legacy Color Management option disabled is emulated by using None display.
It could have some regressions, but there's no clear way to avoid them.
- If OpenColorIO is disabled on build time, it should make blender behaving
in the same way as previous release with color management enabled.
More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management
--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
|
|
|
glaDrawPixelsSafe(x, y, ibuf->x, ibuf->y, ibuf->x, GL_LUMINANCE, GL_UNSIGNED_INT, display_buffer);
|
2012-07-06 11:24:43 +00:00
|
|
|
|
|
|
|
#ifdef __BIG_ENDIAN__
|
2011-01-31 11:17:50 +00:00
|
|
|
glPixelStorei(GL_UNPACK_SWAP_BYTES, 0);
|
2012-07-06 11:24:43 +00:00
|
|
|
#endif
|
2011-01-31 11:17:50 +00:00
|
|
|
glPixelZoom(1.0f, 1.0f);
|
2012-03-24 06:38:07 +00:00
|
|
|
}
|
|
|
|
else if (snode->flag & SNODE_USE_ALPHA) {
|
2011-01-31 11:17:50 +00:00
|
|
|
glEnable(GL_BLEND);
|
|
|
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
|
|
glPixelZoom(snode->zoom, snode->zoom);
|
|
|
|
|
Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.
This introduces two configurable color spaces:
- Input color space for images and movie clips. This space is used to convert
images/movies from color space in which file is saved to Blender's linear
space (for float images, byte images are not internally converted, only input
space is stored for such images and used later).
This setting could be found in image/clip data block settings.
- Display color space which defines space in which particular display is working.
This settings could be found in scene's Color Management panel.
When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.
This conversions are:
- View, which defines tone curve applying before display transformation.
These are different ways to view the image on the same display device.
For example it could be used to emulate film view on sRGB display.
- Exposure affects on image exposure before tone map is applied.
- Gamma is post-display gamma correction, could be used to match particular
display gamma.
- RGB curves are user-defined curves which are applying before display
transformation, could be used for different purposes.
All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.
This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).
Some technical notes:
- Image buffer's float buffer is now always in linear space, even if it was
created from 16bit byte images.
- Space of byte buffer is stored in image buffer's rect_colorspace property.
- Profile of image buffer was removed since it's not longer meaningful.
- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
to support other spaces, but it's quite large project which isn't so
much important.
- Legacy Color Management option disabled is emulated by using None display.
It could have some regressions, but there's no clear way to avoid them.
- If OpenColorIO is disabled on build time, it should make blender behaving
in the same way as previous release with color management enabled.
More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management
--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
|
|
|
glaDrawPixelsSafe(x, y, ibuf->x, ibuf->y, ibuf->x, GL_RGBA, GL_UNSIGNED_BYTE, display_buffer);
|
2011-01-31 11:17:50 +00:00
|
|
|
|
|
|
|
glPixelZoom(1.0f, 1.0f);
|
|
|
|
glDisable(GL_BLEND);
|
2012-03-24 06:38:07 +00:00
|
|
|
}
|
|
|
|
else {
|
2011-01-31 11:17:50 +00:00
|
|
|
glPixelZoom(snode->zoom, snode->zoom);
|
|
|
|
|
Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.
This introduces two configurable color spaces:
- Input color space for images and movie clips. This space is used to convert
images/movies from color space in which file is saved to Blender's linear
space (for float images, byte images are not internally converted, only input
space is stored for such images and used later).
This setting could be found in image/clip data block settings.
- Display color space which defines space in which particular display is working.
This settings could be found in scene's Color Management panel.
When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.
This conversions are:
- View, which defines tone curve applying before display transformation.
These are different ways to view the image on the same display device.
For example it could be used to emulate film view on sRGB display.
- Exposure affects on image exposure before tone map is applied.
- Gamma is post-display gamma correction, could be used to match particular
display gamma.
- RGB curves are user-defined curves which are applying before display
transformation, could be used for different purposes.
All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.
This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).
Some technical notes:
- Image buffer's float buffer is now always in linear space, even if it was
created from 16bit byte images.
- Space of byte buffer is stored in image buffer's rect_colorspace property.
- Profile of image buffer was removed since it's not longer meaningful.
- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
to support other spaces, but it's quite large project which isn't so
much important.
- Legacy Color Management option disabled is emulated by using None display.
It could have some regressions, but there's no clear way to avoid them.
- If OpenColorIO is disabled on build time, it should make blender behaving
in the same way as previous release with color management enabled.
More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management
--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
|
|
|
glaDrawPixelsSafe(x, y, ibuf->x, ibuf->y, ibuf->x, GL_RGBA, GL_UNSIGNED_BYTE, display_buffer);
|
2011-01-31 11:17:50 +00:00
|
|
|
|
|
|
|
glPixelZoom(1.0f, 1.0f);
|
|
|
|
}
|
2010-04-08 16:36:50 +00:00
|
|
|
}
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
|
Color Management, Stage 2: Switch color pipeline to use OpenColorIO
Replace old color pipeline which was supporting linear/sRGB color spaces
only with OpenColorIO-based pipeline.
This introduces two configurable color spaces:
- Input color space for images and movie clips. This space is used to convert
images/movies from color space in which file is saved to Blender's linear
space (for float images, byte images are not internally converted, only input
space is stored for such images and used later).
This setting could be found in image/clip data block settings.
- Display color space which defines space in which particular display is working.
This settings could be found in scene's Color Management panel.
When render result is being displayed on the screen, apart from converting image
to display space, some additional conversions could happen.
This conversions are:
- View, which defines tone curve applying before display transformation.
These are different ways to view the image on the same display device.
For example it could be used to emulate film view on sRGB display.
- Exposure affects on image exposure before tone map is applied.
- Gamma is post-display gamma correction, could be used to match particular
display gamma.
- RGB curves are user-defined curves which are applying before display
transformation, could be used for different purposes.
All this settings by default are only applying on render result and does not
affect on other images. If some particular image needs to be affected by this
transformation, "View as Render" setting of image data block should be set to
truth. Movie clips are always affected by all display transformations.
This commit also introduces configurable color space in which sequencer is
working. This setting could be found in scene's Color Management panel and
it should be used if such stuff as grading needs to be done in color space
different from sRGB (i.e. when Film view on sRGB display is use, using VD16
space as sequencer's internal space would make grading working in space
which is close to the space using for display).
Some technical notes:
- Image buffer's float buffer is now always in linear space, even if it was
created from 16bit byte images.
- Space of byte buffer is stored in image buffer's rect_colorspace property.
- Profile of image buffer was removed since it's not longer meaningful.
- OpenGL and GLSL is supposed to always work in sRGB space. It is possible
to support other spaces, but it's quite large project which isn't so
much important.
- Legacy Color Management option disabled is emulated by using None display.
It could have some regressions, but there's no clear way to avoid them.
- If OpenColorIO is disabled on build time, it should make blender behaving
in the same way as previous release with color management enabled.
More details could be found at this page (more details would be added soon):
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Color_Management
--
Thanks to Xavier Thomas, Lukas Toene for initial work on OpenColorIO
integration and to Brecht van Lommel for some further development and code/
usecase review!
2012-09-15 10:05:07 +00:00
|
|
|
IMB_display_buffer_release(cache_handle);
|
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
/** @note draw selected info on backdrop */
|
____
`````|````` | | | ..''''
| | | |______ .''
| | | | ..'
| | |_______ |___________ ....''
merge to TRUNK!
* The old compositor is still available (Debug Menu: 200)
This commit was brought to you by:
Developers:
* Monique Dewanchand
* Jeroen Bakker
* Dalai Felinto
* Lukas Tönne
Review:
* Brecht van Lommel
Testers:
* Nate Wiebe
* Wolfgang Faehnle
* Carlo Andreacchio
* Daniel Salazar
* Artur Mag
* Christian Krupa
* Francesco Siddi
* Dan McGrath
* Bassam Kurdali
But mostly by the community:
Gold:
Joshua Faulkner
Michael Tiemann
Francesco Paglia
Blender Guru
Blender Developers Fund
Silver:
Pablo Vazquez
Joel Heethaar
Amrein Olivier
Ilias Karasavvidis
Thomas Kumlehn
Sebastian Koenig
Hannu Hoffrén
Benjamin Dansie
Fred M'ule
Michel Vilain
Bradley Cathey
Gianmichele Mariani
Gottfried Hofmann
Bjørnar Frøyse
Valentijn Bruning
Paul Holmes
Clemens Rudolph
Juris Graphix
David Strebel
Ronan Zeegers
François Tarlier
Felipe Andres Esquivel Reed
Olaf Beckman
Jesus Alberto Olmos Linares
Kajimba
Maria Figueiredo
Alexandr Galperin
Francesco Siddi
Julio Iglesias Lopez
Kjartan Tysdal
Thomas Torfs
Film Works
Teruyuki Nakamura
Roger Luethi
Benoit Bolsee
Stefan Abrahamsen
Andreas Mattijat
Xavier Bouchoux
Blender 3D Graphics and Animation
Henk Vostermans
Daniel Blanco Delgado
BlenderDay/2011
Bradley Cathey
Matthieu Dupont de Dinechin
Gianmichele Mariani
Jérôme Scaillet
Bronze (Ivo Grigull, Dylan Urquidi, Philippe Derungs, Phil Beauchamp, Bruce Parrott, Mathieu Quiblier, Daniel Martinez, Leandro Inocencio, Lluc Romaní Brasó,
Jonathan Williamson, Michael Ehlen, Karlis Stigis, Dreamsteep, Martin Lindelöf, Filippo Saracino, Douwe van der Veen, Olli Äkräs, Bruno D'Arcangeli,
Francisco Sedrez Warmling, Watchmike.ca, peter lener, Matteo Novellino, Martin Kirsch, Austars Schnore, KC Elliott, Massimiliano Puliero, Karl Stein,
Wood Design Studios, Omer Khan, Jyrki Kanto, Michał Krupa, Lars Brubaker, Neil Richmond, Adam Kalisz, Robert Garlington, Ian Wilson, Carlo Andreacchio,
Jeremias Boos, Robert Holcomb, Gabriel Zöller, Robert Cude, Natibel de Leon, Nathan Turnage, Nicolas Vergnes, Philipp Kleinhenz, Norman Hartig, Louis Kreusel,
Christopher Taylor, Giovanni Remondini, Daniel Rentzsch, Nico Partipilo, Thomas Ventresco, Johannes Schwarz, Александр Коротеев, Brendon Harvey,
Marcelo G. Malheiros, Marius Giurgi, Richard Burns, Perttu Iso-Metsälä, Steve Bazin, Radoslav Borisov, Yoshiyuki Shida, Julien Guigner, Andrew Hunter,
Philipp Oeser, Daniel Thul, Thobias Johansson, Mauro Bonecchi, Georg Piorczynski, Sebastian Michailidis, L M Weedy, Gen X, Stefan Hinze, Nicolò Zubbini,
Erik Pusch, Rob Scott, Florian Koch, Charles Razack, Adrian Baker, Oliver Villar Diz, David Revoy, Julio Iglesias Lopez, Coen Spoor, Carlos Folch,
Joseph Christie, Victor Hernández García, David Mcsween, James Finnerty, Cory Kruckenberg, Giacomo Graziosi, Olivier Saraja, Lars Brubaker, Eric Hudson,
Johannes Schwarz, David Elguea, Marcus Schulderinsky, Karel De Bruijn, Lucas van Wijngaarden, Stefano Ciarrocchi, Mehmet Eribol, Thomas Berglund, Zuofei Song,
Dylan Urquidi )
2012-05-17 12:49:33 +00:00
|
|
|
if (snode->edittree) {
|
|
|
|
bNode *node = snode->edittree->nodes.first;
|
|
|
|
while (node) {
|
|
|
|
if (node->flag & NODE_SELECT) {
|
|
|
|
if (node->typeinfo->uibackdropfunc) {
|
|
|
|
node->typeinfo->uibackdropfunc(snode, ibuf, node, x, y);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
node = node->next;
|
|
|
|
}
|
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2010-02-01 15:32:55 +00:00
|
|
|
glMatrixMode(GL_PROJECTION);
|
|
|
|
glPopMatrix();
|
|
|
|
glMatrixMode(GL_MODELVIEW);
|
|
|
|
glPopMatrix();
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2009-10-07 22:05:30 +00:00
|
|
|
|
|
|
|
BKE_image_release_ibuf(ima, lock);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
/* note: needs to be userpref or opengl profile option */
|
|
|
|
static void draw_nodespace_back_tex(ScrArea *sa, SpaceNode *snode)
|
|
|
|
{
|
|
|
|
|
|
|
|
draw_nodespace_grid(snode);
|
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (snode->flag & SNODE_BACKDRAW) {
|
2012-05-27 19:38:10 +00:00
|
|
|
Image *ima = BKE_image_verify_viewer(IMA_TYPE_COMPOSITE, "Viewer Node");
|
|
|
|
ImBuf *ibuf = BKE_image_get_ibuf(ima, NULL);
|
2012-03-24 06:38:07 +00:00
|
|
|
if (ibuf) {
|
2008-12-24 10:33:10 +00:00
|
|
|
int x, y;
|
|
|
|
float zoom = 1.0;
|
|
|
|
|
|
|
|
glMatrixMode(GL_PROJECTION);
|
|
|
|
glPushMatrix();
|
|
|
|
glMatrixMode(GL_MODELVIEW);
|
|
|
|
glPushMatrix();
|
|
|
|
|
|
|
|
glaDefine2DArea(&sa->winrct);
|
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (ibuf->x > sa->winx || ibuf->y > sa->winy) {
|
2008-12-24 10:33:10 +00:00
|
|
|
float zoomx, zoomy;
|
2012-05-27 19:38:10 +00:00
|
|
|
zoomx = (float)sa->winx / ibuf->x;
|
|
|
|
zoomy = (float)sa->winy / ibuf->y;
|
2012-07-29 16:59:51 +00:00
|
|
|
zoom = minf(zoomx, zoomy);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
x = (sa->winx - zoom * ibuf->x) / 2 + snode->xof;
|
|
|
|
y = (sa->winy - zoom * ibuf->y) / 2 + snode->yof;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
|
|
|
glPixelZoom(zoom, zoom);
|
|
|
|
|
|
|
|
glColor4f(1.0, 1.0, 1.0, 1.0);
|
2012-03-24 06:38:07 +00:00
|
|
|
if (ibuf->rect)
|
2008-12-24 10:33:10 +00:00
|
|
|
glaDrawPixelsTex(x, y, ibuf->x, ibuf->y, GL_UNSIGNED_BYTE, ibuf->rect);
|
2012-05-27 19:38:10 +00:00
|
|
|
else if (ibuf->channels == 4)
|
2008-12-24 10:33:10 +00:00
|
|
|
glaDrawPixelsTex(x, y, ibuf->x, ibuf->y, GL_FLOAT, ibuf->rect_float);
|
|
|
|
|
|
|
|
glPixelZoom(1.0, 1.0);
|
|
|
|
|
|
|
|
glMatrixMode(GL_PROJECTION);
|
|
|
|
glPopMatrix();
|
|
|
|
glMatrixMode(GL_MODELVIEW);
|
|
|
|
glPopMatrix();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2009-02-07 14:03:34 +00:00
|
|
|
/* if v2d not NULL, it clips and returns 0 if not visible */
|
|
|
|
int node_link_bezier_points(View2D *v2d, SpaceNode *snode, bNodeLink *link, float coord_array[][2], int resol)
|
2008-12-24 10:33:10 +00:00
|
|
|
{
|
2009-02-07 14:03:34 +00:00
|
|
|
float dist, vec[4][2];
|
2012-06-01 12:38:03 +00:00
|
|
|
float deltax, deltay;
|
|
|
|
int toreroute, fromreroute;
|
2009-02-07 14:03:34 +00:00
|
|
|
/* in v0 and v3 we put begin/end points */
|
2012-03-24 06:38:07 +00:00
|
|
|
if (link->fromsock) {
|
2012-05-27 19:38:10 +00:00
|
|
|
vec[0][0] = link->fromsock->locx;
|
|
|
|
vec[0][1] = link->fromsock->locy;
|
2012-06-01 12:38:03 +00:00
|
|
|
fromreroute = (link->fromnode && link->fromnode->type == NODE_REROUTE);
|
2009-02-07 14:03:34 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-05-27 19:38:10 +00:00
|
|
|
if (snode == NULL) return 0;
|
2012-08-08 17:37:02 +00:00
|
|
|
copy_v2_v2(vec[0], snode->cursor);
|
2012-06-01 12:38:03 +00:00
|
|
|
fromreroute = 0;
|
2009-02-07 14:03:34 +00:00
|
|
|
}
|
2012-03-24 06:38:07 +00:00
|
|
|
if (link->tosock) {
|
2012-05-27 19:38:10 +00:00
|
|
|
vec[3][0] = link->tosock->locx;
|
|
|
|
vec[3][1] = link->tosock->locy;
|
2012-06-01 12:38:03 +00:00
|
|
|
toreroute = (link->tonode && link->tonode->type == NODE_REROUTE);
|
2009-02-07 14:03:34 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-05-27 19:38:10 +00:00
|
|
|
if (snode == NULL) return 0;
|
2012-08-08 17:37:02 +00:00
|
|
|
copy_v2_v2(vec[3], snode->cursor);
|
2012-06-01 12:38:03 +00:00
|
|
|
toreroute = 0;
|
2009-02-07 14:03:34 +00:00
|
|
|
}
|
2011-08-04 10:05:14 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
dist = UI_GetThemeValue(TH_NODE_CURVING) * 0.10f * ABS(vec[0][0] - vec[3][0]);
|
2012-06-01 12:38:03 +00:00
|
|
|
deltax = vec[3][0] - vec[0][0];
|
|
|
|
deltay = vec[3][1] - vec[0][1];
|
2008-12-24 10:33:10 +00:00
|
|
|
/* check direction later, for top sockets */
|
2012-06-01 12:38:03 +00:00
|
|
|
if (fromreroute) {
|
2012-07-09 23:07:15 +00:00
|
|
|
if (ABS(deltax) > ABS(deltay)) {
|
|
|
|
vec[1][1] = vec[0][1];
|
|
|
|
vec[1][0] = vec[0][0] + (deltax > 0 ? dist : -dist);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
vec[1][0] = vec[0][0];
|
|
|
|
vec[1][1] = vec[0][1] + (deltay > 0 ? dist : -dist);
|
2012-06-01 12:38:03 +00:00
|
|
|
}
|
2012-07-09 23:07:15 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-06-01 12:38:03 +00:00
|
|
|
vec[1][0] = vec[0][0] + dist;
|
|
|
|
vec[1][1] = vec[0][1];
|
|
|
|
}
|
|
|
|
if (toreroute) {
|
2012-07-09 23:07:15 +00:00
|
|
|
if (ABS(deltax) > ABS(deltay)) {
|
|
|
|
vec[2][1] = vec[3][1];
|
|
|
|
vec[2][0] = vec[3][0] + (deltax > 0 ? -dist : dist);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
vec[2][0] = vec[3][0];
|
|
|
|
vec[2][1] = vec[3][1] + (deltay > 0 ? -dist : dist);
|
2012-06-01 12:38:03 +00:00
|
|
|
}
|
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-06-01 12:38:03 +00:00
|
|
|
vec[2][0] = vec[3][0] - dist;
|
|
|
|
vec[2][1] = vec[3][1];
|
|
|
|
}
|
2012-07-09 23:07:15 +00:00
|
|
|
if (v2d && MIN4(vec[0][0], vec[1][0], vec[2][0], vec[3][0]) > v2d->cur.xmax) {
|
|
|
|
/* clipped */
|
|
|
|
}
|
|
|
|
else if (v2d && MAX4(vec[0][0], vec[1][0], vec[2][0], vec[3][0]) < v2d->cur.xmin) {
|
|
|
|
/* clipped */
|
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
else {
|
2009-02-07 14:03:34 +00:00
|
|
|
/* always do all three, to prevent data hanging around */
|
2012-07-09 23:07:15 +00:00
|
|
|
BKE_curve_forward_diff_bezier(vec[0][0], vec[1][0], vec[2][0], vec[3][0],
|
|
|
|
coord_array[0] + 0, resol, sizeof(float) * 2);
|
|
|
|
BKE_curve_forward_diff_bezier(vec[0][1], vec[1][1], vec[2][1], vec[3][1],
|
|
|
|
coord_array[0] + 1, resol, sizeof(float) * 2);
|
2009-02-07 14:03:34 +00:00
|
|
|
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
#define LINK_RESOL 24
|
2012-07-09 23:07:15 +00:00
|
|
|
#define LINK_ARROW 12 /* position of arrow on the link, LINK_RESOL/2 */
|
2012-07-09 20:37:09 +00:00
|
|
|
#define ARROW_SIZE 7
|
2012-07-09 23:07:15 +00:00
|
|
|
void node_draw_link_bezier(View2D *v2d, SpaceNode *snode, bNodeLink *link,
|
|
|
|
int th_col1, int do_shaded, int th_col2, int do_triple, int th_col3)
|
2009-02-07 14:03:34 +00:00
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
float coord_array[LINK_RESOL + 1][2];
|
2009-02-07 14:03:34 +00:00
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (node_link_bezier_points(v2d, snode, link, coord_array, LINK_RESOL)) {
|
2009-02-07 14:03:34 +00:00
|
|
|
float dist, spline_step = 0.0f;
|
|
|
|
int i;
|
2012-06-01 12:38:03 +00:00
|
|
|
int drawarrow;
|
2011-01-09 18:59:35 +00:00
|
|
|
/* store current linewidth */
|
|
|
|
float linew;
|
2012-06-01 12:38:03 +00:00
|
|
|
float arrow[2], arrow1[2], arrow2[2];
|
2011-01-09 18:59:35 +00:00
|
|
|
glGetFloatv(GL_LINE_WIDTH, &linew);
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* we can reuse the dist variable here to increment the GL curve eval amount*/
|
2012-05-27 19:38:10 +00:00
|
|
|
dist = 1.0f / (float)LINK_RESOL;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2011-01-09 18:59:35 +00:00
|
|
|
glEnable(GL_LINE_SMOOTH);
|
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
drawarrow = ((link->tonode && (link->tonode->type == NODE_REROUTE)) &&
|
|
|
|
(link->fromnode && (link->fromnode->type == NODE_REROUTE)));
|
|
|
|
|
2012-06-01 12:38:03 +00:00
|
|
|
if (drawarrow) {
|
2012-07-09 16:51:08 +00:00
|
|
|
/* draw arrow in line segment LINK_ARROW */
|
|
|
|
float d_xy[2], len;
|
|
|
|
|
|
|
|
sub_v2_v2v2(d_xy, coord_array[LINK_ARROW], coord_array[LINK_ARROW - 1]);
|
|
|
|
len = len_v2(d_xy);
|
2012-08-06 20:48:08 +00:00
|
|
|
mul_v2_fl(d_xy, ARROW_SIZE / len);
|
2012-07-09 16:51:08 +00:00
|
|
|
arrow1[0] = coord_array[LINK_ARROW][0] - d_xy[0] + d_xy[1];
|
|
|
|
arrow1[1] = coord_array[LINK_ARROW][1] - d_xy[1] - d_xy[0];
|
|
|
|
arrow2[0] = coord_array[LINK_ARROW][0] - d_xy[0] - d_xy[1];
|
|
|
|
arrow2[1] = coord_array[LINK_ARROW][1] - d_xy[1] + d_xy[0];
|
2012-06-01 12:38:03 +00:00
|
|
|
arrow[0] = coord_array[LINK_ARROW][0];
|
|
|
|
arrow[1] = coord_array[LINK_ARROW][1];
|
|
|
|
}
|
2012-03-24 06:38:07 +00:00
|
|
|
if (do_triple) {
|
2011-01-09 18:59:35 +00:00
|
|
|
UI_ThemeColorShadeAlpha(th_col3, -80, -120);
|
|
|
|
glLineWidth(4.0f);
|
|
|
|
|
|
|
|
glBegin(GL_LINE_STRIP);
|
2012-05-27 19:38:10 +00:00
|
|
|
for (i = 0; i <= LINK_RESOL; i++) {
|
2011-01-09 18:59:35 +00:00
|
|
|
glVertex2fv(coord_array[i]);
|
|
|
|
}
|
|
|
|
glEnd();
|
2012-06-01 12:38:03 +00:00
|
|
|
if (drawarrow) {
|
|
|
|
glBegin(GL_LINE_STRIP);
|
|
|
|
glVertex2fv(arrow1);
|
|
|
|
glVertex2fv(arrow);
|
|
|
|
glVertex2fv(arrow);
|
|
|
|
glVertex2fv(arrow2);
|
|
|
|
glEnd();
|
|
|
|
}
|
2011-01-09 18:59:35 +00:00
|
|
|
}
|
|
|
|
|
2011-11-29 20:35:30 +00:00
|
|
|
/* XXX using GL_LINES for shaded node lines is a workaround
|
|
|
|
* for Intel hardware, this breaks with GL_LINE_STRIP and
|
|
|
|
* changing color in begin/end blocks.
|
|
|
|
*/
|
2011-01-09 18:59:35 +00:00
|
|
|
glLineWidth(1.5f);
|
2012-03-24 06:38:07 +00:00
|
|
|
if (do_shaded) {
|
2011-11-29 19:50:34 +00:00
|
|
|
glBegin(GL_LINES);
|
2012-05-27 19:38:10 +00:00
|
|
|
for (i = 0; i < LINK_RESOL; i++) {
|
2008-12-24 10:33:10 +00:00
|
|
|
UI_ThemeColorBlend(th_col1, th_col2, spline_step);
|
2011-11-29 19:50:34 +00:00
|
|
|
glVertex2fv(coord_array[i]);
|
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
UI_ThemeColorBlend(th_col1, th_col2, spline_step + dist);
|
|
|
|
glVertex2fv(coord_array[i + 1]);
|
2011-11-29 19:50:34 +00:00
|
|
|
|
2009-02-07 14:03:34 +00:00
|
|
|
spline_step += dist;
|
2011-01-09 18:59:35 +00:00
|
|
|
}
|
2011-11-29 19:50:34 +00:00
|
|
|
glEnd();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
UI_ThemeColor(th_col1);
|
|
|
|
glBegin(GL_LINE_STRIP);
|
2012-05-27 19:38:10 +00:00
|
|
|
for (i = 0; i <= LINK_RESOL; i++) {
|
2011-11-29 19:50:34 +00:00
|
|
|
glVertex2fv(coord_array[i]);
|
|
|
|
}
|
|
|
|
glEnd();
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2011-01-09 18:59:35 +00:00
|
|
|
|
2012-06-01 12:38:03 +00:00
|
|
|
if (drawarrow) {
|
|
|
|
glBegin(GL_LINE_STRIP);
|
|
|
|
glVertex2fv(arrow1);
|
|
|
|
glVertex2fv(arrow);
|
|
|
|
glVertex2fv(arrow);
|
|
|
|
glVertex2fv(arrow2);
|
|
|
|
glEnd();
|
|
|
|
}
|
|
|
|
|
2011-01-09 18:59:35 +00:00
|
|
|
glDisable(GL_LINE_SMOOTH);
|
|
|
|
|
|
|
|
/* restore previuos linewidth */
|
|
|
|
glLineWidth(linew);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
#if 0 /* not used in 2.5x yet */
|
2011-09-05 21:01:50 +00:00
|
|
|
static void node_link_straight_points(View2D *UNUSED(v2d), SpaceNode *snode, bNodeLink *link, float coord_array[][2])
|
|
|
|
{
|
2012-03-24 06:38:07 +00:00
|
|
|
if (link->fromsock) {
|
2012-05-27 19:38:10 +00:00
|
|
|
coord_array[0][0] = link->fromsock->locx;
|
|
|
|
coord_array[0][1] = link->fromsock->locy;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-05-27 19:38:10 +00:00
|
|
|
if (snode == NULL) return;
|
|
|
|
coord_array[0][0] = snode->mx;
|
|
|
|
coord_array[0][1] = snode->my;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
2012-03-24 06:38:07 +00:00
|
|
|
if (link->tosock) {
|
2012-05-27 19:38:10 +00:00
|
|
|
coord_array[1][0] = link->tosock->locx;
|
|
|
|
coord_array[1][1] = link->tosock->locy;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-05-27 19:38:10 +00:00
|
|
|
if (snode == NULL) return;
|
|
|
|
coord_array[1][0] = snode->mx;
|
|
|
|
coord_array[1][1] = snode->my;
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2012-07-09 23:07:15 +00:00
|
|
|
void node_draw_link_straight(View2D *v2d, SpaceNode *snode, bNodeLink *link,
|
|
|
|
int th_col1, int do_shaded, int th_col2, int do_triple, int th_col3)
|
2011-09-05 21:01:50 +00:00
|
|
|
{
|
|
|
|
float coord_array[2][2];
|
|
|
|
float linew;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
node_link_straight_points(v2d, snode, link, coord_array);
|
|
|
|
|
|
|
|
/* store current linewidth */
|
|
|
|
glGetFloatv(GL_LINE_WIDTH, &linew);
|
|
|
|
|
|
|
|
glEnable(GL_LINE_SMOOTH);
|
|
|
|
|
2012-03-24 06:38:07 +00:00
|
|
|
if (do_triple) {
|
2011-09-05 21:01:50 +00:00
|
|
|
UI_ThemeColorShadeAlpha(th_col3, -80, -120);
|
|
|
|
glLineWidth(4.0f);
|
|
|
|
|
|
|
|
glBegin(GL_LINES);
|
|
|
|
glVertex2fv(coord_array[0]);
|
|
|
|
glVertex2fv(coord_array[1]);
|
|
|
|
glEnd();
|
|
|
|
}
|
|
|
|
|
|
|
|
UI_ThemeColor(th_col1);
|
|
|
|
glLineWidth(1.5f);
|
|
|
|
|
2011-11-29 20:35:30 +00:00
|
|
|
/* XXX using GL_LINES for shaded node lines is a workaround
|
|
|
|
* for Intel hardware, this breaks with GL_LINE_STRIP and
|
|
|
|
* changing color in begin/end blocks.
|
|
|
|
*/
|
2012-03-24 06:38:07 +00:00
|
|
|
if (do_shaded) {
|
2011-11-29 20:35:30 +00:00
|
|
|
glBegin(GL_LINES);
|
2012-05-27 19:38:10 +00:00
|
|
|
for (i = 0; i < LINK_RESOL - 1; ++i) {
|
|
|
|
float t = (float)i / (float)(LINK_RESOL - 1);
|
2011-09-05 21:01:50 +00:00
|
|
|
UI_ThemeColorBlend(th_col1, th_col2, t);
|
2012-07-09 23:07:15 +00:00
|
|
|
glVertex2f((1.0f - t) * coord_array[0][0] + t * coord_array[1][0],
|
|
|
|
(1.0f - t) * coord_array[0][1] + t * coord_array[1][1]);
|
2011-11-29 20:35:30 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
t = (float)(i + 1) / (float)(LINK_RESOL - 1);
|
2011-11-29 20:35:30 +00:00
|
|
|
UI_ThemeColorBlend(th_col1, th_col2, t);
|
2012-07-09 23:07:15 +00:00
|
|
|
glVertex2f((1.0f - t) * coord_array[0][0] + t * coord_array[1][0],
|
|
|
|
(1.0f - t) * coord_array[0][1] + t * coord_array[1][1]);
|
2011-11-29 20:35:30 +00:00
|
|
|
}
|
|
|
|
glEnd();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
glBegin(GL_LINE_STRIP);
|
2012-05-27 19:38:10 +00:00
|
|
|
for (i = 0; i < LINK_RESOL; ++i) {
|
|
|
|
float t = (float)i / (float)(LINK_RESOL - 1);
|
2012-07-09 23:07:15 +00:00
|
|
|
glVertex2f((1.0f - t) * coord_array[0][0] + t * coord_array[1][0],
|
|
|
|
(1.0f - t) * coord_array[0][1] + t * coord_array[1][1]);
|
2011-11-29 20:35:30 +00:00
|
|
|
}
|
|
|
|
glEnd();
|
2011-09-05 21:01:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
glDisable(GL_LINE_SMOOTH);
|
|
|
|
|
|
|
|
/* restore previuos linewidth */
|
|
|
|
glLineWidth(linew);
|
|
|
|
}
|
2012-07-09 23:07:15 +00:00
|
|
|
#endif
|
2011-09-05 21:01:50 +00:00
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* note; this is used for fake links in groups too */
|
|
|
|
void node_draw_link(View2D *v2d, SpaceNode *snode, bNodeLink *link)
|
|
|
|
{
|
2012-05-27 19:38:10 +00:00
|
|
|
int do_shaded = FALSE, th_col1 = TH_HEADER, th_col2 = TH_HEADER;
|
|
|
|
int do_triple = FALSE, th_col3 = TH_WIRE;
|
2008-12-24 10:33:10 +00:00
|
|
|
|
2012-05-27 19:38:10 +00:00
|
|
|
if (link->fromsock == NULL && link->tosock == NULL)
|
2008-12-24 10:33:10 +00:00
|
|
|
return;
|
|
|
|
|
2011-01-09 18:59:35 +00:00
|
|
|
/* new connection */
|
2012-03-24 06:38:07 +00:00
|
|
|
if (!link->fromsock || !link->tosock) {
|
2011-01-09 18:59:35 +00:00
|
|
|
th_col1 = TH_ACTIVE;
|
2012-05-19 13:28:19 +00:00
|
|
|
do_triple = TRUE;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
else {
|
2012-06-24 10:49:22 +00:00
|
|
|
int cycle = 0;
|
|
|
|
|
2008-12-24 10:33:10 +00:00
|
|
|
/* going to give issues once... */
|
2012-03-24 06:38:07 +00:00
|
|
|
if (link->tosock->flag & SOCK_UNAVAIL)
|
2008-12-24 10:33:10 +00:00
|
|
|
return;
|
2012-03-24 06:38:07 +00:00
|
|
|
if (link->fromsock->flag & SOCK_UNAVAIL)
|
2008-12-24 10:33:10 +00:00
|
|
|
return;
|
|
|
|
|
2012-06-24 10:49:22 +00:00
|
|
|
/* check cyclic */
|
|
|
|
if (link->fromnode && link->tonode)
|
|
|
|
cycle = (link->fromnode->level < link->tonode->level || link->tonode->level == 0xFFF);
|
|
|
|
if (!cycle && (link->flag & NODE_LINK_VALID)) {
|
|
|
|
/* special indicated link, on drop-node */
|
|
|
|
if (link->flag & NODE_LINKFLAG_HILITE) {
|
|
|
|
th_col1 = th_col2 = TH_ACTIVE;
|
|
|
|
}
|
2008-12-24 10:33:10 +00:00
|
|
|
else {
|
2012-06-24 10:49:22 +00:00
|
|
|
/* regular link */
|
|
|
|
if (link->fromnode && link->fromnode->flag & SELECT)
|
|
|
|
th_col1 = TH_EDGE_SELECT;
|
|
|
|
if (link->tonode && link->tonode->flag & SELECT)
|
|
|
|
th_col2 = TH_EDGE_SELECT;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2012-06-24 10:49:22 +00:00
|
|
|
do_shaded = TRUE;
|
|
|
|
do_triple = TRUE;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
th_col1 = TH_REDALERT;
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-01-09 18:59:35 +00:00
|
|
|
node_draw_link_bezier(v2d, snode, link, th_col1, do_shaded, th_col2, do_triple, th_col3);
|
2011-09-05 21:01:50 +00:00
|
|
|
// node_draw_link_straight(v2d, snode, link, th_col1, do_shaded, th_col2, do_triple, th_col3);
|
2008-12-24 10:33:10 +00:00
|
|
|
}
|
2012-06-29 14:34:46 +00:00
|
|
|
|
2012-08-01 13:28:19 +00:00
|
|
|
void ED_node_draw_snap(View2D *v2d, const float cent[2], float size, NodeBorder border)
|
2012-06-29 14:34:46 +00:00
|
|
|
{
|
|
|
|
glBegin(GL_LINES);
|
|
|
|
|
|
|
|
if (border & (NODE_LEFT | NODE_RIGHT)) {
|
|
|
|
glVertex2f(cent[0], v2d->cur.ymin);
|
|
|
|
glVertex2f(cent[0], v2d->cur.ymax);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
glVertex2f(cent[0], cent[1] - size);
|
|
|
|
glVertex2f(cent[0], cent[1] + size);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (border & (NODE_TOP | NODE_BOTTOM)) {
|
|
|
|
glVertex2f(v2d->cur.xmin, cent[1]);
|
|
|
|
glVertex2f(v2d->cur.xmax, cent[1]);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
glVertex2f(cent[0] - size, cent[1]);
|
|
|
|
glVertex2f(cent[0] + size, cent[1]);
|
|
|
|
}
|
|
|
|
|
|
|
|
glEnd();
|
|
|
|
}
|