LibreOffice Module sc (master)  1
worksheethelper.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #pragma once
21 
24 #include <oox/ole/olehelper.hxx>
25 #include <rangelst.hxx>
26 #include "formulabase.hxx"
27 
28 struct ScDataBarFormatData;
29 class ScDocument;
30 
31 namespace com::sun::star {
32  namespace awt { struct Point; }
33  namespace awt { struct Rectangle; }
34  namespace awt { struct Size; }
35  namespace drawing { class XDrawPage; }
36  namespace sheet { class XSpreadsheet; }
37  namespace table { class XCell; }
38  namespace table { class XCellRange; }
39 }
40 
41 namespace oox::xls {
42 
43 class AutoFilterBuffer;
44 class CommentsBuffer;
45 class CondFormatBuffer;
46 class Font;
47 class PageSettings;
48 class QueryTableBuffer;
49 class RichString;
50 class SheetDataBuffer;
51 class SheetViewSettings;
52 class VmlDrawing;
54 
55 typedef ::std::map< OUString, ScDataBarFormatData* > ExtLst;
56 
58 enum class WorksheetType
59 {
60  Work,
61  Chart,
62  Macro,
63  Dialog,
64  Empty
65 };
66 
69 {
71  double mfWidth;
72  sal_Int32 mnXfId;
73  sal_Int32 mnLevel;
74  bool mbShowPhonetic:1;
75  bool mbHidden:1;
76  bool mbCollapsed:1;
77 
78  explicit ColumnModel();
79 
81  bool isMergeable( const ColumnModel& rModel ) const;
82 };
83 
85 struct RowModel
86 {
87  sal_Int32 mnRow;
89  double mfHeight;
90  sal_Int32 mnXfId;
91  sal_Int32 mnLevel;
92  bool mbCustomHeight:1;
93  bool mbCustomFormat:1;
94  bool mbShowPhonetic:1;
95  bool mbHidden:1;
96  bool mbCollapsed:1;
97  bool mbThickTop:1;
98  bool mbThickBottom:1;
99 
100  explicit RowModel();
101 
103  void insertColSpan( const ValueRange& rColSpan );
105  bool isMergeable( const RowModel& rModel ) const;
106 };
107 
110 {
111  sal_Int32 mnColRow;
112  sal_Int32 mnMin;
113  sal_Int32 mnMax;
114  bool mbManual;
115 
116  explicit PageBreakModel();
117 };
118 
121 {
123  OUString maTooltip;
124 
125  explicit HyperlinkModel();
126 };
127 
130 {
134  OUString msRef;
135  OUString maInputTitle;
136  OUString maInputMessage;
137  OUString maErrorTitle;
138  OUString maErrorMessage;
139  sal_Int32 mnType;
140  sal_Int32 mnOperator;
141  sal_Int32 mnErrorStyle;
144  bool mbNoDropDown:1;
145  bool mbAllowBlank:1;
146 
147  explicit ValidationModel();
148 
150  void setBiffType( sal_uInt8 nType );
152  void setBiffOperator( sal_uInt8 nOperator );
154  void setBiffErrorStyle( sal_uInt8 nErrorStyle );
155 };
156 
158 typedef std::shared_ptr< WorksheetGlobals > WorksheetGlobalsRef;
159 
161 public:
162  virtual ~IWorksheetProgress() {}
164  virtual void setCustomRowProgress(
165  const ISegmentProgressBarRef &rxRowProgress ) = 0;
166 };
167 
169 {
170 public:
171  /*implicit*/ WorksheetHelper( WorksheetGlobals& rSheetGlob );
172 
173  static WorksheetGlobalsRef constructGlobals(
174  const WorkbookHelper& rHelper,
175  const ISegmentProgressBarRef& rxProgressBar,
176  WorksheetType eSheetType,
177  SCTAB nSheet );
178 
179  // horrible accessor for hidden WorksheetGlobals ...
180  static IWorksheetProgress *getWorksheetInterface( const WorksheetGlobalsRef &xRef );
181 
183  WorksheetType getSheetType() const;
185  SCTAB getSheetIndex() const;
187  const css::uno::Reference< css::sheet::XSpreadsheet >&
188  getSheet() const;
189 
191  css::uno::Reference< css::table::XCell >
192  getCell( const ScAddress& rAddress ) const;
194  css::uno::Reference< css::table::XCellRange >
195  getCellRange( const ScRange& rRange ) const;
196 
198  css::uno::Reference< css::drawing::XDrawPage >
199  getDrawPage() const;
200 
202  css::awt::Point getCellPosition( sal_Int32 nCol, sal_Int32 nRow ) const;
204  const css::awt::Size& getDrawPageSize() const;
205 
207  SheetDataBuffer& getSheetData() const;
211  CommentsBuffer& getComments() const;
219  PageSettings& getPageSettings() const;
223  VmlDrawing& getVmlDrawing() const;
224 
225  ExtLst& getExtLst() const;
226 
228  void setPageBreak( const PageBreakModel& rModel, bool bRowBreak );
230  void setHyperlink( const HyperlinkModel& rModel );
232  void setValidation( const ValidationModel& rModel );
234  void setDrawingPath( const OUString& rDrawingPath );
236  void setVmlDrawingPath( const OUString& rVmlDrawingPath );
237 
239  void extendUsedArea( const ScAddress& rAddress );
241  void extendUsedArea( const ScRange& rRange );
243  void extendShapeBoundingBox( const css::awt::Rectangle& rShapeRect );
244 
247  void setBaseColumnWidth( sal_Int32 nWidth );
250  void setDefaultColumnWidth( double fWidth );
254  void setColumnModel( const ColumnModel& rModel );
255 
258  double fHeight, bool bCustomHeight,
259  bool bHidden, bool bThickTop, bool bThickBottom );
263  void setRowModel( const RowModel& rModel );
264 
266  void putRichString(
267  const ScAddress& rAddress,
268  const RichString& rString, const oox::xls::Font* pFirstPortionFont );
269 
271  void putFormulaTokens(
272  const ScAddress& rAddress, const ApiTokenSequence& rTokens );
273 
279  void finalizeDrawingImport();
280 
281  void setCellFormula( const ScAddress& rTokenAddress, const OUString& );
282 
283  void setCellFormula(
284  const ScAddress& rAddr, sal_Int32 nSharedId,
285  const OUString& rCellValue, sal_Int32 nValueType );
286 
287  void setCellArrayFormula( const ScRange& rRangeAddress, const ScAddress& rTokenAddress, const OUString& rTokenStr );
288 
290  const ScAddress& rAddress,
291  sal_Int32 nSharedId, const OUString& rTokens );
292 
293  void setCellFormulaValue(
294  const ScAddress& rAddress, const OUString& rValueStr, sal_Int32 nCellType );
295 
297 
298 
299 private:
301 };
302 
303 } // namespace oox::xls
304 
305 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Helper class to provide access to global workbook data.
HyperlinkModel()
Additional tooltip text.
static WorksheetGlobalsRef constructGlobals(const WorkbookHelper &rHelper, const ISegmentProgressBarRef &rxProgressBar, WorksheetType eSheetType, SCTAB nSheet)
SheetDataBuffer & getSheetData() const
Returns the buffer for cell contents and cell formatting.
virtual void setCustomRowProgress(const ISegmentProgressBarRef &rxRowProgress)=0
bool mbThickTop
True = row outline is collapsed.
void createSharedFormulaMapEntry(const ScAddress &rAddress, sal_Int32 nSharedId, const OUString &rTokens)
Contains string data and a list of formatting runs for a rich formatted string.
Definition: richstring.hxx:208
exports com.sun.star. awt
WorksheetGlobals & mrSheetGlob
ColumnModel()
True = column outline is collapsed.
sal_Int32 mnMax
Start of limited break.
bool mbCustomFormat
True = row has custom height.
exports com.sun.star. table
css::uno::Reference< css::table::XCellRange > getCellRange(const ScRange &rRange) const
Returns the XCellRange interface for the passed cell range address.
WorksheetSettings & getWorksheetSettings() const
Returns the worksheet settings object.
virtual ISegmentProgressBarRef getRowProgress()=0
SheetViewSettings & getSheetViewSettings() const
Returns the view settings for this sheet.
void putFormulaTokens(const ScAddress &rAddress, const ApiTokenSequence &rTokens)
Inserts a formula cell directly into the Calc sheet.
const css::awt::Size & getDrawPageSize() const
Returns the size of the entire drawing page in 1/100 mm.
exports com.sun.star. sheet
void setHyperlink(const HyperlinkModel &rModel)
Inserts the hyperlink URL into the spreadsheet.
CondFormatBuffer & getCondFormats() const
Returns the conditional formatting in this sheet.
void extendShapeBoundingBox(const css::awt::Rectangle &rShapeRect)
Extends the shape bounding box by the position and size of the passed rectangle (in 1/100 mm)...
bool mbShowPhonetic
True = cells in row have explicit formatting.
void setBiffType(sal_uInt8 nType)
Sets the passed BIFF validation type.
bool mbCustomHeight
Row outline level.
std::shared_ptr< WorksheetGlobals > WorksheetGlobalsRef
Stores formatting data about a page break.
OUString maTooltip
The cell area containing the hyperlink.
bool mbCollapsed
True = row is hidden.
void setVmlDrawingPath(const OUString &rVmlDrawingPath)
Sets the path to the legacy VML drawing fragment of this sheet.
void setCellArrayFormula(const ScRange &rRangeAddress, const ScAddress &rTokenAddress, const OUString &rTokenStr)
void putRichString(const ScAddress &rAddress, const RichString &rString, const oox::xls::Font *pFirstPortionFont)
Inserts a rich-string cell directly into the Calc sheet.
CommentsBuffer & getComments() const
Returns the buffer for all cell comments in this sheet.
double mfHeight
0-based (!) column ranges of used cells.
static IWorksheetProgress * getWorksheetInterface(const WorksheetGlobalsRef &xRef)
sal_Int32 mnLevel
Column default formatting.
bool isMergeable(const ColumnModel &rModel) const
Returns true, if this entry can be merged with the passed column range (column settings are equal)...
void setCellFormulaValue(const ScAddress &rAddress, const OUString &rValueStr, sal_Int32 nCellType)
Stores settings and formatting data about a sheet row.
void setBiffOperator(sal_uInt8 nOperator)
Sets the passed BIFF operator.
double mfWidth
1-based (!) range of the described columns.
sal_Int32 mnXfId
Column width in number of characters.
bool mbHidden
True = cells in row show phonetic settings.
void setCellFormula(const ScAddress &rTokenAddress, const OUString &)
css::uno::Reference< css::drawing::XDrawPage > getDrawPage() const
Returns the XDrawPage interface of the draw page of the current sheet.
void setDrawingPath(const OUString &rDrawingPath)
Sets the path to the DrawingML fragment of this sheet.
bool mbHidden
True = cells in column show phonetic settings.
bool mbCollapsed
True = column is hidden.
PageBreakModel()
True = manual page break.
Stores settings and formatting data about a range of sheet columns.
WorksheetType getSheetType() const
Returns the type of this sheet.
std::shared_ptr< ISegmentProgressBar > ISegmentProgressBarRef
void setPageBreak(const PageBreakModel &rModel, bool bRowBreak)
Sets a column or row page break described in the passed struct.
void insertColSpan(const ValueRange &rColSpan)
Inserts the passed column span into the row model.
void setBaseColumnWidth(sal_Int32 nWidth)
Sets base width for all columns (without padding pixels).
css::uno::Reference< css::table::XCell > getCell(const ScAddress &rAddress) const
Returns the XCell interface for the passed cell address.
void setDefaultRowSettings(double fHeight, bool bCustomHeight, bool bHidden, bool bThickTop, bool bThickBottom)
Sets default height and hidden state for all unused rows in the sheet.
::std::map< OUString, ScDataBarFormatData * > ExtLst
void initializeWorksheetImport()
Initial conversion before importing the worksheet.
QueryTableBuffer & getQueryTables() const
Returns the buffer for all web query tables in this sheet.
void setColumnModel(const ColumnModel &rModel)
Sets column settings for a specific range of columns.
void setValidation(const ValidationModel &rModel)
Inserts the data validation settings into the spreadsheet.
RowModel()
True = row has extra space below text.
sal_Int32 mnXfId
Row height in points.
css::uno::Sequence< ApiToken > ApiTokenSequence
Stores data about ranges with data validation settings.
void finalizeDrawingImport()
Final import of drawing objects.
void extendUsedArea(const ScAddress &rAddress)
Extends the used area of this sheet by the passed cell position.
bool isMergeable(const RowModel &rModel) const
Returns true, if this entry can be merged with the passed row range (row settings are equal)...
css::awt::Point getCellPosition(sal_Int32 nCol, sal_Int32 nRow) const
Returns the absolute cell position in 1/100 mm.
sal_Int32 mnMin
0-based (!) index of column/row.
const css::uno::Reference< css::sheet::XSpreadsheet > & getSheet() const
Returns the XSpreadsheet interface of the current sheet.
unsigned char sal_uInt8
ValueRangeSet maColSpans
1-based (!) index of the described row.
SCTAB getSheetIndex() const
Returns the index of the current sheet.
bool mbShowPhonetic
Column outline level.
QPRO_FUNC_TYPE nType
Definition: qproform.cxx:400
Dialog sheet (BIFF5+).
WorksheetHelper(WorksheetGlobals &rSheetGlob)
VmlDrawing & getVmlDrawing() const
Returns the VML drawing page for this sheet (OOXML/BIFF12 only).
Stores data about a hyperlink range.
sal_Int32 mnLevel
Row default formatting (see mbIsFormatted).
WorksheetType
An enumeration for all types of sheets in a workbook.
AutoFilterBuffer & getAutoFilters() const
Returns the auto filters for the sheet.
void finalizeWorksheetImport()
Final conversion after importing the worksheet.
bool mbThickBottom
True = row has extra space above text.
void setRowModel(const RowModel &rModel)
Sets row settings for a specific range of rows.
sal_Int16 SCTAB
Definition: types.hxx:22
PageSettings & getPageSettings() const
Returns the page/print settings for this sheet.
Manages the cell contents and cell formatting of a sheet.
bool mbManual
End of limited break.
void setDefaultColumnWidth(double fWidth)
Sets default width for all columns.
void setBiffErrorStyle(sal_uInt8 nErrorStyle)
Sets the passed BIFF error style.