support lcd16 in text atlas (sans shader support)



git-svn-id: http://skia.googlecode.com/svn/trunk@939 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/SkGrFontScaler.cpp b/src/gpu/SkGrFontScaler.cpp
index 3d57aa8..16e44b9 100644
--- a/src/gpu/SkGrFontScaler.cpp
+++ b/src/gpu/SkGrFontScaler.cpp
@@ -83,6 +83,19 @@
     GrSafeUnref(fKey);
 }
 
+GrMaskFormat SkGrFontScaler::getMaskFormat() {
+    SkMask::Format format = fStrike->getMaskFormat();
+    switch (format) {
+        case SkMask::kA8_Format:
+            return kA8_GrMaskFormat;
+        case SkMask::kLCD16_Format:
+            return kA565_GrMaskFormat;
+        default:
+            GrAssert(!"unsupported SkMask::Format");
+            return kA8_GrMaskFormat;
+    }
+}
+
 const GrKey* SkGrFontScaler::getKey() {
     if (NULL == fKey) {
         fKey = new SkGrDescKey(fStrike->getDescriptor());
@@ -117,8 +130,9 @@
     if (srcRB == dstRB) {
         memcpy(dst, src, dstRB * height);
     } else {
+        const int bbp = GrMaskFormatBytesPerPixel(this->getMaskFormat());
         for (int y = 0; y < height; y++) {
-            memcpy(dst, src, width);
+            memcpy(dst, src, width * bbp);
             src = (const char*)src + srcRB;
             dst = (char*)dst + dstRB;
         }