diff options
author | Ivo Hinkelmann <ihi@openoffice.org> | 2009-07-15 14:57:49 +0000 |
---|---|---|
committer | Ivo Hinkelmann <ihi@openoffice.org> | 2009-07-15 14:57:49 +0000 |
commit | d07a61d77a038862ea1d9ca74da7fbd686cffda5 (patch) | |
tree | feea4eef5341d3272c1346f93725f1b4309c3dc9 /sc/source/filter/excel/xichart.cxx | |
parent | 727a8537d3fd571bbeb495f90fd7ced2a95caa49 (diff) |
CWS-TOOLING: integrate CWS dr68
2009-06-19 17:43:48 +0200 oc r273175 : #i102946# some lines for new dialog added
2009-06-19 14:17:45 +0200 oc r273158 : #i102946# three lines added
2009-05-19 11:56:14 +0200 dr r272065 : #i99677# wrong attribute name
2009-05-18 18:37:05 +0200 dr r272045 : #i10000# suncc warning
2009-05-05 16:46:13 +0200 dr r271536 : #i10000# adoptions after rebase to master containing dr67
2009-05-05 16:01:19 +0200 dr r271530 : #i10000# adoptions after rebase to master containing dr67
2009-05-04 14:20:39 +0200 dr r271453 : CWS-TOOLING: rebase CWS dr68 to trunk@271427 (milestone: DEV300:m47)
2009-04-28 17:01:14 +0200 dr r271332 : CWS-TOOLING: rebase CWS dr68 to trunk@270723 (milestone: DEV300:m46)
2009-04-23 12:21:40 +0200 dr r271149 : #i100688# missing checkins
2009-04-23 12:18:16 +0200 dr r271147 : #i100978# relations path handling
2009-04-22 19:25:45 +0200 nn r271136 : #i49491# show navigator for double click on document position status bar control
2009-04-22 11:28:36 +0200 nn r271085 : #i60401# small text change
2009-04-21 16:53:23 +0200 dr r271044 : #i10000# missing dtor
2009-04-20 13:39:25 +0200 nn r270977 : #i60401# add dialog to extend sort range (patch from maoyg)
2009-04-08 12:11:08 +0200 dr r270630 : #i100943# prevent assertion when loading chart with empty category ranges
2009-04-07 19:03:00 +0200 dr r270609 : #i100688# missing bits for OLE
2009-04-07 17:14:06 +0200 dr r270605 : ported fix for #i100710#
2009-04-07 17:12:50 +0200 dr r270604 : #i10000# wae
2009-04-07 15:31:55 +0200 dr r270598 : import system colors moved to FilterBase class, more rework on fill and color contexts
2009-04-06 15:00:03 +0200 dr r270552 : #i99677# prevent recursive loading of the current document
2009-04-03 18:28:42 +0200 dr r270515 : added import of brightness/contrast and mono/grayscale color effects for image shapes
2009-04-03 17:36:03 +0200 dr r270509 : cache already imported embedded graphics
2009-04-03 16:46:34 +0200 dr r270500 : more rework on bitmap fill and graphic object handling
2009-03-31 12:28:10 +0200 dr r270271 : #i10000# unxlngi6 wae
2009-03-31 09:04:10 +0200 dr r270261 : CWS-TOOLING: rebase CWS dr68 to trunk@270033 (milestone: DEV300:m45)
2009-03-30 17:42:05 +0200 dr r270249 : #i91122# add missing doc
2009-03-30 17:37:08 +0200 dr r270248 : #i91122# add missing doc
2009-03-30 16:59:15 +0200 dr r270241 : #i99677# add import of ActiveX scrollbar controls
2009-03-30 14:30:36 +0200 dr r270230 : #i91122# missing/wrong documentation
2009-03-30 13:03:38 +0200 dr r270220 : #i99677# add import of ActiveX combobox and spinbutton controls
2009-03-27 11:46:59 +0100 dr r270144 : #i99677# import ActiveX listbox controls (Forms.ListBox.1)
2009-03-26 19:58:00 +0100 dr r270104 : #i99677# move more OLE import code into ole submodule
2009-03-26 15:15:02 +0100 dr r270082 : #i100546# add import of chart bitmap fills, add import of X/Y offset in tiled bitmap fills of all shapes
2009-03-25 12:54:59 +0100 dr r270018 : #i99677# import ActiveX edit text control (Forms.TextBox.1)
2009-03-24 10:59:29 +0100 dr r269921 : #i99677# moved import of OLE StdHlink to 'ole' submodule, added string import helpers to BinaryStreamBase class, removed implementation of ST_XString import from docprop in favour of the implementation in class AttributeList
2009-03-24 10:40:18 +0100 dr r269919 : #i100502# implicit precedence of '&&' was intended
2009-03-24 10:18:29 +0100 dr r269917 : #i100502# missing parentheses
2009-03-23 15:17:48 +0100 dr r269876 : #i99677# more code reorg, added graphic helper and OLE helper object per filter, added OLE/control import to PPTX/XLSX filter, moved helpers from XmlFilterBase to FilterBase
2009-03-19 12:45:20 +0100 dr r269740 : #i99677# interface changes in oox
2009-03-18 15:51:50 +0100 dr r269683 : #i99677# improved relation handling (internal/external), added preprocessor for VML streams to eat MS specific instructions, added OCX ToggleButton/OptionButton import, added DIB import for BIFF (page background picture, lots of other minor improvements
2009-03-16 15:25:30 +0100 dr r269551 : #i99677# import excel form control client data (printable, cell link)
2009-03-13 18:37:17 +0100 dr r269494 : #i99677# import image controls and check boxes
2009-03-12 15:08:18 +0100 dr r269420 : #i10000# rebase problems
2009-03-12 14:43:09 +0100 dr r269418 : #i10000# rebase problems
2009-03-12 14:42:41 +0100 dr r269417 : #i10000# missing delivered header
2009-03-12 13:57:06 +0100 dr r269405 : #i10000# typos
2009-03-12 12:58:52 +0100 dr r269391 : CWS-TOOLING: rebase CWS dr68 to trunk@269297 (milestone: DEV300:m43)
2009-03-12 11:11:46 +0100 dr r269374 : #i99677# first step to import BIFF8 page background
2009-03-12 10:21:53 +0100 dr r269364 : #i99677# rework of graphic import in entire filter, added import of AX Label controls
2009-03-09 16:44:50 +0100 dr r269202 : #i99677# import some formatting attributes of command buttons
2009-03-05 15:31:46 +0100 dr r268911 : #i99677# use VML shape client data to import excel VML shape positions
2009-03-05 11:39:48 +0100 dr r268888 : #i99677# create UNO control shapes from VML control shapes
2009-03-05 11:38:59 +0100 dr r268886 : #i99677# change attribute Shapes to DrawPage for import of embedded form controls
2009-03-05 11:30:40 +0100 dr r268885 : #i99677# change attribute Shapes to DrawPage for import of embedded form controls
2009-03-04 18:46:05 +0100 dr r268860 : adapt namespace ids according to oox
2009-03-04 18:43:49 +0100 dr r268859 : #i99677# more VML import rework
2009-03-03 13:38:36 +0100 dr r268721 : #i99677# more cleanup for VML filter
2009-03-03 13:13:15 +0100 dr r268719 : #i99807# do not iterate beyond end of std::list
2009-03-02 11:55:49 +0100 dr r268644 : add ST_XString support (encoded characters in attribute values)
2009-02-26 17:07:18 +0100 dr r268542 : #i99677# first steps of ax control import: dummy AX base classes, reimplement VML import (hopefully without breaking anything), register embedded AX controls at VML drawing
2009-02-23 17:43:50 +0100 dr r268365 : #i99426# remaining work on scenario import
2009-02-19 16:56:25 +0100 dr r268295 : #i99426# base implementations for scenarios import
Diffstat (limited to 'sc/source/filter/excel/xichart.cxx')
-rw-r--r-- | sc/source/filter/excel/xichart.cxx | 96 |
1 files changed, 47 insertions, 49 deletions
diff --git a/sc/source/filter/excel/xichart.cxx b/sc/source/filter/excel/xichart.cxx index c0a0610cc2a3..2d920b0a0bd4 100644 --- a/sc/source/filter/excel/xichart.cxx +++ b/sc/source/filter/excel/xichart.cxx @@ -69,6 +69,9 @@ #include "document.hxx" #include "drwlayer.hxx" #include "rangeutl.hxx" +#include "tokenarray.hxx" +#include "token.hxx" +#include "compiler.hxx" #include "fprogressbar.hxx" #include "xltracer.hxx" #include "xistream.hxx" @@ -77,9 +80,6 @@ #include "xipage.hxx" #include "xiview.hxx" #include "xiescher.hxx" -#include "tokenarray.hxx" -#include "token.hxx" -#include "compiler.hxx" using ::rtl::OUString; using ::rtl::OUStringBuffer; @@ -638,8 +638,11 @@ Reference< XLabeledDataSequence > lclCreateLabeledDataSequence( // ---------------------------------------------------------------------------- XclImpChSourceLink::XclImpChSourceLink( const XclImpChRoot& rRoot ) : - XclImpChRoot( rRoot ), - mpTokenArray(static_cast<ScTokenArray*>(NULL)) + XclImpChRoot( rRoot ) +{ +} + +XclImpChSourceLink::~XclImpChSourceLink() { } @@ -650,18 +653,16 @@ void XclImpChSourceLink::ReadChSourceLink( XclImpStream& rStrm ) >> maData.mnFlags >> maData.mnNumFmtIdx; + mxTokenArray.reset(); if( GetLinkType() == EXC_CHSRCLINK_WORKSHEET ) { // read token array XclTokenArray aXclTokArr; rStrm >> aXclTokArr; - // convert xcl formula tokens to Calc's. - const ScTokenArray* pTokenArray = - GetFormulaCompiler().CreateFormula(EXC_FMLATYPE_CHART, aXclTokArr); - - if (pTokenArray) - mpTokenArray.reset(pTokenArray->Clone()); + // convert BIFF formula tokens to Calc token array + if( const ScTokenArray* pTokens = GetFormulaCompiler().CreateFormula( EXC_FMLATYPE_CHART, aXclTokArr ) ) + mxTokenArray.reset( pTokens->Clone() ); } // try to read a following CHSTRING record @@ -688,38 +689,37 @@ void XclImpChSourceLink::SetTextFormats( const XclFormatRunVec& rFormats ) sal_uInt16 XclImpChSourceLink::GetCellCount() const { - using namespace ::formula; - sal_uInt32 nCellCount = 0; - mpTokenArray->Reset(); - for (const FormulaToken* p = mpTokenArray->First(); p; p = mpTokenArray->Next()) + if( mxTokenArray.is() ) { - switch (p->GetType()) + mxTokenArray->Reset(); + for( const FormulaToken* pToken = mxTokenArray->First(); pToken; pToken = mxTokenArray->Next() ) { - case svSingleRef: - case svExternalSingleRef: - // single cell - ++nCellCount; - break; - case svDoubleRef: - case svExternalDoubleRef: + switch( pToken->GetType() ) { - // cell range - const ScComplexRefData& rData = static_cast<const ScToken*>(p)->GetDoubleRef(); - const ScSingleRefData& s = rData.Ref1; - const ScSingleRefData& e = rData.Ref2; - SCsTAB nTab = e.nTab - s.nTab; - SCsCOL nCol = e.nCol - s.nCol; - SCsROW nRow = e.nRow - s.nRow; - nCellCount += static_cast<sal_uInt32>(nCol+1) * - static_cast<sal_uInt32>(nRow+1) * - static_cast<sal_uInt32>(nTab+1); + case ::formula::svSingleRef: + case ::formula::svExternalSingleRef: + // single cell + ++nCellCount; + break; + case ::formula::svDoubleRef: + case ::formula::svExternalDoubleRef: + { + // cell range + const ScComplexRefData& rComplexRef = static_cast< const ScToken* >( pToken )->GetDoubleRef(); + const ScSingleRefData& rRef1 = rComplexRef.Ref1; + const ScSingleRefData& rRef2 = rComplexRef.Ref2; + sal_uInt32 nTabs = static_cast< sal_uInt32 >( rRef2.nTab - rRef1.nTab + 1 ); + sal_uInt32 nCols = static_cast< sal_uInt32 >( rRef2.nCol - rRef1.nCol + 1 ); + sal_uInt32 nRows = static_cast< sal_uInt32 >( rRef2.nRow - rRef1.nRow + 1 ); + nCellCount += nCols * nRows * nTabs; + } + break; + default: ; } - break; - default: ; } } - return limit_cast<sal_uInt16>(nCellCount); + return limit_cast< sal_uInt16 >( nCellCount ); } void XclImpChSourceLink::ConvertNumFmt( ScfPropertySet& rPropSet, bool bPercent ) const @@ -738,25 +738,23 @@ Reference< XDataSequence > XclImpChSourceLink::CreateDataSequence( const OUStrin { Reference< XDataSequence > xDataSeq; Reference< XDataProvider > xDataProv = GetDataProvider(); - if( xDataProv.is() ) + if( xDataProv.is() && mxTokenArray.is() ) { - if (mpTokenArray) + ScCompiler aComp( GetDocPtr(), ScAddress(), *mxTokenArray ); + aComp.SetGrammar( ::formula::FormulaGrammar::GRAM_ENGLISH ); + OUStringBuffer aRangeRep; + aComp.CreateStringFromTokenArray( aRangeRep ); + try { - ScCompiler aComp(GetDocPtr(), ScAddress(), *mpTokenArray); - aComp.SetGrammar(::formula::FormulaGrammar::GRAM_ENGLISH); - OUStringBuffer aBuf; - aComp.CreateStringFromTokenArray(aBuf); - xDataSeq = xDataProv->createDataSequenceByRangeRepresentation( - aBuf.makeStringAndClear()); + xDataSeq = xDataProv->createDataSequenceByRangeRepresentation( aRangeRep.makeStringAndClear() ); + // set sequence role + ScfPropertySet aSeqProp( xDataSeq ); + aSeqProp.SetProperty( EXC_CHPROP_ROLE, rRole ); } - else + catch( Exception& ) { // DBG_ERRORFILE( "XclImpChSourceLink::CreateDataSequence - cannot create data sequence" ); } - - // set sequence role - ScfPropertySet aSeqProp( xDataSeq ); - aSeqProp.SetProperty( EXC_CHPROP_ROLE, rRole ); } return xDataSeq; } |