00001 #ifndef BCPIXMAP_H
00002 #define BCPIXMAP_H
00003
00004 #include <X11/Xlib.h>
00005 #ifdef HAVE_XFT
00006 #include <X11/Xft/Xft.h>
00007 #endif
00008 #include "bcbitmap.inc"
00009 #include "bcpixmap.inc"
00010 #include "bcwindowbase.inc"
00011 #include "vframe.inc"
00012
00013 class BC_Pixmap
00014 {
00015 public:
00016 BC_Pixmap(BC_WindowBase *parent_window,
00017 VFrame *frame,
00018 int mode = PIXMAP_OPAQUE,
00019 int icon_offset = 0);
00020 BC_Pixmap(BC_WindowBase *parent_window,
00021 int w,
00022 int h);
00023 ~BC_Pixmap();
00024
00025 friend class BC_WindowBase;
00026
00027 void resize(int w, int h);
00028 void copy_area(int x, int y, int w, int h, int x2, int y2);
00029 int write_drawable(Drawable &pixmap,
00030 int dest_x,
00031 int dest_y,
00032 int dest_w = -1,
00033 int dest_h = -1,
00034 int src_x = -1,
00035 int src_y = -1);
00036 void draw_vframe(VFrame *frame,
00037 int dest_x = 0,
00038 int dest_y = 0,
00039 int dest_w = -1,
00040 int dest_h = -1,
00041 int src_x = 0,
00042 int src_y = 0);
00043 void draw_pixmap(BC_Pixmap *pixmap,
00044 int dest_x = 0,
00045 int dest_y = 0,
00046 int dest_w = -1,
00047 int dest_h = -1,
00048 int src_x = 0,
00049 int src_y = 0);
00050 int get_w();
00051 int get_h();
00052 int get_w_fixed();
00053 int get_h_fixed();
00054 Pixmap get_pixmap();
00055 Pixmap get_alpha();
00056 int use_alpha();
00057 int use_opaque();
00058
00059 private:
00060 int initialize(BC_WindowBase *parent_window, int w, int h, int mode);
00061
00062 BC_WindowBase *parent_window;
00063 BC_WindowBase *top_level;
00064 Pixmap opaque_pixmap, alpha_pixmap;
00065
00066
00067
00068 void *opaque_xft_draw, *alpha_xft_draw;
00069 int w, h;
00070 int mode;
00071 GC alpha_gc, copy_gc;
00072 };
00073
00074
00075 #endif