diff options
Diffstat (limited to 'starmath')
-rw-r--r-- | starmath/CppunitTest_starmath_qa_cppunit.mk | 5 | ||||
-rw-r--r-- | starmath/qa/cppunit/test_starmath.cxx | 37 | ||||
-rw-r--r-- | starmath/source/tmpdevice.cxx | 32 | ||||
-rw-r--r-- | starmath/source/tmpdevice.hxx | 8 |
4 files changed, 56 insertions, 26 deletions
diff --git a/starmath/CppunitTest_starmath_qa_cppunit.mk b/starmath/CppunitTest_starmath_qa_cppunit.mk index 19beb8c3eebd..ee436749f95a 100644 --- a/starmath/CppunitTest_starmath_qa_cppunit.mk +++ b/starmath/CppunitTest_starmath_qa_cppunit.mk @@ -48,6 +48,11 @@ $(eval $(call gb_CppunitTest_use_libraries,starmath_qa_cppunit,\ xo \ )) +$(eval $(call gb_CppunitTest_set_include,starmath_qa_cppunit,\ + -I$(SRCDIR)/starmath/source \ + $$(INCLUDE) \ +)) + $(eval $(call gb_CppunitTest_add_exception_objects,starmath_qa_cppunit,\ starmath/qa/cppunit/test_cursor \ starmath/qa/cppunit/test_node \ diff --git a/starmath/qa/cppunit/test_starmath.cxx b/starmath/qa/cppunit/test_starmath.cxx index f694cd888a23..793545879994 100644 --- a/starmath/qa/cppunit/test_starmath.cxx +++ b/starmath/qa/cppunit/test_starmath.cxx @@ -8,12 +8,17 @@ */ #include <sal/config.h> + +#include <vcl/print.hxx> + #include <test/bootstrapfixture.hxx> #include <smdll.hxx> #include <document.hxx> #include <view.hxx> +#include <tmpdevice.hxx> + #include <sfx2/sfxmodelfactory.hxx> #include <sfx2/bindings.hxx> #include <sfx2/request.hxx> @@ -61,6 +66,8 @@ public: void replacePlaceholder(); void viewZoom(); + void testSmTmpDeviceRestoreFont(); + CPPUNIT_TEST_SUITE(Test); CPPUNIT_TEST(editUndoRedo); CPPUNIT_TEST(editMarker); @@ -80,6 +87,7 @@ public: CPPUNIT_TEST(ParseErrorDoubleSubsupscript); CPPUNIT_TEST(replacePlaceholder); CPPUNIT_TEST(viewZoom); + CPPUNIT_TEST(testSmTmpDeviceRestoreFont); CPPUNIT_TEST_SUITE_END(); private: @@ -133,6 +141,35 @@ void Test::tearDown() BootstrapFixture::tearDown(); } +void Test::testSmTmpDeviceRestoreFont() +{ + ScopedVclPtrInstance<Printer> pPrinter; + bool bUseMap100th_mm = true; + + OUString aFontName("Linux Libertine G"); + CPPUNIT_ASSERT(pPrinter->IsFontAvailable(aFontName)); + + vcl::Font aOriginalFont = pPrinter->GetFont(); + aOriginalFont.SetColor(COL_RED); + pPrinter->SetTextColor(COL_RED); + + vcl::Font aNewFont; + + { + SmTmpDevice aTmpDev(*pPrinter.get(), bUseMap100th_mm); + + aNewFont = pPrinter->GetFont(); + aNewFont.SetFamilyName(aFontName); + aTmpDev.SetFont(aNewFont); + + CPPUNIT_ASSERT_EQUAL(aFontName, pPrinter->GetFont().GetFamilyName()); + CPPUNIT_ASSERT_EQUAL(COL_BLACK, pPrinter->GetTextColor()); + } + + CPPUNIT_ASSERT(aNewFont != pPrinter->GetFont()); + CPPUNIT_ASSERT_EQUAL(COL_RED, pPrinter->GetTextColor()); +} + void Test::editMarker() { { diff --git a/starmath/source/tmpdevice.cxx b/starmath/source/tmpdevice.cxx index 778d9196ad35..074903d3ceb6 100644 --- a/starmath/source/tmpdevice.cxx +++ b/starmath/source/tmpdevice.cxx @@ -35,8 +35,8 @@ SmTmpDevice::SmTmpDevice(OutputDevice &rTheDev, bool bUseMap100th_mm) : rOutDev(rTheDev) { - rOutDev.Push( PushFlags::FONT | PushFlags::MAPMODE | - PushFlags::LINECOLOR | PushFlags::FILLCOLOR | PushFlags::TEXTCOLOR ); + rOutDev.Push(PushFlags::FONT | PushFlags::MAPMODE | + PushFlags::LINECOLOR | PushFlags::FILLCOLOR | PushFlags::TEXTCOLOR); if (bUseMap100th_mm && MapUnit::Map100thMM != rOutDev.GetMapMode().GetMapUnit()) { SAL_WARN("starmath", "incorrect MapMode?"); @@ -45,34 +45,22 @@ SmTmpDevice::SmTmpDevice(OutputDevice &rTheDev, bool bUseMap100th_mm) : } -Color SmTmpDevice::Impl_GetColor( const Color& rColor ) +Color SmTmpDevice::GetTextColor(const Color& rTextColor) { - Color nNewCol = rColor; - if (nNewCol == COL_AUTO) + if (rTextColor == COL_AUTO) { - if (OUTDEV_PRINTER == rOutDev.GetOutDevType()) - nNewCol = COL_BLACK; - else - { - Color aBgCol(rOutDev.GetBackgroundColor()); - - nNewCol = SM_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor; - - Color aTmpColor( nNewCol ); - if (aBgCol.IsDark() && aTmpColor.IsDark()) - nNewCol = COL_WHITE; - else if (aBgCol.IsBright() && aTmpColor.IsBright()) - nNewCol = COL_BLACK; - } + Color aConfigFontColor = SM_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor; + return rOutDev.GetReadableFontColor(aConfigFontColor, rOutDev.GetBackgroundColor()); } - return nNewCol; + + return rTextColor; } void SmTmpDevice::SetFont(const vcl::Font &rNewFont) { - rOutDev.SetFont( rNewFont ); - rOutDev.SetTextColor( Impl_GetColor( rNewFont.GetColor() ) ); + rOutDev.SetFont(rNewFont); + rOutDev.SetTextColor(GetTextColor(rNewFont.GetColor())); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/starmath/source/tmpdevice.hxx b/starmath/source/tmpdevice.hxx index f03aa9d42bb3..e7c812cd69f4 100644 --- a/starmath/source/tmpdevice.hxx +++ b/starmath/source/tmpdevice.hxx @@ -25,12 +25,12 @@ class SmTmpDevice { - OutputDevice &rOutDev; + OutputDevice &rOutDev; SmTmpDevice(const SmTmpDevice&) = delete; SmTmpDevice& operator=(const SmTmpDevice&) = delete; - Color Impl_GetColor( const Color& rColor ); + Color GetTextColor(const Color& rTextColor); public: SmTmpDevice(OutputDevice &rTheDev, bool bUseMap100th_mm); @@ -38,8 +38,8 @@ public: void SetFont(const vcl::Font &rNewFont); - void SetLineColor( const Color& rColor ) { rOutDev.SetLineColor( Impl_GetColor(rColor) ); } - void SetFillColor( const Color& rColor ) { rOutDev.SetFillColor( Impl_GetColor(rColor) ); } + void SetLineColor(const Color& rColor) { rOutDev.SetLineColor(GetTextColor(rColor)); } + void SetFillColor(const Color& rColor) { rOutDev.SetFillColor(GetTextColor(rColor)); } operator OutputDevice & () { return rOutDev; } }; |