summaryrefslogtreecommitdiff
path: root/sc/source/filter/rtf/expbase.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/filter/rtf/expbase.cxx')
-rw-r--r--sc/source/filter/rtf/expbase.cxx110
1 files changed, 110 insertions, 0 deletions
diff --git a/sc/source/filter/rtf/expbase.cxx b/sc/source/filter/rtf/expbase.cxx
new file mode 100644
index 000000000000..3188b4f920e7
--- /dev/null
+++ b/sc/source/filter/rtf/expbase.cxx
@@ -0,0 +1,110 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sc.hxx"
+
+
+
+
+#include "expbase.hxx"
+#include "document.hxx"
+#include "editutil.hxx"
+
+
+//------------------------------------------------------------------
+
+#if defined(UNX)
+const sal_Char __FAR_DATA ScExportBase::sNewLine = '\012';
+#else
+const sal_Char __FAR_DATA ScExportBase::sNewLine[] = "\015\012";
+#endif
+
+
+ScExportBase::ScExportBase( SvStream& rStrmP, ScDocument* pDocP,
+ const ScRange& rRangeP )
+ :
+ rStrm( rStrmP ),
+ aRange( rRangeP ),
+ pDoc( pDocP ),
+ pFormatter( pDocP->GetFormatTable() ),
+ pEditEngine( NULL )
+{
+}
+
+
+ScExportBase::~ScExportBase()
+{
+ delete pEditEngine;
+}
+
+
+BOOL ScExportBase::GetDataArea( SCTAB nTab, SCCOL& nStartCol,
+ SCROW& nStartRow, SCCOL& nEndCol, SCROW& nEndRow ) const
+{
+ pDoc->GetDataStart( nTab, nStartCol, nStartRow );
+ pDoc->GetPrintArea( nTab, nEndCol, nEndRow, TRUE );
+ return TrimDataArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow );
+}
+
+
+BOOL ScExportBase::TrimDataArea( SCTAB nTab, SCCOL& nStartCol,
+ SCROW& nStartRow, SCCOL& nEndCol, SCROW& nEndRow ) const
+{
+ while ( nStartCol <= nEndCol &&
+ pDoc->GetColFlags( nStartCol, nTab ) & CR_HIDDEN )
+ ++nStartCol;
+ while ( nStartCol <= nEndCol &&
+ pDoc->GetColFlags( nEndCol, nTab ) & CR_HIDDEN )
+ --nEndCol;
+ nStartRow = pDoc->GetRowFlagsArray( nTab).GetFirstForCondition( nStartRow,
+ nEndRow, CR_HIDDEN, 0);
+ nEndRow = pDoc->GetRowFlagsArray( nTab).GetLastForCondition( nStartRow,
+ nEndRow, CR_HIDDEN, 0);
+ return nStartCol <= nEndCol && nStartRow <= nEndRow && nEndRow !=
+ ::std::numeric_limits<SCROW>::max();
+}
+
+
+BOOL ScExportBase::IsEmptyTable( SCTAB nTab ) const
+{
+ if ( !pDoc->HasTable( nTab ) || !pDoc->IsVisible( nTab ) )
+ return TRUE;
+ SCCOL nStartCol, nEndCol;
+ SCROW nStartRow, nEndRow;
+ return !GetDataArea( nTab, nStartCol, nStartRow, nEndCol, nEndRow );
+}
+
+
+ScFieldEditEngine& ScExportBase::GetEditEngine() const
+{
+ if ( !pEditEngine )
+ ((ScExportBase*)this)->pEditEngine = new ScFieldEditEngine( pDoc->GetEditPool() );
+ return *pEditEngine;
+}
+
+