118 lines
3.0 KiB
C
118 lines
3.0 KiB
C
|
#ifndef __SFFDOC_H__
|
||
|
#define __SFFDOC_H__
|
||
|
//
|
||
|
// This file is part of sffview, a program to view structured fax files (sff)
|
||
|
//
|
||
|
// Copyright (C) 1998-2012 Peter Schaefer-Hutter and contributors ("THE AUTHORS")
|
||
|
//
|
||
|
// Permission to use, copy, modify, distribute, and sell this software and
|
||
|
// its documentation for any purpose is hereby granted without fee.
|
||
|
//
|
||
|
// THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
|
||
|
// EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
|
||
|
// WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||
|
//
|
||
|
// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL,
|
||
|
// INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY
|
||
|
// DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
||
|
// WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY
|
||
|
// THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE
|
||
|
// OR PERFORMANCE OF THIS SOFTWARE.
|
||
|
//
|
||
|
// Contributor(s):
|
||
|
// None
|
||
|
//
|
||
|
// You can contact the original author by email at peter.schaefer@gmx.de.
|
||
|
//
|
||
|
// I'm always pleased to hear that somebody is actually using my software.
|
||
|
// If you can manage it, e-mail me a quick notice. Thanks!
|
||
|
//
|
||
|
/*-RCS-Info----------------------------------------------------
|
||
|
|
||
|
$Id: sffdoc.h,v 1.3 2008/03/21 13:47:01 pschaefer Exp $
|
||
|
|
||
|
---RCS-Info--------------------------------------------------*/
|
||
|
|
||
|
#include "wx/docview.h"
|
||
|
|
||
|
class CSffFile;
|
||
|
|
||
|
class CBitmapDecoder
|
||
|
{
|
||
|
protected:
|
||
|
CBitSink m_sink;
|
||
|
wxUint8 m_abBuffer[5120];
|
||
|
wxUint8 *m_pBitmap;
|
||
|
wxUint32 m_Width;
|
||
|
wxUint32 m_WidthInBytes;
|
||
|
wxUint32 m_Height;
|
||
|
wxUint32 m_Scanline;
|
||
|
|
||
|
public:
|
||
|
CBitmapDecoder(wxUint32 aWidth, wxUint32 aHeight);
|
||
|
~CBitmapDecoder();
|
||
|
|
||
|
void Reset();
|
||
|
|
||
|
void WriteLine();
|
||
|
void BlankLine();
|
||
|
|
||
|
CBitSink& GetBitSink();
|
||
|
const wxUint8 *GetBitmap();
|
||
|
};
|
||
|
|
||
|
class SffDocument: public wxDocument
|
||
|
{
|
||
|
DECLARE_DYNAMIC_CLASS(SffDocument)
|
||
|
|
||
|
protected:
|
||
|
CSffFile *m_pSffFile;
|
||
|
CBitmapDecoder *m_pDecoder;
|
||
|
|
||
|
wxBitmap *m_pPageBmp;
|
||
|
int m_nPageIdx;
|
||
|
|
||
|
void CreatePageBitmap();
|
||
|
|
||
|
public:
|
||
|
SffDocument(void);
|
||
|
~SffDocument(void);
|
||
|
|
||
|
int GetPageCount();
|
||
|
int GetCurrentPageIdx();
|
||
|
|
||
|
void NextPage();
|
||
|
void PrevPage();
|
||
|
|
||
|
wxUint32 GetHeight();
|
||
|
wxUint32 GetWidth();
|
||
|
|
||
|
wxBitmap *GetPageBitmap() { return m_pPageBmp; };
|
||
|
wxBitmap *GetPageBitmap(int nPage);
|
||
|
|
||
|
virtual bool OnOpenDocument(const wxString& filename);
|
||
|
};
|
||
|
|
||
|
class SffView;
|
||
|
|
||
|
class SffPrintout : public wxPrintout
|
||
|
{
|
||
|
protected:
|
||
|
SffDocument *m_Doc;
|
||
|
int m_nPageCount;
|
||
|
|
||
|
public:
|
||
|
SffPrintout(SffDocument *doc = NULL);
|
||
|
|
||
|
bool OnPrintPage(int page);
|
||
|
bool HasPage(int page);
|
||
|
bool OnBeginDocument(int startPage, int endPage);
|
||
|
void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo);
|
||
|
|
||
|
private:
|
||
|
DECLARE_DYNAMIC_CLASS(SffPrintout)
|
||
|
DECLARE_NO_COPY_CLASS(SffPrintout)
|
||
|
};
|
||
|
|
||
|
#endif // __SFFDOC_H__
|