Sample/Filter2View: make it work without /skimages
Change-Id: I8958e026ca9e2c5a6c99a7a1cd1ec97088c25fe9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/225548
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
diff --git a/samplecode/DecodeFile.h b/samplecode/DecodeFile.h
index a8907e7..aedc707 100644
--- a/samplecode/DecodeFile.h
+++ b/samplecode/DecodeFile.h
@@ -13,11 +13,10 @@
#include "include/core/SkData.h"
#include "include/core/SkImage.h"
-static inline bool decode_file(const char* filename, SkBitmap* bitmap,
+static inline bool decode_file(sk_sp<SkData> data, SkBitmap* bitmap,
SkColorType colorType = kN32_SkColorType,
bool requireUnpremul = false) {
- sk_sp<SkData> data(SkData::MakeFromFileName(filename));
- std::unique_ptr<SkCodec> codec = SkCodec::MakeFromData(data);
+ std::unique_ptr<SkCodec> codec = SkCodec::MakeFromData(std::move(data));
if (!codec) {
return false;
}
@@ -34,6 +33,12 @@
return SkCodec::kSuccess == codec->getPixels(info, bitmap->getPixels(), bitmap->rowBytes());
}
+static inline bool decode_file(const char* filename, SkBitmap* bitmap,
+ SkColorType colorType = kN32_SkColorType,
+ bool requireUnpremul = false) {
+ return decode_file(SkData::MakeFromFileName(filename), bitmap, colorType, requireUnpremul);
+}
+
static inline sk_sp<SkImage> decode_file(const char filename[]) {
sk_sp<SkData> data(SkData::MakeFromFileName(filename));
return data ? SkImage::MakeFromEncoded(data) : nullptr;
diff --git a/samplecode/SampleFilter2.cpp b/samplecode/SampleFilter2.cpp
index 6d0357f..453bfa7 100644
--- a/samplecode/SampleFilter2.cpp
+++ b/samplecode/SampleFilter2.cpp
@@ -6,47 +6,40 @@
*/
#include "include/core/SkCanvas.h"
-#include "include/core/SkColorFilter.h"
-#include "include/core/SkColorPriv.h"
-#include "include/core/SkGraphics.h"
-#include "include/core/SkPath.h"
-#include "include/core/SkRegion.h"
-#include "include/core/SkShader.h"
+#include "include/core/SkFont.h"
#include "include/core/SkString.h"
-#include "include/core/SkTime.h"
-#include "include/effects/SkGradientShader.h"
#include "include/utils/SkTextUtils.h"
#include "samplecode/DecodeFile.h"
#include "samplecode/Sample.h"
-#include "src/utils/SkUTF.h"
+#include "tools/Resources.h"
+
+#include <vector>
static const char* gNames[] = {
- "/skimages/background_01.png"
+ "images/mandrill_512_q075.jpg",
+ "images/dog.jpg",
};
-class Filter2View : public Sample {
-public:
- std::unique_ptr<SkBitmap[]> fBitmaps;
- int fBitmapCount;
- int fCurrIndex;
+struct Filter2View : public Sample {
+ std::vector<SkBitmap> fBitmaps;
- Filter2View() {
- fBitmapCount = SK_ARRAY_COUNT(gNames)*2;
- fBitmaps.reset(new SkBitmap[fBitmapCount]);
-
- for (int i = 0; i < fBitmapCount/2; i++) {
- decode_file(gNames[i], &fBitmaps[i]);
+ void onOnceBeforeDraw() override {
+ SkASSERT(fBitmaps.empty());
+ fBitmaps.reserve(SK_ARRAY_COUNT(gNames) * 2);
+ for (const char* name : gNames) {
+ SkBitmap bitmap;
+ (void)decode_file(GetResourceAsData(name), &bitmap);
+ fBitmaps.push_back(std::move(bitmap));
}
- for (int i = fBitmapCount/2; i < fBitmapCount; i++) {
- decode_file(gNames[i-fBitmapCount/2], &fBitmaps[i], kRGB_565_SkColorType);
+ for (const char* name : gNames) {
+ SkBitmap bitmap;
+ (void)decode_file(GetResourceAsData(name), &bitmap, kRGB_565_SkColorType);
+ fBitmaps.push_back(std::move(bitmap));
}
- fCurrIndex = 0;
-
this->setBGColor(SK_ColorGRAY);
}
-protected:
- SkString name() override { return SkStringPrintf("Filter/Dither %s", gNames[fCurrIndex]); }
+ SkString name() override { return SkString("Filter/Dither"); }
void onDrawContent(SkCanvas* canvas) override {
canvas->translate(SkIntToScalar(10), SkIntToScalar(50));
@@ -62,8 +55,8 @@
paint.setFilterQuality(k == 1 ? kLow_SkFilterQuality : kNone_SkFilterQuality);
for (int j = 0; j < 2; j++) {
paint.setDither(j == 1);
- for (int i = 0; i < fBitmapCount; i++) {
- SkScalar x = (k * fBitmapCount + j) * W;
+ for (int i = 0; i < (int)fBitmaps.size(); i++) {
+ SkScalar x = (k * (int)fBitmaps.size() + j) * W;
SkScalar y = i * H;
x = SkScalarRoundToScalar(x);
y = SkScalarRoundToScalar(y);
@@ -88,11 +81,5 @@
}
}
}
-
-private:
- typedef Sample INHERITED;
};
-
-//////////////////////////////////////////////////////////////////////////////
-
DEF_SAMPLE( return new Filter2View(); )