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

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

update makefiles, remove absolute paths, update djvulibre to version 3.5.17

File size: 4.1 KB
RevLine 
[2]1#ifndef __DOCVIEWER_H
2#define __DOCVIEWER_H
3
4#include <vector>
5
6#include <ludoc.xh>
7
8class ProgressDlg;
9
10struct LuSize  { double x, y; };
11
12struct PageDrawArea
13{
14    long   pagenum;
15    LuSize startpos;
16    RECTL  drawrect;
17};
18
[17]19typedef std::vector<PageDrawArea> DrawAreas;
[2]20
21
22class DocumentViewer
23{
24    public:
25        DocumentViewer( HAB _hab, HWND hWndFrame );
26        virtual ~DocumentViewer();
27
28        HWND getHWND() { return hWndDocFrame; }
29
30        void setDocument( LuDocument *_doc );
31        void goToPage( long page );
32        long getCurrentPage() { return currentpage; }
33        void setZoom( double _zoom );
34        double getZoom() { return zoom; }
35        double getRealZoom() { return realzoom; }
36        void copyToClipbrd();
37        void searchDocument( const char *_searchString, bool _caseSensitive,
38                             bool _continueSearch );
39
40        static void registerClass( HAB hab );
[17]41
[2]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 );
[17]58        void docPosToWinPos( long pagenum, LuRectangle *r, PRECTL rcl );
[2]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();
[17]63        void freeLinks();
[2]64        void drawFound( HPS hps, PRECTL r );
65        DrawAreas *foundDrawAreas( PRECTL r );
[17]66        void determineCurrentPage();
67        long posToPagenum( LONG yPosWin, double *pageRest );
68        double pagenumToPos( long pagenum );
[2]69
70        static MRESULT EXPENTRY docViewProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 );
71        static void searchthread( void *p );
72        static void searchabort( void *p );
73        static void drawthread( void *p );
74        static long _System asynchCallbackFnDraw( void *data );
75        static long _System asynchCallbackFnAbort( void *data );
76
77        LuDocument *doc;
78        HAB hab;
79        HWND hMainFrame;
80        HWND hWndDocFrame;
81        HWND hWndDoc;
82        HWND hWndHscroll;
83        HWND hWndVscroll;
84        SHORT sHscrollMax;
85        SHORT sVscrollMax;
86        SHORT sHscrollPos;
87        SHORT sVscrollPos;
88        LONG  sVscrollInc;
89        LONG  sHscrollInc;
90        ULONG realVscrollMax;
91        LONG  cxClient;
92        LONG  cyClient;
93        LONG  spos_x;
94        LONG  spos_y;
95        HPS hpsBuffer;
96        HDC hdcBuffer;
97        Environment *ev;
98        LuPixbuf *pixbuf;
99        double width, height, zoom, realzoom, fullwidth, fullheight;
100        long totalpages, currentpage;
101        ProgressDlg *progressDlg;
[17]102        DrawAreas *drawareas;
103        int drawareaIndex;
[2]104
105        // continuous view
106        bool continuous;
107        LuSize *pagesizes;
108        SHORT VScrollStep;
109
110        // asynch draw
111        bool enableAsynchDraw;
112        HMTX todrawAccess;
113        HEV  haveDraw;
114        bool abortAsynch;
115        bool termdraw;
116        TID  drawThreadId;
117
118        // selection
119        bool mousePressed;
120        POINTL selectionStart;
121        POINTL selectionEnd;
122        LuRectangle selection;
123        LuDocument_LuRectSequence *selrects;
124
125        // links
[17]126        LuDocument_LuLinkMapSequence **links;
[2]127        HPOINTER handptr;
128
129        // search
130        LuDocument_LuRectSequence **foundrects;
131        char *searchString;
132        bool caseSensitive;
133        bool continueSearch;
134        bool abortSearch;
135};
136
137#endif // __DOCVIEWER_H
[17]138
Note: See TracBrowser for help on using the repository browser.