⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 font.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        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 + -