2 * ***** BEGIN GPL LICENSE BLOCK *****
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 * The Original Code is Copyright (C) 2012 Blender Foundation.
19 * All rights reserved.
21 * The Original Code is: all of this file.
23 * Contributor(s): Blender Foundation,
26 * ***** END GPL LICENSE BLOCK *****
29 /** \file blender/nodes/composite/nodes/node_composite_mask.c
33 #include "BLF_translation.h"
35 #include "DNA_mask_types.h"
39 #include "node_composite_util.h"
41 #include "../../../../intern/raskter/raskter.h"
43 /* **************** Translate ******************** */
45 static bNodeSocketTemplate cmp_node_mask_out[] = {
46 { SOCK_FLOAT, 0, "Mask"},
50 static void exec(void *data, bNode *node, bNodeStack **UNUSED(in), bNodeStack **out)
53 Mask *mask = (Mask *)node->id;
55 RenderData *rd = data;
59 if (!out[0]->hasoutput) {
60 /* the node's output socket is not connected to anything...
61 * do not execute any further, just exit the node immediately
66 sx = (rd->size * rd->xsch) / 100;
67 sy = (rd->size * rd->ysch) / 100;
69 /* allocate the output buffer */
70 stackbuf = alloc_compbuf(sx, sy, CB_VAL, TRUE);
73 BKE_mask_rasterize(mask, sx, sy, res, TRUE, node->custom1);
76 PLX_antialias_buffer(res,sx,sy);
78 /* pass on output and free */
79 out[0]->data = stackbuf;
83 void register_node_type_cmp_mask(bNodeTreeType *ttype)
85 static bNodeType ntype;
87 node_type_base(ttype, &ntype, CMP_NODE_MASK, "Mask", NODE_CLASS_INPUT, NODE_OPTIONS);
88 node_type_socket_templates(&ntype, NULL, cmp_node_mask_out);
89 node_type_size(&ntype, 140, 100, 320);
90 node_type_exec(&ntype, exec);
92 nodeRegisterType(ttype, &ntype);