#pragma once

class Attributes
{
public:
	Attributes();
	Attributes& operator=(Attributes& x);
	void Load(const char * base);

	Image * image;
	int imagex, imagey;
	Color bgcolor, textcolor, bordercolor;
	REAL borderwidth;
	float opacity;

	int drawtext;
};
// This class maintains information about how most things look.
// It is a sort of visual quanta.
enum AppearanceState {normal, selected, mouseover, pressed};

class Appearance {
public:
	Appearance(void);
	~Appearance(void);
	virtual void SetState(AppearanceState s); 
	virtual void Set(Appearance& x);
	virtual Appearance& operator=(Appearance& x);
	virtual void Load(const char * base);
	virtual void Draw(Graphics& graphics);

	Attributes normal;
	Attributes pressed;
	Attributes selected;
	Attributes mouseover;
	Attributes * current; // points to the currently active Attribute set

	int taborder;
	
	
	Point location;
	Size size;

	int fromright;
	int frombottom;

	// text
	std::wstring description;
	std::wstring fontname;
	float fontsize; // in printer's point
	PointF textlocation;
	std::wstring text;

	AppearanceState state;
};
