Files
Work/mixer/Graphic.hpp
2024-08-07 09:16:27 -04:00

85 lines
2.2 KiB
C++

#ifndef _MIXER_GRAPHIC_HPP_
#define _MIXER_GRAPHIC_HPP_
#ifndef _COMMON_WINDOW_HPP_
#include <common/window.hpp>
#endif
#ifndef _COMMON_SMARTPOINTER_HPP_
#include <common/pointer.hpp>
#endif
#ifndef _COMMON_FONT_HPP_
#include <common/font.hpp>
#endif
#ifndef _COMMON_RECTANGLE_HPP_
#include <common/rect.hpp>
#endif
class ResBitmap;
class DIBitmap;
class PureDevice;
class Graphic : public Window
{
public:
Graphic(GUIWindow &parentWnd,const String &strBitmapName,UINT controlID,UINT extraStyles=0,const Rect &initRect=Rect(1,1,0,0),const Font &bannerFont=Font("Times New Roman",20,Font::PitchVariable|Font::FamilySwiss,Font::WeightNormal));
virtual ~Graphic();
BOOL setCaption(const String &captionString);
const String &getCaption(void)const;
WORD indent(void)const;
void indent(WORD indent);
const Rect &initRect(void)const;
GUIWindow &getParent(void);
protected:
virtual void postPaint(PureDevice &pureDevice);
private:
enum {Indent=15};
Graphic &operator=(const Graphic &someGraphic);
CallbackData::ReturnType createHandler(CallbackData &someCallbackData);
CallbackData::ReturnType paintHandler(CallbackData &someCallbackData);
CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData);
CallbackData::ReturnType sizeHandler(CallbackData &someCallbackData);
CallbackData::ReturnType eraseBackgroundHandler(CallbackData &someCallbackData);
void registerClass(void);
void createWindow(GUIWindow &parentWindow,UINT controlID,UINT extraStyles);
static char szClassName[];
Callback<Graphic> mCreateHandler;
Callback<Graphic> mPaintHandler;
Callback<Graphic> mDestroyHandler;
Callback<Graphic> mSizeHandler;
Callback<Graphic> mEraseBackgroundHandler;
SmartPointer<ResBitmap> mRibbonBitmap;
SmartPointer<DIBitmap> mDIBitmap;
SmartPointer<PureDevice> mPureDevice;
GUIWindow &mParentWnd;
String mCaptionString;
Font mBannerFont;
Rect mInitRect;
WORD mxIndent;
WORD myIndent;
WORD myBorder;
};
inline
WORD Graphic::indent(void)const
{
return mxIndent;
}
inline
void Graphic::indent(WORD indent)
{
mxIndent=indent;
}
inline
GUIWindow &Graphic::getParent(void)
{
return mParentWnd;
}
inline
const Rect &Graphic::initRect(void)const
{
return mInitRect;
}
#endif