#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__