xref: /AOO41X/main/sc/source/ui/inc/preview.hxx (revision 4d7c9de063a797b8b4f3d45e3561e82ad1f8ef1f)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef SC_PREVIEW_HXX
24 #define SC_PREVIEW_HXX
25 
26 
27 #include <vcl/window.hxx>
28 #include "printfun.hxx"     // ScPrintState
29 
30 class ScDocShell;
31 class ScPreviewShell;
32 class FmFormView;
33 
34 class ScPreview : public Window
35 {
36 private:
37                                         // eingestellt:
38     long            nPageNo;            // Seite im Dokument
39     sal_uInt16          nZoom;              // eingestellter Zoom
40     Point           aOffset;            // positiv
41 
42                                         // berechnet:
43     sal_Bool            bValid;             // folgende Werte gueltig
44     SCTAB           nTabCount;
45     SCTAB           nTabsTested;        // fuer wieviele Tabellen ist nPages gueltig?
46     long            nPages[MAXTABCOUNT];
47     long            nFirstAttr[MAXTABCOUNT];
48     SCTAB           nTab;               // Tabelle
49     long            nTabPage;           // Seite von Tabelle
50     long            nTabStart;          // erste Seite der Tabelle (wirklich)
51     long            nDisplayStart;      // dito, relativ zum Anfang der Zaehlung
52     Date            aDate;
53     Time            aTime;
54     long            nTotalPages;
55     Size            aPageSize;          // fuer GetOptimalZoom
56     sal_Bool            bStateValid;
57     sal_Bool            bLocationValid;
58     ScPrintState    aState;
59     ScPreviewLocationData* pLocationData;   // stores table layout for accessibility API
60     FmFormView*     pDrawView;
61 
62                                         // intern:
63     bool            bInPaint;
64     bool            bInSetZoom;
65     sal_Bool        bInGetState;
66     ScDocShell*     pDocShell;
67     ScPreviewShell* pViewShell;
68 
69     sal_Bool            bLeftRulerMove;
70     sal_Bool            bRightRulerMove;
71     sal_Bool            bTopRulerMove;
72     sal_Bool            bBottomRulerMove;
73     sal_Bool            bHeaderRulerMove;
74     sal_Bool            bFooterRulerMove;
75 
76     sal_Bool            bLeftRulerChange;
77     sal_Bool            bRightRulerChange;
78     sal_Bool            bTopRulerChange;
79     sal_Bool            bBottomRulerChange;
80     sal_Bool            bHeaderRulerChange;
81     sal_Bool            bFooterRulerChange;
82     sal_Bool            bPageMargin;
83     sal_Bool            bColRulerMove;
84     ScRange         aPageArea;
85     long            nRight[ MAXCOL+1 ];
86     long            nLeftPosition;
87     long            mnScale;
88     SCCOL           nColNumberButttonDown;
89     Point           aButtonDownChangePoint;
90     Point           aButtonDownPt;
91     Point           aButtonUpPt;
92     long            nHeaderHeight;
93     long            nFooterHeight;
94 
95     void    TestLastPage();
96     void    CalcPages( SCTAB nToWhichTab );
97     void    RecalcPages();
98     void    UpdateDrawView();
99     void    DoPrint( ScPreviewLocationData* pFillLocation );
100 
101     void    InvalidateLocationData( sal_uLong nId );
102 
103     using Window::SetZoom;
104 
105 protected:
106     virtual void   Paint( const Rectangle& rRect );
107     virtual void   Command( const CommandEvent& rCEvt );
108     virtual void   KeyInput( const KeyEvent& rKEvt );
109     virtual void   MouseMove( const MouseEvent& rMEvt );
110     virtual void   MouseButtonDown( const MouseEvent& rMEvt );
111     virtual void   MouseButtonUp( const MouseEvent& rMEvt );
112 
113     virtual void   GetFocus();
114     virtual void   LoseFocus();
115 
116     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
117 
118 public:
119             ScPreview( Window* pParent, ScDocShell* pDocSh, ScPreviewShell* pViewSh );
120             ~ScPreview();
121 
122     virtual void DataChanged( const DataChangedEvent& rDCEvt );
123 
124     void    DataChanged(sal_Bool bNewTime = sal_False);             // statt Invalidate rufen
125     void    DoInvalidate();
126 
127     void    SetXOffset( long nX );
128     void    SetYOffset( long nY );
129     void    SetZoom(sal_uInt16 nNewZoom);
130     void    SetPageNo( long nPage );
131 
GetPageMargins() const132     sal_Bool    GetPageMargins()const { return bPageMargin; }
SetPageMargins(sal_Bool bVal)133     void    SetPageMargins( sal_Bool bVal )  { bPageMargin = bVal; }
134     void    DrawInvert( long nDragPos, sal_uInt16 nFlags );
135     void    DragMove( long nDragMovePos, sal_uInt16 nFlags );
136 
137 
138     const ScPreviewLocationData& GetLocationData();
139 
140     String  GetPosString();
141 
GetPageNo() const142     long    GetPageNo() const   { return nPageNo; }
GetZoom() const143     sal_uInt16  GetZoom() const     { return nZoom; }
GetOffset() const144     Point   GetOffset() const   { return aOffset; }
145 
GetTab()146     SCTAB   GetTab()            { if (!bValid) { CalcPages(0); RecalcPages(); } return nTab; }
GetTotalPages()147     long    GetTotalPages()     { if (!bValid) { CalcPages(0); RecalcPages(); } return nTotalPages; }
148 
AllTested() const149     sal_Bool    AllTested() const   { return bValid && nTabsTested >= nTabCount; }
150 
151     sal_uInt16  GetOptimalZoom(sal_Bool bWidthOnly);
152     long    GetFirstPage(SCTAB nTab);
153 
CalcAll()154     void    CalcAll()           { CalcPages(MAXTAB); }
SetInGetState(sal_Bool bSet)155     void    SetInGetState(sal_Bool bSet) { bInGetState = bSet; }
156 
157     DECL_STATIC_LINK( ScPreview, InvalidateHdl, void* );
158     static void StaticInvalidate();
159 
GetDrawView()160     FmFormView* GetDrawView() { return pDrawView; }
161     virtual void SwitchView();
162 };
163 
164 
165 
166 #endif
167