aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode/SamplePictFile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'samplecode/SamplePictFile.cpp')
-rw-r--r--samplecode/SamplePictFile.cpp217
1 files changed, 0 insertions, 217 deletions
diff --git a/samplecode/SamplePictFile.cpp b/samplecode/SamplePictFile.cpp
deleted file mode 100644
index 9c82b4b420..0000000000
--- a/samplecode/SamplePictFile.cpp
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright 2011 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "DecodeFile.h"
-#include "SampleCode.h"
-#include "SkDumpCanvas.h"
-#include "SkView.h"
-#include "SkCanvas.h"
-#include "SkGradientShader.h"
-#include "SkGraphics.h"
-#include "SkOSFile.h"
-#include "SkOSPath.h"
-#include "SkPath.h"
-#include "SkPicture.h"
-#include "SkPictureRecorder.h"
-#include "SkRandom.h"
-#include "SkRegion.h"
-#include "SkShader.h"
-#include "SkUtils.h"
-#include "SkColorPriv.h"
-#include "SkColorFilter.h"
-#include "SkTime.h"
-#include "SkTypeface.h"
-#include "SkStream.h"
-#include "SkSurface.h"
-
-#include "SkGlyphCache.h"
-
-class PictFileView : public SampleView {
-public:
- PictFileView(const char name[] = nullptr)
- : fFilename(name)
- , fBBox(kNo_BBoxType)
- , fTileSize(SkSize::Make(0, 0)) {
- for (int i = 0; i < kBBoxTypeCount; ++i) {
- fPictures[i] = nullptr;
- }
- fCount = 0;
- }
-
- ~PictFileView() override {
- this->freePictures();
- }
-
- void freePictures() {
- for (int i = 0; i < kBBoxTypeCount; ++i) {
- SkSafeUnref(fPictures[i]);
- fPictures[i] = nullptr;
- }
- }
-
- void onTileSizeChanged(const SkSize &tileSize) override {
- if (tileSize != fTileSize) {
- fTileSize = tileSize;
- }
- }
-
-protected:
- // overrides from SkEventSink
- bool onQuery(SkEvent* evt) override {
- if (SampleCode::TitleQ(*evt)) {
- SkString name("P:");
- const char* basename = strrchr(fFilename.c_str(), SkOSPath::SEPARATOR);
- name.append(basename ? basename+1: fFilename.c_str());
- switch (fBBox) {
- case kNo_BBoxType:
- // No name appended
- break;
- case kRTree_BBoxType:
- name.append(" <bbox: R>");
- break;
- default:
- SkASSERT(false);
- break;
- }
- SampleCode::TitleR(evt, name.c_str());
- return true;
- }
- SkUnichar uni;
- if (SampleCode::CharQ(*evt, &uni)) {
- switch (uni) {
- case 'n': fCount += 1; this->inval(nullptr); return true;
- case 'p': fCount -= 1; this->inval(nullptr); return true;
- case 's': fCount = 0; this->inval(nullptr); return true;
- case 'F':
- fFilterQuality = (kNone_SkFilterQuality == fFilterQuality) ?
- kHigh_SkFilterQuality : kNone_SkFilterQuality;
- this->freePictures();
- this->inval(nullptr);
- return true;
- default: break;
- }
- }
- return this->INHERITED::onQuery(evt);
- }
-
- bool onEvent(const SkEvent& evt) override {
- if (evt.isType("PictFileView::toggleBBox")) {
- fBBox = (BBoxType)((fBBox + 1) % kBBoxTypeCount);
- return true;
- }
- return this->INHERITED::onEvent(evt);
- }
-
- void onDrawContent(SkCanvas* canvas) override {
- SkASSERT(static_cast<int>(fBBox) < kBBoxTypeCount);
- SkPicture** picture = fPictures + fBBox;
-
-#ifdef SK_GLYPHCACHE_TRACK_HASH_STATS
- SkGraphics::PurgeFontCache();
-#endif
-
- if (!*picture) {
- *picture = LoadPicture(fFilename.c_str(), fBBox).release();
- }
-
- if (*picture) {
- canvas->drawPicture(*picture);
- }
-
-#ifdef SK_GLYPHCACHE_TRACK_HASH_STATS
- SkGlyphCache::Dump();
- SkDebugf("\n");
-#endif
- }
-
-private:
- enum BBoxType {
- kNo_BBoxType,
- kRTree_BBoxType,
-
- kLast_BBoxType = kRTree_BBoxType,
- };
- static const int kBBoxTypeCount = kLast_BBoxType + 1;
-
- SkString fFilename;
- SkPicture* fPictures[kBBoxTypeCount];
- BBoxType fBBox;
- SkSize fTileSize;
- int fCount;
- SkFilterQuality fFilterQuality = kNone_SkFilterQuality;
-
- sk_sp<SkPicture> LoadPicture(const char path[], BBoxType bbox) {
- sk_sp<SkPicture> pic;
-
- if (sk_sp<SkImage> img = decode_file(path)) {
- SkPictureRecorder recorder;
- SkCanvas* can = recorder.beginRecording(SkIntToScalar(img->width()),
- SkIntToScalar(img->height()),
- nullptr, 0);
- SkPaint paint;
- paint.setFilterQuality(fFilterQuality);
- can->drawImage(img, 0, 0, &paint);
- pic = recorder.finishRecordingAsPicture();
- } else {
- SkFILEStream stream(path);
- if (stream.isValid()) {
- pic = SkPicture::MakeFromStream(&stream);
- } else {
- SkDebugf("coun't load picture at \"path\"\n", path);
- }
-
- if (false) { // re-record
- SkPictureRecorder recorder;
- pic->playback(recorder.beginRecording(pic->cullRect().width(),
- pic->cullRect().height(),
- nullptr, 0));
- sk_sp<SkPicture> p2(recorder.finishRecordingAsPicture());
-
- SkString path2(path);
- path2.append(".new.skp");
- SkFILEWStream writer(path2.c_str());
- p2->serialize(&writer);
- }
- }
-
- if (nullptr == pic) {
- return nullptr;
- }
-
- std::unique_ptr<SkBBHFactory> factory;
- switch (bbox) {
- case kNo_BBoxType:
- // no bbox playback necessary
- return pic;
- case kRTree_BBoxType:
- factory.reset(new SkRTreeFactory);
- break;
- default:
- SkASSERT(false);
- }
-
- SkPictureRecorder recorder;
- pic->playback(recorder.beginRecording(pic->cullRect().width(),
- pic->cullRect().height(),
- factory.get(), 0));
- return recorder.finishRecordingAsPicture();
- }
-
- typedef SampleView INHERITED;
-};
-
-SampleView* CreateSamplePictFileView(const char filename[]);
-SampleView* CreateSamplePictFileView(const char filename[]) {
- return new PictFileView(filename);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-#if 0
-static SkView* MyFactory() { return new PictFileView; }
-static SkViewRegister reg(MyFactory);
-#endif