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 _SVX_SVDOTABLE_HXX 25cdf0e10cSrcweir #define _SVX_SVDOTABLE_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <com/sun/star/text/WritingMode.hpp> 28cdf0e10cSrcweir #include <com/sun/star/container/XIndexAccess.hpp> 29cdf0e10cSrcweir #include <com/sun/star/table/XTable.hpp> 30cdf0e10cSrcweir #include <rtl/ref.hxx> 31cdf0e10cSrcweir #include "svdotext.hxx" 32cdf0e10cSrcweir #include "svx/svxdllapi.h" 33cdf0e10cSrcweir 34cdf0e10cSrcweir //------------------------------------------------------------------------ 35cdf0e10cSrcweir 36cdf0e10cSrcweir class SvStream; 37cdf0e10cSrcweir class SfxStyleSheet; 38cdf0e10cSrcweir 39cdf0e10cSrcweir namespace sdr { namespace contact { 40cdf0e10cSrcweir class ViewContactOfTableObj; 41cdf0e10cSrcweir }} 42cdf0e10cSrcweir 43cdf0e10cSrcweir namespace sdr { namespace table { 44cdf0e10cSrcweir 45cdf0e10cSrcweir class TableLayouter; 46cdf0e10cSrcweir struct ImplTableShadowPaintInfo; 47cdf0e10cSrcweir 48cdf0e10cSrcweir #ifndef CellRef 49cdf0e10cSrcweir class Cell; 50cdf0e10cSrcweir typedef rtl::Reference< Cell > CellRef; 51cdf0e10cSrcweir #endif 52cdf0e10cSrcweir 53cdf0e10cSrcweir //------------------------------------------------------------------------ 54cdf0e10cSrcweir // SdrTableHitKind 55cdf0e10cSrcweir //------------------------------------------------------------------------ 56cdf0e10cSrcweir 57cdf0e10cSrcweir enum TableHitKind 58cdf0e10cSrcweir { 59cdf0e10cSrcweir SDRTABLEHIT_NONE, 60cdf0e10cSrcweir SDRTABLEHIT_CELL, 61cdf0e10cSrcweir SDRTABLEHIT_CELLTEXTAREA, 62cdf0e10cSrcweir SDRTABLEHIT_HORIZONTAL_BORDER, 63cdf0e10cSrcweir SDRTABLEHIT_VERTICAL_BORDER 64cdf0e10cSrcweir }; 65cdf0e10cSrcweir 66cdf0e10cSrcweir //------------------------------------------------------------------------ 67cdf0e10cSrcweir 68cdf0e10cSrcweir struct CellPos 69cdf0e10cSrcweir { 70cdf0e10cSrcweir sal_Int32 mnCol; 71cdf0e10cSrcweir sal_Int32 mnRow; 72cdf0e10cSrcweir CellPossdr::table::CellPos73cdf0e10cSrcweir CellPos() : mnCol( 0 ), mnRow( 0 ) {} CellPossdr::table::CellPos74cdf0e10cSrcweir CellPos( sal_Int32 nCol, sal_Int32 nRow ) { mnCol = nCol; mnRow = nRow; } 75cdf0e10cSrcweir operator ==sdr::table::CellPos76cdf0e10cSrcweir bool operator==( const CellPos& r ) const { return (r.mnCol == mnCol) && (r.mnRow == mnRow); } operator !=sdr::table::CellPos77cdf0e10cSrcweir bool operator!=( const CellPos& r ) const { return (r.mnCol != mnCol) || (r.mnRow != mnRow); } 78cdf0e10cSrcweir }; 79cdf0e10cSrcweir 80cdf0e10cSrcweir //------------------------------------------------------------------------ 81cdf0e10cSrcweir // TableStyleSettings 82cdf0e10cSrcweir //------------------------------------------------------------------------ 83cdf0e10cSrcweir 84cdf0e10cSrcweir struct SVX_DLLPUBLIC TableStyleSettings 85cdf0e10cSrcweir { 86cdf0e10cSrcweir bool mbUseFirstRow; 87cdf0e10cSrcweir bool mbUseLastRow; 88cdf0e10cSrcweir bool mbUseFirstColumn; 89cdf0e10cSrcweir bool mbUseLastColumn; 90cdf0e10cSrcweir bool mbUseRowBanding; 91cdf0e10cSrcweir bool mbUseColumnBanding; 92cdf0e10cSrcweir 93cdf0e10cSrcweir TableStyleSettings(); 94cdf0e10cSrcweir TableStyleSettings( const TableStyleSettings& rStyle ); 95cdf0e10cSrcweir TableStyleSettings& operator=(const TableStyleSettings& rStyle); 96cdf0e10cSrcweir 97cdf0e10cSrcweir bool operator==( const TableStyleSettings& r ) const; 98cdf0e10cSrcweir }; 99cdf0e10cSrcweir 100cdf0e10cSrcweir //------------------------------------------------------------------------ 101cdf0e10cSrcweir // SdrTableObj 102cdf0e10cSrcweir //------------------------------------------------------------------------ 103cdf0e10cSrcweir 104cdf0e10cSrcweir class SdrTableObjImpl; 105cdf0e10cSrcweir 106cdf0e10cSrcweir class SVX_DLLPUBLIC SdrTableObj : public ::SdrTextObj 107cdf0e10cSrcweir { 108cdf0e10cSrcweir friend class Cell; 109cdf0e10cSrcweir friend class SdrTableObjImpl; 110cdf0e10cSrcweir friend class SdrTableModifyGuard; 111cdf0e10cSrcweir 112cdf0e10cSrcweir public: 113cdf0e10cSrcweir SdrTableObj(SdrModel* _pModel); 114cdf0e10cSrcweir SdrTableObj(SdrModel* _pModel, const ::Rectangle& rNewRect, sal_Int32 nColumns, sal_Int32 nRows); 115cdf0e10cSrcweir virtual ~SdrTableObj(); 116cdf0e10cSrcweir 117cdf0e10cSrcweir TYPEINFO(); 118cdf0e10cSrcweir 119cdf0e10cSrcweir // table stuff 120cdf0e10cSrcweir 121cdf0e10cSrcweir SdrTableObj* CloneRange( const CellPos& rStartPos, const CellPos& rEndPos ); 122cdf0e10cSrcweir void DistributeColumns( sal_Int32 nFirstColumn, sal_Int32 nLastColumn ); 123cdf0e10cSrcweir void DistributeRows( sal_Int32 nFirstRow, sal_Int32 nLastRow ); 124cdf0e10cSrcweir 125cdf0e10cSrcweir com::sun::star::uno::Reference< com::sun::star::table::XTable > getTable() const; 126cdf0e10cSrcweir 127cdf0e10cSrcweir bool isValid( const sdr::table::CellPos& rPos ) const; 128cdf0e10cSrcweir CellPos getFirstCell() const; 129cdf0e10cSrcweir CellPos getLastCell() const; 130cdf0e10cSrcweir CellPos getLeftCell( const CellPos& rPos, bool bEdgeTravel ) const; 131cdf0e10cSrcweir CellPos getRightCell( const CellPos& rPos, bool bEdgeTravel ) const; 132cdf0e10cSrcweir CellPos getUpCell( const CellPos& rPos, bool bEdgeTravel ) const; 133cdf0e10cSrcweir CellPos getDownCell( const CellPos& rPos, bool bEdgeTravel ) const; 134cdf0e10cSrcweir CellPos getPreviousCell( const CellPos& rPos, bool bEdgeTravel ) const; 135cdf0e10cSrcweir CellPos getNextCell( const CellPos& rPos, bool bEdgeTravel ) const; 136cdf0e10cSrcweir CellPos getPreviousRow( const CellPos& rPos, bool bEdgeTravel ) const; 137cdf0e10cSrcweir CellPos getNextRow( const CellPos& rPos, bool bEdgeTravel ) const; 138cdf0e10cSrcweir 139cdf0e10cSrcweir void createCell( ::sdr::table::CellRef& xCell ); 140cdf0e10cSrcweir 141cdf0e10cSrcweir const ::sdr::table::TableStyleSettings& getTableStyleSettings() const; 142cdf0e10cSrcweir void setTableStyleSettings( const ::sdr::table::TableStyleSettings& rStyle ); 143cdf0e10cSrcweir 144cdf0e10cSrcweir TableHitKind CheckTableHit( const Point& rPos, sal_Int32& rnX, sal_Int32& rnY, int nTol ) const; 145cdf0e10cSrcweir 146cdf0e10cSrcweir void uno_lock(); 147cdf0e10cSrcweir void uno_unlock(); 148cdf0e10cSrcweir 149cdf0e10cSrcweir /** the active table has the focus or is currently edited */ 150cdf0e10cSrcweir const ::sdr::table::CellRef& getActiveCell() const; 151cdf0e10cSrcweir 152cdf0e10cSrcweir void setActiveCell( const sdr::table::CellPos& rPos ); 153cdf0e10cSrcweir void getActiveCellPos( sdr::table::CellPos& rPos ) const; 154cdf0e10cSrcweir 155cdf0e10cSrcweir sal_Int32 getRowCount() const; 156cdf0e10cSrcweir sal_Int32 getColumnCount() const; 157cdf0e10cSrcweir 158cdf0e10cSrcweir void getCellBounds( const sdr::table::CellPos& rPos, ::Rectangle& rCellRect ); 159cdf0e10cSrcweir 160cdf0e10cSrcweir const SfxItemSet& GetActiveCellItemSet() const; 161cdf0e10cSrcweir 162cdf0e10cSrcweir void InsertRows( sal_Int32 nIndex, sal_Int32 nCount = 1 ); 163cdf0e10cSrcweir void InsertColumns( sal_Int32 nIndex, sal_Int32 nCount = 1 ); 164cdf0e10cSrcweir void DeleteRows( sal_Int32 nIndex, sal_Int32 nCount = 1 ); 165cdf0e10cSrcweir void DeleteColumns( sal_Int32 nIndex, sal_Int32 nCount = 1 ); 166cdf0e10cSrcweir 167cdf0e10cSrcweir void setTableStyle( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& xAutoFormatStyle ); 168cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& getTableStyle() const; 169cdf0e10cSrcweir 170cdf0e10cSrcweir // text stuff 171cdf0e10cSrcweir 172cdf0e10cSrcweir /** returns the currently active text. */ 173cdf0e10cSrcweir virtual SdrText* getActiveText() const; 174cdf0e10cSrcweir 175cdf0e10cSrcweir /** returns the nth available text. */ 176cdf0e10cSrcweir virtual SdrText* getText( sal_Int32 nIndex ) const; 177cdf0e10cSrcweir 178cdf0e10cSrcweir /** returns the number of texts available for this object. */ 179cdf0e10cSrcweir virtual sal_Int32 getTextCount() const; 180cdf0e10cSrcweir 181cdf0e10cSrcweir /** changes the current active text */ 182cdf0e10cSrcweir virtual void setActiveText( sal_Int32 nIndex ); 183cdf0e10cSrcweir 184cdf0e10cSrcweir /** returns the index of the text that contains the given point or -1 */ 185cdf0e10cSrcweir virtual sal_Int32 CheckTextHit(const Point& rPnt) const; 186cdf0e10cSrcweir 187*c2b18395SArmin Le Grand // #121917# 188*c2b18395SArmin Le Grand virtual bool HasText() const; 189*c2b18395SArmin Le Grand IsTextEditActive() const190cdf0e10cSrcweir sal_Bool IsTextEditActive() const { return (pEdtOutl != 0L); } 191cdf0e10cSrcweir bool IsTextEditActive( const sdr::table::CellPos& rPos ); 192cdf0e10cSrcweir 193cdf0e10cSrcweir /** returns true only if we are in edit mode and the user actually changed anything */ 194cdf0e10cSrcweir virtual bool IsRealyEdited() const; 195cdf0e10cSrcweir 196cdf0e10cSrcweir void FitFrameToTextSize(); 197cdf0e10cSrcweir 198cdf0e10cSrcweir SdrOutliner* GetCellTextEditOutliner( const sdr::table::CellPos& rPos ) const; 199cdf0e10cSrcweir 200cdf0e10cSrcweir // Gleichzeitig wird der Text in den Outliner gesetzt (ggf. 201cdf0e10cSrcweir // der des EditOutliners) und die PaperSize gesetzt. 202cdf0e10cSrcweir virtual void TakeTextRect( const sdr::table::CellPos& rPos, SdrOutliner& rOutliner, ::Rectangle& rTextRect, FASTBOOL bNoEditText=sal_False, ::Rectangle* pAnchorRect=NULL, sal_Bool bLineWidth=sal_True ) const; 203cdf0e10cSrcweir virtual void TakeTextRect( SdrOutliner& rOutliner, Rectangle& rTextRect, FASTBOOL bNoEditText=sal_False, Rectangle* pAnchorRect=NULL, sal_Bool bLineWidth=sal_True ) const; 204cdf0e10cSrcweir virtual void TakeTextAnchorRect(const sdr::table::CellPos& rPos, ::Rectangle& rAnchorRect ) const; 205cdf0e10cSrcweir virtual void TakeTextAnchorRect(::Rectangle& rAnchorRect) const; 206cdf0e10cSrcweir 207cdf0e10cSrcweir virtual FASTBOOL IsAutoGrowHeight() const; 208cdf0e10cSrcweir long GetMinTextFrameHeight() const; 209cdf0e10cSrcweir long GetMaxTextFrameHeight() const; 210cdf0e10cSrcweir virtual FASTBOOL IsAutoGrowWidth() const; 211cdf0e10cSrcweir long GetMinTextFrameWidth() const; 212cdf0e10cSrcweir long GetMaxTextFrameWidth() const; 213cdf0e10cSrcweir 214cdf0e10cSrcweir virtual FASTBOOL IsFontwork() const; 215cdf0e10cSrcweir 216cdf0e10cSrcweir virtual void SetPage(SdrPage* pNewPage); 217cdf0e10cSrcweir virtual void SetModel(SdrModel* pNewModel); 218cdf0e10cSrcweir virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const; 219cdf0e10cSrcweir virtual sal_uInt16 GetObjIdentifier() const; 220cdf0e10cSrcweir virtual void SetChanged(); 221cdf0e10cSrcweir 222cdf0e10cSrcweir virtual FASTBOOL AdjustTextFrameWidthAndHeight(Rectangle& rR, FASTBOOL bHgt=sal_True, FASTBOOL bWdt=sal_True) const; 223cdf0e10cSrcweir virtual FASTBOOL AdjustTextFrameWidthAndHeight(FASTBOOL bHgt=sal_True, FASTBOOL bWdt=sal_True); 224cdf0e10cSrcweir virtual void TakeObjNameSingul(String& rName) const; 225cdf0e10cSrcweir virtual void TakeObjNamePlural(String& rName) const; 226cdf0e10cSrcweir virtual void operator=(const SdrObject& rObj); 227cdf0e10cSrcweir virtual basegfx::B2DPolyPolygon TakeXorPoly() const; 228cdf0e10cSrcweir virtual basegfx::B2DPolyPolygon TakeContour() const; 229cdf0e10cSrcweir virtual void RecalcSnapRect(); 230cdf0e10cSrcweir virtual const Rectangle& GetSnapRect() const; 231cdf0e10cSrcweir virtual void NbcSetSnapRect(const Rectangle& rRect); 232cdf0e10cSrcweir 233cdf0e10cSrcweir virtual const Rectangle& GetLogicRect() const; 234cdf0e10cSrcweir virtual void NbcSetLogicRect(const Rectangle& rRect); 235cdf0e10cSrcweir virtual void AdjustToMaxRect( const Rectangle& rMaxRect, bool bShrinkOnly = false ); 236cdf0e10cSrcweir 237cdf0e10cSrcweir virtual sal_uInt32 GetSnapPointCount() const; 238cdf0e10cSrcweir virtual Point GetSnapPoint(sal_uInt32 i) const; 239cdf0e10cSrcweir 240cdf0e10cSrcweir virtual sal_uInt32 GetHdlCount() const; 241cdf0e10cSrcweir virtual SdrHdl* GetHdl(sal_uInt32 nHdlNum) const; 242cdf0e10cSrcweir virtual void AddToHdlList(SdrHdlList& rHdlList) const; 243cdf0e10cSrcweir 244cdf0e10cSrcweir // special drag methods 245cdf0e10cSrcweir virtual bool hasSpecialDrag() const; 246cdf0e10cSrcweir virtual bool beginSpecialDrag(SdrDragStat& rDrag) const; 247cdf0e10cSrcweir virtual bool applySpecialDrag(SdrDragStat& rDrag); 248cdf0e10cSrcweir virtual String getSpecialDragComment(const SdrDragStat& rDrag) const; 249cdf0e10cSrcweir virtual basegfx::B2DPolyPolygon getSpecialDragPoly(const SdrDragStat& rDrag) const; 250cdf0e10cSrcweir 251cdf0e10cSrcweir virtual FASTBOOL BegCreate(SdrDragStat& rStat); 252cdf0e10cSrcweir virtual FASTBOOL MovCreate(SdrDragStat& rStat); 253cdf0e10cSrcweir virtual FASTBOOL EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd); 254cdf0e10cSrcweir virtual FASTBOOL BckCreate(SdrDragStat& rStat); 255cdf0e10cSrcweir virtual void BrkCreate(SdrDragStat& rStat); 256cdf0e10cSrcweir virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat& rDrag) const; 257cdf0e10cSrcweir virtual Pointer GetCreatePointer() const; 258cdf0e10cSrcweir 259cdf0e10cSrcweir virtual void NbcMove(const Size& rSiz); 260cdf0e10cSrcweir virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact); 261cdf0e10cSrcweir 262cdf0e10cSrcweir virtual sal_Bool BegTextEdit(SdrOutliner& rOutl); 263cdf0e10cSrcweir virtual void EndTextEdit(SdrOutliner& rOutl); 264cdf0e10cSrcweir virtual void TakeTextEditArea(Size* pPaperMin, Size* pPaperMax, Rectangle* pViewInit, Rectangle* pViewMin) const; 265cdf0e10cSrcweir virtual void TakeTextEditArea(const sdr::table::CellPos& rPos, Size* pPaperMin, Size* pPaperMax, Rectangle* pViewInit, Rectangle* pViewMin) const; 266cdf0e10cSrcweir virtual sal_uInt16 GetOutlinerViewAnchorMode() const; 267cdf0e10cSrcweir 268cdf0e10cSrcweir virtual void NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject); 269cdf0e10cSrcweir 270cdf0e10cSrcweir virtual OutlinerParaObject* GetOutlinerParaObject() const; 271cdf0e10cSrcweir virtual OutlinerParaObject* GetEditOutlinerParaObject() const; 272cdf0e10cSrcweir 273cdf0e10cSrcweir virtual void NbcReformatText(); 274cdf0e10cSrcweir virtual void ReformatText(); 275cdf0e10cSrcweir SetTextEditOutliner(SdrOutliner * pOutl)276cdf0e10cSrcweir void SetTextEditOutliner(SdrOutliner* pOutl) { pEdtOutl=pOutl; } 277cdf0e10cSrcweir 278cdf0e10cSrcweir virtual sal_Bool IsVerticalWriting() const; 279cdf0e10cSrcweir virtual void SetVerticalWriting(sal_Bool bVertical); 280cdf0e10cSrcweir 281cdf0e10cSrcweir com::sun::star::text::WritingMode GetWritingMode() const; 282cdf0e10cSrcweir 283cdf0e10cSrcweir virtual void onEditOutlinerStatusEvent( EditStatus* pEditStatus ); 284cdf0e10cSrcweir 285cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 286cdf0e10cSrcweir // 287cdf0e10cSrcweir // transformation interface for StarOfficeAPI. This implements support for 288cdf0e10cSrcweir // homogen 3x3 matrices containing the transformation of the SdrObject. At the 289cdf0e10cSrcweir // moment it contains a shearX, rotation and translation, but for setting all linear 290cdf0e10cSrcweir // transforms like Scale, ShearX, ShearY, Rotate and Translate are supported. 291cdf0e10cSrcweir // 292cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 293cdf0e10cSrcweir // gets base transformation and rectangle of object. If it's an SdrPathObj it fills the PolyPolygon 294cdf0e10cSrcweir // with the base geometry and returns TRUE. Otherwise it returns FALSE. 295cdf0e10cSrcweir virtual sal_Bool TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DPolyPolygon& rPolyPolygon) const; 296cdf0e10cSrcweir 297cdf0e10cSrcweir // sets the base geometry of the object using infos contained in the homogen 3x3 matrix. 298cdf0e10cSrcweir // If it's an SdrPathObj it will use the provided geometry information. The Polygon has 299cdf0e10cSrcweir // to use (0,0) as upper left and will be scaled to the given size in the matrix. 300cdf0e10cSrcweir virtual void TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const basegfx::B2DPolyPolygon& rPolyPolygon); 301cdf0e10cSrcweir 302cdf0e10cSrcweir // #103836# iterates over the paragraphs of a given SdrObject and removes all 303cdf0e10cSrcweir // hard set character attributes with the which ids contained in the 304cdf0e10cSrcweir // given vector 305cdf0e10cSrcweir // virtual void RemoveOutlinerCharacterAttribs( const std::vector<sal_uInt16>& rCharWhichIds ); 306cdf0e10cSrcweir 307cdf0e10cSrcweir /** hack for clipboard with calc and writer, export and import table content as rtf table */ 308cdf0e10cSrcweir static void ExportAsRTF( SvStream& rStrm, SdrTableObj& rObj ); 309cdf0e10cSrcweir static void ImportAsRTF( SvStream& rStrm, SdrTableObj& rObj ); 310cdf0e10cSrcweir 311cdf0e10cSrcweir private: 312cdf0e10cSrcweir void init( sal_Int32 nColumns, sal_Int32 nRows ); 313cdf0e10cSrcweir 314cdf0e10cSrcweir protected: 315cdf0e10cSrcweir virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties(); 316cdf0e10cSrcweir virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact(); 317cdf0e10cSrcweir 318cdf0e10cSrcweir virtual SdrObjGeoData* NewGeoData() const; 319cdf0e10cSrcweir virtual void SaveGeoData(SdrObjGeoData& rGeo) const; 320cdf0e10cSrcweir virtual void RestGeoData(const SdrObjGeoData& rGeo); 321cdf0e10cSrcweir 322cdf0e10cSrcweir private: 323cdf0e10cSrcweir SdrOutliner* GetCellTextEditOutliner( const ::sdr::table::Cell& rCell ) const; 324cdf0e10cSrcweir 325cdf0e10cSrcweir private: 326cdf0e10cSrcweir // for the ViewContactOfTableObj to build the primitive representation, it is necessary to access the 327cdf0e10cSrcweir // TableLayouter for position and attribute informations 328cdf0e10cSrcweir friend class sdr::contact::ViewContactOfTableObj; 329cdf0e10cSrcweir const TableLayouter& getTableLayouter() const; 330cdf0e10cSrcweir 331cdf0e10cSrcweir Rectangle maLogicRect; 332cdf0e10cSrcweir private: 333cdf0e10cSrcweir SdrTableObjImpl* mpImpl; 334cdf0e10cSrcweir }; 335cdf0e10cSrcweir 336cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 337cdf0e10cSrcweir 338cdf0e10cSrcweir } } 339cdf0e10cSrcweir 340cdf0e10cSrcweir #endif 341