Add font scaler gm.
http://codereview.appspot.com/5337044/
git-svn-id: http://skia.googlecode.com/svn/trunk@2619 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gm/fontscaler.cpp b/gm/fontscaler.cpp
index 411eb67..5c2a3de 100644
--- a/gm/fontscaler.cpp
+++ b/gm/fontscaler.cpp
@@ -47,7 +47,7 @@
}
virtual SkISize onISize() {
- return make_isize(1500, 750);
+ return make_isize(1450, 750);
}
static void rotate_about(SkCanvas* canvas, SkScalar degrees, SkScalar px, SkScalar py) {
diff --git a/gyp/gmslides.gypi b/gyp/gmslides.gypi
index e7cc883..8a97b0c 100644
--- a/gyp/gmslides.gypi
+++ b/gyp/gmslides.gypi
@@ -10,7 +10,7 @@
'../gm/emptypath.cpp',
'../gm/filltypes.cpp',
'../gm/filltypespersp.cpp',
-# '../gm/fontscaler.cpp',
+ '../gm/fontscaler.cpp',
'../gm/gradients.cpp',
'../gm/hairmodes.cpp',
'../gm/lcdtext.cpp',
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index ce08e0b..aa1d7b1 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -1569,7 +1569,13 @@
ptr = write_scalar(ptr, this->getStrokeWidth());
ptr = write_scalar(ptr, this->getStrokeMiter());
*ptr++ = this->getColor();
- *ptr++ = (this->getFlags() << 16) | (this->getTextAlign() << 8) | flatFlags;
+ // previously flags:16, textAlign:8, flatFlags:8
+ // now flags:16, hinting:4, textAlign:4, flatFlags:8
+ *ptr++ = (this->getFlags() << 16) |
+ // hinting added later. 0 in this nibble means use the default.
+ ((this->getHinting()+1) << 12) |
+ (this->getTextAlign() << 8) |
+ flatFlags;
*ptr++ = pack_4(this->getStrokeCap(), this->getStrokeJoin(),
this->getStyle(), this->getTextEncoding());
@@ -1602,9 +1608,17 @@
this->setStrokeMiter(read_scalar(pod));
this->setColor(*pod++);
+ // previously flags:16, textAlign:8, flatFlags:8
+ // now flags:16, hinting:4, textAlign:4, flatFlags:8
uint32_t tmp = *pod++;
this->setFlags(tmp >> 16);
- this->setTextAlign(static_cast<Align>((tmp >> 8) & 0xFF));
+
+ // hinting added later. 0 in this nibble means use the default.
+ uint32_t hinting = (tmp >> 12) & 0xF;
+ this->setHinting(0 == hinting ? kNormal_Hinting : static_cast<Hinting>(hinting-1));
+
+ this->setTextAlign(static_cast<Align>((tmp >> 8) & 0xF));
+
uint8_t flatFlags = tmp & 0xFF;
tmp = *pod++;