622c8d5de1
Viewer demonstrates use: Just create an instance of CommandSet, register with the window, and add commands. Hopefully, we can keep all commands in one place, and get some nice side-benefits. With this framework, if you want to add a new command, you are only required to add code in ONE place. And you get added to the help screen, for free. CommandSet automatically binds 'h' to cycle through the help modes. (Functional grouping is most useful for general use, but the other mode is nice to know what a key does, or to find an unused key for a new feature). Grouped by function: https://screenshot.googleplex.com/G5h3f52wFKu.png Alphabetical by key: https://screenshot.googleplex.com/nZiopabLKJ6.png BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1955293002 Review-Url: https://codereview.chromium.org/1955293002
62 lines
1.4 KiB
C++
62 lines
1.4 KiB
C++
/*
|
|
* Copyright 2016 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#ifndef Viewer_DEFINED
|
|
#define Viewer_DEFINED
|
|
|
|
#include "sk_app/Application.h"
|
|
#include "sk_app/CommandSet.h"
|
|
#include "sk_app/Window.h"
|
|
#include "gm.h"
|
|
#include "SkAnimTimer.h"
|
|
#include "Slide.h"
|
|
|
|
class SkCanvas;
|
|
|
|
class Viewer : public sk_app::Application {
|
|
public:
|
|
Viewer(int argc, char** argv, void* platformData);
|
|
~Viewer() override;
|
|
|
|
void onPaint(SkCanvas* canvas);
|
|
void onIdle(double ms) override;
|
|
|
|
private:
|
|
void initSlides();
|
|
void updateTitle();
|
|
void setupCurrentSlide(int previousSlide);
|
|
|
|
void drawStats(SkCanvas* canvas);
|
|
|
|
void changeZoomLevel(float delta);
|
|
void updateMatrix();
|
|
|
|
sk_app::Window* fWindow;
|
|
|
|
static const int kMeasurementCount = 64; // should be power of 2 for fast mod
|
|
double fMeasurements[kMeasurementCount];
|
|
int fCurrentMeasurement;
|
|
|
|
SkAnimTimer fAnimTimer;
|
|
SkTArray<sk_sp<Slide>> fSlides;
|
|
int fCurrentSlide;
|
|
|
|
bool fDisplayStats;
|
|
|
|
// transform data
|
|
SkMatrix fLocalMatrix;
|
|
SkScalar fZoomCenterX;
|
|
SkScalar fZoomCenterY;
|
|
SkScalar fZoomLevel;
|
|
SkScalar fZoomScale;
|
|
|
|
sk_app::CommandSet fCommands;
|
|
};
|
|
|
|
|
|
#endif
|