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

📄 fontplatformdatalinux.cpp

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 CPP
字号:
/* * Copyright (c) 2006, 2007, 2008, Google Inc. All rights reserved. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: *  *     * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. *     * 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. *     * Neither the name of Google Inc. nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. *  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "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 THE COPYRIGHT * OWNER 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 "StringImpl.h"#include "NotImplemented.h"#include "SkPaint.h"#include "SkTypeface.h"namespace WebCore {FontPlatformData::FontPlatformData(const FontPlatformData& src)    : m_typeface(src.m_typeface)    , m_textSize(src.m_textSize)    , m_fakeBold(src.m_fakeBold)    , m_fakeItalic(src.m_fakeItalic){    m_typeface->safeRef();}FontPlatformData::FontPlatformData(SkTypeface* tf, float textSize, bool fakeBold, bool fakeItalic)    : m_typeface(tf)    , m_textSize(textSize)    , m_fakeBold(fakeBold)    , m_fakeItalic(fakeItalic){    m_typeface->safeRef();}FontPlatformData::FontPlatformData(const FontPlatformData& src, float textSize)    : m_typeface(src.m_typeface)    , m_textSize(textSize)    , m_fakeBold(src.m_fakeBold)    , m_fakeItalic(src.m_fakeItalic){    m_typeface->safeRef();}FontPlatformData::~FontPlatformData(){    m_typeface->safeUnref();}FontPlatformData& FontPlatformData::operator=(const FontPlatformData& src){    SkRefCnt_SafeAssign(m_typeface, src.m_typeface);    m_textSize = src.m_textSize;    m_fakeBold = src.m_fakeBold;    m_fakeItalic = src.m_fakeItalic;    return *this;}void FontPlatformData::setupPaint(SkPaint* paint) const{    const float ts = m_textSize > 0 ? m_textSize : 12;    paint->setAntiAlias(true);    paint->setSubpixelText(false);    paint->setTextSize(SkFloatToScalar(ts));    paint->setTypeface(m_typeface);    paint->setFakeBoldText(m_fakeBold);    paint->setTextSkewX(m_fakeItalic ? -SK_Scalar1 / 4 : 0);    paint->setTextEncoding(SkPaint::kUTF16_TextEncoding);}bool FontPlatformData::operator==(const FontPlatformData& a) const{    // If either of the typeface pointers are invalid (either NULL or the    // special deleted value) then we test for pointer equality. Otherwise, we    // call SkTypeface::Equal on the valid pointers.    bool typefacesEqual;    if (m_typeface == hashTableDeletedFontValue()        || a.m_typeface == hashTableDeletedFontValue()        || !m_typeface        || !a.m_typeface)        typefacesEqual = m_typeface == a.m_typeface;    else        typefacesEqual = SkTypeface::Equal(m_typeface, a.m_typeface);    return typefacesEqual         && m_textSize == a.m_textSize        && m_fakeBold == a.m_fakeBold        && m_fakeItalic == a.m_fakeItalic;}unsigned FontPlatformData::hash() const{    unsigned h = SkTypeface::UniqueID(m_typeface);    h ^= 0x01010101 * ((static_cast<int>(m_fakeBold) << 1) | static_cast<int>(m_fakeItalic));    // This memcpy is to avoid a reinterpret_cast that breaks strict-aliasing    // rules. Memcpy is generally optimized enough so that performance doesn't    // matter here.    uint32_t textSizeBytes;    memcpy(&textSizeBytes, &m_textSize, sizeof(uint32_t));    h ^= textSizeBytes;    return h;}bool FontPlatformData::isFixedPitch() const{    notImplemented();    return false;}}  // namespace WebCore

⌨️ 快捷键说明

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