diff options
author | Steve Block <steveblock@google.com> | 2011-05-25 19:08:45 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2011-06-08 13:51:31 +0100 |
commit | 2bde8e466a4451c7319e3a072d118917957d6554 (patch) | |
tree | 28f4a1b869a513e565c7760d0e6a06e7cf1fe95a /Source/WebCore/platform/graphics/win/FontPlatformDataCairoWin.cpp | |
parent | 6939c99b71d9372d14a0c74a772108052e8c48c8 (diff) | |
download | external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.zip external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.tar.gz external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.tar.bz2 |
Merge WebKit at r82507: Initial merge by git
Change-Id: I60ce9d780725b58b45e54165733a8ffee23b683e
Diffstat (limited to 'Source/WebCore/platform/graphics/win/FontPlatformDataCairoWin.cpp')
-rw-r--r-- | Source/WebCore/platform/graphics/win/FontPlatformDataCairoWin.cpp | 69 |
1 files changed, 24 insertions, 45 deletions
diff --git a/Source/WebCore/platform/graphics/win/FontPlatformDataCairoWin.cpp b/Source/WebCore/platform/graphics/win/FontPlatformDataCairoWin.cpp index 0f5c365..e60b69b 100644 --- a/Source/WebCore/platform/graphics/win/FontPlatformDataCairoWin.cpp +++ b/Source/WebCore/platform/graphics/win/FontPlatformDataCairoWin.cpp @@ -4,7 +4,7 @@ * * Copyright (C) 2006, 2007, 2008 Apple Inc. * Copyright (C) 2007 Alp Toker - * Copyright (C) 2008, 2010 Brent Fulgham + * Copyright (C) 2008, 2010, 2011 Brent Fulgham * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -40,7 +40,7 @@ namespace WebCore { void FontPlatformData::platformDataInit(HFONT font, float size, HDC hdc, WCHAR* faceName) { - m_fontFace = cairo_win32_font_face_create_for_hfont(font); + cairo_font_face_t* fontFace = cairo_win32_font_face_create_for_hfont(font); cairo_matrix_t sizeMatrix, ctm; cairo_matrix_init_identity(&ctm); @@ -52,14 +52,18 @@ void FontPlatformData::platformDataInit(HFONT font, float size, HDC hdc, WCHAR* cairo_font_options_set_antialias(fontOptions, CAIRO_ANTIALIAS_SUBPIXEL); } - m_scaledFont = cairo_scaled_font_create(m_fontFace, &sizeMatrix, &ctm, fontOptions); + m_scaledFont = cairo_scaled_font_create(fontFace, &sizeMatrix, &ctm, fontOptions); + cairo_font_face_destroy(fontFace); } FontPlatformData::FontPlatformData(cairo_font_face_t* fontFace, float size, bool bold, bool oblique) : m_font(0) , m_size(size) - , m_fontFace(fontFace) + , m_orientation(Horizontal) + , m_textOrientation(TextOrientationVerticalRight) + , m_widthVariant(RegularWidth) , m_scaledFont(0) + , m_isColorBitmapFont(false) , m_syntheticBold(bold) , m_syntheticOblique(oblique) , m_useGDI(false) @@ -79,64 +83,39 @@ FontPlatformData::FontPlatformData(cairo_font_face_t* fontFace, float size, bool cairo_font_options_destroy(options); } -FontPlatformData::FontPlatformData(const FontPlatformData& source) - : m_font(source.m_font) - , m_size(source.m_size) - , m_fontFace(0) - , m_scaledFont(0) - , m_syntheticBold(source.m_syntheticBold) - , m_syntheticOblique(source.m_syntheticOblique) - , m_useGDI(source.m_useGDI) +FontPlatformData::~FontPlatformData() { - if (source.m_fontFace) - m_fontFace = cairo_font_face_reference(source.m_fontFace); - - if (source.m_scaledFont) - m_scaledFont = cairo_scaled_font_reference(source.m_scaledFont); + if (m_scaledFont && m_scaledFont != hashTableDeletedFontValue()) + cairo_scaled_font_destroy(m_scaledFont); } - -FontPlatformData::~FontPlatformData() +void FontPlatformData::platformDataInit(const FontPlatformData& source) { - cairo_scaled_font_destroy(m_scaledFont); - cairo_font_face_destroy(m_fontFace); + m_font = source.m_font; + m_useGDI = source.m_useGDI; + m_scaledFont = 0; + + if (source.m_scaledFont) + m_scaledFont = cairo_scaled_font_reference(source.m_scaledFont); } -FontPlatformData& FontPlatformData::operator=(const FontPlatformData& other) +const FontPlatformData& FontPlatformData::platformDataAssign(const FontPlatformData& other) { - // Check for self-assignment. - if (this == &other) - return *this; - m_font = other.m_font; - m_size = other.m_size; - m_syntheticBold = other.m_syntheticBold; - m_syntheticOblique = other.m_syntheticOblique; m_useGDI = other.m_useGDI; - if (other.m_fontFace) - cairo_font_face_reference(other.m_fontFace); - if (m_fontFace) - cairo_font_face_destroy(m_fontFace); - m_fontFace = other.m_fontFace; - - if (other.m_scaledFont) - cairo_scaled_font_reference(other.m_scaledFont); - if (m_scaledFont) + if (m_scaledFont && m_scaledFont != hashTableDeletedFontValue()) cairo_scaled_font_destroy(m_scaledFont); - m_scaledFont = other.m_scaledFont; + + m_scaledFont = cairo_scaled_font_reference(other.m_scaledFont); return *this; } -bool FontPlatformData::operator==(const FontPlatformData& other) const -{ +bool FontPlatformData::platformIsEqual(const FontPlatformData& other) const +{ return m_font == other.m_font - && m_fontFace == other.m_fontFace && m_scaledFont == other.m_scaledFont - && m_size == other.m_size - && m_syntheticBold == other.m_syntheticBold - && m_syntheticOblique == other.m_syntheticOblique && m_useGDI == other.m_useGDI; } |