Factor out UnPreMultiplyPreservingByteOrder

BUG=
R=reed@google.com

Author: mtklein@google.com

Review URL: https://codereview.chromium.org/130303005

git-svn-id: http://skia.googlecode.com/svn/trunk@13103 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/ports/SkImageDecoder_CG.cpp b/src/ports/SkImageDecoder_CG.cpp
index 9b93f81..beb6ed1 100644
--- a/src/ports/SkImageDecoder_CG.cpp
+++ b/src/ports/SkImageDecoder_CG.cpp
@@ -50,17 +50,6 @@
     virtual bool onDecode(SkStream* stream, SkBitmap* bm, Mode);
 };
 
-// Returns an unpremultiplied version of color. It will have the same ordering and size as an
-// SkPMColor, but the alpha will not be premultiplied.
-static SkPMColor unpremultiply_pmcolor(SkPMColor color) {
-    U8CPU a = SkGetPackedA32(color);
-    const SkUnPreMultiply::Scale scale = SkUnPreMultiply::GetScale(a);
-    return SkPackARGB32NoCheck(a,
-                               SkUnPreMultiply::ApplyScale(scale, SkGetPackedR32(color)),
-                               SkUnPreMultiply::ApplyScale(scale, SkGetPackedG32(color)),
-                               SkUnPreMultiply::ApplyScale(scale, SkGetPackedB32(color)));
-}
-
 #define BITMAP_INFO (kCGBitmapByteOrder32Big | kCGImageAlphaPremultipliedLast)
 
 bool SkImageDecoder_CG::onDecode(SkStream* stream, SkBitmap* bm, Mode mode) {
@@ -118,7 +107,7 @@
         for (int i = 0; i < width; ++i) {
             for (int j = 0; j < height; ++j) {
                 uint32_t* addr = bm->getAddr32(i, j);
-                *addr = unpremultiply_pmcolor(*addr);
+                *addr = SkUnPreMultiply::UnPreMultiplyPreservingByteOrder(*addr);
             }
         }
         bm->setAlphaType(kUnpremul_SkAlphaType);