summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/svtools/htmlout.hxx2
-rw-r--r--include/svx/xoutbmp.hxx1
-rw-r--r--svtools/source/svhtml/htmlout.cxx8
-rw-r--r--svx/source/xoutdev/_xoutbmp.cxx43
-rw-r--r--sw/source/filter/html/css1atr.cxx107
-rw-r--r--sw/source/filter/html/htmlatr.cxx5
-rw-r--r--sw/source/filter/html/htmlfly.cxx161
-rw-r--r--sw/source/filter/html/htmlnum.cxx5
-rw-r--r--sw/source/filter/html/htmlplug.cxx23
-rw-r--r--sw/source/filter/html/htmltabw.cxx9
-rw-r--r--sw/source/filter/html/wrthtml.cxx60
-rw-r--r--sw/source/filter/html/wrthtml.hxx12
12 files changed, 149 insertions, 287 deletions
diff --git a/include/svtools/htmlout.hxx b/include/svtools/htmlout.hxx
index 33c76fed1876..90c32088ac93 100644
--- a/include/svtools/htmlout.hxx
+++ b/include/svtools/htmlout.hxx
@@ -68,7 +68,7 @@ struct HTMLOutFuncs
SVT_DLLPUBLIC static SvStream& Out_Char( SvStream&, sal_Unicode cChar,
HTMLOutContext& rContext,
String *pNonConvertableChars = 0 );
- SVT_DLLPUBLIC static SvStream& Out_String( SvStream&, const String&,
+ SVT_DLLPUBLIC static SvStream& Out_String( SvStream&, const OUString&,
rtl_TextEncoding eDestEnc = RTL_TEXTENCODING_MS_1252,
String *pNonConvertableChars = 0 );
SVT_DLLPUBLIC static SvStream& Out_Hex( SvStream&, sal_uLong nHex, sal_uInt8 nLen,
diff --git a/include/svx/xoutbmp.hxx b/include/svx/xoutbmp.hxx
index 0c614b93c356..3bb51cff44ca 100644
--- a/include/svx/xoutbmp.hxx
+++ b/include/svx/xoutbmp.hxx
@@ -54,6 +54,7 @@ public:
static sal_uInt16 WriteGraphic( const Graphic& rGraphic, String& rFileName,
const String& rFilterName, const sal_uIntPtr nFlags = 0L,
const Size* pMtfSize_100TH_MM = NULL );
+ static sal_uLong GraphicToBase64(const Graphic& rGraphic,OUString& rOUString);
static sal_uInt16 ExportGraphic( const Graphic& rGraphic, const INetURLObject& rURL,
GraphicFilter& rFilter, const sal_uInt16 nFormat,
diff --git a/svtools/source/svhtml/htmlout.cxx b/svtools/source/svhtml/htmlout.cxx
index a23638f122da..f384c4be5ad6 100644
--- a/svtools/source/svhtml/htmlout.cxx
+++ b/svtools/source/svhtml/htmlout.cxx
@@ -532,14 +532,14 @@ SvStream& HTMLOutFuncs::Out_Char( SvStream& rStream, sal_Unicode c,
return rStream;
}
-SvStream& HTMLOutFuncs::Out_String( SvStream& rStream, const String& rStr,
+SvStream& HTMLOutFuncs::Out_String( SvStream& rStream, const OUString& rOUStr,
rtl_TextEncoding eDestEnc,
String *pNonConvertableChars )
{
HTMLOutContext aContext( eDestEnc );
- xub_StrLen nLen = rStr.Len();
- for( xub_StrLen n = 0; n < nLen; n++ )
- HTMLOutFuncs::Out_Char( rStream, rStr.GetChar( (xub_StrLen)n ),
+ sal_Int32 nLen = rOUStr.getLength();
+ for( sal_Int32 n = 0; n < nLen; n++ )
+ HTMLOutFuncs::Out_Char( rStream, rOUStr[n],
aContext, pNonConvertableChars );
HTMLOutFuncs::FlushToAscii( rStream, aContext );
return rStream;
diff --git a/svx/source/xoutdev/_xoutbmp.cxx b/svx/source/xoutdev/_xoutbmp.cxx
index 535d6b3299dc..40f9f7f1bdd0 100644
--- a/svx/source/xoutdev/_xoutbmp.cxx
+++ b/svx/source/xoutdev/_xoutbmp.cxx
@@ -29,6 +29,9 @@
#include <vcl/dibtools.hxx>
#include <vcl/FilterConfigItem.hxx>
#include <vcl/graphicfilter.hxx>
+#include <vcl/cvtgrf.hxx>
+#include <sax/tools/converter.hxx>
+#include <svtools/htmlkywd.hxx>
#define FORMAT_BMP OUString("bmp")
#define FORMAT_GIF OUString("gif")
@@ -314,6 +317,46 @@ sal_uInt16 XOutBitmap::WriteGraphic( const Graphic& rGraphic, String& rFileName,
}
}
+sal_uLong XOutBitmap::GraphicToBase64(const Graphic& rGraphic, OUString& rOUString)
+{
+ SvMemoryStream aOStm;
+ OUString aMimeType;
+ GfxLink aLink = rGraphic.GetLink();
+ sal_uLong aCvtType;
+ switch( aLink.GetType() )
+ {
+ case( GFX_LINK_TYPE_NATIVE_JPG ):
+ aCvtType = CVT_JPG;
+ aMimeType = "image/jpeg";
+ break;
+ case( GFX_LINK_TYPE_NATIVE_PNG ):
+ aCvtType = CVT_PNG;
+ aMimeType = "image/png";
+ break;
+ case( GFX_LINK_TYPE_NATIVE_SVG ):
+ aCvtType = CVT_SVG;
+ aMimeType = "image/svg+xml";
+ break;
+ default:
+ // save everything else (including gif) into png
+ aCvtType = CVT_PNG;
+ aMimeType = "image/png";
+ break;
+ }
+ sal_uLong nErr = GraphicConverter::Export(aOStm,rGraphic,aCvtType);
+ if ( nErr )
+ {
+ SAL_WARN("svx", "XOutBitmap::GraphicToBase64() invalid Graphic? error: " << nErr );
+ return nErr;
+ }
+ aOStm.Seek(STREAM_SEEK_TO_END);
+ css::uno::Sequence<sal_Int8> aOStmSeq( (sal_Int8*) aOStm.GetData(),aOStm.Tell() );
+ OUStringBuffer aStrBuffer;
+ ::sax::Converter::encodeBase64(aStrBuffer,aOStmSeq);
+ rOUString = aMimeType + ";base64," + aStrBuffer.makeStringAndClear();
+ return 0;
+}
+
sal_uInt16 XOutBitmap::ExportGraphic( const Graphic& rGraphic, const INetURLObject& rURL,
GraphicFilter& rFilter, const sal_uInt16 nFormat,
const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >* pFilterData )
diff --git a/sw/source/filter/html/css1atr.cxx b/sw/source/filter/html/css1atr.cxx
index db343f0c26f3..effb4a80112b 100644
--- a/sw/source/filter/html/css1atr.cxx
+++ b/sw/source/filter/html/css1atr.cxx
@@ -147,7 +147,7 @@ static Writer& OutCSS1_SvxULSpace_SvxLRSpace( Writer& rWrt,
const SfxItemSet& rItemSet,
sal_Bool bDeep );
static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt,
- sal_uInt16 nMode, const String *pGrfName );
+ sal_uInt16 nMode );
static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt );
static Writer& OutCSS1_SwFmtFrmSize( Writer& rWrt, const SfxPoolItem& rHt,
sal_uInt16 nMode );
@@ -1909,8 +1909,7 @@ static Writer& OutCSS1_SwFtnInfo( Writer& rWrt, const SwEndNoteInfo& rInfo,
return rWrt;
}
-Writer& OutCSS1_BodyTagStyleOpt( Writer& rWrt, const SfxItemSet& rItemSet,
- String aEmbBGGrfName )
+Writer& OutCSS1_BodyTagStyleOpt( Writer& rWrt, const SfxItemSet& rItemSet )
{
SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
@@ -1926,8 +1925,7 @@ Writer& OutCSS1_BodyTagStyleOpt( Writer& rWrt, const SfxItemSet& rItemSet,
if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BACKGROUND, sal_False,
&pItem ) )
{
- OutCSS1_SvxBrush( rWrt, *pItem, CSS1_BACKGROUND_PAGE,
- &aEmbBGGrfName );
+ OutCSS1_SvxBrush( rWrt, *pItem, CSS1_BACKGROUND_PAGE );
}
if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BOX, sal_False,
@@ -1996,7 +1994,7 @@ Writer& OutCSS1_TableBGStyleOpt( Writer& rWrt, const SfxPoolItem& rHt )
SwCSS1OutMode aMode( rHTMLWrt, CSS1_OUTMODE_STYLE_OPT_ON |
CSS1_OUTMODE_ENCODE|
CSS1_OUTMODE_TABLEBOX );
- OutCSS1_SvxBrush( rWrt, rHt, CSS1_BACKGROUND_TABLE, 0 );
+ OutCSS1_SvxBrush( rWrt, rHt, CSS1_BACKGROUND_TABLE );
if( !rHTMLWrt.bFirstCSS1Property )
rWrt.Strm() << '\"';
@@ -2248,7 +2246,7 @@ void SwHTMLWriter::OutCSS1_TableFrmFmtOptions( const SwFrmFmt& rFrmFmt )
const SfxPoolItem *pItem;
const SfxItemSet& rItemSet = rFrmFmt.GetAttrSet();
if( SFX_ITEM_SET==rItemSet.GetItemState( RES_BACKGROUND, sal_False, &pItem ) )
- OutCSS1_SvxBrush( *this, *pItem, CSS1_BACKGROUND_TABLE, 0 );
+ OutCSS1_SvxBrush( *this, *pItem, CSS1_BACKGROUND_TABLE );
if( IsHTMLMode( HTMLMODE_PRINT_EXT ) )
OutCSS1_SvxFmtBreak_SwFmtPDesc_SvxFmtKeep( *this, rItemSet, sal_False );
@@ -2281,7 +2279,7 @@ void SwHTMLWriter::OutCSS1_SectionFmtOptions( const SwFrmFmt& rFrmFmt, const SwF
const SfxPoolItem *pItem;
const SfxItemSet& rItemSet = rFrmFmt.GetAttrSet();
if( SFX_ITEM_SET==rItemSet.GetItemState( RES_BACKGROUND, sal_False, &pItem ) )
- OutCSS1_SvxBrush( *this, *pItem, CSS1_BACKGROUND_SECTION, 0 );
+ OutCSS1_SvxBrush( *this, *pItem, CSS1_BACKGROUND_SECTION );
if (pCol)
{
@@ -2303,7 +2301,7 @@ static bool OutCSS1_FrmFmtBrush( SwHTMLWriter& rWrt,
0 != rBrushItem.GetGraphicLink() ||
0 != rBrushItem.GetGraphicPos() )
{
- OutCSS1_SvxBrush( rWrt, rBrushItem, CSS1_BACKGROUND_FLY, 0 );
+ OutCSS1_SvxBrush( rWrt, rBrushItem, CSS1_BACKGROUND_FLY );
bWritten = true;
}
return bWritten;
@@ -3304,13 +3302,12 @@ static Writer& OutCSS1_SvxFmtBreak_SwFmtPDesc_SvxFmtKeep( Writer& rWrt,
// Wrapper fuer OutCSS1_SfxItemSet etc.
static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt )
{
- OutCSS1_SvxBrush( rWrt, rHt, CSS1_BACKGROUND_ATTR, 0 );
+ OutCSS1_SvxBrush( rWrt, rHt, CSS1_BACKGROUND_ATTR );
return rWrt;
}
-
static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt,
- sal_uInt16 nMode, const String *pGrfName )
+ sal_uInt16 nMode)
{
SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
@@ -3323,19 +3320,8 @@ static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt,
// Erstmal ein par Werte holen
// const Brush &rBrush = ((const SvxBrushItem &)rHt).GetBrush();
const Color & rColor = ((const SvxBrushItem &)rHt).GetColor();
- const String *pLink = pGrfName ? pGrfName
- : ((const SvxBrushItem &)rHt).GetGraphicLink();
SvxGraphicPosition ePos = ((const SvxBrushItem &)rHt).GetGraphicPos();
- if( CSS1_BACKGROUND_PAGE==nMode )
- {
- // Fuer Seitenvorlagen wurde der Grafik-Name uebergeben. Es wird
- // nur ein Attribut ausgegeben, wenn die Grafik nicht gekachelt ist.
- OSL_ENSURE( pLink, "Wo ist der Grafik-Name der Seitenvorlage?" );
- if( !pLink || !pLink->Len() || GPOS_TILED==ePos )
- return rWrt;
- }
-
// Erstmal die Farbe holen
bool bColor = false;
/// set <bTransparent> to sal_True, if color is "no fill"/"auto fill"
@@ -3348,49 +3334,27 @@ static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt,
}
// und jetzt eine Grafik
- String sGrfNm;
+ OUString aGraphicInBase64;
- if( !pLink )
+ // embeddete Grafik -> WriteEmbedded schreiben
+ const Graphic* pGrf = ((const SvxBrushItem &)rHt).GetGraphic();
+ if( pGrf )
{
- // embeddete Grafik -> WriteEmbedded schreiben
- const Graphic* pGrf = ((const SvxBrushItem &)rHt).GetGraphic();
- if( pGrf )
+ sal_uLong nErr = XOutBitmap::GraphicToBase64(*pGrf, aGraphicInBase64);
+ if( nErr )
{
- // Grafik als (JPG-)File speichern
- const String* pTempFileName = rHTMLWrt.GetOrigFileName();
- if( pTempFileName )
- sGrfNm = *pTempFileName;
- sal_uInt16 nErr = XOutBitmap::WriteGraphic( *pGrf, sGrfNm,
- OUString("JPG"),
- XOUTBMP_USE_NATIVE_IF_POSSIBLE );
- if( !nErr ) // fehlerhaft, da ist nichts auszugeben
- {
- sGrfNm = URIHelper::SmartRel2Abs(
- INetURLObject(rWrt.GetBaseURL()), sGrfNm,
- URIHelper::GetMaybeFileHdl() );
- pLink = &sGrfNm;
- }
- else
- {
- rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
- }
+ rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
}
}
- else if( !pGrfName && rHTMLWrt.bCfgCpyLinkedGrfs )
- {
- sGrfNm = *pLink;
- rWrt.CopyLocalFileToINet( sGrfNm );
- pLink = &sGrfNm;
- }
// In Tabellen wird nur dann etwas exportiert, wenn eine Grafik
// existiert.
- if( CSS1_BACKGROUND_TABLE==nMode && !pLink )
+ if( CSS1_BACKGROUND_TABLE==nMode && !pGrf )
return rWrt;
// ggf. noch die Ausrichtung der Grafik
const sal_Char *pRepeat = 0, *pHori = 0, *pVert = 0;
- if( pLink )
+ if( pGrf )
{
if( GPOS_TILED==ePos )
{
@@ -3452,57 +3416,48 @@ static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt,
}
// jetzt den String zusammen bauen
- String sOut;
- if( !pLink && !bColor )
+ OUString sOut;
+ if( !pGrf && !bColor )
{
// keine Farbe und kein Link, aber ein transparenter Brush
if( bTransparent && CSS1_BACKGROUND_FLY != nMode )
- sOut.AssignAscii( sCSS1_PV_transparent );
+ sOut += OStringToOUString(sCSS1_PV_transparent, RTL_TEXTENCODING_ASCII_US);
}
else
{
if( bColor )
{
OString sTmp(GetCSS1Color(aColor));
- sOut += String(OStringToOUString(sTmp,
- RTL_TEXTENCODING_ASCII_US));
+ sOut += OStringToOUString(sTmp, RTL_TEXTENCODING_ASCII_US);
}
- if( pLink )
+ if( pGrf )
{
if( bColor )
- sOut += ' ';
-
- sOut.AppendAscii( sCSS1_url );
- sOut.Append( '(' );
- sOut.Append( String(URIHelper::simpleNormalizedMakeRelative(rWrt.GetBaseURL(),
- *pLink)));
+ sOut += " ";
- sOut.Append( ')' );
+ sOut += OStringToOUString(sCSS1_url, RTL_TEXTENCODING_ASCII_US) +
+ "(\'" + OOO_STRING_SVTOOLS_HTML_O_data + ":" + aGraphicInBase64 + "\')";
if( pRepeat )
{
- sOut.Append( ' ' );
- sOut.AppendAscii( pRepeat );
+ sOut += " " + OStringToOUString(pRepeat, RTL_TEXTENCODING_ASCII_US);
}
if( pHori )
{
- sOut.Append( ' ' );
- sOut.AppendAscii( pHori );
+ sOut += " " + OStringToOUString(pHori, RTL_TEXTENCODING_ASCII_US);
}
if( pVert )
{
- sOut.Append( ' ' );
- sOut.AppendAscii( pVert );
+ sOut += " " + OStringToOUString(pVert, RTL_TEXTENCODING_ASCII_US);
}
- sOut.Append( ' ' );
- sOut.AppendAscii( sCSS1_PV_scroll );
+ sOut += " " + OStringToOUString(sCSS1_PV_scroll, RTL_TEXTENCODING_ASCII_US) + " ";
}
}
- if( sOut.Len() )
+ if( !sOut.isEmpty() )
rHTMLWrt.OutCSS1_Property( sCSS1_P_background, sOut );
return rWrt;
diff --git a/sw/source/filter/html/htmlatr.cxx b/sw/source/filter/html/htmlatr.cxx
index 2ce7beb49046..57f9be726dfd 100644
--- a/sw/source/filter/html/htmlatr.cxx
+++ b/sw/source/filter/html/htmlatr.cxx
@@ -977,8 +977,7 @@ void OutHTML_SwFmt( Writer& rWrt, const SwFmt& rFmt,
OSL_ENSURE( aNumInfo.GetNumRule(), "Wo ist die Numerierung geblieben???" );
OSL_ENSURE( nBulletGrfLvl < MAXLEVEL, "So viele Ebenen gibt's nicht" );
const SwNumFmt& rNumFmt = aNumInfo.GetNumRule()->Get(nBulletGrfLvl);
-
- OutHTML_BulletImage( rWrt, OOO_STRING_SVTOOLS_HTML_image, 0,
+ OutHTML_BulletImage( rWrt, OOO_STRING_SVTOOLS_HTML_image, rNumFmt.GetBrush(),
rHWrt.aBulletGrfs[nBulletGrfLvl],
rNumFmt.GetGraphicSize(), rNumFmt.GetGraphicOrientation() );
}
@@ -2592,7 +2591,7 @@ Writer& OutHTML_SwTxtNode( Writer& rWrt, const SwCntntNode& rNode )
else
pStr = OOO_STRING_SVTOOLS_HTML_AL_right;
- OStringBuffer sOut(RTL_CONSTASCII_STRINGPARAM(OOO_STRING_SVTOOLS_HTML_linebreak));
+ OStringBuffer sOut(OOO_STRING_SVTOOLS_HTML_linebreak);
sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_clear).append('=').append(pStr);
HTMLOutFuncs::Out_AsciiTag( rHTMLWrt.Strm(), sOut.getStr() );
diff --git a/sw/source/filter/html/htmlfly.cxx b/sw/source/filter/html/htmlfly.cxx
index f17643b4e988..0bac1d75d41e 100644
--- a/sw/source/filter/html/htmlfly.cxx
+++ b/sw/source/filter/html/htmlfly.cxx
@@ -39,7 +39,6 @@
#include <editeng/ulspitem.hxx>
#include <editeng/brushitem.hxx>
-
#include <fmtanchr.hxx>
#include <fmtornt.hxx>
#include <fmturl.hxx>
@@ -54,6 +53,8 @@
#include <flypos.hxx>
#include <docary.hxx>
#include <ndgrf.hxx>
+#include <vcl/cvtgrf.hxx>
+#include <sax/tools/converter.hxx>
#include "doc.hxx"
#include "ndtxt.hxx"
@@ -65,7 +66,6 @@
#include "htmlfly.hxx"
using namespace ::com::sun::star;
-
////////////////////////////////////////////////////////////
const sal_uLong HTML_FRMOPTS_IMG_ALL =
@@ -144,6 +144,7 @@ static Writer& OutHTML_FrmFmtGrfNode( Writer& rWrt, const SwFrmFmt& rFmt,
static Writer& OutHTML_FrmFmtAsMarquee( Writer& rWrt, const SwFrmFmt& rFrmFmt,
const SdrObject& rSdrObj );
+
//-----------------------------------------------------------------------
extern HTMLOutEvent aAnchorEventTable[];
@@ -544,7 +545,7 @@ OString SwHTMLWriter::OutFrmFmtOptions( const SwFrmFmt &rFrmFmt,
const sal_Char *pStr =
(nFrmOpts & HTML_FRMOPT_ID) ? OOO_STRING_SVTOOLS_HTML_O_id : OOO_STRING_SVTOOLS_HTML_O_name;
sOut.append(' ').append(pStr).
- append(RTL_CONSTASCII_STRINGPARAM("=\""));
+ append("=\"");
Strm() << sOut.makeStringAndClear().getStr();
HTMLOutFuncs::Out_String( Strm(), rFrmFmt.GetName(), eDestEnc, &aNonConvertableCharacters );
sOut.append('\"');
@@ -563,7 +564,7 @@ OString SwHTMLWriter::OutFrmFmtOptions( const SwFrmFmt &rFrmFmt,
if( (nFrmOpts & HTML_FRMOPT_ALT) && rAlternateTxt.Len() )
{
sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_alt).
- append(RTL_CONSTASCII_STRINGPARAM("=\""));
+ append("=\"");
Strm() << sOut.makeStringAndClear().getStr();
HTMLOutFuncs::Out_String( Strm(), rAlternateTxt, eDestEnc, &aNonConvertableCharacters );
sOut.append('\"');
@@ -813,9 +814,8 @@ OString SwHTMLWriter::OutFrmFmtOptions( const SwFrmFmt &rFrmFmt,
return sRetEndTags;
}
-
Writer& OutHTML_Image( Writer& rWrt, const SwFrmFmt &rFrmFmt,
- const String &rGrfName, const String& rAlternateTxt,
+ Graphic& rGraphic, const String& rAlternateTxt,
const Size &rRealSize, sal_uInt32 nFrmOpts,
const sal_Char *pMarkType,
const ImageMap *pAltImgMap )
@@ -829,10 +829,6 @@ Writer& OutHTML_Image( Writer& rWrt, const SwFrmFmt &rFrmFmt,
OutHTML_INetFmt( rWrt, *pINetFmt, sal_False );
}
- String aGrfNm( rGrfName );
- if( !HTMLOutFuncs::PrivateURLToInternalImg(aGrfNm) )
- aGrfNm = URIHelper::simpleNormalizedMakeRelative( rWrt.GetBaseURL(), aGrfNm);
-
const SfxPoolItem* pItem;
const SfxItemSet& rItemSet = rFrmFmt.GetAttrSet();
@@ -1022,7 +1018,7 @@ Writer& OutHTML_Image( Writer& rWrt, const SwFrmFmt &rFrmFmt,
if( aName.Len() )
{
sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_name).
- append(RTL_CONSTASCII_STRINGPARAM("=\""));
+ append("=\"");
rWrt.Strm() << sOut.makeStringAndClear().getStr();
HTMLOutFuncs::Out_String( rWrt.Strm(), aName,
rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
@@ -1032,7 +1028,7 @@ Writer& OutHTML_Image( Writer& rWrt, const SwFrmFmt &rFrmFmt,
if( aTarget.Len() )
{
sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_target).
- append(RTL_CONSTASCII_STRINGPARAM("=\""));
+ append("=\"");
rWrt.Strm() << sOut.makeStringAndClear().getStr();
HTMLOutFuncs::Out_String( rWrt.Strm(), aTarget,
rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
@@ -1056,7 +1052,7 @@ Writer& OutHTML_Image( Writer& rWrt, const SwFrmFmt &rFrmFmt,
rWrt.Strm() << ">";
aEndTags = OStringBuffer().append("</").
append(OOO_STRING_SVTOOLS_HTML_anchor).
- append(RTL_CONSTASCII_STRINGPARAM(">")).append(aEndTags).
+ append(">").append(aEndTags).
makeStringAndClear();
}
}
@@ -1129,7 +1125,7 @@ Writer& OutHTML_Image( Writer& rWrt, const SwFrmFmt &rFrmFmt,
pColBorderLine->GetColor(), rHTMLWrt.eDestEnc ) << '>';
aEndTags = OStringBuffer().
- append(RTL_CONSTASCII_STRINGPARAM("</")).
+ append("</").
append(OOO_STRING_SVTOOLS_HTML_font).
append('>').append(aEndTags).makeStringAndClear();
}
@@ -1138,9 +1134,16 @@ Writer& OutHTML_Image( Writer& rWrt, const SwFrmFmt &rFrmFmt,
sOut.append('<');
sOut.append(OOO_STRING_SVTOOLS_HTML_image).append(' ').
append(OOO_STRING_SVTOOLS_HTML_O_src).
- append(RTL_CONSTASCII_STRINGPARAM("=\""));
+ append("=\"").append(OOO_STRING_SVTOOLS_HTML_O_data).append(":");
rWrt.Strm() << sOut.makeStringAndClear().getStr();
- HTMLOutFuncs::Out_String( rWrt.Strm(), aGrfNm, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters ) << '\"';
+
+ OUString aGraphicInBase64;
+ sal_uLong nErr = XOutBitmap::GraphicToBase64(rGraphic, aGraphicInBase64);
+ if( nErr )
+ {
+ rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
+ }
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aGraphicInBase64, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters ) << '\"';
// Events
if( SFX_ITEM_SET == rItemSet.GetItemState( RES_FRMMACRO, sal_True, &pItem ))
@@ -1174,7 +1177,7 @@ Writer& OutHTML_Image( Writer& rWrt, const SwFrmFmt &rFrmFmt,
if( aIMapName.Len() )
{
sOut.append(' ').append(OOO_STRING_SVTOOLS_HTML_O_usemap).
- append(RTL_CONSTASCII_STRINGPARAM("=\"#"));
+ append("=\"#");
rWrt.Strm() << sOut.makeStringAndClear().getStr();
HTMLOutFuncs::Out_String( rWrt.Strm(), aIMapName, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters ) << '\"';
}
@@ -1204,51 +1207,31 @@ Writer& OutHTML_BulletImage( Writer& rWrt,
{
SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
- // Wenn es ein BrushItem gibt, muss die Grafiknoch exportiert werden
+ //Wenn es ein BrushItem gibt, muss die Grafiknoch exportiert werden
const String *pLink = 0;
+ OUString aGraphicInBase64;
if( pBrush )
{
pLink = pBrush->GetGraphicLink();
- // embeddete Grafik -> WriteEmbedded schreiben
+ //embeddete Grafik -> WriteEmbedded schreiben
if( !pLink )
{
const Graphic* pGrf = pBrush->GetGraphic();
if( pGrf )
{
+ const Graphic* aGraphic = pBrush->GetGraphic();
+ sal_uLong nErr = XOutBitmap::GraphicToBase64(*aGraphic, aGraphicInBase64);
+ if( nErr )
+ {
+ rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
+ }
// Grafik als (JPG-)File speichern
if( rHTMLWrt.GetOrigFileName() )
rGrfName = *rHTMLWrt.GetOrigFileName();
- sal_uInt16 nErr = XOutBitmap::WriteGraphic( *pGrf, rGrfName,
- OUString("JPG"),
- (XOUTBMP_USE_GIF_IF_SENSIBLE |
- XOUTBMP_USE_NATIVE_IF_POSSIBLE));
- if( !nErr )
- {
- rGrfName = URIHelper::SmartRel2Abs(
- INetURLObject( rWrt.GetBaseURL() ), rGrfName,
- URIHelper::GetMaybeFileHdl() );
pLink = &rGrfName;
- }
- else
- {
- rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
- }
}
}
- else
- {
- rGrfName = *pLink;
- if( rHTMLWrt.bCfgCpyLinkedGrfs )
- {
- rHTMLWrt.CopyLocalFileToINet( rGrfName );
- pLink = &rGrfName;
- }
- }
- }
- else
- {
- pLink = &rGrfName;
}
OStringBuffer sOut;
@@ -1258,13 +1241,10 @@ Writer& OutHTML_BulletImage( Writer& rWrt,
if( pLink )
{
sOut.append(' ');
- String s( *pLink );
- if( !HTMLOutFuncs::PrivateURLToInternalImg(s) )
- s = URIHelper::simpleNormalizedMakeRelative( rWrt.GetBaseURL(), s);
- sOut.append(OOO_STRING_SVTOOLS_HTML_O_src).
- append(RTL_CONSTASCII_STRINGPARAM("=\""));
+ sOut.append(OOO_STRING_SVTOOLS_HTML_O_src).append("=\"").
+ append(OOO_STRING_SVTOOLS_HTML_O_data).append(":");
rWrt.Strm() << sOut.makeStringAndClear().getStr();
- HTMLOutFuncs::Out_String( rWrt.Strm(), s, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
+ HTMLOutFuncs::Out_String( rWrt.Strm(), aGraphicInBase64, rHTMLWrt.eDestEnc, &rHTMLWrt.aNonConvertableCharacters );
sOut.append('\"');
// Groesse des Objekts Twips ohne Raender
@@ -1547,32 +1527,13 @@ static Writer& OutHTML_FrmFmtAsDivOrSpan( Writer& rWrt,
static Writer & OutHTML_FrmFmtAsImage( Writer& rWrt, const SwFrmFmt& rFrmFmt,
sal_Bool /*bInCntnr*/ )
{
- SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
-
ImageMap aIMap;
- Graphic aGrf( ((SwFrmFmt &)rFrmFmt).MakeGraphic( &aIMap ) );
-
- String aGrfNm;
- if( rHTMLWrt.GetOrigFileName() )
- aGrfNm = *rHTMLWrt.GetOrigFileName();
- if( aGrf.GetType() == GRAPHIC_NONE ||
- XOutBitmap::WriteGraphic( aGrf, aGrfNm,
- OUString("JPG"),
- (XOUTBMP_USE_GIF_IF_POSSIBLE|
- XOUTBMP_USE_NATIVE_IF_POSSIBLE) ) != 0 )
- {
- // leer oder fehlerhaft, da ist nichts auszugeben
- rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
- return rWrt;
- }
-
- aGrfNm = URIHelper::SmartRel2Abs(
- INetURLObject(rWrt.GetBaseURL()), aGrfNm,
- URIHelper::GetMaybeFileHdl() );
+ Graphic aGraphic( ((SwFrmFmt &)rFrmFmt).MakeGraphic( &aIMap ) );
Size aSz( 0, 0 );
- OutHTML_Image( rWrt, rFrmFmt, aGrfNm, rFrmFmt.GetName(), aSz,
+ OutHTML_Image( rWrt, rFrmFmt, aGraphic, rFrmFmt.GetName(), aSz,
HTML_FRMOPTS_GENIMG, pMarkToFrame,
aIMap.GetIMapObjectCount() ? &aIMap : 0 );
+
return rWrt;
}
@@ -1589,55 +1550,13 @@ static Writer& OutHTML_FrmFmtGrfNode( Writer& rWrt, const SwFrmFmt& rFrmFmt,
if( !pGrfNd )
return rWrt;
- const SwMirrorGrf& rMirror = pGrfNd->GetSwAttrSet().GetMirrorGrf();
-
- String aGrfNm;
- if( !pGrfNd->IsLinkedFile() || RES_MIRROR_GRAPH_DONT != rMirror.GetValue() )
- {
- // Grafik als File-Referenz speichern (als JPEG-Grafik speichern)
- if( rHTMLWrt.GetOrigFileName() )
- aGrfNm = *rHTMLWrt.GetOrigFileName();
- pGrfNd->SwapIn( sal_True );
-
- sal_uLong nFlags = XOUTBMP_USE_GIF_IF_SENSIBLE |
- XOUTBMP_USE_NATIVE_IF_POSSIBLE;
- switch( rMirror.GetValue() )
- {
- case RES_MIRROR_GRAPH_VERT: nFlags = XOUTBMP_MIRROR_HORZ; break;
- case RES_MIRROR_GRAPH_HOR: nFlags = XOUTBMP_MIRROR_VERT; break;
- case RES_MIRROR_GRAPH_BOTH:
- nFlags = XOUTBMP_MIRROR_VERT | XOUTBMP_MIRROR_HORZ;
- break;
- }
-
- Size aMM100Size;
- const SwFmtFrmSize& rSize = rFrmFmt.GetFrmSize();
- aMM100Size = OutputDevice::LogicToLogic( rSize.GetSize(),
- MapMode( MAP_TWIP ), MapMode( MAP_100TH_MM ));
-
- sal_uInt16 nErr = XOutBitmap::WriteGraphic( pGrfNd->GetGrf(), aGrfNm,
- OUString("JPG"), nFlags, &aMM100Size );
- if( nErr ) // fehlerhaft, da ist nichts auszugeben
- {
- rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
- return rWrt;
- }
- aGrfNm = URIHelper::SmartRel2Abs(
- INetURLObject(rWrt.GetBaseURL()), aGrfNm,
- URIHelper::GetMaybeFileHdl() );
- }
- else
- {
- pGrfNd->GetFileFilterNms( &aGrfNm, 0 );
- if( rHTMLWrt.bCfgCpyLinkedGrfs )
- rWrt.CopyLocalFileToINet( aGrfNm );
- }
-
sal_uLong nFrmFlags = bInCntnr ? HTML_FRMOPTS_IMG_CNTNR : HTML_FRMOPTS_IMG;
if( rHTMLWrt.IsHTMLMode( HTMLMODE_ABS_POS_FLY ) && !bInCntnr )
- nFrmFlags |= HTML_FRMOPTS_IMG_CSS1;
- OutHTML_Image( rWrt, rFrmFmt, aGrfNm, pGrfNd->GetTitle(),
- pGrfNd->GetTwipSize(), nFrmFlags, pMarkToGraphic );
+ nFrmFlags |= HTML_FRMOPTS_IMG_CSS1;
+
+ Graphic aGraphic = pGrfNd->GetGraphic();
+ OutHTML_Image( rWrt, rFrmFmt, aGraphic, pGrfNd->GetTitle(),
+ pGrfNd->GetTwipSize(), nFrmFlags, pMarkToGraphic );
return rWrt;
}
diff --git a/sw/source/filter/html/htmlnum.cxx b/sw/source/filter/html/htmlnum.cxx
index 9d1620a7e3b3..be594f2cb6e7 100644
--- a/sw/source/filter/html/htmlnum.cxx
+++ b/sw/source/filter/html/htmlnum.cxx
@@ -821,10 +821,9 @@ Writer& OutHTML_NumBulListStart( SwHTMLWriter& rWrt,
}
else if( SVX_NUM_BITMAP == eType )
{
- // Aufzaehlungs-Liste: <OL>
+ // Unordered list: <UL>
sOut.append(OOO_STRING_SVTOOLS_HTML_unorderlist);
rWrt.Strm() << sOut.makeStringAndClear().getStr();
-
OutHTML_BulletImage( rWrt,
0,
rNumFmt.GetBrush(),
@@ -834,7 +833,7 @@ Writer& OutHTML_NumBulListStart( SwHTMLWriter& rWrt,
}
else
{
- // Numerierungs-Liste: <UL>
+ // Ordered list: <OL>
sOut.append(OOO_STRING_SVTOOLS_HTML_orderlist);
// den Typ ueber das Format bestimmen
diff --git a/sw/source/filter/html/htmlplug.cxx b/sw/source/filter/html/htmlplug.cxx
index d6f1a3a7df9f..90007cc301fd 100644
--- a/sw/source/filter/html/htmlplug.cxx
+++ b/sw/source/filter/html/htmlplug.cxx
@@ -56,6 +56,8 @@
#include <comphelper/embeddedobjectcontainer.hxx>
#include <comphelper/classids.hxx>
+#include <vcl/cvtgrf.hxx>
+#include <sax/tools/converter.hxx>
using namespace com::sun::star;
@@ -1258,27 +1260,10 @@ Writer& OutHTML_FrmFmtOLENodeGrf( Writer& rWrt, const SwFrmFmt& rFrmFmt,
return rWrt;
{
- Graphic aGrf( *pOLENd->GetGraphic() );
- String aGrfNm;
- const String* pTempFileName = rHTMLWrt.GetOrigFileName();
- if(pTempFileName)
- aGrfNm = *pTempFileName;
-
- sal_uInt16 nErr = XOutBitmap::WriteGraphic( aGrf, aGrfNm,
- OUString("JPG"),
- (XOUTBMP_USE_GIF_IF_POSSIBLE |
- XOUTBMP_USE_NATIVE_IF_POSSIBLE) );
- if( nErr ) // fehlerhaft, da ist nichts auszugeben
- {
- rHTMLWrt.nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
- return rWrt;
- }
- aGrfNm = URIHelper::SmartRel2Abs(
- INetURLObject(rWrt.GetBaseURL()), aGrfNm,
- URIHelper::GetMaybeFileHdl() );
+ Graphic aGraphic( *pOLENd->GetGraphic() );
sal_uLong nFlags = bInCntnr ? HTML_FRMOPTS_GENIMG_CNTNR
: HTML_FRMOPTS_GENIMG;
- OutHTML_Image( rWrt, rFrmFmt, aGrfNm,
+ OutHTML_Image( rWrt, rFrmFmt, aGraphic,
pOLENd->GetTitle(), pOLENd->GetTwipSize(),
nFlags, pMarkToOLE );
}
diff --git a/sw/source/filter/html/htmltabw.cxx b/sw/source/filter/html/htmltabw.cxx
index 3438ab32702a..1e940b8bd3a7 100644
--- a/sw/source/filter/html/htmltabw.cxx
+++ b/sw/source/filter/html/htmltabw.cxx
@@ -429,8 +429,7 @@ void SwHTMLWrtTable::OutTableCell( SwHTMLWriter& rWrt,
if( pBrushItem )
{
// Hintergrund ausgeben
- String aDummy;
- rWrt.OutBackground( pBrushItem, aDummy, sal_False );
+ rWrt.OutBackground( pBrushItem, sal_False );
if( rWrt.bCfgOutStyles )
OutCSS1_TableBGStyleOpt( rWrt, *pBrushItem );
@@ -538,8 +537,7 @@ void SwHTMLWrtTable::OutTableCells( SwHTMLWriter& rWrt,
rWrt.Strm() << '<' << OOO_STRING_SVTOOLS_HTML_tablerow;
if( pBrushItem )
{
- String aDummy;
- rWrt.OutBackground( pBrushItem, aDummy, sal_False );
+ rWrt.OutBackground( pBrushItem, sal_False );
rWrt.bTxtAttr = sal_False;
rWrt.bOutOpts = sal_True;
@@ -729,8 +727,7 @@ void SwHTMLWrtTable::Write( SwHTMLWriter& rWrt, sal_Int16 eAlign,
// Hintergrund ausgeben
if( pFrmFmt )
{
- String aDummy;
- rWrt.OutBackground( pFrmFmt->GetAttrSet(), aDummy, sal_False );
+ rWrt.OutBackground( pFrmFmt->GetAttrSet(), sal_False );
if( rWrt.bCfgOutStyles && pFrmFmt )
rWrt.OutCSS1_TableFrmFmtOptions( *pFrmFmt );
diff --git a/sw/source/filter/html/wrthtml.cxx b/sw/source/filter/html/wrthtml.cxx
index 58b747897507..124e79f5cf9a 100644
--- a/sw/source/filter/html/wrthtml.cxx
+++ b/sw/source/filter/html/wrthtml.cxx
@@ -1001,14 +1001,13 @@ const SwPageDesc *SwHTMLWriter::MakeHeader( sal_uInt16 &rHeaderAttrs )
const SfxItemSet& rItemSet = pPageDesc->GetMaster().GetAttrSet();
- String aEmbGrfName;
- OutBackground( rItemSet, aEmbGrfName, sal_True );
+ OutBackground( rItemSet, sal_True );
nDirection = GetHTMLDirection( rItemSet );
OutDirection( nDirection );
if( bCfgOutStyles )
- OutCSS1_BodyTagStyleOpt( *this, rItemSet, aEmbGrfName );
+ OutCSS1_BodyTagStyleOpt( *this, rItemSet );
// Events anhaengen
if( pDoc->GetDocShell() ) // nur mit DocShell ist Basic moeglich
@@ -1114,8 +1113,7 @@ void SwHTMLWriter::OutHyperlinkHRefValue( const String& rURL )
&aNonConvertableCharacters );
}
-void SwHTMLWriter::OutBackground( const SvxBrushItem *pBrushItem,
- String& rEmbGrfNm, sal_Bool bGraphic )
+void SwHTMLWriter::OutBackground( const SvxBrushItem *pBrushItem, sal_Bool bGraphic )
{
const Color &rBackColor = pBrushItem->GetColor();
/// check, if background color is not "no fill"/"auto fill", instead of
@@ -1131,60 +1129,28 @@ void SwHTMLWriter::OutBackground( const SvxBrushItem *pBrushItem,
if( !bGraphic )
return;
- const String *pLink = pBrushItem->GetGraphicLink();
-
- // embeddete Grafik -> WriteEmbedded schreiben
- if( !pLink )
- {
- const Graphic* pGrf = pBrushItem->GetGraphic();
- if( pGrf )
- {
- // Grafik als (JPG-)File speichern
- const String* pTempFileName = GetOrigFileName();
- if(pTempFileName)
- rEmbGrfNm = *pTempFileName;
- sal_uInt16 nErr = XOutBitmap::WriteGraphic( *pGrf, rEmbGrfNm,
- OUString("JPG"),
- XOUTBMP_USE_NATIVE_IF_POSSIBLE );
- if( !nErr ) // fehlerhaft, da ist nichts auszugeben
- {
- rEmbGrfNm = URIHelper::SmartRel2Abs(
- INetURLObject( GetBaseURL() ), rEmbGrfNm,
- URIHelper::GetMaybeFileHdl() );
- pLink = &rEmbGrfNm;
- }
- else
- {
- nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
- }
- }
- }
- else
+ OUString aGraphicInBase64;
+ const Graphic* pGrf = pBrushItem->GetGraphic();
+ if( pGrf )
{
- rEmbGrfNm = *pLink;
- if( bCfgCpyLinkedGrfs )
+ sal_uLong nErr = XOutBitmap::GraphicToBase64(*pGrf, aGraphicInBase64);
+ if( nErr )
{
- CopyLocalFileToINet( rEmbGrfNm );
- pLink = &rEmbGrfNm;
+ nWarn = WARN_SWG_POOR_LOAD | WARN_SW_WRITE_BASE;
}
- }
-
- if( pLink )
- {
- String s( URIHelper::simpleNormalizedMakeRelative( GetBaseURL(), *pLink));
Strm() << " " OOO_STRING_SVTOOLS_HTML_O_background "=\"";
- HTMLOutFuncs::Out_String( Strm(), s, eDestEnc, &aNonConvertableCharacters ) << '\"';
+ Strm() << OOO_STRING_SVTOOLS_HTML_O_data ":";
+ HTMLOutFuncs::Out_String( Strm(), aGraphicInBase64, eDestEnc, &aNonConvertableCharacters ) << '\"';
}
}
-void SwHTMLWriter::OutBackground( const SfxItemSet& rItemSet,
- String& rEmbGrfNm, sal_Bool bGraphic )
+void SwHTMLWriter::OutBackground( const SfxItemSet& rItemSet, sal_Bool bGraphic )
{
const SfxPoolItem* pItem;
if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BACKGROUND, sal_False,
&pItem ))
{
- OutBackground( ((const SvxBrushItem*)pItem), rEmbGrfNm, bGraphic );
+ OutBackground( ((const SvxBrushItem*)pItem), bGraphic );
}
}
diff --git a/sw/source/filter/html/wrthtml.hxx b/sw/source/filter/html/wrthtml.hxx
index fa14c746ab2f..a3fbb09bb795 100644
--- a/sw/source/filter/html/wrthtml.hxx
+++ b/sw/source/filter/html/wrthtml.hxx
@@ -456,10 +456,8 @@ public:
void OutBasicBodyEvents();
// BACKGROUND/BGCOLOR-Option
- void OutBackground( const SvxBrushItem *pBrushItem, String& rEmbGrfNm,
- sal_Bool bGraphic );
- void OutBackground( const SfxItemSet& rItemSet, String &rEmbGrfName,
- sal_Bool bGraphic );
+ void OutBackground( const SvxBrushItem *pBrushItem, sal_Bool bGraphic );
+ void OutBackground( const SfxItemSet& rItemSet, sal_Bool bGraphic );
void OutLanguage( LanguageType eLang );
sal_uInt16 GetHTMLDirection( sal_uInt16 nDir ) const;
@@ -632,10 +630,11 @@ Writer& OutHTML_HeaderFooter( Writer& rWrt, const SwFrmFmt& rFrmFmt,
sal_Bool bHeader );
Writer& OutHTML_Image( Writer&, const SwFrmFmt& rFmt,
- const String& rGrfName, const String& rAlternateTxt,
+ Graphic& rGraphic, const String& rAlternateTxt,
const Size& rRealSize, sal_uInt32 nFrmOpts,
const sal_Char *pMarkType = 0,
const ImageMap *pGenImgMap = 0 );
+
Writer& OutHTML_BulletImage( Writer& rWrt, const sal_Char *pTag,
const SvxBrushItem* pBrush, String &rGrfName,
const Size &rSize,
@@ -645,8 +644,7 @@ Writer& OutHTML_SwFmtFld( Writer& rWrt, const SfxPoolItem& rHt );
Writer& OutHTML_SwFmtFtn( Writer& rWrt, const SfxPoolItem& rHt );
Writer& OutHTML_INetFmt( Writer&, const SwFmtINetFmt& rINetFmt, sal_Bool bOn );
-Writer& OutCSS1_BodyTagStyleOpt( Writer& rWrt, const SfxItemSet& rItemSet,
- String aEmbBGGrfName );
+Writer& OutCSS1_BodyTagStyleOpt( Writer& rWrt, const SfxItemSet& rItemSet );
Writer& OutCSS1_ParaTagStyleOpt( Writer& rWrt, const SfxItemSet& rItemSet );
Writer& OutCSS1_HintSpanTag( Writer& rWrt, const SfxPoolItem& rHt );