Sk_API for SkImageGenerator and SkInstallDiscardablePixelRef

Added SK_API to SkImageGenerator (already in include/).

Moved SkDiscardablePixelRef::Install to SkInstallDiscardablePixelRef,
added SK_API to that function, and moved declaration to
SkImageGenerator.h

This keeps the SkDiscardablePixelRef internal to Skia, but exposes a
method to install it into a bitmap.

Modifed tests that rely on this functio to use new version.

BUG=
R=mtklein@google.com, reed@google.com

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

git-svn-id: http://skia.googlecode.com/svn/trunk/include@12612 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/core/SkImageGenerator.h b/core/SkImageGenerator.h
index c56e62a..d56f8f8 100644
--- a/core/SkImageGenerator.h
+++ b/core/SkImageGenerator.h
@@ -8,15 +8,43 @@
 #ifndef SkImageGenerator_DEFINED
 #define SkImageGenerator_DEFINED
 
+#include "SkDiscardableMemory.h"
 #include "SkImageInfo.h"
 
+class SkBitmap;
 class SkData;
+class SkImageGenerator;
+
+/**
+ *  Takes ownership of SkImageGenerator.  If this method fails for
+ *  whatever reason, it will return false and immediatetely delete
+ *  the generator.  If it succeeds, it will modify destination
+ *  bitmap.
+ *
+ *  If this fails or when the SkDiscardablePixelRef that is
+ *  installed into destination is destroyed, it will call
+ *  SkDELETE() on the generator.  Therefore, generator should be
+ *  allocated with SkNEW() or SkNEW_ARGS().
+ *
+ *  @param destination Upon success, this bitmap will be
+ *  configured and have a pixelref installed.
+ *
+ *  @param factory If not NULL, this object will be used as a
+ *  source of discardable memory when decoding.  If NULL, then
+ *  SkDiscardableMemory::Create() will be called.
+ *
+ *  @return true iff successful.
+ */
+SK_API bool SkInstallDiscardablePixelRef(SkImageGenerator* generator,
+                                         SkBitmap* destination,
+                                         SkDiscardableMemory::Factory* factory = NULL);
+
 
 /**
  *  An interface that allows a purgeable PixelRef (such as a
  *  SkDiscardablePixelRef) to decode and re-decode an image as needed.
  */
-class SkImageGenerator {
+class SK_API SkImageGenerator {
 public:
     /**
      *  The PixelRef which takes ownership of this SkImageGenerator