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.hxx233
1 files changed, 233 insertions, 0 deletions
diff --git a/sc/inc/drwlayer.hxx b/sc/inc/drwlayer.hxx
new file mode 100644
index 000000000000..7dd9903f82a1
--- /dev/null
+++ b/sc/inc/drwlayer.hxx
@@ -0,0 +1,233 @@
+/*************************************************************************
+ *
+ * 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; }
+};
+
+// -----------------------------------------------------------------------
+//
+// Das Anpassen der Detektiv-UserData muss zusammen mit den Draw-Undo's
+// in der SdrUndoGroup liegen, darum von SdrUndoAction abgeleitet:
+
+class ScUndoObjData : public SdrUndoObj
+{
+private:
+ ScAddress aOldStt;
+ ScAddress aOldEnd;
+ ScAddress aNewStt;
+ ScAddress aNewEnd;
+ 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:
+//REMOVE SotStorageRef xPictureStorage;
+ String aName;
+ ScDocument* pDoc;
+ SdrUndoGroup* pUndoGroup;
+ BOOL bRecording;
+ BOOL bAdjustEnabled;
+ BOOL bHyphenatorSet;
+
+private:
+ void MoveAreaTwips( SCTAB nTab, const Rectangle& rArea, const Point& rMove,
+ const Point& rTopLeft );
+ void MoveCells( SCTAB nTab, SCCOL nCol1,SCROW nRow1, SCCOL nCol2,SCROW nRow2,
+ SCsCOL nDx,SCsROW nDy, bool bUpdateNoteCaptionPos );
+
+ void RecalcPos( SdrObject* pObj, const ScDrawObjData& rData, bool bNegativePage, bool bUpdateNoteCaptionPos );
+
+public:
+ ScDrawLayer( ScDocument* pDocument, const String& rName );
+ virtual ~ScDrawLayer();
+
+ virtual SdrPage* AllocPage(FASTBOOL 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;
+
+//REMOVE void ReleasePictureStorage();
+
+ BOOL HasObjects() const;
+
+ BOOL ScAddPage( SCTAB nTab );
+ void ScRemovePage( SCTAB nTab );
+ void ScRenamePage( SCTAB nTab, const String& rNewName );
+ void ScMovePage( USHORT nOldPos, USHORT nNewPos );
+ // inkl. Inhalt, bAlloc=FALSE -> nur Inhalt
+ void ScCopyPage( USHORT nOldPos, USHORT nNewPos, BOOL bAlloc );
+
+ ScDocument* GetDocument() const { return pDoc; }
+
+ void UpdateBasic(); // DocShell-Basic in DrawPages setzen
+ void UseHyphenator();
+
+ BOOL GetPrintArea( ScRange& rRange, BOOL bSetHor, BOOL bSetVer ) const;
+
+ // automatische Anpassungen
+
+ void EnableAdjust( BOOL bSet = TRUE ) { bAdjustEnabled = bSet; }
+
+ void BeginCalcUndo();
+ SdrUndoGroup* GetCalcUndo();
+ 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, BOOL bInsDel, bool bUpdateNoteCaptionPos = true );
+ void WidthChanged( SCTAB nTab, SCCOL nCol, long nDifTwips );
+ void HeightChanged( SCTAB nTab, SCROW nRow, long nDifTwips );
+
+ 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 );
+#if 0
+ void DeleteObjects( SCTAB nTab );
+#endif
+
+ 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( USHORT 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, USHORT 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();
+
+ // Verankerung setzen und ermitteln
+ static void SetAnchor( SdrObject*, ScAnchorType );
+ static ScAnchorType GetAnchor( const SdrObject* );
+
+ // Positionen fuer Detektivlinien
+ static ScDrawObjData* GetObjData( SdrObject* pObj, 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, BOOL bCreate = FALSE );
+
+private:
+ static SfxObjectShell* pGlobalDrawPersist; // fuer AllocModel
+public:
+ static void SetGlobalDrawPersist(SfxObjectShell* pPersist);
+protected:
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > createUnoModel();
+};
+
+
+#endif
+
+