Updates to the Android SampleApp

http://codereview.appspot.com/4602049/


git-svn-id: http://skia.googlecode.com/svn/trunk@1567 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index f05fe6e..aba105b 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -251,6 +251,11 @@
     virtual ~SampleWindow();
 
     virtual void draw(SkCanvas* canvas);
+#ifdef ANDROID
+    virtual bool drawsToHardware() { return fCanvasType == kGPU_CanvasType; }
+    virtual bool setGrContext(GrContext*);
+    virtual GrContext* getGrContext();
+#endif
 
 protected:
     virtual void onDraw(SkCanvas* canvas);
@@ -287,7 +292,7 @@
     SkPath fClipPath;
 
     SkTouchGesture fGesture;
-    int      fZoomLevel;
+    SkScalar fZoomLevel;
     SkScalar fZoomScale;
 
     enum CanvasType {
@@ -325,7 +330,10 @@
     int fScrollTestX, fScrollTestY;
 
     bool make3DReady();
-    void changeZoomLevel(int delta);
+#ifdef ANDROID
+    virtual
+#endif
+    void changeZoomLevel(float delta);
 
     void loadView(SkView*);
     void updateTitle();
@@ -350,6 +358,23 @@
     typedef SkOSWindow INHERITED;
 };
 
+#ifdef ANDROID
+bool SampleWindow::setGrContext(GrContext* context)
+{
+    if (fGrContext) {
+        fGrContext->unref();
+    }
+    fGrContext = context;
+    fGrContext->ref();
+    return true;
+}
+
+GrContext* SampleWindow::getGrContext()
+{
+    return fGrContext;
+}
+#endif
+
 bool SampleWindow::zoomIn()
 {
     // Arbitrarily decided
@@ -928,18 +953,20 @@
     return gConfigCycle[c];
 }
 
-void SampleWindow::changeZoomLevel(int delta) {
-    fZoomLevel += delta;
+void SampleWindow::changeZoomLevel(float delta) {
+    fZoomLevel += SkFloatToScalar(delta);
     if (fZoomLevel > 0) {
-        fZoomLevel = SkMin32(fZoomLevel, MAX_ZOOM_LEVEL);
-        fZoomScale = SkIntToScalar(fZoomLevel + 1);
+        fZoomLevel = SkMinScalar(fZoomLevel, MAX_ZOOM_LEVEL);
+        fZoomScale = fZoomLevel + SK_Scalar1;
     } else if (fZoomLevel < 0) {
-        fZoomLevel = SkMax32(fZoomLevel, MIN_ZOOM_LEVEL);
-        fZoomScale = SK_Scalar1 / (1 - fZoomLevel);
+        fZoomLevel = SkMaxScalar(fZoomLevel, MIN_ZOOM_LEVEL);
+        fZoomScale = SK_Scalar1 / (SK_Scalar1 - fZoomLevel);
     } else {
         fZoomScale = SK_Scalar1;
     }
 
+    this->updateTitle();
+
     this->inval(NULL);
 }
 
@@ -1153,20 +1180,20 @@
             return true;
         case kUp_SkKey:
             if (USE_ARROWS_FOR_ZOOM) {
-                this->changeZoomLevel(1);
+                this->changeZoomLevel(1.f);
             } else {
                 fNClip = !fNClip;
                 this->inval(NULL);
+                this->updateTitle();
             }
-            this->updateTitle();
             return true;
         case kDown_SkKey:
             if (USE_ARROWS_FOR_ZOOM) {
-                this->changeZoomLevel(-1);
+                this->changeZoomLevel(-1.f);
             } else {
                 this->setConfig(cycle_configs(this->getBitmap().config()));
+                this->updateTitle();
             }
-            this->updateTitle();
             return true;
         case kOK_SkKey:
             if (false) {
@@ -1333,7 +1360,7 @@
     title.prepend(fFlipAxis & kFlipAxis_Y ? "Y " : NULL);
 
     if (fZoomLevel) {
-        title.prependf("{%d} ", fZoomLevel);
+        title.prependf("{%.2f} ", SkScalarToFloat(fZoomLevel));
     }
     
     if (fMeasureFPS) {