X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fvframe.h;h=21b6497af9f6043691eaffa26e28462548444e2b;hb=caf23b6b8e0024c33390ddaa165e11956e66f1c2;hp=da53bfdda22bdb315613238362c512b1061f2ec6;hpb=7fd85fb66168f6b518c5f2d73e04036e87faa0e1;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/guicast/vframe.h b/cinelerra-5.1/guicast/vframe.h index da53bfdd..21b6497a 100644 --- a/cinelerra-5.1/guicast/vframe.h +++ b/cinelerra-5.1/guicast/vframe.h @@ -29,13 +29,19 @@ #include "bctexture.inc" #include "bcwindowbase.inc" #include "bccmodels.h" -#include "bccmodels.h" #include "vframe.inc" // Maximum number of prev or next effects to be pushed onto the stacks. #define MAX_STACK_ELEMENTS 255 #define SHM_MIN_SIZE 2048 +#define ALIAS_OFF 0 +#define ALIAS_TOP 1 +#define ALIAS_CTR 2 +#define ALIAS_BOT 4 +#define ALIAS_DBL 5 +#define ALIAS_NRM 6 + // Scene graph for 3D models // Defined by the subclass class VFrameScene @@ -112,8 +118,11 @@ public: int data_size, int data_allocated); -// Write a PNG for debugging +// Write a PNG/PPM for debugging int write_png(const char *path); + static void write_ppm(VFrame *vfrm, const char *fmt, ...); + void write_ppm(const char *path) { write_ppm(this, "%s", path); } +//static int n = 0; write_ppm(vframe, "/tmp/data/f%05d", ++n); // if frame points to the same data as this return 1 int equals(VFrame *frame); @@ -137,7 +146,8 @@ public: return transfer_from(frame, bg_color, 0,0, frame->get_w(),frame->get_h()); } // Required for YUV - int clear_frame(); + void black_frame(); + void clear_frame(); int allocate_compressed_data(long bytes); // Sequence number. -1 means invalid. Passing frames to the encoder is @@ -180,14 +190,14 @@ public: long get_bytes_per_line(); int get_memory_type(); - - static int calculate_bytes_per_pixel(int colormodel); // Get size + 4 for assembly language static long calculate_data_size(int w, int h, int bytes_per_line = -1, int color_model = BC_RGB888); // Get size of uncompressed frame buffer without extra 4 bytes long get_data_size(); +// alloc/reset temp vframe to spec + static void get_temp(VFrame *&vfrm, int w, int h, int color_model); void rotate270(); void rotate90(); @@ -280,12 +290,7 @@ public: BC_PBuffer* get_pbuffer(); // Bind the frame's texture to GL_TEXTURE_2D and enable it. -// If a texture_unit is supplied, the texture unit is made active -// and the commands are run in the right sequence to -// initialize it to our preferred specifications. - void bind_texture(int texture_unit = -1); - - + void bind_texture(int texture_unit, int nearest=0); // Create a frustum with 0,0 in the upper left and w,-h in the bottom right. // Set preferred opengl settings. @@ -293,6 +298,11 @@ public: // Calls init_screen with the current frame's dimensions. void init_screen(); +// color used by clear_frame, default -1 (unset) which clears to BLACK + void set_clear_color(int color, int alpha); + int get_clear_color(); + int get_clear_alpha(); + // Compiles and links the shaders into a program. // Adds the program with put_shader. // Returns the program handle. @@ -339,16 +349,20 @@ public: void copy_stacks(VFrame *src); // Updates the params with values from src void copy_params(VFrame *src); - // This clears the stacks and the param table void clear_stacks(); - virtual int draw_pixel(int x, int y); - int pixel_rgb, pixel_yuv, stipple; +// pixel drawing + virtual int draw_pixel(float x, float y, float a=1.f); + virtual int draw_pixel(float x, float y, float frac, int axis); + void set_draw_alpha(float a); + void set_draw_flags(int flags); + int pixel_rgb, pixel_yuv, stipple, draw_flags; + float draw_alpha; - void set_pixel_color(int rgb); + void set_pixel_color(int rgb, int a=0xff); void set_stiple(int mask); - void draw_line(int x1, int y1, int x2, int y2); + void draw_line(float x1, float y1, float x2, float 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); @@ -434,6 +448,8 @@ private: unsigned char *a; // Dimensions of frame int w, h; +// color used by clear_frame + int clear_color, clear_alpha; // Info for reading png images const unsigned char *image; long image_offset;