blob: f8589f41f31e1001b55fc271a6439b8a9f8e9487 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef SCH_XML_TRANSPORTTYPES_HXX_
#define SCH_XML_TRANSPORTTYPES_HXX_
#include <com/sun/star/chart2/XDataSeries.hpp>
#include <com/sun/star/chart2/data/XLabeledDataSequence.hpp>
#include <vector>
#include <map>
enum SchXMLCellType
{
SCH_CELL_TYPE_UNKNOWN,
SCH_CELL_TYPE_FLOAT,
SCH_CELL_TYPE_STRING,
SCH_CELL_TYPE_COMPLEX_STRING
};
struct SchXMLCell
{
rtl::OUString aString;
::com::sun::star::uno::Sequence< rtl::OUString >* pComplexString;
double fValue;
SchXMLCellType eType;
rtl::OUString aRangeId;
SchXMLCell() : pComplexString(0), fValue( 0.0 ), eType( SCH_CELL_TYPE_UNKNOWN )
{}
SchXMLCell( const SchXMLCell& rOther )
: aString( rOther.aString )
, pComplexString( rOther.pComplexString ? new ::com::sun::star::uno::Sequence< rtl::OUString >( *rOther.pComplexString ) : 0 )
, fValue( rOther.fValue )
, eType( rOther.eType )
, aRangeId( rOther.aRangeId )
{}
~SchXMLCell()
{
if(pComplexString)
{
delete pComplexString;
pComplexString=0;
}
}
};
struct SchXMLTable
{
std::vector< std::vector< SchXMLCell > > aData; /// an array of rows containing the table contents
sal_Int32 nRowIndex; /// reflects the index of the row currently parsed
sal_Int32 nColumnIndex; /// reflects the index of the column currently parsed
sal_Int32 nMaxColumnIndex; /// the greatest number of columns detected
sal_Int32 nNumberOfColsEstimate; /// parsing column-elements may yield an estimate
bool bHasHeaderRow;
bool bHasHeaderColumn;
::rtl::OUString aTableNameOfFile; /// the table name read at the table:table element
::std::vector< sal_Int32 > aHiddenColumns;
bool bProtected;
SchXMLTable() : nRowIndex( -1 ),
nColumnIndex( -1 ),
nMaxColumnIndex( -1 ),
nNumberOfColsEstimate( 0 ),
bHasHeaderRow( false ),
bHasHeaderColumn( false ),
bProtected( false )
{}
};
typedef sal_Int32 tSchXMLIndex;
#define SCH_XML_CATEGORIES_INDEX (static_cast<tSchXMLIndex>(-1))
enum SchXMLLabeledSequencePart
{
SCH_XML_PART_LABEL,
SCH_XML_PART_VALUES,
SCH_XML_PART_ERROR_BARS
};
typedef ::std::pair< tSchXMLIndex, SchXMLLabeledSequencePart > tSchXMLIndexWithPart;
typedef ::std::multimap< tSchXMLIndexWithPart,
::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XLabeledDataSequence > >
tSchXMLLSequencesPerIndex;
bool operator < ( const tSchXMLIndexWithPart & rFirst, const tSchXMLIndexWithPart & rSecond );
// ----------------------------------------
struct SchNumericCellRangeAddress
{
sal_Int32 nRow1, nRow2;
sal_Int32 nCol1, nCol2;
SchNumericCellRangeAddress() :
nRow1( -1 ), nRow2( -1 ),
nCol1( -1 ), nCol2( -1 )
{}
SchNumericCellRangeAddress( const SchNumericCellRangeAddress& aOther )
{
nRow1 = aOther.nRow1; nRow2 = aOther.nRow2;
nCol1 = aOther.nCol1; nCol2 = aOther.nCol2;
}
};
// ----------------------------------------
enum SchXMLAxisDimension
{
SCH_XML_AXIS_X = 0,
SCH_XML_AXIS_Y,
SCH_XML_AXIS_Z,
SCH_XML_AXIS_UNDEF
};
struct SchXMLAxis
{
enum SchXMLAxisDimension eDimension;
sal_Int8 nAxisIndex;//0->primary axis; 1->secondary axis
rtl::OUString aName;
rtl::OUString aTitle;
bool bHasCategories;
SchXMLAxis() : eDimension( SCH_XML_AXIS_UNDEF ), nAxisIndex( 0 ), bHasCategories( false ) {}
};
// ----------------------------------------
struct GlobalSeriesImportInfo
{
GlobalSeriesImportInfo( sal_Bool& rAllRangeAddressesAvailable )
: rbAllRangeAddressesAvailable( rAllRangeAddressesAvailable )
, nCurrentDataIndex( 0 )
, nFirstFirstDomainIndex( -1 )
, nFirstSecondDomainIndex( -1 )
{}
sal_Bool& rbAllRangeAddressesAvailable;
sal_Int32 nCurrentDataIndex;
::rtl::OUString aFirstFirstDomainAddress;
sal_Int32 nFirstFirstDomainIndex;
::rtl::OUString aFirstSecondDomainAddress;
sal_Int32 nFirstSecondDomainIndex;
};
struct DataRowPointStyle
{
enum StyleType
{
DATA_POINT,
DATA_SERIES,
MEAN_VALUE,
REGRESSION,
ERROR_INDICATOR
};
StyleType meType;
::com::sun::star::uno::Reference<
::com::sun::star::chart2::XDataSeries > m_xSeries;
::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertySet > m_xOldAPISeries;
::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertySet > m_xEquationProperties;
sal_Int32 m_nPointIndex;
sal_Int32 m_nPointRepeat;
::rtl::OUString msStyleName;
::rtl::OUString msSeriesStyleNameForDonuts;
sal_Int32 mnAttachedAxis;
bool mbSymbolSizeForSeriesIsMissingInFile;
DataRowPointStyle( StyleType eType
, const ::com::sun::star::uno::Reference<
::com::sun::star::chart2::XDataSeries >& xSeries
, sal_Int32 nPointIndex
, sal_Int32 nPointRepeat
, ::rtl::OUString sStyleName
, sal_Int32 nAttachedAxis = 0 ) :
meType( eType ),
m_xSeries( xSeries ),
m_xOldAPISeries( 0 ),
m_nPointIndex( nPointIndex ),
m_nPointRepeat( nPointRepeat ),
msStyleName( sStyleName ),
mnAttachedAxis( nAttachedAxis ),
mbSymbolSizeForSeriesIsMissingInFile( false )
{}
};
typedef ::std::multimap< ::rtl::OUString, ::com::sun::star::uno::Reference<
::com::sun::star::chart2::data::XDataSequence > > tSchXMLRangeSequenceMap;
#endif // SCH_XML_TRANSPORTTYPES_HXX_