//
// PTexture.cc for pekwm
// Copyright (C) 2004 Claes Nasten <pekdon{@}pekdon{.}net>
//
// This program is licensed under the GNU GPL.
// See the LICENSE file for more information.
//

#include "../config.h"

#ifndef _PTEXTURE_HH_
#define _PTEXTURE_HH_

#include "pekwm.hh"

class PTexture {
public:
	enum Type {
		TYPE_SOLID, TYPE_SOLID_RAISED,
		TYPE_IMAGE, TYPE_EMPTY, TYPE_NO
	};

	PTexture(Display *dpy) : _dpy(dpy), _ok(false), _width(0), _height(0), _type(PTexture::TYPE_NO) { }
	virtual ~PTexture(void) { }

	virtual void render(Drawable draw, int x, int y, uint width, uint height) { }
	virtual Pixmap getMask(uint width, uint height, bool &do_free) { return None; }

	inline bool isOk(void) const { return _ok; }
	inline uint getWidth(void) const { return _width; }
	inline uint getHeight(void) const { return _height; }
	inline PTexture::Type getType(void) const { return _type; }

	inline void setWidth(uint width) { _width = width; }
	inline void setHeight(uint height) { _height = height; }

protected:
	Display *_dpy;

	bool _ok; // Texture successfully loaded
	uint _width, _height; // for images etc, 0 for infinite like in stretch
	PTexture::Type _type; // Type of texture
};

#endif // _PTEXTURE_HH_


syntax highlighted by Code2HTML, v. 0.9.1