📄 font.cpp
字号:
kATSUQDUnderlineTag , kATSUQDCondensedTag , kATSUQDExtendedTag , }; ByteCount atsuSizes[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] = { sizeof( ATSUFontID ) , sizeof( Fixed ) , sizeof( ATSUVerticalCharacterType), sizeof( Boolean ) , sizeof( Boolean ) , sizeof( Boolean ) , sizeof( Boolean ) , sizeof( Boolean ) , }; Boolean kTrue = true ; Boolean kFalse = false ; Fixed atsuSize = IntToFixed( m_macFontSize ); ATSUVerticalCharacterType kHorizontal = kATSUStronglyHorizontal; ATSUAttributeValuePtr atsuValues[sizeof(atsuTags) / sizeof(ATSUAttributeTag)] = { &m_macATSUFontID , &atsuSize , &kHorizontal, (m_macATSUAdditionalQDStyles & bold) ? &kTrue : &kFalse , (m_macATSUAdditionalQDStyles & italic) ? &kTrue : &kFalse , (m_macATSUAdditionalQDStyles & underline) ? &kTrue : &kFalse , (m_macATSUAdditionalQDStyles & condense) ? &kTrue : &kFalse , (m_macATSUAdditionalQDStyles & extend) ? &kTrue : &kFalse , }; status = ::ATSUSetAttributes( (ATSUStyle)m_macATSUStyle, sizeof(atsuTags) / sizeof(ATSUAttributeTag) , atsuTags, atsuSizes, atsuValues); wxASSERT_MSG( status == noErr , wxT("couldn't modify ATSU style") );}// ----------------------------------------------------------------------------// wxFont// ----------------------------------------------------------------------------bool wxFont::Create(const wxNativeFontInfo& info){ return Create( info.pointSize, info.family, info.style, info.weight, info.underlined, info.faceName, info.encoding );}wxFont::wxFont(const wxString& fontdesc){ wxNativeFontInfo info; if ( info.FromString(fontdesc) ) (void)Create(info);}bool wxFont::Create(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName, wxFontEncoding encoding){ UnRef(); m_refData = new wxFontRefData( pointSize, family, style, weight, underlined, faceName, encoding); RealizeResource(); return true;}bool wxFont::MacCreateThemeFont(wxUint16 themeFontID){ UnRef(); m_refData = new wxFontRefData( 12, wxDEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString, wxFONTENCODING_DEFAULT ); M_FONTDATA->m_macThemeFontID = themeFontID ; RealizeResource(); return true;}wxFont::~wxFont(){}bool wxFont::RealizeResource(){ M_FONTDATA->MacFindFont(); return true;}void wxFont::SetEncoding(wxFontEncoding encoding){ Unshare(); M_FONTDATA->m_encoding = encoding; RealizeResource();}void wxFont::Unshare(){ // Don't change shared data if (!m_refData) { m_refData = new wxFontRefData(); } else { wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData); UnRef(); m_refData = ref; }}void wxFont::SetPointSize(int pointSize){ Unshare(); M_FONTDATA->m_pointSize = pointSize; RealizeResource();}void wxFont::SetFamily(int family){ Unshare(); M_FONTDATA->m_family = family; RealizeResource();}void wxFont::SetStyle(int style){ Unshare(); M_FONTDATA->m_style = style; RealizeResource();}void wxFont::SetWeight(int weight){ Unshare(); M_FONTDATA->m_weight = weight; RealizeResource();}bool wxFont::SetFaceName(const wxString& faceName){ Unshare(); M_FONTDATA->m_faceName = faceName; RealizeResource(); return wxFontBase::SetFaceName(faceName);}void wxFont::SetUnderlined(bool underlined){ Unshare(); M_FONTDATA->m_underlined = underlined; RealizeResource();}void wxFont::SetNoAntiAliasing( bool no ){ Unshare(); M_FONTDATA->SetNoAntiAliasing( no ); RealizeResource();}// ----------------------------------------------------------------------------// accessors// ----------------------------------------------------------------------------// TODO: insert checks everywhere for M_FONTDATA == NULL!int wxFont::GetPointSize() const{ wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); return M_FONTDATA->m_pointSize;}wxSize wxFont::GetPixelSize() const{#if wxUSE_GRAPHICS_CONTEXT // TODO: consider caching the value wxGraphicsContext* dc = wxGraphicsContext::CreateFromNative((CGContextRef) NULL); dc->SetFont(*(wxFont *)this,*wxBLACK); wxDouble width, height = 0; dc->GetTextExtent( wxT("g"), &width, &height, NULL, NULL); return wxSize((int)width, (int)height);#else wxFontBase::GetPixelSize();#endif}int wxFont::GetFamily() const{ wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); return M_FONTDATA->m_family;}int wxFont::GetStyle() const{ wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); return M_FONTDATA->m_style;}int wxFont::GetWeight() const{ wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); return M_FONTDATA->m_weight;}bool wxFont::GetUnderlined() const{ wxCHECK_MSG( M_FONTDATA != NULL , false, wxT("invalid font") ); return M_FONTDATA->m_underlined;}wxString wxFont::GetFaceName() const{ wxCHECK_MSG( M_FONTDATA != NULL , wxEmptyString , wxT("invalid font") ); return M_FONTDATA->m_faceName;}wxFontEncoding wxFont::GetEncoding() const{ wxCHECK_MSG( M_FONTDATA != NULL , wxFONTENCODING_DEFAULT , wxT("invalid font") ); return M_FONTDATA->m_encoding;}bool wxFont::GetNoAntiAliasing() const{ wxCHECK_MSG( M_FONTDATA != NULL , false, wxT("invalid font") ); return M_FONTDATA->m_noAA;}short wxFont::MacGetFontNum() const{ wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); return M_FONTDATA->m_macFontFamily;}short wxFont::MacGetFontSize() const{ wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); return M_FONTDATA->m_macFontSize;}wxByte wxFont::MacGetFontStyle() const{ wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); return M_FONTDATA->m_macFontStyle;}wxUint32 wxFont::MacGetATSUFontID() const{ wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); return M_FONTDATA->m_macATSUFontID;}void * wxFont::MacGetATSUStyle() const{ wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); return M_FONTDATA->m_macATSUStyle;}wxUint32 wxFont::MacGetATSUAdditionalQDStyles() const{ wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); return M_FONTDATA->m_macATSUAdditionalQDStyles;}wxUint16 wxFont::MacGetThemeFontID() const{ wxCHECK_MSG( M_FONTDATA != NULL , 0, wxT("invalid font") ); return M_FONTDATA->m_macThemeFontID;}const wxNativeFontInfo * wxFont::GetNativeFontInfo() const{ wxCHECK_MSG( M_FONTDATA != NULL , NULL, wxT("invalid font") ); wxCHECK_MSG( Ok(), NULL, wxT("invalid font") ); M_FONTDATA->m_info.InitFromFont(*this); return &(M_FONTDATA->m_info);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -