check-point for reviving animator



git-svn-id: http://skia.googlecode.com/svn/trunk@380 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/config/SkUserConfig.h b/include/config/SkUserConfig.h
index ccdf40f..8f63ce4 100644
--- a/include/config/SkUserConfig.h
+++ b/include/config/SkUserConfig.h
@@ -122,7 +122,7 @@
     so this flag is optional.
  */
 #ifdef SK_DEBUG
-#define SK_SUPPORT_UNITTEST
+//#define SK_SUPPORT_UNITTEST
 #endif
 
 #endif
diff --git a/samplecode/SampleAnimator.cpp b/samplecode/SampleAnimator.cpp
new file mode 100644
index 0000000..76b1975
--- /dev/null
+++ b/samplecode/SampleAnimator.cpp
@@ -0,0 +1,88 @@
+#include "SampleCode.h"
+#include "SkView.h"
+#include "SkCanvas.h"
+
+#include "SkAnimator.h"
+#include "SkStream.h"
+
+class SkAnimatorView : public SkView {
+public:
+    SkAnimatorView();
+    virtual ~SkAnimatorView();
+
+    void setURIBase(const char dir[]);
+
+    SkAnimator* getAnimator() const { return fAnimator; }
+    
+    bool    decodeFile(const char path[]);
+    bool    decodeMemory(const void* buffer, size_t size);
+    bool    decodeStream(SkStream* stream);
+    
+protected:
+    // overrides
+    virtual void onDraw(SkCanvas*);
+    
+private:
+    SkString fBaseURI;
+    SkAnimator* fAnimator;
+    
+    typedef SkView INHERITED;
+};
+
+SkAnimatorView::SkAnimatorView() : fAnimator(NULL) {
+}
+
+SkAnimatorView::~SkAnimatorView() {
+    delete fAnimator;
+}
+
+void SkAnimatorView::setURIBase(const char dir[]) {
+    fBaseURI.set(dir);
+}
+
+bool SkAnimatorView::decodeFile(const char path[]) {
+    SkFILEStream* is = new SkFILEStream(path);
+    SkAutoUnref aur(is);
+    return is->isValid() && this->decodeStream(is);
+}
+
+bool SkAnimatorView::decodeMemory(const void* buffer, size_t size) {
+    SkMemoryStream* is = new SkMemoryStream(buffer, size);
+    SkAutoUnref aur(is);
+    return this->decodeStream(is);
+}
+
+bool SkAnimatorView::decodeStream(SkStream* stream) {
+    delete fAnimator;
+    fAnimator = new SkAnimator;
+    fAnimator->setURIBase(fBaseURI.c_str());
+    if (!fAnimator->decodeStream(stream)) {
+        delete fAnimator;
+        fAnimator = NULL;
+        return false;
+    }
+    return true;
+}
+
+#include "SkTime.h"
+
+void SkAnimatorView::onDraw(SkCanvas* canvas) {
+    if (fAnimator) {
+        canvas->drawColor(SK_ColorWHITE);
+        fAnimator->draw(canvas, SkTime::GetMSecs());
+        this->inval(NULL);
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+static SkView* MyFactory() {
+    SkAnimatorView* av = new SkAnimatorView;
+//    av->decodeFile("/skimages/test.xml");
+    av->setURIBase("/skia/trunk/animations/");
+    av->decodeFile("/skia/trunk/animations/movie#1.xml");
+    return av;
+}
+
+static SkViewRegister reg(MyFactory);
+
diff --git a/src/animator/SkDrawPaint.cpp b/src/animator/SkDrawPaint.cpp
index d4837b5..0c23771 100644
--- a/src/animator/SkDrawPaint.cpp
+++ b/src/animator/SkDrawPaint.cpp
@@ -273,5 +273,5 @@
     if (underline != -1)
         paint->setUnderlineText(SkToBool(underline));
     if (xfermode != (SkXfermode::Mode) -1)
-        paint->setXfermode((SkXfermode::Mode) xfermode);
+        paint->setXfermodeMode((SkXfermode::Mode) xfermode);
 }
diff --git a/src/animator/SkSnapshot.cpp b/src/animator/SkSnapshot.cpp
index 0043ca5..48d2438 100644
--- a/src/animator/SkSnapshot.cpp
+++ b/src/animator/SkSnapshot.cpp
@@ -20,6 +20,7 @@
 #include "SkSnapshot.h"
 #include "SkAnimateMaker.h"
 #include "SkCanvas.h"
+#include "SkImageEncoder.h"
 
 #if SK_USE_CONDENSED_INFO == 0
 
diff --git a/src/views/SkTextBox.cpp b/src/views/SkTextBox.cpp
index 657f648..8bc82f3 100644
--- a/src/views/SkTextBox.cpp
+++ b/src/views/SkTextBox.cpp
@@ -16,7 +16,7 @@
 */
 
 #include "SkTextBox.h"
-#include "SkGlyphCache.h"
+#include "../src/core/SkGlyphCache.h"
 #include "SkUtils.h"
 #include "SkAutoKern.h"