Files
Work/common/BRUSH.HPP
2024-08-07 09:09:36 -04:00

129 lines
2.2 KiB
C++

#ifndef _COMMON_BRUSH_HPP_
#define _COMMON_BRUSH_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_GDIOBJ_HPP_
#include <common/gdiobj.hpp>
#endif
#ifndef _COMMON_RGBCOLOR_HPP_
#include <common/rgbcolor.hpp>
#endif
class PureBitmap;
class ResBitmap;
class Brush
{
public:
enum HatchStyle{HDiag=HS_BDIAGONAL,HCross=HS_CROSS,HDiagCross=HS_DIAGCROSS,HFDiag=HS_FDIAGONAL,HHoriz=HS_HORIZONTAL,HVert=HS_VERTICAL};
Brush(void);
Brush(RGBColor rgbColor);
Brush(int red,int green,int blue);
Brush(PureBitmap &pureBitmap);
Brush(ResBitmap &resBitmap);
virtual ~Brush();
operator GDIObj(void);
bool createBrush(const RGBColor &rgbColor);
bool createNullBrush(void);
bool createPatternBrush(PureBitmap &pureBitmap);
bool createHatchBrush(HatchStyle hatchStyle,const RGBColor &rgbColor);
bool isOkay(void)const;
HBRUSH getBrush(void)const;
const RGBColor &getColor(void)const;
private:
Brush(const Brush &someBrush);
Brush &operator=(const Brush &someBrush);
void destroy(void);
HBRUSH mhBrush;
RGBColor mBrushColor;
};
inline
Brush::Brush(void)
: mhBrush(0)
{
}
inline
Brush::Brush(const Brush &/*someBrush*/)
: mhBrush(0)
{ // private implementation
}
inline
Brush::Brush(int red,int green,int blue)
: mhBrush(0)
{
mhBrush=::CreateSolidBrush((COLORREF)RGBColor(red,green,blue));
}
inline
Brush::Brush(RGBColor rgbColor)
: mhBrush(0)
{
mBrushColor=rgbColor;
mhBrush=::CreateSolidBrush((COLORREF)rgbColor);
}
inline
Brush::~Brush()
{
destroy();
}
inline
Brush &Brush::operator=(const Brush &/*someBrush*/)
{ // private implementation
return *this;
}
inline
Brush::operator GDIObj(void)
{
return (GDIObj)mhBrush;
}
inline
void Brush::destroy(void)
{
if(mhBrush){::DeleteObject(mhBrush);mhBrush=0;}
}
inline
bool Brush::createBrush(const RGBColor &rgbColor)
{
destroy();
mBrushColor=rgbColor;
mhBrush=::CreateSolidBrush((COLORREF)rgbColor);
return isOkay();
}
inline
bool Brush::createNullBrush(void)
{
destroy();
mhBrush=(HBRUSH)::GetStockObject(NULL_BRUSH);
return isOkay();
}
inline
const RGBColor &Brush::getColor(void)const
{
return mBrushColor;
}
inline
HBRUSH Brush::getBrush(void)const
{
return mhBrush;
}
inline
bool Brush::isOkay(void)const
{
return (mhBrush?TRUE:FALSE);
}
#endif