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

Side by Side Diff: dm/DMSrcSink.cpp

Issue 2209593004: Add an SVG DM source (Closed) Base URL: https://chromium.googlesource.com/skia.git@master
Patch Set: GN fix Created 4 years, 4 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
« no previous file with comments | « dm/DMSrcSink.h ('k') | gyp/dm.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 16 matching lines...) Expand all
27 #include "SkOSFile.h" 27 #include "SkOSFile.h"
28 #include "SkOpts.h" 28 #include "SkOpts.h"
29 #include "SkPictureData.h" 29 #include "SkPictureData.h"
30 #include "SkPictureRecorder.h" 30 #include "SkPictureRecorder.h"
31 #include "SkRandom.h" 31 #include "SkRandom.h"
32 #include "SkRecordDraw.h" 32 #include "SkRecordDraw.h"
33 #include "SkRecorder.h" 33 #include "SkRecorder.h"
34 #include "SkSVGCanvas.h" 34 #include "SkSVGCanvas.h"
35 #include "SkStream.h" 35 #include "SkStream.h"
36 #include "SkTLogic.h" 36 #include "SkTLogic.h"
37 #include "SkSVGDOM.h"
37 #include "SkSwizzler.h" 38 #include "SkSwizzler.h"
38 #include <functional> 39 #include <functional>
39 40
40 #if defined(SK_BUILD_FOR_WIN) 41 #if defined(SK_BUILD_FOR_WIN)
41 #include "SkAutoCoInitialize.h" 42 #include "SkAutoCoInitialize.h"
42 #endif 43 #endif
43 44
44 #if defined(SK_TEST_QCMS) 45 #if defined(SK_TEST_QCMS)
45 #include "qcms.h" 46 #include "qcms.h"
46 #endif 47 #endif
(...skipping 956 matching lines...) Expand 10 before | Expand all | Expand 10 after
1003 SkRect viewport = kSKPViewport; 1004 SkRect viewport = kSKPViewport;
1004 if (!viewport.intersect(info.fCullRect)) { 1005 if (!viewport.intersect(info.fCullRect)) {
1005 return SkISize::Make(0,0); 1006 return SkISize::Make(0,0);
1006 } 1007 }
1007 return viewport.roundOut().size(); 1008 return viewport.roundOut().size();
1008 } 1009 }
1009 1010
1010 Name SKPSrc::name() const { return SkOSPath::Basename(fPath.c_str()); } 1011 Name SKPSrc::name() const { return SkOSPath::Basename(fPath.c_str()); }
1011 1012
1012 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~*/ 1013 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~*/
1014 #if defined(SK_XML)
1015 // Should we try to use the SVG intrinsic size instead?
1016 static const SkSize kSVGSize = SkSize::Make(1000, 1000);
1017
1018 SVGSrc::SVGSrc(Path path) : fPath(path) {}
1019
1020 Error SVGSrc::draw(SkCanvas* canvas) const {
1021 SkFILEStream stream(fPath.c_str());
1022 if (!stream.isValid()) {
1023 return SkStringPrintf("Unable to open file: %s", fPath.c_str());
1024 }
1025
1026 sk_sp<SkSVGDOM> dom = SkSVGDOM::MakeFromStream(stream, kSVGSize);
1027 if (!dom) {
1028 return SkStringPrintf("Unable to parse file: %s", fPath.c_str());
1029 }
1030
1031 dom->render(canvas);
1032
1033 return "";
1034 }
1035
1036 SkISize SVGSrc::size() const {
1037 return kSVGSize.toRound();
1038 }
1039
1040 Name SVGSrc::name() const { return SkOSPath::Basename(fPath.c_str()); }
1041
1042 #endif // defined(SK_XML)
1043 /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~*/
1013 1044
1014 MSKPSrc::MSKPSrc(Path path) : fPath(path) { 1045 MSKPSrc::MSKPSrc(Path path) : fPath(path) {
1015 std::unique_ptr<SkStreamAsset> stream(SkStream::NewFromFile(fPath.c_str())); 1046 std::unique_ptr<SkStreamAsset> stream(SkStream::NewFromFile(fPath.c_str()));
1016 (void)fReader.init(stream.get()); 1047 (void)fReader.init(stream.get());
1017 } 1048 }
1018 1049
1019 int MSKPSrc::pageCount() const { return fReader.pageCount(); } 1050 int MSKPSrc::pageCount() const { return fReader.pageCount(); }
1020 1051
1021 SkISize MSKPSrc::size() const { return this->size(0); } 1052 SkISize MSKPSrc::size() const { return this->size(0); }
1022 SkISize MSKPSrc::size(int i) const { return fReader.pageSize(i).toCeil(); } 1053 SkISize MSKPSrc::size(int i) const { return fReader.pageSize(i).toCeil(); }
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
1557 skr.visit(i, drawsAsSingletonPictures); 1588 skr.visit(i, drawsAsSingletonPictures);
1558 } 1589 }
1559 sk_sp<SkPicture> macroPic(macroRec.finishRecordingAsPicture()); 1590 sk_sp<SkPicture> macroPic(macroRec.finishRecordingAsPicture());
1560 1591
1561 canvas->drawPicture(macroPic); 1592 canvas->drawPicture(macroPic);
1562 return check_against_reference(bitmap, src, fSink); 1593 return check_against_reference(bitmap, src, fSink);
1563 }); 1594 });
1564 } 1595 }
1565 1596
1566 } // namespace DM 1597 } // namespace DM
OLDNEW
« no previous file with comments | « dm/DMSrcSink.h ('k') | gyp/dm.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698