4 * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 #include "bcdisplayinfo.h"
27 #include "bcsignals.h"
33 #include "loadbalance.h"
34 #include "pluginvclient.h"
53 int equivalent(ZoomBlurConfig &that);
54 void copy_from(ZoomBlurConfig &that);
55 void interpolate(ZoomBlurConfig &prev,
73 class ZoomBlurSize : public BC_ISlider
76 ZoomBlurSize(ZoomBlurMain *plugin,
87 class ZoomBlurToggle : public BC_CheckBox
90 ZoomBlurToggle(ZoomBlurMain *plugin,
100 class ZoomBlurWindow : public PluginClientWindow
103 ZoomBlurWindow(ZoomBlurMain *plugin);
106 void create_objects();
109 ZoomBlurSize *x, *y, *radius, *steps;
110 ZoomBlurToggle *r, *g, *b, *a;
111 ZoomBlurMain *plugin;
112 ZoomBlurReset *reset;
115 class ZoomBlurReset : public BC_GenericButton
118 ZoomBlurReset(ZoomBlurMain *plugin, ZoomBlurWindow *window, int x, int y);
121 ZoomBlurMain *plugin;
122 ZoomBlurWindow *window;
128 // Output coords for a layer of blurring
129 // Used for OpenGL only
134 float x1, y1, x2, y2;
137 class ZoomBlurMain : public PluginVClient
140 ZoomBlurMain(PluginServer *server);
143 int process_buffer(VFrame *frame,
144 int64_t start_position,
147 void save_data(KeyFrame *keyframe);
148 void read_data(KeyFrame *keyframe);
152 PLUGIN_CLASS_MEMBERS(ZoomBlurConfig)
154 void delete_tables();
155 VFrame *input, *output, *temp;
156 ZoomBlurEngine *engine;
159 ZoomBlurLayer *layer_table;
161 int need_reconfigure;
162 // The accumulation buffer is needed because 8 bits isn't precise enough
163 unsigned char *accum;
166 class ZoomBlurPackage : public LoadPackage
173 class ZoomBlurUnit : public LoadClient
176 ZoomBlurUnit(ZoomBlurEngine *server, ZoomBlurMain *plugin);
177 void process_package(LoadPackage *package);
178 ZoomBlurEngine *server;
179 ZoomBlurMain *plugin;
182 class ZoomBlurEngine : public LoadServer
185 ZoomBlurEngine(ZoomBlurMain *plugin,
188 void init_packages();
189 LoadClient* new_client();
190 LoadPackage* new_package();
191 ZoomBlurMain *plugin;