summaryrefslogtreecommitdiffstats
path: root/WebCore/platform/graphics/android/FontPlatformDataAndroid.cpp
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2008-10-21 07:00:00 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2008-10-21 07:00:00 -0700
commit9364f22aed35e1a1e9d07c121510f80be3ab0502 (patch)
treed49911209b132da58d838efa852daf28d516df21 /WebCore/platform/graphics/android/FontPlatformDataAndroid.cpp
parent87eb0cb35bad8784770ebc807e6c982432e47107 (diff)
downloadexternal_webkit-9364f22aed35e1a1e9d07c121510f80be3ab0502.zip
external_webkit-9364f22aed35e1a1e9d07c121510f80be3ab0502.tar.gz
external_webkit-9364f22aed35e1a1e9d07c121510f80be3ab0502.tar.bz2
Initial Contribution
Diffstat (limited to 'WebCore/platform/graphics/android/FontPlatformDataAndroid.cpp')
-rw-r--r--WebCore/platform/graphics/android/FontPlatformDataAndroid.cpp151
1 files changed, 151 insertions, 0 deletions
diff --git a/WebCore/platform/graphics/android/FontPlatformDataAndroid.cpp b/WebCore/platform/graphics/android/FontPlatformDataAndroid.cpp
new file mode 100644
index 0000000..4b4186a
--- /dev/null
+++ b/WebCore/platform/graphics/android/FontPlatformDataAndroid.cpp
@@ -0,0 +1,151 @@
+/*
+ * 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 Apple Computer, Inc.
+ *
+ * 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.
+ *
+ * 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., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+#include "FontPlatformData.h"
+
+#include "SkPaint.h"
+#include "SkTypeface.h"
+
+//#define TRACE_FONTPLATFORMDATA_LIFE
+//#define COUNT_FONTPLATFORMDATA_LIFE
+
+#ifdef COUNT_FONTPLATFORMDATA_LIFE
+static int gCount;
+static int gMaxCount;
+
+static void inc_count()
+{
+ if (++gCount > gMaxCount)
+ {
+ gMaxCount = gCount;
+ SkDebugf("---------- FontPlatformData %d\n", gMaxCount);
+ }
+}
+
+static void dec_count() { --gCount; }
+#else
+ #define inc_count()
+ #define dec_count()
+#endif
+
+#ifdef TRACE_FONTPLATFORMDATA_LIFE
+ #define trace(num) SkDebugf("FontPlatformData%d %p %g %d %d\n", num, mTypeface, mTextSize, mFakeBold, mFakeItalic)
+#else
+ #define trace(num)
+#endif
+
+namespace WebCore {
+
+FontPlatformData::FontPlatformData()
+ : mTypeface(NULL), mTextSize(0), mFakeBold(false), mFakeItalic(false)
+{
+ inc_count();
+ trace(1);
+}
+
+FontPlatformData::FontPlatformData(const FontPlatformData& src)
+{
+ src.mTypeface->safeRef();
+ mTypeface = src.mTypeface;
+
+ mTextSize = src.mTextSize;
+ mFakeBold = src.mFakeBold;
+ mFakeItalic = src.mFakeItalic;
+
+ inc_count();
+ trace(2);
+}
+
+FontPlatformData::FontPlatformData(SkTypeface* tf, float textSize, bool fakeBold, bool fakeItalic)
+ : mTypeface(tf), mTextSize(textSize), mFakeBold(fakeBold), mFakeItalic(fakeItalic)
+{
+ mTypeface->safeRef();
+
+ inc_count();
+ trace(3);
+}
+
+FontPlatformData::FontPlatformData(const FontPlatformData& src, float textSize)
+ : mTypeface(src.mTypeface), mTextSize(textSize), mFakeBold(src.mFakeBold), mFakeItalic(src.mFakeItalic)
+{
+ mTypeface->safeRef();
+
+ inc_count();
+ trace(4);
+}
+
+FontPlatformData::~FontPlatformData()
+{
+ dec_count();
+#ifdef TRACE_FONTPLATFORMDATA_LIFE
+ SkDebugf("----------- ~FontPlatformData\n");
+#endif
+
+ mTypeface->safeUnref();
+}
+
+FontPlatformData& FontPlatformData::operator=(const FontPlatformData& src)
+{
+ SkRefCnt_SafeAssign(mTypeface, src.mTypeface);
+
+ mTextSize = src.mTextSize;
+ mFakeBold = src.mFakeBold;
+ mFakeItalic = src.mFakeItalic;
+
+ return *this;
+}
+
+void FontPlatformData::setupPaint(SkPaint* paint) const
+{
+ float ts = mTextSize;
+ if (!(ts > 0))
+ ts = 12;
+
+ paint->setAntiAlias(true);
+ paint->setSubpixelText(true);
+ paint->setTextSize(SkFloatToScalar(ts));
+ paint->setTypeface(mTypeface);
+ paint->setFakeBoldText(mFakeBold);
+ paint->setTextSkewX(mFakeItalic ? -SK_Scalar1/4 : 0);
+ paint->setTextEncoding(SkPaint::kUTF16_TextEncoding);
+}
+
+bool FontPlatformData::operator==(const FontPlatformData& a) const
+{
+ return SkTypeface::Equal(mTypeface, a.mTypeface) &&
+ mTextSize == a.mTextSize &&
+ mFakeBold == a.mFakeBold &&
+ mFakeItalic == a.mFakeItalic;
+}
+
+unsigned FontPlatformData::hash() const
+{
+ unsigned h = SkTypeface::UniqueID(mTypeface);
+ h ^= 0x01010101 * (((int)mFakeBold << 1) | (int)mFakeItalic);
+ h ^= *(uint32_t*)&mTextSize;
+ return h;
+}
+
+}
+