tdf#113050 sdext.pdfimport: Create the fill-image style and use it
In a poly which is being image filled, we need to create a style with the actual image definition in the 'Contents' and then set the (automatically created) name of this in the prop on the main style. Also we need to set draw:fill to "bitmap" rather than "solid" Change-Id: I253704519011e98fd106331ccfb139ad93ef6dee Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163572 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
parent
9f21f816a1
commit
4b295b1b77
2 changed files with 40 additions and 2 deletions
|
@ -817,10 +817,29 @@ void DrawXmlFinalizer::visit( PolyPolyElement& elem, const std::list< std::uniqu
|
||||||
aGCProps[ "draw:stroke" ] = "none";
|
aGCProps[ "draw:stroke" ] = "none";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (elem.FillImage != -1)
|
||||||
|
{
|
||||||
|
PropertyMap props;
|
||||||
|
// The image isn't actually in a prop, it's in an extra chunk inside.
|
||||||
|
StyleContainer::Style style("draw:fill-image"_ostr, std::move(props));
|
||||||
|
style.Contents = m_rProcessor.getImages().asBase64EncodedString(elem.FillImage);
|
||||||
|
aGCProps[ "draw:fill-image-name" ] =
|
||||||
|
m_rStyleContainer.getStyleName(
|
||||||
|
m_rStyleContainer.getStyleId(style));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// TODO(F1): check whether stuff could be emulated by gradient/bitmap/hatch
|
// TODO(F1): check whether stuff could be emulated by gradient/bitmap/hatch
|
||||||
if( elem.Action & (PATH_FILL | PATH_EOFILL) )
|
if( elem.Action & (PATH_FILL | PATH_EOFILL) )
|
||||||
{
|
{
|
||||||
aGCProps[ "draw:fill" ] = "solid";
|
if (elem.FillImage == -1)
|
||||||
|
{
|
||||||
|
aGCProps[ "draw:fill" ] = "solid";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
aGCProps[ "draw:fill" ] = "bitmap";
|
||||||
|
}
|
||||||
aGCProps[ "draw:fill-color" ] = getColorString(rGC.FillColor);
|
aGCProps[ "draw:fill-color" ] = getColorString(rGC.FillColor);
|
||||||
if (rGC.FillColor.Alpha != 1.0)
|
if (rGC.FillColor.Alpha != 1.0)
|
||||||
aGCProps["draw:opacity"] = getPercentString(rGC.FillColor.Alpha * 100.0);
|
aGCProps["draw:opacity"] = getPercentString(rGC.FillColor.Alpha * 100.0);
|
||||||
|
|
|
@ -995,10 +995,29 @@ void WriterXmlFinalizer::visit( PolyPolyElement& elem, const std::list< std::uni
|
||||||
aGCProps[ "draw:stroke" ] = "none";
|
aGCProps[ "draw:stroke" ] = "none";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (elem.FillImage != -1)
|
||||||
|
{
|
||||||
|
PropertyMap props;
|
||||||
|
// The image isn't actually in a prop, it's in an extra chunk inside.
|
||||||
|
StyleContainer::Style style("draw:fill-image"_ostr, std::move(props));
|
||||||
|
style.Contents = m_rProcessor.getImages().asBase64EncodedString(elem.FillImage);
|
||||||
|
aGCProps[ "draw:fill-image-name" ] =
|
||||||
|
m_rStyleContainer.getStyleName(
|
||||||
|
m_rStyleContainer.getStyleId(style));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// TODO(F1): check whether stuff could be emulated by gradient/bitmap/hatch
|
// TODO(F1): check whether stuff could be emulated by gradient/bitmap/hatch
|
||||||
if( elem.Action & (PATH_FILL | PATH_EOFILL) )
|
if( elem.Action & (PATH_FILL | PATH_EOFILL) )
|
||||||
{
|
{
|
||||||
aGCProps[ "draw:fill" ] = "solid";
|
if (elem.FillImage == -1)
|
||||||
|
{
|
||||||
|
aGCProps[ "draw:fill" ] = "solid";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
aGCProps[ "draw:fill" ] = "bitmap";
|
||||||
|
}
|
||||||
aGCProps[ "draw:fill-color" ] = getColorString( rGC.FillColor );
|
aGCProps[ "draw:fill-color" ] = getColorString( rGC.FillColor );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue