summaryrefslogtreecommitdiff
path: root/sc/inc/drwlayer.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/inc/drwlayer.hxx')
-rw-r--r--sc/inc/drwlayer.hxx221
1 files changed, 221 insertions, 0 deletions
diff --git a/sc/inc/drwlayer.hxx b/sc/inc/drwlayer.hxx
new file mode 100644
index 000000000000..35e1843719a2
--- /dev/null
+++ b/sc/inc/drwlayer.hxx
@@ -0,0 +1,221 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SC_DRWLAYER_HXX
+#define SC_DRWLAYER_HXX
+
+#include <vcl/graph.hxx>
+#include <svx/fmmodel.hxx>
+#include <svx/svdundo.hxx>
+#include "global.hxx"
+
+class ScDocument;
+class SfxViewShell;
+class SfxObjectShell;
+class ScDrawObjData;
+class ScIMapInfo;
+class ScMacroInfo;
+class IMapObject;
+class ScMarkData;
+class SdrOle2Obj;
+class ScRange;
+class ScAddress;
+
+class ScTabDeletedHint : public SfxHint
+{
+private:
+ SCTAB nTab;
+public:
+ TYPEINFO();
+ ScTabDeletedHint( SCTAB nTabNo = SCTAB_MAX );
+ virtual ~ScTabDeletedHint();
+
+ SCTAB GetTab() { return nTab; }
+};
+
+class ScTabSizeChangedHint : public SfxHint
+{
+private:
+ SCTAB nTab;
+public:
+ TYPEINFO();
+ ScTabSizeChangedHint( SCTAB nTabNo = SCTAB_MAX );
+ virtual ~ScTabSizeChangedHint();
+
+ SCTAB GetTab() { return nTab; }
+};
+
+// Adjusting of detective UserData and draw undo's both have to be in SdrUndoGroup;
+// therefore derived from SdrUndoAction
+
+class ScUndoObjData : public SdrUndoObj
+{
+private:
+ ScAddress aOldStt;
+ ScAddress aOldEnd;
+ ScAddress aNewStt;
+ ScAddress aNewEnd;
+ sal_Bool bHasNew;
+public:
+ ScUndoObjData( SdrObject* pObj, const ScAddress& rOS, const ScAddress& rOE,
+ const ScAddress& rNS, const ScAddress& rNE );
+ ~ScUndoObjData();
+
+ virtual void Undo();
+ virtual void Redo();
+};
+
+class SC_DLLPUBLIC ScDrawLayer : public FmFormModel
+{
+private:
+ String aName;
+ ScDocument* pDoc;
+ SdrUndoGroup* pUndoGroup;
+ sal_Bool bRecording;
+ sal_Bool bAdjustEnabled;
+ sal_Bool bHyphenatorSet;
+
+private:
+ void MoveCells( SCTAB nTab, SCCOL nCol1,SCROW nRow1, SCCOL nCol2,SCROW nRow2,
+ SCsCOL nDx,SCsROW nDy, bool bUpdateNoteCaptionPos );
+
+ void RecalcPos( SdrObject* pObj, ScDrawObjData& rData, bool bNegativePage, bool bUpdateNoteCaptionPos );
+
+public:
+ ScDrawLayer( ScDocument* pDocument, const String& rName );
+ virtual ~ScDrawLayer();
+
+ virtual SdrPage* AllocPage(bool bMasterPage);
+ virtual SdrModel* AllocModel() const;
+ virtual void SetChanged( sal_Bool bFlg = sal_True );
+
+ virtual Window* GetCurDocViewWin();
+ virtual SvStream* GetDocumentStream(SdrDocumentStreamInfo& rStreamInfo) const;
+
+ virtual SdrLayerID GetControlExportLayerId( const SdrObject & ) const;
+
+ sal_Bool HasObjects() const;
+
+ sal_Bool ScAddPage( SCTAB nTab );
+ void ScRemovePage( SCTAB nTab );
+ void ScRenamePage( SCTAB nTab, const String& rNewName );
+ void ScMovePage( sal_uInt16 nOldPos, sal_uInt16 nNewPos );
+ // incl. content, bAlloc=FALSE -> only content
+ void ScCopyPage( sal_uInt16 nOldPos, sal_uInt16 nNewPos, sal_Bool bAlloc );
+
+ ScDocument* GetDocument() const { return pDoc; }
+
+ void UpdateBasic(); // set DocShell Basic in DrawPages
+ void UseHyphenator();
+
+ sal_Bool GetPrintArea( ScRange& rRange, sal_Bool bSetHor, sal_Bool bSetVer ) const;
+
+ // automatic adjustments
+
+ void EnableAdjust( sal_Bool bSet = sal_True ) { bAdjustEnabled = bSet; }
+
+ void BeginCalcUndo();
+ SdrUndoGroup* GetCalcUndo();
+ sal_Bool IsRecording() const { return bRecording; }
+ void AddCalcUndo( SdrUndoAction* pUndo );
+
+ void MoveArea( SCTAB nTab, SCCOL nCol1,SCROW nRow1, SCCOL nCol2,SCROW nRow2,
+ SCsCOL nDx,SCsROW nDy, sal_Bool bInsDel, bool bUpdateNoteCaptionPos = true );
+
+ sal_Bool HasObjectsInRows( SCTAB nTab, SCROW nStartRow, SCROW nEndRow );
+
+ void DeleteObjectsInArea( SCTAB nTab, SCCOL nCol1,SCROW nRow1,
+ SCCOL nCol2,SCROW nRow2 );
+ void DeleteObjectsInSelection( const ScMarkData& rMark );
+
+ void CopyToClip( ScDocument* pClipDoc, SCTAB nTab, const Rectangle& rRange );
+ void CopyFromClip( ScDrawLayer* pClipModel,
+ SCTAB nSourceTab, const Rectangle& rSourceRange,
+ const ScAddress& rDestPos, const Rectangle& rDestRange );
+
+ void SetPageSize( sal_uInt16 nPageNo, const Size& rSize, bool bUpdateNoteCaptionPos = true );
+
+ // mirror or move between positive and negative positions for RTL
+ void MirrorRTL( SdrObject* pObj );
+ static void MirrorRectRTL( Rectangle& rRect ); // for bounding rectangles etc.
+
+ /** Returns the rectangle for the passed cell address in 1/100 mm.
+ @param bMergedCell True = regards merged cells. False = use single column/row size. */
+ static Rectangle GetCellRect( ScDocument& rDoc, const ScAddress& rPos, bool bMergedCell );
+
+ // GetVisibleName: name for navigator etc: GetPersistName or GetName
+ // (ChartListenerCollection etc. must use GetPersistName directly)
+ static String GetVisibleName( SdrObject* pObj );
+
+ SdrObject* GetNamedObject( const String& rName, sal_uInt16 nId, SCTAB& rFoundTab ) const;
+ // if pnCounter != NULL, the search for a name starts with this index + 1,
+ // and the index really used is returned.
+ String GetNewGraphicName( long* pnCounter = NULL ) const;
+ void EnsureGraphicNames();
+
+ static void SetPageAnchored( SdrObject& );
+ static void SetCellAnchored( SdrObject&, const ScDrawObjData &rAnchor );
+ static void SetCellAnchoredFromPosition( SdrObject &rObj, const ScDocument &rDoc, SCTAB nTab );
+ static void UpdateCellAnchorFromPositionEnd( SdrObject &rObj, const ScDocument &rDoc, SCTAB nTab );
+ static ScAnchorType GetAnchorType( const SdrObject& );
+
+ // positions for detektive lines
+ static ScDrawObjData* GetObjData( SdrObject* pObj, sal_Bool bCreate=false );
+
+ // The sheet information in ScDrawObjData isn't updated when sheets are inserted/deleted.
+ // Use this method to get an object with positions on the specified sheet (should be the
+ // sheet on which the object is inserted).
+ static ScDrawObjData* GetObjDataTab( SdrObject* pObj, SCTAB nTab );
+
+ /** Returns true, if the passed object is the caption of a cell note. */
+ static bool IsNoteCaption( SdrObject* pObj );
+
+ /** Returns the object data, if the passed object is a cell note caption. */
+ static ScDrawObjData* GetNoteCaptionData( SdrObject* pObj, SCTAB nTab );
+
+ // Image-Map
+ static ScIMapInfo* GetIMapInfo( SdrObject* pObj );
+
+ static IMapObject* GetHitIMapObject( SdrObject* pObject,
+ const Point& rWinPoint, const Window& rCmpWnd );
+
+ static ScMacroInfo* GetMacroInfo( SdrObject* pObj, sal_Bool bCreate = false );
+
+private:
+ static SfxObjectShell* pGlobalDrawPersist; // for AllocModel
+public:
+ static void SetGlobalDrawPersist(SfxObjectShell* pPersist);
+protected:
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > createUnoModel();
+};
+
+
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */