configure tweaks, loadmode_edl icons from igor
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / rotate / rotate.C
index de444618f1d51e9766ba96de16d037de2902c91c..a2033f0fea1c90beb9063e4dc45e16be8d581cf5 100644 (file)
@@ -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]; \