ultimatepp/uppdev/GatoFax/TiffCtrl.cpp
cxl 351994a6cc Adding uppdev....
git-svn-id: svn://ultimatepp.org/upp/trunk@328 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2008-08-15 08:36:24 +00:00

186 lines
4.4 KiB
C++

#include "TiffCtrl.h"
///////////////////////////////////////////////////////////////////////////////////////////////
// constructor
TiffCtrl::TiffCtrl()
{
// creates child controls and inserts them in splitter
// sets splitter position
// sets to not opened
isOpened = false;
// clears raster object
raster.Clear();
// sets zoom mode to full page
zoomType = ZOOM_WIDTH;
// initializes zoom factor (should not be necessary, but...)
zoomFactor = 100;
// initializes pan position to left corner
panPosition = 0;
// signals image change to thumbs and view
thumbs->Layout();
view->Layout();
thumbs = new TiffThumbsCtrl(this);
view = new TiffViewCtrl(this);
hSplitter << *thumbs << *view ;
hSplitter.Horz().SetPos(2000);
Add(hSplitter);
} // END Constructor class TiffCtrl
///////////////////////////////////////////////////////////////////////////////////////////////
// destructor
TiffCtrl::~TiffCtrl()
{
// removes associated controls
delete thumbs;
delete view;
// closes the image stream
Close();
} // END Destructor class TiffCtrl
///////////////////////////////////////////////////////////////////////////////////////////////
// control paint routine
void TiffCtrl::Paint(Draw &d)
{
Ctrl::Paint(d);
/*
ImageEncoder t;
raster->SeekPage(pageno);
Rescale(t, GetSize(), *raster, raster->GetSize());
w.DrawImage(0, 0, t);
*/
} // END TiffCtrl::Paint()
///////////////////////////////////////////////////////////////////////////////////////////////
// opens an image file in control
bool TiffCtrl::Open(String const &fileName)
{
// if already opened, closes current stream
if(isOpened)
Close();
// opens file and associate to raster
imageStream.Open(fileName);
raster = StreamRaster::OpenAny(imageStream);
// loads pages in array of memoryrasters
pages.Clear();
for(curPage = 0; curPage < raster->GetPageCount(); curPage++)
{
raster->SeekPage(curPage);
pages.Add().Load(*raster);
}
curPage = 0;
// signals that stream is opened
isOpened = true;
// signal page changed to thumbs and view
thumbs->Layout();
view->Layout();
return true;
} // END TiffCtrl::Open()
///////////////////////////////////////////////////////////////////////////////////////////////
// closes image file and frees resources
void TiffCtrl::Close()
{
imageStream.Close();
// signals that stream is closed
isOpened = false;
// frees buffered pages
pages.Clear();
// signal page changed to thumbs and view
thumbs->Layout();
view->Layout();
} // END TiffCtrl::Close()
///////////////////////////////////////////////////////////////////////////////////////////////
// sets current active page
int TiffCtrl::setPage(int page)
{
return 0;
} // END TiffCtrl::setPage()
///////////////////////////////////////////////////////////////////////////////////////////////
// sets thumbnails on/off
bool TiffCtrl::ShowThumbnails(bool s)
{
return false;
} // END TiffCtrl::ShowThumbnails()
///////////////////////////////////////////////////////////////////////////////////////////////
// sets zoom to page width
void TiffCtrl::ZoomWidth()
{
// sets mode to page width
zoomType = ZOOM_WIDTH;
// signals layout change
view->Layout();
} // END TiffCtrl::ZoomWidth()
///////////////////////////////////////////////////////////////////////////////////////////////
// sets zoom to full page
void TiffCtrl::ZoomPage()
{
// sets mode to page height
zoomType = ZOOM_PAGE;
// signals layout change
view->Layout();
} // END TiffCtrl::ZoomPage()
///////////////////////////////////////////////////////////////////////////////////////////////
// sets the zoom to an arbitrary value - in percentage from original size
void TiffCtrl::Zoom(int z)
{
// checks and adjusts zoom factor
if(z <= 0) z = 1;
if(z > 150) z = 150;
// sets it
zoomType = ZOOM_NORMAL;
zoomFactor = z ;
// signals layout change
view->Layout();
} // END TiffCtrl::Zoom()
///////////////////////////////////////////////////////////////////////////////////////////////
// pans the image
void TiffCtrl::Pan(int Horz, int Vert)
{
} // END TiffCtrl::Pan()
///////////////////////////////////////////////////////////////////////////////////////////////
// gets page count
int TiffCtrl::GetPageCount()
{
if(isOpened)
return raster->GetPageCount();
else
return 0;
} // END TiffCtrl::GetPageCount()