Initial
This commit is contained in:
134
mixer/Graphic.cpp
Normal file
134
mixer/Graphic.cpp
Normal file
@@ -0,0 +1,134 @@
|
||||
#include <mixer/graphic.hpp>
|
||||
#include <common/resbmp.hpp>
|
||||
#include <common/dib.hpp>
|
||||
|
||||
char Graphic::szClassName[]="Graphic";
|
||||
|
||||
Graphic::Graphic(GUIWindow &parentWnd,const String &strBitmapName,UINT controlID,UINT extraStyles,const Rect &initRect,const Font &bannerFont)
|
||||
: mBannerFont(bannerFont), mParentWnd(parentWnd), mxIndent(Indent),
|
||||
myBorder(::GetSystemMetrics(SM_CYDLGFRAME)<<1), mInitRect(initRect)
|
||||
{
|
||||
mRibbonBitmap=new ResBitmap(strBitmapName);
|
||||
mRibbonBitmap.disposition(PointerDisposition::Delete);
|
||||
mPaintHandler.setCallback(this,&Graphic::paintHandler);
|
||||
mCreateHandler.setCallback(this,&Graphic::createHandler);
|
||||
mDestroyHandler.setCallback(this,&Graphic::destroyHandler);
|
||||
mSizeHandler.setCallback(this,&Graphic::sizeHandler);
|
||||
mEraseBackgroundHandler.setCallback(this,&Graphic::eraseBackgroundHandler);
|
||||
insertHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
insertHandler(VectorHandler::EraseBackgroundHandler,&mEraseBackgroundHandler);
|
||||
mParentWnd.insertHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
||||
registerClass();
|
||||
createWindow(parentWnd,controlID,extraStyles);
|
||||
}
|
||||
|
||||
Graphic::~Graphic()
|
||||
{
|
||||
removeHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
removeHandler(VectorHandler::EraseBackgroundHandler,&mEraseBackgroundHandler);
|
||||
mParentWnd.removeHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
||||
}
|
||||
|
||||
Graphic &Graphic::operator=(const Graphic &/*someGraphic*/)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
void Graphic::registerClass(void)
|
||||
{
|
||||
HINSTANCE hProcessInstance(processInstance());
|
||||
WNDCLASS wndClass;
|
||||
|
||||
if(::GetClassInfo(hProcessInstance,szClassName,(WNDCLASS FAR *)&wndClass))return;
|
||||
wndClass.style =CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS|CS_OWNDC;
|
||||
wndClass.lpfnWndProc =(WNDPROC)Window::WndProc;
|
||||
wndClass.cbClsExtra =0;
|
||||
wndClass.cbWndExtra =sizeof(Graphic*);
|
||||
wndClass.hInstance =hProcessInstance;
|
||||
wndClass.hIcon =0;
|
||||
wndClass.hCursor =::LoadCursor(NULL,IDC_ARROW);
|
||||
wndClass.hbrBackground =(HBRUSH)::GetStockObject(BLACK_BRUSH);
|
||||
wndClass.lpszMenuName =0;
|
||||
wndClass.lpszClassName =szClassName;
|
||||
::RegisterClass(&wndClass);
|
||||
}
|
||||
|
||||
void Graphic::createWindow(GUIWindow &parentWindow,UINT controlID,UINT extraStyles)
|
||||
{
|
||||
if(!mInitRect.right())mInitRect.right(mRibbonBitmap->width());
|
||||
if(!mInitRect.bottom())mInitRect.bottom(mRibbonBitmap->height());
|
||||
::CreateWindowEx(0,(LPSTR)szClassName,(LPSTR)0,
|
||||
WS_CHILD|WS_CLIPCHILDREN|WS_CLIPSIBLINGS|extraStyles,mInitRect.left(),mInitRect.top(),mInitRect.right(),mInitRect.bottom(),
|
||||
|
||||
|
||||
parentWindow,(HMENU)controlID,processInstance(),(LPSTR)(Window*)this);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType Graphic::createHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
if(!mRibbonBitmap->isOkay())return (CallbackData::ReturnType)FALSE;
|
||||
myIndent=mBannerFont.charHeight()/4;
|
||||
mPureDevice=new PureDevice(*this);
|
||||
mPureDevice.disposition(PointerDisposition::Delete);
|
||||
mDIBitmap=new DIBitmap(*mPureDevice,*mRibbonBitmap,*mRibbonBitmap);
|
||||
mDIBitmap.disposition(PointerDisposition::Delete);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType Graphic::destroyHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType Graphic::eraseBackgroundHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)TRUE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType Graphic::sizeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
if(!mInitRect.right())width(mParentWnd.width());
|
||||
myIndent=mBannerFont.charHeight()/4;
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType Graphic::paintHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
if(!mRibbonBitmap.isOkay())return (CallbackData::ReturnType)FALSE;
|
||||
PaintInformation *pPaintInfo=(PaintInformation*)someCallbackData.lParam();
|
||||
mDIBitmap->copyBits(mRibbonBitmap->ptrData(),mRibbonBitmap->imageExtent());
|
||||
mDIBitmap->usePalette(*mPureDevice,TRUE);
|
||||
mDIBitmap->stretchBlt(*mPureDevice,Rect(0,0,width(),height()));
|
||||
mDIBitmap->usePalette(*mPureDevice,FALSE);
|
||||
mPureDevice->select((GDIObj)mBannerFont,TRUE);
|
||||
mPureDevice->setTextColor(RGBColor(255,255,255));
|
||||
mPureDevice->setBkMode(PureDevice::Transparent);
|
||||
mPureDevice->textOut(indent(),myIndent,mCaptionString);
|
||||
mPureDevice->select((GDIObj)mBannerFont,FALSE);
|
||||
postPaint(*mPureDevice);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
BOOL Graphic::setCaption(const String &captionString)
|
||||
{
|
||||
mCaptionString=captionString;
|
||||
invalidate(FALSE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
const String &Graphic::getCaption(void)const
|
||||
{
|
||||
return mCaptionString;
|
||||
}
|
||||
|
||||
// **************************************************************************************************
|
||||
// virtuals
|
||||
|
||||
void Graphic::postPaint(PureDevice &pureDevice)
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user