Add toggle for 'real' vs. 'fake' perspective in Viewer

Real perspective draws content with perspective applied. Fake
perspective rasterizes in ortho, then stretches the image by the
perspective matrix.

Change-Id: I738cd379f9a58b965469ef8a57fb2dfd597fda10
Reviewed-on: https://skia-review.googlesource.com/125442
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
diff --git a/tools/viewer/Viewer.h b/tools/viewer/Viewer.h
index be35a88..d843946 100644
--- a/tools/viewer/Viewer.h
+++ b/tools/viewer/Viewer.h
@@ -102,6 +102,7 @@
     void changeZoomLevel(float delta);
     void preTouchMatrixChanged();
     SkMatrix computePreTouchMatrix();
+    SkMatrix computePerspectiveMatrix();
     SkMatrix computeMatrix();
     SkPoint mapEvent(float x, float y);
 
@@ -158,7 +159,12 @@
     // identity unless the window initially scales the content to fit the screen.
     SkMatrix               fDefaultMatrix;
 
-    bool                   fPerspective;
+    enum PerspectiveMode {
+        kPerspective_Off,
+        kPerspective_Real,
+        kPerspective_Fake,
+    };
+    PerspectiveMode        fPerspectiveMode;
     SkPoint                fPerspectivePoints[4];
 
     SkTArray<std::function<void(void)>> fDeferredActions;