// 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
// 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) {
// 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.
// 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
// 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);
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
// 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