diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2024-08-17 10:50:06 +0500 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2024-08-17 12:36:13 +0200 |
commit | 52a2dd0eea2ecf62b1db5f379cf65aed705446cb (patch) | |
tree | 68d78743be005c74482853b5f75ee217bd7aa5fb /sd/qa/unit | |
parent | dac249a0de613cce6c3f3de756cd1a0c8464f38c (diff) |
Support for non-AA text on Windows
In commit 3ecd8f19a91ed7141304a2080fb11612b5ff30b3 (vcl cairo text
renderer: support non-AA text, 2018-07-26) and its follow-up commit
e6538f5bdd876911ea30f84a6512c03908e620fd (tdf#118966 vcl: add a flag
to determine if AA of fonts is used from the system, 2018-07-28),
non-antialiased text got supported in bitmap export using cairo.
This change makes that support available on Windiws, including Skia.
Change-Id: I1fae726539347f826e2d62246d35315e7954cf83
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171967
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
Diffstat (limited to 'sd/qa/unit')
-rw-r--r-- | sd/qa/unit/PNGExportTests.cxx | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/sd/qa/unit/PNGExportTests.cxx b/sd/qa/unit/PNGExportTests.cxx index 305bf108b7b8..94eb4ff19c14 100644 --- a/sd/qa/unit/PNGExportTests.cxx +++ b/sd/qa/unit/PNGExportTests.cxx @@ -941,6 +941,47 @@ CPPUNIT_TEST_FIXTURE(SdPNGExportTest, testTdf155048) } } +CPPUNIT_TEST_FIXTURE(SdPNGExportTest, testNoAntiAliasExport) +{ +#ifdef MACOSX +// See comment in testTdf155048 +#else + loadFromFile(u"svg/tdf162259.svg"); + + auto xGraphicExporter = drawing::GraphicExportFilter::create(getComponentContext()); + CPPUNIT_ASSERT(xGraphicExporter); + + auto xSupplier = mxComponent.queryThrow<css::drawing::XDrawPagesSupplier>(); + auto xPage = xSupplier->getDrawPages()->getByIndex(0).queryThrow<css::lang::XComponent>(); + xGraphicExporter->setSourceDocument(xPage); + + // 101 x 151 is current width x height ratio of the loaded SVG. FIXME: it should be 100 x 150. + css::uno::Sequence<css::beans::PropertyValue> aFilterData{ + comphelper::makePropertyValue(u"PixelWidth"_ustr, sal_Int32(101)), + comphelper::makePropertyValue(u"PixelHeight"_ustr, sal_Int32(151)), + comphelper::makePropertyValue(u"AntiAliasing"_ustr, false), + }; + + css::uno::Sequence<css::beans::PropertyValue> aDescriptor{ + comphelper::makePropertyValue(u"URL"_ustr, maTempFile.GetURL()), + comphelper::makePropertyValue(u"FilterName"_ustr, u"PNG"_ustr), + comphelper::makePropertyValue(u"FilterData"_ustr, aFilterData) + }; + + xGraphicExporter->filter(aDescriptor); + BitmapEx bmp = vcl::PngImageReader(*maTempFile.GetStream(StreamMode::READ)).read(); + + std::set<Color> colors; + + for (tools::Long x = 0; x < bmp.GetSizePixel().Width(); ++x) + for (tools::Long y = 0; y < bmp.GetSizePixel().Height(); ++y) + colors.insert(bmp.GetPixelColor(x, y)); + + // With AntiAliasing = false, the text must be rendered aliased + CPPUNIT_ASSERT_EQUAL(size_t(2), colors.size()); +#endif +} + CPPUNIT_TEST_FIXTURE(SdPNGExportTest, testTdf162259) { // The top X in the SVG, having no skew, used a fast rendering path, and was output much wider |