Initial
This commit is contained in:
144
nntp/IMGVIEW.CPP
Normal file
144
nntp/IMGVIEW.CPP
Normal file
@@ -0,0 +1,144 @@
|
||||
#include <nntp/imgview.hpp>
|
||||
#include <statbar/statbarx.hpp>
|
||||
#include <common/crsctrl.hpp>
|
||||
|
||||
ImageView::ImageView(void)
|
||||
{
|
||||
mCreateHandler.setCallback(this,&ImageView::createHandler);
|
||||
mSizeHandler.setCallback(this,&ImageView::sizeHandler);
|
||||
mPaintHandler.setCallback(this,&ImageView::paintHandler);
|
||||
mHorizontalScrollHandler.setCallback(this,&ImageView::horizontalScrollHandler);
|
||||
mVerticalScrollHandler.setCallback(this,&ImageView::verticalScrollHandler);
|
||||
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
insertHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
||||
insertHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
insertHandler(VectorHandler::VerticalScrollHandler,&mVerticalScrollHandler);
|
||||
insertHandler(VectorHandler::HorizontalScrollHandler,&mHorizontalScrollHandler);
|
||||
}
|
||||
|
||||
ImageView::~ImageView()
|
||||
{
|
||||
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
removeHandler(VectorHandler::SizeHandler,&mSizeHandler);
|
||||
removeHandler(VectorHandler::PaintHandler,&mPaintHandler);
|
||||
removeHandler(VectorHandler::VerticalScrollHandler,&mVerticalScrollHandler);
|
||||
removeHandler(VectorHandler::HorizontalScrollHandler,&mHorizontalScrollHandler);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType ImageView::createHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mScrollInfo.hwndOwner(*this);
|
||||
setTitle("None");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType ImageView::sizeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mScrollInfo.handleSize(someCallbackData);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType ImageView::paintHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
CursorControl cursorControl;
|
||||
|
||||
cursorControl.waitCursor(TRUE);
|
||||
mMutex.requestMutex();
|
||||
if(!mJPGImage.isOkay())
|
||||
{
|
||||
mMutex.releaseMutex();
|
||||
cursorControl.waitCursor(FALSE);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
PaintInformation &paintInfo=*((PaintInformation*)someCallbackData.lParam());
|
||||
PureDevice &paintDevice=(PureDevice&)paintInfo;
|
||||
if(mScrollInfo.sizeEvent())
|
||||
{
|
||||
mScrollInfo.sizeEvent(FALSE);
|
||||
mJPGImage.draw(paintDevice,Rect(0,0,mJPGImage.width(),mJPGImage.height()),Point(mScrollInfo.currScrollx(),mScrollInfo.currScrolly()));
|
||||
}
|
||||
if(mScrollInfo.scrollEvent()||(!mScrollInfo.sizeEvent()&&!mScrollInfo.scrollEvent()))
|
||||
{
|
||||
Rect paintRect(paintInfo.paintRect());
|
||||
mScrollInfo.scrollEvent(FALSE);
|
||||
paintRect.right(paintRect.right()-paintRect.left());
|
||||
paintRect.bottom(paintRect.bottom()-paintRect.top());
|
||||
mJPGImage.draw(paintDevice,paintRect,Point(paintRect.left()+mScrollInfo.currScrollx(),paintRect.top()+mScrollInfo.currScrolly()));
|
||||
}
|
||||
mMutex.releaseMutex();
|
||||
cursorControl.waitCursor(FALSE);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType ImageView::verticalScrollHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mScrollInfo.handleVerticalScroll(someCallbackData);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType ImageView::horizontalScrollHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
mScrollInfo.handleHorizontalScroll(someCallbackData);
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
BOOL ImageView::open(const String &strPathFileName)
|
||||
{
|
||||
String strString;
|
||||
CursorControl cursorControl;
|
||||
BOOL result;
|
||||
|
||||
if(strPathFileName.isNull())return FALSE;
|
||||
cursorControl.waitCursor(TRUE);
|
||||
mMutex.requestMutex();
|
||||
PureDevice pureDevice(*this);
|
||||
result=mJPGImage.decode(strPathFileName,pureDevice);
|
||||
mMutex.releaseMutex();
|
||||
cursorControl.waitCursor(FALSE);
|
||||
if(!result)return FALSE;
|
||||
mScrollInfo.scrollableObjectDimensions(mJPGImage.width(),mJPGImage.height());
|
||||
setTitle(strPathFileName);
|
||||
::sprintf(strString,"%s (%dx%d)",(LPSTR)strPathFileName,mJPGImage.width(),mJPGImage.height());
|
||||
invalidate();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void ImageView::setTitle(const String &strTitle)
|
||||
{
|
||||
String strCaption;
|
||||
String strString;
|
||||
|
||||
windowText(strCaption);
|
||||
strString=strCaption;
|
||||
strCaption=strCaption.betweenString(0,' ');
|
||||
if(strCaption.isNull())strCaption=strString;
|
||||
strCaption+=String(" - [")+strTitle+String("]");
|
||||
setCaption(strCaption);
|
||||
}
|
||||
|
||||
BOOL ImageView::fitToWindow(void)
|
||||
{
|
||||
PureDevice pureDevice(*this);
|
||||
CursorControl cursorControl;
|
||||
|
||||
if(!mJPGImage.isOkay())return false;
|
||||
cursorControl.waitCursor(true);
|
||||
mJPGImage.resample(pureDevice,width());
|
||||
mScrollInfo.scrollableObjectDimensions(mJPGImage.width(),mJPGImage.height());
|
||||
cursorControl.waitCursor(false);
|
||||
invalidate();
|
||||
return true;
|
||||
}
|
||||
|
||||
// *** virtuals
|
||||
|
||||
void ImageView::preRegister(WNDCLASS &wndClass)
|
||||
{
|
||||
wndClass.style|=CS_SAVEBITS|CS_OWNDC;
|
||||
wndClass.hbrBackground=(HBRUSH)::GetStockObject(WHITE_BRUSH);
|
||||
}
|
||||
|
||||
void ImageView::preCreate(MDICREATESTRUCT &createStruct)
|
||||
{
|
||||
createStruct.style|=WS_VSCROLL|WS_HSCROLL;
|
||||
}
|
||||
Reference in New Issue
Block a user