blob: c19d73a9def908b91033f1e8980de0c9af43d321 [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.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sc.hxx"
// INCLUDE ---------------------------------------------------------------
#include "XMLExportSharedData.hxx"
#include "XMLExportIterator.hxx"
#include <tools/debug.hxx>
using namespace com::sun::star;
ScMySharedData::ScMySharedData(const sal_Int32 nTempTableCount) :
nLastColumns(nTempTableCount, 0),
nLastRows(nTempTableCount, 0),
pTableShapes(NULL),
pDrawPages(NULL),
pShapesContainer(NULL),
pDetectiveObjContainer(new ScMyDetectiveObjContainer()),
pNoteShapes(NULL),
nTableCount(nTempTableCount)
{
}
ScMySharedData::~ScMySharedData()
{
if (pShapesContainer)
delete pShapesContainer;
if (pTableShapes)
delete pTableShapes;
if (pDrawPages)
delete pDrawPages;
if (pDetectiveObjContainer)
delete pDetectiveObjContainer;
if (pNoteShapes)
delete pNoteShapes;
}
void ScMySharedData::SetLastColumn(const sal_Int32 nTable, const sal_Int32 nCol)
{
if(nCol > nLastColumns[nTable]) nLastColumns[nTable] = nCol;
}
sal_Int32 ScMySharedData::GetLastColumn(const sal_Int32 nTable)
{
return nLastColumns[nTable];
}
void ScMySharedData::SetLastRow(const sal_Int32 nTable, const sal_Int32 nRow)
{
if(nRow > nLastRows[nTable]) nLastRows[nTable] = nRow;
}
sal_Int32 ScMySharedData::GetLastRow(const sal_Int32 nTable)
{
return nLastRows[nTable];
}
void ScMySharedData::AddDrawPage(const ScMyDrawPage& aDrawPage, const sal_Int32 nTable)
{
if (!pDrawPages)
pDrawPages = new ScMyDrawPages(nTableCount, ScMyDrawPage());
(*pDrawPages)[nTable] = aDrawPage;
}
void ScMySharedData::SetDrawPageHasForms(const sal_Int32 nTable, sal_Bool bHasForms)
{
DBG_ASSERT(pDrawPages, "DrawPages not collected");
if (pDrawPages)
(*pDrawPages)[nTable].bHasForms = bHasForms;
}
uno::Reference<drawing::XDrawPage> ScMySharedData::GetDrawPage(const sal_Int32 nTable)
{
DBG_ASSERT(pDrawPages, "DrawPages not collected");
if (pDrawPages)
return (*pDrawPages)[nTable].xDrawPage;
else
return uno::Reference<drawing::XDrawPage>();
}
sal_Bool ScMySharedData::HasForm(const sal_Int32 nTable, uno::Reference<drawing::XDrawPage>& xDrawPage)
{
sal_Bool bResult(sal_False);
if (pDrawPages)
{
if ((*pDrawPages)[nTable].bHasForms)
{
bResult = sal_True;
xDrawPage = (*pDrawPages)[nTable].xDrawPage;
}
}
return bResult;
}
void ScMySharedData::AddNewShape(const ScMyShape& aMyShape)
{
if (!pShapesContainer)
pShapesContainer = new ScMyShapesContainer();
pShapesContainer->AddNewShape(aMyShape);
}
void ScMySharedData::SortShapesContainer()
{
if (pShapesContainer)
pShapesContainer->Sort();
}
sal_Bool ScMySharedData::HasShapes()
{
return ((pShapesContainer && pShapesContainer->HasShapes()) ||
(pTableShapes && !pTableShapes->empty()));
}
void ScMySharedData::AddTableShape(const sal_Int32 nTable, const uno::Reference<drawing::XShape>& xShape)
{
if (!pTableShapes)
pTableShapes = new ScMyTableShapes(nTableCount);
(*pTableShapes)[nTable].push_back(xShape);
}
void ScMySharedData::AddNoteObj(const uno::Reference<drawing::XShape>& xShape, const ScAddress& rPos)
{
if (!pNoteShapes)
pNoteShapes = new ScMyNoteShapesContainer();
ScMyNoteShape aNote;
aNote.xShape = xShape;
aNote.aPos = rPos;
pNoteShapes->AddNewNote(aNote);
}
void ScMySharedData::SortNoteShapes()
{
if (pNoteShapes)
pNoteShapes->Sort();
}