summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/graphics/cairo/FontPlatformData.h
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/platform/graphics/cairo/FontPlatformData.h')
-rw-r--r--WebCore/platform/graphics/cairo/FontPlatformData.h164
1 files changed, 5 insertions, 159 deletions
diff --git a/WebCore/platform/graphics/cairo/FontPlatformData.h b/WebCore/platform/graphics/cairo/FontPlatformData.h
index fc6b9f1..e5ffef2 100644
--- a/WebCore/platform/graphics/cairo/FontPlatformData.h
+++ b/WebCore/platform/graphics/cairo/FontPlatformData.h
@@ -1,11 +1,5 @@
/*
- * This file is part of the internal font implementation. It should not be included by anyone other than
- * FontMac.cpp, FontWin.cpp and Font.cpp.
- *
- * Copyright (C) 2006, 2007, 2008 Apple Inc.
- * Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com
- * Copyright (C) 2007 Holger Hans Peter Freyther
- * Copyright (C) 2007 Pioneer Research Center USA, Inc.
+ * Copyright (C) 2010 Igalia S.L.
* All rights reserved.
*
* This library is free software; you can redistribute it and/or
@@ -28,160 +22,12 @@
#ifndef FontPlatformData_h
#define FontPlatformData_h
-#include <wtf/Forward.h>
-#include <cairo.h>
-#include "FontDescription.h"
-#include "GlyphBuffer.h"
-
-#if defined(USE_FREETYPE)
-#include <cairo-ft.h>
-#include <fontconfig/fcfreetype.h>
-#elif defined(USE_PANGO)
-#include <pango/pangocairo.h>
-#elif PLATFORM(WIN)
-#include <cairo-win32.h>
-#include "RefCountedGDIHandle.h"
-#include "StringImpl.h"
-#else
-#error "Must defined a font backend"
-#endif
-
-#if PLATFORM(WIN)
-typedef struct HFONT__* HFONT;
-#endif
-namespace WebCore {
-
-class FontPlatformData {
-public:
- FontPlatformData(WTF::HashTableDeletedValueType)
#if defined(USE_FREETYPE)
- : m_pattern(hashTableDeletedFontValue())
- , m_fallbacks(0)
+#include "FontPlatformDataFreeType.h"
#elif defined(USE_PANGO)
- : m_context(0)
- , m_font(hashTableDeletedFontValue())
+#include "FontPlatformDataPango.h"
#elif PLATFORM(WIN)
- : m_fontFace(0)
- , m_useGDI(false)
- , m_font(WTF::HashTableDeletedValue)
-#else
-#error "Must defined a font backend"
+#include "FontPlatformDataCairoWin.h"
#endif
- , m_size(0)
- , m_syntheticBold(false)
- , m_syntheticOblique(false)
- , m_scaledFont(0)
- { }
- FontPlatformData()
-#if defined(USE_FREETYPE)
- : m_pattern(0)
- , m_fallbacks(0)
-#elif defined(USE_PANGO)
- : m_context(0)
- , m_font(0)
-#elif PLATFORM(WIN)
- : m_fontFace(0)
- , m_useGDI(false)
-#else
-#error "Must defined a font backend"
-#endif
- , m_size(0)
- , m_syntheticBold(false)
- , m_syntheticOblique(false)
- , m_scaledFont(0)
- { }
-
-#if PLATFORM(WIN)
- FontPlatformData(HFONT, float size, bool bold, bool oblique, bool useGDI);
-#else
- FontPlatformData(const FontDescription&, const AtomicString& family);
-#endif
-
- FontPlatformData(cairo_font_face_t* fontFace, float size, bool bold, bool italic);
- FontPlatformData(float size, bool bold, bool italic);
- FontPlatformData(const FontPlatformData&);
-
- ~FontPlatformData();
-
-#if !PLATFORM(WIN)
- static bool init();
-#else
- HFONT hfont() const { return m_font->handle(); }
- bool useGDI() const { return m_useGDI; }
- cairo_font_face_t* fontFace() const { return m_fontFace; }
-#endif
-
- bool isFixedPitch();
- float size() const { return m_size; }
- void setSize(float size) { m_size = size; }
- bool syntheticBold() const { return m_syntheticBold; }
- bool syntheticOblique() const { return m_syntheticOblique; }
-
- cairo_scaled_font_t* scaledFont() const { return m_scaledFont; }
-
- unsigned hash() const
- {
-#if PLATFORM(WIN)
- return m_font->hash();
-#else
-#if defined(USE_FREETYPE)
- if (m_pattern)
- return FcPatternHash(m_pattern);
-#endif
- uintptr_t hashCodes[1] = { reinterpret_cast<uintptr_t>(m_scaledFont) };
- return StringImpl::computeHash(reinterpret_cast<UChar*>(hashCodes), sizeof(hashCodes) / sizeof(UChar));
-#endif
- }
-
- bool operator==(const FontPlatformData&) const;
- FontPlatformData& operator=(const FontPlatformData&);
- bool isHashTableDeletedValue() const
- {
-#if defined(USE_FREETYPE)
- return m_pattern == hashTableDeletedFontValue();
-#elif defined(USE_PANGO)
- return m_font == hashTableDeletedFontValue();
-#elif PLATFORM(WIN)
- return m_font.isHashTableDeletedValue();
-#endif
- }
-
-#ifndef NDEBUG
- String description() const;
-#endif
-
-#if defined(USE_FREETYPE)
- FcPattern* m_pattern;
- FcFontSet* m_fallbacks;
-#elif defined(USE_PANGO)
- static PangoFontMap* m_fontMap;
- static GHashTable* m_hashTable;
-
- PangoContext* m_context;
- PangoFont* m_font;
-#elif PLATFORM(WIN)
-private:
- void platformDataInit(HFONT, float size, HDC, WCHAR* faceName);
-
- RefPtr<RefCountedGDIHandle<HFONT> > m_font;
- cairo_font_face_t* m_fontFace;
- bool m_useGDI;
-#else
-#error "Must defined a font backend"
-#endif
- float m_size;
- bool m_syntheticBold;
- bool m_syntheticOblique;
- cairo_scaled_font_t* m_scaledFont;
-private:
-#if defined(USE_FREETYPE)
- static FcPattern *hashTableDeletedFontValue() { return reinterpret_cast<FcPattern*>(-1); }
-#elif defined(USE_PANGO)
- static PangoFont *hashTableDeletedFontValue() { return reinterpret_cast<PangoFont*>(-1); }
-#endif
-};
-
-}
-
-#endif
+#endif // FontPlatformData_h