summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-03-19 14:55:42 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-03-22 07:33:29 +0100
commitb9ada4bc6f2de5cd67af460d51af16075cb2894b (patch)
treec9fa27c98969fafd9213866e813ab8cd212b0e94 /sd
parent751191ed2d7d6af6eddc3d738e8c45b0a2ab2572 (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.cxx132
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;