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 <limits>
11#include <memory>
12#include <orcusinterface.hxx>
13
14#include <document.hxx>
15#include <formulacell.hxx>
16#include <rangenam.hxx>
17#include <tokenarray.hxx>
18#include <globalnames.hxx>
19#include <globstr.hrc>
20#include <scresid.hxx>
21#include <compiler.hxx>
22#include <stlpool.hxx>
23#include <scitems.hxx>
24#include <patattr.hxx>
25#include <docpool.hxx>
26#include <attrib.hxx>
27
28#include <editeng/postitem.hxx>
29#include <editeng/wghtitem.hxx>
30#include <editeng/colritem.hxx>
31#include <editeng/brushitem.hxx>
32#include <editeng/udlnitem.hxx>
33#include <editeng/boxitem.hxx>
35#include <editeng/fontitem.hxx>
36#include <editeng/fhgtitem.hxx>
37#include <editeng/lineitem.hxx>
40
42#include <svl/numformat.hxx>
43#include <svl/zforlist.hxx>
44#include <svl/intitem.hxx>
45#include <com/sun/star/task/XStatusIndicator.hpp>
46#include <i18nlangtag/lang.h>
47#include <tools/fontenum.hxx>
48#include <sal/log.hxx>
49
50#include <stylesbuffer.hxx>
51#include <orcus/exception.hpp>
52#include <stylehelper.hxx>
53#include <utility>
54#include <unordered_map>
55
56using namespace com::sun::star;
57
58namespace os = orcus::spreadsheet;
59
60namespace {
61
62formula::FormulaGrammar::Grammar getCalcGrammarFromOrcus( os::formula_grammar_t grammar )
63{
65 switch(grammar)
66 {
67 case orcus::spreadsheet::formula_grammar_t::ods:
69 break;
70 case orcus::spreadsheet::formula_grammar_t::xlsx:
72 break;
73 case orcus::spreadsheet::formula_grammar_t::gnumeric:
75 break;
76 case orcus::spreadsheet::formula_grammar_t::xls_xml:
78 break;
79 case orcus::spreadsheet::formula_grammar_t::unknown:
80 break;
81 }
82
83 return eGrammar;
84}
85
86}
87
89 : mrDoc(rDoc)
90 , meCalcGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED)
91 , meOrcusGrammar(os::formula_grammar_t::unknown)
92 , mnTextEncoding(RTL_TEXTENCODING_UTF8)
93{
94}
95
96void ScOrcusGlobalSettings::set_origin_date(int year, int month, int day)
97{
99}
100
101void ScOrcusGlobalSettings::set_character_set(orcus::character_set_t cs)
102{
103 // Keep the entries sorted by the key.
104 static const std::unordered_map<orcus::character_set_t, rtl_TextEncoding> rules = {
105 { orcus::character_set_t::big5, RTL_TEXTENCODING_BIG5 },
106 { orcus::character_set_t::euc_jp, RTL_TEXTENCODING_EUC_JP },
107 { orcus::character_set_t::euc_kr, RTL_TEXTENCODING_EUC_KR },
108 { orcus::character_set_t::gb2312, RTL_TEXTENCODING_GB_2312 },
109 { orcus::character_set_t::gbk, RTL_TEXTENCODING_GBK },
110 { orcus::character_set_t::iso_2022_cn, RTL_TEXTENCODING_ISO_2022_CN },
111 { orcus::character_set_t::iso_2022_cn_ext, RTL_TEXTENCODING_ISO_2022_CN },
112 { orcus::character_set_t::iso_2022_jp, RTL_TEXTENCODING_ISO_2022_JP },
113 { orcus::character_set_t::iso_2022_jp_2, RTL_TEXTENCODING_ISO_2022_JP },
114 { orcus::character_set_t::iso_8859_1, RTL_TEXTENCODING_ISO_8859_1 },
115 { orcus::character_set_t::iso_8859_14, RTL_TEXTENCODING_ISO_8859_14 },
116 { orcus::character_set_t::iso_8859_15, RTL_TEXTENCODING_ISO_8859_15 },
117 { orcus::character_set_t::iso_8859_1_windows_3_0_latin_1, RTL_TEXTENCODING_ISO_8859_1 },
118 { orcus::character_set_t::iso_8859_1_windows_3_1_latin_1, RTL_TEXTENCODING_ISO_8859_1 },
119 { orcus::character_set_t::iso_8859_2, RTL_TEXTENCODING_ISO_8859_2 },
120 { orcus::character_set_t::iso_8859_2_windows_latin_2, RTL_TEXTENCODING_ISO_8859_2 },
121 { orcus::character_set_t::iso_8859_3, RTL_TEXTENCODING_ISO_8859_3 },
122 { orcus::character_set_t::iso_8859_4, RTL_TEXTENCODING_ISO_8859_4 },
123 { orcus::character_set_t::iso_8859_5, RTL_TEXTENCODING_ISO_8859_5 },
124 { orcus::character_set_t::iso_8859_6, RTL_TEXTENCODING_ISO_8859_6 },
125 { orcus::character_set_t::iso_8859_6_e, RTL_TEXTENCODING_ISO_8859_6 },
126 { orcus::character_set_t::iso_8859_6_i, RTL_TEXTENCODING_ISO_8859_6 },
127 { orcus::character_set_t::iso_8859_7, RTL_TEXTENCODING_ISO_8859_7 },
128 { orcus::character_set_t::iso_8859_8, RTL_TEXTENCODING_ISO_8859_8 },
129 { orcus::character_set_t::iso_8859_8_e, RTL_TEXTENCODING_ISO_8859_8 },
130 { orcus::character_set_t::iso_8859_8_i, RTL_TEXTENCODING_ISO_8859_8 },
131 { orcus::character_set_t::iso_8859_9, RTL_TEXTENCODING_ISO_8859_9 },
132 { orcus::character_set_t::iso_8859_9_windows_latin_5, RTL_TEXTENCODING_ISO_8859_9 },
133 { orcus::character_set_t::jis_x0201, RTL_TEXTENCODING_JIS_X_0201 },
134 { orcus::character_set_t::jis_x0212_1990, RTL_TEXTENCODING_JIS_X_0212 },
135 { orcus::character_set_t::shift_jis, RTL_TEXTENCODING_SHIFT_JIS },
136 { orcus::character_set_t::us_ascii, RTL_TEXTENCODING_ASCII_US },
137 { orcus::character_set_t::utf_7, RTL_TEXTENCODING_UTF7 },
138 { orcus::character_set_t::utf_8, RTL_TEXTENCODING_UTF8 },
139 { orcus::character_set_t::windows_1250, RTL_TEXTENCODING_MS_1250 },
140 { orcus::character_set_t::windows_1251, RTL_TEXTENCODING_MS_1251 },
141 { orcus::character_set_t::windows_1252, RTL_TEXTENCODING_MS_1252 },
142 { orcus::character_set_t::windows_1253, RTL_TEXTENCODING_MS_1253 },
143 { orcus::character_set_t::windows_1254, RTL_TEXTENCODING_MS_1254 },
144 { orcus::character_set_t::windows_1255, RTL_TEXTENCODING_MS_1255 },
145 { orcus::character_set_t::windows_1256, RTL_TEXTENCODING_MS_1256 },
146 { orcus::character_set_t::windows_1257, RTL_TEXTENCODING_MS_1257 },
147 { orcus::character_set_t::windows_1258, RTL_TEXTENCODING_MS_1258 },
148 };
149
150 if (auto it = rules.find(cs); it != rules.end())
151 mnTextEncoding = it->second;
152}
153
154void ScOrcusGlobalSettings::set_default_formula_grammar(os::formula_grammar_t grammar)
155{
156 meCalcGrammar = getCalcGrammarFromOrcus(grammar);
157 meOrcusGrammar = grammar;
158}
159
160orcus::spreadsheet::formula_grammar_t ScOrcusGlobalSettings::get_default_formula_grammar() const
161{
162 return meOrcusGrammar;
163}
164
166 mrGlobalSettings(rGS) {}
167
168os::src_address_t ScOrcusRefResolver::resolve_address(std::string_view address)
169{
170 OUString aStr(address.data(), address.size(), mrGlobalSettings.getTextEncoding());
171
172 ScAddress aAddr;
176
177 if (!aAddr.IsValid())
178 {
179 std::ostringstream os;
180 os << "'" << address << "' is not a valid address expression.";
181 throw orcus::invalid_arg_error(os.str());
182 }
183
184 os::src_address_t ret;
185 ret.sheet = aAddr.Tab();
186 ret.column = aAddr.Col();
187 ret.row = aAddr.Row();
188
189 return ret;
190}
191
192os::src_range_t ScOrcusRefResolver::resolve_range(std::string_view range)
193{
194 OUString aStr(range.data(), range.size(), mrGlobalSettings.getTextEncoding());
195
196 ScRange aRange;
200
201 if (!aRange.IsValid())
202 {
203 std::ostringstream os;
204 os << "'" << range << "' is not a valid range expression.";
205 throw orcus::invalid_arg_error(os.str());
206 }
207
208 os::src_range_t ret;
209 ret.first.sheet = aRange.aStart.Tab();
210 ret.first.column = aRange.aStart.Col();
211 ret.first.row = aRange.aStart.Row();
212 ret.last.sheet = aRange.aEnd.Tab();
213 ret.last.column = aRange.aEnd.Col();
214 ret.last.row = aRange.aEnd.Row();
215
216 return ret;
217}
218
220 ScDocumentImport& rDoc, const ScOrcusGlobalSettings& rGS, SCTAB nTab ) :
221 mrDoc(rDoc), mrGlobalSettings(rGS), mnTab(nTab) {}
222
224{
225 maBasePos.SetTab(0);
226 maBasePos.SetCol(0);
227 maBasePos.SetRow(0);
228 maName.clear();
229 maExpr.clear();
230}
231
232void ScOrcusNamedExpression::set_base_position(const orcus::spreadsheet::src_address_t& pos)
233{
234 maBasePos.SetTab(pos.sheet);
235 maBasePos.SetCol(pos.column);
236 maBasePos.SetRow(pos.row);
237}
238
239void ScOrcusNamedExpression::set_named_expression(std::string_view name, std::string_view expression)
240{
241 maName = OUString(name.data(), name.size(), mrGlobalSettings.getTextEncoding());
242 maExpr = OUString(expression.data(), expression.size(), mrGlobalSettings.getTextEncoding());
243}
244
245void ScOrcusNamedExpression::set_named_range(std::string_view /*name*/, std::string_view /*range*/)
246{
247 throw std::runtime_error("ScOrcusNamedExpression::set_named_range not implemented yet.");
248}
249
251{
253 if (!pNames)
254 return;
255
256 ScRangeData* pRange = new ScRangeData(
259
260 pNames->insert(pRange, false);
261
262 reset(); // make sure to reset the state for the next run.
263}
264
266 : mfValue(std::numeric_limits<double>::quiet_NaN())
267 , maPos(rPos)
268 , meType(eType)
269 , mnIndex1(0)
270 , mnIndex2(0)
271 , meGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED)
272{
273}
274
276 : mfValue(fValue)
277 , maPos(rPos)
279 , mnIndex1(0)
280 , mnIndex2(0)
281 , meGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED)
282{
283}
284
286 : mfValue(std::numeric_limits<double>::quiet_NaN())
287 , maPos(rPos)
288 , meType(Type::String)
289 , mnIndex1(nIndex)
290 , mnIndex2(0)
291 , meGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED)
292{
293}
294
297 : maStr1(std::move(aFormula))
298 , mfValue(std::numeric_limits<double>::quiet_NaN())
299 , maPos(rPos)
301 , mnIndex1(0)
302 , mnIndex2(0)
303 , meGrammar(eGrammar)
304{
305}
306
307ScOrcusFactory::ScOrcusFactory(ScDocument& rDoc, bool bSkipDefaultStyles) :
308 maDoc(rDoc),
310 maSharedStrings(*this),
312 maStyles(*this, bSkipDefaultStyles),
313 mnProgress(0) {}
314
315orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::append_sheet(
316 orcus::spreadsheet::sheet_t sheet_index, std::string_view sheet_name)
317{
318 OUString aTabName(sheet_name.data(), sheet_name.size(), maGlobalSettings.getTextEncoding());
319
320 if (sheet_index == 0)
321 {
322 // The calc document initializes with one sheet already present.
323 assert(maDoc.getSheetCount() == 1);
324 maDoc.setSheetName(0, aTabName);
325 maSheets.push_back(std::make_unique<ScOrcusSheet>(maDoc, 0, *this));
326 return maSheets.back().get();
327 }
328
329 if (!maDoc.appendSheet(aTabName))
330 return nullptr;
331
332 SCTAB nTab = maDoc.getSheetCount() - 1;
333 maSheets.push_back(std::make_unique<ScOrcusSheet>(maDoc, nTab, *this));
334 return maSheets.back().get();
335}
336
337namespace {
338
339class FindSheetByIndex
340{
341 SCTAB mnTab;
342public:
343 explicit FindSheetByIndex(SCTAB nTab) : mnTab(nTab) {}
344 bool operator() (const std::unique_ptr<ScOrcusSheet>& rSheet) const
345 {
346 return rSheet->getIndex() == mnTab;
347 }
348};
349
350}
351
352orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::get_sheet(std::string_view sheet_name)
353{
354 OUString aTabName(sheet_name.data(), sheet_name.size(), maGlobalSettings.getTextEncoding());
355 SCTAB nTab = maDoc.getSheetIndex(aTabName);
356 if (nTab < 0)
357 // Sheet by that name not found.
358 return nullptr;
359
360 // See if we already have an orcus sheet instance by that index.
361 std::vector< std::unique_ptr<ScOrcusSheet> >::iterator it =
362 std::find_if(maSheets.begin(), maSheets.end(), FindSheetByIndex(nTab));
363
364 if (it != maSheets.end())
365 // We already have one. Return it.
366 return it->get();
367
368 // Create a new orcus sheet instance for this.
369 maSheets.push_back(std::make_unique<ScOrcusSheet>(maDoc, nTab, *this));
370 return maSheets.back().get();
371}
372
373orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::get_sheet(orcus::spreadsheet::sheet_t sheet_index)
374{
375 SCTAB nTab = static_cast<SCTAB>(sheet_index);
376 // See if we already have an orcus sheet instance by that index.
377 std::vector< std::unique_ptr<ScOrcusSheet> >::iterator it =
378 std::find_if(maSheets.begin(), maSheets.end(), FindSheetByIndex(nTab));
379
380 if (it != maSheets.end())
381 // We already have one. Return it.
382 return it->get();
383
384 // Create a new orcus sheet instance for this.
385 maSheets.push_back(std::make_unique<ScOrcusSheet>(maDoc, nTab, *this));
386 return maSheets.back().get();
387}
388
389orcus::spreadsheet::iface::import_global_settings* ScOrcusFactory::get_global_settings()
390{
391 return &maGlobalSettings;
392}
393
394orcus::spreadsheet::iface::import_shared_strings* ScOrcusFactory::get_shared_strings()
395{
396 return &maSharedStrings;
397}
398
399orcus::spreadsheet::iface::import_named_expression* ScOrcusFactory::get_named_expression()
400{
401 return &maNamedExpressions;
402}
403
404orcus::spreadsheet::iface::import_styles* ScOrcusFactory::get_styles()
405{
406 return &maStyles;
407}
408
410{
411 auto toFormulaCell = [this]( const CellStoreToken& rToken ) -> std::unique_ptr<ScFormulaCell>
412 {
413 const ScOrcusSheet& rSheet = *maSheets.at(rToken.maPos.Tab());
414 const sc::SharedFormulaGroups& rSFG = rSheet.getSharedFormulaGroups();
415 const ScTokenArray* pArray = rSFG.get(rToken.mnIndex1);
416 if (!pArray)
417 return std::unique_ptr<ScFormulaCell>();
418
419 return std::make_unique<ScFormulaCell>(maDoc.getDoc(), rToken.maPos, *pArray);
420 };
421
422 int nCellCount = 0;
423
424 for (const CellStoreToken& rToken : maCellStoreTokens)
425 {
426 switch (rToken.meType)
427 {
429 {
430 maDoc.setAutoInput(rToken.maPos, rToken.maStr1);
431 ++nCellCount;
432 break;
433 }
435 {
436 if (rToken.mnIndex1 >= maStrings.size())
437 // String index out-of-bound! Something is up.
438 break;
439
440 maDoc.setStringCell(rToken.maPos, maStrings[rToken.mnIndex1]);
441 ++nCellCount;
442 break;
443 }
445 {
446 maDoc.setNumericCell(rToken.maPos, rToken.mfValue);
447 ++nCellCount;
448 break;
449 }
451 {
453 rToken.maPos, rToken.maStr1, rToken.meGrammar);
454
455 ++nCellCount;
456 break;
457 }
459 {
460 if (std::isfinite(rToken.mfValue))
461 maDoc.setFormulaCell(rToken.maPos, rToken.maStr1, rToken.meGrammar, &rToken.mfValue);
462 else
463 maDoc.setFormulaCell(rToken.maPos, rToken.maStr1, rToken.meGrammar, rToken.maStr2);
464
465 ++nCellCount;
466 break;
467 }
469 {
470 std::unique_ptr<ScFormulaCell> pCell = toFormulaCell(rToken);
471 if (!pCell)
472 break;
473
474 maDoc.setFormulaCell(rToken.maPos, pCell.release());
475
476 ++nCellCount;
477 break;
478 }
480 {
481 std::unique_ptr<ScFormulaCell> pCell = toFormulaCell(rToken);
482 if (!pCell)
483 break;
484
485 if (std::isfinite(rToken.mfValue))
486 pCell->SetResultDouble(rToken.mfValue);
487 else
488 pCell->SetHybridString(
489 maDoc.getDoc().GetSharedStringPool().intern(rToken.maStr2));
490
491 maDoc.setFormulaCell(rToken.maPos, pCell.release());
492
493 ++nCellCount;
494 break;
495 }
497 {
498 if (!rToken.mnIndex1 || !rToken.mnIndex2)
499 break;
500
501 ScRange aRange(rToken.maPos);
502 aRange.aEnd.IncCol(rToken.mnIndex1-1);
503 aRange.aEnd.IncRow(rToken.mnIndex2-1);
504
505 ScCompiler aComp(maDoc.getDoc(), aRange.aStart, rToken.meGrammar);
506 std::unique_ptr<ScTokenArray> pArray(aComp.CompileString(rToken.maStr1));
507 if (!pArray)
508 break;
509
510 maDoc.setMatrixCells(aRange, *pArray, rToken.meGrammar);
511 break;
512 }
514 {
515 if (!rToken.mnIndex1)
516 break;
517
518 maDoc.fillDownCells(rToken.maPos, rToken.mnIndex1);
519 break;
520 }
521 default:
522 ;
523 }
524
525 if (nCellCount == 100000)
526 {
528 nCellCount = 0;
529 }
530 }
531
532 if (mxStatusIndicator.is())
533 mxStatusIndicator->end();
534
535 maDoc.finalize();
536}
537
539{
540 return maDoc;
541}
542
543size_t ScOrcusFactory::appendString(const OUString& rStr)
544{
545 size_t nPos = maStrings.size();
546 maStrings.push_back(rStr);
547 maStringHash.emplace(rStr, nPos);
548
549 return nPos;
550}
551
552size_t ScOrcusFactory::addString(const OUString& rStr)
553{
554 // Add only if the string is not yet present in the string pool.
555 StringHashType::iterator it = maStringHash.find(rStr);
556 if (it != maStringHash.end())
557 return it->second;
558
559 return appendString(rStr);
560}
561
562const OUString* ScOrcusFactory::getString(size_t nIndex) const
563{
564 return nIndex < maStrings.size() ? &maStrings[nIndex] : nullptr;
565}
566
567void ScOrcusFactory::pushCellStoreAutoToken( const ScAddress& rPos, const OUString& rVal )
568{
570 maCellStoreTokens.back().maStr1 = rVal;
571}
572
573void ScOrcusFactory::pushCellStoreToken( const ScAddress& rPos, uint32_t nStrIndex )
574{
575 maCellStoreTokens.emplace_back(rPos, nStrIndex);
576}
577
578void ScOrcusFactory::pushCellStoreToken( const ScAddress& rPos, double fValue )
579{
580 maCellStoreTokens.emplace_back(rPos, fValue);
581}
582
584 const ScAddress& rPos, const OUString& rFormula, formula::FormulaGrammar::Grammar eGrammar )
585{
586 maCellStoreTokens.emplace_back(rPos, rFormula, eGrammar);
587}
588
589void ScOrcusFactory::pushFillDownCellsToken( const ScAddress& rPos, uint32_t nFillSize )
590{
592 maCellStoreTokens.back().mnIndex1 = nFillSize;
593}
594
595void ScOrcusFactory::pushSharedFormulaToken( const ScAddress& rPos, uint32_t nIndex )
596{
598 maCellStoreTokens.back().mnIndex1 = nIndex;
599}
600
602 const ScAddress& rPos, const OUString& rFormula, formula::FormulaGrammar::Grammar eGrammar,
603 uint32_t nRowRange, uint32_t nColRange )
604{
607 rT.maStr1 = rFormula;
608 rT.meGrammar = eGrammar;
609 rT.mnIndex1 = nColRange;
610 rT.mnIndex2 = nRowRange;
611}
612
613void ScOrcusFactory::pushFormulaResult( const ScAddress& rPos, double fValue )
614{
615 // Formula result is expected to be pushed immediately following the
616 // formula token it belongs.
617 if (maCellStoreTokens.empty())
618 return;
619
620 CellStoreToken& rToken = maCellStoreTokens.back();
621 if (rToken.maPos != rPos)
622 return;
623
624 switch (rToken.meType)
625 {
628 break;
631 break;
632 default:
633 return;
634 }
635
636 rToken.mfValue = fValue;
637}
638
639void ScOrcusFactory::pushFormulaResult( const ScAddress& rPos, const OUString& rValue )
640{
641 // Formula result is expected to be pushed immediately following the
642 // formula token it belongs.
643 if (maCellStoreTokens.empty())
644 return;
645
646 CellStoreToken& rToken = maCellStoreTokens.back();
647 if (rToken.maPos != rPos)
648 return;
649
650 switch (rToken.meType)
651 {
654 break;
657 break;
658 default:
659 return;
660 }
661
662 rToken.maStr2 = rValue;
663}
664
666{
667 if (!mxStatusIndicator.is())
668 // Status indicator object not set.
669 return;
670
671 // For now, we'll hard-code the progress range to be 100, and stops at 99
672 // in all cases.
673
674 if (!mnProgress)
675 mxStatusIndicator->start(ScResId(STR_LOAD_DOC), 100);
676
677 if (mnProgress == 99)
678 return;
679
680 ++mnProgress;
681 mxStatusIndicator->setValue(mnProgress);
682}
683
684void ScOrcusFactory::setStatusIndicator(const uno::Reference<task::XStatusIndicator>& rIndicator)
685{
686 mxStatusIndicator = rIndicator;
687}
688
690{
691 return maGlobalSettings;
692}
693
695 mrDoc(rDoc),
696 mnTab(nTab)
697{
698}
699
701{
702}
703
704namespace {
705
706double translateToInternal(double nVal, orcus::length_unit_t unit)
707{
708 switch(unit)
709 {
710 case orcus::length_unit_t::inch:
711 return nVal * 72.0 * 20.0;
712 case orcus::length_unit_t::twip:
713 return nVal;
714 case orcus::length_unit_t::point:
715 return nVal * 20.0;
716 case orcus::length_unit_t::centimeter:
717 return nVal * 20.0 * 72.0 / 2.54;
718 case orcus::length_unit_t::unknown:
719 if (nVal != 0)
720 SAL_WARN("sc.orcus", "unknown unit");
721 break;
722 default:
723 break;
724 }
725 return nVal;
726}
727
728
729}
730
731void ScOrcusSheetProperties::set_column_width(os::col_t col, os::col_t col_span, double width, orcus::length_unit_t unit)
732{
733 double nNewWidth = translateToInternal(width, unit);
734
735 for (os::col_t offset = 0; offset < col_span; ++offset)
736 mrDoc.getDoc().SetColWidthOnly(col + offset, mnTab, nNewWidth);
737}
738
739void ScOrcusSheetProperties::set_column_hidden(os::col_t col, os::col_t col_span, bool hidden)
740{
741 if (hidden)
742 mrDoc.getDoc().SetColHidden(col, col + col_span - 1, mnTab, hidden);
743}
744
745void ScOrcusSheetProperties::set_row_height(os::row_t row, double height, orcus::length_unit_t unit)
746{
747 double nNewHeight = translateToInternal(height, unit);
748 mrDoc.getDoc().SetRowHeightOnly(row, row,mnTab, nNewHeight);
749}
750
751void ScOrcusSheetProperties::set_row_hidden(os::row_t row, bool hidden)
752{
753 if (hidden)
754 mrDoc.getDoc().SetRowHidden(row, row, mnTab, hidden);
755}
756
757void ScOrcusSheetProperties::set_merge_cell_range(const orcus::spreadsheet::range_t& range)
758{
759 mrDoc.setMergedCells(mnTab, range.first.column, range.first.row, range.last.column, range.last.row);
760}
761
763 mnTab(nTab),
764 mrDoc(rDoc),
765 mpCurrentFormat(new ScConditionalFormat(0, &mrDoc)),
766 meEntryType(ScFormatEntry::Type::Condition)
767{
768}
769
771{
772}
773
774void ScOrcusConditionalFormat::set_color(os::color_elem_t /*alpha*/, os::color_elem_t /*red*/,
775 os::color_elem_t /*green*/, os::color_elem_t /*blue*/)
776{
777 SAL_INFO("sc.orcus.condformat", "set_color");
778}
779
780void ScOrcusConditionalFormat::set_condition_type(os::condition_type_t /*type*/)
781{
783 SAL_INFO("sc.orcus.condformat", "set_condition_type");
784}
785
786void ScOrcusConditionalFormat::set_formula(std::string_view /*formula*/)
787{
788 SAL_INFO("sc.orcus.condformat", "set_formula");
789}
790
791void ScOrcusConditionalFormat::set_date(os::condition_date_t /*date*/)
792{
794 SAL_INFO("sc.orcus.condformat", "set_date");
795}
796
798{
799 SAL_INFO("sc.orcus.condformat", "commit_condition");
800}
801
802void ScOrcusConditionalFormat::set_icon_name(std::string_view /*name*/)
803{
805 SAL_INFO("sc.orcus.condformat", "set_icon_name");
806}
807
809{
811 SAL_INFO("sc.orcus.condformat", "set_databar_gradient");
812}
813
814void ScOrcusConditionalFormat::set_databar_axis(os::databar_axis_t /*axis*/)
815{
817 SAL_INFO("sc.orcus.condformat", "set_databar_axis");
818}
819
820void ScOrcusConditionalFormat::set_databar_color_positive(os::color_elem_t /*alpha*/, os::color_elem_t /*red*/,
821 os::color_elem_t /*green*/, os::color_elem_t /*blue*/)
822{
824 SAL_INFO("sc.orcus.condformat", "set_databar_color_positive");
825}
826
827void ScOrcusConditionalFormat::set_databar_color_negative(os::color_elem_t /*alpha*/, os::color_elem_t /*red*/,
828 os::color_elem_t /*green*/, os::color_elem_t /*blue*/)
829{
831 SAL_INFO("sc.orcus.condformat", "set_databar_color_negative");
832}
833
835{
837 SAL_INFO("sc.orcus.condformat", "set_min_databar_length");
838}
839
841{
843 SAL_INFO("sc.orcus.condformat", "set_max_databar_length");
844}
845
847{
848 SAL_INFO("sc.orcus.condformat", "set_show_value");
849}
850
852{
854 SAL_INFO("sc.orcus.condformat", "set_iconset_reverse");
855}
856
858{
859 SAL_INFO("sc.orcus.condformat", "set_xf_id");
860}
861
862void ScOrcusConditionalFormat::set_operator(os::condition_operator_t /*condition_type*/)
863{
864 SAL_INFO("sc.orcus.condformat", "set_operator");
865}
866
867void ScOrcusConditionalFormat::set_type(os::conditional_format_t type)
868{
869 switch (type)
870 {
871 case os::conditional_format_t::condition:
872 case os::conditional_format_t::formula:
874 // mpCurrentEntry.reset(new ScCondFormatEntry());
875 break;
876 case os::conditional_format_t::date:
877 break;
878 case os::conditional_format_t::colorscale:
879 break;
880 case os::conditional_format_t::databar:
881 break;
882 case os::conditional_format_t::iconset:
883 break;
884 default:
885 SAL_INFO("sc.orcus.condformat", "unknown conditional_format_t value");
886 break;
887 }
888 SAL_INFO("sc.orcus.condformat", "set_type");
889}
890
892{
893 SAL_INFO("sc.orcus.condformat", "commit_entry");
894}
895
896void ScOrcusConditionalFormat::set_range(std::string_view /*range*/)
897{
898 SAL_INFO("sc.orcus.condformat", "set_range");
899}
900
901void ScOrcusConditionalFormat::set_range(os::row_t row_start, os::col_t col_start,
902 os::row_t row_end, os::col_t col_end)
903{
904 SAL_INFO("sc.orcus.condformat", "set_range");
905 ScRange aRange(col_start, row_start, mnTab, col_end, row_end, mnTab);
906 mpCurrentFormat->SetRange(aRange);
907}
908
910{
911 SAL_INFO("sc.orcus.condformat", "commit_format");
913}
914
916 mrDoc(rDoc),
917 mnTab(nTab),
918 mrFactory(rFactory),
919 mrStyles(static_cast<ScOrcusStyles&>(*mrFactory.get_styles())),
920 maAutoFilter(rFactory.getGlobalSettings()),
921 maProperties(mnTab, mrDoc),
922 maConditionalFormat(mnTab, rDoc.getDoc()),
923 maNamedExpressions(rDoc, rFactory.getGlobalSettings(), nTab),
924 maFormula(*this),
925 maArrayFormula(*this),
926 mnCellCount(0)
927{
928}
929
931{
932 mnCol = -1;
933 mnRow = -1;
934 maFormula.clear();
937 mbShared = false;
939 maResult.clear();
940 mfResult = 0.0;
941}
942
944 mrSheet(rSheet),
945 mnCol(-1),
946 mnRow(-1),
947 meGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED),
948 mnSharedFormulaIndex(0),
949 mbShared(false),
950 meResType(ResultType::NotSet),
951 mfResult(0.0) {}
952
954
955void ScOrcusFormula::set_position(os::row_t row, os::col_t col)
956{
957 mnCol = col;
958 mnRow = row;
959}
960
961void ScOrcusFormula::set_formula(os::formula_grammar_t grammar, std::string_view formula)
962{
964 meGrammar = getCalcGrammarFromOrcus(grammar);
965}
966
968{
970 mbShared = true;
971}
972
974{
976 mfResult = value;
977}
978
979void ScOrcusFormula::set_result_string(std::string_view value)
980{
982 maResult = OUString(value.data(), value.size(), mrSheet.getFactory().getGlobalSettings().getTextEncoding());
983}
984
986{
988}
989
991{
993 mfResult = value ? 1.0 : 0.0;
994}
995
997{
998 ScOrcusFactory& rFactory = mrSheet.getFactory();
1001
1002 if (mbShared)
1003 {
1004 if (maFormula.isEmpty())
1005 {
1006 // shared formula that references existing formula token.
1007 const ScTokenArray* pArray = rGroups.get(mnSharedFormulaIndex);
1008 if (!pArray)
1009 return;
1010 }
1011 else
1012 {
1013 // topmost shared formula with new formula token.
1014
1015 // Compile the formula expression into tokens.
1016 ScCompiler aComp(mrSheet.getDoc().getDoc(), aPos, meGrammar);
1017 std::unique_ptr<ScTokenArray> pArray = aComp.CompileString(maFormula);
1018 if (!pArray)
1019 // Tokenization failed.
1020 return;
1021
1022 rGroups.set(mnSharedFormulaIndex, std::move(pArray));
1023 }
1025 }
1026 else
1027 {
1028 // non-shared formula
1029 rFactory.pushCellStoreToken(aPos, maFormula, meGrammar);
1030 }
1031
1032 switch (meResType)
1033 {
1034 case ResultType::String:
1035 {
1036 rFactory.pushFormulaResult(aPos, maResult);
1037 break;
1038 }
1039 case ResultType::Value:
1040 rFactory.pushFormulaResult(aPos, mfResult);
1041 break;
1042 default:
1043 ;
1044 }
1045
1047}
1048
1050{
1051 mnCol = -1;
1052 mnRow = -1;
1053 mnColRange = 0;
1054 mnRowRange = 0;
1055
1056 maFormula.clear();
1058}
1059
1061 mrSheet(rSheet),
1062 mnCol(-1),
1063 mnRow(-1),
1064 mnColRange(0),
1065 mnRowRange(0),
1066 meGrammar(formula::FormulaGrammar::GRAM_UNSPECIFIED) {}
1067
1069
1070void ScOrcusArrayFormula::set_range(const os::range_t& range)
1071{
1072 mnCol = range.first.column;
1073 mnRow = range.first.row;
1074
1075 mnColRange = range.last.column - range.first.column + 1;
1076 mnRowRange = range.last.row - range.first.column + 1;
1077}
1078
1079void ScOrcusArrayFormula::set_formula(os::formula_grammar_t grammar, std::string_view formula)
1080{
1081 meGrammar = getCalcGrammarFromOrcus(grammar);
1083}
1084
1085void ScOrcusArrayFormula::set_result_value(os::row_t /*row*/, os::col_t /*col*/, double /*value*/)
1086{
1087 // TODO : implement result cache for matrix
1088}
1089
1090void ScOrcusArrayFormula::set_result_string(os::row_t /*row*/, os::col_t /*col*/, std::string_view /*value*/)
1091{
1092 // TODO : implement result cache for matrix
1093}
1094
1095void ScOrcusArrayFormula::set_result_empty(os::row_t /*row*/, os::col_t /*col*/)
1096{
1097 // TODO : implement result cache for matrix
1098}
1099
1100void ScOrcusArrayFormula::set_result_bool(os::row_t /*row*/, os::col_t /*col*/, bool /*value*/)
1101{
1102 // TODO : implement result cache for matrix
1103}
1104
1106{
1110}
1111
1113{
1114 ++mnCellCount;
1115 if (mnCellCount == 100000)
1116 {
1118 mnCellCount = 0;
1119 }
1120}
1121
1123{
1124 return mrDoc;
1125}
1126
1127os::iface::import_auto_filter* ScOrcusSheet::get_auto_filter()
1128{
1129 return &maAutoFilter;
1130}
1131
1132os::iface::import_table* ScOrcusSheet::get_table()
1133{
1134 return nullptr;
1135}
1136
1137os::iface::import_sheet_properties* ScOrcusSheet::get_sheet_properties()
1138{
1139 return &maProperties;
1140}
1141
1142os::iface::import_conditional_format* ScOrcusSheet::get_conditional_format()
1143{
1144 return &maConditionalFormat;
1145}
1146
1147os::iface::import_named_expression* ScOrcusSheet::get_named_expression()
1148{
1149 return &maNamedExpressions;
1150}
1151
1152os::iface::import_formula* ScOrcusSheet::get_formula()
1153{
1154 maFormula.reset();
1155 return &maFormula;
1156}
1157
1158os::iface::import_array_formula* ScOrcusSheet::get_array_formula()
1159{
1161 return &maArrayFormula;
1162}
1163
1164void ScOrcusSheet::set_auto(os::row_t row, os::col_t col, std::string_view value)
1165{
1166 OUString aVal(value.data(), value.size(), mrFactory.getGlobalSettings().getTextEncoding());
1168 cellInserted();
1169}
1170
1171void ScOrcusSheet::set_string(os::row_t row, os::col_t col, os::string_id_t sindex)
1172{
1174 cellInserted();
1175}
1176
1177void ScOrcusSheet::set_value(os::row_t row, os::col_t col, double value)
1178{
1180 cellInserted();
1181}
1182
1183void ScOrcusSheet::set_bool(os::row_t row, os::col_t col, bool value)
1184{
1185 mrFactory.pushCellStoreToken(ScAddress(col, row, mnTab), value ? 1.0 : 0.0);
1186 cellInserted();
1187}
1188
1190 os::row_t row, os::col_t col, int year, int month, int day, int hour, int minute, double second)
1191{
1192 SvNumberFormatter* pFormatter = mrDoc.getDoc().GetFormatTable();
1193
1194 Date aDate(day, month, year);
1195 sal_uInt32 nSec = floor(second);
1196 sal_uInt32 nNanoSec = (second - nSec) * ::tools::Time::nanoSecPerSec;
1197 tools::Time aTime(hour, minute, nSec, nNanoSec);
1198 tools::Long nDateDiff = aDate - pFormatter->GetNullDate();
1199
1200 double fTime =
1201 static_cast<double>(aTime.GetNanoSec()) / ::tools::Time::nanoSecPerSec +
1202 aTime.GetSec() +
1205
1206 fTime /= DATE_TIME_FACTOR;
1207
1208 mrFactory.pushCellStoreToken(ScAddress(col, row, mnTab), nDateDiff + fTime);
1209 cellInserted();
1210}
1211
1212void ScOrcusSheet::set_format(os::row_t row, os::col_t col, size_t xf_index)
1213{
1214 SAL_INFO("sc.orcus.style", "set format: " << xf_index);
1215
1216 ScPatternAttr aPattern(mrDoc.getDoc().GetPool());
1217 mrStyles.applyXfToItemSet(aPattern.GetItemSet(), xf_index);
1218 mrDoc.getDoc().ApplyPattern(col, row, mnTab, aPattern);
1219}
1220
1221void ScOrcusSheet::set_format(os::row_t row_start, os::col_t col_start,
1222 os::row_t row_end, os::col_t col_end, size_t xf_index)
1223{
1224 SAL_INFO("sc.orcus.style", "set format range: " << xf_index);
1225 ScPatternAttr aPattern(mrDoc.getDoc().GetPool());
1226 mrStyles.applyXfToItemSet(aPattern.GetItemSet(), xf_index);
1227 mrDoc.getDoc().ApplyPatternAreaTab(col_start, row_start, col_end, row_end, mnTab, aPattern);
1228}
1229
1231 os::col_t col, os::col_t col_span, std::size_t xf_index)
1232{
1233 ScPatternAttr aPattern(mrDoc.getDoc().GetPool());
1234 mrStyles.applyXfToItemSet(aPattern.GetItemSet(), xf_index);
1235
1237 col, 0, col + col_span - 1, mrDoc.getDoc().MaxRow(), mnTab, aPattern);
1238}
1239
1240void ScOrcusSheet::set_row_format(os::row_t row, std::size_t xf_index)
1241{
1242 ScPatternAttr aPattern(mrDoc.getDoc().GetPool());
1243 mrStyles.applyXfToItemSet(aPattern.GetItemSet(), xf_index);
1244
1246 0, row, mrDoc.getDoc().MaxCol(), row, mnTab, aPattern);
1247}
1248
1249orcus::spreadsheet::range_size_t ScOrcusSheet::get_sheet_size() const
1250{
1251 orcus::spreadsheet::range_size_t ret;
1252 ret.rows = MAXROWCOUNT;
1253 ret.columns = MAXCOLCOUNT;
1254
1255 return ret;
1256}
1257
1258void ScOrcusSheet::fill_down_cells(os::row_t row, os::col_t col, os::row_t range_size)
1259{
1261 cellInserted();
1262}
1263
1265{
1266 return maFormulaGroups;
1267}
1268
1270{
1271 return maFormulaGroups;
1272}
1273
1275{
1276 return mrFactory;
1277}
1278
1280 mrFactory(rFactory) {}
1281
1282size_t ScOrcusSharedStrings::append(std::string_view s)
1283{
1284 OUString aNewString(s.data(), s.size(), mrFactory.getGlobalSettings().getTextEncoding());
1285 return mrFactory.appendString(aNewString);
1286}
1287
1288size_t ScOrcusSharedStrings::add(std::string_view s)
1289{
1290 OUString aNewString(s.data(), s.size(), mrFactory.getGlobalSettings().getTextEncoding());
1291 return mrFactory.addString(aNewString);
1292}
1293
1295{
1296}
1297
1299{
1300}
1301
1303{
1304}
1305
1307{
1308}
1309
1311{
1312}
1313
1314void ScOrcusSharedStrings::set_segment_font_color(orcus::spreadsheet::color_elem_t,
1315 orcus::spreadsheet::color_elem_t,
1316 orcus::spreadsheet::color_elem_t,
1317 orcus::spreadsheet::color_elem_t)
1318{
1319}
1320
1322{
1323 maCurSegment.append(s.data(), s.size());
1324}
1325
1327{
1328 OString aStr = maCurSegment.makeStringAndClear();
1329 return mrFactory.addString(
1330 OStringToOUString(aStr, mrFactory.getGlobalSettings().getTextEncoding()));
1331}
1332
1334{
1335 if (mbBold)
1336 {
1339 }
1340
1341 if (mbBoldAsian)
1342 {
1345 }
1346
1347 if (mbBoldComplex)
1348 {
1351 }
1352
1353 if (mbItalic)
1354 {
1357 }
1358
1359 if (mbItalicAsian)
1360 {
1363 }
1364
1365 if (mbItalicComplex)
1366 {
1369 }
1370
1371 if (maColor)
1373
1374 if (maName && !maName->isEmpty())
1375 rSet.Put( SvxFontItem( FAMILY_DONTKNOW, *maName, *maName, PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, ATTR_FONT ));
1376
1377 if (maNameAsian && !maNameAsian->isEmpty())
1379
1380 if (maNameComplex && !maNameComplex->isEmpty())
1382
1383 if (mnSize)
1384 {
1385 double fSize = translateToInternal(*mnSize, orcus::length_unit_t::point);
1387 }
1388
1389 if (mnSizeAsian)
1390 {
1391 double fSize = translateToInternal(*mnSizeAsian, orcus::length_unit_t::point);
1393 }
1394
1395 if (mnSizeComplex)
1396 {
1397 double fSize = translateToInternal(*mnSizeComplex, orcus::length_unit_t::point);
1399 }
1400
1401 if (meUnderline)
1402 {
1404 if (maUnderlineColor)
1405 // Separate color specified for the underline
1406 aUnderline.SetColor(*maUnderlineColor);
1407 else if (maColor)
1408 // Use font color
1409 aUnderline.SetColor(*maColor);
1410 rSet.Put(aUnderline);
1411 }
1412
1413 if (meStrikeout)
1415}
1416
1418{
1419 if (!mePattern || !maFgColor)
1420 return;
1421
1422 if (*mePattern == os::fill_pattern_t::solid)
1424}
1425
1427{
1428 auto getDirection = [](os::border_direction_t dir) -> SvxBoxItemLine
1429 {
1430 switch (dir)
1431 {
1432 case os::border_direction_t::right:
1433 return SvxBoxItemLine::RIGHT;
1434 case os::border_direction_t::left:
1435 return SvxBoxItemLine::LEFT;
1436 case os::border_direction_t::top:
1437 return SvxBoxItemLine::TOP;
1438 case os::border_direction_t::bottom:
1439 return SvxBoxItemLine::BOTTOM;
1440 default:
1441 ;
1442 }
1443 return SvxBoxItemLine::RIGHT;
1444 };
1445
1446 if (maBorders.empty())
1447 return;
1448
1449 SvxBoxItem aBoxItem(ATTR_BORDER);
1450 SvxLineItem aDiagonal_TLBR(ATTR_BORDER_TLBR);
1451 SvxLineItem aDiagonal_BLTR(ATTR_BORDER_BLTR);
1452
1453 for (const auto& [dir, attrs] : maBorders)
1454 {
1455 SvxBoxItemLine eDir = getDirection(dir);
1456
1457 SvxBorderLineStyle eStyle = attrs.meStyle.value_or(SvxBorderLineStyle::SOLID);
1458 Color aColor = attrs.maColor.value_or(COL_BLACK);
1459 double nWidth = attrs.mnWidth.value_or(0.0);
1460
1461 switch (dir)
1462 {
1463 case os::border_direction_t::diagonal_tl_br:
1464 {
1465 editeng::SvxBorderLine aLine(&aColor, nWidth, eStyle);
1466 aDiagonal_TLBR.SetLine(&aLine);
1467 break;
1468 }
1469 case os::border_direction_t::diagonal_bl_tr:
1470 {
1471 editeng::SvxBorderLine aLine(&aColor, nWidth, eStyle);
1472 aDiagonal_BLTR.SetLine(&aLine);
1473 break;
1474 }
1475 default:
1476 {
1477 editeng::SvxBorderLine aLine(&aColor, nWidth, eStyle);
1478 aBoxItem.SetLine(&aLine, eDir);
1479 }
1480 }
1481 }
1482
1483 rSet.Put(aDiagonal_BLTR);
1484 rSet.Put(aDiagonal_TLBR);
1485 rSet.Put(aBoxItem);
1486}
1487
1489{
1491 return;
1492
1493 bool bLocked = mbLocked.value_or(true); // defaults to true.
1494 bool bHidden = mbHidden.value_or(false);
1495 bool bFormulaHidden = mbFormulaHidden.value_or(false);
1496 bool bPrintContent = mbPrintContent.value_or(false);
1497 rSet.Put(ScProtectionAttr(bLocked, bFormulaHidden, bHidden, bPrintContent));
1498}
1499
1501{
1502 if (!maCode)
1503 return;
1504
1505 sal_uInt32 nKey;
1506 sal_Int32 nCheckPos;
1507 SvNumberFormatter* pFormatter = rDoc.GetFormatTable();
1508 OUString Code = *maCode; /* <-- Done because the SvNumberFormatter::PutEntry demands a non const NumFormat Code*/
1509 SvNumFormatType type = SvNumFormatType::ALL;
1510
1511 pFormatter->PutEntry(Code, nCheckPos, type, nKey, LANGUAGE_ENGLISH_US);
1512 if (!nCheckPos)
1514}
1515
1517 mnFontId(0),
1518 mnFillId(0),
1519 mnBorderId(0),
1520 mnProtectionId(0),
1521 mnNumberFormatId(0),
1522 mnStyleXf(0),
1523 mbApplyAlignment(false),
1524 mbWrapText(false),
1525 mbShrinkToFit(false),
1526 meHorAlignment(SvxCellHorJustify::Standard),
1527 meVerAlignment(SvxCellVerJustify::Standard),
1528 meHorAlignMethod(SvxCellJustifyMethod::Auto),
1529 meVerAlignMethod(SvxCellJustifyMethod::Auto)
1530{
1531}
1532
1534 maParentName(SC_STYLE_PROG_STANDARD),
1535 mnXFId(0),
1536 mnBuiltInId(0)
1537{
1538}
1539
1540ScOrcusImportFontStyle::ScOrcusImportFontStyle( ScOrcusFactory& rFactory, std::vector<ScOrcusFont>& rFonts ) :
1541 mrFactory(rFactory),
1542 mrFonts(rFonts)
1543{
1544}
1545
1547{
1549}
1550
1552{
1554}
1555
1557{
1559}
1560
1562{
1564}
1565
1567{
1569}
1570
1572{
1574}
1575
1577{
1579}
1580
1581void ScOrcusImportFontStyle::set_name(std::string_view name)
1582{
1583 OUString aName(name.data(), name.size(), mrFactory.getGlobalSettings().getTextEncoding());
1585}
1586
1588{
1589 OUString aName(name.data(), name.size(), mrFactory.getGlobalSettings().getTextEncoding());
1591}
1592
1594{
1595 OUString aName(name.data(), name.size(), mrFactory.getGlobalSettings().getTextEncoding());
1597}
1598
1600{
1602}
1603
1605{
1607}
1608
1610{
1612}
1613
1615{
1616 switch(e)
1617 {
1618 case os::underline_t::single_line:
1619 case os::underline_t::single_accounting:
1621 break;
1622 case os::underline_t::double_line:
1623 case os::underline_t::double_accounting:
1625 break;
1626 case os::underline_t::none:
1628 break;
1629 case os::underline_t::dotted:
1631 break;
1632 case os::underline_t::dash:
1634 break;
1635 case os::underline_t::long_dash:
1637 break;
1638 case os::underline_t::dot_dash:
1640 break;
1641 case os::underline_t::dot_dot_dash:
1643 break;
1644 case os::underline_t::wave:
1646 break;
1647 default:
1648 ;
1649 }
1650}
1651
1653{
1654 if (e == os::underline_width_t::bold || e == os::underline_width_t::thick)
1655 {
1657 {
1658 switch (*maCurrentFont.meUnderline)
1659 {
1660 case LINESTYLE_NONE:
1661 case LINESTYLE_SINGLE:
1663 break;
1664 case LINESTYLE_DOTTED:
1666 break;
1667 case LINESTYLE_DASH:
1669 break;
1670 case LINESTYLE_LONGDASH:
1672 break;
1673 case LINESTYLE_DASHDOT:
1675 break;
1678 break;
1679 case LINESTYLE_WAVE:
1681 break;
1682 default:
1683 ;
1684 }
1685 }
1686 else
1688 }
1689}
1690
1691void ScOrcusImportFontStyle::set_underline_mode(os::underline_mode_t /*e*/)
1692{
1693}
1694
1696{
1697 if (e == os::underline_type_t::double_type)
1698 {
1700 {
1701 switch (*maCurrentFont.meUnderline)
1702 {
1703 case LINESTYLE_NONE:
1704 case LINESTYLE_SINGLE:
1706 break;
1707 case LINESTYLE_WAVE:
1709 break;
1710 default:
1711 ;
1712 }
1713 }
1714 else
1716 }
1717}
1718
1720 os::color_elem_t alpha, os::color_elem_t red, os::color_elem_t green, os::color_elem_t blue)
1721{
1722 maCurrentFont.maUnderlineColor = Color(ColorAlpha, alpha, red, green, blue);
1723}
1724
1726 os::color_elem_t alpha, os::color_elem_t red, os::color_elem_t green, os::color_elem_t blue)
1727{
1728 maCurrentFont.maColor = Color(ColorAlpha, alpha, red, green, blue);
1729}
1730
1731void ScOrcusImportFontStyle::set_strikethrough_style(os::strikethrough_style_t /*s*/)
1732{
1733}
1734
1736{
1738 {
1742 return;
1743 }
1744
1745 switch (s)
1746 {
1747 case os::strikethrough_type_t::unknown:
1749 break;
1750 case os::strikethrough_type_t::none:
1752 break;
1753 case os::strikethrough_type_t::single_type:
1755 break;
1756 case os::strikethrough_type_t::double_type:
1758 break;
1759 default:
1760 ;
1761 }
1762}
1763
1765{
1766 switch (s)
1767 {
1768 case os::strikethrough_width_t::bold:
1770 break;
1771 default:
1772 ;
1773 }
1774}
1775
1777{
1778 switch (s)
1779 {
1780 case os::strikethrough_text_t::slash:
1782 break;
1783 case os::strikethrough_text_t::cross:
1785 break;
1786 default:
1787 ;
1788 }
1789}
1790
1792{
1793 SAL_INFO("sc.orcus.style", "commit font");
1794 mrFonts.push_back(maCurrentFont);
1796 return mrFonts.size() - 1;
1797}
1798
1799ScOrcusImportFillStyle::ScOrcusImportFillStyle( std::vector<ScOrcusFill>& rFills ) :
1800 mrFills(rFills)
1801{
1802}
1803
1805{
1807}
1808
1810{
1812}
1813
1815 os::color_elem_t alpha, os::color_elem_t red, os::color_elem_t green, os::color_elem_t blue)
1816{
1817 maCurrentFill.maFgColor = Color(ColorAlpha, alpha, red, green, blue);
1818}
1819
1821 os::color_elem_t alpha, os::color_elem_t red, os::color_elem_t green, os::color_elem_t blue)
1822{
1823 maCurrentFill.maBgColor = Color(ColorAlpha, alpha, red, green, blue);
1824}
1825
1827{
1828 SAL_INFO("sc.orcus.style", "commit fill");
1829 mrFills.push_back(maCurrentFill);
1831 return mrFills.size() - 1;
1832}
1833
1834ScOrcusImportBorderStyle::ScOrcusImportBorderStyle( std::vector<ScOrcusBorder>& rBorders ) :
1835 mrBorders(rBorders)
1836{
1837}
1838
1840 os::border_direction_t dir, os::border_style_t style)
1841{
1843
1844 switch (style)
1845 {
1846 case os::border_style_t::solid:
1847 rBorderLine.meStyle = SvxBorderLineStyle::SOLID;
1848 rBorderLine.mnWidth = oox::xls::API_LINE_THIN;
1849 break;
1850 case os::border_style_t::hair:
1851 rBorderLine.meStyle = SvxBorderLineStyle::SOLID;
1852 rBorderLine.mnWidth = oox::xls::API_LINE_HAIR;
1853 break;
1854 case os::border_style_t::medium:
1855 rBorderLine.meStyle = SvxBorderLineStyle::SOLID;
1856 rBorderLine.mnWidth = oox::xls::API_LINE_MEDIUM;
1857 break;
1858 case os::border_style_t::thick:
1859 rBorderLine.meStyle = SvxBorderLineStyle::SOLID;
1860 rBorderLine.mnWidth = oox::xls::API_LINE_THICK;
1861 break;
1862 case os::border_style_t::thin:
1863 rBorderLine.meStyle = SvxBorderLineStyle::SOLID;
1864 rBorderLine.mnWidth = oox::xls::API_LINE_THIN;
1865 break;
1866 case os::border_style_t::dash_dot:
1867 rBorderLine.meStyle = SvxBorderLineStyle::DASH_DOT;
1868 rBorderLine.mnWidth = oox::xls::API_LINE_THIN;
1869 break;
1870 case os::border_style_t::dash_dot_dot:
1871 rBorderLine.meStyle = SvxBorderLineStyle::DASH_DOT_DOT;
1872 rBorderLine.mnWidth = oox::xls::API_LINE_THIN;
1873 break;
1874 case os::border_style_t::dashed:
1875 rBorderLine.meStyle = SvxBorderLineStyle::DASHED;
1876 rBorderLine.mnWidth = oox::xls::API_LINE_THIN;
1877 break;
1878 case os::border_style_t::dotted:
1879 rBorderLine.meStyle = SvxBorderLineStyle::DOTTED;
1880 rBorderLine.mnWidth = oox::xls::API_LINE_THIN;
1881 break;
1882 case os::border_style_t::double_border:
1883 rBorderLine.meStyle = SvxBorderLineStyle::DOUBLE;
1884 rBorderLine.mnWidth = oox::xls::API_LINE_THICK;
1885 break;
1886 case os::border_style_t::medium_dash_dot:
1887 case os::border_style_t::slant_dash_dot:
1888 rBorderLine.meStyle = SvxBorderLineStyle::DASH_DOT;
1889 rBorderLine.mnWidth = oox::xls::API_LINE_MEDIUM;
1890 break;
1891 case os::border_style_t::medium_dash_dot_dot:
1892 rBorderLine.meStyle = SvxBorderLineStyle::DASH_DOT_DOT;
1893 rBorderLine.mnWidth = oox::xls::API_LINE_MEDIUM;
1894 break;
1895 case os::border_style_t::medium_dashed:
1896 rBorderLine.meStyle = SvxBorderLineStyle::DASHED;
1897 rBorderLine.mnWidth = oox::xls::API_LINE_MEDIUM;
1898 break;
1899 case os::border_style_t::unknown:
1900 case os::border_style_t::none:
1901 rBorderLine.mnWidth = oox::xls::API_LINE_NONE;
1902 break;
1903 default:
1904 ;
1905 }
1906}
1907
1909 os::border_direction_t dir, os::color_elem_t alpha, os::color_elem_t red,
1910 os::color_elem_t green, os::color_elem_t blue)
1911{
1913 rBorderLine.maColor = Color(ColorAlpha, alpha, red, green, blue);
1914}
1915
1917{
1919}
1920
1921void ScOrcusImportBorderStyle::set_width(os::border_direction_t dir, double val, orcus::length_unit_t unit)
1922{
1924 rBorderLine.mnWidth = translateToInternal(val, unit);
1925}
1926
1928{
1929 SAL_INFO("sc.orcus.style", "commit border");
1930 mrBorders.push_back(maCurrentBorder);
1932 return mrBorders.size() - 1;
1933}
1934
1935ScOrcusImportCellProtection::ScOrcusImportCellProtection( std::vector<ScOrcusProtection>& rProtections ) :
1936 mrProtections(rProtections)
1937{
1938}
1939
1941{
1943}
1944
1946{
1948}
1949
1951{
1953}
1954
1956{
1958}
1959
1961{
1963}
1964
1966{
1967 SAL_INFO("sc.orcus.style", "commit cell protection");
1970 return mrProtections.size() - 1;
1971}
1972
1973ScOrcusImportNumberFormat::ScOrcusImportNumberFormat( ScOrcusFactory& rFactory, std::vector<ScOrcusNumberFormat>& rFormats ) :
1974 mrFactory(rFactory), mrNumberFormats(rFormats)
1975{
1976}
1977
1979{
1981}
1982
1984{
1985}
1986
1988{
1989 OUString aCode(s.data(), s.size(), mrFactory.getGlobalSettings().getTextEncoding());
1990 maCurrentFormat.maCode = aCode;
1991}
1992
1994{
1995 SAL_INFO("sc.orcus.style", "commit number format");
1998 return mrNumberFormats.size() - 1;
1999}
2000
2002 ScOrcusFactory& rFactory, ScOrcusStyles& rStyles, const std::vector<ScOrcusXf>& rXfs ) :
2003 mrFactory(rFactory),
2004 mrStyles(rStyles),
2005 mrXfs(rXfs)
2006{
2007}
2008
2010{
2012}
2013
2014void ScOrucsImportCellStyle::set_name(std::string_view name)
2015{
2016 OUString aName(name.data(), name.size(), mrFactory.getGlobalSettings().getTextEncoding());
2018}
2019
2021{
2022 OUString aName(name.data(), name.size(), mrFactory.getGlobalSettings().getTextEncoding());
2024}
2025
2027{
2029}
2030
2032{
2034}
2035
2037{
2038 const OUString aParentName(name.data(), name.size(), mrFactory.getGlobalSettings().getTextEncoding());
2039 maCurrentStyle.maParentName = aParentName;
2040}
2041
2043{
2044 SAL_INFO("sc.orcus.style", "commit cell style: " << maCurrentStyle.maName);
2045 if (maCurrentStyle.mnXFId >= mrXfs.size())
2046 {
2047 SAL_WARN("sc.orcus.style", "invalid xf id for commit cell style");
2048 return;
2049 }
2050
2051 if (maCurrentStyle.mnXFId == 0)
2052 return;
2053
2055 SfxStyleSheetBase& rBase = pPool->Make(maCurrentStyle.maName, SfxStyleFamily::Para);
2056 // Need to convert the parent name to localized UI name, see tdf#139205.
2057 rBase.SetParent(
2059 maCurrentStyle.maParentName, SfxStyleFamily::Para));
2060
2061 SfxItemSet& rSet = rBase.GetItemSet();
2062 const ScOrcusXf& rXf = mrXfs[maCurrentStyle.mnXFId];
2064
2066}
2067
2068void ScOrcusImportXf::reset( std::vector<ScOrcusXf>& rXfs )
2069{
2070 mpXfs = &rXfs;
2072}
2073
2074void ScOrcusImportXf::set_font(std::size_t index)
2075{
2077}
2078
2079void ScOrcusImportXf::set_fill(std::size_t index)
2080{
2082}
2083
2084void ScOrcusImportXf::set_border(std::size_t index)
2085{
2087}
2088
2089void ScOrcusImportXf::set_protection(std::size_t index)
2090{
2092}
2093
2095{
2097}
2098
2099void ScOrcusImportXf::set_style_xf(std::size_t index)
2100{
2102}
2103
2105{
2107}
2108
2109void ScOrcusImportXf::set_horizontal_alignment(os::hor_alignment_t align)
2110{
2111 switch (align)
2112 {
2113 case os::hor_alignment_t::left:
2114 maCurrentXf.meHorAlignment = SvxCellHorJustify::Left;
2115 break;
2116 case os::hor_alignment_t::right:
2117 maCurrentXf.meHorAlignment = SvxCellHorJustify::Right;
2118 break;
2119 case os::hor_alignment_t::center:
2120 maCurrentXf.meHorAlignment = SvxCellHorJustify::Center;
2121 break;
2122 case os::hor_alignment_t::justified:
2123 maCurrentXf.meHorAlignment = SvxCellHorJustify::Block;
2124 break;
2125 case os::hor_alignment_t::distributed:
2126 maCurrentXf.meHorAlignment = SvxCellHorJustify::Block;
2127 maCurrentXf.meHorAlignMethod = SvxCellJustifyMethod::Distribute;
2128 break;
2129 case os::hor_alignment_t::unknown:
2130 maCurrentXf.meHorAlignment = SvxCellHorJustify::Standard;
2131 break;
2132 default:
2133 ;
2134 }
2136}
2137
2138void ScOrcusImportXf::set_vertical_alignment(os::ver_alignment_t align)
2139{
2140 switch (align)
2141 {
2142 case os::ver_alignment_t::top:
2143 maCurrentXf.meVerAlignment = SvxCellVerJustify::Top;
2144 break;
2145 case os::ver_alignment_t::bottom:
2146 maCurrentXf.meVerAlignment = SvxCellVerJustify::Bottom;
2147 break;
2148 case os::ver_alignment_t::middle:
2149 maCurrentXf.meVerAlignment = SvxCellVerJustify::Center;
2150 break;
2151 case os::ver_alignment_t::justified:
2152 maCurrentXf.meVerAlignment = SvxCellVerJustify::Block;
2153 break;
2154 case os::ver_alignment_t::distributed:
2155 maCurrentXf.meVerAlignment = SvxCellVerJustify::Block;
2156 maCurrentXf.meVerAlignMethod = SvxCellJustifyMethod::Distribute;
2157 break;
2158 case os::ver_alignment_t::unknown:
2159 maCurrentXf.meVerAlignment = SvxCellVerJustify::Standard;
2160 break;
2161 default:
2162 ;
2163 }
2165}
2166
2168{
2170}
2171
2173{
2175}
2176
2178{
2179 mpXfs->push_back(maCurrentXf);
2180 return mpXfs->size() - 1;
2181}
2182
2183
2184ScOrcusStyles::ScOrcusStyles( ScOrcusFactory& rFactory, bool bSkipDefaultStyles ) :
2185 mrFactory(rFactory),
2186 maFontStyle(rFactory, maFonts),
2187 maFillStyle(maFills),
2188 maBorderStyle(maBorders),
2189 maCellProtection(maProtections),
2190 maNumberFormat(rFactory, maNumberFormats),
2191 maCellStyle(rFactory, *this, maCellStyleXfs)
2192{
2193 ScDocument& rDoc = rFactory.getDoc().getDoc();
2194 if (!bSkipDefaultStyles && !rDoc.GetStyleSheetPool()->HasStandardStyles())
2196}
2197
2198/*
2199namespace {
2200
2201std::ostream& operator<<(std::ostream& rStrm, const Color& rColor)
2202{
2203 rStrm << "Red: " << (int)rColor.GetRed() << ", Green: " << (int)rColor.GetGreen() << ", Blue: " << (int)rColor.GetBlue();
2204 return rStrm;
2205}
2206
2207}
2208*/
2209
2211{
2212 size_t nFontId = rXf.mnFontId;
2213 if (nFontId >= maFonts.size())
2214 {
2215 SAL_WARN("sc.orcus.style", "invalid font id");
2216 return;
2217 }
2218
2219 maFonts[nFontId].applyToItemSet(rSet);
2220
2221 size_t nFillId = rXf.mnFillId;
2222 if (nFillId >= maFills.size())
2223 {
2224 SAL_WARN("sc.orcus.style", "invalid fill id");
2225 return;
2226 }
2227
2228 maFills[nFillId].applyToItemSet(rSet);
2229
2230 size_t nBorderId = rXf.mnBorderId;
2231 if (nBorderId >= maBorders.size())
2232 {
2233 SAL_WARN("sc.orcus.style", "invalid border id");
2234 return;
2235 }
2236 maBorders[nBorderId].applyToItemSet(rSet);
2237
2238 size_t nProtectionId = rXf.mnProtectionId;
2239 if (nProtectionId >= maProtections.size())
2240 {
2241 SAL_WARN("sc.orcus.style", "invalid protection id");
2242 return;
2243 }
2244
2245 maProtections[nProtectionId].applyToItemSet(rSet);
2246
2247 size_t nNumberFormatId = rXf.mnNumberFormatId;
2248 if (nNumberFormatId >= maNumberFormats.size())
2249 {
2250 SAL_WARN("sc.orcus.style", "invalid number format id");
2251 return;
2252 }
2253 const ScOrcusNumberFormat& rFormat = maNumberFormats[nNumberFormatId];
2255
2256 if (rXf.mbApplyAlignment)
2257 {
2262 }
2263
2264 if (rXf.mbWrapText)
2266
2267 if (rXf.mbShrinkToFit)
2269}
2270
2271void ScOrcusStyles::applyXfToItemSet( SfxItemSet& rSet, std::size_t xfId )
2272{
2273 SAL_INFO("sc.orcus.style", "applyXfToitemSet: " << xfId);
2274 if (maCellXfs.size() <= xfId)
2275 {
2276 SAL_WARN("sc.orcus.style", "invalid xf id");
2277 return;
2278 }
2279
2281}
2282
2283os::iface::import_font_style* ScOrcusStyles::start_font_style()
2284{
2286 return &maFontStyle;
2287}
2288
2289os::iface::import_fill_style* ScOrcusStyles::start_fill_style()
2290{
2292 return &maFillStyle;
2293}
2294
2295os::iface::import_border_style* ScOrcusStyles::start_border_style()
2296{
2298 return &maBorderStyle;
2299}
2300
2301os::iface::import_cell_protection* ScOrcusStyles::start_cell_protection()
2302{
2304 return &maCellProtection;
2305}
2306
2307os::iface::import_number_format* ScOrcusStyles::start_number_format()
2308{
2310 return &maNumberFormat;
2311}
2312
2313os::iface::import_xf* ScOrcusStyles::start_xf(os::xf_category_t cat)
2314{
2315 switch (cat)
2316 {
2317 case os::xf_category_t::cell:
2319 break;
2320 case os::xf_category_t::cell_style:
2322 break;
2323 case os::xf_category_t::differential:
2325 break;
2326 case os::xf_category_t::unknown:
2327 SAL_WARN("sc.orcus.style", "unknown xf category");
2328 return nullptr;
2329 }
2330
2331 return &maXf;
2332}
2333
2334os::iface::import_cell_style* ScOrcusStyles::start_cell_style()
2335{
2337 return &maCellStyle;
2338}
2339
2341{
2342}
2343
2345{
2346}
2347
2349{
2350}
2351
2353{
2354}
2355
2356void ScOrcusStyles::set_xf_count(os::xf_category_t /*cat*/, size_t /*n*/)
2357{
2358}
2359
2361{
2362}
2363
2364// auto filter import
2365
2367 mrGlobalSettings(rGS)
2368{
2369}
2370
2372{
2373}
2374
2375void ScOrcusAutoFilter::set_range(const os::range_t& range)
2376{
2377 maRange.aStart.SetRow(range.first.row);
2378 maRange.aStart.SetCol(range.first.column);
2379 maRange.aEnd.SetRow(range.last.row);
2380 maRange.aEnd.SetCol(range.last.column);
2381}
2382
2384{
2385 SAL_INFO("sc.orcus.autofilter", "set_column: " << col);
2386}
2387
2389{
2390 OUString aString(value.data(), value.size(), mrGlobalSettings.getTextEncoding());
2391 SAL_INFO("sc.orcus.autofilter", "append_column_match_value: " << aString);
2392}
2393
2395{
2396 SAL_INFO("sc.orcus.autofilter", "commit column");
2397}
2398
2400{
2401 SAL_INFO("sc.orcus.autofilter", "commit");
2402}
2403
2404/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
const SCCOL MAXCOLCOUNT
Definition: address.hxx:63
const SCROW MAXROWCOUNT
Definition: address.hxx:62
OUString maFormula
SvxBorderLineStyle
SvxBoxItemLine
sal_Int32 day
sal_Int32 year
sal_Int32 month
SCTAB Tab() const
Definition: address.hxx:283
void SetCol(SCCOL nColP)
Definition: address.hxx:291
void IncCol(SCCOL nDelta=1)
Definition: address.hxx:316
bool IsValid() const
Definition: address.hxx:305
SC_DLLPUBLIC ScRefFlags Parse(const OUString &, const ScDocument &, 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:1537
SCROW Row() const
Definition: address.hxx:274
void SetRow(SCROW nRowP)
Definition: address.hxx:287
void SetTab(SCTAB nTabP)
Definition: address.hxx:295
void IncRow(SCROW nDelta=1)
Definition: address.hxx:312
SCCOL Col() const
Definition: address.hxx:279
std::unique_ptr< ScTokenArray > CompileString(const OUString &rFormula)
Tokenize formula expression string into an array of tokens.
Definition: compiler.cxx:4691
Accessor class to ScDocument.
void setMatrixCells(const ScRange &rRange, const ScTokenArray &rArray, formula::FormulaGrammar::Grammar eGrammar)
void setOriginDate(sal_uInt16 nYear, sal_uInt16 nMonth, sal_uInt16 nDay)
void setMergedCells(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
void setStringCell(const ScAddress &rPos, const OUString &rStr)
bool appendSheet(const OUString &rName)
void setFormulaCell(const ScAddress &rPos, const OUString &rFormula, formula::FormulaGrammar::Grammar eGrammar, const double *pResult=nullptr)
ScDocument & getDoc()
void setSheetName(SCTAB nTab, const OUString &rName)
SCTAB getSheetCount() const
SCTAB getSheetIndex(const OUString &rName) const
void setNumericCell(const ScAddress &rPos, double fVal)
void fillDownCells(const ScAddress &rPos, SCROW nFillSize)
void setAutoInput(const ScAddress &rPos, const OUString &rStr, const ScSetStringParam *pStringParam=nullptr)
SC_DLLPUBLIC void SetColHidden(SCCOL nStartCol, SCCOL nEndCol, SCTAB nTab, bool bHidden)
Definition: document.cxx:4534
SC_DLLPUBLIC SCCOL MaxCol() const
Definition: document.hxx:892
SC_DLLPUBLIC ScDocumentPool * GetPool()
Definition: document.cxx:6181
SC_DLLPUBLIC void ApplyPatternAreaTab(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab, const ScPatternAttr &rAttr)
Definition: document.cxx:4875
SC_DLLPUBLIC SCROW MaxRow() const
Definition: document.hxx:893
SC_DLLPUBLIC void ApplyPattern(SCCOL nCol, SCROW nRow, SCTAB nTab, const ScPatternAttr &rAttr)
Definition: document.cxx:4852
SC_DLLPUBLIC void SetColWidthOnly(SCCOL nCol, SCTAB nTab, sal_uInt16 nNewWidth)
Definition: document.cxx:4156
SC_DLLPUBLIC ScStyleSheetPool * GetStyleSheetPool() const
Definition: document.cxx:6186
SC_DLLPUBLIC void SetRowHeightOnly(SCROW nStartRow, SCROW nEndRow, SCTAB nTab, sal_uInt16 nNewHeight)
Definition: document.cxx:4175
SC_DLLPUBLIC svl::SharedStringPool & GetSharedStringPool()
Definition: documen2.cxx:603
SC_DLLPUBLIC void SetRowHidden(SCROW nStartRow, SCROW nEndRow, SCTAB nTab, bool bHidden)
Definition: document.cxx:4526
SC_DLLPUBLIC SvNumberFormatter * GetFormatTable() const
Definition: documen2.cxx:467
SC_DLLPUBLIC ScRangeName * GetRangeName(SCTAB nTab) const
Definition: documen3.cxx:174
virtual void set_formula(orcus::spreadsheet::formula_grammar_t grammar, std::string_view formula) override
Definition: interface.cxx:1079
virtual void set_range(const orcus::spreadsheet::range_t &range) override
Definition: interface.cxx:1070
ScOrcusArrayFormula(ScOrcusSheet &rSheet)
Definition: interface.cxx:1060
virtual void set_result_empty(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col) override
Definition: interface.cxx:1095
virtual void commit() override
Definition: interface.cxx:1105
ScOrcusSheet & mrSheet
virtual void set_result_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value) override
Definition: interface.cxx:1100
virtual void set_result_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, std::string_view value) override
Definition: interface.cxx:1090
virtual void set_result_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) override
Definition: interface.cxx:1085
formula::FormulaGrammar::Grammar meGrammar
virtual ~ScOrcusArrayFormula() override
Definition: interface.cxx:1068
virtual void set_column(orcus::spreadsheet::col_t col) override
Definition: interface.cxx:2383
virtual void commit() override
Definition: interface.cxx:2399
const ScOrcusGlobalSettings & mrGlobalSettings
virtual void append_column_match_value(std::string_view value) override
Definition: interface.cxx:2388
ScOrcusAutoFilter(const ScOrcusGlobalSettings &rGS)
Definition: interface.cxx:2366
virtual void commit_column() override
Definition: interface.cxx:2394
virtual void set_range(const orcus::spreadsheet::range_t &range) override
Definition: interface.cxx:2375
virtual ~ScOrcusAutoFilter() override
Definition: interface.cxx:2371
virtual ~ScOrcusConditionalFormat() override
Definition: interface.cxx:770
virtual void commit_entry() override
Definition: interface.cxx:891
ScOrcusConditionalFormat(SCTAB nTab, ScDocument &rDoc)
Definition: interface.cxx:762
virtual void set_iconset_reverse(bool reverse) override
Definition: interface.cxx:851
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:820
virtual void set_show_value(bool show) override
Definition: interface.cxx:846
virtual void set_type(orcus::spreadsheet::conditional_format_t type) override
Definition: interface.cxx:867
virtual void set_xf_id(size_t xf) override
Definition: interface.cxx:857
virtual void set_databar_gradient(bool gradient) override
Definition: interface.cxx:808
virtual void commit_format() override
Definition: interface.cxx:909
virtual void set_operator(orcus::spreadsheet::condition_operator_t condition_type) override
Definition: interface.cxx:862
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:827
virtual void set_range(std::string_view range) override
Definition: interface.cxx:896
virtual void set_date(orcus::spreadsheet::condition_date_t date) override
Definition: interface.cxx:791
virtual void set_formula(std::string_view formula) override
Definition: interface.cxx:786
virtual void set_icon_name(std::string_view name) override
Definition: interface.cxx:802
virtual void commit_condition() override
Definition: interface.cxx:797
virtual void set_databar_axis(orcus::spreadsheet::databar_axis_t axis) override
Definition: interface.cxx:814
virtual void set_condition_type(orcus::spreadsheet::condition_type_t type) override
Definition: interface.cxx:780
std::unique_ptr< ScConditionalFormat > mpCurrentFormat
ScFormatEntry::Type meEntryType
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:774
virtual void set_min_databar_length(double length) override
Definition: interface.cxx:834
virtual void set_max_databar_length(double length) override
Definition: interface.cxx:840
ScOrcusGlobalSettings maGlobalSettings
void pushSharedFormulaToken(const ScAddress &rPos, uint32_t nIndex)
Definition: interface.cxx:595
virtual void finalize() override
Definition: interface.cxx:409
StringHashType maStringHash
virtual orcus::spreadsheet::iface::import_shared_strings * get_shared_strings() override
Definition: interface.cxx:394
std::vector< std::unique_ptr< ScOrcusSheet > > maSheets
void pushMatrixFormulaToken(const ScAddress &rPos, const OUString &rFormula, formula::FormulaGrammar::Grammar eGrammar, uint32_t nRowRange, uint32_t nColRange)
Definition: interface.cxx:601
virtual orcus::spreadsheet::iface::import_named_expression * get_named_expression() override
Definition: interface.cxx:399
ScOrcusStyles maStyles
ScDocumentImport maDoc
void pushCellStoreToken(const ScAddress &rPos, uint32_t nStrIndex)
Definition: interface.cxx:573
size_t addString(const OUString &rStr)
Definition: interface.cxx:552
virtual orcus::spreadsheet::iface::import_global_settings * get_global_settings() override
Definition: interface.cxx:389
void pushFillDownCellsToken(const ScAddress &rPos, uint32_t nFillSize)
Definition: interface.cxx:589
void pushFormulaResult(const ScAddress &rPos, double fValue)
Definition: interface.cxx:613
const ScOrcusGlobalSettings & getGlobalSettings() const
Definition: interface.cxx:689
void setStatusIndicator(const css::uno::Reference< css::task::XStatusIndicator > &rIndicator)
Definition: interface.cxx:684
ScOrcusSharedStrings maSharedStrings
ScDocumentImport & getDoc()
Definition: interface.cxx:538
void incrementProgress()
Definition: interface.cxx:665
virtual orcus::spreadsheet::iface::import_styles * get_styles() override
Definition: interface.cxx:404
ScOrcusFactory(ScDocument &rDoc, bool bSkipDefaultStyles=false)
Definition: interface.cxx:307
std::vector< OUString > maStrings
size_t appendString(const OUString &rStr)
Definition: interface.cxx:543
ScOrcusNamedExpression maNamedExpressions
virtual orcus::spreadsheet::iface::import_sheet * append_sheet(orcus::spreadsheet::sheet_t sheet_index, std::string_view sheet_name) override
Definition: interface.cxx:315
CellStoreTokensType maCellStoreTokens
virtual orcus::spreadsheet::iface::import_sheet * get_sheet(std::string_view sheet_name) override
Definition: interface.cxx:352
void pushCellStoreAutoToken(const ScAddress &rPos, const OUString &rVal)
Definition: interface.cxx:567
const OUString * getString(size_t nIndex) const
Definition: interface.cxx:562
css::uno::Reference< css::task::XStatusIndicator > mxStatusIndicator
ScOrcusFormula(ScOrcusSheet &rSheet)
Definition: interface.cxx:943
virtual ~ScOrcusFormula() override
Definition: interface.cxx:953
virtual void set_result_value(double value) override
Definition: interface.cxx:973
virtual void set_formula(orcus::spreadsheet::formula_grammar_t grammar, std::string_view formula) override
Definition: interface.cxx:961
virtual void set_result_bool(bool value) override
Definition: interface.cxx:990
size_t mnSharedFormulaIndex
formula::FormulaGrammar::Grammar meGrammar
virtual void set_result_empty() override
Definition: interface.cxx:985
virtual void set_shared_formula_index(size_t index) override
Definition: interface.cxx:967
ResultType meResType
virtual void set_result_string(std::string_view value) override
Definition: interface.cxx:979
ScOrcusSheet & mrSheet
virtual void set_position(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col) override
Definition: interface.cxx:955
virtual void commit() override
Definition: interface.cxx:996
virtual void set_character_set(orcus::character_set_t cs) override
Definition: interface.cxx:101
orcus::spreadsheet::formula_grammar_t meOrcusGrammar
ScOrcusGlobalSettings(ScDocumentImport &rDoc)
Definition: interface.cxx:88
formula::FormulaGrammar::Grammar getCalcGrammar() const
ScDocumentImport & getDoc() const
virtual orcus::spreadsheet::formula_grammar_t get_default_formula_grammar() const override
Definition: interface.cxx:160
rtl_TextEncoding mnTextEncoding
virtual void set_default_formula_grammar(orcus::spreadsheet::formula_grammar_t grammar) override
Definition: interface.cxx:154
formula::FormulaGrammar::Grammar meCalcGrammar
rtl_TextEncoding getTextEncoding() const
ScDocumentImport & mrDoc
virtual void set_origin_date(int year, int month, int day) override
Definition: interface.cxx:96
void set_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:1908
std::vector< ScOrcusBorder > & mrBorders
void set_style(orcus::spreadsheet::border_direction_t dir, orcus::spreadsheet::border_style_t style) override
Definition: interface.cxx:1839
ScOrcusImportBorderStyle(std::vector< ScOrcusBorder > &rBorders)
Definition: interface.cxx:1834
void set_width(orcus::spreadsheet::border_direction_t dir, double width, orcus::length_unit_t unit) override
Definition: interface.cxx:1921
std::size_t commit() override
Definition: interface.cxx:1927
ScOrcusProtection maCurrentProtection
void set_formula_hidden(bool b) override
Definition: interface.cxx:1960
std::size_t commit() override
Definition: interface.cxx:1965
std::vector< ScOrcusProtection > & mrProtections
void set_hidden(bool b) override
Definition: interface.cxx:1945
ScOrcusImportCellProtection(std::vector< ScOrcusProtection > &rProtections)
Definition: interface.cxx:1935
void set_print_content(bool b) override
Definition: interface.cxx:1955
void set_locked(bool b) override
Definition: interface.cxx:1950
ScOrcusImportFillStyle(std::vector< ScOrcusFill > &rFills)
Definition: interface.cxx:1799
std::size_t commit() override
Definition: interface.cxx:1826
void set_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:1814
std::vector< ScOrcusFill > & mrFills
void set_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:1820
void set_pattern_type(orcus::spreadsheet::fill_pattern_t fp) override
Definition: interface.cxx:1809
void set_underline_type(orcus::spreadsheet::underline_type_t e) override
Definition: interface.cxx:1695
void set_italic_asian(bool b) override
Definition: interface.cxx:1571
void set_italic_complex(bool b) override
Definition: interface.cxx:1576
void set_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:1719
void set_name_complex(std::string_view s) override
Definition: interface.cxx:1593
void set_name(std::string_view s) override
Definition: interface.cxx:1581
void set_size_complex(double point) override
Definition: interface.cxx:1609
void set_strikethrough_type(orcus::spreadsheet::strikethrough_type_t s) override
Definition: interface.cxx:1735
void set_underline_mode(orcus::spreadsheet::underline_mode_t e) override
Definition: interface.cxx:1691
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:1725
void set_size(double point) override
Definition: interface.cxx:1599
void set_strikethrough_text(orcus::spreadsheet::strikethrough_text_t s) override
Definition: interface.cxx:1776
void set_strikethrough_width(orcus::spreadsheet::strikethrough_width_t s) override
Definition: interface.cxx:1764
void set_size_asian(double point) override
Definition: interface.cxx:1604
ScOrcusImportFontStyle(ScOrcusFactory &rFactory, std::vector< ScOrcusFont > &rFonts)
Definition: interface.cxx:1540
std::vector< ScOrcusFont > & mrFonts
void set_strikethrough_style(orcus::spreadsheet::strikethrough_style_t s) override
Definition: interface.cxx:1731
void set_name_asian(std::string_view s) override
Definition: interface.cxx:1587
void set_underline_width(orcus::spreadsheet::underline_width_t e) override
Definition: interface.cxx:1652
void set_bold(bool b) override
Definition: interface.cxx:1551
std::size_t commit() override
Definition: interface.cxx:1791
void set_bold_complex(bool b) override
Definition: interface.cxx:1561
void set_italic(bool b) override
Definition: interface.cxx:1566
void set_bold_asian(bool b) override
Definition: interface.cxx:1556
void set_underline(orcus::spreadsheet::underline_t e) override
Definition: interface.cxx:1614
ScOrcusFactory & mrFactory
void set_identifier(std::size_t id) override
Definition: interface.cxx:1983
ScOrcusImportNumberFormat(ScOrcusFactory &rFactory, std::vector< ScOrcusNumberFormat > &rFormats)
Definition: interface.cxx:1973
ScOrcusNumberFormat maCurrentFormat
void set_code(std::string_view s) override
Definition: interface.cxx:1987
std::size_t commit() override
Definition: interface.cxx:1993
std::vector< ScOrcusNumberFormat > & mrNumberFormats
void set_protection(std::size_t index) override
Definition: interface.cxx:2089
void set_apply_alignment(bool b) override
Definition: interface.cxx:2104
std::vector< ScOrcusXf > * mpXfs
void set_horizontal_alignment(orcus::spreadsheet::hor_alignment_t align) override
Definition: interface.cxx:2109
void set_vertical_alignment(orcus::spreadsheet::ver_alignment_t align) override
Definition: interface.cxx:2138
void set_number_format(std::size_t index) override
Definition: interface.cxx:2094
void set_wrap_text(bool b) override
Definition: interface.cxx:2167
void reset(std::vector< ScOrcusXf > &rXfs)
Definition: interface.cxx:2068
void set_style_xf(std::size_t index) override
Definition: interface.cxx:2099
std::size_t commit() override
Definition: interface.cxx:2177
void set_border(std::size_t index) override
Definition: interface.cxx:2084
void set_font(std::size_t index) override
Definition: interface.cxx:2074
void set_fill(std::size_t index) override
Definition: interface.cxx:2079
void set_shrink_to_fit(bool b) override
Definition: interface.cxx:2172
virtual void set_base_position(const orcus::spreadsheet::src_address_t &pos) override
Definition: interface.cxx:232
const ScOrcusGlobalSettings & mrGlobalSettings
virtual void set_named_range(std::string_view name, std::string_view range) override
Definition: interface.cxx:245
ScDocumentImport & mrDoc
virtual void set_named_expression(std::string_view name, std::string_view expression) override
Definition: interface.cxx:239
ScOrcusNamedExpression(ScDocumentImport &rDoc, const ScOrcusGlobalSettings &rGS, SCTAB nTab=-1)
Definition: interface.cxx:219
virtual void commit() override
Definition: interface.cxx:250
const ScOrcusGlobalSettings & mrGlobalSettings
orcus::spreadsheet::src_range_t resolve_range(std::string_view range) override
Definition: interface.cxx:192
orcus::spreadsheet::src_address_t resolve_address(std::string_view address) override
Definition: interface.cxx:168
ScOrcusRefResolver(const ScOrcusGlobalSettings &rGS)
Definition: interface.cxx:165
virtual void append_segment(std::string_view s) override
Definition: interface.cxx:1321
virtual size_t append(std::string_view s) override
Definition: interface.cxx:1282
virtual void set_segment_italic(bool b) override
Definition: interface.cxx:1302
virtual size_t add(std::string_view s) override
Definition: interface.cxx:1288
OStringBuffer maCurSegment
virtual void set_segment_bold(bool b) override
Definition: interface.cxx:1298
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:1314
ScOrcusFactory & mrFactory
virtual void set_segment_font_size(double point) override
Definition: interface.cxx:1310
virtual size_t commit_segments() override
Definition: interface.cxx:1326
ScOrcusSharedStrings(ScOrcusFactory &rFactory)
Definition: interface.cxx:1279
virtual void set_segment_font(size_t font_index) override
Definition: interface.cxx:1294
virtual void set_segment_font_name(std::string_view s) override
Definition: interface.cxx:1306
virtual void set_column_hidden(orcus::spreadsheet::col_t col, orcus::spreadsheet::col_t col_span, bool hidden) override
Definition: interface.cxx:739
virtual void set_column_width(orcus::spreadsheet::col_t col, orcus::spreadsheet::col_t col_span, double width, orcus::length_unit_t unit) override
Definition: interface.cxx:731
virtual void set_merge_cell_range(const orcus::spreadsheet::range_t &range) override
Definition: interface.cxx:757
virtual void set_row_hidden(orcus::spreadsheet::row_t row, bool hidden) override
Definition: interface.cxx:751
virtual ~ScOrcusSheetProperties() override
Definition: interface.cxx:700
virtual void set_row_height(orcus::spreadsheet::row_t row, double height, orcus::length_unit_t unit) override
Definition: interface.cxx:745
ScOrcusSheetProperties(SCTAB nTab, ScDocumentImport &rDoc)
Definition: interface.cxx:694
ScDocumentImport & mrDoc
virtual orcus::spreadsheet::iface::import_formula * get_formula() override
Definition: interface.cxx:1152
virtual orcus::spreadsheet::iface::import_conditional_format * get_conditional_format() override
Definition: interface.cxx:1142
virtual void set_bool(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, bool value) override
Definition: interface.cxx:1183
ScOrcusSheetProperties maProperties
ScOrcusFactory & mrFactory
void cellInserted()
Definition: interface.cxx:1112
ScDocumentImport & mrDoc
virtual void set_row_format(orcus::spreadsheet::row_t row, std::size_t xf_index) override
Definition: interface.cxx:1240
ScOrcusConditionalFormat maConditionalFormat
SCTAB getIndex() const
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:1258
ScOrcusArrayFormula maArrayFormula
ScOrcusFactory & getFactory()
Definition: interface.cxx:1274
virtual orcus::spreadsheet::iface::import_sheet_properties * get_sheet_properties() override
Definition: interface.cxx:1137
virtual void set_value(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, double value) override
Definition: interface.cxx:1177
virtual void set_auto(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, std::string_view value) override
Definition: interface.cxx:1164
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:1189
virtual orcus::spreadsheet::iface::import_table * get_table() override
Definition: interface.cxx:1132
virtual orcus::spreadsheet::iface::import_array_formula * get_array_formula() override
Definition: interface.cxx:1158
sc::SharedFormulaGroups maFormulaGroups
virtual void set_format(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, size_t xf_index) override
ScOrcusAutoFilter maAutoFilter
const sc::SharedFormulaGroups & getSharedFormulaGroups() const
Definition: interface.cxx:1264
virtual orcus::spreadsheet::iface::import_auto_filter * get_auto_filter() override
Definition: interface.cxx:1127
virtual orcus::spreadsheet::iface::import_named_expression * get_named_expression() override
Definition: interface.cxx:1147
virtual orcus::spreadsheet::range_size_t get_sheet_size() const override
Definition: interface.cxx:1249
ScOrcusNamedExpression maNamedExpressions
ScOrcusFormula maFormula
ScOrcusSheet(ScDocumentImport &rDoc, SCTAB nTab, ScOrcusFactory &rFactory)
Definition: interface.cxx:915
ScDocumentImport & getDoc()
Definition: interface.cxx:1122
virtual void set_column_format(orcus::spreadsheet::col_t col, orcus::spreadsheet::col_t col_span, std::size_t xf_index) override
Definition: interface.cxx:1230
virtual void set_string(orcus::spreadsheet::row_t row, orcus::spreadsheet::col_t col, orcus::spreadsheet::string_id_t sindex) override
Definition: interface.cxx:1171
ScOrcusStyles & mrStyles
virtual orcus::spreadsheet::iface::import_fill_style * start_fill_style() override
Definition: interface.cxx:2289
std::vector< ScOrcusFont > maFonts
std::vector< ScOrcusBorder > maBorders
std::vector< ScOrcusXf > maCellXfs
ScOrcusImportBorderStyle maBorderStyle
void applyXfToItemSet(SfxItemSet &rSet, const ScOrcusXf &rXf)
Definition: interface.cxx:2210
std::vector< ScOrcusNumberFormat > maNumberFormats
virtual void set_border_count(size_t n) override
Definition: interface.cxx:2348
virtual orcus::spreadsheet::iface::import_number_format * start_number_format() override
Definition: interface.cxx:2307
ScOrcusImportCellProtection maCellProtection
ScOrcusStyles(ScOrcusFactory &rFactory, bool bSkipDefaultStyles=false)
Definition: interface.cxx:2184
std::vector< ScOrcusXf > maCellStyleXfs
std::vector< ScOrcusXf > maCellDiffXfs
ScOrcusImportFontStyle maFontStyle
ScOrcusImportFillStyle maFillStyle
std::vector< ScOrcusFill > maFills
ScOrcusFactory & mrFactory
virtual void set_cell_style_count(size_t n) override
Definition: interface.cxx:2360
virtual orcus::spreadsheet::iface::import_cell_style * start_cell_style() override
Definition: interface.cxx:2334
virtual orcus::spreadsheet::iface::import_cell_protection * start_cell_protection() override
Definition: interface.cxx:2301
ScOrcusImportNumberFormat maNumberFormat
ScOrucsImportCellStyle maCellStyle
std::vector< ScOrcusProtection > maProtections
virtual orcus::spreadsheet::iface::import_font_style * start_font_style() override
Definition: interface.cxx:2283
virtual orcus::spreadsheet::iface::import_xf * start_xf(orcus::spreadsheet::xf_category_t cat) override
Definition: interface.cxx:2313
virtual orcus::spreadsheet::iface::import_border_style * start_border_style() override
Definition: interface.cxx:2295
virtual void set_xf_count(orcus::spreadsheet::xf_category_t cat, size_t n) override
Definition: interface.cxx:2356
ScOrcusImportXf maXf
virtual void set_number_format_count(size_t n) override
Definition: interface.cxx:2352
virtual void set_fill_count(size_t n) override
Definition: interface.cxx:2344
virtual void set_font_count(size_t n) override
Definition: interface.cxx:2340
ScOrucsImportCellStyle(ScOrcusFactory &rFactory, ScOrcusStyles &rStyles, const std::vector< ScOrcusXf > &rXfs)
Definition: interface.cxx:2001
void set_display_name(std::string_view s) override
Definition: interface.cxx:2020
void commit() override
Definition: interface.cxx:2042
ScOrcusFactory & mrFactory
ScOrcusCellStyle maCurrentStyle
void set_builtin(std::size_t index) override
Definition: interface.cxx:2031
void set_name(std::string_view s) override
Definition: interface.cxx:2014
ScOrcusStyles & mrStyles
void set_xf(std::size_t index) override
Definition: interface.cxx:2026
const std::vector< ScOrcusXf > & mrXfs
void set_parent_name(std::string_view s) override
Definition: interface.cxx:2036
SfxItemSet & GetItemSet()
Definition: patattr.hxx:155
SC_DLLPUBLIC bool insert(ScRangeData *p, bool bReuseFreeIndex=true)
Insert object into set.
Definition: rangenam.cxx:802
ScAddress aEnd
Definition: address.hxx:498
bool IsValid() const
Definition: address.hxx:544
ScRefFlags Parse(const OUString &, const ScDocument &, 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:1700
ScAddress aStart
Definition: address.hxx:497
static SC_DLLPUBLIC OUString ProgrammaticToDisplayName(const OUString &rProgName, SfxStyleFamily nType)
virtual SfxStyleSheetBase & Make(const OUString &, SfxStyleFamily eFam, SfxStyleSearchBits nMask=SfxStyleSearchBits::All) override
Definition: stlpool.cxx:72
void CreateStandardStyles()
Definition: stlpool.cxx:207
bool HasStandardStyles() const
Definition: stlpool.hxx:51
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
virtual bool SetParent(const OUString &)
virtual SfxItemSet & GetItemSet()
bool PutEntry(OUString &rString, sal_Int32 &nCheckPos, SvNumFormatType &nType, sal_uInt32 &nKey, LanguageType eLnge=LANGUAGE_DONTKNOW, bool bReplaceBooleanEquivalent=true)
const Date & GetNullDate() const
void SetLine(const editeng::SvxBorderLine *pNew, SvxBoxItemLine nLine)
void SetLine(const editeng::SvxBorderLine *pNew)
void SetColor(const Color &rCol)
static AddressConvention extractRefConvention(const Grammar eGrammar)
void set(size_t nSharedId, std::unique_ptr< ScTokenArray > pArray)
const ScTokenArray * get(size_t nSharedId) const
SharedString intern(const OUString &rStr)
sal_uInt16 GetSec() const
static const sal_Int64 nanoSecPerSec
sal_uInt16 GetMin() const
static const sal_Int64 secondPerMinute
sal_uInt16 GetHour() const
sal_uInt32 GetNanoSec() const
static const sal_Int64 secondPerHour
ColorAlpha
constexpr ::Color COL_BLACK(0x00, 0x00, 0x00)
sal_Int32 mnRow
sal_Int32 mnCol
DocumentType eType
LINESTYLE_BOLDDASHDOT
LINESTYLE_BOLDDASHDOTDOT
LINESTYLE_SINGLE
LINESTYLE_BOLDLONGDASH
LINESTYLE_BOLDWAVE
LINESTYLE_DASHDOTDOT
LINESTYLE_BOLDDASH
LINESTYLE_BOLDDOTTED
LINESTYLE_DOUBLEWAVE
LINESTYLE_DOUBLE
LINESTYLE_NONE
LINESTYLE_DASH
LINESTYLE_DASHDOT
LINESTYLE_DOTTED
LINESTYLE_WAVE
LINESTYLE_LONGDASH
LINESTYLE_BOLD
STRIKEOUT_BOLD
STRIKEOUT_DOUBLE
STRIKEOUT_SINGLE
STRIKEOUT_X
STRIKEOUT_SLASH
STRIKEOUT_NONE
STRIKEOUT_DONTKNOW
PITCH_DONTKNOW
FontItalic
ITALIC_NORMAL
ITALIC_NONE
FAMILY_DONTKNOW
WEIGHT_BOLD
WEIGHT_NORMAL
#define DATE_TIME_FACTOR
Definition: globalnames.hxx:21
const char * name
sal_Int32 nIndex
OUString aName
#define LANGUAGE_ENGLISH_US
sal_uInt16 nPos
#define SAL_WARN(area, stream)
#define SAL_INFO(area, stream)
aStr
RttiCompleteObjectLocator col
SvGenericNameContainerMapImpl maProperties
def point()
Type
index
const sal_Int16 API_LINE_THICK
const sal_Int16 API_LINE_MEDIUM
const sal_Int16 API_LINE_THIN
const sal_Int16 API_LINE_NONE
Font auto color (system window text color).
const sal_Int16 API_LINE_HAIR
FontWeight
long Long
OUString ScResId(TranslateId aId)
Definition: scdll.cxx:90
constexpr TypedWhichId< SvxFontHeightItem > ATTR_FONT_HEIGHT(101)
constexpr TypedWhichId< SvxFontItem > ATTR_CJK_FONT(111)
constexpr TypedWhichId< SvxPostureItem > ATTR_CTL_FONT_POSTURE(119)
constexpr TypedWhichId< SvxFontItem > ATTR_CTL_FONT(116)
constexpr TypedWhichId< SvxFontHeightItem > ATTR_CJK_FONT_HEIGHT(112)
constexpr TypedWhichId< SvxPostureItem > ATTR_FONT_POSTURE(103)
constexpr TypedWhichId< SvxWeightItem > ATTR_FONT_WEIGHT(102)
constexpr TypedWhichId< SvxColorItem > ATTR_FONT_COLOR(109)
constexpr TypedWhichId< SvxWeightItem > ATTR_CJK_FONT_WEIGHT(113)
constexpr TypedWhichId< SvxLineItem > ATTR_BORDER_TLBR(141)
constexpr TypedWhichId< SvxBrushItem > ATTR_BACKGROUND(148)
constexpr TypedWhichId< SvxJustifyMethodItem > ATTR_VER_JUSTIFY_METHOD(133)
constexpr TypedWhichId< SvxHorJustifyItem > ATTR_HOR_JUSTIFY(129)
constexpr TypedWhichId< SvxBoxItem > ATTR_BORDER(150)
constexpr TypedWhichId< SvxJustifyMethodItem > ATTR_HOR_JUSTIFY_METHOD(130)
constexpr TypedWhichId< SfxUInt32Item > ATTR_VALUE_FORMAT(146)
constexpr TypedWhichId< SvxCrossedOutItem > ATTR_FONT_CROSSEDOUT(106)
constexpr TypedWhichId< SvxLineItem > ATTR_BORDER_BLTR(142)
constexpr TypedWhichId< SvxVerJustifyItem > ATTR_VER_JUSTIFY(132)
constexpr TypedWhichId< SvxFontItem > ATTR_FONT(100)
constexpr TypedWhichId< SvxWeightItem > ATTR_CTL_FONT_WEIGHT(118)
constexpr TypedWhichId< SvxPostureItem > ATTR_CJK_FONT_POSTURE(114)
constexpr TypedWhichId< SvxFontHeightItem > ATTR_CTL_FONT_HEIGHT(117)
constexpr TypedWhichId< SvxUnderlineItem > ATTR_FONT_UNDERLINE(104)
static SfxItemSet & rSet
std::optional< Color > maColor
std::optional< SvxBorderLineStyle > meStyle
std::optional< double > mnWidth
std::map< orcus::spreadsheet::border_direction_t, BorderLine > maBorders
void applyToItemSet(SfxItemSet &rSet) const
Definition: interface.cxx:1426
std::size_t mnBuiltInId
CellStoreToken(const ScAddress &rPos, Type eType)
Definition: interface.cxx:265
formula::FormulaGrammar::Grammar meGrammar
void applyToItemSet(SfxItemSet &rSet) const
Definition: interface.cxx:1417
std::optional< Color > maBgColor
std::optional< orcus::spreadsheet::fill_pattern_t > mePattern
std::optional< Color > maFgColor
std::optional< bool > mbItalic
std::optional< double > mnSize
std::optional< double > mnSizeAsian
std::optional< FontLineStyle > meUnderline
std::optional< Color > maUnderlineColor
void applyToItemSet(SfxItemSet &rSet) const
Definition: interface.cxx:1333
std::optional< bool > mbItalicComplex
std::optional< OUString > maNameComplex
std::optional< FontStrikeout > meStrikeout
std::optional< bool > mbBoldComplex
std::optional< bool > mbBold
std::optional< OUString > maNameAsian
std::optional< OUString > maName
std::optional< Color > maColor
std::optional< bool > mbBoldAsian
std::optional< bool > mbItalicAsian
std::optional< double > mnSizeComplex
void applyToItemSet(SfxItemSet &rSet, const ScDocument &rDoc) const
Definition: interface.cxx:1500
std::optional< OUString > maCode
std::optional< bool > mbLocked
void applyToItemSet(SfxItemSet &rSet) const
Definition: interface.cxx:1488
std::optional< bool > mbPrintContent
std::optional< bool > mbFormulaHidden
std::optional< bool > mbHidden
std::size_t mnStyleXf
bool mbApplyAlignment
std::size_t mnBorderId
SvxCellVerJustify meVerAlignment
std::size_t mnFontId
SvxCellJustifyMethod meVerAlignMethod
std::size_t mnNumberFormatId
std::size_t mnProtectionId
std::optional< bool > mbShrinkToFit
SvxCellHorJustify meHorAlignment
std::optional< bool > mbWrapText
std::size_t mnFillId
SvxCellJustifyMethod meHorAlignMethod
constexpr OUStringLiteral SC_STYLE_PROG_STANDARD
Definition: stylehelper.hxx:30
SvxCellJustifyMethod
SvxCellHorJustify
SvxCellVerJustify
sal_Int16 SCTAB
Definition: types.hxx:22
ResultType type
size_t pos
RedlineType meType
SvNumFormatType