Scanline decoding for gifs

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/e9c10b9121887e8c300bd41357461418e061984d

Review URL: https://codereview.chromium.org/1305123002
diff --git a/src/codec/SkCodecPriv.h b/src/codec/SkCodecPriv.h
index 7260741..2769cec 100644
--- a/src/codec/SkCodecPriv.h
+++ b/src/codec/SkCodecPriv.h
@@ -31,6 +31,17 @@
     SkSwizzler::GetResult(zeroAlpha, maxAlpha);
 
 /*
+ * returns a scaled dimension based on the original dimension and the sampleSize
+ * NOTE: we round down here for scaled dimension to match the behavior of SkImageDecoder
+ */
+static int get_scaled_dimension(int srcDimension, int sampleSize) {
+    if (sampleSize > srcDimension) {
+        return 1;
+    }
+    return srcDimension / sampleSize;
+}
+
+/*
  * Returns the first coordinate that we will keep during a scaled decode.
  * The output can be interpreted as an x-coordinate or a y-coordinate.
  *
@@ -137,7 +148,7 @@
         SkASSERT(nullptr != inputColorPtr);
         SkASSERT(nullptr != inputColorCount);
         SkASSERT(nullptr != colorTable);
-        memcpy(inputColorPtr, colorTable->readColors(), *inputColorCount * 4);
+        memcpy(inputColorPtr, colorTable->readColors(), *inputColorCount * sizeof(SkPMColor));
     }
 }