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

Last change on this file since 27 was 27, checked in by Eugene Romanenko, 16 years ago

poppler updated to version 0.5.2, also needed changes to be compatible with new poppler

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