summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2019-03-12 10:21:36 +0100
committerMiklos Vajna <vmiklos@collabora.com>2019-03-12 11:24:53 +0100
commit507ac9b8c20926de7479213cf2d890bbb5952a1d (patch)
treebab228678cf1067ee7db824aabe7a0b2357f1261
parent2f7c3cce2699901c0ffe3780cfad0376a5d1a519 (diff)
sw HTML export: handle field shadings view option
Regardless of the value of the View -> Field Shadings option, shadings were always lost when saving to HTML. Implement handling of this in the HTML conditionally, so in case that UI option is on, then shadings are preserved in the HTML result; disabling that option results in the old behavior, though. Change-Id: I1bd19f4c6e22aff2f84fac25f0a506ad0127cc3c Reviewed-on: https://gerrit.libreoffice.org/69081 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
-rw-r--r--sw/qa/extras/htmlexport/data/field-shade.odtbin0 -> 8249 bytes
-rw-r--r--sw/qa/extras/htmlexport/htmlexport.cxx10
-rw-r--r--sw/source/filter/html/css1atr.cxx18
-rw-r--r--sw/source/filter/html/htmlfldw.cxx23
-rw-r--r--sw/source/filter/html/wrthtml.hxx2
5 files changed, 44 insertions, 9 deletions
diff --git a/sw/qa/extras/htmlexport/data/field-shade.odt b/sw/qa/extras/htmlexport/data/field-shade.odt
new file mode 100644
index 000000000000..38debcb48d0b
--- /dev/null
+++ b/sw/qa/extras/htmlexport/data/field-shade.odt
Binary files differ
diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx b/sw/qa/extras/htmlexport/htmlexport.cxx
index c2d8143b67b9..170213e16699 100644
--- a/sw/qa/extras/htmlexport/htmlexport.cxx
+++ b/sw/qa/extras/htmlexport/htmlexport.cxx
@@ -670,6 +670,16 @@ DECLARE_HTMLEXPORT_TEST(testNoLangReqIf, "reqif-no-lang.odt")
assertXPathNoAttribute(pDoc, "/reqif-xhtml:html/reqif-xhtml:div/reqif-xhtml:h1", "lang");
}
+DECLARE_HTMLEXPORT_TEST(testFieldShade, "field-shade.odt")
+{
+ htmlDocPtr pDoc = parseHtml(maTempFile);
+ CPPUNIT_ASSERT(pDoc);
+
+ // Without the accompanying fix in place, this test would have failed with 'Expected: 1; Actual:
+ // 0', i.e. shading for the field was lost.
+ assertXPath(pDoc, "/html/body/p[1]/span", "style", "background: #c0c0c0");
+}
+
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/html/css1atr.cxx b/sw/source/filter/html/css1atr.cxx
index a6599a50705d..dd6f6564a4f6 100644
--- a/sw/source/filter/html/css1atr.cxx
+++ b/sw/source/filter/html/css1atr.cxx
@@ -184,11 +184,6 @@ OString lclConvToHex(sal_uInt16 nHex)
return OString(aNToABuf, 2);
}
-OString lclGetCSS1Color(const Color& rColor)
-{
- return "#" + lclConvToHex(rColor.GetRed()) + lclConvToHex(rColor.GetGreen()) + lclConvToHex(rColor.GetBlue());
-}
-
/// Determines if rProperty has to be suppressed due to ReqIF mode.
bool IgnorePropertyForReqIF(bool bReqIF, const OString& rProperty)
{
@@ -206,6 +201,11 @@ bool IgnorePropertyForReqIF(bool bReqIF, const OString& rProperty)
}
}
+OString GetCSS1_Color(const Color& rColor)
+{
+ return "#" + lclConvToHex(rColor.GetRed()) + lclConvToHex(rColor.GetGreen()) + lclConvToHex(rColor.GetBlue());
+}
+
class SwCSS1OutMode
{
SwHTMLWriter& rWrt;
@@ -2232,7 +2232,7 @@ void SwHTMLWriter::OutCSS1_FrameFormatBackground( const SwFrameFormat& rFrameFor
aColor = pVSh->GetViewOptions()->GetRetoucheColor();
}
- OutCSS1_PropertyAscii(sCSS1_P_background, lclGetCSS1Color(aColor));
+ OutCSS1_PropertyAscii(sCSS1_P_background, GetCSS1_Color(aColor));
}
}
@@ -2407,7 +2407,7 @@ static Writer& OutCSS1_SvxColor( Writer& rWrt, const SfxPoolItem& rHt )
if( COL_AUTO == aColor )
aColor = COL_BLACK;
- rHTMLWrt.OutCSS1_PropertyAscii(sCSS1_P_color, lclGetCSS1Color(aColor));
+ rHTMLWrt.OutCSS1_PropertyAscii(sCSS1_P_color, GetCSS1_Color(aColor));
return rWrt;
}
@@ -3264,7 +3264,7 @@ static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt,
{
if( bColor )
{
- OString sTmp(lclGetCSS1Color(aColor));
+ OString sTmp(GetCSS1_Color(aColor));
sOut += OStringToOUString(sTmp, RTL_TEXTENCODING_ASCII_US);
}
@@ -3379,7 +3379,7 @@ static void OutCSS1_SvxBorderLine( SwHTMLWriter& rHTMLWrt,
sOut.append(' ');
// and also the color
- sOut.append(lclGetCSS1Color(pLine->GetColor()));
+ sOut.append(GetCSS1_Color(pLine->GetColor()));
rHTMLWrt.OutCSS1_PropertyAscii(pProperty, sOut.makeStringAndClear());
}
diff --git a/sw/source/filter/html/htmlfldw.cxx b/sw/source/filter/html/htmlfldw.cxx
index 7100a16b6f28..e70e856bae81 100644
--- a/sw/source/filter/html/htmlfldw.cxx
+++ b/sw/source/filter/html/htmlfldw.cxx
@@ -32,10 +32,12 @@
#include <fldbas.hxx>
#include <docufld.hxx>
#include <flddat.hxx>
+#include <viewopt.hxx>
#include "htmlfld.hxx"
#include "wrthtml.hxx"
#include <rtl/strbuf.hxx>
#include "css1atr.hxx"
+#include "css1kywd.hxx"
using namespace nsSwDocInfoSubType;
@@ -535,8 +537,29 @@ Writer& OutHTML_SwFormatField( Writer& rWrt, const SfxPoolItem& rHt )
const SwTextField *pTextField = rField.GetTextField();
OSL_ENSURE( pTextField, "Where is the txt fld?" );
if( pTextField )
+ {
+ SwHTMLWriter& rHTMLWrt = static_cast<SwHTMLWriter&>(rWrt);
+ if (SwViewOption::IsFieldShadings())
+ {
+ OStringBuffer sOut;
+ sOut.append("<" + rHTMLWrt.GetNamespace() + OOO_STRING_SVTOOLS_HTML_span);
+ sOut.append(" " OOO_STRING_SVTOOLS_HTML_O_style "=\"");
+ sOut.append(sCSS1_P_background);
+ sOut.append(": ");
+
+ Color& rColor = SwViewOption::GetFieldShadingsColor();
+ sOut.append(GetCSS1_Color(rColor));
+ sOut.append("\">");
+ rWrt.Strm().WriteCharPtr(sOut.getStr());
+ }
+
OutHTML_SwField( rWrt, pField, pTextField->GetTextNode(),
pTextField->GetStart() );
+
+ if (SwViewOption::IsFieldShadings())
+ HTMLOutFuncs::Out_AsciiTag(
+ rWrt.Strm(), rHTMLWrt.GetNamespace() + OOO_STRING_SVTOOLS_HTML_span, false);
+ }
}
return rWrt;
}
diff --git a/sw/source/filter/html/wrthtml.hxx b/sw/source/filter/html/wrthtml.hxx
index e06c4190aa4d..9c96d8680232 100644
--- a/sw/source/filter/html/wrthtml.hxx
+++ b/sw/source/filter/html/wrthtml.hxx
@@ -683,6 +683,8 @@ Writer& OutHTML_NumBulListEnd( SwHTMLWriter& rWrt,
Writer& OutCSS1_SvxBox( Writer& rWrt, const SfxPoolItem& rHt );
+OString GetCSS1_Color(const Color& rColor);
+
#endif // INCLUDED_SW_SOURCE_FILTER_HTML_WRTHTML_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */