#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"
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);
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); }
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;
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;
// 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
int is_unshared() { return type==bmXvImage || type==bmXImage; }
int is_zombie() { return cur_bfr()->is_zombie(); }
- int set_bg_color(int color);
int invert();
};