Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2171)

Unified Diff: Source/platform/fonts/FontPlatformData.h

Issue 546973004: Revert 181541 "Merge FontPlatformDataHarfBuzz and FontPlatformData headers" (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/platform/blink_platform.gypi ('k') | Source/platform/fonts/FontPlatformData.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/platform/fonts/FontPlatformData.h
diff --git a/Source/platform/fonts/FontPlatformData.h b/Source/platform/fonts/FontPlatformData.h
index a60a1632d39c6127cdd767e7c5696a1b3f9ad3bc..a589f27a6f64887703cbd3a35c28b6de8402bbfb 100644
--- a/Source/platform/fonts/FontPlatformData.h
+++ b/Source/platform/fonts/FontPlatformData.h
@@ -1,167 +1,143 @@
/*
- * Copyright (c) 2006, 2007, 2008, Google Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2010 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, 2011 Brent Fulgham <bfulgham@webkit.org>
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
*
- * * 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 library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*
- * 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.
*/
+// FIXME: This is temporary until mac switch to using FontPlatformDataHarfBuzz.h and we merge it with this file.
+#if !OS(MACOSX)
+#include "platform/fonts/harfbuzz/FontPlatformDataHarfBuzz.h"
+
+#else
+
#ifndef FontPlatformData_h
#define FontPlatformData_h
-#include "SkPaint.h"
#include "platform/PlatformExport.h"
-#include "platform/SharedBuffer.h"
-#include "platform/fonts/FontDescription.h"
#include "platform/fonts/FontOrientation.h"
-#include "platform/fonts/FontRenderStyle.h"
-#include "platform/fonts/opentype/OpenTypeVerticalData.h"
-#include "wtf/Forward.h"
-#include "wtf/HashTableDeletedValueType.h"
-#include "wtf/RefPtr.h"
-#include "wtf/text/CString.h"
-#include "wtf/text/StringImpl.h"
+#include "platform/fonts/FontWidthVariant.h"
-#if OS(MACOSX)
OBJC_CLASS NSFont;
typedef struct CGFont* CGFontRef;
typedef const struct __CTFont* CTFontRef;
-#include "platform/fonts/mac/MemoryActivatedFont.h"
#include <CoreFoundation/CFBase.h>
#include <objc/objc-auto.h>
-inline CTFontRef toCTFontRef(NSFont *nsFont) { return reinterpret_cast<CTFontRef>(nsFont); }
-#endif // OS(MACOSX)
+#include "wtf/Forward.h"
+#include "wtf/HashTableDeletedValueType.h"
+#include "wtf/PassRefPtr.h"
+#include "wtf/RefCounted.h"
+#include "wtf/RetainPtr.h"
+#include "wtf/text/StringImpl.h"
+
+#include "platform/fonts/mac/MemoryActivatedFont.h"
+#include "third_party/skia/include/core/SkTypeface.h"
-class SkTypeface;
-typedef uint32_t SkFontID;
+typedef struct CGFont* CGFontRef;
+typedef const struct __CTFont* CTFontRef;
+typedef UInt32 FMFont;
+typedef FMFont ATSUFontID;
+typedef UInt32 ATSFontRef;
namespace blink {
-class GraphicsContext;
class HarfBuzzFace;
+inline CTFontRef toCTFontRef(NSFont *nsFont) { return reinterpret_cast<CTFontRef>(nsFont); }
+
class PLATFORM_EXPORT FontPlatformData {
public:
- // Used for deleted values in the font cache's hash tables. The hash table
- // will create us with this structure, and it will compare other values
- // to this "Deleted" one. It expects the Deleted one to be differentiable
- // from the 0 one (created with the empty constructor), so we can't just
- // set everything to 0.
FontPlatformData(WTF::HashTableDeletedValueType);
FontPlatformData();
FontPlatformData(const FontPlatformData&);
-#if OS(MACOSX)
- FontPlatformData(float size, bool syntheticBold, bool syntheticItalic, FontOrientation = Horizontal, FontWidthVariant = RegularWidth);
- FontPlatformData(NSFont*, float size, bool syntheticBold = false, bool syntheticItalic = false,
+ FontPlatformData(float size, bool syntheticBold, bool syntheticOblique, FontOrientation = Horizontal, FontWidthVariant = RegularWidth);
+ FontPlatformData(NSFont*, float size, bool syntheticBold = false, bool syntheticOblique = false,
FontOrientation = Horizontal, FontWidthVariant = RegularWidth);
FontPlatformData(CGFontRef, float size, bool syntheticBold, bool syntheticOblique, FontOrientation, FontWidthVariant);
-#else
- FontPlatformData(float textSize, bool syntheticBold, bool syntheticItalic);
- FontPlatformData(PassRefPtr<SkTypeface>, const char* name, float textSize, bool syntheticBold, bool syntheticItalic, FontOrientation = Horizontal, bool subpixelTextPosition = defaultUseSubpixelPositioning());
- FontPlatformData(const FontPlatformData& src, float textSize);
-#endif
+
~FontPlatformData();
-#if OS(MACOSX)
NSFont* font() const { return m_font; }
void setFont(NSFont*);
CGFontRef cgFont() const { return m_cgFont.get(); }
CTFontRef ctFont() const;
+ SkTypeface* typeface() const;
bool roundsGlyphAdvances() const;
bool allowsLigatures() const;
+ String fontFamilyName() const;
+ bool isFixedPitch() const;
+ 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; }
bool isColorBitmapFont() const { return m_isColorBitmapFont; }
bool isCompositeFontReference() const { return m_isCompositeFontReference; }
+ FontOrientation orientation() const { return m_orientation; }
FontWidthVariant widthVariant() const { return m_widthVariant; }
-#endif
- String fontFamilyName() const;
- float size() const { return m_textSize; }
- bool isFixedPitch() const;
- bool syntheticBold() const { return m_syntheticBold; }
- bool syntheticItalic() const { return m_syntheticItalic; }
+ void setOrientation(FontOrientation orientation) { m_orientation = orientation; }
- SkTypeface* typeface() const;
- HarfBuzzFace* harfBuzzFace() const;
- SkFontID uniqueID() const;
- unsigned hash() const;
+ HarfBuzzFace* harfBuzzFace();
+
+ unsigned hash() const
+ {
+ ASSERT(m_font || !m_cgFont);
+ uintptr_t hashCodes[3] = { (uintptr_t)m_font, m_widthVariant, static_cast<uintptr_t>(m_orientation << 2 | m_syntheticBold << 1 | m_syntheticOblique) };
+ return StringHasher::hashMemory<sizeof(hashCodes)>(hashCodes);
+ }
- FontOrientation orientation() const { return m_orientation; }
- void setOrientation(FontOrientation orientation) { m_orientation = orientation; }
- void setSyntheticBold(bool syntheticBold) { m_syntheticBold = syntheticBold; }
- void setSyntheticItalic(bool syntheticItalic) { m_syntheticItalic = syntheticItalic; }
- bool operator==(const FontPlatformData&) const;
const FontPlatformData& operator=(const FontPlatformData&);
- bool isHashTableDeletedValue() const { return m_isHashTableDeletedValue; }
-#if OS(WIN)
- void setMinSizeForAntiAlias(unsigned size) { m_minSizeForAntiAlias = size; }
- unsigned minSizeForAntiAlias() const { return m_minSizeForAntiAlias; }
- void setHinting(SkPaint::Hinting style)
+
+ bool operator==(const FontPlatformData& other) const
{
- m_style.useAutoHint = 0;
- m_style.hintStyle = style;
+ return platformIsEqual(other)
+ && m_size == other.m_size
+ && m_syntheticBold == other.m_syntheticBold
+ && m_syntheticOblique == other.m_syntheticOblique
+ && m_isColorBitmapFont == other.m_isColorBitmapFont
+ && m_isCompositeFontReference == other.m_isCompositeFontReference
+ && m_orientation == other.m_orientation
+ && m_widthVariant == other.m_widthVariant;
}
-#endif
- bool fontContainsCharacter(UChar32 character);
-#if ENABLE(OPENTYPE_VERTICAL)
- PassRefPtr<OpenTypeVerticalData> verticalData() const;
- PassRefPtr<SharedBuffer> openTypeTable(uint32_t table) const;
-#endif
+ bool isHashTableDeletedValue() const
+ {
+ return m_font == hashTableDeletedFontValue();
+ }
#ifndef NDEBUG
String description() const;
#endif
-#if !OS(MACOSX)
- // The returned styles are all actual styles without FontRenderStyle::NoPreference.
- const FontRenderStyle& fontRenderStyle() const { return m_style; }
- void setupPaint(SkPaint*, GraphicsContext* = 0) const;
-#endif
-
-#if OS(WIN)
- int paintTextFlags() const { return m_paintTextFlags; }
-#else
- static void setHinting(SkPaint::Hinting);
- static void setAutoHint(bool);
- static void setUseBitmaps(bool);
- static void setAntiAlias(bool);
- static void setSubpixelRendering(bool);
-#endif
-
private:
-#if !OS(MACOSX)
- bool static defaultUseSubpixelPositioning();
- void querySystemForRenderStyle(bool useSkiaSubpixelPositioning);
-#else
+ bool platformIsEqual(const FontPlatformData&) const;
+ void platformDataInit(const FontPlatformData&);
+ const FontPlatformData& platformDataAssign(const FontPlatformData&);
+#if OS(MACOSX)
// Load various data about the font specified by |nsFont| with the size fontSize into the following output paramters:
// Note: Callers should always take into account that for the Chromium port, |outNSFont| isn't necessarily the same
// font as |nsFont|. This because the sandbox may block loading of the original font.
@@ -169,46 +145,31 @@ private:
// The caller is responsible for calling CFRelease() on this parameter when done with it.
// * cgFont - CGFontRef representing the input font at the specified point size.
void loadFont(NSFont*, float fontSize, NSFont*& outNSFont, CGFontRef&);
-
- bool platformIsEqual(const FontPlatformData&) const;
- void platformDataInit(const FontPlatformData&);
- const FontPlatformData& platformDataAssign(const FontPlatformData&);
-#endif
-
- mutable RefPtr<SkTypeface> m_typeface;
-#if !OS(WIN)
- CString m_family;
+ static NSFont* hashTableDeletedFontValue() { return reinterpret_cast<NSFont *>(-1); }
#endif
public:
- float m_textSize;
bool m_syntheticBold;
- bool m_syntheticItalic;
+ bool m_syntheticOblique;
FontOrientation m_orientation;
-#if OS(MACOSX)
- bool m_isColorBitmapFont;
- bool m_isCompositeFontReference;
+ float m_size;
FontWidthVariant m_widthVariant;
-#endif
+
private:
-#if OS(MACOSX)
NSFont* m_font;
RetainPtr<CGFontRef> m_cgFont;
mutable RetainPtr<CTFontRef> m_CTFont;
+
RefPtr<MemoryActivatedFont> m_inMemoryFont;
-#else
- FontRenderStyle m_style;
-#endif
+ RefPtr<HarfBuzzFace> m_harfBuzzFace;
+ mutable RefPtr<SkTypeface> m_typeface;
- mutable RefPtr<HarfBuzzFace> m_harfBuzzFace;
- bool m_isHashTableDeletedValue;
-#if OS(WIN)
- int m_paintTextFlags;
- bool m_useSubpixelPositioning;
- unsigned m_minSizeForAntiAlias;
-#endif
+ bool m_isColorBitmapFont;
+ bool m_isCompositeFontReference;
};
} // namespace blink
-#endif // ifdef FontPlatformData_h
+#endif // FontPlatformData_h
+
+#endif
« no previous file with comments | « Source/platform/blink_platform.gypi ('k') | Source/platform/fonts/FontPlatformData.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698