blob: 563c7b4bffe2627aba4ce45e168c9283279e4e90 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef SC_PREVIEW_HXX
#define SC_PREVIEW_HXX
#include <vcl/window.hxx>
#include "printfun.hxx" // ScPrintState
class ScDocShell;
class ScPreviewShell;
class FmFormView;
class ScPreview : public Window
{
private:
// eingestellt:
long nPageNo; // Seite im Dokument
sal_uInt16 nZoom; // eingestellter Zoom
Point aOffset; // positiv
// berechnet:
sal_Bool bValid; // folgende Werte gueltig
SCTAB nTabCount;
SCTAB nTabsTested; // fuer wieviele Tabellen ist nPages gueltig?
long nPages[MAXTABCOUNT];
long nFirstAttr[MAXTABCOUNT];
SCTAB nTab; // Tabelle
long nTabPage; // Seite von Tabelle
long nTabStart; // erste Seite der Tabelle (wirklich)
long nDisplayStart; // dito, relativ zum Anfang der Zaehlung
Date aDate;
Time aTime;
long nTotalPages;
Size aPageSize; // fuer GetOptimalZoom
sal_Bool bStateValid;
sal_Bool bLocationValid;
ScPrintState aState;
ScPreviewLocationData* pLocationData; // stores table layout for accessibility API
FmFormView* pDrawView;
// intern:
bool bInPaint;
bool bInSetZoom;
sal_Bool bInGetState;
ScDocShell* pDocShell;
ScPreviewShell* pViewShell;
sal_Bool bLeftRulerMove;
sal_Bool bRightRulerMove;
sal_Bool bTopRulerMove;
sal_Bool bBottomRulerMove;
sal_Bool bHeaderRulerMove;
sal_Bool bFooterRulerMove;
sal_Bool bLeftRulerChange;
sal_Bool bRightRulerChange;
sal_Bool bTopRulerChange;
sal_Bool bBottomRulerChange;
sal_Bool bHeaderRulerChange;
sal_Bool bFooterRulerChange;
sal_Bool bPageMargin;
sal_Bool bColRulerMove;
ScRange aPageArea;
long nRight[ MAXCOL+1 ];
long nLeftPosition;
long mnScale;
SCCOL nColNumberButttonDown;
Point aButtonDownChangePoint;
Point aButtonDownPt;
Point aButtonUpPt;
long nHeaderHeight;
long nFooterHeight;
void TestLastPage();
void CalcPages( SCTAB nToWhichTab );
void RecalcPages();
void UpdateDrawView();
void DoPrint( ScPreviewLocationData* pFillLocation );
void InvalidateLocationData( sal_uLong nId );
using Window::SetZoom;
protected:
virtual void Paint( const Rectangle& rRect );
virtual void Command( const CommandEvent& rCEvt );
virtual void KeyInput( const KeyEvent& rKEvt );
virtual void MouseMove( const MouseEvent& rMEvt );
virtual void MouseButtonDown( const MouseEvent& rMEvt );
virtual void MouseButtonUp( const MouseEvent& rMEvt );
virtual void GetFocus();
virtual void LoseFocus();
virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
public:
ScPreview( Window* pParent, ScDocShell* pDocSh, ScPreviewShell* pViewSh );
~ScPreview();
virtual void DataChanged( const DataChangedEvent& rDCEvt );
void DataChanged(sal_Bool bNewTime = sal_False); // statt Invalidate rufen
void DoInvalidate();
void SetXOffset( long nX );
void SetYOffset( long nY );
void SetZoom(sal_uInt16 nNewZoom);
void SetPageNo( long nPage );
sal_Bool GetPageMargins()const { return bPageMargin; }
void SetPageMargins( sal_Bool bVal ) { bPageMargin = bVal; }
void DrawInvert( long nDragPos, sal_uInt16 nFlags );
void DragMove( long nDragMovePos, sal_uInt16 nFlags );
const ScPreviewLocationData& GetLocationData();
String GetPosString();
long GetPageNo() const { return nPageNo; }
sal_uInt16 GetZoom() const { return nZoom; }
Point GetOffset() const { return aOffset; }
SCTAB GetTab() { if (!bValid) { CalcPages(0); RecalcPages(); } return nTab; }
long GetTotalPages() { if (!bValid) { CalcPages(0); RecalcPages(); } return nTotalPages; }
sal_Bool AllTested() const { return bValid && nTabsTested >= nTabCount; }
sal_uInt16 GetOptimalZoom(sal_Bool bWidthOnly);
long GetFirstPage(SCTAB nTab);
void CalcAll() { CalcPages(MAXTAB); }
void SetInGetState(sal_Bool bSet) { bInGetState = bSet; }
DECL_STATIC_LINK( ScPreview, InvalidateHdl, void* );
static void StaticInvalidate();
FmFormView* GetDrawView() { return pDrawView; }
virtual void SwitchView();
};
#endif