Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(404)

Side by Side Diff: gm/imagefiltersgraph.cpp

Issue 1854133002: Switch internal testing ImageFilters over to new onFilterImage interface (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: update Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "gm.h" 8 #include "gm.h"
9 9
10 #include "SkArithmeticMode.h" 10 #include "SkArithmeticMode.h"
11 #include "SkDevice.h"
12 #include "SkBlurImageFilter.h" 11 #include "SkBlurImageFilter.h"
13 #include "SkColorFilter.h" 12 #include "SkColorFilter.h"
14 #include "SkColorFilterImageFilter.h" 13 #include "SkColorFilterImageFilter.h"
15 #include "SkColorMatrixFilter.h" 14 #include "SkColorMatrixFilter.h"
16 #include "SkImage.h" 15 #include "SkImage.h"
17 #include "SkImageSource.h" 16 #include "SkImageSource.h"
18 #include "SkMatrixConvolutionImageFilter.h" 17 #include "SkMatrixConvolutionImageFilter.h"
19 #include "SkReadBuffer.h" 18 #include "SkReadBuffer.h"
19 #include "SkSpecialImage.h"
20 #include "SkSpecialSurface.h"
20 #include "SkWriteBuffer.h" 21 #include "SkWriteBuffer.h"
21 #include "SkMergeImageFilter.h" 22 #include "SkMergeImageFilter.h"
22 #include "SkMorphologyImageFilter.h" 23 #include "SkMorphologyImageFilter.h"
23 #include "SkTestImageFilters.h" 24 #include "SkTestImageFilters.h"
24 #include "SkXfermodeImageFilter.h" 25 #include "SkXfermodeImageFilter.h"
25 26
26 // More closely models how Blink's OffsetFilter works as of 10/23/13. SkOffsetIm ageFilter doesn't 27 // More closely models how Blink's OffsetFilter works as of 10/23/13. SkOffsetIm ageFilter doesn't
Stephen White 2016/04/04 17:02:42 Blink's OffsetFilter doesn't exist anymore. We sho
27 // perform a draw and this one does. 28 // perform a draw and this one does.
28 class SimpleOffsetFilter : public SkImageFilter { 29 class SimpleOffsetFilter : public SkImageFilter {
29 public: 30 public:
30 class Registrar { 31 class Registrar {
31 public: 32 public:
32 Registrar() { 33 Registrar() {
33 SkFlattenable::Register("SimpleOffsetFilter", 34 SkFlattenable::Register("SimpleOffsetFilter",
34 SimpleOffsetFilter::CreateProc, 35 SimpleOffsetFilter::CreateProc,
35 SimpleOffsetFilter::GetFlattenableType()); 36 SimpleOffsetFilter::GetFlattenableType());
36 } 37 }
37 }; 38 };
38 static sk_sp<SkImageFilter> Make(SkScalar dx, SkScalar dy, sk_sp<SkImageFilt er> input) { 39 static sk_sp<SkImageFilter> Make(SkScalar dx, SkScalar dy, sk_sp<SkImageFilt er> input) {
39 return sk_sp<SkImageFilter>(new SimpleOffsetFilter(dx, dy, std::move(inp ut))); 40 return sk_sp<SkImageFilter>(new SimpleOffsetFilter(dx, dy, std::move(inp ut)));
40 } 41 }
41 42
42 SK_TO_STRING_OVERRIDE() 43 SK_TO_STRING_OVERRIDE()
43 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SimpleOffsetFilter); 44 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SimpleOffsetFilter);
44 45
45 protected: 46 protected:
46 bool onFilterImageDeprecated(Proxy* proxy, const SkBitmap& src, const Contex t& ctx, 47 sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context& c tx,
47 SkBitmap* dst, SkIPoint* offset) const override { 48 SkIPoint* offset) const override {
48 SkBitmap source = src; 49 SkIPoint inputOffset = SkIPoint::Make(0, 0);
49 SkIPoint srcOffset = SkIPoint::Make(0, 0); 50 sk_sp<SkSpecialImage> input(this->filterInput(0, source, ctx, &inputOffs et));
50 if (!this->filterInputDeprecated(0, proxy, src, ctx, &source, &srcOffset )) { 51 if (!input) {
51 return false; 52 return nullptr;
52 } 53 }
53 54
54 SkIRect bounds; 55 SkIRect bounds;
55 if (!this->applyCropRectDeprecated(ctx, proxy, source, &srcOffset, &boun ds, &source)) { 56 input = this->applyCropRect(ctx, input.get(), &inputOffset, &bounds);
56 return false; 57 if (!input) {
58 return nullptr;
57 } 59 }
58 60
59 SkAutoTUnref<SkBaseDevice> device(proxy->createDevice(bounds.width(), bo unds.height())); 61 SkImageInfo info = SkImageInfo::MakeN32Premul(bounds.width(), bounds.hei ght());
60 SkCanvas canvas(device); 62
63 sk_sp<SkSpecialSurface> surf(source->makeSurface(info));
64 if (!surf) {
65 return nullptr;
66 }
67
68 SkCanvas* canvas = surf->getCanvas();
69 SkASSERT(canvas);
70
61 SkPaint paint; 71 SkPaint paint;
62 paint.setXfermodeMode(SkXfermode::kSrc_Mode); 72 paint.setXfermodeMode(SkXfermode::kSrc_Mode);
63 canvas.drawBitmap(source, fDX - bounds.left(), fDY - bounds.top(), &pain t); 73
64 *dst = device->accessBitmap(false); 74 input->draw(canvas, fDX - bounds.left(), fDY - bounds.top(), &paint);
75
65 offset->fX += bounds.left(); 76 offset->fX += bounds.left();
66 offset->fY += bounds.top(); 77 offset->fY += bounds.top();
67 return true; 78 return surf->makeImageSnapshot();
68 } 79 }
69 80
70 void flatten(SkWriteBuffer& buffer) const override { 81 void flatten(SkWriteBuffer& buffer) const override {
71 this->INHERITED::flatten(buffer); 82 this->INHERITED::flatten(buffer);
72 buffer.writeScalar(fDX); 83 buffer.writeScalar(fDX);
73 buffer.writeScalar(fDY); 84 buffer.writeScalar(fDY);
74 } 85 }
75 86
76 private: 87 private:
77 SimpleOffsetFilter(SkScalar dx, SkScalar dy, sk_sp<SkImageFilter> input) 88 SimpleOffsetFilter(SkScalar dx, SkScalar dy, sk_sp<SkImageFilter> input)
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 } 254 }
244 255
245 sk_sp<SkImage> fImage; 256 sk_sp<SkImage> fImage;
246 257
247 typedef GM INHERITED; 258 typedef GM INHERITED;
248 }; 259 };
249 260
250 /////////////////////////////////////////////////////////////////////////////// 261 ///////////////////////////////////////////////////////////////////////////////
251 262
252 DEF_GM(return new ImageFiltersGraphGM;) 263 DEF_GM(return new ImageFiltersGraphGM;)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698