X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Frotate%2Frotate.C;h=a2033f0fea1c90beb9063e4dc45e16be8d581cf5;hb=f068b73c1d4afafbf6d86e7f5bc8f1c96b5366d3;hp=de444618f1d51e9766ba96de16d037de2902c91c;hpb=54cc56bff09f5004b2a6cd454375f06e56acf5a0;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/plugins/rotate/rotate.C b/cinelerra-5.1/plugins/rotate/rotate.C index de444618..a2033f0f 100644 --- a/cinelerra-5.1/plugins/rotate/rotate.C +++ b/cinelerra-5.1/plugins/rotate/rotate.C @@ -179,7 +179,7 @@ RotateText::RotateText(RotateWindow *window, int y) : BC_TextBox(x, y, - 90, + xS(90), 1, (float)plugin->config.angle) { @@ -263,86 +263,51 @@ int RotateReset::handle_event() RotateWindow::RotateWindow(RotateEffect *plugin) - : PluginClientWindow(plugin, - 250, - 230, - 250, - 230, - 0) + : PluginClientWindow(plugin, xS(300), yS(230), xS(300), yS(230), 0) { this->plugin = plugin; } -#define RADIUS 30 +#define RADIUS xS(30) void RotateWindow::create_objects() { - int x = 10, y = 10; + int xs10 = xS(10), xs50 = xS(50), xs150 = xS(150); + int ys10 = yS(10), ys20 = yS(20), ys25 = yS(25), ys50 = yS(50), ys60 = yS(60); + int x = xs10, y = ys10; BC_Title *title; - - - add_tool(new BC_Title(x, y, _("Rotate"))); - x += 50; - y += 20; - add_tool(toggle0 = new RotateToggle(this, - plugin, - plugin->config.angle == 0, - x, - y, - 0, - "0")); - x += RADIUS; - y += RADIUS; - add_tool(toggle90 = new RotateToggle(this, - plugin, - plugin->config.angle == 90, - x, - y, - 90, - "90")); - x -= RADIUS; - y += RADIUS; - add_tool(toggle180 = new RotateToggle(this, - plugin, - plugin->config.angle == 180, - x, - y, - 180, - "180")); - x -= RADIUS; - y -= RADIUS; - add_tool(toggle270 = new RotateToggle(this, - plugin, - plugin->config.angle == 270, - x, - y, - 270, - "270")); -// add_subwindow(bilinear = new RotateInterpolate(plugin, 10, y + 60)); - x += 120; - y -= 50; + x += xs50; y += ys20; + add_tool(toggle0 = new RotateToggle(this, plugin, + plugin->config.angle == 0, x, y, 0, "0")); + x += RADIUS; y += RADIUS; + add_tool(toggle90 = new RotateToggle(this, plugin, + plugin->config.angle == 90, x, y, 90, "90")); + x -= RADIUS; y += RADIUS; + add_tool(toggle180 = new RotateToggle(this, plugin, + plugin->config.angle == 180, x, y, 180, "180")); + x -= RADIUS; y -= RADIUS; + add_tool(toggle270 = new RotateToggle(this, plugin, + plugin->config.angle == 270, x, y, 270, "270")); +// add_subwindow(bilinear = new RotateInterpolate(plugin, xs10, y + ys60)); + x += xs150; y -= ys50; add_tool(fine = new RotateFine(this, plugin, x, y)); - y += fine->get_h() + 10; + y += fine->get_h() + ys10; add_tool(text = new RotateText(this, plugin, x, y)); - y += 25; + y += ys25; add_tool(new BC_Title(x, y, _("Degrees"))); - - - - - y += text->get_h() + 10; + y += text->get_h() + ys10; add_subwindow(title = new BC_Title(x, y, _("Pivot (x,y):"))); - y += title->get_h() + 10; + y += title->get_h() + ys10; add_subwindow(this->x = new RotateX(this, plugin, x, y)); - x += this->x->get_w() + 10; + x += this->x->get_w() + xs10; add_subwindow(this->y = new RotateY(this, plugin, x, y)); -// y += this->y->get_h() + 10; - x = 10; +// y += this->y->get_h() + ys10; + x = xs10; add_subwindow(draw_pivot = new RotateDrawPivot(this, plugin, x, y)); - y += 60; + y += ys60; add_subwindow(reset = new RotateReset(plugin, this, x, y)); show_window(); @@ -511,7 +476,7 @@ int RotateEffect::process_buffer(VFrame *frame, //printf("RotateEffect::process_buffer %d\n", __LINE__); - if(config.angle == 0) + if(config.angle == 0 && !config.draw_pivot) { read_frame(frame, 0, @@ -569,18 +534,18 @@ int RotateEffect::process_buffer(VFrame *frame, //printf("RotateEffect::process_buffer %d draw_pivot=%d\n", __LINE__, config.draw_pivot); // Draw center -#define CENTER_H 20 -#define CENTER_W 20 +#define CENTER_H xS(20) +#define CENTER_W yS(20) #define DRAW_CENTER(components, type, max) \ { \ type **rows = (type**)get_output()->get_rows(); \ - if( (center_x >= 0 && center_x < w) || (center_y >= 0 && center_y < h) ) \ + if( (center_x >= 0 && center_x < w) && (center_y >= 0 && center_y < h) ) \ { \ - type *hrow = rows[center_y] + components * (center_x - CENTER_W / 2); \ for(int i = center_x - CENTER_W / 2; i <= center_x + CENTER_W / 2; i++) \ { \ if(i >= 0 && i < w) \ { \ + type *hrow = rows[center_y] + components * i; \ hrow[0] = max - hrow[0]; \ hrow[1] = max - hrow[1]; \ hrow[2] = max - hrow[2]; \