]> git.saurik.com Git - wxWidgets.git/blame - src/mac/carbon/fontenum.cpp
use wx-style header and commets; fix indentation to be 4 spaces; move Doxygen comment...
[wxWidgets.git] / src / mac / carbon / fontenum.cpp
Content-type: text/html ]> git.saurik.com Git - wxWidgets.git/blame - src/mac/carbon/fontenum.cpp


500 - Internal Server Error

Malformed UTF-8 character (fatal) at /usr/lib/x86_64-linux-gnu/perl5/5.40/HTML/Entities.pm line 485, <$fd> line 339.
CommitLineData
ee6b1d97 1///////////////////////////////////////////////////////////////////////////////
1089fc00 2// Name: src/mac/carbon/fontenum.cpp
ee6b1d97
SC
3// Purpose: wxFontEnumerator class for MacOS
4// Author: Stefan Csomor
1089fc00 5// Modified by:
ee6b1d97
SC
6// Created: 04/01/98
7// RCS-ID: $Id$
8// Copyright: (c) Stefan Csomor
65571936 9// Licence: wxWindows licence
ee6b1d97
SC
10///////////////////////////////////////////////////////////////////////////////
11
ee6b1d97
SC
12// For compilers that support precompilation, includes "wx.h".
13#include "wx/wxprec.h"
14
ff427585 15#if wxUSE_FONTENUM
179e085f 16
88a7a4e1
WS
17#include "wx/fontenum.h"
18
ee6b1d97 19#ifndef WX_PRECOMP
88a7a4e1
WS
20 #include "wx/font.h"
21 #include "wx/intl.h"
ee6b1d97
SC
22#endif
23
5b781a67 24#include "wx/fontutil.h"
ee6b1d97 25#include "wx/fontmap.h"
b12ce1d3 26#include "wx/encinfo.h"
ee6b1d97 27
76a5e5d2
SC
28#include "wx/mac/private.h"
29
ee6b1d97 30// ----------------------------------------------------------------------------
753d02e8 31// wxFontEnumerator
ee6b1d97
SC
32// ----------------------------------------------------------------------------
33
753d02e8
SC
34bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding,
35 bool fixedWidthOnly)
ee6b1d97 36{
89954433
VZ
37 if ( fixedWidthOnly )
38 {
39 wxFAIL_MSG( "enumerating only fixed width fonts not supported" );
40 return false;
41 }
42
753d02e8
SC
43 //
44 // From Apple's QA 1471 http://developer.apple.com/qa/qa2006/qa1471.html
45 //
ff427585 46
753d02e8
SC
47 ATSFontFamilyIterator theFontFamilyIterator = NULL;
48 ATSFontFamilyRef theATSFontFamilyRef = 0;
49 OSStatus status = noErr;
ff427585 50
753d02e8 51 wxArrayString fontFamilies ;
ff427585 52
753d02e8
SC
53 // Create the iterator
54 status = ATSFontFamilyIteratorCreate(kATSFontContextLocal, nil,nil,
55 kATSOptionFlagsUnRestrictedScope,
56 &theFontFamilyIterator );
ff427585 57
753d02e8 58 wxUint32 macEncoding = wxMacGetSystemEncFromFontEnc(encoding) ;
ff427585 59
753d02e8 60 while (status == noErr)
e40298d5 61 {
753d02e8
SC
62 // Get the next font in the iteration.
63 status = ATSFontFamilyIteratorNext( theFontFamilyIterator, &theATSFontFamilyRef );
64 if(status == noErr)
e40298d5 65 {
4913272f
SC
66 #ifndef __LP64__
67 // TODO CS : Find replacement
753d02e8
SC
68 // added CS : avoid showing fonts that won't be displayable
69 FMFontStyle intrinsicStyle = 0 ;
70 FMFont fontInstance ;
71 FMFontFamily fmFamily = FMGetFontFamilyFromATSFontFamilyRef( theATSFontFamilyRef );
72 status = FMGetFontFromFontFamilyInstance( fmFamily , 0 , &fontInstance , &intrinsicStyle);
73 if ( status != noErr )
74 {
75 status = noErr;
76 continue ;
77 }
4913272f 78#endif
753d02e8
SC
79 if ( encoding != wxFONTENCODING_SYSTEM )
80 {
81 TextEncoding fontFamiliyEncoding = ATSFontFamilyGetEncoding(theATSFontFamilyRef) ;
82 if ( fontFamiliyEncoding != macEncoding )
83 continue ;
84 }
ff427585 85
753d02e8
SC
86 // TODO: determine fixed widths ...
87
88 CFStringRef theName = NULL;
89 ATSFontFamilyGetName(theATSFontFamilyRef, kATSOptionFlagsDefault, &theName);
dbe4a80c 90 wxCFStringRef cfName(theName) ;
753d02e8 91 fontFamilies.Add(cfName.AsString(wxLocale::GetSystemEncoding()));
e40298d5 92 }
753d02e8 93