add 'n' to tri-toggle bitmap-filter (LERP) on/off/neutral



git-svn-id: http://skia.googlecode.com/svn/trunk@1344 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 9b35be8..d1cbeef 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -122,7 +122,8 @@
 
 class FlagsDrawFilter : public SkDrawFilter {
 public:
-    FlagsDrawFilter(SkTriState lcd, SkTriState aa) : fLCDState(lcd), fAAState(aa) {}
+    FlagsDrawFilter(SkTriState lcd, SkTriState aa, SkTriState filter) :
+        fLCDState(lcd), fAAState(aa), fFilterState(filter) {}
 
     virtual void filter(SkPaint* paint, Type t) {
         if (kText_Type == t && kUnknown_SkTriState != fLCDState) {
@@ -131,11 +132,15 @@
         if (kUnknown_SkTriState != fAAState) {
             paint->setAntiAlias(kTrue_SkTriState == fAAState);
         }
+        if (kUnknown_SkTriState != fFilterState) {
+            paint->setFilterBitmap(kTrue_SkTriState == fFilterState);
+        }
     }
 
 private:
     SkTriState  fLCDState;
     SkTriState  fAAState;
+    SkTriState  fFilterState;
 };
 
 //////////////////////////////////////////////////////////////////////////////
@@ -298,6 +303,7 @@
 
     SkTriState fLCDState;
     SkTriState fAAState;
+    SkTriState fFilterState;
     unsigned   fFlipAxis;
 
     int fScrollTestX, fScrollTestY;
@@ -850,10 +856,7 @@
         canvas->translate(-cx, -cy);
     }
 
-    if (kUnknown_SkTriState != fLCDState ||
-        kUnknown_SkTriState != fAAState) {
-        canvas->setDrawFilter(new FlagsDrawFilter(fLCDState, fAAState))->unref();
-    }
+    canvas->setDrawFilter(new FlagsDrawFilter(fLCDState, fAAState, fFilterState))->unref();
 
     if (fMeasureFPS) {
         fMeasureFPS_Time = 0;   // 0 means the child is not aware of repeat-draw
@@ -1034,6 +1037,11 @@
             this->updateTitle();
             this->inval(NULL);
             break;
+        case 'n':
+            fFilterState = cycle_tristate(fFilterState);
+            this->updateTitle();
+            this->inval(NULL);
+            break;
         case 'o':
             this->zoomOut();
             break;
@@ -1274,6 +1282,7 @@
 
     title.prepend(trystate_str(fLCDState, "LCD ", "lcd "));
     title.prepend(trystate_str(fAAState, "AA ", "aa "));
+    title.prepend(trystate_str(fFilterState, "LERP ", "lerp "));
     title.prepend(fFlipAxis & kFlipAxis_X ? "X " : NULL);
     title.prepend(fFlipAxis & kFlipAxis_Y ? "Y " : NULL);