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

Side by Side Diff: dm/DMSrcSink.cpp

Issue 2201323003: add pipecanvas (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: no need for willSetMatrix Created 4 years, 3 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 2015 Google Inc. 2 * Copyright 2015 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 "DMSrcSink.h" 8 #include "DMSrcSink.h"
9 #include "Resources.h" 9 #include "Resources.h"
10 #include "SkAndroidCodec.h" 10 #include "SkAndroidCodec.h"
(...skipping 12 matching lines...) Expand all
23 #include "SkImageGeneratorWIC.h" 23 #include "SkImageGeneratorWIC.h"
24 #include "SkLiteDL.h" 24 #include "SkLiteDL.h"
25 #include "SkLiteRecorder.h" 25 #include "SkLiteRecorder.h"
26 #include "SkMallocPixelRef.h" 26 #include "SkMallocPixelRef.h"
27 #include "SkMultiPictureDraw.h" 27 #include "SkMultiPictureDraw.h"
28 #include "SkNullCanvas.h" 28 #include "SkNullCanvas.h"
29 #include "SkOSFile.h" 29 #include "SkOSFile.h"
30 #include "SkOpts.h" 30 #include "SkOpts.h"
31 #include "SkPictureData.h" 31 #include "SkPictureData.h"
32 #include "SkPictureRecorder.h" 32 #include "SkPictureRecorder.h"
33 #include "SkPipe.h"
33 #include "SkRandom.h" 34 #include "SkRandom.h"
34 #include "SkRecordDraw.h" 35 #include "SkRecordDraw.h"
35 #include "SkRecorder.h" 36 #include "SkRecorder.h"
36 #include "SkSVGCanvas.h" 37 #include "SkSVGCanvas.h"
37 #include "SkStream.h" 38 #include "SkStream.h"
38 #include "SkTLogic.h" 39 #include "SkTLogic.h"
39 #include "SkSwizzler.h" 40 #include "SkSwizzler.h"
40 #include <functional> 41 #include <functional>
41 42
42 #if defined(SK_BUILD_FOR_WIN) 43 #if defined(SK_BUILD_FOR_WIN)
(...skipping 1192 matching lines...) Expand 10 before | Expand all | Expand 10 after
1235 1236
1236 XPSSink::XPSSink() {} 1237 XPSSink::XPSSink() {}
1237 1238
1238 Error XPSSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const { 1239 Error XPSSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const {
1239 sk_sp<SkDocument> doc(SkDocument::MakeXPS(dst)); 1240 sk_sp<SkDocument> doc(SkDocument::MakeXPS(dst));
1240 if (!doc) { 1241 if (!doc) {
1241 return "SkDocument::MakeXPS() returned nullptr"; 1242 return "SkDocument::MakeXPS() returned nullptr";
1242 } 1243 }
1243 return draw_skdocument(src, doc.get(), dst); 1244 return draw_skdocument(src, doc.get(), dst);
1244 } 1245 }
1246
1247 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~*/
1248
1249 PipeSink::PipeSink() {}
1250
1251 Error PipeSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const {
1252 return src.draw(SkPipeSerializer().beginWrite(SkRect::Make(src.size()), dst) );
1253 }
1254
1245 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~*/ 1255 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~*/
1246 1256
1247 SKPSink::SKPSink() {} 1257 SKPSink::SKPSink() {}
1248 1258
1249 Error SKPSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const { 1259 Error SKPSink::draw(const Src& src, SkBitmap*, SkWStream* dst, SkString*) const {
1250 SkSize size; 1260 SkSize size;
1251 size = src.size(); 1261 size = src.size();
1252 SkPictureRecorder recorder; 1262 SkPictureRecorder recorder;
1253 Error err = src.draw(recorder.beginRecording(size.width(), size.height())); 1263 Error err = src.draw(recorder.beginRecording(size.width(), size.height()));
1254 if (!err.isEmpty()) { 1264 if (!err.isEmpty()) {
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
1505 Error ViaDefer::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream, SkStri ng* log) const { 1515 Error ViaDefer::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream, SkStri ng* log) const {
1506 auto size = src.size(); 1516 auto size = src.size();
1507 return draw_to_canvas(fSink, bitmap, stream, log, size, [&](SkCanvas* canvas ) -> Error { 1517 return draw_to_canvas(fSink, bitmap, stream, log, size, [&](SkCanvas* canvas ) -> Error {
1508 SkDeferredCanvas deferred(canvas); 1518 SkDeferredCanvas deferred(canvas);
1509 return src.draw(&deferred); 1519 return src.draw(&deferred);
1510 }); 1520 });
1511 } 1521 }
1512 1522
1513 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~*/ 1523 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~*/
1514 1524
1525 Error ViaPipe::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream, SkStrin g* log) const {
1526 auto size = src.size();
1527 return draw_to_canvas(fSink, bitmap, stream, log, size, [&](SkCanvas* canvas ) -> Error {
1528 SkDynamicMemoryWStream tmpStream;
1529 Error err = src.draw(SkPipeSerializer().beginWrite(SkRect::Make(size), & tmpStream));
1530 if (!err.isEmpty()) {
1531 return err;
1532 }
1533 sk_sp<SkData> data = tmpStream.makeData();
1534 SkPipeDeserializer().playback(data->data(), data->size(), canvas);
1535 return check_against_reference(bitmap, src, fSink);
1536 });
1537 }
1538
1539 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~*/
1540
1515 // Draw the Src into two pictures, then draw the second picture into the wrapped Sink. 1541 // Draw the Src into two pictures, then draw the second picture into the wrapped Sink.
1516 // This tests that any shortcuts we may take while recording that second picture are legal. 1542 // This tests that any shortcuts we may take while recording that second picture are legal.
1517 Error ViaSecondPicture::draw( 1543 Error ViaSecondPicture::draw(
1518 const Src& src, SkBitmap* bitmap, SkWStream* stream, SkString* log) cons t { 1544 const Src& src, SkBitmap* bitmap, SkWStream* stream, SkString* log) cons t {
1519 auto size = src.size(); 1545 auto size = src.size();
1520 return draw_to_canvas(fSink, bitmap, stream, log, size, [&](SkCanvas* canvas ) -> Error { 1546 return draw_to_canvas(fSink, bitmap, stream, log, size, [&](SkCanvas* canvas ) -> Error {
1521 SkPictureRecorder recorder; 1547 SkPictureRecorder recorder;
1522 sk_sp<SkPicture> pic; 1548 sk_sp<SkPicture> pic;
1523 for (int i = 0; i < 2; i++) { 1549 for (int i = 0; i < 2; i++) {
1524 Error err = src.draw(recorder.beginRecording(SkIntToScalar(size.widt h()), 1550 Error err = src.draw(recorder.beginRecording(SkIntToScalar(size.widt h()),
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1636 Error err = src.draw(&rec); 1662 Error err = src.draw(&rec);
1637 if (!err.isEmpty()) { 1663 if (!err.isEmpty()) {
1638 return err; 1664 return err;
1639 } 1665 }
1640 dl->draw(canvas); 1666 dl->draw(canvas);
1641 return check_against_reference(bitmap, src, fSink); 1667 return check_against_reference(bitmap, src, fSink);
1642 }); 1668 });
1643 } 1669 }
1644 1670
1645 } // namespace DM 1671 } // namespace DM
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698