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

📄 fontplatformdatawx.cpp

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 CPP
字号:
/* * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com> * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  */#include "config.h"#include "FontPlatformData.h"#include "FontDescription.h"#include <wx/defs.h>#include <wx/gdicmn.h>#include <wx/font.h>namespace WebCore {static wxFontFamily fontFamilyToWxFontFamily(const int family){    switch (family) {        case FontDescription::StandardFamily:            return wxFONTFAMILY_DEFAULT;        case FontDescription::SerifFamily:            return wxFONTFAMILY_ROMAN;        case FontDescription::SansSerifFamily:            return wxFONTFAMILY_MODERN;        case FontDescription::MonospaceFamily:            return wxFONTFAMILY_TELETYPE; // TODO: Check these are equivalent        case FontDescription::CursiveFamily:            return wxFONTFAMILY_SCRIPT;        case FontDescription::FantasyFamily:            return wxFONTFAMILY_DECORATIVE;        default:            return wxFONTFAMILY_DEFAULT;    }}static wxFontWeight fontWeightToWxFontWeight(FontWeight weight){    if (weight >= FontWeight600)        return wxFONTWEIGHT_BOLD;    if (weight <= FontWeight300)        return wxFONTWEIGHT_LIGHT;        return wxFONTWEIGHT_NORMAL;} static int italicToWxFontStyle(bool isItalic){    if (isItalic)        return wxFONTSTYLE_ITALIC;        return wxFONTSTYLE_NORMAL;}FontPlatformData::FontPlatformData(const FontDescription& desc, const AtomicString& family){// NB: The Windows wxFont constructor has two forms, one taking a wxSize (with pixels)// and one taking an int (points). When points are used, Windows calculates// a pixel size using an algorithm which causes the size to be way off. However,// this is a moot issue on Linux and Mac as they only accept the point argument. So,// we use the pixel size constructor on Windows, but we use point size on Linux and Mac.#if __WXMSW__    m_font = new FontHolder(new wxFont(   wxSize(0, -desc.computedPixelSize()),                                 fontFamilyToWxFontFamily(desc.genericFamily()),                                 italicToWxFontStyle(desc.italic()),                                fontWeightToWxFontWeight(desc.weight()),                                false,                                family.string()                            )                        ); #else    m_font = new FontHolder(new wxFont(   desc.computedPixelSize(),                                 fontFamilyToWxFontFamily(desc.genericFamily()),                                 italicToWxFontStyle(desc.italic()),                                fontWeightToWxFontWeight(desc.weight()),                                false,                                family.string()                            )                        ); #endif    m_fontState = VALID;     }unsigned FontPlatformData::computeHash() const {        wxFont* thisFont = m_font->font();        ASSERT(thisFont && thisFont->IsOk());                // make a hash that is unique for this font, but not globally unique - that is,        // a font whose properties are equal should generate the same hash        uintptr_t hashCodes[6] = { thisFont->GetPointSize(), thisFont->GetFamily(), thisFont->GetStyle(),                                     thisFont->GetWeight(), thisFont->GetUnderlined(),                                     StringImpl::computeHash(thisFont->GetFaceName().mb_str(wxConvUTF8)) };                return StringImpl::computeHash(reinterpret_cast<UChar*>(hashCodes), sizeof(hashCodes) / sizeof(UChar));}FontPlatformData::~FontPlatformData(){    m_fontState = UNINITIALIZED;    m_font = 0;}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -