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.
|
FontList.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define FONTLIST_FONTINFO_NOTFOUND ((sal_uInt16)0xFFFF)
|
|
||||||
|
|
||||||
class SVT_DLLPUBLIC FontList
|
class SVT_DLLPUBLIC FontList
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@@ -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,
|
|||||||
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()
|
|||||||
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
|
|||||||
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
|
|||||||
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 )
|
|||||||
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();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user