]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/mac/carbon/fontenum.cpp
Fixup Blit so it can be used with a source that is a wxBufferedDC,
[wxWidgets.git] / src / mac / carbon / fontenum.cpp
... / ...
Content-type: text/html ]> git.saurik.com Git - wxWidgets.git/blame_incremental - 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 85.
CommitLineData
1///////////////////////////////////////////////////////////////////////////////
2// Name: src/mac/carbon/fontenum.cpp
3// Purpose: wxFontEnumerator class for MacOS
4// Author: Stefan Csomor
5// Modified by:
6// Created: 04/01/98
7// RCS-ID: $Id$
8// Copyright: (c) Stefan Csomor
9// Licence: wxWindows licence
10///////////////////////////////////////////////////////////////////////////////
11
12// For compilers that support precompilation, includes "wx.h".
13#include "wx/wxprec.h"
14
15#if wxUSE_FONTMAP
16
17#include "wx/fontenum.h"
18
19#ifndef WX_PRECOMP
20 #include "wx/font.h"
21 #include "wx/intl.h"
22#endif
23
24#include "wx/fontutil.h"
25#include "wx/fontmap.h"
26#include "wx/encinfo.h"
27
28#include "wx/mac/private.h"
29
30// ----------------------------------------------------------------------------
31// wxFontEnumerator
32// ----------------------------------------------------------------------------
33
34bool wxFontEnumerator::EnumerateFacenames(wxFontEncoding encoding,
35 bool fixedWidthOnly)
36{
37 //
38 // From Apple's QA 1471 http://developer.apple.com/qa/qa2006/qa1471.html
39 //
40
41 ATSFontFamilyIterator theFontFamilyIterator = NULL;
42 ATSFontFamilyRef theATSFontFamilyRef = 0;
43 OSStatus status = noErr;
44
45 wxArrayString fontFamilies ;
46
47 // Create the iterator
48 status = ATSFontFamilyIteratorCreate(kATSFontContextLocal, nil,nil,
49 kATSOptionFlagsUnRestrictedScope,
50 &theFontFamilyIterator );
51
52 wxUint32 macEncoding = wxMacGetSystemEncFromFontEnc(encoding) ;
53
54 while (status == noErr)
55 {
56 // Get the next font in the iteration.
57 status = ATSFontFamilyIteratorNext( theFontFamilyIterator, &theATSFontFamilyRef );
58 if(status == noErr)
59 {
60 // added CS : avoid showing fonts that won't be displayable
61 FMFontStyle intrinsicStyle = 0 ;
62 FMFont fontInstance ;
63 FMFontFamily fmFamily = FMGetFontFamilyFromATSFontFamilyRef( theATSFontFamilyRef );
64 status = FMGetFontFromFontFamilyInstance( fmFamily , 0 , &fontInstance , &intrinsicStyle);
65 if ( status != noErr )
66 {
67 status = noErr;
68 continue ;
69 }
70
71 if ( encoding != wxFONTENCODING_SYSTEM )
72 {
73 TextEncoding fontFamiliyEncoding = ATSFontFamilyGetEncoding(theATSFontFamilyRef) ;
74 if ( fontFamiliyEncoding != macEncoding )
75 continue ;
76 }
77
78 // TODO: determine fixed widths ...
79
80 CFStringRef theName = NULL;
81 ATSFontFamilyGetName(theATSFontFamilyRef, kATSOptionFlagsDefault, &theName);
82 wxMacCFStringHolder cfName(theName) ;
83 fontFamilies.Add(cfName.AsString(wxLocale::GetSystemEncoding()));
84 }
85