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) 2011 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_stabilize2d.c
34
#include "node_composite_util.h"
36
/* **************** Translate ******************** */
38
static bNodeSocketTemplate cmp_node_stabilize2d_in[]= {
39
{ SOCK_RGBA, 1, "Image", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
43
static bNodeSocketTemplate cmp_node_stabilize2d_out[]= {
44
{ SOCK_RGBA, 0, "Image"},
48
static void node_composit_exec_stabilize2d(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
50
if (in[0]->data && node->id) {
52
MovieClip *clip= (MovieClip *)node->id;
53
CompBuf *cbuf= typecheck_compbuf(in[0]->data, CB_RGBA);
55
float loc[2], scale, angle;
57
BKE_tracking_stabilization_data(&clip->tracking, rd->cfra, cbuf->x, cbuf->y, loc, &scale, &angle);
59
stackbuf= node_composit_transform(cbuf, loc[0], loc[1], angle, scale, node->custom1);
61
/* pass on output and free */
62
out[0]->data= stackbuf;
64
if (cbuf!=in[0]->data)
69
void register_node_type_cmp_stabilize2d(bNodeTreeType *ttype)
71
static bNodeType ntype;
73
node_type_base(ttype, &ntype, CMP_NODE_STABILIZE2D, "Stabilize 2D", NODE_CLASS_DISTORT, NODE_OPTIONS);
74
node_type_socket_templates(&ntype, cmp_node_stabilize2d_in, cmp_node_stabilize2d_out);
75
node_type_size(&ntype, 140, 100, 320);
76
node_type_exec(&ntype, node_composit_exec_stabilize2d);
78
nodeRegisterType(ttype, &ntype);