LibreOffice Module sc (master) 1
htmlexp.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#pragma once
21
22#include <rtl/textenc.h>
23#include <tools/gen.hxx>
24#include <tools/color.hxx>
25#include <vcl/vclptr.hxx>
26#include <vector>
27#include <memory>
28#include <map>
29#include <svx/xoutbmp.hxx>
30
31#include "expbase.hxx"
32
33class ScDocument;
34class SfxItemSet;
35class SdrPage;
36class Graphic;
37class SdrObject;
38class OutputDevice;
39class ScDrawLayer;
40class EditTextObject;
41enum class SvtScriptType : sal_uInt8;
42namespace editeng { class SvxBorderLine; }
43
44namespace sc {
45struct ColumnBlockPosition;
46}
47
49{ // Defaults from stylesheet
52 sal_uInt32 nFontHeight; // Item-Value
53 sal_uInt16 nFontSizeNumber; // HTML value 1-7
54 SvtScriptType nDefaultScriptType; // Font values are valid for the default script type
56
58 nFontHeight(0),
61 bInitialized(false)
62 {}
63
64 const ScHTMLStyle& operator=( const ScHTMLStyle& rScHTMLStyle )
65 {
67 aFontFamilyName = rScHTMLStyle.aFontFamilyName;
68 nFontHeight = rScHTMLStyle.nFontHeight;
69 nFontSizeNumber = rScHTMLStyle.nFontSizeNumber;
71 bInitialized = rScHTMLStyle.bInitialized;
72 return *this;
73 }
74};
75
77{
78 ScRange aRange; // mapped range
79 Size aSize; // size in pixels
80 Size aSpace; // spacing in pixels
82 bool bInCell; // if output is in cell
84
85 ScHTMLGraphEntry( SdrObject* pObj, const ScRange& rRange,
86 const Size& rSize, bool bIn, const Size& rSpace ) :
87 aRange( rRange ),
88 aSize( rSize ),
89 aSpace( rSpace ),
90 pObject( pObj ),
91 bInCell( bIn ),
92 bWritten( false )
93 {}
94};
95
96#define SC_HTML_FONTSIZES 7
97const short nIndentMax = 23;
98
100{
101 // default HtmlFontSz[1-7]
102 static const sal_uInt16 nDefaultFontSize[SC_HTML_FONTSIZES];
103 // HtmlFontSz[1-7] in s*3.ini [user]
104 static sal_uInt16 nFontSize[SC_HTML_FONTSIZES];
105 static const char* pFontSizeCss[SC_HTML_FONTSIZES];
106 static const sal_uInt16 nCellSpacing;
107 static const char sIndentSource[];
108
109 typedef std::unique_ptr<std::map<OUString, OUString> > FileNameMapPtr;
110 typedef std::vector<ScHTMLGraphEntry> GraphEntryList;
111
114 OUString aBaseURL;
115 OUString aStreamPath;
116 VclPtr<OutputDevice> pAppWin; // for Pixel-work
117 FileNameMapPtr pFileNameMap; // for CopyLocalFileToINet
118 OUString aNonConvertibleChars; // collect nonconvertible characters
120 short nIndent;
122 bool bAll; // whole document
131
132 const SfxItemSet& PageDefaults( SCTAB nTab );
133
134 void WriteBody();
135 void WriteHeader();
136 void WriteOverview();
137 void WriteTables();
138 void WriteCell( sc::ColumnBlockPosition& rBlockPos, SCCOL nCol, SCROW nRow, SCTAB nTab );
140 void WriteImage( OUString& rLinkName,
141 const Graphic&, std::string_view rImgOptions,
142 XOutFlags nXOutFlags = XOutFlags::NONE );
143 // nXOutFlags for XOutBitmap::WriteGraphic
144
145 // write to stream if and only if URL fields in edit cell
146 bool WriteFieldText( const EditTextObject* pData );
147
148 // copy a local file to internet if needed
149 void CopyLocalFileToINet( OUString& rFileNm, std::u16string_view rTargetNm );
150
151 void PrepareGraphics( ScDrawLayer*, SCTAB nTab,
152 SCCOL nStartCol, SCROW nStartRow,
153 SCCOL nEndCol, SCROW nEndRow );
154
155 void FillGraphList( const SdrPage*, SCTAB nTab,
156 SCCOL nStartCol, SCROW nStartRow,
157 SCCOL nEndCol, SCROW nEndRow );
158
159 static OString BorderToStyle(const char* pBorderName,
160 const editeng::SvxBorderLine* pLine,
161 bool& bInsertSemicolon);
162
163 static sal_uInt16 GetFontSizeNumber( sal_uInt16 nHeight );
164 static const char* GetFontSizeCss( sal_uInt16 nHeight );
165 sal_uInt16 ToPixel( sal_uInt16 nTwips );
166 Size MMToPixel( const Size& r100thMMSize );
167 void IncIndent( short nVal );
168
169 const char* GetIndentStr() const
170 {
171 return sIndent;
172 }
173
174public:
175 ScHTMLExport( SvStream&, OUString , ScDocument*, const ScRange&,
176 bool bAll, OUString aStreamPath, std::u16string_view aFilterOptions );
177 virtual ~ScHTMLExport() override;
178 void Write();
179 const OUString& GetNonConvertibleChars() const
180 {
182 }
183};
184
185/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
std::vector< ScHTMLGraphEntry > GraphEntryList
Definition: htmlexp.hxx:110
bool bCopyLocalFileToINet
Definition: htmlexp.hxx:126
void WriteGraphEntry(ScHTMLGraphEntry *)
Definition: htmlexp2.cxx:112
OUString aStreamPath
Definition: htmlexp.hxx:115
bool mbSkipImages
Definition: htmlexp.hxx:128
const char * GetIndentStr() const
Definition: htmlexp.hxx:169
SCTAB nUsedTables
Definition: htmlexp.hxx:119
std::unique_ptr< std::map< OUString, OUString > > FileNameMapPtr
Definition: htmlexp.hxx:109
bool bTabAlignedLeft
Definition: htmlexp.hxx:124
void FillGraphList(const SdrPage *, SCTAB nTab, SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow)
Definition: htmlexp2.cxx:64
void Write()
Definition: htmlexp.cxx:297
void WriteCell(sc::ColumnBlockPosition &rBlockPos, SCCOL nCol, SCROW nRow, SCTAB nTab)
Definition: htmlexp.cxx:885
static const char * pFontSizeCss[SC_HTML_FONTSIZES]
Definition: htmlexp.hxx:105
static const char * GetFontSizeCss(sal_uInt16 nHeight)
Definition: htmlexp.cxx:268
void WriteOverview()
Definition: htmlexp.cxx:456
VclPtr< OutputDevice > pAppWin
Definition: htmlexp.hxx:116
bool bTableDataHeight
Definition: htmlexp.hxx:127
virtual ~ScHTMLExport() override
Definition: htmlexp.cxx:249
FileNameMapPtr pFileNameMap
Definition: htmlexp.hxx:117
static const sal_uInt16 nDefaultFontSize[SC_HTML_FONTSIZES]
Definition: htmlexp.hxx:102
void WriteHeader()
Definition: htmlexp.cxx:313
OUString aNonConvertibleChars
Definition: htmlexp.hxx:118
static sal_uInt16 nFontSize[SC_HTML_FONTSIZES]
Definition: htmlexp.hxx:104
char sIndent[nIndentMax+1]
Definition: htmlexp.hxx:121
Size MMToPixel(const Size &r100thMMSize)
Definition: htmlexp.cxx:286
bool bTabHasGraphics
Definition: htmlexp.hxx:123
static sal_uInt16 GetFontSizeNumber(sal_uInt16 nHeight)
Definition: htmlexp.cxx:254
GraphEntryList aGraphList
Definition: htmlexp.hxx:112
ScHTMLStyle aHTMLStyle
Definition: htmlexp.hxx:113
OUString aBaseURL
Definition: htmlexp.hxx:114
void IncIndent(short nVal)
Definition: htmlexp.cxx:1388
bool WriteFieldText(const EditTextObject *pData)
Definition: htmlexp.cxx:1278
const OUString & GetNonConvertibleChars() const
Definition: htmlexp.hxx:179
const SfxItemSet & PageDefaults(SCTAB nTab)
Definition: htmlexp.cxx:489
sal_uInt16 ToPixel(sal_uInt16 nTwips)
Definition: htmlexp.cxx:274
void WriteBody()
Definition: htmlexp.cxx:605
bool bCalcAsShown
Definition: htmlexp.hxx:125
static OString BorderToStyle(const char *pBorderName, const editeng::SvxBorderLine *pLine, bool &bInsertSemicolon)
Definition: htmlexp.cxx:534
void PrepareGraphics(ScDrawLayer *, SCTAB nTab, SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow)
Definition: htmlexp2.cxx:40
void WriteImage(OUString &rLinkName, const Graphic &, std::string_view rImgOptions, XOutFlags nXOutFlags=XOutFlags::NONE)
Definition: htmlexp2.cxx:171
static const sal_uInt16 nCellSpacing
Definition: htmlexp.hxx:106
void CopyLocalFileToINet(OUString &rFileNm, std::u16string_view rTargetNm)
Definition: htmlexp.cxx:1335
short nIndent
Definition: htmlexp.hxx:120
bool mbSkipHeaderFooter
If HTML header and footer should be written as well, or just the content itself.
Definition: htmlexp.hxx:130
static const char sIndentSource[]
Definition: htmlexp.hxx:107
ScHTMLExport(SvStream &, OUString, ScDocument *, const ScRange &, bool bAll, OUString aStreamPath, std::u16string_view aFilterOptions)
Definition: htmlexp.cxx:199
void WriteTables()
Definition: htmlexp.cxx:684
const short nIndentMax
Definition: htmlexp.hxx:97
#define SC_HTML_FONTSIZES
Definition: htmlexp.hxx:96
SvtScriptType
CAUTION! The following defines must be in the same namespace as the respective type.
Definition: broadcast.cxx:15
ScHTMLGraphEntry(SdrObject *pObj, const ScRange &rRange, const Size &rSize, bool bIn, const Size &rSpace)
Definition: htmlexp.hxx:85
ScRange aRange
Definition: htmlexp.hxx:78
SdrObject * pObject
Definition: htmlexp.hxx:81
SvtScriptType nDefaultScriptType
Definition: htmlexp.hxx:54
const ScHTMLStyle & operator=(const ScHTMLStyle &rScHTMLStyle)
Definition: htmlexp.hxx:64
bool bInitialized
Definition: htmlexp.hxx:55
sal_uInt32 nFontHeight
Definition: htmlexp.hxx:52
OUString aFontFamilyName
Definition: htmlexp.hxx:51
Color aBackgroundColor
Definition: htmlexp.hxx:50
sal_uInt16 nFontSizeNumber
Definition: htmlexp.hxx:53
Store position data for column array storage.
unsigned char sal_uInt8
sal_Int16 SCTAB
Definition: types.hxx:22
sal_Int16 SCCOL
Definition: types.hxx:21
sal_Int32 SCROW
Definition: types.hxx:17
XOutFlags