// 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);
// BC_CModels::transfer
- int transfer_from(VFrame *frame, int bg_color=0);
+ 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) {
+ return transfer_from(frame, bg_color, 0,0, frame->get_w(),frame->get_h());
+ }
// Required for YUV
int clear_frame();
int allocate_compressed_data(long bytes);
long get_compressed_allocated() { return compressed_allocated; }
long get_compressed_size() { return compressed_size; }
void set_compressed_size(long size) { compressed_size = size; }
- double get_timestamp() { return timestamp; }
+ double get_timestamp() { return timestamp; }
void set_timestamp(double time) { timestamp = time; }
// return an array of pointers to rows
// 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.
// Must be called from a synchronous opengl thread after enable_opengl.
void to_texture();
-// Transfer from PBuffer to RAM. Only used after Playback3D::overlay_sync
- void to_ram();
+// Transfer from PBuffer to RAM.
+// used in Playback3D::overlay_sync, plugin Overlay::handle_opengl
+ void screen_to_ram();
// Transfer contents of current pbuffer to texture,
// creating a new texture if necessary.
-
-
// ================================ OpenGL functions ===========================
// Defined in vframe3d.C
// Location of working image if OpenGL playback
// This clears the stacks and the param table
void clear_stacks();
- void draw_rect(int x1, int y1, int x2, int y2);
+ 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_pixel(int x, int y);
- void draw_arrow(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_rect(int x1, int y1, int x2, int y2);
+ 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