| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 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 "Request.h" | 8 #include "Request.h" |
| 9 | 9 |
| 10 #include "png.h" | 10 #include "png.h" |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 // parse picture from stream | 142 // parse picture from stream |
| 143 fPicture.reset(SkPicture::CreateFromStream(stream)); | 143 fPicture.reset(SkPicture::CreateFromStream(stream)); |
| 144 if (!fPicture.get()) { | 144 if (!fPicture.get()) { |
| 145 fprintf(stderr, "Could not create picture from stream.\n"); | 145 fprintf(stderr, "Could not create picture from stream.\n"); |
| 146 return false; | 146 return false; |
| 147 } | 147 } |
| 148 | 148 |
| 149 // pour picture into debug canvas | 149 // pour picture into debug canvas |
| 150 fDebugCanvas.reset(new SkDebugCanvas(kImageWidth, Request::kImageHeight)); | 150 fDebugCanvas.reset(new SkDebugCanvas(kImageWidth, Request::kImageHeight)); |
| 151 fDebugCanvas->drawPicture(fPicture); | 151 fDebugCanvas->drawPicture(fPicture); |
| 152 |
| 153 // for some reason we need to 'flush' the debug canvas by drawing all of the
ops |
| 154 fDebugCanvas->drawTo(this->getCanvas(), this->getLastOp()); |
| 152 return true; | 155 return true; |
| 153 } | 156 } |
| 154 | 157 |
| 155 GrAuditTrail* Request::getAuditTrail(SkCanvas* canvas) { | 158 GrAuditTrail* Request::getAuditTrail(SkCanvas* canvas) { |
| 156 GrAuditTrail* at = nullptr; | 159 GrAuditTrail* at = nullptr; |
| 157 #if SK_SUPPORT_GPU | 160 #if SK_SUPPORT_GPU |
| 158 GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget(); | 161 GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget(); |
| 159 if (rt) { | 162 if (rt) { |
| 160 GrContext* ctx = rt->getContext(); | 163 GrContext* ctx = rt->getContext(); |
| 161 if (ctx) { | 164 if (ctx) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 187 } | 190 } |
| 188 | 191 |
| 189 SkData* Request::getJsonBatchList(int n) { | 192 SkData* Request::getJsonBatchList(int n) { |
| 190 SkCanvas* canvas = this->getCanvas(); | 193 SkCanvas* canvas = this->getCanvas(); |
| 191 SkASSERT(fGPUEnabled); | 194 SkASSERT(fGPUEnabled); |
| 192 | 195 |
| 193 // TODO if this is inefficient we could add a method to GrAuditTrail which t
akes | 196 // TODO if this is inefficient we could add a method to GrAuditTrail which t
akes |
| 194 // a Json::Value and is only compiled in this file | 197 // a Json::Value and is only compiled in this file |
| 195 Json::Value parsedFromString; | 198 Json::Value parsedFromString; |
| 196 #if SK_SUPPORT_GPU | 199 #if SK_SUPPORT_GPU |
| 200 // we use the toJSON method on debug canvas, but then just ignore the result
s and pull |
| 201 // the information we care about from the audit trail |
| 202 fDebugCanvas->toJSON(fUrlDataManager, n, canvas); |
| 203 |
| 197 GrAuditTrail* at = this->getAuditTrail(canvas); | 204 GrAuditTrail* at = this->getAuditTrail(canvas); |
| 198 GrAuditTrail::AutoManageBatchList enable(at); | 205 GrAuditTrail::AutoManageBatchList enable(at); |
| 199 | |
| 200 fDebugCanvas->drawTo(canvas, n); | |
| 201 | |
| 202 Json::Reader reader; | 206 Json::Reader reader; |
| 203 SkDEBUGCODE(bool parsingSuccessful = )reader.parse(at->toJson(true).c_str(), | 207 SkDEBUGCODE(bool parsingSuccessful = )reader.parse(at->toJson().c_str(), |
| 204 parsedFromString); | 208 parsedFromString); |
| 205 SkASSERT(parsingSuccessful); | 209 SkASSERT(parsingSuccessful); |
| 206 #endif | 210 #endif |
| 207 | 211 |
| 208 SkDynamicMemoryWStream stream; | 212 SkDynamicMemoryWStream stream; |
| 209 stream.writeText(Json::FastWriter().write(parsedFromString).c_str()); | 213 stream.writeText(Json::FastWriter().write(parsedFromString).c_str()); |
| 210 | 214 |
| 211 return stream.copyToData(); | 215 return stream.copyToData(); |
| 212 } | 216 } |
| 213 | 217 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 224 SkIRect clip = fDebugCanvas->getCurrentClip(); | 228 SkIRect clip = fDebugCanvas->getCurrentClip(); |
| 225 Json::Value info(Json::objectValue); | 229 Json::Value info(Json::objectValue); |
| 226 info["ViewMatrix"] = SkJSONCanvas::MakeMatrix(vm); | 230 info["ViewMatrix"] = SkJSONCanvas::MakeMatrix(vm); |
| 227 info["ClipRect"] = SkJSONCanvas::MakeIRect(clip); | 231 info["ClipRect"] = SkJSONCanvas::MakeIRect(clip); |
| 228 | 232 |
| 229 std::string json = Json::FastWriter().write(info); | 233 std::string json = Json::FastWriter().write(info); |
| 230 | 234 |
| 231 // We don't want the null terminator so strlen is correct | 235 // We don't want the null terminator so strlen is correct |
| 232 return SkData::NewWithCopy(json.c_str(), strlen(json.c_str())); | 236 return SkData::NewWithCopy(json.c_str(), strlen(json.c_str())); |
| 233 } | 237 } |
| OLD | NEW |