Kaydet (Commit) afad4eea authored tarafından Michael Stahl's avatar Michael Stahl

svtools: FontList loops with > 2^16 fonts

Change-Id: Idfe5d76ee384dff3280f81686cbf408c2f675dc6
üst 8d10c237
...@@ -127,9 +127,6 @@ You should thus not reference the array after the next method call on the ...@@ -127,9 +127,6 @@ You should thus not reference the array after the next method call on the
FontList. FontList.
*/ */
#define FONTLIST_FONTINFO_NOTFOUND ((sal_uInt16)0xFFFF)
class SVT_DLLPUBLIC FontList class SVT_DLLPUBLIC FontList
{ {
private: private:
...@@ -182,11 +179,11 @@ public: ...@@ -182,11 +179,11 @@ public:
FontItalic eItalic ) const; FontItalic eItalic ) const;
bool IsAvailable( const OUString& rName ) const; bool IsAvailable( const OUString& rName ) const;
sal_uInt16 GetFontNameCount() const size_t GetFontNameCount() const
{ {
return (sal_uInt16)m_Entries.size(); return m_Entries.size();
} }
const FontMetric& GetFontName( sal_uInt16 nFont ) const; const FontMetric& GetFontName(size_t nFont) const;
sal_Handle GetFirstFontMetric( const OUString& rName ) const; sal_Handle GetFirstFontMetric( const OUString& rName ) const;
static sal_Handle GetNextFontMetric( sal_Handle hFontMetric ); static sal_Handle GetNextFontMetric( sal_Handle hFontMetric );
static const FontMetric& GetFontMetric( sal_Handle hFontMetric ); static const FontMetric& GetFontMetric( sal_Handle hFontMetric );
......
...@@ -249,9 +249,8 @@ void FontList::ImplInsertFonts( OutputDevice* pDevice, bool bAll, ...@@ -249,9 +249,8 @@ void FontList::ImplInsertFonts( OutputDevice* pDevice, bool bAll,
nType = FontListFontNameType::PRINTER; nType = FontListFontNameType::PRINTER;
// inquire all fonts from the device // inquire all fonts from the device
int n = pDevice->GetDevFontCount(); int const n = pDevice->GetDevFontCount();
sal_uInt16 i; for (int i = 0; i < n; ++i)
for( i = 0; i < n; i++ )
{ {
FontMetric aFontMetric = pDevice->GetDevFont( i ); FontMetric aFontMetric = pDevice->GetDevFont( i );
...@@ -387,7 +386,7 @@ FontList::~FontList() ...@@ -387,7 +386,7 @@ FontList::~FontList()
FontList* FontList::Clone() const FontList* FontList::Clone() const
{ {
FontList* pReturn = new FontList( FontList* pReturn = new FontList(
mpDev, mpDev2, GetFontNameCount() == mpDev->GetDevFontCount()); mpDev, mpDev2, sal::static_int_cast<int>(GetFontNameCount()) == mpDev->GetDevFontCount());
return pReturn; return pReturn;
} }
...@@ -696,7 +695,7 @@ bool FontList::IsAvailable(const OUString& rName) const ...@@ -696,7 +695,7 @@ bool FontList::IsAvailable(const OUString& rName) const
return (ImplFindByName( rName ) != nullptr); return (ImplFindByName( rName ) != nullptr);
} }
const FontMetric& FontList::GetFontName( sal_uInt16 nFont ) const const FontMetric& FontList::GetFontName(size_t const nFont) const
{ {
DBG_ASSERT( nFont < GetFontNameCount(), "FontList::GetFontName(): nFont >= Count" ); DBG_ASSERT( nFont < GetFontNameCount(), "FontList::GetFontName(): nFont >= Count" );
...@@ -752,11 +751,10 @@ const sal_IntPtr* FontList::GetSizeAry( const FontMetric& rInfo ) const ...@@ -752,11 +751,10 @@ const sal_IntPtr* FontList::GetSizeAry( const FontMetric& rInfo ) const
MapMode aMap( MAP_10TH_INCH, Point(), Fraction( 1, 72 ), Fraction( 1, 72 ) ); MapMode aMap( MAP_10TH_INCH, Point(), Fraction( 1, 72 ), Fraction( 1, 72 ) );
pDevice->SetMapMode( aMap ); pDevice->SetMapMode( aMap );
sal_uInt16 i; int nRealCount = 0;
sal_uInt16 nRealCount = 0;
long nOldHeight = 0; long nOldHeight = 0;
const_cast<FontList*>(this)->mpSizeAry = new sal_IntPtr[nDevSizeCount+1]; const_cast<FontList*>(this)->mpSizeAry = new sal_IntPtr[nDevSizeCount+1];
for ( i = 0; i < nDevSizeCount; i++ ) for (int i = 0; i < nDevSizeCount; ++i)
{ {
Size aSize = pDevice->GetDevFontSize( rInfo, i ); Size aSize = pDevice->GetDevFontSize( rInfo, i );
if ( aSize.Height() != nOldHeight ) if ( aSize.Height() != nOldHeight )
......
...@@ -54,8 +54,8 @@ void FontNameMenu::Fill( const FontList* pList ) ...@@ -54,8 +54,8 @@ void FontNameMenu::Fill( const FontList* pList )
const vcl::I18nHelper& rI18nHelper = Application::GetSettings().GetUILocaleI18nHelper(); const vcl::I18nHelper& rI18nHelper = Application::GetSettings().GetUILocaleI18nHelper();
// more than 100 fonts reduces the speed of opening the menu. // more than 100 fonts reduces the speed of opening the menu.
// So only the first 100 fonts will be displayed. // So only the first 100 fonts will be displayed.
sal_uInt16 nFontCount = ::std::min( pList->GetFontNameCount(), static_cast< sal_uInt16 >(100) ); size_t nFontCount = ::std::min<size_t>(pList->GetFontNameCount(), 100);
for (sal_uInt16 i = 0; i < nFontCount; ++i) for (size_t i = 0; i < nFontCount; ++i)
{ {
const OUString& rName = pList->GetFontName( i ).GetFamilyName(); const OUString& rName = pList->GetFontName( i ).GetFamilyName();
......
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