X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fvframe.h;h=f9a05aefa8f4595d362e7e861af244a0e65f7353;hb=b55798fc64eee00c6fab3b4763e791befb7275f9;hp=73ec70da0b2bacdb40e601746419cde25e2eb39c;hpb=f110e7626d433b4724befe0871a3a35f9f81f264;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/vframe.h b/cinelerra-5.1/guicast/vframe.h index 73ec70da..f9a05aef 100644 --- a/cinelerra-5.1/guicast/vframe.h +++ b/cinelerra-5.1/guicast/vframe.h @@ -34,7 +34,7 @@ // Maximum number of prev or next effects to be pushed onto the stacks. #define MAX_STACK_ELEMENTS 255 - +#define SHM_MIN_SIZE 2048 // Scene graph for 3D models // Defined by the subclass @@ -130,6 +130,7 @@ public: // direct copy with no alpha int copy_from(VFrame *frame); + int copy_vframe(VFrame *src); // BC_CModels::transfer int transfer_from(VFrame *frame, int bg_color, int in_x, int in_y, int in_w, int in_h); int transfer_from(VFrame *frame, int bg_color=0) { @@ -200,9 +201,6 @@ public: // Set keyframe status void set_keyframe(int value); int get_keyframe(); -// Overlay src onto this with blending and translation of input. -// Source and this must have alpha - void overlay(VFrame *src, int out_x1, int out_y1); // If the opengl state is RAM, transfer image from RAM to the texture // referenced by this frame. @@ -299,11 +297,12 @@ public: // Adds the program with put_shader. // Returns the program handle. // Requires a null terminated argument list of shaders to link together. +// if fragments is not NULL, it is a a zero terminated list of frags +// if fragments is NULL, then a zero terminated list of va_args frags // At least one shader argument must have a main() function. make_shader // replaces all the main() functions with unique functions and calls them in // sequence, so multiple independant shaders can be linked. -// x is a placeholder for va_arg and should be 0. - static unsigned int make_shader(int x, ...); + static unsigned int make_shader(const char **fragments, ...); static void dump_shader(int shader_id); // Because OpenGL is faster if multiple effects are combined, we need @@ -344,7 +343,12 @@ public: // This clears the stacks and the param table void clear_stacks(); - void draw_pixel(int x, int y); + int (VFrame::*draw_point)(int x, int y); + int pixel_rgb, pixel_yuv, stipple; + + void set_pixel_color(int rgb); + void set_stiple(int mask); + int draw_pixel(int x, int y); void draw_line(int x1, int y1, int x2, int y2); void draw_smooth(int x1, int y1, int x2, int y2, int x3, int y3); void smooth_draw(int x1, int y1, int x2, int y2, int x3, int y3); @@ -352,6 +356,7 @@ public: void draw_arrow(int x1, int y1, int x2, int y2, int sz=10); void draw_x(int x1, int y1, int sz=2); void draw_t(int x1, int y1, int sz=2); + void draw_oval(int x1, int y1, int x2, int y2); // 3D scene graphs // Not integrated with shmem because that only affects codecs @@ -459,9 +464,11 @@ class VFramePng : public VFrame { // Read a PNG into the frame with alpha int read_png(const unsigned char *data, long image_size, double xscale, double yscale); public: - VFramePng(unsigned char *png_data, double scale=0); + VFramePng(unsigned char *png_data, double s=0); VFramePng(unsigned char *png_data, long image_size, double xs=0, double ys=0); ~VFramePng(); + static VFrame *vframe_png(int fd, double xs=1, double ys=1); + static VFrame *vframe_png(const char *png_path, double xs=1, double ys=1); }; #endif