source: trunk/Lucide/SOURCE/gui/docViewer.h @ 2

Last change on this file since 2 was 2, checked in by Eugene Romanenko, 15 years ago

First import

File size: 4.0 KB
Line 
1#ifndef __DOCVIEWER_H
2#define __DOCVIEWER_H
3
4#include <vector>
5using namespace std;
6
7#include <ludoc.xh>
8
9class ProgressDlg;
10
11struct LuSize  { double x, y; };
12
13struct PageDrawArea
14{
15    long   pagenum;
16    LuSize startpos;
17    RECTL  drawrect;
18};
19
20typedef vector<PageDrawArea> DrawAreas;
21
22
23class DocumentViewer
24{
25    public:
26        DocumentViewer( HAB _hab, HWND hWndFrame );
27        virtual ~DocumentViewer();
28
29        HWND getHWND() { return hWndDocFrame; }
30
31        void setDocument( LuDocument *_doc );
32        void goToPage( long page );
33        long getCurrentPage() { return currentpage; }
34        void setZoom( double _zoom );
35        double getZoom() { return zoom; }
36        double getRealZoom() { return realzoom; }
37        void copyToClipbrd();
38        void searchDocument( const char *_searchString, bool _caseSensitive,
39                             bool _continueSearch );
40
41        static void registerClass( HAB hab );
42        // Internal stuffs
43    private:
44
45        void drawPage();
46        void adjustSize();
47
48        MRESULT vertScroll( HWND hwnd, MPARAM mp2, HRGN hrgn );
49        MRESULT horizScroll( HWND hwnd, MPARAM mp2, HRGN hrgn );
50        void wmSize( HWND hwnd, MPARAM mp2 );
51        void wmPaint( HWND hwnd );
52        void wmPaintCont( HWND hwnd );
53        void wmPaintAsynch( HWND hwnd );
54        BOOL wmMouseMove( HWND hwnd, SHORT xpos, SHORT ypos );
55        BOOL wmClick( HWND hwnd, SHORT xpos, SHORT ypos );
56        BOOL wmChar( HWND hwnd, MPARAM mp1, MPARAM mp2 );
57        void winPosToDocPos( PPOINTL startpoint, PPOINTL endpoint, LuRectangle *r );
58        void docPosToWinPos( LuRectangle *r, PRECTL rcl );
59        HRGN rectsToRegion( HPS hps, LuDocument_LuRectSequence *rects, bool useScale );
60        void drawSelection( HPS hps, PRECTL r );
61        void scrollToPos( HWND hwnd, HRGN hrgn, SHORT xpos, SHORT ypos, bool withSelection );
62        void freeFoundrects();
63        void drawFound( HPS hps, PRECTL r );
64        DrawAreas *foundDrawAreas( PRECTL r );
65        void foundCurrentPage();
66        long posToPagenum( double yPos, double *pageRest );
67
68        static MRESULT EXPENTRY docViewProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 );
69        static void searchthread( void *p );
70        static void searchabort( void *p );
71        static void drawthread( void *p );
72        static long _System asynchCallbackFnDraw( void *data );
73        static long _System asynchCallbackFnAbort( void *data );
74
75        LuDocument *doc;
76        HAB hab;
77        HWND hMainFrame;
78        HWND hWndDocFrame;
79        HWND hWndDoc;
80        HWND hWndHscroll;
81        HWND hWndVscroll;
82        SHORT sHscrollMax;
83        SHORT sVscrollMax;
84        SHORT sHscrollPos;
85        SHORT sVscrollPos;
86        LONG  sVscrollInc;
87        LONG  sHscrollInc;
88        ULONG realVscrollMax;
89        LONG  cxClient;
90        LONG  cyClient;
91        LONG  spos_x;
92        LONG  spos_y;
93        HPS hpsBuffer;
94        HDC hdcBuffer;
95        Environment *ev;
96        LuPixbuf *pixbuf;
97        double width, height, zoom, realzoom, fullwidth, fullheight;
98        long totalpages, currentpage;
99        ProgressDlg *progressDlg;
100
101        // continuous view
102        bool continuous;
103        LuSize *pagesizes;
104        SHORT VScrollStep;
105        DrawAreas *drawareas;
106
107        // asynch draw
108        bool enableAsynchDraw;
109        RECTL drawRect;
110        HMTX todrawAccess;
111        HEV  haveDraw;
112        bool abortAsynch;
113        bool termdraw;
114        TID  drawThreadId;
115
116        // selection
117        bool mousePressed;
118        POINTL selectionStart;
119        POINTL selectionEnd;
120        LuRectangle selection;
121        LuDocument_LuRectSequence *selrects;
122
123        // links
124        LuDocument_LuLinkMapSequence *links;
125        HPOINTER handptr;
126
127        // search
128        LuDocument_LuRectSequence **foundrects;
129        char *searchString;
130        bool caseSensitive;
131        bool continueSearch;
132        bool abortSearch;
133};
134
135#endif // __DOCVIEWER_H
Note: See TracBrowser for help on using the repository browser.