Files
wxWidgets/src/osx/core/fontenum.cpp
Stefan Csomor f71ea69505 removing code for pre 10.6 systems
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77033 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-08-09 17:02:17 +00:00

100 lines
2.9 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Name: src/osx/core/fontenum.cpp
// Purpose: wxFontEnumerator class for MacOS
// Author: Stefan Csomor
// Modified by:
// Created: 04/01/98
// Copyright: (c) Stefan Csomor
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#if wxUSE_FONTENUM
#include "wx/fontenum.h"
#ifndef WX_PRECOMP
#include "wx/font.h"
#include "wx/intl.h"
#endif
#include "wx/fontutil.h"
#include "wx/fontmap.h"
#include "wx/encinfo.h"
#include "wx/osx/private.h"
// ----------------------------------------------------------------------------
// wxFontEnumerator
// ----------------------------------------------------------------------------
#if wxOSX_USE_IPHONE
extern CFArrayRef CopyAvailableFontFamilyNames();
#endif
bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding,
bool fixedWidthOnly)
{
wxArrayString fontFamilies ;
wxUint32 macEncoding = wxMacGetSystemEncFromFontEnc(encoding) ;
{
CFArrayRef cfFontFamilies = nil;
#if wxOSX_USE_COCOA_OR_CARBON
cfFontFamilies = CTFontManagerCopyAvailableFontFamilyNames();
#elif wxOSX_USE_IPHONE
cfFontFamilies = CopyAvailableFontFamilyNames();
#endif
CFIndex count = CFArrayGetCount(cfFontFamilies);
for(CFIndex i = 0; i < count; i++)
{
CFStringRef fontName = (CFStringRef)CFArrayGetValueAtIndex(cfFontFamilies, i);
if ( encoding != wxFONTENCODING_SYSTEM || fixedWidthOnly)
{
wxCFRef<CTFontRef> font(CTFontCreateWithName(fontName, 12.0, NULL));
if ( encoding != wxFONTENCODING_SYSTEM )
{
CFStringEncoding fontFamiliyEncoding = CTFontGetStringEncoding(font);
if ( fontFamiliyEncoding != macEncoding )
continue;
}
if ( fixedWidthOnly )
{
CTFontSymbolicTraits traits = CTFontGetSymbolicTraits(font);
if ( (traits & kCTFontMonoSpaceTrait) == 0 )
continue;
}
}
wxCFStringRef cfName(wxCFRetain(fontName)) ;
fontFamilies.Add(cfName.AsString(wxLocale::GetSystemEncoding()));
}
CFRelease(cfFontFamilies);
}
for ( size_t i = 0 ; i < fontFamilies.Count() ; ++i )
{
if ( OnFacename( fontFamilies[i] ) == false )
break ;
}
return true;
}
bool wxFontEnumerator::EnumerateEncodings(const wxString& WXUNUSED(family))
{
wxFAIL_MSG(wxT("wxFontEnumerator::EnumerateEncodings() not yet implemented"));
return true;
}
#endif // wxUSE_FONTENUM