summaryrefslogtreecommitdiff
path: root/sc/source/filter/inc/htmlexp.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/filter/inc/htmlexp.hxx')
-rw-r--r--sc/source/filter/inc/htmlexp.hxx174
1 files changed, 174 insertions, 0 deletions
diff --git a/sc/source/filter/inc/htmlexp.hxx b/sc/source/filter/inc/htmlexp.hxx
new file mode 100644
index 000000000000..4cdf71b8610d
--- /dev/null
+++ b/sc/source/filter/inc/htmlexp.hxx
@@ -0,0 +1,174 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+#ifndef SC_HTMLEXP_HXX
+#define SC_HTMLEXP_HXX
+
+#include "global.hxx"
+#include <rtl/textenc.h>
+#include <tools/gen.hxx>
+#include <tools/color.hxx>
+
+#include "expbase.hxx"
+
+
+class ScDocument;
+class SfxItemSet;
+class SdrPage;
+class Graphic;
+class SdrObject;
+class OutputDevice;
+class ScDrawLayer;
+class SvStringsSortDtor;
+class ScEditCell;
+class SvxBorderLine;
+
+struct ScHTMLStyle
+{ // Defaults aus StyleSheet
+ Color aBackgroundColor;
+ String aFontFamilyName;
+ UINT32 nFontHeight; // Item-Value
+ USHORT nFontSizeNumber; // HTML value 1-7
+ BYTE nDefaultScriptType; // Font values are valid for the default script type
+ BOOL bInitialized;
+
+ ScHTMLStyle() : nFontHeight(0), nFontSizeNumber(2), nDefaultScriptType(0),
+ bInitialized(0) {}
+
+ const ScHTMLStyle& operator=( const ScHTMLStyle& r )
+ {
+ aBackgroundColor = r.aBackgroundColor;
+ aFontFamilyName = r.aFontFamilyName;
+ nFontHeight = r.nFontHeight;
+ nFontSizeNumber = r.nFontSizeNumber;
+ nDefaultScriptType = r.nDefaultScriptType;
+ bInitialized = r.bInitialized;
+ return *this;
+ }
+};
+
+struct ScHTMLGraphEntry
+{
+ ScRange aRange; // ueberlagerter Zellbereich
+ Size aSize; // Groesse in Pixeln
+ Size aSpace; // Spacing in Pixeln
+ SdrObject* pObject;
+ BOOL bInCell; // ob in Zelle ausgegeben wird
+ BOOL bWritten;
+
+ ScHTMLGraphEntry( SdrObject* pObj, const ScRange& rRange,
+ const Size& rSize, BOOL bIn, const Size& rSpace ) :
+ aRange( rRange ), aSize( rSize ), aSpace( rSpace ),
+ pObject( pObj ), bInCell( bIn ), bWritten( FALSE ) {}
+};
+
+DECLARE_LIST( ScHTMLGraphList, ScHTMLGraphEntry* )
+
+#define SC_HTML_FONTSIZES 7
+const short nIndentMax = 23;
+
+class ScHTMLExport : public ScExportBase
+{
+ // default HtmlFontSz[1-7]
+ static const USHORT nDefaultFontSize[SC_HTML_FONTSIZES];
+ // HtmlFontSz[1-7] in s*3.ini [user]
+ static USHORT nFontSize[SC_HTML_FONTSIZES];
+ static const char* pFontSizeCss[SC_HTML_FONTSIZES];
+ static const USHORT nCellSpacing;
+ static const sal_Char __FAR_DATA sIndentSource[];
+
+ ScHTMLGraphList aGraphList;
+ ScHTMLStyle aHTMLStyle;
+ String aBaseURL;
+ String aStreamPath;
+ String aCId; // Content-Id fuer Mail-Export
+ OutputDevice* pAppWin; // fuer Pixelei
+ SvStringsSortDtor* pSrcArr; // fuer CopyLocalFileToINet
+ SvStringsSortDtor* pDestArr;
+ String aNonConvertibleChars; // collect nonconvertible characters
+ rtl_TextEncoding eDestEnc;
+ SCTAB nUsedTables;
+ short nIndent;
+ sal_Char sIndent[nIndentMax+1];
+ BOOL bAll; // ganzes Dokument
+ BOOL bTabHasGraphics;
+ BOOL bTabAlignedLeft;
+ BOOL bCalcAsShown;
+ BOOL bCopyLocalFileToINet;
+ BOOL bTableDataWidth;
+ BOOL bTableDataHeight;
+
+ const SfxItemSet& PageDefaults( SCTAB nTab );
+
+ void WriteBody();
+ void WriteHeader();
+ void WriteOverview();
+ void WriteTables();
+ void WriteCell( SCCOL nCol, SCROW nRow, SCTAB nTab );
+ void WriteGraphEntry( ScHTMLGraphEntry* );
+ void WriteImage( String& rLinkName,
+ const Graphic&, const ByteString& rImgOptions,
+ ULONG nXOutFlags = 0 );
+ // nXOutFlags fuer XOutBitmap::WriteGraphic
+
+ // write to stream if and only if URL fields in edit cell
+ BOOL WriteFieldText( const ScEditCell* pCell );
+
+ // kopiere ggfs. eine lokale Datei ins Internet
+ BOOL CopyLocalFileToINet( String& rFileNm,
+ const String& rTargetNm, BOOL bFileToFile = FALSE );
+ BOOL HasCId() { return aCId.Len() > 0; }
+ void MakeCIdURL( String& rURL );
+
+ void PrepareGraphics( ScDrawLayer*, SCTAB nTab,
+ SCCOL nStartCol, SCROW nStartRow,
+ SCCOL nEndCol, SCROW nEndRow );
+ void FillGraphList( const SdrPage*, SCTAB nTab,
+ SCCOL nStartCol, SCROW nStartRow,
+ SCCOL nEndCol, SCROW nEndRow );
+
+ void BorderToStyle( ByteString& rOut, const char* pBorderName,
+ const SvxBorderLine* pLine, bool& bInsertSemicolon );
+
+ USHORT GetFontSizeNumber( USHORT nHeight );
+ const char* GetFontSizeCss( USHORT nHeight );
+ USHORT ToPixel( USHORT nTwips );
+ Size MMToPixel( const Size& r100thMMSize );
+ void IncIndent( short nVal );
+ const sal_Char* GetIndentStr() { return sIndent; }
+
+public:
+ ScHTMLExport( SvStream&, const String&, ScDocument*, const ScRange&,
+ BOOL bAll, const String& aStreamPath );
+ virtual ~ScHTMLExport();
+ ULONG Write();
+ const String& GetNonConvertibleChars() const
+ { return aNonConvertibleChars; }
+};
+
+#endif
+