improve delays created by vicon drawing locks, reset_cache segv fix, gang track toolt...
[goodguy/cinelerra.git] / cinelerra-5.1 / guicast / bcbitmap.h
index 221248b9107046a65fe73adef1f857c7ad97c9d4..95b586842f53ec7e4c7815946d76264dd313109f 100644 (file)
 #include <sys/ipc.h>
 #include <sys/shm.h>
 #include <X11/extensions/XShm.h>
+#ifdef HAVE_XV
 #include <X11/extensions/Xvlib.h>
+#else
+typedef struct _XvImage XvImage;
+#endif
 
 #include "bcwindowbase.inc"
 #include "bcbitmap.inc"
@@ -58,8 +62,10 @@ class BC_BitmapImage : public ListItem<BC_BitmapImage> {
        friend class BC_Bitmap;
        friend class BC_XImage;
        friend class BC_XShmImage;
+#ifdef HAVE_XV
        friend class BC_XvImage;
        friend class BC_XvShmImage;
+#endif
        friend class BC_ActiveBitmaps;
 protected:
        int read_frame_rgb(VFrame* frame);
@@ -122,6 +128,7 @@ public:
        int read_drawable(Drawable &pixmap, int source_x, int source_y);
 };
 
+#ifdef HAVE_XV
 class BC_XvImage : public BC_BitmapImage {
        long xv_offset(int i) { return xv_image->offsets[i]; }
        unsigned char* xv_plane(int i) { return get_data() + xv_offset(i); }
@@ -151,15 +158,17 @@ public:
                int source_x, int source_y, int source_w, int source_h,
                int dest_x, int dest_y, int dest_w, int dest_h);
 };
-
+#endif
 
 
 class BC_Bitmap
 {
        friend class BC_XImage;
        friend class BC_XShmImage;
+#ifdef HAVE_XV
        friend class BC_XvImage;
        friend class BC_XvShmImage;
+#endif
        friend class BC_BitmapImage;
        friend class BC_ActiveBitmaps;
        int buffer_count, max_buffer_count;
@@ -178,8 +187,6 @@ class BC_Bitmap
        long best_buffer_size();
        int need_shm();
 
-// Background color for using pngs
-       int bg_color;
 // Override top_level for small bitmaps
        int use_shm;
        BC_WindowBase *top_level;
@@ -203,10 +210,13 @@ public:
 // transfer VFrame
        int read_frame(VFrame *frame,
                int in_x, int in_y, int in_w, int in_h,
-               int out_x, int out_y, int out_w, int out_h);
+               int out_x, int out_y, int out_w, int out_h,
+               int bg_color);
 // x1, y1, x2, y2 dimensions of output area
        int read_frame(VFrame *frame,
                int x1, int y1, int x2, int y2);
+       int read_frame(VFrame *frame,
+               int x1, int y1, int x2, int y2, int bg_color);
 // Reset bitmap to match the new parameters
        int match_params(int w, int h, int color_model, int use_shm);
 // Test if bitmap already matches parameters
@@ -258,7 +268,6 @@ public:
        int is_unshared() { return type==bmXvImage  || type==bmXImage; }
        int is_zombie() { return cur_bfr()->is_zombie(); }
 
-       int set_bg_color(int color);
        int invert();
 };