#ifndef _COMMON_MEASUREITEM_HPP_
#define _COMMON_MEASUREITEM_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif

class MeasureItem : private MEASUREITEMSTRUCT
{
public:
  MeasureItem(void);
	MeasureItem(const MeasureItem &someMeasureItem);
	MeasureItem(const MEASUREITEMSTRUCT &someMEASUREITEMSTRUCT);
	virtual ~MeasureItem();
	MeasureItem &operator=(const MeasureItem &someMeasureItem);
	MeasureItem &operator=(const MEASUREITEMSTRUCT &someMEASUREITEMSTRUCT);
	BOOL operator==(const MeasureItem &someMeasureItem)const;
	BOOL operator==(const MEASUREITEMSTRUCT &someMEASUREITEMSTRUCT)const;
	UINT ctlType(void)const;
	void ctlType(UINT ctlType);
	UINT ctlID(void)const;
	void ctlID(UINT ctlID);
	UINT itemID(void)const;
	void itemID(UINT itemID);
	UINT itemWidth(void)const;
	void itemWidth(UINT itemWidth);
	UINT itemHeight(void)const;
	void itemHeight(UINT itemHeight);
  DWORD itemData(void)const;
	void itemData(DWORD itemData);
private:
  void zeroInit(void);
};

inline
MeasureItem::MeasureItem(void)
{
  zeroInit();
}

inline
MeasureItem::MeasureItem(const MeasureItem &someMeasureItem)
{
  *this=someMeasureItem;
}

inline
MeasureItem::MeasureItem(const MEASUREITEMSTRUCT &someMEASUREITEMSTRUCT)
{
  *this=someMEASUREITEMSTRUCT;
}

inline
MeasureItem::~MeasureItem()
{
}

inline
MeasureItem &MeasureItem::operator=(const MeasureItem &someMeasureItem)
{
  ctlType(someMeasureItem.ctlType());
	ctlID(someMeasureItem.ctlID());
	itemID(someMeasureItem.itemID());
	itemWidth(someMeasureItem.itemWidth());
	itemHeight(someMeasureItem.itemHeight());
	itemData(someMeasureItem.itemData());
	return *this;
}

inline
MeasureItem &MeasureItem::operator=(const MEASUREITEMSTRUCT &someMEASUREITEMSTRUCT)
{
  ctlType(someMEASUREITEMSTRUCT.CtlType);
	ctlID(someMEASUREITEMSTRUCT.CtlID);
	itemID(someMEASUREITEMSTRUCT.itemID);
	itemWidth(someMEASUREITEMSTRUCT.itemWidth);
	itemHeight(someMEASUREITEMSTRUCT.itemHeight);
	itemData(someMEASUREITEMSTRUCT.itemData);
	return *this;
}

inline
BOOL MeasureItem::operator==(const MeasureItem &someMeasureItem)const
{
  return (ctlType()==someMeasureItem.ctlType()&&
	        ctlID()==someMeasureItem.ctlID()&&
					itemID()==someMeasureItem.itemID()&&
	        itemWidth()==someMeasureItem.itemWidth()&&
	        itemHeight()==someMeasureItem.itemHeight()&&
	        itemData()==someMeasureItem.itemData());
}

inline
BOOL MeasureItem::operator==(const MEASUREITEMSTRUCT &someMEASUREITEMSTRUCT)const
{
  return (MEASUREITEMSTRUCT::CtlType==someMEASUREITEMSTRUCT.CtlType&&
	        MEASUREITEMSTRUCT::CtlID==someMEASUREITEMSTRUCT.CtlID&&
					MEASUREITEMSTRUCT::itemID==someMEASUREITEMSTRUCT.itemID&&
	        MEASUREITEMSTRUCT::itemWidth==someMEASUREITEMSTRUCT.itemWidth&&
	        MEASUREITEMSTRUCT::itemHeight==someMEASUREITEMSTRUCT.itemHeight&&
	        MEASUREITEMSTRUCT::itemData==someMEASUREITEMSTRUCT.itemData);
}

inline
UINT MeasureItem::ctlType(void)const
{
  return MEASUREITEMSTRUCT::CtlType;
}

inline
void MeasureItem::ctlType(UINT ctlType)
{
  MEASUREITEMSTRUCT::CtlType=ctlType;
}

inline
UINT MeasureItem::ctlID(void)const
{
  return MEASUREITEMSTRUCT::CtlID;
}

inline
void MeasureItem::ctlID(UINT ctlID)
{
  MEASUREITEMSTRUCT::CtlID=ctlID;
}

inline
UINT MeasureItem::itemID(void)const
{
	return MEASUREITEMSTRUCT::itemID;
}

inline
void MeasureItem::itemID(UINT itemID)
{
	MEASUREITEMSTRUCT::itemID=itemID;
}

inline
UINT MeasureItem::itemWidth(void)const
{
  return MEASUREITEMSTRUCT::itemWidth;
}

inline
void MeasureItem::itemWidth(UINT itemWidth)
{
  MEASUREITEMSTRUCT::itemWidth=itemWidth;
}

inline
UINT MeasureItem::itemHeight(void)const
{
	return MEASUREITEMSTRUCT::itemHeight;
}

inline
void MeasureItem::itemHeight(UINT itemHeight)
{
	MEASUREITEMSTRUCT::itemHeight=itemHeight;
}

inline
DWORD MeasureItem::itemData(void)const
{
	return MEASUREITEMSTRUCT::itemData;
}

inline
void MeasureItem::itemData(DWORD itemData)
{
	MEASUREITEMSTRUCT::itemData=itemData;
}

inline
void MeasureItem::zeroInit(void)
{
  MEASUREITEMSTRUCT::CtlType=0;
	MEASUREITEMSTRUCT::CtlID=0;
	MEASUREITEMSTRUCT::itemID=0;
	MEASUREITEMSTRUCT::itemWidth=0;
	MEASUREITEMSTRUCT::itemHeight=0;
	MEASUREITEMSTRUCT::itemData=0;
}
#endif