#ifndef CPP_LAYOUTER_DECORGADGETS_H
#define CPP_LAYOUTER_DECORGADGETS_H

// Layouter für diverse BOOPSI Gadgets
//
// Autor: Jochen Becher
//
// Historie:
// Version 1.0 am 8. März 94

#ifndef CPP_BOOPSI_DECORGADGETS_H
#include <classes/boopsi/decorgadgets.h>
#endif

#ifndef CPP_BOOPSI_IMAGECLASS_H
#include <classes/boopsi/imageclass.h>
#endif

#ifndef CPP_LAYOUTER_LAYOUTER_H
#include <classes/layouter/layouter.h>
#endif

class LBBevelboxC : public BBevelboxC, public GroupLayoutC {
public:
	LBBevelboxC(WindowC &w, STRPTR Label = NULL, BoopsiImageC * = NULL,
		WORD Width = LAYOUT_AUTOSIZE, WORD Height = LAYOUT_AUTOSIZE,
		struct TagItem *tags = NULL);
	LBBevelboxC(WindowC &w, STRPTR Label, BoopsiImageC *,
		WORD Width, WORD Height, Tag tag1type, ...);
	BOOL layoutWidth();
	BOOL layoutHeight();
	VOID setTop(WORD t) { BBevelboxC::setTop(t); };
	VOID setLeft(WORD l) { BBevelboxC::setLeft(l); };
	VOID setWidth(WORD w);
	VOID setHeight(WORD h);
	WORD top() const { return BBevelboxC::top(); };
	WORD left() const { return BBevelboxC::left(); };
	WORD width() const { return BBevelboxC::width(); };
	WORD height() const { return BBevelboxC::height(); };
	BOOL autoWidth() const { return aWidth; };
	BOOL autoHeight() const { return aHeight; };
	WORD topBorder() const { return BBevelboxC::topBorder(); };
	WORD leftBorder() const { return BBevelboxC::leftBorder(); };
	WORD rightBorder() const { return BBevelboxC::rightBorder(); };
	WORD bottomBorder() const { return BBevelboxC::bottomBorder(); };
	WORD innerTopBorder() const { return 4 + getAttr(BBA_InnerTopBorder); };
	WORD innerBottomBorder() const { return 4 + getAttr(BBA_InnerBottomBorder); };
	WORD innerLeftBorder() const { return 8 + getAttr(BBA_InnerLeftBorder); };
	WORD innerRightBorder() const { return 8 + getAttr(BBA_InnerRightBorder); };
private:
	BOOL aWidth;
	BOOL aHeight;
};

class LBBevellineC : public BBevellineC, public LayoutC {
public:
	LBBevellineC(WindowC &w, STRPTR Label = NULL,
		WORD Width = LAYOUT_AUTOSIZE, WORD Height = LAYOUT_AUTOSIZE,
		struct TagItem *tags = NULL);
	LBBevellineC(WindowC &w, STRPTR Label,
		WORD Width, WORD Height, Tag tag1type, ...);
	BOOL layoutWidth();
	BOOL layoutHeight();
	VOID setTop(WORD t) { BBevellineC::setTop(t); };
	VOID setLeft(WORD l) { BBevellineC::setLeft(l); };
	VOID setWidth(WORD w);
	VOID setHeight(WORD h);
	WORD top() const { return BBevellineC::top(); };
	WORD left() const { return BBevellineC::left(); };
	WORD width() const { return BBevellineC::width(); };
	WORD height() const { return BBevellineC::height(); };
	BOOL autoWidth() const { return aWidth; };
	BOOL autoHeight() const { return aHeight; };
	WORD topBorder() const { return BBevellineC::topBorder(); };
	WORD leftBorder() const { return BBevellineC::leftBorder(); };
	WORD rightBorder() const { return BBevellineC::rightBorder(); };
	WORD bottomBorder() const { return BBevellineC::bottomBorder(); };
private:
	BOOL aWidth;
	BOOL aHeight;
};

#endif
