LibreOffice Module sc (master)  1
interface.cxx
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 
10 #include <memory>
11 #include <orcusinterface.hxx>
12 
13 #include <document.hxx>
14 #include <formulacell.hxx>
15 #include <rangenam.hxx>
16 #include <tokenarray.hxx>
17 #include <globalnames.hxx>
18 #include <globstr.hrc>
19 #include <scresid.hxx>
20 #include <compiler.hxx>
21 #include <stlpool.hxx>
22 #include <scitems.hxx>
23 #include <patattr.hxx>
24 #include <docpool.hxx>
25 #include <attrib.hxx>
26 
27 #include <editeng/postitem.hxx>
28 #include <editeng/wghtitem.hxx>
29 #include <editeng/colritem.hxx>
30 #include <editeng/brushitem.hxx>
31 #include <editeng/udlnitem.hxx>
32 #include <editeng/boxitem.hxx>
33 #include <editeng/borderline.hxx>
34 #include <editeng/fontitem.hxx>
35 #include <editeng/fhgtitem.hxx>
36 #include <editeng/lineitem.hxx>
38 #include <editeng/justifyitem.hxx>
39 
40 #include <svl/sharedstringpool.hxx>
41 #include <svl/zforlist.hxx>
42 #include <svl/intitem.hxx>
43 #include <com/sun/star/task/XStatusIndicator.hpp>
44 #include <i18nlangtag/lang.h>
45 #include <tools/fontenum.hxx>
46 #include <sal/log.hxx>
47 
48 #include <stylesbuffer.hxx>
49 
50 using namespace com::sun::star;
51 
52 namespace os = orcus::spreadsheet;
53 
54 namespace {
55 
56 formula::FormulaGrammar::Grammar getCalcGrammarFromOrcus( os::formula_grammar_t grammar )
57 {
59  switch(grammar)
60  {
61  case orcus::spreadsheet::formula_grammar_t::ods:
63  break;
64  case orcus::spreadsheet::formula_grammar_t::xlsx:
66  break;
67  case orcus::spreadsheet::formula_grammar_t::gnumeric:
69  break;
70  case orcus::spreadsheet::formula_grammar_t::xls_xml:
72  break;
73  case orcus::spreadsheet::formula_grammar_t::unknown:
74  break;
75  }
76 
77  return eGrammar;
78 }
79 
80 }
81 
83  : mrDoc(rDoc)
84  , meCalcGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED)
85  , meOrcusGrammar(os::formula_grammar_t::unknown)
86  , mnTextEncoding(RTL_TEXTENCODING_UTF8)
87 {
88 }
89 
90 void ScOrcusGlobalSettings::set_origin_date(int year, int month, int day)
91 {
92  mrDoc.setOriginDate(year, month, day);
93 }
94 
95 void ScOrcusGlobalSettings::set_character_set(orcus::character_set_t cs)
96 {
97  switch (cs)
98  {
99  case orcus::character_set_t::iso_2022_jp:
100  case orcus::character_set_t::iso_2022_jp_2:
101  mnTextEncoding = RTL_TEXTENCODING_ISO_2022_JP;
102  break;
103  case orcus::character_set_t::jis_x0201:
104  mnTextEncoding = RTL_TEXTENCODING_JIS_X_0201;
105  break;
106  case orcus::character_set_t::shift_jis:
107  mnTextEncoding = RTL_TEXTENCODING_SHIFT_JIS;
108  break;
109  case orcus::character_set_t::us_ascii:
110  mnTextEncoding = RTL_TEXTENCODING_ASCII_US;
111  break;
112  case orcus::character_set_t::utf_7:
113  mnTextEncoding = RTL_TEXTENCODING_UTF7;
114  break;
115  case orcus::character_set_t::windows_1250:
116  mnTextEncoding = RTL_TEXTENCODING_MS_1250;
117  break;
118  case orcus::character_set_t::windows_1251:
119  mnTextEncoding = RTL_TEXTENCODING_MS_1251;
120  break;
121  case orcus::character_set_t::windows_1252:
122  mnTextEncoding = RTL_TEXTENCODING_MS_1252;
123  break;
124  case orcus::character_set_t::windows_1253:
125  mnTextEncoding = RTL_TEXTENCODING_MS_1253;
126  break;
127  case orcus::character_set_t::windows_1254:
128  mnTextEncoding = RTL_TEXTENCODING_MS_1254;
129  break;
130  case orcus::character_set_t::windows_1255:
131  mnTextEncoding = RTL_TEXTENCODING_MS_1255;
132  break;
133  case orcus::character_set_t::windows_1256:
134  mnTextEncoding = RTL_TEXTENCODING_MS_1256;
135  break;
136  case orcus::character_set_t::windows_1257:
137  mnTextEncoding = RTL_TEXTENCODING_MS_1257;
138  break;
139  case orcus::character_set_t::windows_1258:
140  mnTextEncoding = RTL_TEXTENCODING_MS_1258;
141  break;
142  default:
143  ; // Add more as needed.
144  }
145 }
146 
147 void ScOrcusGlobalSettings::set_default_formula_grammar(os::formula_grammar_t grammar)
148 {
149  meCalcGrammar = getCalcGrammarFromOrcus(grammar);
150  meOrcusGrammar = grammar;
151 }
152 
153 orcus::spreadsheet::formula_grammar_t ScOrcusGlobalSettings::get_default_formula_grammar() const
154 {
155  return meOrcusGrammar;
156 }
157 
159  mrGlobalSettings(rGS) {}
160 
161 os::address_t ScOrcusRefResolver::resolve_address(const char* p, size_t n)
162 {
163  OUString aStr(p, n, mrGlobalSettings.getTextEncoding());
164 
165  ScAddress aAddr;
166  aAddr.Parse(aStr, nullptr,
169 
170  os::address_t ret;
171  ret.column = 0;
172  ret.row = 0;
173 
174  if (aAddr.IsValid())
175  {
176  ret.column = aAddr.Col();
177  ret.row = aAddr.Row();
178  }
179 
180  return ret;
181 }
182 
183 os::range_t ScOrcusRefResolver::resolve_range(const char* p, size_t n)
184 {
185  OUString aStr(p, n, mrGlobalSettings.getTextEncoding());
186 
187  ScRange aRange;
188  aRange.Parse(aStr, nullptr,
191 
192  os::range_t ret;
193  ret.first.column = 0;
194  ret.first.row = 0;
195  ret.last.column = 0;
196  ret.last.row = 0;
197 
198  if (aRange.IsValid())
199  {
200  ret.first.column = aRange.aStart.Col();
201  ret.first.row = aRange.aStart.Row();
202  ret.last.column = aRange.aEnd.Col();
203  ret.last.row = aRange.aEnd.Row();
204  }
205 
206  return ret;
207 }
208 
210  ScDocumentImport& rDoc, const ScOrcusGlobalSettings& rGS, SCTAB nTab ) :
211  mrDoc(rDoc), mrGlobalSettings(rGS), mnTab(nTab) {}
212 
213 void ScOrcusNamedExpression::define_name(const char* p_name, size_t n_name, const char* p_exp, size_t n_exp)
214 {
215  OUString aName(p_name, n_name, mrGlobalSettings.getTextEncoding());
216  OUString aExpr(p_exp, n_exp, mrGlobalSettings.getTextEncoding());
217 
219  if (!pNames)
220  return;
221 
222  ScRangeData* pRange = new ScRangeData(
225 
226  pNames->insert(pRange, false);
227 }
228 
230  : maPos(rPos)
231  , meType(eType)
232  , mnIndex1(0)
233  , mnIndex2(0)
234  , meGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED)
235 {
236  rtl::math::setNan(&mfValue);
237 }
238 
240  : maPos(rPos)
241  , meType(Type::Numeric)
242  , mfValue(fValue)
243  , mnIndex1(0)
244  , mnIndex2(0)
245  , meGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED)
246 {
247 }
248 
250  : maPos(rPos)
251  , meType(Type::String)
252  , mnIndex1(nIndex)
253  , mnIndex2(0)
254  , meGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED)
255 {
256  rtl::math::setNan(&mfValue);
257 }
258 
259 ScOrcusFactory::CellStoreToken::CellStoreToken(const ScAddress& rPos, const OUString& rFormula,
261  : maPos(rPos)
262  , meType(Type::Formula)
263  , maStr1(rFormula)
264  , mnIndex1(0)
265  , mnIndex2(0)
266  , meGrammar(eGrammar)
267 {
268  rtl::math::setNan(&mfValue);
269 }
270 
271 ScOrcusFactory::ScOrcusFactory(ScDocument& rDoc, bool bSkipDefaultStyles) :
272  maDoc(rDoc),
274  maSharedStrings(*this),
276  maStyles(*this, bSkipDefaultStyles),
277  mnProgress(0) {}
278 
279 orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::append_sheet(
280  orcus::spreadsheet::sheet_t sheet_index, const char* sheet_name, size_t sheet_name_length)
281 {
282  OUString aTabName(sheet_name, sheet_name_length, maGlobalSettings.getTextEncoding());
283 
284  if (sheet_index == 0)
285  {
286  // The calc document initializes with one sheet already present.
287  assert(maDoc.getSheetCount() == 1);
288  maDoc.setSheetName(0, aTabName);
289  maSheets.push_back(std::make_unique<ScOrcusSheet>(maDoc, 0, *this));
290  return maSheets.back().get();
291  }
292 
293  if (!maDoc.appendSheet(aTabName))
294  return nullptr;
295 
296  SCTAB nTab = maDoc.getSheetCount() - 1;
297  maSheets.push_back(std::make_unique<ScOrcusSheet>(maDoc, nTab, *this));
298  return maSheets.back().get();
299 }
300 
301 namespace {
302 
303 class FindSheetByIndex
304 {
305  SCTAB mnTab;
306 public:
307  explicit FindSheetByIndex(SCTAB nTab) : mnTab(nTab) {}
308  bool operator() (const std::unique_ptr<ScOrcusSheet>& rSheet) const
309  {
310  return rSheet->getIndex() == mnTab;
311  }
312 };
313 
314 }
315 
316 orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::get_sheet(const char* sheet_name, size_t sheet_name_length)
317 {
318  OUString aTabName(sheet_name, sheet_name_length, maGlobalSettings.getTextEncoding());
319  SCTAB nTab = maDoc.getSheetIndex(aTabName);
320  if (nTab < 0)
321  // Sheet by that name not found.
322  return nullptr;
323 
324  // See if we already have an orcus sheet instance by that index.
325  std::vector< std::unique_ptr<ScOrcusSheet> >::iterator it =
326  std::find_if(maSheets.begin(), maSheets.end(), FindSheetByIndex(nTab));
327 
328  if (it != maSheets.end())
329  // We already have one. Return it.
330  return it->get();
331 
332  // Create a new orcus sheet instance for this.
333  maSheets.push_back(std::make_unique<ScOrcusSheet>(maDoc, nTab, *this));
334  return maSheets.back().get();
335 }
336 
337 orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::get_sheet(orcus::spreadsheet::sheet_t sheet_index)
338 {
339  SCTAB nTab = static_cast<SCTAB>(sheet_index);
340  // See if we already have an orcus sheet instance by that index.
341  std::vector< std::unique_ptr<ScOrcusSheet> >::iterator it =
342  std::find_if(maSheets.begin(), maSheets.end(), FindSheetByIndex(nTab));
343 
344  if (it != maSheets.end())
345  // We already have one. Return it.
346  return it->get();
347 
348  // Create a new orcus sheet instance for this.
349  maSheets.push_back(std::make_unique<ScOrcusSheet>(maDoc, nTab, *this));
350  return maSheets.back().get();
351 }
352 
353 orcus::spreadsheet::iface::import_global_settings* ScOrcusFactory::get_global_settings()
354 {
355  return &maGlobalSettings;
356 }
357 
358 orcus::spreadsheet::iface::import_shared_strings* ScOrcusFactory::get_shared_strings()
359 {
360  return &maSharedStrings;
361 }
362 
363 orcus::spreadsheet::iface::import_named_expression* ScOrcusFactory::get_named_expression()
364 {
365  return &maNamedExpressions;
366 }
367 
368 orcus::spreadsheet::iface::import_styles* ScOrcusFactory::get_styles()
369 {
370  return &maStyles;
371 }
372 
374 {
375  auto toFormulaCell = [this]( const CellStoreToken& rToken ) -> std::unique_ptr<ScFormulaCell>
376  {
377  const ScOrcusSheet& rSheet = *maSheets.at(rToken.maPos.Tab());
378  const sc::SharedFormulaGroups& rSFG = rSheet.getSharedFormulaGroups();
379  const ScTokenArray* pArray = rSFG.get(rToken.mnIndex1);
380  if (!pArray)
381  return std::unique_ptr<ScFormulaCell>();
382 
383  return std::make_unique<ScFormulaCell>(&maDoc.getDoc(), rToken.maPos, *pArray);
384  };
385 
386  int nCellCount = 0;
387 
388  for (const CellStoreToken& rToken : maCellStoreTokens)
389  {
390  switch (rToken.meType)
391  {
393  {
394  maDoc.setAutoInput(rToken.maPos, rToken.maStr1);
395  ++nCellCount;
396  break;
397  }
399  {
400  if (rToken.mnIndex1 >= maStrings.size())
401  // String index out-of-bound! Something is up.
402  break;
403 
404  maDoc.setStringCell(rToken.maPos, maStrings[rToken.mnIndex1]);
405  ++nCellCount;
406  break;
407  }
409  {
410  maDoc.setNumericCell(rToken.maPos, rToken.mfValue);
411  ++nCellCount;
412  break;
413  }
415  {
417  rToken.maPos, rToken.maStr1, rToken.meGrammar);
418 
419  ++nCellCount;
420  break;
421  }
423  {
424  if (std::isfinite(rToken.mfValue))
425  maDoc.setFormulaCell(rToken.maPos, rToken.maStr1, rToken.meGrammar, &rToken.mfValue);
426  else
427  maDoc.setFormulaCell(rToken.maPos, rToken.maStr1, rToken.meGrammar, rToken.maStr2);
428 
429  ++nCellCount;
430  break;
431  }
433  {
434  std::unique_ptr<ScFormulaCell> pCell = toFormulaCell(rToken);
435  if (!pCell)
436  break;
437 
438  maDoc.setFormulaCell(rToken.maPos, pCell.release());
439 
440  ++nCellCount;
441  break;
442  }
444  {
445  std::unique_ptr<ScFormulaCell> pCell = toFormulaCell(rToken);
446  if (!pCell)
447  break;
448 
449  if (std::isfinite(rToken.mfValue))
450  pCell->SetResultDouble(rToken.mfValue);
451  else
452  pCell->SetHybridString(
453  maDoc.getDoc().GetSharedStringPool().intern(rToken.maStr2));
454 
455  maDoc.setFormulaCell(rToken.maPos, pCell.release());
456 
457  ++nCellCount;
458  break;
459  }
461  {
462  if (!rToken.mnIndex1 || !rToken.mnIndex2)
463  break;
464 
465  ScRange aRange(rToken.maPos);
466  aRange.aEnd.IncCol(rToken.mnIndex1-1);
467  aRange.aEnd.IncRow(rToken.mnIndex2-1);
468 
469  ScCompiler aComp(&maDoc.getDoc(), aRange.aStart, rToken.meGrammar);
470  std::unique_ptr<ScTokenArray> pArray(aComp.CompileString(rToken.maStr1));
471  if (!pArray)
472  break;
473 
474  maDoc.setMatrixCells(aRange, *pArray, rToken.meGrammar);
475  break;
476  }
478  {
479  if (!rToken.mnIndex1)
480  break;
481 
482  maDoc.fillDownCells(rToken.maPos, rToken.mnIndex1);
483  break;
484  }
485  default:
486  ;
487  }
488 
489  if (nCellCount == 100000)
490  {
492  nCellCount = 0;
493  }
494  }
495 
496  if (mxStatusIndicator.is())
497  mxStatusIndicator->end();
498 
499  maDoc.finalize();
500 }
501 
503 {
504  return maDoc;
505 }
506 
507 size_t ScOrcusFactory::appendString(const OUString& rStr)
508 {
509  size_t nPos = maStrings.size();
510  maStrings.push_back(rStr);
511  maStringHash.emplace(rStr, nPos);
512 
513  return nPos;
514 }
515 
516 size_t ScOrcusFactory::addString(const OUString& rStr)
517 {
518  // Add only if the string is not yet present in the string pool.
519  StringHashType::iterator it = maStringHash.find(rStr);
520  if (it != maStringHash.end())
521  return it->second;
522 
523  return appendString(rStr);
524 }
525 
526 const OUString* ScOrcusFactory::getString(size_t nIndex) const
527 {
528  return nIndex < maStrings.size() ? &maStrings[nIndex] : nullptr;
529 }
530 
531 void ScOrcusFactory::pushCellStoreAutoToken( const ScAddress& rPos, const OUString& rVal )
532 {
533  maCellStoreTokens.emplace_back(rPos, CellStoreToken::Type::Auto);
534  maCellStoreTokens.back().maStr1 = rVal;
535 }
536 
537 void ScOrcusFactory::pushCellStoreToken( const ScAddress& rPos, uint32_t nStrIndex )
538 {
539  maCellStoreTokens.emplace_back(rPos, nStrIndex);
540 }
541 
542 void ScOrcusFactory::pushCellStoreToken( const ScAddress& rPos, double fValue )
543 {
544  maCellStoreTokens.emplace_back(rPos, fValue);
545 }
546 
548  const ScAddress& rPos, const OUString& rFormula, formula::FormulaGrammar::Grammar eGrammar )
549 {
550  maCellStoreTokens.emplace_back(rPos, rFormula, eGrammar);
551 }
552 
553 void ScOrcusFactory::pushFillDownCellsToken( const ScAddress& rPos, uint32_t nFillSize )
554 {
556  maCellStoreTokens.back().mnIndex1 = nFillSize;
557 }
558 
559 void ScOrcusFactory::pushSharedFormulaToken( const ScAddress& rPos, uint32_t nIndex )
560 {
562  maCellStoreTokens.back().mnIndex1 = nIndex;
563 }
564 
566  const ScAddress& rPos, const OUString& rFormula, formula::FormulaGrammar::Grammar eGrammar,
567  uint32_t nRowRange, uint32_t nColRange )
568 {
570  CellStoreToken& rT = maCellStoreTokens.back();
571  rT.maStr1 = rFormula;
572  rT.meGrammar = eGrammar;
573  rT.mnIndex1 = nColRange;
574  rT.mnIndex2 = nRowRange;
575 }
576 
577 void ScOrcusFactory::pushFormulaResult( const ScAddress& rPos, double fValue )
578 {
579  // Formula result is expected to be pushed immediately following the
580  // formula token it belongs.
581  if (maCellStoreTokens.empty())
582  return;
583 
584  CellStoreToken& rToken = maCellStoreTokens.back();
585  if (rToken.maPos != rPos)
586  return;
587 
588  switch (rToken.meType)
589  {
592  break;
595  break;
596  default:
597  return;
598  }
599 
600  rToken.mfValue = fValue;
601 }
602 
603 void ScOrcusFactory::pushFormulaResult( const ScAddress& rPos, const OUString& rValue )
604 {
605  // Formula result is expected to be pushed immediately following the
606  // formula token it belongs.
607  if (maCellStoreTokens.empty())
608  return;
609 
610  CellStoreToken& rToken = maCellStoreTokens.back();
611  if (rToken.maPos != rPos)
612  return;
613 
614  switch (rToken.meType)
615  {
618  break;
621  break;
622  default:
623  return;
624  }
625 
626  rToken.maStr2 = rValue;
627 }
628 
630 {
631  if (!mxStatusIndicator.is())
632  // Status indicator object not set.
633  return;
634 
635  // For now, we'll hard-code the progress range to be 100, and stops at 99
636  // in all cases.
637 
638  if (!mnProgress)
639  mxStatusIndicator->start(ScResId(STR_LOAD_DOC), 100);
640 
641  if (mnProgress == 99)
642  return;
643 
644  ++mnProgress;
645  mxStatusIndicator->setValue(mnProgress);
646 }
647 
648 void ScOrcusFactory::setStatusIndicator(const uno::Reference<task::XStatusIndicator>& rIndicator)
649 {
650  mxStatusIndicator = rIndicator;
651 }
652 
654 {
655  return maGlobalSettings;
656 }
657 
659  mrDoc(rDoc),
660  mnTab(nTab)
661 {
662 }
663 
665 {
666 }
667 
668 namespace {
669 
670 double translateToInternal(double nVal, orcus::length_unit_t unit)
671 {
672  switch(unit)
673  {
674  case orcus::length_unit_t::inch:
675  return nVal * 72.0 * 20.0;
676  break;
677  case orcus::length_unit_t::twip:
678  return nVal;
679  break;
680  case orcus::length_unit_t::point:
681  return nVal * 20.0;
682  break;
683  case orcus::length_unit_t::centimeter:
684  return nVal * 20.0 * 72.0 / 2.54;
685  break;
686  case orcus::length_unit_t::unknown:
687  if (nVal != 0)
688  SAL_WARN("sc.orcus", "unknown unit");
689  break;
690  default:
691  break;
692  }
693  return nVal;
694 }
695 
696 
697 }
698 
699 void ScOrcusSheetProperties::set_column_width(os::col_t col, double width, orcus::length_unit_t unit)
700 {
701  double nNewWidth = translateToInternal(width, unit);
702  mrDoc.getDoc().SetColWidthOnly(col, mnTab, nNewWidth);
703 }
704 
705 void ScOrcusSheetProperties::set_column_hidden(os::col_t col, bool hidden)
706 {
707  if (hidden)
708  mrDoc.getDoc().SetColHidden(col, col, mnTab, hidden);
709 }
710 
711 void ScOrcusSheetProperties::set_row_height(os::row_t row, double height, orcus::length_unit_t unit)
712 {
713  double nNewHeight = translateToInternal(height, unit);
714  mrDoc.getDoc().SetRowHeightOnly(row, row,mnTab, nNewHeight);
715 }
716 
717 void ScOrcusSheetProperties::set_row_hidden(os::row_t row, bool hidden)
718 {
719  if (hidden)
720  mrDoc.getDoc().SetRowHidden(row, row, mnTab, hidden);
721 }
722 
723 void ScOrcusSheetProperties::set_merge_cell_range(const orcus::spreadsheet::range_t& range)
724 {
725  mrDoc.setMergedCells(mnTab, range.first.column, range.first.row, range.last.column, range.last.row);
726 }
727 
729  mnTab(nTab),
730  mrDoc(rDoc),
731  mpCurrentFormat(new ScConditionalFormat(0, &mrDoc)),
732  meEntryType(ScFormatEntry::Type::Condition)
733 {
734 }
735 
737 {
738 }
739 
740 void ScOrcusConditionalFormat::set_color(os::color_elem_t /*alpha*/, os::color_elem_t /*red*/,
741  os::color_elem_t /*green*/, os::color_elem_t /*blue*/)
742 {
743  SAL_INFO("sc.orcus.condformat", "set_color");
744 }
745 
746 void ScOrcusConditionalFormat::set_condition_type(os::condition_type_t /*type*/)
747 {
749  SAL_INFO("sc.orcus.condformat", "set_condition_type");
750 }
751 
752 void ScOrcusConditionalFormat::set_formula(const char* /*p*/, size_t /*n*/)
753 {
754  SAL_INFO("sc.orcus.condformat", "set_formula");
755 }
756 
757 void ScOrcusConditionalFormat::set_date(os::condition_date_t /*date*/)
758 {
760  SAL_INFO("sc.orcus.condformat", "set_date");
761 }
762 
764 {
765  SAL_INFO("sc.orcus.condformat", "commit_condition");
766 }
767 
768 void ScOrcusConditionalFormat::set_icon_name(const char* /*p*/, size_t /*n*/)
769 {
771  SAL_INFO("sc.orcus.condformat", "set_icon_name");
772 }
773 
775 {
777  SAL_INFO("sc.orcus.condformat", "set_databar_gradient");
778 }
779 
780 void ScOrcusConditionalFormat::set_databar_axis(os::databar_axis_t /*axis*/)
781 {
783  SAL_INFO("sc.orcus.condformat", "set_databar_axis");
784 }
785 
786 void ScOrcusConditionalFormat::set_databar_color_positive(os::color_elem_t /*alpha*/, os::color_elem_t /*red*/,
787  os::color_elem_t /*green*/, os::color_elem_t /*blue*/)
788 {
790  SAL_INFO("sc.orcus.condformat", "set_databar_color_positive");
791 }
792 
793 void ScOrcusConditionalFormat::set_databar_color_negative(os::color_elem_t /*alpha*/, os::color_elem_t /*red*/,
794  os::color_elem_t /*green*/, os::color_elem_t /*blue*/)
795 {
797  SAL_INFO("sc.orcus.condformat", "set_databar_color_negative");
798 }
799 
801 {
803  SAL_INFO("sc.orcus.condformat", "set_min_databar_length");
804 }
805 
807 {
809  SAL_INFO("sc.orcus.condformat", "set_max_databar_length");
810 }
811 
813 {
814  SAL_INFO("sc.orcus.condformat", "set_show_value");
815 }
816 
818 {
820  SAL_INFO("sc.orcus.condformat", "set_iconset_reverse");
821 }
822 
824 {
825  SAL_INFO("sc.orcus.condformat", "set_xf_id");
826 }
827 
828 void ScOrcusConditionalFormat::set_operator(os::condition_operator_t /*condition_type*/)
829 {
830  SAL_INFO("sc.orcus.condformat", "set_operator");
831 }
832 
833 void ScOrcusConditionalFormat::set_type(os::conditional_format_t type)
834 {
835  switch (type)
836  {
837  case os::conditional_format_t::condition:
838  case os::conditional_format_t::formula:
840  // mpCurrentEntry.reset(new ScCondFormatEntry());
841  break;
842  case os::conditional_format_t::date:
843  break;
844  case os::conditional_format_t::colorscale:
845  break;
846  case os::conditional_format_t::databar:
847  break;
848  case os::conditional_format_t::iconset:
849  break;
850  default:
851  SAL_INFO("sc.orcus.condformat", "unknown conditional_format_t value");
852  break;
853  }
854  SAL_INFO("sc.orcus.condformat", "set_type");
855 }
856 
858 {
859  SAL_INFO("sc.orcus.condformat", "commit_entry");
860 }
861 
862 void ScOrcusConditionalFormat::set_range(const char* /*p*/, size_t /*n*/)
863 {
864  SAL_INFO("sc.orcus.condformat", "set_range");
865 }
866 
867 void ScOrcusConditionalFormat::set_range(os::row_t row_start, os::col_t col_start,
868  os::row_t row_end, os::col_t col_end)
869 {
870  SAL_INFO("sc.orcus.condformat", "set_range");
871  ScRange aRange(col_start, row_start, mnTab, col_end, row_end, mnTab);
872  mpCurrentFormat->SetRange(aRange);
873 }
874 
876 {
877  SAL_INFO("sc.orcus.condformat", "commit_format");
878  mpCurrentFormat.reset(new ScConditionalFormat(0, &mrDoc));
879 }
880 
882  mrDoc(rDoc),
883  mnTab(nTab),
884  mrFactory(rFactory),
885  mrStyles(static_cast<ScOrcusStyles&>(*mrFactory.get_styles())),
886  maAutoFilter(rFactory.getGlobalSettings()),
887  maProperties(mnTab, mrDoc),
888  maConditionalFormat(mnTab, rDoc.getDoc()),
889  maNamedExpressions(rDoc, rFactory.getGlobalSettings(), nTab),
890  maFormula(*this),
891  maArrayFormula(*this),
892  mnCellCount(0)
893 {
894 }
895 
897 {
898  mnCol = -1;
899  mnRow = -1;
900  maFormula.clear();
903  mbShared = false;
905  mnResult = 0;
906  mfResult = 0.0;
907 }
908 
910  mrSheet(rSheet),
911  mnCol(-1),
912  mnRow(-1),
913  meGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED),
914  mnSharedFormulaIndex(0),
915  mbShared(false),
916  meResType(ResultType::NotSet),
917  mnResult(0),
918  mfResult(0.0) {}
919 
921 
922 void ScOrcusFormula::set_position(os::row_t row, os::col_t col)
923 {
924  mnCol = col;
925  mnRow = row;
926 }
927 
928 void ScOrcusFormula::set_formula(os::formula_grammar_t grammar, const char* p, size_t n)
929 {
931  meGrammar = getCalcGrammarFromOrcus(grammar);
932 }
933 
935 {
936  mnSharedFormulaIndex = index;
937  mbShared = true;
938 }
939 
941 {
943  mfResult = value;
944 }
945 
947 {
949  mnResult = sindex;
950 }
951 
953 {
955 }
956 
958 {
960  mfResult = value ? 1.0 : 0.0;
961 }
962 
964 {
965  ScOrcusFactory& rFactory = mrSheet.getFactory();
968 
969  if (mbShared)
970  {
971  if (maFormula.isEmpty())
972  {
973  // shared formula that references existing formula token.
974  const ScTokenArray* pArray = rGroups.get(mnSharedFormulaIndex);
975  if (!pArray)
976  return;
977  }
978  else
979  {
980  // topmost shared formula with new formula token.
981 
982  // Compile the formula expression into tokens.
983  ScCompiler aComp(&mrSheet.getDoc().getDoc(), aPos, meGrammar);
984  std::unique_ptr<ScTokenArray> pArray = aComp.CompileString(maFormula);
985  if (!pArray)
986  // Tokenization failed.
987  return;
988 
989  rGroups.set(mnSharedFormulaIndex, std::move(pArray));
990  }
992  }
993  else
994  {
995  // non-shared formula
996  rFactory.pushCellStoreToken(aPos, maFormula, meGrammar);
997  }
998 
999  switch (meResType)
1000  {
1001  case ResultType::String:
1002  {
1003  const OUString* pStr = rFactory.getString(mnResult);
1004  if (pStr)
1005  rFactory.pushFormulaResult(aPos, *pStr);
1006  break;
1007  }
1008  case ResultType::Value:
1009  rFactory.pushFormulaResult(aPos, mfResult);
1010  break;
1011  default:
1012  ;
1013  }
1014 
1016 }
1017 
1019 {
1020  mnCol = -1;
1021  mnRow = -1;
1022  mnColRange = 0;
1023  mnRowRange = 0;
1024 
1025  maFormula.clear();
1027 }
1028 
1030  mrSheet(rSheet),
1031  mnCol(-1),
1032  mnRow(-1),
1033  mnColRange(0),
1034  mnRowRange(0),
1035  meGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED) {}
1036 
1038 
1039 void ScOrcusArrayFormula::set_range(const os::range_t& range)
1040 {
1041  mnCol = range.first.column;
1042  mnRow = range.first.row;
1043 
1044  mnColRange = range.last.column - range.first.column + 1;
1045  mnRowRange = range.last.row - range.first.column + 1;
1046 }
1047 
1048 void ScOrcusArrayFormula::set_formula(os::formula_grammar_t grammar, const char* p, size_t n)
1049 {
1050  meGrammar = getCalcGrammarFromOrcus(grammar);
1052 }
1053 
1054 void ScOrcusArrayFormula::set_result_value(os::row_t /*row*/, os::col_t /*col*/, double /*value*/)
1055 {
1056  // TODO : implement result cache for matrix
1057 }
1058 
1059 void ScOrcusArrayFormula::set_result_string(os::row_t /*row*/, os::col_t /*col*/, size_t /*sindex*/)
1060 {
1061  // TODO : implement result cache for matrix
1062 }
1063 
1064 void ScOrcusArrayFormula::set_result_empty(os::row_t /*row*/, os::col_t /*col*/)
1065 {
1066  // TODO : implement result cache for matrix
1067 }
1068 
1069 void ScOrcusArrayFormula::set_result_bool(os::row_t /*row*/, os::col_t /*col*/, bool /*value*/)
1070 {
1071  // TODO : implement result cache for matrix
1072 }
1073 
1075 {
1076  ScAddress aPos(mnCol, mnRow, mrSheet.getIndex());
1079 }
1080 
1082 {
1083  ++mnCellCount;
1084  if (mnCellCount == 100000)
1085  {
1087  mnCellCount = 0;
1088  }
1089 }
1090 
1092 {
1093  return mrDoc;
1094 }
1095 
1096 os::iface::import_auto_filter* ScOrcusSheet::get_auto_filter()
1097 {
1098  return &maAutoFilter;
1099 }
1100 
1101 os::iface::import_table* ScOrcusSheet::get_table()
1102 {
1103  return nullptr;
1104 }
1105 
1106 os::iface::import_sheet_properties* ScOrcusSheet::get_sheet_properties()
1107 {
1108  return &maProperties;
1109 }
1110 
1111 os::iface::import_conditional_format* ScOrcusSheet::get_conditional_format()
1112 {
1113  return &maConditionalFormat;
1114 }
1115 
1116 os::iface::import_named_expression* ScOrcusSheet::get_named_expression()
1117 {
1118  return &maNamedExpressions;
1119 }
1120 
1121 os::iface::import_formula* ScOrcusSheet::get_formula()
1122 {
1123  maFormula.reset();
1124  return &maFormula;
1125 }
1126 
1127 os::iface::import_array_formula* ScOrcusSheet::get_array_formula()
1128 {
1130  return &maArrayFormula;
1131 }
1132 
1133 void ScOrcusSheet::set_auto(os::row_t row, os::col_t col, const char* p, size_t n)
1134 {
1135  OUString aVal(p, n, mrFactory.getGlobalSettings().getTextEncoding());
1136  mrFactory.pushCellStoreAutoToken(ScAddress(col, row, mnTab), aVal);
1137  cellInserted();
1138 }
1139 
1140 void ScOrcusSheet::set_string(os::row_t row, os::col_t col, size_t sindex)
1141 {
1142  mrFactory.pushCellStoreToken(ScAddress(col, row, mnTab), uint32_t(sindex));
1143  cellInserted();
1144 }
1145 
1146 void ScOrcusSheet::set_value(os::row_t row, os::col_t col, double value)
1147 {
1148  mrFactory.pushCellStoreToken(ScAddress(col, row, mnTab), value);
1149  cellInserted();
1150 }
1151 
1152 void ScOrcusSheet::set_bool(os::row_t row, os::col_t col, bool value)
1153 {
1154  mrFactory.pushCellStoreToken(ScAddress(col, row, mnTab), value ? 1.0 : 0.0);
1155  cellInserted();
1156 }
1157 
1159  os::row_t row, os::col_t col, int year, int month, int day, int hour, int minute, double second)
1160 {
1161  SvNumberFormatter* pFormatter = mrDoc.getDoc().GetFormatTable();
1162 
1163  Date aDate(day, month, year);
1164  sal_uInt32 nSec = floor(second);
1165  sal_uInt32 nNanoSec = (second - nSec) * ::tools::Time::nanoSecPerSec;
1166  tools::Time aTime(hour, minute, nSec, nNanoSec);
1167  long nDateDiff = aDate - pFormatter->GetNullDate();
1168 
1169  double fTime =
1170  static_cast<double>(aTime.GetNanoSec()) / ::tools::Time::nanoSecPerSec +
1171  aTime.GetSec() +
1174 
1175  fTime /= DATE_TIME_FACTOR;
1176 
1177  mrFactory.pushCellStoreToken(ScAddress(col, row, mnTab), nDateDiff + fTime);
1178  cellInserted();
1179 }
1180 
1181 void ScOrcusSheet::set_format(os::row_t row, os::col_t col, size_t xf_index)
1182 {
1183  SAL_INFO("sc.orcus.style", "set format: " << xf_index);
1184 
1185  ScPatternAttr aPattern(mrDoc.getDoc().GetPool());
1186  mrStyles.applyXfToItemSet(aPattern.GetItemSet(), xf_index);
1187  mrDoc.getDoc().ApplyPattern(col, row, mnTab, aPattern);
1188 }
1189 
1190 void ScOrcusSheet::set_format(os::row_t row_start, os::col_t col_start,
1191  os::row_t row_end, os::col_t col_end, size_t xf_index)
1192 {
1193  SAL_INFO("sc.orcus.style", "set format range: " << xf_index);
1194  ScPatternAttr aPattern(mrDoc.getDoc().GetPool());
1195  mrStyles.applyXfToItemSet(aPattern.GetItemSet(), xf_index);
1196  mrDoc.getDoc().ApplyPatternAreaTab(col_start, row_start, col_end, row_end, mnTab, aPattern);
1197 }
1198 
1199 orcus::spreadsheet::range_size_t ScOrcusSheet::get_sheet_size() const
1200 {
1201  orcus::spreadsheet::range_size_t ret;
1202  ret.rows = MAXROWCOUNT;
1203  ret.columns = MAXCOLCOUNT;
1204 
1205  return ret;
1206 }
1207 
1208 void ScOrcusSheet::fill_down_cells(os::row_t row, os::col_t col, os::row_t range_size)
1209 {
1210  mrFactory.pushFillDownCellsToken(ScAddress(col, row, mnTab), range_size);
1211  cellInserted();
1212 }
1213 
1215 {
1216  return maFormulaGroups;
1217 }
1218 
1220 {
1221  return maFormulaGroups;
1222 }
1223 
1225 {
1226  return mrFactory;
1227 }
1228 
1230  mrFactory(rFactory) {}
1231 
1232 size_t ScOrcusSharedStrings::append(const char* s, size_t n)
1233 {
1234  OUString aNewString(s, n, mrFactory.getGlobalSettings().getTextEncoding());
1235  return mrFactory.appendString(aNewString);
1236 }
1237 
1238 size_t ScOrcusSharedStrings::add(const char* s, size_t n)
1239 {
1240  OUString aNewString(s, n, mrFactory.getGlobalSettings().getTextEncoding());
1241  return mrFactory.addString(aNewString);
1242 }
1243 
1244 void ScOrcusSharedStrings::set_segment_font(size_t /*font_index*/)
1245 {
1246 }
1247 
1249 {
1250 }
1251 
1253 {
1254 }
1255 
1256 void ScOrcusSharedStrings::set_segment_font_name(const char* /*s*/, size_t /*n*/)
1257 {
1258 }
1259 
1261 {
1262 }
1263 
1264 void ScOrcusSharedStrings::set_segment_font_color(orcus::spreadsheet::color_elem_t,
1265  orcus::spreadsheet::color_elem_t,
1266  orcus::spreadsheet::color_elem_t,
1267  orcus::spreadsheet::color_elem_t)
1268 {
1269 }
1270 
1271 void ScOrcusSharedStrings::append_segment(const char* s, size_t n)
1272 {
1273  maCurSegment.append(s, n);
1274 }
1275 
1277 {
1278  OString aStr = maCurSegment.makeStringAndClear();
1279  return mrFactory.addString(
1280  OStringToOUString(aStr, mrFactory.getGlobalSettings().getTextEncoding()));
1281 }
1282 
1283 ScOrcusStyles::ScOrcusStyles( ScOrcusFactory& rFactory, bool bSkipDefaultStyles ) :
1284  mrFactory(rFactory)
1285 {
1286  ScDocument& rDoc = rFactory.getDoc().getDoc();
1287  if (!bSkipDefaultStyles && !rDoc.GetStyleSheetPool()->HasStandardStyles())
1289 }
1290 
1292  mbBold(false),
1293  mbItalic(false),
1294  mnSize(10),
1295  maColor(COL_BLACK),
1296  mbHasFontAttr(false),
1297  mbHasUnderlineAttr(false),
1298  mbHasStrikeout(false),
1299  meUnderline(LINESTYLE_NONE),
1300  maUnderlineColor(COL_WHITE),
1301  meStrikeout(STRIKEOUT_NONE)
1302 {
1303 }
1304 
1306  mePattern(orcus::spreadsheet::fill_pattern_t::none),
1307  maFgColor(COL_WHITE),
1308  maBgColor(COL_WHITE),
1309  mbHasFillAttr(false)
1310 {
1311 }
1312 
1314  maCode(""),
1315  mbHasNumberFormatAttr(false)
1316 {
1317 }
1318 
1319 /*
1320 namespace {
1321 
1322 std::ostream& operator<<(std::ostream& rStrm, const Color& rColor)
1323 {
1324  rStrm << "Red: " << (int)rColor.GetRed() << ", Green: " << (int)rColor.GetGreen() << ", Blue: " << (int)rColor.GetBlue();
1325  return rStrm;
1326 }
1327 
1328 }
1329 */
1330 
1332 {
1333  if (mbHasFontAttr)
1334  {
1335  FontItalic eItalic = mbItalic ? ITALIC_NORMAL : ITALIC_NONE;
1336  rSet.Put(SvxPostureItem(eItalic, ATTR_FONT_POSTURE));
1337 
1339  rSet.Put(SvxWeightItem(eWeight, ATTR_FONT_WEIGHT));
1340 
1342 
1343  if(!maName.isEmpty())
1344  rSet.Put( SvxFontItem( FAMILY_DONTKNOW, maName, maName, PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, ATTR_FONT ));
1345 
1346  rSet.Put( SvxFontHeightItem (translateToInternal(mnSize, orcus::length_unit_t::point), 100, ATTR_FONT_HEIGHT));
1347  }
1348 
1349  if (mbHasUnderlineAttr)
1350  {
1351  SvxUnderlineItem aUnderline(meUnderline, ATTR_FONT_UNDERLINE);
1352  aUnderline.SetColor(maUnderlineColor);
1353  rSet.Put(aUnderline);
1354  }
1355 
1356  if (mbHasStrikeout)
1357  rSet.Put(SvxCrossedOutItem(meStrikeout, ATTR_FONT_CROSSEDOUT));
1358 }
1359 
1361 {
1362  if (mePattern == orcus::spreadsheet::fill_pattern_t::none)
1363  {
1364  SAL_INFO("sc.orcus.style", "no fill style");
1365  return;
1366  }
1367 
1368  if (mePattern == orcus::spreadsheet::fill_pattern_t::solid)
1369  rSet.Put(SvxBrushItem(maFgColor, ATTR_BACKGROUND));
1370 }
1371 
1373  mbHidden(false),
1374  mbLocked(true),
1375  mbPrintContent(false),
1376  mbFormulaHidden(false),
1377  mbHasProtectionAttr(false)
1378 {
1379 }
1380 
1382 {
1383  rSet.Put(ScProtectionAttr(mbLocked, mbFormulaHidden, mbHidden, mbPrintContent));
1384 }
1385 
1387  mbHasBorderAttr(false)
1388 {
1389  border_line();
1390 }
1391 
1393  meStyle(SvxBorderLineStyle::SOLID),
1394  maColor(COL_BLACK),
1395  mnWidth(0)
1396 {
1397 }
1398 
1399 namespace {
1400 
1401 SvxBoxItemLine getDirection(os::border_direction_t dir)
1402 {
1403  switch (dir)
1404  {
1405  case os::border_direction_t::right:
1406  return SvxBoxItemLine::RIGHT;
1407  break;
1408  case os::border_direction_t::left:
1409  return SvxBoxItemLine::LEFT;
1410  break;
1411  case os::border_direction_t::top:
1412  return SvxBoxItemLine::TOP;
1413  break;
1414  case os::border_direction_t::bottom:
1415  return SvxBoxItemLine::BOTTOM;
1416  break;
1417  default:
1418  break;
1419  }
1420  return SvxBoxItemLine::RIGHT;
1421 }
1422 
1423 }
1424 
1426 {
1427  SvxBoxItem aBoxItem(ATTR_BORDER);
1428  SvxLineItem aDiagonal_TLBR(ATTR_BORDER_TLBR);
1429  SvxLineItem aDiagonal_BLTR(ATTR_BORDER_BLTR);
1430 
1431  for (auto& current_border_line : border_lines)
1432  {
1433  SvxBoxItemLine eDir = getDirection(current_border_line.first);
1434 
1435  if (current_border_line.first == orcus::spreadsheet::border_direction_t::diagonal_tl_br)
1436  {
1437  editeng::SvxBorderLine aLine(&current_border_line.second.maColor, current_border_line.second.mnWidth, current_border_line.second.meStyle);
1438  aDiagonal_TLBR.SetLine(&aLine);
1439  }
1440  else if (current_border_line.first == orcus::spreadsheet::border_direction_t::diagonal_bl_tr)
1441  {
1442  editeng::SvxBorderLine aLine(&current_border_line.second.maColor, current_border_line.second.mnWidth, current_border_line.second.meStyle);
1443  aDiagonal_BLTR.SetLine(&aLine);
1444  }
1445  else
1446  {
1447  editeng::SvxBorderLine aLine(&current_border_line.second.maColor, current_border_line.second.mnWidth, current_border_line.second.meStyle);
1448  aBoxItem.SetLine(&aLine, eDir);
1449  }
1450  }
1451  rSet.Put(aDiagonal_BLTR);
1452  rSet.Put(aDiagonal_TLBR);
1453  rSet.Put(aBoxItem);
1454 }
1455 
1457 {
1458  sal_uInt32 nKey;
1459  sal_Int32 nCheckPos;
1460  SvNumberFormatter* pFormatter = rDoc.GetFormatTable();
1461  OUString Code = maCode; /* <-- Done because the SvNumberFormatter::PutEntry demands a non const NumFormat Code*/
1462  SvNumFormatType type = SvNumFormatType::ALL;
1463 
1464  pFormatter->PutEntry(Code, nCheckPos, type, nKey, LANGUAGE_ENGLISH_US);
1465  if (!nCheckPos)
1466  rSet.Put(SfxUInt32Item(ATTR_VALUE_FORMAT, nKey));
1467 }
1468 
1470  mnFontId(0),
1471  mnFillId(0),
1472  mnBorderId(0),
1473  mnProtectionId(0),
1474  mnNumberFormatId(0),
1475  mnStyleXf(0),
1476  mbAlignment(false),
1477  meHorAlignment(SvxCellHorJustify::Standard),
1478  meVerAlignment(SvxCellVerJustify::Standard),
1479  meHorAlignMethod(SvxCellJustifyMethod::Auto),
1480  meVerAlignMethod(SvxCellJustifyMethod::Auto)
1481 {
1482 }
1483 
1485  maParentName("Default"),
1486  mnXFId(0),
1487  mnBuiltInId(0)
1488 {
1489 }
1490 
1492 {
1493  size_t nFontId = rXf.mnFontId;
1494  if (nFontId >= maFonts.size())
1495  {
1496  SAL_WARN("sc.orcus.style", "invalid font id");
1497  return;
1498  }
1499 
1500  const font& rFont = maFonts[nFontId];
1501  rFont.applyToItemSet(rSet);
1502 
1503  size_t nFillId = rXf.mnFillId;
1504  if (nFillId >= maFills.size())
1505  {
1506  SAL_WARN("sc.orcus.style", "invalid fill id");
1507  return;
1508  }
1509 
1510  const fill& rFill = maFills[nFillId];
1511  if (rFill.mbHasFillAttr)
1512  rFill.applyToItemSet(rSet);
1513 
1514  size_t nBorderId = rXf.mnBorderId;
1515  if (nBorderId >= maBorders.size())
1516  {
1517  SAL_WARN("sc.orcus.style", "invalid border id");
1518  return;
1519  }
1520  const border& rBorder = maBorders[nBorderId];
1521  if (rBorder.mbHasBorderAttr)
1522  rBorder.applyToItemSet(rSet);
1523 
1524  size_t nProtectionId = rXf.mnProtectionId;
1525  if (nProtectionId >= maProtections.size())
1526  {
1527  SAL_WARN("sc.orcus.style", "invalid protection id");
1528  return;
1529  }
1530  const protection& rProtection = maProtections[nProtectionId];
1531  if (rProtection.mbHasProtectionAttr)
1532  rProtection.applyToItemSet(rSet);
1533 
1534  size_t nNumberFormatId = rXf.mnNumberFormatId;
1535  if (nNumberFormatId >= maNumberFormats.size())
1536  {
1537  SAL_WARN("sc.orcus.style", "invalid number format id");
1538  return;
1539  }
1540  const number_format& rFormat = maNumberFormats[nNumberFormatId];
1541  if (rFormat.mbHasNumberFormatAttr)
1542  rFormat.applyToItemSet(rSet, mrFactory.getDoc().getDoc());
1543 
1544  if(rXf.mbAlignment)
1545  {
1550  }
1551 }
1552 
1554 {
1555  SAL_INFO("sc.orcus.style", "applyXfToitemSet: " << xfId);
1556  if (maCellXfs.size() <= xfId)
1557  {
1558  SAL_WARN("sc.orcus.style", "invalid xf id");
1559  return;
1560  }
1561 
1562  const xf& rXf = maCellXfs[xfId];
1563  applyXfToItemSet(rSet, rXf);
1564 }
1565 
1567 {
1568  // needed at all?
1569 }
1570 
1572 {
1573  maCurrentFont.mbBold = b;
1575 }
1576 
1578 {
1579  maCurrentFont.mbItalic = b;
1581 }
1582 
1583 void ScOrcusStyles::set_font_name(const char* s, size_t n)
1584 {
1585  OUString aName(s, n, mrFactory.getGlobalSettings().getTextEncoding());
1588 }
1589 
1591 {
1592  maCurrentFont.mnSize = point;
1594 }
1595 
1596 void ScOrcusStyles::set_font_underline(orcus::spreadsheet::underline_t e)
1597 {
1598  switch(e)
1599  {
1600  case orcus::spreadsheet::underline_t::single_line:
1601  case orcus::spreadsheet::underline_t::single_accounting:
1603  break;
1604  case orcus::spreadsheet::underline_t::double_line:
1605  case orcus::spreadsheet::underline_t::double_accounting:
1607  break;
1608  case orcus::spreadsheet::underline_t::none:
1610  break;
1611  case orcus::spreadsheet::underline_t::dotted:
1613  break;
1614  case orcus::spreadsheet::underline_t::dash:
1616  break;
1617  case orcus::spreadsheet::underline_t::long_dash:
1619  break;
1620  case orcus::spreadsheet::underline_t::dot_dash:
1622  break;
1623  case orcus::spreadsheet::underline_t::dot_dot_dot_dash:
1624  maCurrentFont.meUnderline = LINESTYLE_DASHDOTDOT; // dot-dot-dot-dash is absent from underline types in libo
1625  break;
1626  case orcus::spreadsheet::underline_t::wave:
1628  break;
1629  default:
1630  ;
1631  }
1633 }
1634 
1635 void ScOrcusStyles::set_font_underline_width(orcus::spreadsheet::underline_width_t e )
1636 {
1637  if (e == orcus::spreadsheet::underline_width_t::bold || e == orcus::spreadsheet::underline_width_t::thick)
1638  {
1639  switch(maCurrentFont.meUnderline)
1640  {
1641  case LINESTYLE_NONE:
1642  case LINESTYLE_SINGLE:
1644  break;
1645  case LINESTYLE_DOTTED:
1647  break;
1648  case LINESTYLE_DASH:
1650  break;
1651  case LINESTYLE_LONGDASH:
1653  break;
1654  case LINESTYLE_DASHDOT:
1656  break;
1657  case LINESTYLE_DASHDOTDOT:
1659  break;
1660  case LINESTYLE_WAVE:
1662  break;
1663  default:
1664  ;
1665  }
1666  }
1668 }
1669 
1670 void ScOrcusStyles::set_font_underline_mode(orcus::spreadsheet::underline_mode_t /* e */)
1671 {
1672 
1673 }
1674 
1675 void ScOrcusStyles::set_font_underline_type(orcus::spreadsheet::underline_type_t e )
1676 {
1677  if (e == orcus::spreadsheet::underline_type_t::double_type)
1678  {
1679  switch(maCurrentFont.meUnderline)
1680  {
1681  case LINESTYLE_NONE:
1682  case LINESTYLE_SINGLE:
1684  break;
1685  case LINESTYLE_WAVE:
1687  break;
1688  default:
1689  ;
1690  }
1691  }
1693 }
1694 
1695 void ScOrcusStyles::set_font_underline_color(orcus::spreadsheet::color_elem_t alpha,
1696  orcus::spreadsheet::color_elem_t red,
1697  orcus::spreadsheet::color_elem_t green,
1698  orcus::spreadsheet::color_elem_t blue)
1699 {
1700  maCurrentFont.maUnderlineColor = Color(alpha, red, green, blue);
1701 }
1702 
1703 void ScOrcusStyles::set_font_color(orcus::spreadsheet::color_elem_t /*alpha*/,
1704  orcus::spreadsheet::color_elem_t red,
1705  orcus::spreadsheet::color_elem_t green,
1706  orcus::spreadsheet::color_elem_t blue)
1707 {
1708  // Ignore the alpha value for now.
1709  maCurrentFont.maColor = Color(red, green, blue);
1711 }
1712 
1713 void ScOrcusStyles::set_strikethrough_style(orcus::spreadsheet::strikethrough_style_t /*s*/)
1714 {
1715 }
1716 
1717 void ScOrcusStyles::set_strikethrough_type(orcus::spreadsheet::strikethrough_type_t s)
1718 {
1722  {
1723  switch (s)
1724  {
1725  case os::strikethrough_type_t::unknown:
1727  break;
1728  case os::strikethrough_type_t::none:
1730  break;
1731  case os::strikethrough_type_t::single:
1733  break;
1734  case os::strikethrough_type_t::double_type:
1736  break;
1737  default:
1738  ;
1739  }
1740  }
1742 }
1743 
1744 void ScOrcusStyles::set_strikethrough_width(orcus::spreadsheet::strikethrough_width_t s)
1745 {
1746  switch (s)
1747  {
1748  case os::strikethrough_width_t::bold:
1750  break;
1751  default:
1752  ;
1753  }
1755 }
1756 
1757 void ScOrcusStyles::set_strikethrough_text(orcus::spreadsheet::strikethrough_text_t s)
1758 {
1759  switch (s)
1760  {
1761  case os::strikethrough_text_t::slash:
1763  break;
1764  case os::strikethrough_text_t::cross:
1766  break;
1767  default:
1768  ;
1769  }
1771 }
1772 
1774 {
1775  SAL_INFO("sc.orcus.style", "commit font");
1776  maFonts.push_back(maCurrentFont);
1778  return maFonts.size() - 1;
1779 }
1780 
1781 // fill
1782 
1784 {
1785  // needed at all?
1786 }
1787 
1788 void ScOrcusStyles::set_fill_pattern_type(orcus::spreadsheet::fill_pattern_t fp)
1789 {
1790  maCurrentFill.mePattern = fp;
1791 }
1792 
1794  orcus::spreadsheet::color_elem_t /*alpha*/, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue)
1795 {
1796  // Ignore the alpha element for now.
1797  maCurrentFill.maFgColor = Color(red, green, blue);
1799 }
1800 
1802  orcus::spreadsheet::color_elem_t /*alpha*/, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue)
1803 {
1804  // Ignore the alpha element for now.
1805  maCurrentFill.maBgColor = Color(red, green, blue);
1807 }
1808 
1810 {
1811  SAL_INFO("sc.orcus.style", "commit fill");
1812  maFills.push_back(maCurrentFill);
1814  return maFills.size() - 1;
1815 }
1816 
1817 // border
1818 
1820 {
1821  // needed at all?
1822 }
1823 
1825  orcus::spreadsheet::border_direction_t dir, orcus::spreadsheet::border_style_t style)
1826 {
1827  border::border_line& current_line = maCurrentBorder.border_lines[dir];
1828  switch (style)
1829  {
1830  case orcus::spreadsheet::border_style_t::solid:
1831  current_line.meStyle = SvxBorderLineStyle::SOLID;
1832  current_line.mnWidth = oox::xls::API_LINE_THIN;
1833  break;
1834  case orcus::spreadsheet::border_style_t::hair:
1835  current_line.meStyle = SvxBorderLineStyle::SOLID;
1836  current_line.mnWidth = oox::xls::API_LINE_HAIR;
1837  break;
1838  case orcus::spreadsheet::border_style_t::medium:
1839  current_line.meStyle = SvxBorderLineStyle::SOLID;
1840  current_line.mnWidth = oox::xls::API_LINE_MEDIUM;
1841  break;
1842  case orcus::spreadsheet::border_style_t::thick:
1843  current_line.meStyle = SvxBorderLineStyle::SOLID;
1844  current_line.mnWidth = oox::xls::API_LINE_THICK;
1845  break;
1846  case orcus::spreadsheet::border_style_t::thin:
1847  current_line.meStyle = SvxBorderLineStyle::SOLID;
1848  current_line.mnWidth = oox::xls::API_LINE_THIN;
1849  break;
1850  case orcus::spreadsheet::border_style_t::dash_dot:
1851  current_line.meStyle = SvxBorderLineStyle::DASH_DOT;
1852  current_line.mnWidth = oox::xls::API_LINE_THIN;
1853  break;
1854  case orcus::spreadsheet::border_style_t::dash_dot_dot:
1855  current_line.meStyle = SvxBorderLineStyle::DASH_DOT_DOT;
1856  current_line.mnWidth = oox::xls::API_LINE_THIN;
1857  break;
1858  case orcus::spreadsheet::border_style_t::dashed:
1859  current_line.meStyle = SvxBorderLineStyle::DASHED;
1860  current_line.mnWidth = oox::xls::API_LINE_THIN;
1861  break;
1862  case orcus::spreadsheet::border_style_t::dotted:
1863  current_line.meStyle = SvxBorderLineStyle::DOTTED;
1864  current_line.mnWidth = oox::xls::API_LINE_THIN;
1865  break;
1866  case orcus::spreadsheet::border_style_t::double_border:
1867  current_line.meStyle = SvxBorderLineStyle::DOUBLE;
1868  current_line.mnWidth = oox::xls::API_LINE_THICK;
1869  break;
1870  case orcus::spreadsheet::border_style_t::medium_dash_dot:
1871  case orcus::spreadsheet::border_style_t::slant_dash_dot:
1872  current_line.meStyle = SvxBorderLineStyle::DASH_DOT;
1873  current_line.mnWidth = oox::xls::API_LINE_MEDIUM;
1874  break;
1875  case orcus::spreadsheet::border_style_t::medium_dash_dot_dot:
1876  current_line.meStyle = SvxBorderLineStyle::DASH_DOT_DOT;
1877  current_line.mnWidth = oox::xls::API_LINE_MEDIUM;
1878  break;
1879  case orcus::spreadsheet::border_style_t::medium_dashed:
1880  current_line.meStyle = SvxBorderLineStyle::DASHED;
1881  current_line.mnWidth = oox::xls::API_LINE_MEDIUM;
1882  break;
1883  case orcus::spreadsheet::border_style_t::unknown:
1884  case orcus::spreadsheet::border_style_t::none:
1885  current_line.mnWidth = oox::xls::API_LINE_NONE;
1886  break;
1887  default:
1888  ;
1889  }
1891 }
1892 
1893 void ScOrcusStyles::set_border_color(orcus::spreadsheet::border_direction_t dir,
1894  orcus::spreadsheet::color_elem_t /*alpha*/,
1895  orcus::spreadsheet::color_elem_t red,
1896  orcus::spreadsheet::color_elem_t green,
1897  orcus::spreadsheet::color_elem_t blue)
1898 {
1899  border::border_line& current_line = maCurrentBorder.border_lines[dir];
1900  current_line.maColor = Color(red, green, blue);
1901 }
1902 
1903 void ScOrcusStyles::set_border_width(orcus::spreadsheet::border_direction_t dir, double val, orcus::length_unit_t unit )
1904 {
1905  border::border_line& current_line = maCurrentBorder.border_lines[dir];
1906  current_line.mnWidth = translateToInternal(val, unit);
1907 }
1908 
1910 {
1911  SAL_INFO("sc.orcus.style", "commit border");
1912  maBorders.push_back(maCurrentBorder);
1914  return maBorders.size() - 1;
1915 }
1916 
1917 // cell protection
1919 {
1922 }
1923 
1925 {
1928 }
1929 
1931 {
1934 }
1935 
1937 {
1940 }
1941 
1943 {
1944  SAL_INFO("sc.orcus.style", "commit cell protection");
1947  return maProtections.size() - 1;
1948 }
1949 
1951 {
1952 }
1953 
1955 {
1956 }
1957 
1958 void ScOrcusStyles::set_number_format_code(const char* s, size_t n)
1959 {
1960  OUString aCode(s, n, mrFactory.getGlobalSettings().getTextEncoding());
1961  maCurrentNumberFormat.maCode = aCode;
1963 }
1964 
1966 {
1967  SAL_INFO("sc.orcus.style", "commit number format");
1970  return maNumberFormats.size() - 1;
1971 }
1972 
1973 // cell style xf
1974 
1976 {
1977  // needed at all?
1978 }
1979 
1981 {
1982  SAL_INFO("sc.orcus.style", "commit cell style xf");
1983  maCellStyleXfs.push_back(maCurrentXF);
1984  return maCellStyleXfs.size() - 1;
1985 }
1986 
1987 // cell xf
1988 
1990 {
1991  // needed at all?
1992 }
1993 
1995 {
1996  SAL_INFO("sc.orcus.style", "commit cell xf");
1997  maCellXfs.push_back(maCurrentXF);
1998  return maCellXfs.size() - 1;
1999 }
2000 
2001 // dxf
2002 
2004 {
2005 }
2006 
2008 {
2009  return 0;
2010 }
2011 
2012 // xf (cell format) - used both by cell xf and cell style xf.
2013 
2015 {
2016  maCurrentXF.mnNumberFormatId = index;
2017 }
2018 
2019 void ScOrcusStyles::set_xf_font(size_t index)
2020 {
2021  maCurrentXF.mnFontId = index;
2022 }
2023 
2024 void ScOrcusStyles::set_xf_fill(size_t index)
2025 {
2026  maCurrentXF.mnFillId = index;
2027 }
2028 
2030 {
2031  maCurrentXF.mnBorderId = index;
2032 }
2033 
2035 {
2036  maCurrentXF.mnProtectionId = index;
2037 }
2038 
2040 {
2041  maCurrentXF.mnStyleXf = index;
2042 }
2043 
2045 {
2046 }
2047 
2048 void ScOrcusStyles::set_xf_horizontal_alignment(orcus::spreadsheet::hor_alignment_t align)
2049 {
2050  switch (align)
2051  {
2052  case os::hor_alignment_t::left:
2053  maCurrentXF.meHorAlignment = SvxCellHorJustify::Left;
2054  break;
2055  case os::hor_alignment_t::right:
2056  maCurrentXF.meHorAlignment = SvxCellHorJustify::Right;
2057  break;
2058  case os::hor_alignment_t::center:
2059  maCurrentXF.meHorAlignment = SvxCellHorJustify::Center;
2060  break;
2061  case os::hor_alignment_t::justified:
2062  maCurrentXF.meHorAlignment = SvxCellHorJustify::Block;
2063  break;
2064  case os::hor_alignment_t::distributed:
2065  maCurrentXF.meHorAlignment = SvxCellHorJustify::Block;
2066  maCurrentXF.meHorAlignMethod = SvxCellJustifyMethod::Distribute;
2067  break;
2068  case os::hor_alignment_t::unknown:
2069  maCurrentXF.meHorAlignment = SvxCellHorJustify::Standard;
2070  break;
2071  default:
2072  ;
2073  }
2074  maCurrentXF.mbAlignment = true;
2075 }
2076 
2077 void ScOrcusStyles::set_xf_vertical_alignment(orcus::spreadsheet::ver_alignment_t align)
2078 {
2079  switch (align)
2080  {
2081  case os::ver_alignment_t::top:
2082  maCurrentXF.meVerAlignment = SvxCellVerJustify::Top;
2083  break;
2084  case os::ver_alignment_t::bottom:
2085  maCurrentXF.meVerAlignment = SvxCellVerJustify::Bottom;
2086  break;
2087  case os::ver_alignment_t::middle:
2088  maCurrentXF.meVerAlignment = SvxCellVerJustify::Center;
2089  break;
2090  case os::ver_alignment_t::justified:
2091  maCurrentXF.meVerAlignment = SvxCellVerJustify::Block;
2092  break;
2093  case os::ver_alignment_t::distributed:
2094  maCurrentXF.meVerAlignment = SvxCellVerJustify::Block;
2095  maCurrentXF.meVerAlignMethod = SvxCellJustifyMethod::Distribute;
2096  break;
2097  case os::ver_alignment_t::unknown:
2098  maCurrentXF.meVerAlignment = SvxCellVerJustify::Standard;
2099  break;
2100  default:
2101  ;
2102  }
2103  maCurrentXF.mbAlignment = true;
2104 }
2105 
2106 // cell style entry
2107 // not needed for now for gnumeric
2108 
2110 {
2111  // needed at all?
2112 }
2113 
2114 void ScOrcusStyles::set_cell_style_name(const char* s, size_t n)
2115 {
2116  OUString aName(s, n, mrFactory.getGlobalSettings().getTextEncoding());
2118 }
2119 
2121 {
2122  maCurrentCellStyle.mnXFId = index;
2123 }
2124 
2126 {
2127  // not needed for gnumeric
2129 }
2130 
2131 void ScOrcusStyles::set_cell_style_parent_name(const char* s, size_t n)
2132 {
2133  OUString aParentName(s, n, mrFactory.getGlobalSettings().getTextEncoding());
2134  maCurrentCellStyle.maParentName = aParentName;
2135 }
2136 
2138 {
2139  SAL_INFO("sc.orcus.style", "commit cell style: " << maCurrentCellStyle.maName);
2141  {
2142  SAL_WARN("sc.orcus.style", "invalid xf id for commit cell style");
2143  return 0;
2144  }
2145  if (maCurrentCellStyle.mnXFId == 0)
2146  {
2147  return 0;
2148  }
2149 
2151  SfxStyleSheetBase& rBase = pPool->Make(maCurrentCellStyle.maName, SfxStyleFamily::Para);
2153  SfxItemSet& rSet = rBase.GetItemSet();
2154 
2156  applyXfToItemSet(rSet, rXf);
2157 
2160 
2161  return 0;
2162 }
2163 
2164 // auto filter import
2165 
2167  mrGlobalSettings(rGS)
2168 {
2169 }
2170 
2172 {
2173 }
2174 
2175 void ScOrcusAutoFilter::set_range(const orcus::spreadsheet::range_t& range)
2176 {
2177  maRange.aStart.SetRow(range.first.row);
2178  maRange.aStart.SetCol(range.first.column);
2179  maRange.aEnd.SetRow(range.last.row);
2180  maRange.aEnd.SetCol(range.last.column);
2181 }
2182 
2183 void ScOrcusAutoFilter::set_column(orcus::spreadsheet::col_t col)
2184 {
2185  SAL_INFO("sc.orcus.autofilter", "set_column: " << col);
2186 }
2187 
2189 {
2190  OUString aString(p, n, mrGlobalSettings.getTextEncoding());
2191  SAL_INFO("sc.orcus.autofilter", "append_column_match_value: " << aString);
2192 }
2193 
2195 {
2196  SAL_INFO("sc.orcus.autofilter", "commit column");
2197 }
2198 
2200 {
2201  SAL_INFO("sc.orcus.autofilter", "commit");
2202 }
2203 
2204 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual void set_shared_formula_index(size_t index) override
Definition: interface.cxx:934
virtual void set_row_height(orcus::spreadsheet::row_t row, double height, orcus::length_unit_t unit) override
Definition: interface.cxx:711
void applyXfToItemSet(SfxItemSet &rSet, const xf &rXf)
Definition: interface.cxx:1491
virtual void set_range(const orcus::spreadsheet::range_t &range) override
Definition: interface.cxx:2175
virtual void set_result_empty() override
Definition: interface.cxx:952
Type
orcus::spreadsheet::formula_grammar_t meOrcusGrammar
SvxCellHorJustify
virtual void set_font_underline_width(orcus::spreadsheet::underline_width_t e) override
Definition: interface.cxx:1635
ScOrcusFactory & mrFactory
orcus::spreadsheet::address_t resolve_address(const char *p, size_t n) override
Definition: interface.cxx:161
const sal_Int16 API_LINE_THIN
virtual size_t append(const char *s, size_t n) override
Definition: interface.cxx:1232
ScAddress aStart
Definition: address.hxx:500
virtual orcus::spreadsheet::iface::import_array_formula * get_array_formula() override
Definition: interface.cxx:1127
SharedString intern(const OUString &rStr)
static const sal_Int64 nanoSecPerSec
static const sal_Int64 secondPerMinute
SC_DLLPUBLIC svl::SharedStringPool & GetSharedStringPool()
Definition: documen2.cxx:563
constexpr::Color COL_BLACK(0x00, 0x00, 0x00)
virtual orcus::spreadsheet::iface::import_named_expression * get_named_expression() override
Definition: interface.cxx:1116
virtual void commit_column() override
Definition: interface.cxx:2194
ScOrcusStyles(ScOrcusFactory &rFactory, bool bSkipDefaultStyles=false)
Definition: interface.cxx:1283
size_t appendString(const OUString &rStr)
Definition: interface.cxx:507
orcus::spreadsheet::range_t resolve_range(const char *p, size_t n) override
Definition: interface.cxx:183
void applyToItemSet(SfxItemSet &rSet) const
Definition: interface.cxx:1425
rtl_TextEncoding mnTextEncoding
virtual void set_cell_xf_count(size_t n) override
Definition: interface.cxx:1989
void applyToItemSet(SfxItemSet &rSet, const ScDocument &rDoc) const
Definition: interface.cxx:1456
virtual void set_type(orcus::spreadsheet::conditional_format_t type) override
Definition: interface.cxx:833
virtual void set_position(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col) override
Definition: interface.cxx:922
constexpr TypedWhichId< SvxBoxItem > ATTR_BORDER(150)
virtual orcus::spreadsheet::iface::import_styles * get_styles() override
Definition: interface.cxx:368
#define LANGUAGE_ENGLISH_US
virtual size_t commit_cell_style() override
Definition: interface.cxx:2137
#define DATE_TIME_FACTOR
Definition: globalnames.hxx:20
virtual void set_fill_bg_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
Definition: interface.cxx:1801
virtual orcus::spreadsheet::iface::import_global_settings * get_global_settings() override
Definition: interface.cxx:353
virtual void set_fill_count(size_t n) override
Definition: interface.cxx:1783
virtual void commit() override
Definition: interface.cxx:963
const ScOrcusGlobalSettings & getGlobalSettings() const
Definition: interface.cxx:653
void SetColor(const Color &rCol)
virtual bool SetParent(const OUString &)
ScOrcusFactory & getFactory()
Definition: interface.cxx:1224
virtual void set_dxf_count(size_t count) override
Definition: interface.cxx:2003
virtual size_t commit_number_format() override
Definition: interface.cxx:1965
virtual void commit_format() override
Definition: interface.cxx:875
std::vector< OUString > maStrings
std::vector< font > maFonts
css::uno::Reference< css::task::XStatusIndicator > mxStatusIndicator
virtual orcus::spreadsheet::iface::import_formula * get_formula() override
Definition: interface.cxx:1121
virtual void set_border_count(size_t n) override
Definition: interface.cxx:1819
ScOrcusArrayFormula maArrayFormula
LINESTYLE_BOLD
virtual void set_xf_protection(size_t index) override
Definition: interface.cxx:2034
constexpr TypedWhichId< SvxCrossedOutItem > ATTR_FONT_CROSSEDOUT(106)
FAMILY_DONTKNOW
SC_DLLPUBLIC ScRangeName * GetRangeName(SCTAB nTab) const
Definition: documen3.cxx:168
std::unique_ptr< ScTokenArray > CompileString(const OUString &rFormula)
Tokenize formula expression string into an array of tokens.
Definition: compiler.cxx:4478
ScOrcusAutoFilter maAutoFilter
const ScOrcusGlobalSettings & mrGlobalSettings
SC_DLLPUBLIC void SetColHidden(SCCOL nStartCol, SCCOL nEndCol, SCTAB nTab, bool bHidden)
Definition: document.cxx:4469
sal_Int32 mnCol
virtual void set_font_underline_type(orcus::spreadsheet::underline_type_t e) override
Definition: interface.cxx:1675
ScOrcusSheet & mrSheet
virtual void set_cell_style_xf(size_t index) override
Definition: interface.cxx:2120
formula::FormulaGrammar::Grammar getCalcGrammar() const
LINESTYLE_BOLDWAVE
const sal_Int16 API_LINE_HAIR
virtual void finalize() override
Definition: interface.cxx:373
ScOrcusFactory(ScDocument &rDoc, bool bSkipDefaultStyles=false)
Definition: interface.cxx:271
const OUString * getString(size_t nIndex) const
Definition: interface.cxx:526
ScAddress aEnd
Definition: address.hxx:501
const sc::SharedFormulaGroups & getSharedFormulaGroups() const
Definition: interface.cxx:1214
ScOrcusStyles maStyles
virtual void set_number_format_code(const char *s, size_t n) override
Definition: interface.cxx:1958
basegfx::BColor maColor
STRIKEOUT_SLASH
constexpr TypedWhichId< SvxFontItem > ATTR_FONT(100)
virtual SfxItemSet & GetItemSet()
void SetLine(const editeng::SvxBorderLine *pNew)
virtual void set_xf_number_format(size_t index) override
Definition: interface.cxx:2014
virtual void set_date(orcus::spreadsheet::condition_date_t date) override
Definition: interface.cxx:757
const SCCOL MAXCOLCOUNT
Definition: address.hxx:64
Accessor class to ScDocument.
virtual void set_max_databar_length(double length) override
Definition: interface.cxx:806
virtual void set_font_bold(bool b) override
Definition: interface.cxx:1571
void setMergedCells(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
virtual void set_number_format_count(size_t n) override
Definition: interface.cxx:1950
virtual void set_xf_font(size_t index) override
Definition: interface.cxx:2019
void pushFillDownCellsToken(const ScAddress &rPos, uint32_t nFillSize)
Definition: interface.cxx:553
formula::FormulaGrammar::Grammar meGrammar
ScOrcusNamedExpression maNamedExpressions
virtual size_t commit_fill() override
Definition: interface.cxx:1809
virtual void set_cell_hidden(bool b) override
Definition: interface.cxx:1918
rtl_TextEncoding getTextEncoding() const
virtual void set_range(const orcus::spreadsheet::range_t &range) override
Definition: interface.cxx:1039
ScOrcusConditionalFormat(SCTAB nTab, ScDocument &rDoc)
Definition: interface.cxx:728
virtual void define_name(const char *p_name, size_t n_name, const char *p_exp, size_t n_exp) override
Definition: interface.cxx:213
LINESTYLE_DASH
sal_uInt16 GetHour() const
virtual orcus::spreadsheet::formula_grammar_t get_default_formula_grammar() const override
Definition: interface.cxx:153
SC_DLLPUBLIC ScDocumentPool * GetPool()
Definition: document.cxx:6063
virtual size_t commit_segments() override
Definition: interface.cxx:1276
WEIGHT_BOLD
virtual void commit() override
Definition: interface.cxx:2199
virtual void set_font_underline(orcus::spreadsheet::underline_t e) override
Definition: interface.cxx:1596
SvxBorderLineStyle
virtual void set_cell_formula_hidden(bool b) override
Definition: interface.cxx:1936
std::unique_ptr< ScConditionalFormat > mpCurrentFormat
LINESTYLE_DASHDOT
virtual void set_font_size(double point) override
Definition: interface.cxx:1590
virtual void set_cell_style_name(const char *s, size_t n) override
Definition: interface.cxx:2114
LINESTYLE_BOLDDASHDOTDOT
SvxCellVerJustify
virtual void set_font_underline_mode(orcus::spreadsheet::underline_mode_t e) override
Definition: interface.cxx:1670
formula::FormulaGrammar::Grammar meCalcGrammar
LINESTYLE_NONE
SCTAB getSheetIndex(const OUString &rName) const
virtual void set_condition_type(orcus::spreadsheet::condition_type_t type) override
Definition: interface.cxx:746
sal_uInt32 GetNanoSec() const
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
virtual orcus::spreadsheet::iface::import_sheet * append_sheet(orcus::spreadsheet::sheet_t sheet_index, const char *sheet_name, size_t sheet_name_length) override
Definition: interface.cxx:279
ScDocumentImport & getDoc()
Definition: interface.cxx:502
virtual void set_xf_fill(size_t index) override
Definition: interface.cxx:2024
virtual void set_cell_style_parent_name(const char *s, size_t n) override
Definition: interface.cxx:2131
virtual size_t add(const char *s, size_t n) override
Definition: interface.cxx:1238
sal_uInt16 GetMin() const
constexpr TypedWhichId< SvxJustifyMethodItem > ATTR_HOR_JUSTIFY_METHOD(130)
virtual void set_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) override
Definition: interface.cxx:1140
virtual void set_xf_id(size_t xf) override
Definition: interface.cxx:823
void SetRow(SCROW nRowP)
Definition: address.hxx:275
static AddressConvention extractRefConvention(const Grammar eGrammar)
SvGenericNameContainerMapImpl maProperties
virtual void append_column_match_value(const char *p, size_t n) override
Definition: interface.cxx:2188
SvxCellJustifyMethod meVerAlignMethod
SvxCellVerJustify meVerAlignment
virtual size_t commit_font() override
Definition: interface.cxx:1773
SC_DLLPUBLIC void SetColWidthOnly(SCCOL nCol, SCTAB nTab, sal_uInt16 nNewWidth)
Definition: document.cxx:4091
size_t addString(const OUString &rStr)
Definition: interface.cxx:516
virtual void set_strikethrough_style(orcus::spreadsheet::strikethrough_style_t s) override
Definition: interface.cxx:1713
STRIKEOUT_SINGLE
SC_DLLPUBLIC void SetRowHeightOnly(SCROW nStartRow, SCROW nEndRow, SCTAB nTab, sal_uInt16 nNewHeight)
Definition: document.cxx:4110
const ScOrcusGlobalSettings & mrGlobalSettings
virtual void set_databar_color_negative(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
Definition: interface.cxx:793
void SetCol(SCCOL nColP)
Definition: address.hxx:279
virtual void set_fill_fg_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
Definition: interface.cxx:1793
std::vector< protection > maProtections
const SCROW MAXROWCOUNT
Definition: address.hxx:63
ScOrcusRefResolver(const ScOrcusGlobalSettings &rGS)
Definition: interface.cxx:158
bool PutEntry(OUString &rString, sal_Int32 &nCheckPos, SvNumFormatType &nType, sal_uInt32 &nKey, LanguageType eLnge=LANGUAGE_DONTKNOW)
virtual void append_segment(const char *s, size_t n) override
Definition: interface.cxx:1271
ScOrcusSharedStrings maSharedStrings
sc::SharedFormulaGroups maFormulaGroups
ScDocumentImport maDoc
constexpr TypedWhichId< SvxUnderlineItem > ATTR_FONT_UNDERLINE(104)
virtual void set_format(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t xf_index) override
virtual ~ScOrcusConditionalFormat() override
Definition: interface.cxx:736
void setMatrixCells(const ScRange &rRange, const ScTokenArray &rArray, formula::FormulaGrammar::Grammar eGrammar)
void pushSharedFormulaToken(const ScAddress &rPos, uint32_t nIndex)
Definition: interface.cxx:559
constexpr TypedWhichId< SvxLineItem > ATTR_BORDER_TLBR(141)
virtual void set_xf_vertical_alignment(orcus::spreadsheet::ver_alignment_t align) override
Definition: interface.cxx:2077
std::vector< xf > maCellXfs
virtual orcus::spreadsheet::range_size_t get_sheet_size() const override
Definition: interface.cxx:1199
sal_uInt16 GetSec() const
virtual void set_character_set(orcus::character_set_t cs) override
Definition: interface.cxx:95
void pushFormulaResult(const ScAddress &rPos, double fValue)
Definition: interface.cxx:577
ScDocumentImport & mrDoc
constexpr TypedWhichId< SvxPostureItem > ATTR_FONT_POSTURE(103)
SC_DLLPUBLIC SvNumberFormatter * GetFormatTable() const
Definition: documen2.cxx:438
virtual void set_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value) override
Definition: interface.cxx:1152
none
virtual void commit_entry() override
Definition: interface.cxx:857
virtual size_t commit_dxf() override
Definition: interface.cxx:2007
bool appendSheet(const OUString &rName)
ScOrcusSheetProperties maProperties
virtual void set_fill_pattern_type(orcus::spreadsheet::fill_pattern_t fp) override
Definition: interface.cxx:1788
void pushMatrixFormulaToken(const ScAddress &rPos, const OUString &rFormula, formula::FormulaGrammar::Grammar eGrammar, uint32_t nRowRange, uint32_t nColRange)
Definition: interface.cxx:565
void fillDownCells(const ScAddress &rPos, SCROW nFillSize)
ScOrcusSheetProperties(SCTAB nTab, ScDocumentImport &rDoc)
Definition: interface.cxx:658
ScOrcusFactory & mrFactory
virtual orcus::spreadsheet::iface::import_table * get_table() override
Definition: interface.cxx:1101
std::vector< number_format > maNumberFormats
virtual void set_result_empty(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col) override
Definition: interface.cxx:1064
virtual void set_font_italic(bool b) override
Definition: interface.cxx:1577
virtual void set_databar_axis(orcus::spreadsheet::databar_axis_t axis) override
Definition: interface.cxx:780
OUString maFormula
void IncCol(SCCOL nDelta=1)
Definition: address.hxx:304
ScOrcusAutoFilter(const ScOrcusGlobalSettings &rGS)
Definition: interface.cxx:2166
LINESTYLE_DOUBLEWAVE
SvxCellHorJustify meHorAlignment
virtual void set_databar_color_positive(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
Definition: interface.cxx:786
SCTAB getSheetCount() const
constexpr TypedWhichId< SvxVerJustifyItem > ATTR_VER_JUSTIFY(132)
SCTAB getIndex() const
virtual void set_formula(orcus::spreadsheet::formula_grammar_t grammar, const char *p, size_t n) override
Definition: interface.cxx:1048
LINESTYLE_WAVE
virtual void set_formula(orcus::spreadsheet::formula_grammar_t grammar, const char *p, size_t n) override
Definition: interface.cxx:928
virtual void set_date_time(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, int year, int month, int day, int hour, int minute, double second) override
Definition: interface.cxx:1158
virtual orcus::spreadsheet::iface::import_shared_strings * get_shared_strings() override
Definition: interface.cxx:358
virtual void set_font_underline_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
Definition: interface.cxx:1695
CellStoreTokensType maCellStoreTokens
virtual void set_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
Definition: interface.cxx:740
virtual void set_border_style(orcus::spreadsheet::border_direction_t dir, orcus::spreadsheet::border_style_t style) override
Definition: interface.cxx:1824
SC_DLLPUBLIC void ApplyPattern(SCCOL nCol, SCROW nRow, SCTAB nTab, const ScPatternAttr &rAttr)
Definition: document.cxx:4765
WEIGHT_NORMAL
virtual void set_result_value(double value) override
Definition: interface.cxx:940
void IncRow(SCROW nDelta=1)
Definition: address.hxx:300
virtual void set_show_value(bool show) override
Definition: interface.cxx:812
LINESTYLE_SINGLE
ResultType meResType
OUString ScResId(const char *pId)
Definition: scdll.cxx:95
virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, const char *p, size_t n) override
Definition: interface.cxx:1133
virtual void commit_condition() override
Definition: interface.cxx:763
constexpr TypedWhichId< SfxUInt32Item > ATTR_VALUE_FORMAT(146)
virtual orcus::spreadsheet::iface::import_sheet_properties * get_sheet_properties() override
Definition: interface.cxx:1106
PITCH_DONTKNOW
virtual void set_number_format_identifier(size_t n) override
Definition: interface.cxx:1954
SC_DLLPUBLIC void ApplyPatternAreaTab(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab, const ScPatternAttr &rAttr)
Definition: document.cxx:4788
SvNumFormatType
virtual orcus::spreadsheet::iface::import_sheet * get_sheet(const char *sheet_name, size_t sheet_name_length) override
Definition: interface.cxx:316
LINESTYLE_BOLDLONGDASH
void applyToItemSet(SfxItemSet &rSet) const
Definition: interface.cxx:1360
ScOrcusGlobalSettings(ScDocumentImport &rDoc)
Definition: interface.cxx:82
virtual void set_border_color(orcus::spreadsheet::border_direction_t dir, orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
Definition: interface.cxx:1893
void applyToItemSet(SfxItemSet &rSet) const
Definition: interface.cxx:1381
virtual void set_column_width(orcus::spreadsheet::col_t col, double width, orcus::length_unit_t unit) override
Definition: interface.cxx:699
virtual void set_merge_cell_range(const orcus::spreadsheet::range_t &range) override
Definition: interface.cxx:723
void setSheetName(SCTAB nTab, const OUString &rName)
virtual void set_default_formula_grammar(orcus::spreadsheet::formula_grammar_t grammar) override
Definition: interface.cxx:147
std::vector< xf > maCellStyleXfs
void applyToItemSet(SfxItemSet &rSet) const
Definition: interface.cxx:1331
virtual ~ScOrcusArrayFormula() override
Definition: interface.cxx:1037
formula::FormulaGrammar::Grammar meGrammar
void incrementProgress()
Definition: interface.cxx:629
ITALIC_NONE
virtual size_t commit_cell_protection() override
Definition: interface.cxx:1942
virtual void set_cell_style_xf_count(size_t n) override
Definition: interface.cxx:1975
virtual void set_segment_font_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
Definition: interface.cxx:1264
virtual void set_xf_style_xf(size_t index) override
Definition: interface.cxx:2039
SC_DLLPUBLIC ScRefFlags Parse(const OUString &, const ScDocument *=nullptr, const ScAddress::Details &rDetails=ScAddress::detailsOOOa1, ScAddress::ExternalInfo *pExtInfo=nullptr, const css::uno::Sequence< css::sheet::ExternalLinkInfo > *pExternalLinks=nullptr, const OUString *pErrRef=nullptr)
Definition: address.cxx:1737
virtual void set_xf_horizontal_alignment(orcus::spreadsheet::hor_alignment_t align) override
Definition: interface.cxx:2048
FontLineStyle meUnderline
virtual ~ScOrcusSheetProperties() override
Definition: interface.cxx:664
STRIKEOUT_X
virtual void set_result_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value) override
Definition: interface.cxx:1069
void setAutoInput(const ScAddress &rPos, const OUString &rStr, const ScSetStringParam *pStringParam=nullptr)
std::vector< std::unique_ptr< ScOrcusSheet > > maSheets
formula::FormulaGrammar::Grammar meGrammar
virtual void set_segment_bold(bool b) override
Definition: interface.cxx:1248
bool HasStandardStyles() const
Definition: stlpool.hxx:52
virtual void fill_down_cells(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::row_t range_size) override
Definition: interface.cxx:1208
virtual void set_column(orcus::spreadsheet::col_t col) override
Definition: interface.cxx:2183
void pushCellStoreToken(const ScAddress &rPos, uint32_t nStrIndex)
Definition: interface.cxx:537
size_t mnSharedFormulaIndex
ScOrcusSharedStrings(ScOrcusFactory &rFactory)
Definition: interface.cxx:1229
const ScTokenArray * get(size_t nSharedId) const
LINESTYLE_LONGDASH
virtual void set_segment_font_name(const char *s, size_t n) override
Definition: interface.cxx:1256
virtual void set_strikethrough_type(orcus::spreadsheet::strikethrough_type_t s) override
Definition: interface.cxx:1717
constexpr TypedWhichId< SvxBrushItem > ATTR_BACKGROUND(148)
ScDocumentImport & mrDoc
virtual size_t commit_cell_style_xf() override
Definition: interface.cxx:1980
const sal_Int16 API_LINE_MEDIUM
number_format maCurrentNumberFormat
virtual void set_segment_font(size_t font_index) override
Definition: interface.cxx:1244
void setStatusIndicator(const css::uno::Reference< css::task::XStatusIndicator > &rIndicator)
Definition: interface.cxx:648
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
void setFormulaCell(const ScAddress &rPos, const OUString &rFormula, formula::FormulaGrammar::Grammar eGrammar, const double *pResult=nullptr)
FontWeight
virtual void set_font_color(orcus::spreadsheet::color_elem_t alpha, orcus::spreadsheet::color_elem_t red, orcus::spreadsheet::color_elem_t green, orcus::spreadsheet::color_elem_t blue) override
Definition: interface.cxx:1703
constexpr TypedWhichId< SvxJustifyMethodItem > ATTR_VER_JUSTIFY_METHOD(133)
ScOrcusArrayFormula(ScOrcusSheet &rSheet)
Definition: interface.cxx:1029
virtual orcus::spreadsheet::iface::import_named_expression * get_named_expression() override
Definition: interface.cxx:363
const ScOrcusGlobalSettings & mrGlobalSettings
virtual orcus::spreadsheet::iface::import_conditional_format * get_conditional_format() override
Definition: interface.cxx:1111
const sal_Int16 API_LINE_THICK
virtual void set_cell_style_count(size_t n) override
Definition: interface.cxx:2109
STRIKEOUT_DOUBLE
virtual void set_segment_font_size(double point) override
Definition: interface.cxx:1260
virtual void commit() override
Definition: interface.cxx:1074
orcus::spreadsheet::fill_pattern_t mePattern
LINESTYLE_DASHDOTDOT
ITALIC_NORMAL
virtual ~ScOrcusFormula() override
Definition: interface.cxx:920
ScDocumentImport & getDoc()
Definition: interface.cxx:1091
LINESTYLE_DOTTED
FontStrikeout meStrikeout
virtual void set_xf_apply_alignment(bool b) override
Definition: interface.cxx:2044
bool mbBold
ScOrcusFormula maFormula
OStringBuffer maCurSegment
ScOrcusNamedExpression(ScDocumentImport &rDoc, const ScOrcusGlobalSettings &rGS, SCTAB nTab=-1)
Definition: interface.cxx:209
void setStringCell(const ScAddress &rPos, const OUString &rStr)
void CreateStandardStyles()
Definition: stlpool.cxx:208
OUString maName
#define SAL_INFO(area, stream)
virtual SfxStyleSheetBase & Make(const OUString &, SfxStyleFamily eFam, SfxStyleSearchBits nMask=SfxStyleSearchBits::All) override
Definition: stlpool.cxx:71
OUString aName
void setOriginDate(sal_uInt16 nYear, sal_uInt16 nMonth, sal_uInt16 nDay)
ScDocumentImport & mrDoc
ScOrcusNamedExpression maNamedExpressions
SvxBoxItemLine
double mnWidth
ScOrcusConditionalFormat maConditionalFormat
void set(size_t nSharedId, std::unique_ptr< ScTokenArray > pArray)
ScOrcusSheet(ScDocumentImport &rDoc, SCTAB nTab, ScOrcusFactory &rFactory)
Definition: interface.cxx:881
ScOrcusFactory & mrFactory
constexpr TypedWhichId< SvxWeightItem > ATTR_FONT_WEIGHT(102)
constexpr TypedWhichId< SvxHorJustifyItem > ATTR_HOR_JUSTIFY(129)
virtual ~ScOrcusAutoFilter() override
Definition: interface.cxx:2171
constexpr::Color COL_WHITE(0xFF, 0xFF, 0xFF)
virtual void set_column_hidden(orcus::spreadsheet::col_t col, bool hidden) override
Definition: interface.cxx:705
ScFormatEntry::Type meEntryType
virtual void set_range(const char *p, size_t n) override
Definition: interface.cxx:862
SC_DLLPUBLIC void SetRowHidden(SCROW nStartRow, SCROW nEndRow, SCTAB nTab, bool bHidden)
Definition: document.cxx:4461
SC_DLLPUBLIC ScStyleSheetPool * GetStyleSheetPool() const
Definition: document.cxx:6068
virtual void set_strikethrough_width(orcus::spreadsheet::strikethrough_width_t s) override
Definition: interface.cxx:1744
virtual void set_result_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t sindex) override
Definition: interface.cxx:1059
void cellInserted()
Definition: interface.cxx:1081
LINESTYLE_BOLDDOTTED
STRIKEOUT_DONTKNOW
ScOrcusSheet & mrSheet
LINESTYLE_BOLDDASH
cell_style maCurrentCellStyle
virtual void set_border_width(orcus::spreadsheet::border_direction_t dir, double val, orcus::length_unit_t unit) override
Definition: interface.cxx:1903
virtual size_t commit_cell_xf() override
Definition: interface.cxx:1994
ResultType type
void pushCellStoreAutoToken(const ScAddress &rPos, const OUString &rVal)
Definition: interface.cxx:531
#define SAL_WARN(area, stream)
virtual void set_result_string(size_t sindex) override
Definition: interface.cxx:946
static const sal_Int64 secondPerHour
ScOrcusFormula(ScOrcusSheet &rSheet)
Definition: interface.cxx:909
virtual void set_row_hidden(orcus::spreadsheet::row_t row, bool hidden) override
Definition: interface.cxx:717
SvxCellJustifyMethod
sal_Int32 mnRow
virtual void set_cell_locked(bool b) override
Definition: interface.cxx:1924
LINESTYLE_DOUBLE
void setNumericCell(const ScAddress &rPos, double fVal)
virtual void set_icon_name(const char *p, size_t n) override
Definition: interface.cxx:768
STRIKEOUT_NONE
virtual void set_font_count(size_t n) override
Definition: interface.cxx:1566
virtual void set_operator(orcus::spreadsheet::condition_operator_t condition_type) override
Definition: interface.cxx:828
ScOrcusGlobalSettings maGlobalSettings
virtual size_t commit_border() override
Definition: interface.cxx:1909
std::map< orcus::spreadsheet::border_direction_t, border_line > border_lines
virtual void set_font_name(const char *s, size_t n) override
Definition: interface.cxx:1583
const Date & GetNullDate() const
virtual void set_origin_date(int year, int month, int day) override
Definition: interface.cxx:90
std::vector< border > maBorders
virtual void set_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) override
Definition: interface.cxx:1146
constexpr TypedWhichId< SvxColorItem > ATTR_FONT_COLOR(109)
CellStoreToken(const ScAddress &rPos, Type eType)
Definition: interface.cxx:229
virtual void set_formula(const char *p, size_t n) override
Definition: interface.cxx:752
StringHashType maStringHash
SC_DLLPUBLIC ScRefFlags Parse(const OUString &, const ScDocument *=nullptr, const Details &rDetails=detailsOOOa1, ExternalInfo *pExtInfo=nullptr, const css::uno::Sequence< css::sheet::ExternalLinkInfo > *pExternalLinks=nullptr, sal_Int32 *pSheetEndPos=nullptr, const OUString *pErrRef=nullptr)
Definition: address.cxx:1543
constexpr TypedWhichId< SvxFontHeightItem > ATTR_FONT_HEIGHT(101)
ScOrcusStyles & mrStyles
RedlineType meType
protection maCurrentProtection
virtual void set_cell_print_content(bool b) override
Definition: interface.cxx:1930
aStr
virtual orcus::spreadsheet::iface::import_auto_filter * get_auto_filter() override
Definition: interface.cxx:1096
SvxCellJustifyMethod meHorAlignMethod
constexpr TypedWhichId< SvxLineItem > ATTR_BORDER_BLTR(142)
virtual void set_result_bool(bool value) override
Definition: interface.cxx:957
virtual void set_iconset_reverse(bool reverse) override
Definition: interface.cxx:817
LINESTYLE_BOLDDASHDOT
virtual void set_databar_gradient(bool gradient) override
Definition: interface.cxx:774
virtual void set_cell_style_builtin(size_t index) override
Definition: interface.cxx:2125
virtual void set_segment_italic(bool b) override
Definition: interface.cxx:1252
STRIKEOUT_BOLD
virtual void set_strikethrough_text(orcus::spreadsheet::strikethrough_text_t s) override
Definition: interface.cxx:1757
ScDocumentImport & mrDoc
sal_uInt16 nPos
sal_Int16 SCTAB
Definition: types.hxx:23
FontItalic
std::vector< fill > maFills
virtual void set_result_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) override
Definition: interface.cxx:1054
void SetLine(const editeng::SvxBorderLine *pNew, SvxBoxItemLine nLine)
virtual void set_xf_border(size_t index) override
Definition: interface.cxx:2029
const sal_Int16 API_LINE_NONE
Font auto color (system window text color).
ScDocument & getDoc()
virtual void set_min_databar_length(double length) override
Definition: interface.cxx:800
sal_uInt32 mnSize