move factory for 565 into its own file



git-svn-id: http://skia.googlecode.com/svn/trunk@374 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkBlitter.cpp b/src/core/SkBlitter.cpp
index e60887e..c8580ea 100644
--- a/src/core/SkBlitter.cpp
+++ b/src/core/SkBlitter.cpp
@@ -882,9 +882,8 @@
         }
     }
 
-    if (NULL == shader && (NULL != mode || paint.getColorFilter() != NULL))
-    {
-        // xfermodes require shaders for our current set of blitters
+    if (NULL == shader && (NULL != mode || paint.getColorFilter() != NULL)) {
+        // xfermodes (and filters) require shaders for our current blitters
         shader = SkNEW(SkColorShader);
         ((SkPaint*)&paint)->setShader(shader)->unref();
     }
@@ -894,6 +893,8 @@
         SkASSERT(shader);
         shader = SkNEW_ARGS(SkFilterShader, (shader, paint.getColorFilter()));
         ((SkPaint*)&paint)->setShader(shader)->unref();
+        // blitters should ignore the presence/absence of a filter, since
+        // if there is one, the shader will take care of it.
     }
     
     if (shader && !shader->setContext(device, paint, matrix)) {
@@ -917,29 +918,7 @@
         break;
 
     case SkBitmap::kRGB_565_Config:
-        if (shader)
-        {
-            if (mode)
-                SK_PLACEMENT_NEW_ARGS(blitter, SkRGB16_Shader_Xfermode_Blitter, storage, storageSize, (device, paint));
-            else if (shader->canCallShadeSpan16())
-                SK_PLACEMENT_NEW_ARGS(blitter, SkRGB16_Shader16_Blitter, storage, storageSize, (device, paint));
-            else
-                SK_PLACEMENT_NEW_ARGS(blitter, SkRGB16_Shader_Blitter, storage, storageSize, (device, paint));
-        } else {
-            SkColor color = paint.getColor();
-            if (0 == SkColorGetA(color)) {
-                SK_PLACEMENT_NEW(blitter, SkNullBlitter, storage, storageSize);
-            } else if (SK_ColorBLACK == color) {
-                SK_PLACEMENT_NEW_ARGS(blitter, SkRGB16_Black_Blitter, storage,
-                                      storageSize, (device, paint));
-            } else if (0xFF == SkColorGetA(color)) {
-                SK_PLACEMENT_NEW_ARGS(blitter, SkRGB16_Opaque_Blitter, storage,
-                                      storageSize, (device, paint));
-            } else {
-                SK_PLACEMENT_NEW_ARGS(blitter, SkRGB16_Blitter, storage,
-                                      storageSize, (device, paint));
-            }
-        }
+        blitter = SkBlitter_ChooseD565(device, paint, storage, storageSize);
         break;
 
     case SkBitmap::kARGB_8888_Config: