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

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

text search in continuous view works now

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