svtools: FontList loops with > 2^16 fonts
Change-Id: Idfe5d76ee384dff3280f81686cbf408c2f675dc6
This commit is contained in:
@@ -127,9 +127,6 @@ You should thus not reference the array after the next method call on the
|
||||
FontList.
|
||||
*/
|
||||
|
||||
|
||||
#define FONTLIST_FONTINFO_NOTFOUND ((sal_uInt16)0xFFFF)
|
||||
|
||||
class SVT_DLLPUBLIC FontList
|
||||
{
|
||||
private:
|
||||
@@ -182,11 +179,11 @@ public:
|
||||
FontItalic eItalic ) 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;
|
||||
static sal_Handle GetNextFontMetric( sal_Handle hFontMetric );
|
||||
static const FontMetric& GetFontMetric( sal_Handle hFontMetric );
|
||||
|
@@ -249,9 +249,8 @@ void FontList::ImplInsertFonts( OutputDevice* pDevice, bool bAll,
|
||||
nType = FontListFontNameType::PRINTER;
|
||||
|
||||
// inquire all fonts from the device
|
||||
int n = pDevice->GetDevFontCount();
|
||||
sal_uInt16 i;
|
||||
for( i = 0; i < n; i++ )
|
||||
int const n = pDevice->GetDevFontCount();
|
||||
for (int i = 0; i < n; ++i)
|
||||
{
|
||||
FontMetric aFontMetric = pDevice->GetDevFont( i );
|
||||
|
||||
@@ -387,7 +386,7 @@ FontList::~FontList()
|
||||
FontList* FontList::Clone() const
|
||||
{
|
||||
FontList* pReturn = new FontList(
|
||||
mpDev, mpDev2, GetFontNameCount() == mpDev->GetDevFontCount());
|
||||
mpDev, mpDev2, sal::static_int_cast<int>(GetFontNameCount()) == mpDev->GetDevFontCount());
|
||||
return pReturn;
|
||||
}
|
||||
|
||||
@@ -696,7 +695,7 @@ bool FontList::IsAvailable(const OUString& rName) const
|
||||
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" );
|
||||
|
||||
@@ -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 ) );
|
||||
pDevice->SetMapMode( aMap );
|
||||
|
||||
sal_uInt16 i;
|
||||
sal_uInt16 nRealCount = 0;
|
||||
int nRealCount = 0;
|
||||
long nOldHeight = 0;
|
||||
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 );
|
||||
if ( aSize.Height() != nOldHeight )
|
||||
|
@@ -54,8 +54,8 @@ void FontNameMenu::Fill( const FontList* pList )
|
||||
const vcl::I18nHelper& rI18nHelper = Application::GetSettings().GetUILocaleI18nHelper();
|
||||
// more than 100 fonts reduces the speed of opening the menu.
|
||||
// So only the first 100 fonts will be displayed.
|
||||
sal_uInt16 nFontCount = ::std::min( pList->GetFontNameCount(), static_cast< sal_uInt16 >(100) );
|
||||
for (sal_uInt16 i = 0; i < nFontCount; ++i)
|
||||
size_t nFontCount = ::std::min<size_t>(pList->GetFontNameCount(), 100);
|
||||
for (size_t i = 0; i < nFontCount; ++i)
|
||||
{
|
||||
const OUString& rName = pList->GetFontName( i ).GetFamilyName();
|
||||
|
||||
|
Reference in New Issue
Block a user