diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2018-03-19 14:55:42 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2018-03-22 07:33:29 +0100 |
commit | b9ada4bc6f2de5cd67af460d51af16075cb2894b (patch) | |
tree | c9fa27c98969fafd9213866e813ab8cd212b0e94 /sd | |
parent | 751191ed2d7d6af6eddc3d738e8c45b0a2ab2572 (diff) |
loplugin:useuniqueptr in PresenterTextView::Implementation
Change-Id: Ie5641d3a4b0791aa4ae4f126afeb3ec6f9760909
Reviewed-on: https://gerrit.libreoffice.org/51661
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/source/ui/presenter/PresenterTextView.cxx | 132 |
1 files changed, 59 insertions, 73 deletions
diff --git a/sd/source/ui/presenter/PresenterTextView.cxx b/sd/source/ui/presenter/PresenterTextView.cxx index 6d8ba55d7927..42406d994f55 100644 --- a/sd/source/ui/presenter/PresenterTextView.cxx +++ b/sd/source/ui/presenter/PresenterTextView.cxx @@ -83,7 +83,7 @@ private: Reference<rendering::XBitmap> mxBitmap; cppcanvas::CanvasSharedPtr mpCanvas; VclPtr<VirtualDevice> mpOutputDevice; - EditEngine* mpEditEngine; + std::unique_ptr<EditEngine> mpEditEngine; SfxItemPool* mpEditEngineItemPool; Size maSize; Color maBackgroundColor; @@ -92,7 +92,6 @@ private: sal_Int32 mnTop; sal_Int32 mnTotalHeight; - EditEngine* CreateEditEngine(); void CheckTop(); }; @@ -242,85 +241,72 @@ PresenterTextView::Implementation::Implementation() { mpOutputDevice->SetMapMode(MapMode(MapUnit::MapPixel)); - mpEditEngine = CreateEditEngine (); + // set fonts to be used + SvtLinguOptions aOpt; + SvtLinguConfig().GetOptions( aOpt ); + + struct FontDta { + LanguageType nFallbackLang; + LanguageType nLang; + DefaultFontType nFontType; + sal_uInt16 nFontInfoId; + } aTable[3] = + { + // info to get western font to be used + { LANGUAGE_ENGLISH_US, LANGUAGE_NONE, + DefaultFontType::SERIF, EE_CHAR_FONTINFO }, + // info to get CJK font to be used + { LANGUAGE_JAPANESE, LANGUAGE_NONE, + DefaultFontType::CJK_TEXT, EE_CHAR_FONTINFO_CJK }, + // info to get CTL font to be used + { LANGUAGE_ARABIC_SAUDI_ARABIA, LANGUAGE_NONE, + DefaultFontType::CTL_TEXT, EE_CHAR_FONTINFO_CTL } + }; + aTable[0].nLang = MsLangId::resolveSystemLanguageByScriptType(aOpt.nDefaultLanguage, css::i18n::ScriptType::LATIN); + aTable[1].nLang = MsLangId::resolveSystemLanguageByScriptType(aOpt.nDefaultLanguage_CJK, css::i18n::ScriptType::ASIAN); + aTable[2].nLang = MsLangId::resolveSystemLanguageByScriptType(aOpt.nDefaultLanguage_CTL, css::i18n::ScriptType::COMPLEX); + + for (FontDta & rFntDta : aTable) + { + LanguageType nLang = (LANGUAGE_NONE == rFntDta.nLang) ? + rFntDta.nFallbackLang : rFntDta.nLang; + vcl::Font aFont = OutputDevice::GetDefaultFont( + rFntDta.nFontType, nLang, GetDefaultFontFlags::OnlyOne); + mpEditEngineItemPool->SetPoolDefaultItem( + SvxFontItem( + aFont.GetFamilyType(), + aFont.GetFamilyName(), + aFont.GetStyleName(), + aFont.GetPitch(), + aFont.GetCharSet(), + rFntDta.nFontInfoId)); + } + + mpEditEngine.reset( new EditEngine (mpEditEngineItemPool) ); + + mpEditEngine->EnableUndo (true); + mpEditEngine->SetDefTab (sal_uInt16( + Application::GetDefaultDevice()->GetTextWidth("XXXX"))); + + mpEditEngine->SetControlWord( + EEControlBits(mpEditEngine->GetControlWord() | EEControlBits::AUTOINDENTING) & + EEControlBits(~EEControlBits::UNDOATTRIBS) & + EEControlBits(~EEControlBits::PASTESPECIAL) ); + + mpEditEngine->SetWordDelimiters (" .=+-*/(){}[];\""); + mpEditEngine->SetRefMapMode(MapMode(MapUnit::MapPixel)); + mpEditEngine->SetPaperSize (Size(800, 0)); + mpEditEngine->EraseVirtualDevice(); + mpEditEngine->ClearModifyFlag(); } PresenterTextView::Implementation::~Implementation() { - delete mpEditEngine; + mpEditEngine.reset(); SfxItemPool::Free(mpEditEngineItemPool); mpOutputDevice.disposeAndClear(); } -EditEngine* PresenterTextView::Implementation::CreateEditEngine() -{ - EditEngine* pEditEngine = mpEditEngine; - if (pEditEngine == nullptr) - { - - // set fonts to be used - - SvtLinguOptions aOpt; - SvtLinguConfig().GetOptions( aOpt ); - - struct FontDta { - LanguageType nFallbackLang; - LanguageType nLang; - DefaultFontType nFontType; - sal_uInt16 nFontInfoId; - } aTable[3] = - { - // info to get western font to be used - { LANGUAGE_ENGLISH_US, LANGUAGE_NONE, - DefaultFontType::SERIF, EE_CHAR_FONTINFO }, - // info to get CJK font to be used - { LANGUAGE_JAPANESE, LANGUAGE_NONE, - DefaultFontType::CJK_TEXT, EE_CHAR_FONTINFO_CJK }, - // info to get CTL font to be used - { LANGUAGE_ARABIC_SAUDI_ARABIA, LANGUAGE_NONE, - DefaultFontType::CTL_TEXT, EE_CHAR_FONTINFO_CTL } - }; - aTable[0].nLang = MsLangId::resolveSystemLanguageByScriptType(aOpt.nDefaultLanguage, css::i18n::ScriptType::LATIN); - aTable[1].nLang = MsLangId::resolveSystemLanguageByScriptType(aOpt.nDefaultLanguage_CJK, css::i18n::ScriptType::ASIAN); - aTable[2].nLang = MsLangId::resolveSystemLanguageByScriptType(aOpt.nDefaultLanguage_CTL, css::i18n::ScriptType::COMPLEX); - - for (FontDta & rFntDta : aTable) - { - LanguageType nLang = (LANGUAGE_NONE == rFntDta.nLang) ? - rFntDta.nFallbackLang : rFntDta.nLang; - vcl::Font aFont = OutputDevice::GetDefaultFont( - rFntDta.nFontType, nLang, GetDefaultFontFlags::OnlyOne); - mpEditEngineItemPool->SetPoolDefaultItem( - SvxFontItem( - aFont.GetFamilyType(), - aFont.GetFamilyName(), - aFont.GetStyleName(), - aFont.GetPitch(), - aFont.GetCharSet(), - rFntDta.nFontInfoId)); - } - - pEditEngine = new EditEngine (mpEditEngineItemPool); - - pEditEngine->EnableUndo (true); - pEditEngine->SetDefTab (sal_uInt16( - Application::GetDefaultDevice()->GetTextWidth("XXXX"))); - - pEditEngine->SetControlWord( - EEControlBits(pEditEngine->GetControlWord() | EEControlBits::AUTOINDENTING) & - EEControlBits(~EEControlBits::UNDOATTRIBS) & - EEControlBits(~EEControlBits::PASTESPECIAL) ); - - pEditEngine->SetWordDelimiters (" .=+-*/(){}[];\""); - pEditEngine->SetRefMapMode(MapMode(MapUnit::MapPixel)); - pEditEngine->SetPaperSize (Size(800, 0)); - pEditEngine->EraseVirtualDevice(); - pEditEngine->ClearModifyFlag(); - } - - return pEditEngine; -} - void PresenterTextView::Implementation::SetCanvas (const cppcanvas::CanvasSharedPtr& rpCanvas) { mpCanvas = rpCanvas; |