Sample/Camera: make it work without /skimages
Change-Id: I7e876ffb7e59ccedb3da80ef3cd5ca385ab89873
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225547
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
diff --git a/samplecode/SampleCamera.cpp b/samplecode/SampleCamera.cpp
index 3e47070..3ad7455 100644
--- a/samplecode/SampleCamera.cpp
+++ b/samplecode/SampleCamera.cpp
@@ -6,66 +6,59 @@
*/
#include "include/core/SkCanvas.h"
-#include "include/core/SkPath.h"
-#include "include/core/SkRegion.h"
#include "include/core/SkShader.h"
#include "include/core/SkString.h"
-#include "include/effects/SkGradientShader.h"
#include "include/utils/SkCamera.h"
-#include "include/utils/SkRandom.h"
#include "samplecode/DecodeFile.h"
#include "samplecode/Sample.h"
#include "src/effects/SkEmbossMaskFilter.h"
-#include "src/utils/SkUTF.h"
+#include "tools/Resources.h"
#include "tools/timer/AnimTimer.h"
+namespace {
class CameraView : public Sample {
SkTArray<sk_sp<SkShader>> fShaders;
- int fShaderIndex;
- bool fFrontFace;
-public:
- CameraView() {
- fRX = fRY = fRZ = 0;
- fShaderIndex = 0;
- fFrontFace = false;
+ int fShaderIndex = 0;
+ bool fFrontFace = false;
+ SkScalar fRX = 0;
+ SkScalar fRY = 0;
- for (int i = 0;; i++) {
- SkString str;
- str.printf("/skimages/elephant%d.jpeg", i);
+ SkString name() override { return SkString("Camera"); }
+
+ void onOnceBeforeDraw() override {
+ for (const char* resource : {
+ "images/mandrill_512_q075.jpg",
+ "images/dog.jpg",
+ "images/gamut.png",
+ }) {
SkBitmap bm;
- if (decode_file(str.c_str(), &bm)) {
+ if (GetResourceAsBitmap(resource, &bm)) {
SkRect src = { 0, 0, SkIntToScalar(bm.width()), SkIntToScalar(bm.height()) };
SkRect dst = { -150, -150, 150, 150 };
SkMatrix matrix;
matrix.setRectToRect(src, dst, SkMatrix::kFill_ScaleToFit);
-
fShaders.push_back(bm.makeShader(&matrix));
- } else {
- break;
}
}
this->setBGColor(0xFFDDDDDD);
}
-protected:
- SkString name() override { return SkString("Camera"); }
-
void onDrawContent(SkCanvas* canvas) override {
- canvas->translate(this->width()/2, this->height()/2);
-
- Sk3DView view;
- view.rotateX(fRX);
- view.rotateY(fRY);
- view.applyToCanvas(canvas);
-
- SkPaint paint;
if (fShaders.count() > 0) {
+ canvas->translate(this->width()/2, this->height()/2);
+
+ Sk3DView view;
+ view.rotateX(fRX);
+ view.rotateY(fRY);
+ view.applyToCanvas(canvas);
+
bool frontFace = view.dotWithNormal(0, 0, SK_Scalar1) < 0;
if (frontFace != fFrontFace) {
fFrontFace = frontFace;
fShaderIndex = (fShaderIndex + 1) % fShaders.count();
}
+ SkPaint paint;
paint.setAntiAlias(true);
paint.setShader(fShaders[fShaderIndex]);
paint.setFilterQuality(kLow_SkFilterQuality);
@@ -82,12 +75,6 @@
}
return true;
}
-
-private:
- SkScalar fRX, fRY, fRZ;
- typedef Sample INHERITED;
};
-
-//////////////////////////////////////////////////////////////////////////////
-
+} // namespace
DEF_SAMPLE( return new CameraView(); )