a93a14a998
This was created by looking at warnings produced by clang's -Wzero-as-null-pointer-constant. This updates most issues in Skia code. However, there are places where GL and Vulkan want pointer values which are explicitly 0, external headers which use NULL directly, and possibly more uses in un-compiled sources (for other platforms). Change-Id: Id22fbac04d5c53497a53d734f0896b4f06fe8345 Reviewed-on: https://skia-review.googlesource.com/39521 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
166 lines
5.7 KiB
C++
166 lines
5.7 KiB
C++
/*
|
|
* Copyright 2011 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#ifndef SkDumpCanvas_DEFINED
|
|
#define SkDumpCanvas_DEFINED
|
|
|
|
#include "SkCanvas.h"
|
|
#include "SkVertices.h"
|
|
|
|
/** This class overrides all the draw methods on SkCanvas, and formats them
|
|
as text, and then sends that to a Dumper helper object.
|
|
|
|
Typical use might be to dump a display list to a log file to see what is
|
|
being drawn.
|
|
*/
|
|
class SkDumpCanvas : public SkCanvas {
|
|
public:
|
|
class Dumper;
|
|
|
|
explicit SkDumpCanvas(Dumper* = nullptr);
|
|
~SkDumpCanvas() override;
|
|
|
|
enum Verb {
|
|
kNULL_Verb,
|
|
|
|
kSave_Verb,
|
|
kRestore_Verb,
|
|
|
|
kMatrix_Verb,
|
|
|
|
kClip_Verb,
|
|
|
|
kDrawPaint_Verb,
|
|
kDrawPoints_Verb,
|
|
kDrawOval_Verb,
|
|
kDrawArc_Verb,
|
|
kDrawRect_Verb,
|
|
kDrawRRect_Verb,
|
|
kDrawDRRect_Verb,
|
|
kDrawPath_Verb,
|
|
kDrawBitmap_Verb,
|
|
kDrawText_Verb,
|
|
kDrawPicture_Verb,
|
|
kDrawVertices_Verb,
|
|
kDrawPatch_Verb,
|
|
kDrawData_Verb, // obsolete
|
|
kDrawAnnotation_Verb,
|
|
|
|
kCull_Verb
|
|
};
|
|
|
|
/** Subclasses of this are installed on the DumpCanvas, and then called for
|
|
each drawing command.
|
|
*/
|
|
class Dumper : public SkRefCnt {
|
|
public:
|
|
|
|
|
|
virtual void dump(SkDumpCanvas*, SkDumpCanvas::Verb, const char str[],
|
|
const SkPaint*) = 0;
|
|
|
|
private:
|
|
typedef SkRefCnt INHERITED;
|
|
};
|
|
|
|
Dumper* getDumper() const { return fDumper; }
|
|
void setDumper(Dumper*);
|
|
|
|
int getNestLevel() const { return fNestLevel; }
|
|
|
|
protected:
|
|
void willSave() override;
|
|
SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec&) override;
|
|
void willRestore() override;
|
|
|
|
void didConcat(const SkMatrix&) override;
|
|
void didSetMatrix(const SkMatrix&) override;
|
|
|
|
void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override;
|
|
virtual void onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y,
|
|
const SkPaint&) override;
|
|
virtual void onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[],
|
|
const SkPaint&) override;
|
|
virtual void onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[],
|
|
SkScalar constY, const SkPaint&) override;
|
|
virtual void onDrawTextOnPath(const void* text, size_t byteLength, const SkPath& path,
|
|
const SkMatrix* matrix, const SkPaint&) override;
|
|
void onDrawTextRSXform(const void* text, size_t byteLength, const SkRSXform xform[],
|
|
const SkRect* cull, const SkPaint& paint) override;
|
|
virtual void onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y,
|
|
const SkPaint& paint) override;
|
|
virtual void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4],
|
|
const SkPoint texCoords[4], SkBlendMode,
|
|
const SkPaint& paint) override;
|
|
|
|
void onDrawPaint(const SkPaint&) override;
|
|
void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint&) override;
|
|
void onDrawRect(const SkRect&, const SkPaint&) override;
|
|
void onDrawOval(const SkRect&, const SkPaint&) override;
|
|
void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override;
|
|
void onDrawRRect(const SkRRect&, const SkPaint&) override;
|
|
void onDrawPath(const SkPath&, const SkPaint&) override;
|
|
void onDrawBitmap(const SkBitmap&, SkScalar left, SkScalar top, const SkPaint*) override;
|
|
void onDrawBitmapRect(const SkBitmap&, const SkRect* src, const SkRect& dst, const SkPaint*,
|
|
SrcRectConstraint) override;
|
|
void onDrawImage(const SkImage*, SkScalar left, SkScalar top, const SkPaint*) override;
|
|
void onDrawImageRect(const SkImage*, const SkRect* src, const SkRect& dst,
|
|
const SkPaint*, SrcRectConstraint) override;
|
|
void onDrawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst,
|
|
const SkPaint*) override;
|
|
void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override;
|
|
|
|
void onClipRect(const SkRect&, SkClipOp, ClipEdgeStyle) override;
|
|
void onClipRRect(const SkRRect&, SkClipOp, ClipEdgeStyle) override;
|
|
void onClipPath(const SkPath&, SkClipOp, ClipEdgeStyle) override;
|
|
void onClipRegion(const SkRegion&, SkClipOp) override;
|
|
|
|
void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override;
|
|
void onDrawAnnotation(const SkRect&, const char key[], SkData* value) override;
|
|
|
|
static const char* EdgeStyleToAAString(ClipEdgeStyle edgeStyle);
|
|
|
|
private:
|
|
Dumper* fDumper;
|
|
int fNestLevel; // for nesting recursive elements like pictures
|
|
|
|
void dump(Verb, const SkPaint*, const char format[], ...);
|
|
|
|
typedef SkCanvas INHERITED;
|
|
};
|
|
|
|
/** Formats the draw commands, and send them to a function-pointer provided
|
|
by the caller.
|
|
*/
|
|
class SkFormatDumper : public SkDumpCanvas::Dumper {
|
|
public:
|
|
SkFormatDumper(void (*)(const char text[], void* refcon), void* refcon);
|
|
|
|
// override from baseclass that does the formatting, and in turn calls
|
|
// the function pointer that was passed to the constructor
|
|
virtual void dump(SkDumpCanvas*, SkDumpCanvas::Verb, const char str[],
|
|
const SkPaint*) override;
|
|
|
|
private:
|
|
void (*fProc)(const char*, void*);
|
|
void* fRefcon;
|
|
|
|
typedef SkDumpCanvas::Dumper INHERITED;
|
|
};
|
|
|
|
/** Subclass of Dumper that dumps the drawing command to SkDebugf
|
|
*/
|
|
class SkDebugfDumper : public SkFormatDumper {
|
|
public:
|
|
SkDebugfDumper();
|
|
|
|
private:
|
|
typedef SkFormatDumper INHERITED;
|
|
};
|
|
|
|
#endif
|