void LoggingCanvas::onDrawImageRect(const SkImage* image, const SkRect* src, const SkRect& dst, const SkPaint* paint, SrcRectConstraint constraint) { AutoLogger logger(this); RefPtr<JSONObject> params = logger.logItemWithParams("drawImageRect"); params->setObject("image", objectForSkImage(image)); if (src) params->setObject("src", objectForSkRect(*src)); params->setObject("dst", objectForSkRect(dst)); if (paint) params->setObject("paint", objectForSkPaint(*paint)); this->SkCanvas::onDrawImageRect(image, src, dst, paint, constraint); }
void LoggingCanvas::onDrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, const SkRect& dst, const SkPaint* paint, DrawBitmapRectFlags flags) { AutoLogger logger(this); RefPtr<JSONObject> params = logger.logItemWithParams("drawBitmapRectToRect"); params->setObject("bitmap", objectForSkBitmap(bitmap)); if (src) params->setObject("src", objectForSkRect(*src)); params->setObject("dst", objectForSkRect(dst)); if (paint) params->setObject("paint", objectForSkPaint(*paint)); params->setNumber("flags", flags); this->SkCanvas::onDrawBitmapRect(bitmap, src, dst, paint, flags); }
void LoggingCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) { AutoLogger logger(this); RefPtr<JSONObject> params = logger.logItemWithParams("drawRect"); params->setObject("rect", objectForSkRect(rect)); params->setObject("paint", objectForSkPaint(paint)); this->SkCanvas::onDrawRect(rect, paint); }
void LoggingCanvas::onDrawOval(const SkRect& oval, const SkPaint& paint) { AutoLogger logger(this); RefPtr<JSONObject> params = logger.logItemWithParams("drawOval"); params->setObject("oval", objectForSkRect(oval)); params->setObject("paint", objectForSkPaint(paint)); this->SkCanvas::onDrawOval(oval, paint); }
void LoggingCanvas::onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle style) { AutoLogger logger(this); RefPtr<JSONObject> params = logger.logItemWithParams("clipRect"); params->setObject("rect", objectForSkRect(rect)); params->setString("SkRegion::Op", regionOpName(op)); params->setBoolean("softClipEdgeStyle", kSoft_ClipEdgeStyle == style); this->SkCanvas::onClipRect(rect, op, style); }
SkCanvas::SaveLayerStrategy LoggingCanvas::willSaveLayer(const SkRect* bounds, const SkPaint* paint, SaveFlags flags) { AutoLogger logger(this); RefPtr<JSONObject> params = logger.logItemWithParams("saveLayer"); if (bounds) params->setObject("bounds", objectForSkRect(*bounds)); if (paint) params->setObject("paint", objectForSkPaint(*paint)); params->setString("saveFlags", saveFlagsToString(flags)); return this->SkCanvas::willSaveLayer(bounds, paint, flags); }
void LoggingCanvas::onDrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, const SkRect& dst, const SkPaint* paint) { AutoLogger logger(this); RefPtr<JSONObject> params = logger.logItemWithParams("drawBitmapNine"); params->setObject("bitmap", objectForSkBitmap(bitmap)); params->setObject("center", objectForSkIRect(center)); params->setObject("dst", objectForSkRect(dst)); if (paint) params->setObject("paint", objectForSkPaint(*paint)); this->SkCanvas::onDrawBitmapNine(bitmap, center, dst, paint); }
String pictureAsDebugString(const SkPicture* picture) { const SkIRect bounds = picture->cullRect().roundOut(); LoggingCanvas canvas(bounds.width(), bounds.height()); picture->playback(&canvas); RefPtr<JSONObject> pictureAsJSON = JSONObject::create(); pictureAsJSON->setObject("cullRect", objectForSkRect(picture->cullRect())); pictureAsJSON->setArray("operations", canvas.log()); RefPtr<JSONArray> operationsInJson = canvas.log(); return pictureAsJSON->toPrettyJSONString(); }
SkCanvas::SaveLayerStrategy LoggingCanvas::getSaveLayerStrategy(const SaveLayerRec& rec) { AutoLogger logger(this); RefPtr<JSONObject> params = logger.logItemWithParams("saveLayer"); if (rec.fBounds) params->setObject("bounds", objectForSkRect(*rec.fBounds)); if (rec.fPaint) params->setObject("paint", objectForSkPaint(*rec.fPaint)); params->setString("saveFlags", saveLayerFlagsToString(rec.fSaveLayerFlags)); return this->SkCanvas::getSaveLayerStrategy(rec); }
PassRefPtr<JSONObject> LoggingCanvas::objectForSkPath(const SkPath& path) { RefPtr<JSONObject> pathItem = JSONObject::create(); pathItem->setString("fillType", fillTypeName(path.getFillType())); pathItem->setString("convexity", convexityName(path.getConvexity())); pathItem->setBoolean("isRect", path.isRect(0)); SkPath::Iter iter(path, false); SkPoint points[4]; RefPtr<JSONArray> pathPointsArray = JSONArray::create(); for (SkPath::Verb verb = iter.next(points, false); verb != SkPath::kDone_Verb; verb = iter.next(points, false)) { VerbParams verbParams = segmentParams(verb); RefPtr<JSONObject> pathPointItem = JSONObject::create(); pathPointItem->setString("verb", verbParams.name); ASSERT(verbParams.pointCount + verbParams.pointOffset <= WTF_ARRAY_LENGTH(points)); pathPointItem->setArray("points", arrayForSkPoints(verbParams.pointCount, points + verbParams.pointOffset)); if (SkPath::kConic_Verb == verb) pathPointItem->setNumber("conicWeight", iter.conicWeight()); pathPointsArray->pushObject(pathPointItem); } pathItem->setArray("pathPoints", pathPointsArray); pathItem->setObject("bounds", objectForSkRect(path.getBounds())); return pathItem.release(); }