/******************************************************************************!
 * \file drawable.h
 * \author Sebastien Beaugrand
 * \sa http://beaugrand.chez.com/
 * \copyright CeCILL 2.1 Free Software license
 ******************************************************************************/
#ifndef _X11_DRAWABLE_H_
#define _X11_DRAWABLE_H_

#include <X11/Xlib.h>
#include <X11/Xutil.h>

namespace X11 {

class Display;

class Drawable
{
public:
    Drawable(Display* display, int w, int h);
    Drawable(Display* display, int x, int y, int w, int h);
    explicit Drawable(Display* display);
    virtual ~Drawable() { }

    virtual void setPosition(int x, int y);
    virtual void setSize(int w, int h);
    void getPosition(int* x, int* y);

    Display* getDisplay() { return mDisplay; }
    int getWidth() { return mIndic.width; }
    int getHeight() { return mIndic.height; }

    int contains(int x, int y);

private:
    void init(Display* display);

protected:
    Display* mDisplay;
    ::Display* mX11Display;
    GC mGC;
    XSizeHints mIndic;
};

}  // namespace X11

#endif