LCOV - code coverage report
Current view: top level - sc/source/filter/orcus - interface.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 1 324 0.3 %
Date: 2015-06-13 12:38:46 Functions: 2 103 1.9 %
Legend: Lines: hit not hit

          Line data    Source code
       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 "orcusinterface.hxx"
      11             : 
      12             : #include "document.hxx"
      13             : #include "formulacell.hxx"
      14             : #include "rangenam.hxx"
      15             : #include "tokenarray.hxx"
      16             : #include "globalnames.hxx"
      17             : #include "docoptio.hxx"
      18             : #include "globstr.hrc"
      19             : #include "compiler.hxx"
      20             : 
      21             : #include <formula/token.hxx>
      22             : #include <tools/datetime.hxx>
      23             : #include <svl/sharedstringpool.hxx>
      24             : 
      25             : #include <com/sun/star/task/XStatusIndicator.hpp>
      26             : 
      27             : using namespace com::sun::star;
      28             : 
      29             : namespace os = orcus::spreadsheet;
      30             : 
      31           0 : ScOrcusGlobalSettings::ScOrcusGlobalSettings(ScDocumentImport& rDoc) : mrDoc(rDoc) {}
      32             : 
      33           0 : void ScOrcusGlobalSettings::set_origin_date(int year, int month, int day)
      34             : {
      35           0 :     mrDoc.setOriginDate(year, month, day);
      36           0 : }
      37             : 
      38           0 : void ScOrcusGlobalSettings::set_default_formula_grammar(orcus::spreadsheet::formula_grammar_t /*grammar*/)
      39             : {
      40           0 : }
      41             : 
      42           0 : orcus::spreadsheet::formula_grammar_t ScOrcusGlobalSettings::get_default_formula_grammar() const
      43             : {
      44           0 :     return orcus::spreadsheet::formula_grammar_unknown;
      45             : }
      46             : 
      47           0 : ScOrcusFactory::StringCellCache::StringCellCache(const ScAddress& rPos, size_t nIndex) :
      48           0 :     maPos(rPos), mnIndex(nIndex) {}
      49             : 
      50           0 : ScOrcusFactory::ScOrcusFactory(ScDocument& rDoc) :
      51             :     maDoc(rDoc),
      52             :     maGlobalSettings(maDoc),
      53             :     maSharedStrings(*this),
      54           0 :     mnProgress(0) {}
      55             : 
      56           0 : orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::append_sheet(const char* sheet_name, size_t sheet_name_length)
      57             : {
      58           0 :     OUString aTabName(sheet_name, sheet_name_length, RTL_TEXTENCODING_UTF8);
      59           0 :     if (!maDoc.appendSheet(aTabName))
      60           0 :         return NULL;
      61             : 
      62           0 :     SCTAB nTab = maDoc.getSheetCount() - 1;
      63           0 :     maSheets.push_back(new ScOrcusSheet(maDoc, nTab, *this));
      64           0 :     return &maSheets.back();
      65             : }
      66             : 
      67             : class FindSheetByIndex : std::unary_function<ScOrcusSheet, bool>
      68             : {
      69             :     SCTAB mnTab;
      70             : public:
      71           0 :     FindSheetByIndex(SCTAB nTab) : mnTab(nTab) {}
      72           0 :     bool operator() (const ScOrcusSheet& rSheet) const
      73             :     {
      74           0 :         return rSheet.getIndex() == mnTab;
      75             :     }
      76             : };
      77             : 
      78           0 : orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::get_sheet(const char* sheet_name, size_t sheet_name_length)
      79             : {
      80           0 :     OUString aTabName(sheet_name, sheet_name_length, RTL_TEXTENCODING_UTF8);
      81           0 :     SCTAB nTab = maDoc.getSheetIndex(aTabName);
      82           0 :     if (nTab < 0)
      83             :         // Sheet by that name not found.
      84           0 :         return NULL;
      85             : 
      86             :     // See if we already have an orcus sheet instance by that index.
      87             :     boost::ptr_vector<ScOrcusSheet>::iterator it =
      88           0 :         std::find_if(maSheets.begin(), maSheets.end(), FindSheetByIndex(nTab));
      89             : 
      90           0 :     if (it != maSheets.end())
      91             :         // We already have one. Return it.
      92           0 :         return &(*it);
      93             : 
      94             :     // Create a new orcus sheet instance for this.
      95           0 :     maSheets.push_back(new ScOrcusSheet(maDoc, nTab, *this));
      96           0 :     return &maSheets.back();
      97             : }
      98             : 
      99           0 : orcus::spreadsheet::iface::import_sheet* ScOrcusFactory::get_sheet(orcus::spreadsheet::sheet_t sheet_index)
     100             : {
     101           0 :     SCTAB nTab = static_cast<SCTAB>(sheet_index);
     102             :     // See if we already have an orcus sheet instance by that index.
     103             :     boost::ptr_vector<ScOrcusSheet>::iterator it =
     104           0 :         std::find_if(maSheets.begin(), maSheets.end(), FindSheetByIndex(nTab));
     105             : 
     106           0 :     if (it != maSheets.end())
     107             :         // We already have one. Return it.
     108           0 :         return &(*it);
     109             : 
     110             :     // Create a new orcus sheet instance for this.
     111           0 :     maSheets.push_back(new ScOrcusSheet(maDoc, nTab, *this));
     112           0 :     return &maSheets.back();
     113             : 
     114             : }
     115             : 
     116           0 : orcus::spreadsheet::iface::import_global_settings* ScOrcusFactory::get_global_settings()
     117             : {
     118           0 :     return &maGlobalSettings;
     119             : }
     120             : 
     121           0 : orcus::spreadsheet::iface::import_shared_strings* ScOrcusFactory::get_shared_strings()
     122             : {
     123           0 :     return &maSharedStrings;
     124             : }
     125             : 
     126           0 : orcus::spreadsheet::iface::import_styles* ScOrcusFactory::get_styles()
     127             : {
     128           0 :     return &maStyles;
     129             : }
     130             : 
     131           0 : void ScOrcusFactory::finalize()
     132             : {
     133           0 :     int nCellCount = 0;
     134           0 :     StringCellCaches::const_iterator it = maStringCells.begin(), itEnd = maStringCells.end();
     135           0 :     for (; it != itEnd; ++it)
     136             :     {
     137           0 :         if (it->mnIndex >= maStrings.size())
     138             :             // String index out-of-bound!  Something is up.
     139           0 :             continue;
     140             : 
     141           0 :         maDoc.setStringCell(it->maPos, maStrings[it->mnIndex]);
     142           0 :         ++nCellCount;
     143           0 :         if (nCellCount == 100000)
     144             :         {
     145           0 :             incrementProgress();
     146           0 :             nCellCount = 0;
     147             :         }
     148             :     }
     149             : 
     150           0 :     if (mxStatusIndicator.is())
     151           0 :         mxStatusIndicator->end();
     152             : 
     153           0 :     maDoc.finalize();
     154           0 : }
     155             : 
     156           0 : size_t ScOrcusFactory::appendString(const OUString& rStr)
     157             : {
     158           0 :     size_t nPos = maStrings.size();
     159           0 :     maStrings.push_back(rStr);
     160           0 :     maStringHash.insert(StringHashType::value_type(rStr, nPos));
     161             : 
     162           0 :     return nPos;
     163             : }
     164             : 
     165           0 : size_t ScOrcusFactory::addString(const OUString& rStr)
     166             : {
     167             :     // Add only if the string is not yet present in the string pool.
     168           0 :     StringHashType::iterator it = maStringHash.find(rStr);
     169           0 :     if (it != maStringHash.end())
     170           0 :         return it->second;
     171             : 
     172           0 :     return appendString(rStr);
     173             : }
     174             : 
     175           0 : void ScOrcusFactory::pushStringCell(const ScAddress& rPos, size_t nStrIndex)
     176             : {
     177           0 :     maStringCells.push_back(StringCellCache(rPos, nStrIndex));
     178           0 : }
     179             : 
     180           0 : void ScOrcusFactory::incrementProgress()
     181             : {
     182           0 :     if (!mxStatusIndicator.is())
     183             :         // Status indicator object not set.
     184           0 :         return;
     185             : 
     186             :     // For now, we'll hard-code the progress range to be 100, and stops at 99
     187             :     // in all cases.
     188             : 
     189           0 :     if (!mnProgress)
     190           0 :         mxStatusIndicator->start(ScGlobal::GetRscString(STR_LOAD_DOC), 100);
     191             : 
     192           0 :     if (mnProgress == 99)
     193           0 :         return;
     194             : 
     195           0 :     ++mnProgress;
     196           0 :     mxStatusIndicator->setValue(mnProgress);
     197             : }
     198             : 
     199           0 : void ScOrcusFactory::setStatusIndicator(const uno::Reference<task::XStatusIndicator>& rIndicator)
     200             : {
     201           0 :     mxStatusIndicator = rIndicator;
     202           0 : }
     203             : 
     204           0 : ScOrcusSheet::ScOrcusSheet(ScDocumentImport& rDoc, SCTAB nTab, ScOrcusFactory& rFactory) :
     205           0 :     mrDoc(rDoc), mnTab(nTab), mrFactory(rFactory), maAutoFilter(rDoc.getDoc()), mnCellCount(0) {}
     206             : 
     207           0 : void ScOrcusSheet::cellInserted()
     208             : {
     209           0 :     ++mnCellCount;
     210           0 :     if (mnCellCount == 100000)
     211             :     {
     212           0 :         mrFactory.incrementProgress();
     213           0 :         mnCellCount = 0;
     214             :     }
     215           0 : }
     216             : 
     217           0 : void ScOrcusSheet::set_auto(os::row_t row, os::col_t col, const char* p, size_t n)
     218             : {
     219           0 :     OUString aVal(p, n, RTL_TEXTENCODING_UTF8);
     220           0 :     mrDoc.setAutoInput(ScAddress(col, row, mnTab), aVal);
     221           0 :     cellInserted();
     222           0 : }
     223             : 
     224           0 : void ScOrcusSheet::set_string(os::row_t row, os::col_t col, size_t sindex)
     225             : {
     226             :     // We need to defer string cells since the shared string pool is not yet
     227             :     // populated at the time this method is called.  Orcus imports string
     228             :     // table after the cells get imported.  We won't need to do this once we
     229             :     // implement true shared strings in Calc core.
     230             : 
     231           0 :     mrFactory.pushStringCell(ScAddress(col, row, mnTab), sindex);
     232           0 :     cellInserted();
     233           0 : }
     234             : 
     235           0 : void ScOrcusSheet::set_value(os::row_t row, os::col_t col, double value)
     236             : {
     237           0 :     mrDoc.setNumericCell(ScAddress(col, row, mnTab), value);
     238           0 :     cellInserted();
     239           0 : }
     240             : 
     241           0 : void ScOrcusSheet::set_bool(os::row_t row, os::col_t col, bool value)
     242             : {
     243           0 :     mrDoc.setNumericCell(ScAddress(col, row, mnTab), value ? 1.0 : 0.0);
     244           0 :     cellInserted();
     245           0 : }
     246             : 
     247           0 : void ScOrcusSheet::set_date_time(
     248             :     os::row_t row, os::col_t col, int year, int month, int day, int hour, int minute, double second)
     249             : {
     250           0 :     SvNumberFormatter* pFormatter = mrDoc.getDoc().GetFormatTable();
     251             : 
     252           0 :     Date aDate(day, month, year);
     253           0 :     sal_uInt32 nSec = floor(second);
     254           0 :     sal_uInt32 nNanoSec = (second - nSec) * ::tools::Time::nanoSecPerSec;
     255           0 :     tools::Time aTime(hour, minute, nSec, nNanoSec);
     256           0 :     Date aNullDate(*pFormatter->GetNullDate());
     257           0 :     long nDateDiff = aDate - aNullDate;
     258             : 
     259             :     double fTime =
     260           0 :         static_cast<double>(aTime.GetNanoSec()) / ::tools::Time::nanoSecPerSec +
     261           0 :         aTime.GetSec() +
     262           0 :         aTime.GetMin() * ::tools::Time::secondPerMinute +
     263           0 :         aTime.GetHour() * ::tools::Time::secondPerHour;
     264             : 
     265           0 :     fTime /= DATE_TIME_FACTOR;
     266             : 
     267           0 :     mrDoc.setNumericCell(ScAddress(col, row, mnTab), nDateDiff + fTime);
     268           0 :     cellInserted();
     269           0 : }
     270             : 
     271           0 : void ScOrcusSheet::set_format(os::row_t /*row*/, os::col_t /*col*/, size_t /*xf_index*/)
     272             : {
     273           0 : }
     274             : 
     275           0 : void ScOrcusSheet::set_format(os::row_t /*row*/, os::col_t /*col*/,
     276             :         os::row_t /*row_end*/, os::col_t /*col_end*/, size_t /*xf_index*/)
     277             : {
     278           0 : }
     279             : 
     280             : namespace {
     281             : 
     282           0 : formula::FormulaGrammar::Grammar getCalcGrammarFromOrcus( os::formula_grammar_t grammar )
     283             : {
     284           0 :     formula::FormulaGrammar::Grammar eGrammar = formula::FormulaGrammar::GRAM_ODFF;
     285           0 :     switch(grammar)
     286             :     {
     287             :         case orcus::spreadsheet::formula_grammar_ods:
     288           0 :             eGrammar = formula::FormulaGrammar::GRAM_ODFF;
     289           0 :             break;
     290             :         case orcus::spreadsheet::formula_grammar_xlsx_2007:
     291             :         case orcus::spreadsheet::formula_grammar_xlsx_2010:
     292           0 :             eGrammar = formula::FormulaGrammar::GRAM_OOXML;
     293           0 :             break;
     294             :         case orcus::spreadsheet::formula_grammar_gnumeric:
     295           0 :             eGrammar = formula::FormulaGrammar::GRAM_ENGLISH_XL_A1;
     296           0 :             break;
     297             :         case orcus::spreadsheet::formula_grammar_unknown:
     298           0 :             break;
     299             :     }
     300             : 
     301           0 :     return eGrammar;
     302             : }
     303             : 
     304             : }
     305             : 
     306           0 : void ScOrcusSheet::set_formula(
     307             :     os::row_t row, os::col_t col, os::formula_grammar_t grammar, const char* p, size_t n)
     308             : {
     309           0 :     OUString aFormula(p, n, RTL_TEXTENCODING_UTF8);
     310           0 :     formula::FormulaGrammar::Grammar eGrammar = getCalcGrammarFromOrcus( grammar );
     311           0 :     mrDoc.setFormulaCell(ScAddress(col,row,mnTab), aFormula, eGrammar);
     312           0 :     cellInserted();
     313           0 : }
     314             : 
     315           0 : void ScOrcusSheet::set_formula_result(os::row_t row, os::col_t col, const char* p, size_t n)
     316             : {
     317           0 :     ScFormulaCell* pCell = mrDoc.getDoc().GetFormulaCell(ScAddress(col, row, mnTab));
     318           0 :     if (!pCell)
     319             :     {
     320             :         SAL_WARN("sc", "trying to set formula result for non formula \
     321             :                 cell! Col: " << col << ";Row: " << row << ";Tab: " << mnTab);
     322           0 :         return;
     323             :     }
     324           0 :     OUString aResult( p, n, RTL_TEXTENCODING_UTF8);
     325           0 :     pCell->SetHybridString(mrDoc.getDoc().GetSharedStringPool().intern(aResult));
     326             : }
     327             : 
     328           0 : void ScOrcusSheet::set_formula_result(os::row_t row, os::col_t col, double /*val*/)
     329             : {
     330           0 :     ScFormulaCell* pCell = mrDoc.getDoc().GetFormulaCell(ScAddress(col, row, mnTab));
     331           0 :     if (!pCell)
     332             :     {
     333             :         SAL_WARN("sc", "trying to set formula result for non formula \
     334             :                 cell! Col: " << col << ";Row: " << row << ";Tab: " << mnTab);
     335           0 :         return;
     336             :     }
     337             : 
     338             :     // TODO: FIXME
     339             : }
     340             : 
     341           0 : void ScOrcusSheet::set_shared_formula(
     342             :     os::row_t row, os::col_t col, os::formula_grammar_t grammar, size_t sindex,
     343             :     const char* p_formula, size_t n_formula)
     344             : {
     345           0 :     ScAddress aPos(col, row, mnTab);
     346           0 :     OUString aFormula(p_formula, n_formula, RTL_TEXTENCODING_UTF8);
     347           0 :     formula::FormulaGrammar::Grammar eGram = getCalcGrammarFromOrcus(grammar);
     348             : 
     349             :     // Compile the formula expression into tokens.
     350           0 :     ScCompiler aComp(&mrDoc.getDoc(), aPos);
     351           0 :     aComp.SetGrammar(eGram);
     352           0 :     ScTokenArray* pArray = aComp.CompileString(aFormula);
     353           0 :     if (!pArray)
     354             :         // Tokenization failed.
     355           0 :         return;
     356             : 
     357           0 :     maFormulaGroups.set(sindex, pArray);
     358             : 
     359           0 :     ScFormulaCell* pCell = new ScFormulaCell(&mrDoc.getDoc(), aPos, *pArray);
     360           0 :     mrDoc.setFormulaCell(aPos, pCell);
     361           0 :     cellInserted();
     362             : 
     363             :     // For now, orcus doesn't support setting cached result. Mark it for re-calculation.
     364           0 :     pCell->SetDirty(true);
     365             : }
     366             : 
     367           0 : void ScOrcusSheet::set_shared_formula(
     368             :     os::row_t row, os::col_t col, os::formula_grammar_t grammar, size_t sindex,
     369             :     const char* p_formula, size_t n_formula, const char* /*p_range*/, size_t /*n_range*/)
     370             : {
     371           0 :     set_shared_formula(row, col, grammar, sindex, p_formula, n_formula);
     372           0 : }
     373             : 
     374           0 : void ScOrcusSheet::set_shared_formula(os::row_t row, os::col_t col, size_t sindex)
     375             : {
     376           0 :     ScAddress aPos(col, row, mnTab);
     377             : 
     378           0 :     const ScTokenArray* pArray = maFormulaGroups.get(sindex);
     379           0 :     if (!pArray)
     380           0 :         return;
     381             : 
     382           0 :     ScFormulaCell* pCell = new ScFormulaCell(&mrDoc.getDoc(), aPos, *pArray);
     383           0 :     mrDoc.setFormulaCell(aPos, pCell);
     384           0 :     cellInserted();
     385             : 
     386             :     // For now, orcus doesn't support setting cached result. Mark it for re-calculation.
     387           0 :     pCell->SetDirty(true);
     388             : }
     389             : 
     390           0 : void ScOrcusSheet::set_array_formula(
     391             :     os::row_t row, os::col_t col, os::formula_grammar_t grammar,
     392             :     const char* p, size_t n, os::row_t array_rows, os::col_t array_cols)
     393             : {
     394           0 :     formula::FormulaGrammar::Grammar eGrammar = getCalcGrammarFromOrcus( grammar );
     395           0 :     OUString aFormula(p, n, RTL_TEXTENCODING_UTF8);
     396             : 
     397           0 :     ScRange aRange(col, row, mnTab, col+array_cols, row + array_rows, mnTab);
     398             : 
     399           0 :     ScCompiler aComp(&mrDoc.getDoc(), aRange.aStart);
     400           0 :     aComp.SetGrammar(eGrammar);
     401           0 :     boost::scoped_ptr<ScTokenArray> pArray(aComp.CompileString(aFormula));
     402           0 :     if (!pArray)
     403           0 :         return;
     404             : 
     405           0 :     mrDoc.setMatrixCells(aRange, *pArray, eGrammar);
     406             : }
     407             : 
     408           0 : void ScOrcusSheet::set_array_formula(
     409             :     os::row_t /*row*/, os::col_t /*col*/, os::formula_grammar_t /*grammar*/,
     410             :     const char* /*p*/, size_t /*n*/, const char* /*p_range*/, size_t /*n_range*/)
     411             : {
     412           0 : }
     413             : 
     414           0 : ScOrcusSharedStrings::ScOrcusSharedStrings(ScOrcusFactory& rFactory) :
     415           0 :     mrFactory(rFactory) {}
     416             : 
     417           0 : size_t ScOrcusSharedStrings::append(const char* s, size_t n)
     418             : {
     419           0 :     OUString aNewString(s, n, RTL_TEXTENCODING_UTF8);
     420           0 :     return mrFactory.appendString(aNewString);
     421             : }
     422             : 
     423           0 : size_t ScOrcusSharedStrings::add(const char* s, size_t n)
     424             : {
     425           0 :     OUString aNewString(s, n, RTL_TEXTENCODING_UTF8);
     426           0 :     return mrFactory.addString(aNewString);
     427             : }
     428             : 
     429           0 : void ScOrcusSharedStrings::set_segment_font(size_t /*font_index*/)
     430             : {
     431           0 : }
     432             : 
     433           0 : void ScOrcusSharedStrings::set_segment_bold(bool /*b*/)
     434             : {
     435           0 : }
     436             : 
     437           0 : void ScOrcusSharedStrings::set_segment_italic(bool /*b*/)
     438             : {
     439           0 : }
     440             : 
     441           0 : void ScOrcusSharedStrings::set_segment_font_name(const char* /*s*/, size_t /*n*/)
     442             : {
     443           0 : }
     444             : 
     445           0 : void ScOrcusSharedStrings::set_segment_font_size(double /*point*/)
     446             : {
     447           0 : }
     448             : 
     449           0 : void ScOrcusSharedStrings::set_segment_font_color(orcus::spreadsheet::color_elem_t,
     450             :             orcus::spreadsheet::color_elem_t,
     451             :             orcus::spreadsheet::color_elem_t,
     452             :             orcus::spreadsheet::color_elem_t)
     453             : {
     454           0 : }
     455             : 
     456           0 : void ScOrcusSharedStrings::append_segment(const char* s, size_t n)
     457             : {
     458           0 :     maCurSegment.append(s, n);
     459           0 : }
     460             : 
     461           0 : size_t ScOrcusSharedStrings::commit_segments()
     462             : {
     463           0 :     OString aStr = maCurSegment.makeStringAndClear();
     464           0 :     return mrFactory.addString(OStringToOUString(aStr, RTL_TEXTENCODING_UTF8));
     465             : }
     466             : 
     467           0 : void ScOrcusStyles::set_font_count(size_t /*n*/)
     468             : {
     469             :     // needed at all?
     470           0 : }
     471             : 
     472           0 : void ScOrcusStyles::set_font_bold(bool /*b*/)
     473             : {
     474           0 : }
     475             : 
     476           0 : void ScOrcusStyles::set_font_italic(bool /*b*/)
     477             : {
     478           0 : }
     479             : 
     480           0 : void ScOrcusStyles::set_font_name(const char* /*s*/, size_t /*n*/)
     481             : {
     482           0 : }
     483             : 
     484           0 : void ScOrcusStyles::set_font_size(double /*point*/)
     485             : {
     486           0 : }
     487             : 
     488           0 : void ScOrcusStyles::set_font_underline(orcus::spreadsheet::underline_t /*e*/)
     489             : {
     490           0 : }
     491             : 
     492           0 : void ScOrcusStyles::set_font_color(orcus::spreadsheet::color_elem_t,
     493             :             orcus::spreadsheet::color_elem_t,
     494             :             orcus::spreadsheet::color_elem_t,
     495             :             orcus::spreadsheet::color_elem_t)
     496             : {
     497           0 : }
     498             : 
     499           0 : size_t ScOrcusStyles::commit_font()
     500             : {
     501           0 :     return 0;
     502             : }
     503             : 
     504             : // fill
     505             : 
     506           0 : void ScOrcusStyles::set_fill_count(size_t /*n*/)
     507             : {
     508             :     // needed at all?
     509           0 : }
     510             : 
     511           0 : void ScOrcusStyles::set_fill_pattern_type(const char* /*s*/, size_t /*n*/)
     512             : {
     513           0 : }
     514             : 
     515           0 : void ScOrcusStyles::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*/)
     516             : {
     517           0 : }
     518             : 
     519           0 : void ScOrcusStyles::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*/)
     520             : {
     521           0 : }
     522             : 
     523           0 : size_t ScOrcusStyles::commit_fill()
     524             : {
     525           0 :     return 0;
     526             : }
     527             : 
     528             : // border
     529             : 
     530           0 : void ScOrcusStyles::set_border_count(size_t /*n*/)
     531             : {
     532             :     // needed at all?
     533           0 : }
     534             : 
     535           0 : void ScOrcusStyles::set_border_style(orcus::spreadsheet::border_direction_t /*dir*/, const char* /*s*/, size_t /*n*/)
     536             : {
     537             :     // implement later
     538           0 : }
     539             : 
     540           0 : void ScOrcusStyles::set_border_color(orcus::spreadsheet::border_direction_t /*dir*/,
     541             :             orcus::spreadsheet::color_elem_t,
     542             :             orcus::spreadsheet::color_elem_t,
     543             :             orcus::spreadsheet::color_elem_t,
     544             :             orcus::spreadsheet::color_elem_t)
     545             : {
     546             :     // implement later
     547           0 : }
     548             : 
     549           0 : size_t ScOrcusStyles::commit_border()
     550             : {
     551           0 :     return 0;
     552             : }
     553             : 
     554             : // cell protection
     555           0 : void ScOrcusStyles::set_cell_hidden(bool /*b*/)
     556             : {
     557           0 : }
     558             : 
     559           0 : void ScOrcusStyles::set_cell_locked(bool /*b*/)
     560             : {
     561           0 : }
     562             : 
     563           0 : size_t ScOrcusStyles::commit_cell_protection()
     564             : {
     565           0 :     return 0;
     566             : }
     567             : 
     568           0 : void ScOrcusStyles::set_number_format_count(size_t)
     569             : {
     570           0 : }
     571             : 
     572           0 : void ScOrcusStyles::set_number_format_identifier(size_t)
     573             : {
     574           0 : }
     575             : 
     576           0 : void ScOrcusStyles::set_number_format_code(const char* /*s*/, size_t /*n*/)
     577             : {
     578           0 : }
     579             : 
     580           0 : size_t ScOrcusStyles::commit_number_format()
     581             : {
     582           0 :     return 0;
     583             : }
     584             : 
     585             : // cell style xf
     586             : 
     587           0 : void ScOrcusStyles::set_cell_style_xf_count(size_t /*n*/)
     588             : {
     589             :     // needed at all?
     590           0 : }
     591             : 
     592           0 : size_t ScOrcusStyles::commit_cell_style_xf()
     593             : {
     594           0 :     return 0;
     595             : }
     596             : 
     597             : // cell xf
     598             : 
     599           0 : void ScOrcusStyles::set_cell_xf_count(size_t /*n*/)
     600             : {
     601             :     // needed at all?
     602           0 : }
     603             : 
     604           0 : size_t ScOrcusStyles::commit_cell_xf()
     605             : {
     606           0 :     return 0;
     607             : }
     608             : 
     609             : // dxf
     610             : 
     611           0 : void ScOrcusStyles::set_dxf_count(size_t /*n*/)
     612             : {
     613           0 : }
     614             : 
     615           0 : size_t ScOrcusStyles::commit_dxf()
     616             : {
     617           0 :     return 0;
     618             : }
     619             : 
     620             : // xf (cell format) - used both by cell xf and cell style xf.
     621             : 
     622           0 : void ScOrcusStyles::set_xf_number_format(size_t /*index*/)
     623             : {
     624             :     // no number format interfaces implemented yet
     625           0 : }
     626             : 
     627           0 : void ScOrcusStyles::set_xf_font(size_t /*index*/)
     628             : {
     629           0 : }
     630             : 
     631           0 : void ScOrcusStyles::set_xf_fill(size_t /*index*/)
     632             : {
     633           0 : }
     634             : 
     635           0 : void ScOrcusStyles::set_xf_border(size_t /*index*/)
     636             : {
     637           0 : }
     638             : 
     639           0 : void ScOrcusStyles::set_xf_protection(size_t /*index*/)
     640             : {
     641           0 : }
     642             : 
     643           0 : void ScOrcusStyles::set_xf_style_xf(size_t /*index*/)
     644             : {
     645           0 : }
     646             : 
     647           0 : void ScOrcusStyles::set_xf_apply_alignment(bool /*b*/)
     648             : {
     649           0 : }
     650             : 
     651           0 : void ScOrcusStyles::set_xf_horizontal_alignment(orcus::spreadsheet::hor_alignment_t /*align*/)
     652             : {
     653           0 : }
     654             : 
     655           0 : void ScOrcusStyles::set_xf_vertical_alignment(orcus::spreadsheet::ver_alignment_t /*align*/)
     656             : {
     657           0 : }
     658             : 
     659             : // cell style entry
     660             : // not needed for now for gnumeric
     661             : 
     662           0 : void ScOrcusStyles::set_cell_style_count(size_t /*n*/)
     663             : {
     664             :     // needed at all?
     665           0 : }
     666             : 
     667           0 : void ScOrcusStyles::set_cell_style_name(const char* /*s*/, size_t /*n*/)
     668             : {
     669           0 : }
     670             : 
     671           0 : void ScOrcusStyles::set_cell_style_xf(size_t /*index*/)
     672             : {
     673           0 : }
     674             : 
     675           0 : void ScOrcusStyles::set_cell_style_builtin(size_t /*index*/)
     676             : {
     677             :     // not needed for gnumeric
     678           0 : }
     679             : 
     680           0 : size_t ScOrcusStyles::commit_cell_style()
     681             : {
     682           0 :     return 0;
     683             : }
     684             : 
     685             : // auto filter import
     686             : 
     687           0 : ScOrcusAutoFilter::ScOrcusAutoFilter(ScDocument& rDoc):
     688           0 :     mrDoc(rDoc)
     689             : {
     690             :     (void)mrDoc;
     691           0 : }
     692             : 
     693           0 : ScOrcusAutoFilter::~ScOrcusAutoFilter()
     694             : {
     695           0 : }
     696             : 
     697           0 : void ScOrcusAutoFilter::set_range(const char* /*p_ref*/, size_t /*n_ref*/)
     698             : {
     699           0 : }
     700             : 
     701           0 : void ScOrcusAutoFilter::set_column(orcus::spreadsheet::col_t /*col*/)
     702             : {
     703           0 : }
     704             : 
     705           0 : void ScOrcusAutoFilter::append_column_match_value(const char* /*p*/, size_t /*n*/)
     706             : {
     707           0 : }
     708             : 
     709           0 : void ScOrcusAutoFilter::commit_column()
     710             : {
     711           0 : }
     712             : 
     713           0 : void ScOrcusAutoFilter::commit()
     714             : {
     715          30 : }
     716             : 
     717             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11