13334a7e6SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 33334a7e6SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 43334a7e6SAndrew Rist * or more contributor license agreements. See the NOTICE file 53334a7e6SAndrew Rist * distributed with this work for additional information 63334a7e6SAndrew Rist * regarding copyright ownership. The ASF licenses this file 73334a7e6SAndrew Rist * to you under the Apache License, Version 2.0 (the 83334a7e6SAndrew Rist * "License"); you may not use this file except in compliance 93334a7e6SAndrew Rist * with the License. You may obtain a copy of the License at 103334a7e6SAndrew Rist * 113334a7e6SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 123334a7e6SAndrew Rist * 133334a7e6SAndrew Rist * Unless required by applicable law or agreed to in writing, 143334a7e6SAndrew Rist * software distributed under the License is distributed on an 153334a7e6SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 163334a7e6SAndrew Rist * KIND, either express or implied. See the License for the 173334a7e6SAndrew Rist * specific language governing permissions and limitations 183334a7e6SAndrew Rist * under the License. 193334a7e6SAndrew Rist * 203334a7e6SAndrew Rist *************************************************************/ 213334a7e6SAndrew Rist 223334a7e6SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef _SVDPNTV_HXX 25cdf0e10cSrcweir #define _SVDPNTV_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <svl/brdcst.hxx> 28cdf0e10cSrcweir #include <svl/lstner.hxx> 29cdf0e10cSrcweir #include <svl/smplhint.hxx> 30cdf0e10cSrcweir #include <svl/undo.hxx> 31cdf0e10cSrcweir #include <svx/svddrag.hxx> 32cdf0e10cSrcweir #include <svx/svdlayer.hxx> // fuer SetOfByte 33cdf0e10cSrcweir #include <vcl/window.hxx> 34cdf0e10cSrcweir #include <svtools/colorcfg.hxx> 35cdf0e10cSrcweir #include <com/sun/star/awt/XControlContainer.hpp> 36cdf0e10cSrcweir #include <svl/itemset.hxx> 37cdf0e10cSrcweir #include <vcl/timer.hxx> 38cdf0e10cSrcweir #include "svx/svxdllapi.h" 39cdf0e10cSrcweir #include <svtools/optionsdrawinglayer.hxx> 40cdf0e10cSrcweir #include <unotools/options.hxx> 41cdf0e10cSrcweir 42cdf0e10cSrcweir //************************************************************ 43cdf0e10cSrcweir // Pre-Defines 44cdf0e10cSrcweir //************************************************************ 45cdf0e10cSrcweir 46cdf0e10cSrcweir class SdrPageWindow; 47cdf0e10cSrcweir 48cdf0e10cSrcweir namespace com { namespace sun { namespace star { namespace awt { 49cdf0e10cSrcweir class XControlContainer; 50cdf0e10cSrcweir }}}} 51cdf0e10cSrcweir 52cdf0e10cSrcweir class SdrPage; 53cdf0e10cSrcweir class SdrView; 54cdf0e10cSrcweir class SfxItemSet; 55cdf0e10cSrcweir class SfxStyleSheet; 56cdf0e10cSrcweir class SdrOle2Obj; 57cdf0e10cSrcweir class SdrModel; 58cdf0e10cSrcweir class SdrObject; 59cdf0e10cSrcweir class SdrViewUserMarker; 60cdf0e10cSrcweir class B2dIAOManager; 61cdf0e10cSrcweir 62cdf0e10cSrcweir #ifdef DBG_UTIL 63cdf0e10cSrcweir class SdrItemBrowser; 64cdf0e10cSrcweir #endif 65cdf0e10cSrcweir 66cdf0e10cSrcweir namespace sdr { namespace contact { 67cdf0e10cSrcweir class ViewObjectContactRedirector; 68cdf0e10cSrcweir }} 69cdf0e10cSrcweir 70cdf0e10cSrcweir //************************************************************ 71cdf0e10cSrcweir // Defines for AnimationMode 72cdf0e10cSrcweir //************************************************************ 73cdf0e10cSrcweir 74cdf0e10cSrcweir enum SdrAnimationMode 75cdf0e10cSrcweir { 76cdf0e10cSrcweir SDR_ANIMATION_ANIMATE, 77cdf0e10cSrcweir SDR_ANIMATION_DONT_ANIMATE, 78cdf0e10cSrcweir SDR_ANIMATION_DISABLE 79cdf0e10cSrcweir }; 80cdf0e10cSrcweir 81cdf0e10cSrcweir //************************************************************ 82cdf0e10cSrcweir // Typedef's und defines 83cdf0e10cSrcweir //************************************************************ 84cdf0e10cSrcweir 85cdf0e10cSrcweir typedef unsigned char TRISTATE; 86cdf0e10cSrcweir #define FUZZY (2) 87cdf0e10cSrcweir #define SDR_ANYFORMAT (0xFFFFFFFF) 88cdf0e10cSrcweir #define SDR_ANYITEM (0xFFFF) 89cdf0e10cSrcweir #define SDRVIEWWIN_NOTFOUND (0xFFFF) 90cdf0e10cSrcweir 91cdf0e10cSrcweir 92cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 93cdf0e10cSrcweir class SdrPaintView; 94cdf0e10cSrcweir 95cdf0e10cSrcweir namespace sdr 96cdf0e10cSrcweir { 97cdf0e10cSrcweir namespace contact 98cdf0e10cSrcweir { 99cdf0e10cSrcweir class ViewObjectContactRedirector; 100cdf0e10cSrcweir } // end of namespace contact 101cdf0e10cSrcweir } // end of namespace sdr 102cdf0e10cSrcweir 103cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 104cdf0e10cSrcweir 105cdf0e10cSrcweir 106cdf0e10cSrcweir class SVX_DLLPUBLIC SvxViewHint : public SfxHint 107cdf0e10cSrcweir { 108cdf0e10cSrcweir public: 109cdf0e10cSrcweir enum HintType { SVX_HINT_VIEWCHANGED }; 110cdf0e10cSrcweir TYPEINFO(); 111cdf0e10cSrcweir SvxViewHint (HintType eType); 112cdf0e10cSrcweir HintType GetHintType (void) const; 113cdf0e10cSrcweir 114cdf0e10cSrcweir private: 115cdf0e10cSrcweir HintType meHintType; 116cdf0e10cSrcweir }; 117cdf0e10cSrcweir 118cdf0e10cSrcweir // typedefs for a list of SdrPaintWindows 119cdf0e10cSrcweir class SdrPaintWindow; 120cdf0e10cSrcweir typedef ::std::vector< SdrPaintWindow* > SdrPaintWindowVector; 121cdf0e10cSrcweir 1229f63b866SArmin Le Grand ////////////////////////////////////////////////////////////////////////////// 1239f63b866SArmin Le Grand // helper to convert any GDIMetaFile to a good quality BitmapEx, 1249f63b866SArmin Le Grand // using default parameters and graphic::XPrimitive2DRenderer 1259f63b866SArmin Le Grand 1269f63b866SArmin Le Grand BitmapEx SVX_DLLPUBLIC convertMetafileToBitmapEx( 1279f63b866SArmin Le Grand const GDIMetaFile& rMtf, 1289f63b866SArmin Le Grand const basegfx::B2DRange& rTargetRange, 1299f63b866SArmin Le Grand const sal_uInt32 nMaximumQuadraticPixels = 500000); 1309f63b866SArmin Le Grand 131cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 132cdf0e10cSrcweir 133cdf0e10cSrcweir class SVX_DLLPUBLIC SdrPaintView : public SfxListener, public SfxRepeatTarget, public SfxBroadcaster, public ::utl::ConfigurationListener 134cdf0e10cSrcweir { 135cdf0e10cSrcweir friend class SdrPageView; 136cdf0e10cSrcweir friend class FrameAnimator; 137cdf0e10cSrcweir friend class SdrGrafObj; 138cdf0e10cSrcweir 139cdf0e10cSrcweir protected: 140cdf0e10cSrcweir // #114409#-2 Migrate Encirclement 141cdf0e10cSrcweir class ImplEncirclementOverlay* mpEncirclementOverlay; 142cdf0e10cSrcweir 143cdf0e10cSrcweir SdrModel* pMod; 144cdf0e10cSrcweir #ifdef DBG_UTIL 145cdf0e10cSrcweir SdrItemBrowser* pItemBrowser; 146cdf0e10cSrcweir #endif 147cdf0e10cSrcweir const OutputDevice* pActualOutDev; // Nur zum vergleichen 148cdf0e10cSrcweir OutputDevice* pDragWin; 149cdf0e10cSrcweir SfxStyleSheet* pDefaultStyleSheet; 150cdf0e10cSrcweir 151cdf0e10cSrcweir String aAktLayer; // Aktueller Zeichenlayer 152cdf0e10cSrcweir String aMeasureLayer; // Aktueller Layer fuer Bemassung 153cdf0e10cSrcweir 154cdf0e10cSrcweir // Container aPagV; // Liste von SdrPageViews 155cdf0e10cSrcweir SdrPageView* mpPageView; 156cdf0e10cSrcweir 157cdf0e10cSrcweir // All windows this view is displayed on 158cdf0e10cSrcweir SdrPaintWindowVector maPaintWindows; 159cdf0e10cSrcweir 160cdf0e10cSrcweir MapMode aActualMapMode; 161cdf0e10cSrcweir Size aGridBig; // muss dann mal raus 162cdf0e10cSrcweir Size aGridFin; // muss dann mal raus 163cdf0e10cSrcweir SdrDragStat aDragStat; 164cdf0e10cSrcweir Rectangle aMaxWorkArea; 165cdf0e10cSrcweir SfxItemSet aDefaultAttr; 166cdf0e10cSrcweir Timer aComeBackTimer; 167cdf0e10cSrcweir 168cdf0e10cSrcweir SdrAnimationMode eAnimationMode; 169cdf0e10cSrcweir 170cdf0e10cSrcweir sal_uInt16 nHitTolPix; 171cdf0e10cSrcweir sal_uInt16 nMinMovPix; 172cdf0e10cSrcweir sal_uInt16 nHitTolLog; 173cdf0e10cSrcweir sal_uInt16 nMinMovLog; 174cdf0e10cSrcweir sal_uIntPtr nMasterCacheMode; 175cdf0e10cSrcweir sal_uIntPtr nGraphicManagerDrawMode; 176cdf0e10cSrcweir 177cdf0e10cSrcweir // hold an incarnation of Drawinglayer configuration options 178cdf0e10cSrcweir SvtOptionsDrawinglayer maDrawinglayerOpt; 179cdf0e10cSrcweir 180cdf0e10cSrcweir unsigned bPageVisible : 1; 181cdf0e10cSrcweir unsigned bPageBorderVisible : 1; 182cdf0e10cSrcweir unsigned bBordVisible : 1; 183cdf0e10cSrcweir unsigned bGridVisible : 1; 184cdf0e10cSrcweir unsigned bGridFront : 1; 185cdf0e10cSrcweir unsigned bHlplVisible : 1; 186cdf0e10cSrcweir unsigned bHlplFront : 1; 187cdf0e10cSrcweir unsigned bGlueVisible : 1; // Persistent. Klebepunkte anzeigen 188cdf0e10cSrcweir unsigned bGlueVisible2 : 1; // Klebepunkte auch bei GluePointEdit anzeigen 189cdf0e10cSrcweir unsigned bGlueVisible3 : 1; // Klebepunkte auch bei EdgeTool anzeigen 190cdf0e10cSrcweir unsigned bGlueVisible4 : 1; // Klebepunkte anzeigen, wenn 1 Edge markiert 191cdf0e10cSrcweir unsigned bRestoreColors : 1; // Pens und Brushes werden zurueckgesetzt. 192cdf0e10cSrcweir unsigned bSomeObjChgdFlag : 1; 193cdf0e10cSrcweir unsigned bSwapAsynchron : 1; 194cdf0e10cSrcweir unsigned bPrintPreview : 1; 195cdf0e10cSrcweir 196cdf0e10cSrcweir // sal_Bool fuer die Verwaltung des anzuzeigenden Status 197cdf0e10cSrcweir // Gruppe Betreten/Verlassen. Default ist sal_True, wird aber 198cdf0e10cSrcweir // beispielsweise beim Chart auf sal_False gesetzt, da dort 199cdf0e10cSrcweir // die Ghosted-Effekte zur Darstellug unerwuenscht sind. 200cdf0e10cSrcweir unsigned bVisualizeEnteredGroup : 1; 201cdf0e10cSrcweir unsigned bAnimationPause : 1; 202cdf0e10cSrcweir 203cdf0e10cSrcweir // #114898# 204cdf0e10cSrcweir // Flag which decides if buffered output for this view is allowed. When 205cdf0e10cSrcweir // set, PreRendering for PageView rendering will be used. Default is sal_False 206cdf0e10cSrcweir unsigned mbBufferedOutputAllowed : 1; 207cdf0e10cSrcweir 208cdf0e10cSrcweir // #114898# 209cdf0e10cSrcweir // Flag which decides if buffered overlay for this view is allowed. When 210cdf0e10cSrcweir // set, the output will be buffered in an overlay vdev. When not, overlay is 211cdf0e10cSrcweir // directly painted to OutDev. Default is sal_False. 212cdf0e10cSrcweir unsigned mbBufferedOverlayAllowed : 1; 213cdf0e10cSrcweir 214cdf0e10cSrcweir // allow page painting at all? 215cdf0e10cSrcweir unsigned mbPagePaintingAllowed : 1; 216cdf0e10cSrcweir 217cdf0e10cSrcweir // is this a preview renderer? 218cdf0e10cSrcweir unsigned mbPreviewRenderer : 1; 219cdf0e10cSrcweir 220cdf0e10cSrcweir // flags for calc and sw for suppressing OLE, CHART or DRAW objects 221cdf0e10cSrcweir unsigned mbHideOle : 1; 222cdf0e10cSrcweir unsigned mbHideChart : 1; 223cdf0e10cSrcweir unsigned mbHideDraw : 1; // hide draw objects other than form controls 224cdf0e10cSrcweir unsigned mbHideFormControl : 1; // hide form controls only 225cdf0e10cSrcweir 226cdf0e10cSrcweir public: 227cdf0e10cSrcweir // #114898# 228cdf0e10cSrcweir // interface for PagePaintingAllowed flag 229cdf0e10cSrcweir bool IsBufferedOutputAllowed() const; 230cdf0e10cSrcweir void SetBufferedOutputAllowed(bool bNew); 231cdf0e10cSrcweir 232cdf0e10cSrcweir // interface for BufferedOverlayAllowed flag 233cdf0e10cSrcweir bool IsBufferedOverlayAllowed() const; 234cdf0e10cSrcweir void SetBufferedOverlayAllowed(bool bNew); 235cdf0e10cSrcweir 236cdf0e10cSrcweir // allow page painting at all? 237cdf0e10cSrcweir sal_Bool IsPagePaintingAllowed() const; 238cdf0e10cSrcweir void SetPagePaintingAllowed(bool bNew); 239cdf0e10cSrcweir 240cdf0e10cSrcweir protected: 241cdf0e10cSrcweir svtools::ColorConfig maColorConfig; 242cdf0e10cSrcweir Color maGridColor; 243cdf0e10cSrcweir 244cdf0e10cSrcweir // interface to SdrPaintWindow 245cdf0e10cSrcweir protected: 246cdf0e10cSrcweir void AppendPaintWindow(SdrPaintWindow& rNew); 247cdf0e10cSrcweir SdrPaintWindow* RemovePaintWindow(SdrPaintWindow& rOld); 248cdf0e10cSrcweir void ConfigurationChanged( ::utl::ConfigurationBroadcaster*, sal_uInt32 ); 249cdf0e10cSrcweir 250cdf0e10cSrcweir public: PaintWindowCount() const251cdf0e10cSrcweir sal_uInt32 PaintWindowCount() const { return maPaintWindows.size(); } 252cdf0e10cSrcweir SdrPaintWindow* FindPaintWindow(const OutputDevice& rOut) const; 253cdf0e10cSrcweir SdrPaintWindow* GetPaintWindow(sal_uInt32 nIndex) const; 254cdf0e10cSrcweir // replacement for GetWin(0), may return 0L (!) 255cdf0e10cSrcweir OutputDevice* GetFirstOutputDevice() const; 256cdf0e10cSrcweir 257cdf0e10cSrcweir private: 258cdf0e10cSrcweir SVX_DLLPRIVATE void ImpClearVars(); 259cdf0e10cSrcweir DECL_LINK(ImpComeBackHdl,Timer*); 260cdf0e10cSrcweir 261cdf0e10cSrcweir protected: 262cdf0e10cSrcweir sal_uInt16 ImpGetMinMovLogic(short nMinMov, const OutputDevice* pOut) const; 263cdf0e10cSrcweir sal_uInt16 ImpGetHitTolLogic(short nHitTol, const OutputDevice* pOut) const; 264cdf0e10cSrcweir 265cdf0e10cSrcweir // Wenn man den IdleStatus des Systems nicht abwarten will (auf const geschummelt): 266cdf0e10cSrcweir void FlushComeBackTimer() const; 267cdf0e10cSrcweir void TheresNewMapMode(); ImpSetGlueVisible2(bool bOn)268cdf0e10cSrcweir void ImpSetGlueVisible2(bool bOn) { if (bGlueVisible2!=(unsigned)bOn) { bGlueVisible2=bOn; if (!bGlueVisible && !bGlueVisible3 && !bGlueVisible4) GlueInvalidate(); } } ImpSetGlueVisible3(bool bOn)269cdf0e10cSrcweir void ImpSetGlueVisible3(bool bOn) { if (bGlueVisible3!=(unsigned)bOn) { bGlueVisible3=bOn; if (!bGlueVisible && !bGlueVisible2 && !bGlueVisible4) GlueInvalidate(); } } ImpSetGlueVisible4(bool bOn)270cdf0e10cSrcweir void ImpSetGlueVisible4(bool bOn) { if (bGlueVisible4!=(unsigned)bOn) { bGlueVisible4=bOn; if (!bGlueVisible && !bGlueVisible2 && !bGlueVisible3) GlueInvalidate(); } } ImpIsGlueVisible2() const271cdf0e10cSrcweir sal_Bool ImpIsGlueVisible2() const { return bGlueVisible2; } ImpIsGlueVisible3() const272cdf0e10cSrcweir sal_Bool ImpIsGlueVisible3() const { return bGlueVisible3; } ImpIsGlueVisible4() const273cdf0e10cSrcweir sal_Bool ImpIsGlueVisible4() const { return bGlueVisible4; } 274cdf0e10cSrcweir 275cdf0e10cSrcweir public: ImpIsGlueVisible()276cdf0e10cSrcweir sal_Bool ImpIsGlueVisible() { return bGlueVisible || bGlueVisible2 || bGlueVisible3 || bGlueVisible4; } 277cdf0e10cSrcweir protected: 278cdf0e10cSrcweir 279cdf0e10cSrcweir virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint); 280cdf0e10cSrcweir void GlueInvalidate() const; 281cdf0e10cSrcweir 282cdf0e10cSrcweir void ShowEncirclement(OutputDevice* pOut); 283cdf0e10cSrcweir void HideEncirclement(OutputDevice* pOut); 284cdf0e10cSrcweir void DrawEncirclement(OutputDevice* pOut) const; 285cdf0e10cSrcweir 286cdf0e10cSrcweir // ModelHasChanged wird gerufen, sobald nach beliebig vielen HINT_OBJCHG 287cdf0e10cSrcweir // das System wieder idle ist (StarView-Timer). Wer diese Methode ueberlaed, 288cdf0e10cSrcweir // muss unbedingt ModelHasChanged() der Basisklasse rufen. 289cdf0e10cSrcweir virtual void ModelHasChanged(); 290cdf0e10cSrcweir 291cdf0e10cSrcweir protected: 292cdf0e10cSrcweir // #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView 293cdf0e10cSrcweir SdrPaintView(SdrModel* pModel1, OutputDevice* pOut = 0L); 294cdf0e10cSrcweir virtual ~SdrPaintView(); 295cdf0e10cSrcweir 296cdf0e10cSrcweir public: 297cdf0e10cSrcweir TYPEINFO(); 298cdf0e10cSrcweir 299cdf0e10cSrcweir virtual void ClearPageView(); 300cdf0e10cSrcweir // virtual void ClearAll(); 301cdf0e10cSrcweir // virtual void Clear(); // PageViews loeschen, Markierungen weg, ... GetModel() const302cdf0e10cSrcweir SdrModel* GetModel() const { return pMod; } 303cdf0e10cSrcweir 304cdf0e10cSrcweir virtual sal_Bool IsAction() const; 305cdf0e10cSrcweir virtual void MovAction(const Point& rPnt); 306cdf0e10cSrcweir virtual void EndAction(); 307cdf0e10cSrcweir virtual void BckAction(); 308cdf0e10cSrcweir virtual void BrkAction(); // Alle Actions z.B. Draggen abbrechen. 309cdf0e10cSrcweir virtual void TakeActionRect(Rectangle& rRect) const; 310cdf0e10cSrcweir 311cdf0e10cSrcweir // info about TextEdit. Default is sal_False. 312cdf0e10cSrcweir virtual bool IsTextEdit() const; 313cdf0e10cSrcweir 314cdf0e10cSrcweir // info about TextEditPageView. Default is 0L. 315cdf0e10cSrcweir virtual SdrPageView* GetTextEditPageView() const; 316cdf0e10cSrcweir 317cdf0e10cSrcweir // Muss dann bei jedem Fensterwechsel (wenn die SdrView in mehreren 318cdf0e10cSrcweir // Fenstern gleichzeitig dargestellt wird (->z.B. Splitter)) und bei 319cdf0e10cSrcweir // jedem MapMode(Scaling)-wechsel gerufen werden, damit ich aus meinen 320cdf0e10cSrcweir // Pixelwerten logische Werte berechnen kann. 321cdf0e10cSrcweir void SetActualWin(const OutputDevice* pWin); SetMinMoveDistancePixel(sal_uInt16 nVal)322cdf0e10cSrcweir void SetMinMoveDistancePixel(sal_uInt16 nVal) { nMinMovPix=nVal; TheresNewMapMode(); } GetMinMoveDistancePixel() const323cdf0e10cSrcweir sal_uInt16 GetMinMoveDistancePixel() const { return (sal_uInt16)nMinMovPix; } SetHitTolerancePixel(sal_uInt16 nVal)324cdf0e10cSrcweir void SetHitTolerancePixel(sal_uInt16 nVal) { nHitTolPix=nVal; TheresNewMapMode(); } GetHitTolerancePixel() const325cdf0e10cSrcweir sal_uInt16 GetHitTolerancePixel() const { return (sal_uInt16)nHitTolPix; } 326cdf0e10cSrcweir 327cdf0e10cSrcweir // data read access on logic HitTolerance and MinMoveTolerance getHitTolLog() const328cdf0e10cSrcweir sal_uInt16 getHitTolLog() const { return nHitTolLog; } getMinMovLog() const329cdf0e10cSrcweir sal_uInt16 getMinMovLog() const { return nMinMovLog; } 330cdf0e10cSrcweir 331cdf0e10cSrcweir // Flag zur Visualisierung von Gruppen abfragen/testen DoVisualizeEnteredGroup() const332cdf0e10cSrcweir sal_Bool DoVisualizeEnteredGroup() const { return bVisualizeEnteredGroup; } SetVisualizeEnteredGroup(sal_Bool bNew)333cdf0e10cSrcweir void SetVisualizeEnteredGroup(sal_Bool bNew) { bVisualizeEnteredGroup = bNew; } 334cdf0e10cSrcweir 335cdf0e10cSrcweir // Am DragStatus laesst sich beispielsweise erfragen, welche 336cdf0e10cSrcweir // entfernung bereits gedraggd wurde, etc. GetDragStat() const337cdf0e10cSrcweir const SdrDragStat& GetDragStat() const { return aDragStat; } 338cdf0e10cSrcweir 339cdf0e10cSrcweir // Anmelden/Abmelden einer PageView an der View. 340cdf0e10cSrcweir // Dieselbe // Seite kann nicht mehrfach angemeldet werden. 341cdf0e10cSrcweir // Methoden mit dem Suffix PgNum erwarten als numerischen Parameter 342cdf0e10cSrcweir // eine Seitennummer (0...). Methoden mit dem Suffix PvNum erwarten 343cdf0e10cSrcweir // degagen als numerischen Parameter die Nummer der PageView an der 344cdf0e10cSrcweir // SdrView (Iterieren ueber alle angemeldeten Pages). 345cdf0e10cSrcweir virtual SdrPageView* ShowSdrPage(SdrPage* pPage); 346cdf0e10cSrcweir virtual void HideSdrPage(); 347cdf0e10cSrcweir 348cdf0e10cSrcweir // Iterieren ueber alle angemeldeten PageViews 349cdf0e10cSrcweir // sal_uInt16 GetPageViewCount() const { return sal_uInt16(aPagV.Count()); } 350cdf0e10cSrcweir // SdrPageView* GetPageViewByIndex(sal_uInt16 nPvNum) const { return ((SdrPageView*)aPagV.GetObject(nPvNum)); } GetSdrPageView() const351cdf0e10cSrcweir SdrPageView* GetSdrPageView() const { return mpPageView; } 352cdf0e10cSrcweir 353cdf0e10cSrcweir // Pageview einer bestimmten Seite ermitteln 354cdf0e10cSrcweir // SdrPageView* GetPageViewByPage(const SdrPage* pPage) const; 355cdf0e10cSrcweir // sal_uInt16 GetIndexByPageView(const SdrPageView* pPV) const; 356cdf0e10cSrcweir 357cdf0e10cSrcweir // Test, ob eine Seite getroffen 358cdf0e10cSrcweir // SdrPageView* HitPage(const Point& rPnt) const; 359cdf0e10cSrcweir 360cdf0e10cSrcweir // Die Seite, die dem Punkt am naechsten ist. Liefert nur NULL, 361cdf0e10cSrcweir // wenn absolut keine Seite angemeldet ist. 362cdf0e10cSrcweir // SdrPageView* GetPageViewByPosition(const Point& rPnt) const; 363cdf0e10cSrcweir 364cdf0e10cSrcweir // Eine SdrView kann auf mehreren Fenstern gleichzeitig abgebiltet sein: 365cdf0e10cSrcweir virtual void AddWindowToPaintView(OutputDevice* pNewWin); 366cdf0e10cSrcweir virtual void DeleteWindowFromPaintView(OutputDevice* pOldWin); 367cdf0e10cSrcweir 368cdf0e10cSrcweir void SetLayerVisible(const String& rName, sal_Bool bShow=sal_True); 369cdf0e10cSrcweir bool IsLayerVisible(const String& rName) const; 370cdf0e10cSrcweir void SetAllLayersVisible(sal_Bool bShow=sal_True); 371cdf0e10cSrcweir 372cdf0e10cSrcweir void SetLayerLocked(const String& rName, sal_Bool bLock=sal_True); 373cdf0e10cSrcweir bool IsLayerLocked(const String& rName) const; 374cdf0e10cSrcweir void SetAllLayersLocked(sal_Bool bLock=sal_True); 375cdf0e10cSrcweir 376cdf0e10cSrcweir void SetLayerPrintable(const String& rName, sal_Bool bPrn=sal_True); 377cdf0e10cSrcweir bool IsLayerPrintable(const String& rName) const; 378cdf0e10cSrcweir void SetAllLayersPrintable(sal_Bool bPrn=sal_True); 379cdf0e10cSrcweir 380cdf0e10cSrcweir // PrePaint call forwarded from app windows 381cdf0e10cSrcweir void PrePaint(); 382cdf0e10cSrcweir 383cdf0e10cSrcweir // PostPaint call forwarded from app windows 384cdf0e10cSrcweir void PostPaint(); 385cdf0e10cSrcweir 386cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 387cdf0e10cSrcweir // used internally for Draw/Impress/sch/chart2 388cdf0e10cSrcweir virtual void CompleteRedraw(OutputDevice* pOut, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0); 389cdf0e10cSrcweir 390cdf0e10cSrcweir // #i72889# used from CompleteRedraw() implementation internally, added to be able to do a complete redraw in single steps 391cdf0e10cSrcweir // 392*86e1cf34SPedro Giffuni // BeginCompleteRedraw returns (or even creates) a SdrPaintWindow which shall then be used as 393cdf0e10cSrcweir // target for paints. Since paints may be buffered, use it's GetTargetOutputDevice() method which will 394cdf0e10cSrcweir // return the buffer in case of bufered. 395cdf0e10cSrcweir // DoCompleteRedraw draws the DrawingLayer hierarchy then. 396cdf0e10cSrcweir // EndCompleteRedraw does the necessary refreshes, evtl. paints text edit and overlay and evtl destroys the 397cdf0e10cSrcweir // SdrPaintWindow again. This means: the SdrPaintWindow is no longer safe after this closing call. 398cdf0e10cSrcweir virtual SdrPaintWindow* BeginCompleteRedraw(OutputDevice* pOut); 399cdf0e10cSrcweir virtual void DoCompleteRedraw(SdrPaintWindow& rPaintWindow, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0); 400cdf0e10cSrcweir virtual void EndCompleteRedraw(SdrPaintWindow& rPaintWindow, bool bPaintFormLayer); 401cdf0e10cSrcweir 402cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 403cdf0e10cSrcweir // used for the other applications basctl/sc/sw which call DrawLayer at PageViews 404cdf0e10cSrcweir // #i74769# Interface change to use common BeginCompleteRedraw/EndCompleteRedraw 405cdf0e10cSrcweir // #i76114# bDisableIntersect disables intersecting rReg with the Window's paint region 406cdf0e10cSrcweir SdrPaintWindow* BeginDrawLayers(OutputDevice* pOut, const Region& rReg, bool bDisableIntersect = false); 407cdf0e10cSrcweir void EndDrawLayers(SdrPaintWindow& rPaintWindow, bool bPaintFormLayer); 408cdf0e10cSrcweir 409cdf0e10cSrcweir protected: 410cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 411cdf0e10cSrcweir // used to paint the form layer after the PreRender device is flushed (painted) to the window. 412cdf0e10cSrcweir void ImpFormLayerDrawing(SdrPaintWindow& rPaintWindow) const; 413cdf0e10cSrcweir 414cdf0e10cSrcweir public: IsPageVisible() const415cdf0e10cSrcweir sal_Bool IsPageVisible() const { return bPageVisible; } // Seite (weisse Flaeche) malen oder nicht IsPageBorderVisible() const416cdf0e10cSrcweir sal_Bool IsPageBorderVisible() const { return bPageBorderVisible; } // Seite (weisse Flaeche) malen oder nicht IsBordVisible() const417cdf0e10cSrcweir sal_Bool IsBordVisible() const { return bBordVisible; } // Seitenrandlinie malen oder nicht IsGridVisible() const418cdf0e10cSrcweir sal_Bool IsGridVisible() const { return bGridVisible; } // Rastergitter malen oder nicht IsGridFront() const419cdf0e10cSrcweir sal_Bool IsGridFront() const { return bGridFront ; } // Rastergitter ueber die Objekte druebermalen oder dahinter IsHlplVisible() const420cdf0e10cSrcweir sal_Bool IsHlplVisible() const { return bHlplVisible; } // Hilfslinien der Seiten malen oder nicht IsHlplFront() const421cdf0e10cSrcweir sal_Bool IsHlplFront() const { return bHlplFront ; } // Hilfslinie ueber die Objekte druebermalen oder dahinter IsGlueVisible() const422cdf0e10cSrcweir sal_Bool IsGlueVisible() const { return bGlueVisible; } // Konnektoren der objekte sichtbar oder nicht 423cdf0e10cSrcweir Color GetGridColor() const; SetPageVisible(bool bOn=true)424cdf0e10cSrcweir void SetPageVisible(bool bOn = true) { bPageVisible=bOn; InvalidateAllWin(); } SetPageBorderVisible(bool bOn=true)425cdf0e10cSrcweir void SetPageBorderVisible(bool bOn = true) { bPageBorderVisible=bOn; InvalidateAllWin(); } SetBordVisible(bool bOn=true)426cdf0e10cSrcweir void SetBordVisible(bool bOn = true) { bBordVisible=bOn; InvalidateAllWin(); } SetGridVisible(bool bOn=true)427cdf0e10cSrcweir void SetGridVisible(bool bOn = true) { bGridVisible=bOn; InvalidateAllWin(); } SetGridFront(bool bOn=true)428cdf0e10cSrcweir void SetGridFront(bool bOn = true) { bGridFront =bOn; InvalidateAllWin(); } SetHlplVisible(bool bOn=true)429cdf0e10cSrcweir void SetHlplVisible(bool bOn = true) { bHlplVisible=bOn; InvalidateAllWin(); } SetHlplFront(bool bOn=true)430cdf0e10cSrcweir void SetHlplFront(bool bOn = true) { bHlplFront =bOn; InvalidateAllWin(); } SetGlueVisible(bool bOn=true)431cdf0e10cSrcweir void SetGlueVisible(bool bOn = true) { if (bGlueVisible!=(unsigned)bOn) { bGlueVisible=bOn; if (!bGlueVisible2 && !bGlueVisible3 && !bGlueVisible4) GlueInvalidate(); } } 432cdf0e10cSrcweir void SetGridColor( Color aColor ); 433cdf0e10cSrcweir IsPreviewRenderer() const434cdf0e10cSrcweir sal_Bool IsPreviewRenderer() const { return (sal_Bool )mbPreviewRenderer; } SetPreviewRenderer(bool bOn)435cdf0e10cSrcweir void SetPreviewRenderer(bool bOn) { if((unsigned)bOn != mbPreviewRenderer) { mbPreviewRenderer=bOn; }} 436cdf0e10cSrcweir 437cdf0e10cSrcweir // access methods for calc and sw hide object modes getHideOle() const438cdf0e10cSrcweir bool getHideOle() const { return mbHideOle; } getHideChart() const439cdf0e10cSrcweir bool getHideChart() const { return mbHideChart; } getHideDraw() const440cdf0e10cSrcweir bool getHideDraw() const { return mbHideDraw; } getHideFormControl() const441cdf0e10cSrcweir bool getHideFormControl() const { return mbHideFormControl; } setHideOle(bool bNew)442cdf0e10cSrcweir void setHideOle(bool bNew) { if(bNew != (bool)mbHideOle) mbHideOle = bNew; } setHideChart(bool bNew)443cdf0e10cSrcweir void setHideChart(bool bNew) { if(bNew != (bool)mbHideChart) mbHideChart = bNew; } setHideDraw(bool bNew)444cdf0e10cSrcweir void setHideDraw(bool bNew) { if(bNew != (bool)mbHideDraw) mbHideDraw = bNew; } setHideFormControl(bool bNew)445cdf0e10cSrcweir void setHideFormControl(bool bNew) { if(bNew != (bool)mbHideFormControl) mbHideFormControl = bNew; } 446cdf0e10cSrcweir SetGridCoarse(const Size & rSiz)447cdf0e10cSrcweir void SetGridCoarse(const Size& rSiz) { aGridBig=rSiz; } SetGridFine(const Size & rSiz)448cdf0e10cSrcweir void SetGridFine(const Size& rSiz) { aGridFin=rSiz; if (aGridFin.Height()==0) aGridFin.Height()=aGridFin.Width(); if (bGridVisible) InvalidateAllWin(); } // #40479# GetGridCoarse() const449cdf0e10cSrcweir const Size& GetGridCoarse() const { return aGridBig; } GetGridFine() const450cdf0e10cSrcweir const Size& GetGridFine() const { return aGridFin; } 451cdf0e10cSrcweir 452cdf0e10cSrcweir void InvalidateAllWin(); 453cdf0e10cSrcweir void InvalidateAllWin(const Rectangle& rRect, sal_Bool bPlus1Pix=sal_False); 454cdf0e10cSrcweir 455cdf0e10cSrcweir // Wenn die View kein Invalidate() an den Fenstern durchfuehren soll, muss 456cdf0e10cSrcweir // man diese beiden folgenden Methoden ueberladen und entsprechend anders 457cdf0e10cSrcweir // reagieren. 458cdf0e10cSrcweir virtual void InvalidateOneWin(Window& rWin); 459cdf0e10cSrcweir virtual void InvalidateOneWin(Window& rWin, const Rectangle& rRect); 460cdf0e10cSrcweir SetActiveLayer(const String & rName)461cdf0e10cSrcweir void SetActiveLayer(const String& rName) { aAktLayer=rName; } GetActiveLayer() const462cdf0e10cSrcweir const String& GetActiveLayer() const { return aAktLayer; } 463cdf0e10cSrcweir 464cdf0e10cSrcweir // Verlassen einer betretenen Objektgruppe aller sichtbaren Seiten. 465cdf0e10cSrcweir // (wie MsDos chdir ..) 466cdf0e10cSrcweir void LeaveOneGroup(); 467cdf0e10cSrcweir 468cdf0e10cSrcweir // Verlassen aller betretenen Objektgruppen aller sichtbaren Seiten. 469cdf0e10cSrcweir // (wie MsDos chdir \) 470cdf0e10cSrcweir void LeaveAllGroup(); 471cdf0e10cSrcweir 472cdf0e10cSrcweir // Feststellen, ob Leave sinnvoll ist. 473cdf0e10cSrcweir bool IsGroupEntered() const; 474cdf0e10cSrcweir 475cdf0e10cSrcweir // DefaultAttribute an der View: Neu erzeugte Objekte bekommen diese 476cdf0e10cSrcweir // Attribute direkt nach dem Erzeugen erstmal zugewiesen. 477cdf0e10cSrcweir void SetDefaultAttr(const SfxItemSet& rAttr, sal_Bool bReplaceAll); GetDefaultAttr() const478cdf0e10cSrcweir const SfxItemSet& GetDefaultAttr() const { return aDefaultAttr; } 479cdf0e10cSrcweir void SetDefaultStyleSheet(SfxStyleSheet* pStyleSheet, sal_Bool bDontRemoveHardAttr); GetDefaultStyleSheet() const480cdf0e10cSrcweir SfxStyleSheet* GetDefaultStyleSheet() const { return pDefaultStyleSheet; } 481cdf0e10cSrcweir 482cdf0e10cSrcweir void SetNotPersistDefaultAttr(const SfxItemSet& rAttr, sal_Bool bReplaceAll); 483cdf0e10cSrcweir void MergeNotPersistDefaultAttr(SfxItemSet& rAttr, sal_Bool bOnlyHardAttr) const; 484cdf0e10cSrcweir 485cdf0e10cSrcweir // Aufziehen eines animierten Rechtecks fuer Applikationsspeziefische 486cdf0e10cSrcweir // Verwendung. Alle Positionsangaben in logischen View-Koordinaten. 487cdf0e10cSrcweir // pOut bezeichnet das OutputDevice, in das animierte Rechteck dargestellt 488cdf0e10cSrcweir // werden soll. Wird NULL uebergeben, wird es in allen an der View 489cdf0e10cSrcweir // angemeldeten OutputDevices gleichzeitig dargestellt. 490cdf0e10cSrcweir void BegEncirclement(const Point& rPnt); 491cdf0e10cSrcweir void MovEncirclement(const Point& rPnt); 492cdf0e10cSrcweir Rectangle EndEncirclement(sal_Bool bNoJustify = sal_False); 493cdf0e10cSrcweir void BrkEncirclement(); IsEncirclement() const494cdf0e10cSrcweir sal_Bool IsEncirclement() const { return (0L != mpEncirclementOverlay); } 495cdf0e10cSrcweir 496cdf0e10cSrcweir // use this mode as mode to draw all internal GraphicManager objects with GetGraphicManagerDrawMode() const497cdf0e10cSrcweir sal_uIntPtr GetGraphicManagerDrawMode() const { return nGraphicManagerDrawMode; } SetGraphicManagerDrawMode(sal_uIntPtr nMode)498cdf0e10cSrcweir void SetGraphicManagerDrawMode( sal_uIntPtr nMode ) { nGraphicManagerDrawMode = nMode; } 499cdf0e10cSrcweir 500cdf0e10cSrcweir // SwapIn (z.B. von Grafiken) asynchron durchfuehren. Also nicht 501cdf0e10cSrcweir // beim Paint sofort nachladen, sondern dort das Nachladen anstossen. 502cdf0e10cSrcweir // Nach Abschluss des Nachladens wird das Objekt dann angezeigt. 503cdf0e10cSrcweir // Hat nur z.Zt. Wirkung, wenn SwapGraphics am Model eingeschaltet ist. 504cdf0e10cSrcweir // Default=FALSE. Flag ist nicht persistent. IsSwapAsynchron() const505cdf0e10cSrcweir sal_Bool IsSwapAsynchron() const { return bSwapAsynchron; } SetSwapAsynchron(sal_Bool bJa=sal_True)506cdf0e10cSrcweir void SetSwapAsynchron(sal_Bool bJa=sal_True) { bSwapAsynchron=bJa; } 507cdf0e10cSrcweir virtual sal_Bool KeyInput(const KeyEvent& rKEvt, Window* pWin); 508cdf0e10cSrcweir MouseButtonDown(const MouseEvent &,Window *)509cdf0e10cSrcweir virtual sal_Bool MouseButtonDown(const MouseEvent& /*rMEvt*/, Window* /*pWin*/) { return sal_False; } MouseButtonUp(const MouseEvent &,Window *)510cdf0e10cSrcweir virtual sal_Bool MouseButtonUp(const MouseEvent& /*rMEvt*/, Window* /*pWin*/) { return sal_False; } MouseMove(const MouseEvent &,Window *)511cdf0e10cSrcweir virtual sal_Bool MouseMove(const MouseEvent& /*rMEvt*/, Window* /*pWin*/) { return sal_False; } Command(const CommandEvent &,Window *)512cdf0e10cSrcweir virtual sal_Bool Command(const CommandEvent& /*rCEvt*/, Window* /*pWin*/) { return sal_False; } Cut(sal_uIntPtr=SDR_ANYFORMAT)513cdf0e10cSrcweir sal_Bool Cut(sal_uIntPtr /*nFormat*/=SDR_ANYFORMAT) { return sal_False; } Yank(sal_uIntPtr=SDR_ANYFORMAT)514cdf0e10cSrcweir sal_Bool Yank(sal_uIntPtr /*nFormat*/=SDR_ANYFORMAT) { return sal_False; } Paste(Window * =NULL,sal_uIntPtr=SDR_ANYFORMAT)515cdf0e10cSrcweir sal_Bool Paste(Window* /*pWin*/=NULL, sal_uIntPtr /*nFormat*/=SDR_ANYFORMAT) { return sal_False; } 516cdf0e10cSrcweir 517cdf0e10cSrcweir /* new interface src537 */ 518cdf0e10cSrcweir sal_Bool GetAttributes(SfxItemSet& rTargetSet, sal_Bool bOnlyHardAttr=sal_False) const; 519cdf0e10cSrcweir 520cdf0e10cSrcweir sal_Bool SetAttributes(const SfxItemSet& rSet, sal_Bool bReplaceAll); 521cdf0e10cSrcweir SfxStyleSheet* GetStyleSheet() const; // SfxStyleSheet* GetStyleSheet(sal_Bool& rOk) const; 522cdf0e10cSrcweir sal_Bool SetStyleSheet(SfxStyleSheet* pStyleSheet, sal_Bool bDontRemoveHardAttr); 523cdf0e10cSrcweir 524cdf0e10cSrcweir virtual void MakeVisible(const Rectangle& rRect, Window& rWin); 525cdf0e10cSrcweir 526cdf0e10cSrcweir // Fuer PlugIn. Wird vom Paint des OLE-Obj gerufen. 527cdf0e10cSrcweir virtual void DoConnect(SdrOle2Obj* pOleObj); 528cdf0e10cSrcweir 529cdf0e10cSrcweir // Animation aktivieren/deaktivieren fuer ::Paint 530cdf0e10cSrcweir // wird z.Zt. ausgewertet von SdrGrafObj, wenn in dem eine Animation steckt 531cdf0e10cSrcweir // Das Unterbinden der automatischen Animation wird z.B. fuer die Dia-Show benoetigt IsAnimationEnabled() const532cdf0e10cSrcweir sal_Bool IsAnimationEnabled() const { return ( SDR_ANIMATION_ANIMATE == eAnimationMode ); } 533cdf0e10cSrcweir void SetAnimationEnabled( sal_Bool bEnable=sal_True ); 534cdf0e10cSrcweir 535cdf0e10cSrcweir // set/unset pause state for animations IsAnimationPause() const536cdf0e10cSrcweir bool IsAnimationPause() const { return bAnimationPause; } 537cdf0e10cSrcweir void SetAnimationPause( bool bSet ); 538cdf0e10cSrcweir 539cdf0e10cSrcweir // Verhalten beim Starten von Animation im Paint-Handler: 540cdf0e10cSrcweir // 1. Animation normal starten( SDR_ANIMATION_ANIMATE ) => DEFAULT 541cdf0e10cSrcweir // 2. Nur die Ersatzdarstellung der Animation zeichnen ( SDR_ANIMATION_DONT_ANIMATE ) 542cdf0e10cSrcweir // 3. Nicht starten und nichts ersatzweise ausgeben ( SDR_ANIMATION_DISABLE ) 543cdf0e10cSrcweir void SetAnimationMode( const SdrAnimationMode eMode ); GetAnimationMode() const544cdf0e10cSrcweir SdrAnimationMode GetAnimationMode() const { return eAnimationMode; } 545cdf0e10cSrcweir 546cdf0e10cSrcweir // bei bShow=sal_False wird der Browser destruiert 547cdf0e10cSrcweir #ifdef DBG_UTIL 548cdf0e10cSrcweir void ShowItemBrowser(sal_Bool bShow=sal_True); IsItemBrowserVisible() const549cdf0e10cSrcweir sal_Bool IsItemBrowserVisible() const { return pItemBrowser!=NULL && ((Window*)pItemBrowser)->IsVisible(); } GetItemBrowser() const550cdf0e10cSrcweir Window* GetItemBrowser() const { return (Window*)pItemBrowser; } 551cdf0e10cSrcweir #endif 552cdf0e10cSrcweir 553cdf0e10cSrcweir // Muss von App beim Scrollen usw. gerufen werden, damit ein u.U. 554cdf0e10cSrcweir // aktives FormularControl mitverschoben werden kann 555cdf0e10cSrcweir void VisAreaChanged(const OutputDevice* pOut=NULL); 556cdf0e10cSrcweir void VisAreaChanged(const SdrPageWindow& rWindow); 557cdf0e10cSrcweir IsPrintPreview() const558cdf0e10cSrcweir sal_Bool IsPrintPreview() const { return bPrintPreview; } SetPrintPreview(bool bOn=true)559cdf0e10cSrcweir void SetPrintPreview(bool bOn = true) { bPrintPreview=bOn; } 560cdf0e10cSrcweir 561cdf0e10cSrcweir const svtools::ColorConfig& getColorConfig() const; 562cdf0e10cSrcweir 563cdf0e10cSrcweir virtual void onChangeColorConfig(); 564cdf0e10cSrcweir 565cdf0e10cSrcweir // #103834# Set background color for svx at SdrPageViews 566cdf0e10cSrcweir void SetApplicationBackgroundColor(Color aBackgroundColor); 567cdf0e10cSrcweir 568cdf0e10cSrcweir // #103911# Set document color for svx at SdrPageViews 569cdf0e10cSrcweir void SetApplicationDocumentColor(Color aDocumentColor); 570cdf0e10cSrcweir 571cdf0e10cSrcweir // #i38135# 572cdf0e10cSrcweir // Sets the timer for Object animations and restarts. 573cdf0e10cSrcweir void SetAnimationTimer(sal_uInt32 nTime); 574cdf0e10cSrcweir 575cdf0e10cSrcweir // access to Drawinglayer configuration options getOptionsDrawinglayer() const576cdf0e10cSrcweir const SvtOptionsDrawinglayer& getOptionsDrawinglayer() const { return maDrawinglayerOpt; } 577cdf0e10cSrcweir }; 578cdf0e10cSrcweir 579cdf0e10cSrcweir #endif //_SVDPNTV_HXX 580cdf0e10cSrcweir 581