x265 update 2.7, findobj upgrade, fix svg init, fix for dragchkbox buttonpress, add...
[goodguy/history.git] / cinelerra-5.1 / cinelerra / affine.h
index d03f6cd872fd97c33ae67761327045883a8d1690..be74d572827a92ec5c54e78dcc9378fdc849519d 100644 (file)
@@ -86,25 +86,22 @@ public:
 
 // Range of coords is 0 to 100 for coordinates in the image.
 // The coordinate locations are clockwise around the image.
-       void process(VFrame *output,
-               VFrame *input,
-               VFrame *temp,
-               int mode,
-               float x1,
-               float y1,
-               float x2,
-               float y2,
-               float x3,
-               float y3,
-               float x4,
-               float y4,
+       void process(VFrame *output, VFrame *input, VFrame *temp, int mode,
+               float x1, float y1, float x2, float y2,
+               float x3, float y3, float x4, float y4,
                int forward);
 // Do rotation with the affine/perspective transform.
 // This removes some of the extremely faint artifacts in the trig rotation.
-       void rotate(VFrame *output,
-               VFrame *input,
-               float angle);
+       void rotate(VFrame *output, VFrame *input, float angle);
        void set_matrix(AffineMatrix *matrix);
+// set_matrix:
+//  in x1,y1 - x2,y1   out x1,y1 - x2,y2 clockwise
+//       |       |           |       |
+//     x1,y2 - x2,y2       x4,y4 - x3,y3
+//
+       void set_matrix( double in_x1,  double in_y1,  double in_x2,  double in_y2,
+                        double out_x1, double out_y1, double out_x2, double out_y2,
+                        double out_x3, double out_y3, double out_x4, double out_y4);
 // Set the viewport to transform.  The transform is based on the input viewport.
 // The output viewport clips the transformed output.
        void set_in_viewport(int x, int y, int w, int h);
@@ -127,6 +124,8 @@ public:
 // Never used
        void unset_pivot();
        void unset_viewport();
+// default: AF_CUBIC
+       void set_interpolation(int type);
 // To use OpenGL for the processing, set to 1
        void set_opengl(int value);
        void init_packages();
@@ -136,8 +135,7 @@ public:
 
        VFrame *input, *output, *temp;
        int mode;
-       enum
-       {
+       enum {
                PERSPECTIVE,
                SHEER,
                STRETCH,
@@ -145,6 +143,14 @@ public:
 // multiply directly by a matrix.
                TRANSFORM
        };
+       int interpolation;
+       enum {
+               AF_DEFAULT,
+               AF_NEAREST,
+               AF_LINEAR,
+               AF_CUBIC,
+               AF_MODES
+       };
 
 // arbitrary matrix
        AffineMatrix matrix;