blob: 4a2e0204c00d66f47e70b309fca6ffaf7f89cd7e [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 _SVDPNTV_HXX
#define _SVDPNTV_HXX
#include <svl/brdcst.hxx>
#include <svl/lstner.hxx>
#include <svl/smplhint.hxx>
#include <svl/undo.hxx>
#include <svx/svddrag.hxx>
#include <svx/svdlayer.hxx> // fuer SetOfByte
#include <vcl/window.hxx>
#include <svtools/colorcfg.hxx>
#include <com/sun/star/awt/XControlContainer.hpp>
#include <svl/itemset.hxx>
#include <vcl/timer.hxx>
#include "svx/svxdllapi.h"
#include <svtools/optionsdrawinglayer.hxx>
#include <unotools/options.hxx>
//************************************************************
// Pre-Defines
//************************************************************
class SdrPageWindow;
namespace com { namespace sun { namespace star { namespace awt {
class XControlContainer;
}}}}
class SdrPage;
class SdrView;
class SfxItemSet;
class SfxStyleSheet;
class SdrOle2Obj;
class SdrModel;
class SdrObject;
class SdrViewUserMarker;
class B2dIAOManager;
#ifdef DBG_UTIL
class SdrItemBrowser;
#endif
namespace sdr { namespace contact {
class ViewObjectContactRedirector;
}}
//************************************************************
// Defines for AnimationMode
//************************************************************
enum SdrAnimationMode
{
SDR_ANIMATION_ANIMATE,
SDR_ANIMATION_DONT_ANIMATE,
SDR_ANIMATION_DISABLE
};
//************************************************************
// Typedef's und defines
//************************************************************
typedef unsigned char TRISTATE;
#define FUZZY (2)
#define SDR_ANYFORMAT (0xFFFFFFFF)
#define SDR_ANYITEM (0xFFFF)
#define SDRVIEWWIN_NOTFOUND (0xFFFF)
////////////////////////////////////////////////////////////////////////////////////////////////////
class SdrPaintView;
namespace sdr
{
namespace contact
{
class ViewObjectContactRedirector;
} // end of namespace contact
} // end of namespace sdr
////////////////////////////////////////////////////////////////////////////////////////////////////
class SVX_DLLPUBLIC SvxViewHint : public SfxHint
{
public:
enum HintType { SVX_HINT_VIEWCHANGED };
TYPEINFO();
SvxViewHint (HintType eType);
HintType GetHintType (void) const;
private:
HintType meHintType;
};
// typedefs for a list of SdrPaintWindows
class SdrPaintWindow;
typedef ::std::vector< SdrPaintWindow* > SdrPaintWindowVector;
//////////////////////////////////////////////////////////////////////////////
// helper to convert any GDIMetaFile to a good quality BitmapEx,
// using default parameters and graphic::XPrimitive2DRenderer
BitmapEx SVX_DLLPUBLIC convertMetafileToBitmapEx(
const GDIMetaFile& rMtf,
const basegfx::B2DRange& rTargetRange,
const sal_uInt32 nMaximumQuadraticPixels = 500000);
////////////////////////////////////////////////////////////////////////////////////////////////////
class SVX_DLLPUBLIC SdrPaintView : public SfxListener, public SfxRepeatTarget, public SfxBroadcaster, public ::utl::ConfigurationListener
{
friend class SdrPageView;
friend class FrameAnimator;
friend class SdrGrafObj;
protected:
// #114409#-2 Migrate Encirclement
class ImplEncirclementOverlay* mpEncirclementOverlay;
SdrModel* pMod;
#ifdef DBG_UTIL
SdrItemBrowser* pItemBrowser;
#endif
const OutputDevice* pActualOutDev; // Nur zum vergleichen
OutputDevice* pDragWin;
SfxStyleSheet* pDefaultStyleSheet;
String aAktLayer; // Aktueller Zeichenlayer
String aMeasureLayer; // Aktueller Layer fuer Bemassung
// Container aPagV; // Liste von SdrPageViews
SdrPageView* mpPageView;
// All windows this view is displayed on
SdrPaintWindowVector maPaintWindows;
MapMode aActualMapMode;
Size aGridBig; // muss dann mal raus
Size aGridFin; // muss dann mal raus
SdrDragStat aDragStat;
Rectangle aMaxWorkArea;
SfxItemSet aDefaultAttr;
Timer aComeBackTimer;
SdrAnimationMode eAnimationMode;
sal_uInt16 nHitTolPix;
sal_uInt16 nMinMovPix;
sal_uInt16 nHitTolLog;
sal_uInt16 nMinMovLog;
sal_uIntPtr nMasterCacheMode;
sal_uIntPtr nGraphicManagerDrawMode;
// hold an incarnation of Drawinglayer configuration options
SvtOptionsDrawinglayer maDrawinglayerOpt;
unsigned bPageVisible : 1;
unsigned bPageBorderVisible : 1;
unsigned bBordVisible : 1;
unsigned bGridVisible : 1;
unsigned bGridFront : 1;
unsigned bHlplVisible : 1;
unsigned bHlplFront : 1;
unsigned bGlueVisible : 1; // Persistent. Klebepunkte anzeigen
unsigned bGlueVisible2 : 1; // Klebepunkte auch bei GluePointEdit anzeigen
unsigned bGlueVisible3 : 1; // Klebepunkte auch bei EdgeTool anzeigen
unsigned bGlueVisible4 : 1; // Klebepunkte anzeigen, wenn 1 Edge markiert
unsigned bRestoreColors : 1; // Pens und Brushes werden zurueckgesetzt.
unsigned bSomeObjChgdFlag : 1;
unsigned bSwapAsynchron : 1;
unsigned bPrintPreview : 1;
// sal_Bool fuer die Verwaltung des anzuzeigenden Status
// Gruppe Betreten/Verlassen. Default ist sal_True, wird aber
// beispielsweise beim Chart auf sal_False gesetzt, da dort
// die Ghosted-Effekte zur Darstellug unerwuenscht sind.
unsigned bVisualizeEnteredGroup : 1;
unsigned bAnimationPause : 1;
// #114898#
// Flag which decides if buffered output for this view is allowed. When
// set, PreRendering for PageView rendering will be used. Default is sal_False
unsigned mbBufferedOutputAllowed : 1;
// #114898#
// Flag which decides if buffered overlay for this view is allowed. When
// set, the output will be buffered in an overlay vdev. When not, overlay is
// directly painted to OutDev. Default is sal_False.
unsigned mbBufferedOverlayAllowed : 1;
// allow page painting at all?
unsigned mbPagePaintingAllowed : 1;
// is this a preview renderer?
unsigned mbPreviewRenderer : 1;
// flags for calc and sw for suppressing OLE, CHART or DRAW objects
unsigned mbHideOle : 1;
unsigned mbHideChart : 1;
unsigned mbHideDraw : 1; // hide draw objects other than form controls
unsigned mbHideFormControl : 1; // hide form controls only
public:
// #114898#
// interface for PagePaintingAllowed flag
bool IsBufferedOutputAllowed() const;
void SetBufferedOutputAllowed(bool bNew);
// interface for BufferedOverlayAllowed flag
bool IsBufferedOverlayAllowed() const;
void SetBufferedOverlayAllowed(bool bNew);
// allow page painting at all?
sal_Bool IsPagePaintingAllowed() const;
void SetPagePaintingAllowed(bool bNew);
protected:
svtools::ColorConfig maColorConfig;
Color maGridColor;
// interface to SdrPaintWindow
protected:
void AppendPaintWindow(SdrPaintWindow& rNew);
SdrPaintWindow* RemovePaintWindow(SdrPaintWindow& rOld);
void ConfigurationChanged( ::utl::ConfigurationBroadcaster*, sal_uInt32 );
public:
sal_uInt32 PaintWindowCount() const { return maPaintWindows.size(); }
SdrPaintWindow* FindPaintWindow(const OutputDevice& rOut) const;
SdrPaintWindow* GetPaintWindow(sal_uInt32 nIndex) const;
// replacement for GetWin(0), may return 0L (!)
OutputDevice* GetFirstOutputDevice() const;
private:
SVX_DLLPRIVATE void ImpClearVars();
DECL_LINK(ImpComeBackHdl,Timer*);
protected:
sal_uInt16 ImpGetMinMovLogic(short nMinMov, const OutputDevice* pOut) const;
sal_uInt16 ImpGetHitTolLogic(short nHitTol, const OutputDevice* pOut) const;
// Wenn man den IdleStatus des Systems nicht abwarten will (auf const geschummelt):
void FlushComeBackTimer() const;
void TheresNewMapMode();
void ImpSetGlueVisible2(bool bOn) { if (bGlueVisible2!=(unsigned)bOn) { bGlueVisible2=bOn; if (!bGlueVisible && !bGlueVisible3 && !bGlueVisible4) GlueInvalidate(); } }
void ImpSetGlueVisible3(bool bOn) { if (bGlueVisible3!=(unsigned)bOn) { bGlueVisible3=bOn; if (!bGlueVisible && !bGlueVisible2 && !bGlueVisible4) GlueInvalidate(); } }
void ImpSetGlueVisible4(bool bOn) { if (bGlueVisible4!=(unsigned)bOn) { bGlueVisible4=bOn; if (!bGlueVisible && !bGlueVisible2 && !bGlueVisible3) GlueInvalidate(); } }
sal_Bool ImpIsGlueVisible2() const { return bGlueVisible2; }
sal_Bool ImpIsGlueVisible3() const { return bGlueVisible3; }
sal_Bool ImpIsGlueVisible4() const { return bGlueVisible4; }
public:
sal_Bool ImpIsGlueVisible() { return bGlueVisible || bGlueVisible2 || bGlueVisible3 || bGlueVisible4; }
protected:
virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
void GlueInvalidate() const;
void ShowEncirclement(OutputDevice* pOut);
void HideEncirclement(OutputDevice* pOut);
void DrawEncirclement(OutputDevice* pOut) const;
// ModelHasChanged wird gerufen, sobald nach beliebig vielen HINT_OBJCHG
// das System wieder idle ist (StarView-Timer). Wer diese Methode ueberlaed,
// muss unbedingt ModelHasChanged() der Basisklasse rufen.
virtual void ModelHasChanged();
protected:
// #i71538# make constructors of SdrView sub-components protected to avoid incomplete incarnations which may get casted to SdrView
SdrPaintView(SdrModel* pModel1, OutputDevice* pOut = 0L);
virtual ~SdrPaintView();
public:
TYPEINFO();
virtual void ClearPageView();
// virtual void ClearAll();
// virtual void Clear(); // PageViews loeschen, Markierungen weg, ...
SdrModel* GetModel() const { return pMod; }
virtual sal_Bool IsAction() const;
virtual void MovAction(const Point& rPnt);
virtual void EndAction();
virtual void BckAction();
virtual void BrkAction(); // Alle Actions z.B. Draggen abbrechen.
virtual void TakeActionRect(Rectangle& rRect) const;
// info about TextEdit. Default is sal_False.
virtual bool IsTextEdit() const;
// info about TextEditPageView. Default is 0L.
virtual SdrPageView* GetTextEditPageView() const;
// Muss dann bei jedem Fensterwechsel (wenn die SdrView in mehreren
// Fenstern gleichzeitig dargestellt wird (->z.B. Splitter)) und bei
// jedem MapMode(Scaling)-wechsel gerufen werden, damit ich aus meinen
// Pixelwerten logische Werte berechnen kann.
void SetActualWin(const OutputDevice* pWin);
void SetMinMoveDistancePixel(sal_uInt16 nVal) { nMinMovPix=nVal; TheresNewMapMode(); }
sal_uInt16 GetMinMoveDistancePixel() const { return (sal_uInt16)nMinMovPix; }
void SetHitTolerancePixel(sal_uInt16 nVal) { nHitTolPix=nVal; TheresNewMapMode(); }
sal_uInt16 GetHitTolerancePixel() const { return (sal_uInt16)nHitTolPix; }
// data read access on logic HitTolerance and MinMoveTolerance
sal_uInt16 getHitTolLog() const { return nHitTolLog; }
sal_uInt16 getMinMovLog() const { return nMinMovLog; }
// Flag zur Visualisierung von Gruppen abfragen/testen
sal_Bool DoVisualizeEnteredGroup() const { return bVisualizeEnteredGroup; }
void SetVisualizeEnteredGroup(sal_Bool bNew) { bVisualizeEnteredGroup = bNew; }
// Am DragStatus laesst sich beispielsweise erfragen, welche
// entfernung bereits gedraggd wurde, etc.
const SdrDragStat& GetDragStat() const { return aDragStat; }
// Anmelden/Abmelden einer PageView an der View.
// Dieselbe // Seite kann nicht mehrfach angemeldet werden.
// Methoden mit dem Suffix PgNum erwarten als numerischen Parameter
// eine Seitennummer (0...). Methoden mit dem Suffix PvNum erwarten
// degagen als numerischen Parameter die Nummer der PageView an der
// SdrView (Iterieren ueber alle angemeldeten Pages).
virtual SdrPageView* ShowSdrPage(SdrPage* pPage);
virtual void HideSdrPage();
// Iterieren ueber alle angemeldeten PageViews
// sal_uInt16 GetPageViewCount() const { return sal_uInt16(aPagV.Count()); }
// SdrPageView* GetPageViewByIndex(sal_uInt16 nPvNum) const { return ((SdrPageView*)aPagV.GetObject(nPvNum)); }
SdrPageView* GetSdrPageView() const { return mpPageView; }
// Pageview einer bestimmten Seite ermitteln
// SdrPageView* GetPageViewByPage(const SdrPage* pPage) const;
// sal_uInt16 GetIndexByPageView(const SdrPageView* pPV) const;
// Test, ob eine Seite getroffen
// SdrPageView* HitPage(const Point& rPnt) const;
// Die Seite, die dem Punkt am naechsten ist. Liefert nur NULL,
// wenn absolut keine Seite angemeldet ist.
// SdrPageView* GetPageViewByPosition(const Point& rPnt) const;
// Eine SdrView kann auf mehreren Fenstern gleichzeitig abgebiltet sein:
virtual void AddWindowToPaintView(OutputDevice* pNewWin);
virtual void DeleteWindowFromPaintView(OutputDevice* pOldWin);
void SetLayerVisible(const String& rName, sal_Bool bShow=sal_True);
bool IsLayerVisible(const String& rName) const;
void SetAllLayersVisible(sal_Bool bShow=sal_True);
void SetLayerLocked(const String& rName, sal_Bool bLock=sal_True);
bool IsLayerLocked(const String& rName) const;
void SetAllLayersLocked(sal_Bool bLock=sal_True);
void SetLayerPrintable(const String& rName, sal_Bool bPrn=sal_True);
bool IsLayerPrintable(const String& rName) const;
void SetAllLayersPrintable(sal_Bool bPrn=sal_True);
// PrePaint call forwarded from app windows
void PrePaint();
// PostPaint call forwarded from app windows
void PostPaint();
////////////////////////////////////////////////////////////////////////////////////////////////////
// used internally for Draw/Impress/sch/chart2
virtual void CompleteRedraw(OutputDevice* pOut, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0);
// #i72889# used from CompleteRedraw() implementation internally, added to be able to do a complete redraw in single steps
//
// BeginCompleteRedraw returns (or even creates) a SdrPaintWindow whcih shall then be used as
// target for paints. Since paints may be buffered, use it's GetTargetOutputDevice() method which will
// return the buffer in case of bufered.
// DoCompleteRedraw draws the DrawingLayer hierarchy then.
// EndCompleteRedraw does the necessary refreshes, evtl. paints text edit and overlay and evtl destroys the
// SdrPaintWindow again. This means: the SdrPaintWindow is no longer safe after this closing call.
virtual SdrPaintWindow* BeginCompleteRedraw(OutputDevice* pOut);
virtual void DoCompleteRedraw(SdrPaintWindow& rPaintWindow, const Region& rReg, sdr::contact::ViewObjectContactRedirector* pRedirector = 0);
virtual void EndCompleteRedraw(SdrPaintWindow& rPaintWindow, bool bPaintFormLayer);
////////////////////////////////////////////////////////////////////////////////////////////////////
// used for the other applications basctl/sc/sw which call DrawLayer at PageViews
// #i74769# Interface change to use common BeginCompleteRedraw/EndCompleteRedraw
// #i76114# bDisableIntersect disables intersecting rReg with the Window's paint region
SdrPaintWindow* BeginDrawLayers(OutputDevice* pOut, const Region& rReg, bool bDisableIntersect = false);
void EndDrawLayers(SdrPaintWindow& rPaintWindow, bool bPaintFormLayer);
protected:
////////////////////////////////////////////////////////////////////////////////////////////////////
// used to paint the form layer after the PreRender device is flushed (painted) to the window.
void ImpFormLayerDrawing(SdrPaintWindow& rPaintWindow) const;
public:
sal_Bool IsPageVisible() const { return bPageVisible; } // Seite (weisse Flaeche) malen oder nicht
sal_Bool IsPageBorderVisible() const { return bPageBorderVisible; } // Seite (weisse Flaeche) malen oder nicht
sal_Bool IsBordVisible() const { return bBordVisible; } // Seitenrandlinie malen oder nicht
sal_Bool IsGridVisible() const { return bGridVisible; } // Rastergitter malen oder nicht
sal_Bool IsGridFront() const { return bGridFront ; } // Rastergitter ueber die Objekte druebermalen oder dahinter
sal_Bool IsHlplVisible() const { return bHlplVisible; } // Hilfslinien der Seiten malen oder nicht
sal_Bool IsHlplFront() const { return bHlplFront ; } // Hilfslinie ueber die Objekte druebermalen oder dahinter
sal_Bool IsGlueVisible() const { return bGlueVisible; } // Konnektoren der objekte sichtbar oder nicht
Color GetGridColor() const;
void SetPageVisible(bool bOn = true) { bPageVisible=bOn; InvalidateAllWin(); }
void SetPageBorderVisible(bool bOn = true) { bPageBorderVisible=bOn; InvalidateAllWin(); }
void SetBordVisible(bool bOn = true) { bBordVisible=bOn; InvalidateAllWin(); }
void SetGridVisible(bool bOn = true) { bGridVisible=bOn; InvalidateAllWin(); }
void SetGridFront(bool bOn = true) { bGridFront =bOn; InvalidateAllWin(); }
void SetHlplVisible(bool bOn = true) { bHlplVisible=bOn; InvalidateAllWin(); }
void SetHlplFront(bool bOn = true) { bHlplFront =bOn; InvalidateAllWin(); }
void SetGlueVisible(bool bOn = true) { if (bGlueVisible!=(unsigned)bOn) { bGlueVisible=bOn; if (!bGlueVisible2 && !bGlueVisible3 && !bGlueVisible4) GlueInvalidate(); } }
void SetGridColor( Color aColor );
sal_Bool IsPreviewRenderer() const { return (sal_Bool )mbPreviewRenderer; }
void SetPreviewRenderer(bool bOn) { if((unsigned)bOn != mbPreviewRenderer) { mbPreviewRenderer=bOn; }}
// access methods for calc and sw hide object modes
bool getHideOle() const { return mbHideOle; }
bool getHideChart() const { return mbHideChart; }
bool getHideDraw() const { return mbHideDraw; }
bool getHideFormControl() const { return mbHideFormControl; }
void setHideOle(bool bNew) { if(bNew != (bool)mbHideOle) mbHideOle = bNew; }
void setHideChart(bool bNew) { if(bNew != (bool)mbHideChart) mbHideChart = bNew; }
void setHideDraw(bool bNew) { if(bNew != (bool)mbHideDraw) mbHideDraw = bNew; }
void setHideFormControl(bool bNew) { if(bNew != (bool)mbHideFormControl) mbHideFormControl = bNew; }
void SetGridCoarse(const Size& rSiz) { aGridBig=rSiz; }
void SetGridFine(const Size& rSiz) { aGridFin=rSiz; if (aGridFin.Height()==0) aGridFin.Height()=aGridFin.Width(); if (bGridVisible) InvalidateAllWin(); } // #40479#
const Size& GetGridCoarse() const { return aGridBig; }
const Size& GetGridFine() const { return aGridFin; }
void InvalidateAllWin();
void InvalidateAllWin(const Rectangle& rRect, sal_Bool bPlus1Pix=sal_False);
// Wenn die View kein Invalidate() an den Fenstern durchfuehren soll, muss
// man diese beiden folgenden Methoden ueberladen und entsprechend anders
// reagieren.
virtual void InvalidateOneWin(Window& rWin);
virtual void InvalidateOneWin(Window& rWin, const Rectangle& rRect);
void SetActiveLayer(const String& rName) { aAktLayer=rName; }
const String& GetActiveLayer() const { return aAktLayer; }
// Verlassen einer betretenen Objektgruppe aller sichtbaren Seiten.
// (wie MsDos chdir ..)
void LeaveOneGroup();
// Verlassen aller betretenen Objektgruppen aller sichtbaren Seiten.
// (wie MsDos chdir \)
void LeaveAllGroup();
// Feststellen, ob Leave sinnvoll ist.
bool IsGroupEntered() const;
// DefaultAttribute an der View: Neu erzeugte Objekte bekommen diese
// Attribute direkt nach dem Erzeugen erstmal zugewiesen.
void SetDefaultAttr(const SfxItemSet& rAttr, sal_Bool bReplaceAll);
const SfxItemSet& GetDefaultAttr() const { return aDefaultAttr; }
void SetDefaultStyleSheet(SfxStyleSheet* pStyleSheet, sal_Bool bDontRemoveHardAttr);
SfxStyleSheet* GetDefaultStyleSheet() const { return pDefaultStyleSheet; }
void SetNotPersistDefaultAttr(const SfxItemSet& rAttr, sal_Bool bReplaceAll);
void MergeNotPersistDefaultAttr(SfxItemSet& rAttr, sal_Bool bOnlyHardAttr) const;
// Aufziehen eines animierten Rechtecks fuer Applikationsspeziefische
// Verwendung. Alle Positionsangaben in logischen View-Koordinaten.
// pOut bezeichnet das OutputDevice, in das animierte Rechteck dargestellt
// werden soll. Wird NULL uebergeben, wird es in allen an der View
// angemeldeten OutputDevices gleichzeitig dargestellt.
void BegEncirclement(const Point& rPnt);
void MovEncirclement(const Point& rPnt);
Rectangle EndEncirclement(sal_Bool bNoJustify = sal_False);
void BrkEncirclement();
sal_Bool IsEncirclement() const { return (0L != mpEncirclementOverlay); }
// use this mode as mode to draw all internal GraphicManager objects with
sal_uIntPtr GetGraphicManagerDrawMode() const { return nGraphicManagerDrawMode; }
void SetGraphicManagerDrawMode( sal_uIntPtr nMode ) { nGraphicManagerDrawMode = nMode; }
// SwapIn (z.B. von Grafiken) asynchron durchfuehren. Also nicht
// beim Paint sofort nachladen, sondern dort das Nachladen anstossen.
// Nach Abschluss des Nachladens wird das Objekt dann angezeigt.
// Hat nur z.Zt. Wirkung, wenn SwapGraphics am Model eingeschaltet ist.
// Default=FALSE. Flag ist nicht persistent.
sal_Bool IsSwapAsynchron() const { return bSwapAsynchron; }
void SetSwapAsynchron(sal_Bool bJa=sal_True) { bSwapAsynchron=bJa; }
virtual sal_Bool KeyInput(const KeyEvent& rKEvt, Window* pWin);
virtual sal_Bool MouseButtonDown(const MouseEvent& /*rMEvt*/, Window* /*pWin*/) { return sal_False; }
virtual sal_Bool MouseButtonUp(const MouseEvent& /*rMEvt*/, Window* /*pWin*/) { return sal_False; }
virtual sal_Bool MouseMove(const MouseEvent& /*rMEvt*/, Window* /*pWin*/) { return sal_False; }
virtual sal_Bool Command(const CommandEvent& /*rCEvt*/, Window* /*pWin*/) { return sal_False; }
sal_Bool Cut(sal_uIntPtr /*nFormat*/=SDR_ANYFORMAT) { return sal_False; }
sal_Bool Yank(sal_uIntPtr /*nFormat*/=SDR_ANYFORMAT) { return sal_False; }
sal_Bool Paste(Window* /*pWin*/=NULL, sal_uIntPtr /*nFormat*/=SDR_ANYFORMAT) { return sal_False; }
/* new interface src537 */
sal_Bool GetAttributes(SfxItemSet& rTargetSet, sal_Bool bOnlyHardAttr=sal_False) const;
sal_Bool SetAttributes(const SfxItemSet& rSet, sal_Bool bReplaceAll);
SfxStyleSheet* GetStyleSheet() const; // SfxStyleSheet* GetStyleSheet(sal_Bool& rOk) const;
sal_Bool SetStyleSheet(SfxStyleSheet* pStyleSheet, sal_Bool bDontRemoveHardAttr);
virtual void MakeVisible(const Rectangle& rRect, Window& rWin);
// Fuer PlugIn. Wird vom Paint des OLE-Obj gerufen.
virtual void DoConnect(SdrOle2Obj* pOleObj);
// Animation aktivieren/deaktivieren fuer ::Paint
// wird z.Zt. ausgewertet von SdrGrafObj, wenn in dem eine Animation steckt
// Das Unterbinden der automatischen Animation wird z.B. fuer die Dia-Show benoetigt
sal_Bool IsAnimationEnabled() const { return ( SDR_ANIMATION_ANIMATE == eAnimationMode ); }
void SetAnimationEnabled( sal_Bool bEnable=sal_True );
// set/unset pause state for animations
bool IsAnimationPause() const { return bAnimationPause; }
void SetAnimationPause( bool bSet );
// Verhalten beim Starten von Animation im Paint-Handler:
// 1. Animation normal starten( SDR_ANIMATION_ANIMATE ) => DEFAULT
// 2. Nur die Ersatzdarstellung der Animation zeichnen ( SDR_ANIMATION_DONT_ANIMATE )
// 3. Nicht starten und nichts ersatzweise ausgeben ( SDR_ANIMATION_DISABLE )
void SetAnimationMode( const SdrAnimationMode eMode );
SdrAnimationMode GetAnimationMode() const { return eAnimationMode; }
// bei bShow=sal_False wird der Browser destruiert
#ifdef DBG_UTIL
void ShowItemBrowser(sal_Bool bShow=sal_True);
sal_Bool IsItemBrowserVisible() const { return pItemBrowser!=NULL && ((Window*)pItemBrowser)->IsVisible(); }
Window* GetItemBrowser() const { return (Window*)pItemBrowser; }
#endif
// Muss von App beim Scrollen usw. gerufen werden, damit ein u.U.
// aktives FormularControl mitverschoben werden kann
void VisAreaChanged(const OutputDevice* pOut=NULL);
void VisAreaChanged(const SdrPageWindow& rWindow);
sal_Bool IsPrintPreview() const { return bPrintPreview; }
void SetPrintPreview(bool bOn = true) { bPrintPreview=bOn; }
const svtools::ColorConfig& getColorConfig() const;
virtual void onChangeColorConfig();
// #103834# Set background color for svx at SdrPageViews
void SetApplicationBackgroundColor(Color aBackgroundColor);
// #103911# Set document color for svx at SdrPageViews
void SetApplicationDocumentColor(Color aDocumentColor);
// #i38135#
// Sets the timer for Object animations and restarts.
void SetAnimationTimer(sal_uInt32 nTime);
// access to Drawinglayer configuration options
const SvtOptionsDrawinglayer& getOptionsDrawinglayer() const { return maDrawinglayerOpt; }
};
#endif //_SVDPNTV_HXX