Kaydet (Commit) 17cd7dd7 authored tarafından Mark Hung's avatar Mark Hung

tdf#43671 set emphasis mark of vcl::Font (windows).

Process extra font properties of the canvas font to
set emphasis mark when creating vcl::Font.

Change-Id: I18ea1aecdde92ed3c777b0db27fcee7976e88476
Reviewed-on: https://gerrit.libreoffice.org/62245
Tested-by: Jenkins
Reviewed-by: 's avatarMark Hung <marklh9@gmail.com>
üst 56d79976
......@@ -47,14 +47,14 @@ namespace dxcanvas
}
CanvasFont::CanvasFont( const rendering::FontRequest& rFontRequest,
const uno::Sequence< beans::PropertyValue >& /*extraFontProperties*/,
const uno::Sequence< beans::PropertyValue >& extraFontProperties,
const geometry::Matrix2D& fontMatrix ) :
CanvasFont_Base( m_aMutex ),
mpGdiPlusUser( GDIPlusUser::createInstance() ),
// TODO(F1): extraFontProperties, fontMatrix
mpFontFamily(),
mpFont(),
maFontRequest( rFontRequest ),
mnEmphasisMark(0),
maFontMatrix( fontMatrix )
{
mpFontFamily.reset( new Gdiplus::FontFamily(o3tl::toW(rFontRequest.FontDescription.FamilyName.getStr()),nullptr) );
......@@ -65,6 +65,8 @@ namespace dxcanvas
static_cast<Gdiplus::REAL>(rFontRequest.CellSize),
calcFontStyle( rFontRequest ),
Gdiplus::UnitWorld ));
::canvas::tools::extractExtraFontProperties(extraFontProperties, mnEmphasisMark);
}
void SAL_CALL CanvasFont::disposing()
......
......@@ -77,12 +77,14 @@ namespace dxcanvas
double getEmHeight() const;
FontSharedPtr getFont() const;
const css::geometry::Matrix2D& getFontMatrix() const;
sal_uInt32 getEmphasisMark() const { return mnEmphasisMark; }
private:
GDIPlusUserSharedPtr mpGdiPlusUser;
FontFamilySharedPtr mpFontFamily;
FontSharedPtr mpFont;
css::rendering::FontRequest maFontRequest;
sal_uInt32 mnEmphasisMark;
css::geometry::Matrix2D maFontMatrix;
};
......
......@@ -125,6 +125,10 @@ namespace dxcanvas
aFont.SetColor( aColor );
aFont.SetFillColor( aColor );
CanvasFont::ImplRef pFont(tools::canvasFontFromXFont(rCanvasFont));
if (pFont.is() && pFont->getEmphasisMark())
aFont.SetEmphasisMark(FontEmphasisMark(pFont->getEmphasisMark()));
// adjust to stretched font
if(!::rtl::math::approxEqual(rFontMatrix.m00, rFontMatrix.m11))
{
......@@ -270,6 +274,10 @@ namespace dxcanvas
aFont.SetAverageFontWidth( nNewWidth );
}
CanvasFont::ImplRef pFont(tools::canvasFontFromXFont(rCanvasFont));
if (pFont.is() && pFont->getEmphasisMark())
aFont.SetEmphasisMark(FontEmphasisMark(pFont->getEmphasisMark()));
// set font
xVirtualDevice->SetFont(aFont);
......
......@@ -1309,6 +1309,17 @@ namespace canvas
p2ndOutDev->SetClipRegion( aClipRegion );
}
}
void extractExtraFontProperties(const uno::Sequence<beans::PropertyValue>& rExtraFontProperties,
sal_uInt32 &rEmphasisMark)
{
for(sal_Int32 nIdx = 0; nIdx < rExtraFontProperties.getLength(); ++nIdx)
{
if (rExtraFontProperties[nIdx].Name == "EmphasisMark")
rExtraFontProperties[0].Value >>= rEmphasisMark;
}
}
} // namespace tools
} // namespace canvas
......
......@@ -35,7 +35,7 @@ using namespace ::com::sun::star;
namespace vclcanvas
{
CanvasFont::CanvasFont( const rendering::FontRequest& rFontRequest,
const uno::Sequence< beans::PropertyValue >& ,
const uno::Sequence< beans::PropertyValue >& rExtraFontProperties,
const geometry::Matrix2D& rFontMatrix,
rendering::XGraphicDevice& rDevice,
const OutDevProviderSharedPtr& rOutDevProvider ) :
......@@ -82,6 +82,13 @@ namespace vclcanvas
rOutDev.EnableMapMode(bOldMapState);
}
sal_uInt32 nEmphasisMark = 0;
::canvas::tools::extractExtraFontProperties(rExtraFontProperties, nEmphasisMark);
if (nEmphasisMark)
maFont->SetEmphasisMark(FontEmphasisMark(nEmphasisMark));
}
void SAL_CALL CanvasFont::disposing()
......
......@@ -71,6 +71,10 @@ namespace com { namespace sun { namespace star { namespace awt
class XWindow2;
} } } }
namespace com { namespace sun { namespace star { namespace beans {
struct PropertyValue;
} } } }
class Color;
class OutputDevice;
......@@ -549,6 +553,9 @@ namespace canvas
const css::rendering::RenderState& renderState,
OutputDevice& rOutDev,
OutputDevice* p2ndOutDev=nullptr);
CANVASTOOLS_DLLPUBLIC void extractExtraFontProperties(const css::uno::Sequence<css::beans::PropertyValue>& rExtraFontProperties,
sal_uInt32& rEmphasisMark);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment