1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 #ifndef INCLUDED_SC_SOURCE_UI_INC_PREVIEW_HXX
20 #define INCLUDED_SC_SOURCE_UI_INC_PREVIEW_HXX
22 #include <vcl/window.hxx>
23 #include "printfun.hxx"
24 #include "markdata.hxx"
32 class ScPreview
: public vcl::Window
35 ScMarkData::MarkedTabsType maSelectedTabs
;
37 long nPageNo
; // Pages in document
38 sal_uInt16 nZoom
; // set Zoom
39 Point aOffset
; // positive
43 SCTAB nTabsTested
; // for how many sheets is nPages valid?
44 std::vector
<long> nPages
;
45 std::vector
<long> nFirstAttr
;
47 long nTabPage
; // Page of sheet
48 long nTabStart
; // First (real) page of the sheet
49 long nDisplayStart
; // same as above, relative to the start of counting
53 Size aPageSize
; // for GetOptimalZoom
55 ScPreviewLocationData
* pLocationData
; // stores table layout for accessibility API
56 FmFormView
* pDrawView
;
59 ScDocShell
* pDocShell
;
60 ScPreviewShell
* pViewShell
;
63 bool bValid
:1; // the following values true
65 bool bLocationValid
:1;
68 bool bLeftRulerMove
:1;
69 bool bRightRulerMove
:1;
71 bool bBottomRulerMove
:1;
72 bool bHeaderRulerMove
:1;
73 bool bFooterRulerMove
:1;
74 bool bLeftRulerChange
:1;
75 bool bRightRulerChange
:1;
76 bool bTopRulerChange
:1;
77 bool bBottomRulerChange
:1;
78 bool bHeaderRulerChange
:1;
79 bool bFooterRulerChange
:1;
82 bool mbHasEmptyRangeTable
:1; /// we have at least one sheet with empty print range (print range set to '- none -').
85 long nRight
[ MAXCOL
+1 ];
88 SCCOL nColNumberButttonDown
;
89 Point aButtonDownChangePoint
;
98 void UpdateDrawView();
99 void DoPrint( ScPreviewLocationData
* pFillLocation
);
101 void InvalidateLocationData( sal_uLong nId
);
103 using Window::SetZoom
;
106 virtual void Paint( vcl::RenderContext
& rRenderContext
, const Rectangle
& rRect
) SAL_OVERRIDE
;
107 virtual void Command( const CommandEvent
& rCEvt
) SAL_OVERRIDE
;
108 virtual void KeyInput( const KeyEvent
& rKEvt
) SAL_OVERRIDE
;
109 virtual void MouseMove( const MouseEvent
& rMEvt
) SAL_OVERRIDE
;
110 virtual void MouseButtonDown( const MouseEvent
& rMEvt
) SAL_OVERRIDE
;
111 virtual void MouseButtonUp( const MouseEvent
& rMEvt
) SAL_OVERRIDE
;
113 virtual void GetFocus() SAL_OVERRIDE
;
114 virtual void LoseFocus() SAL_OVERRIDE
;
116 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::accessibility::XAccessible
> CreateAccessible() SAL_OVERRIDE
;
119 ScPreview( vcl::Window
* pParent
, ScDocShell
* pDocSh
, ScPreviewShell
* pViewSh
);
120 virtual ~ScPreview();
121 virtual void dispose() SAL_OVERRIDE
;
123 virtual void DataChanged( const DataChangedEvent
& rDCEvt
) SAL_OVERRIDE
;
125 SC_DLLPUBLIC
void DataChanged(bool bNewTime
= false); // Instead of calling Invalidate
128 void SetXOffset( long nX
);
129 void SetYOffset( long nY
);
130 void SetZoom(sal_uInt16 nNewZoom
);
131 SC_DLLPUBLIC
void SetPageNo( long nPage
);
133 bool GetPageMargins() const { return bPageMargin
; }
134 void SetPageMargins( bool bVal
) { bPageMargin
= bVal
; }
135 void DrawInvert( long nDragPos
, PointerStyle nFlags
);
136 void DragMove( long nDragMovePos
, PointerStyle nFlags
);
138 const ScPreviewLocationData
& GetLocationData();
140 OUString
GetPosString();
142 long GetPageNo() const { return nPageNo
; }
143 sal_uInt16
GetZoom() const { return nZoom
; }
144 Point
GetOffset() const { return aOffset
; }
146 SCTAB
GetTab() { if (!bValid
) { CalcPages(); RecalcPages(); } return nTab
; }
147 long GetTotalPages() { if (!bValid
) { CalcPages(); RecalcPages(); } return nTotalPages
; }
149 bool AllTested() const { return bValid
&& nTabsTested
>= nTabCount
; }
151 sal_uInt16
GetOptimalZoom(bool bWidthOnly
);
152 SC_DLLPUBLIC
long GetFirstPage(SCTAB nTab
);
154 void CalcAll() { CalcPages(); }
155 void SetInGetState(bool bSet
) { bInGetState
= bSet
; }
157 DECL_STATIC_LINK( ScPreview
, InvalidateHdl
, void* );
158 static void StaticInvalidate();
160 FmFormView
* GetDrawView() { return pDrawView
; }
162 SC_DLLPUBLIC
void SetSelectedTabs(const ScMarkData
& rMark
);
163 const ScMarkData::MarkedTabsType
& GetSelectedTabs() const { return maSelectedTabs
; }
168 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */