aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/debugger
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2018-05-29 14:25:39 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-05-29 20:44:47 +0000
commit65197ff1ac66555436d6d8b8d6f8d7c6d3aa0d59 (patch)
tree6458baabaea506192f9133f78fef03e3295d2cae /tools/debugger
parentf2c736400f03f8fe7fe356962c979f23df4d5f6b (diff)
SkDrawCommand cleanup, continued
- Removes all remaining manual memory management Change-Id: I3e9ed4e186082a13b46a2d2de295cbeb0cf9a449 Reviewed-on: https://skia-review.googlesource.com/130542 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
Diffstat (limited to 'tools/debugger')
-rw-r--r--tools/debugger/SkDrawCommand.cpp104
-rw-r--r--tools/debugger/SkDrawCommand.h42
2 files changed, 54 insertions, 92 deletions
diff --git a/tools/debugger/SkDrawCommand.cpp b/tools/debugger/SkDrawCommand.cpp
index 001911c975..215328603f 100644
--- a/tools/debugger/SkDrawCommand.cpp
+++ b/tools/debugger/SkDrawCommand.cpp
@@ -1855,31 +1855,26 @@ Json::Value SkDrawPointsCommand::toJSON(UrlDataManager& urlDataManager) const {
return result;
}
+static Json::Value make_json_text(sk_sp<SkData> text) {
+ return Json::Value((const char*)text->data(), (const char*)text->data() + text->size());
+}
+
SkDrawPosTextCommand::SkDrawPosTextCommand(const void* text, size_t byteLength,
const SkPoint pos[], const SkPaint& paint)
- : INHERITED(kDrawPosText_OpType) {
- size_t numPts = paint.countText(text, byteLength);
-
- fText = new char[byteLength];
- memcpy(fText, text, byteLength);
- fByteLength = byteLength;
-
- fPos = new SkPoint[numPts];
- memcpy(fPos, pos, numPts * sizeof(SkPoint));
-
- fPaint = paint;
-}
+ : INHERITED(kDrawPosText_OpType)
+ , fText(SkData::MakeWithCopy(text, byteLength))
+ , fPos(pos, paint.countText(text, byteLength))
+ , fPaint(paint) {}
void SkDrawPosTextCommand::execute(SkCanvas* canvas) const {
- canvas->drawPosText(fText, fByteLength, fPos, fPaint);
+ canvas->drawPosText(fText->data(), fText->size(), fPos.begin(), fPaint);
}
Json::Value SkDrawPosTextCommand::toJSON(UrlDataManager& urlDataManager) const {
Json::Value result = INHERITED::toJSON(urlDataManager);
- result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = Json::Value((const char*) fText,
- ((const char*) fText) + fByteLength);
+ result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = make_json_text(fText);
Json::Value coords(Json::arrayValue);
- size_t numCoords = fPaint.textToGlyphs(fText, fByteLength, nullptr);
+ size_t numCoords = fPaint.textToGlyphs(fText->data(), fText->size(), nullptr);
for (size_t i = 0; i < numCoords; i++) {
coords.append(MakeJsonPoint(fPos[i]));
}
@@ -1891,31 +1886,22 @@ Json::Value SkDrawPosTextCommand::toJSON(UrlDataManager& urlDataManager) const {
SkDrawPosTextHCommand::SkDrawPosTextHCommand(const void* text, size_t byteLength,
const SkScalar xpos[], SkScalar constY,
const SkPaint& paint)
- : INHERITED(kDrawPosTextH_OpType) {
- size_t numPts = paint.countText(text, byteLength);
-
- fText = new char[byteLength];
- memcpy(fText, text, byteLength);
- fByteLength = byteLength;
-
- fXpos = new SkScalar[numPts];
- memcpy(fXpos, xpos, numPts * sizeof(SkScalar));
-
- fConstY = constY;
- fPaint = paint;
-}
+ : INHERITED(kDrawPosTextH_OpType)
+ , fText(SkData::MakeWithCopy(text, byteLength))
+ , fXpos(xpos, paint.countText(text, byteLength))
+ , fConstY(constY)
+ , fPaint(paint) {}
void SkDrawPosTextHCommand::execute(SkCanvas* canvas) const {
- canvas->drawPosTextH(fText, fByteLength, fXpos, fConstY, fPaint);
+ canvas->drawPosTextH(fText->data(), fText->size(), fXpos.begin(), fConstY, fPaint);
}
Json::Value SkDrawPosTextHCommand::toJSON(UrlDataManager& urlDataManager) const {
Json::Value result = INHERITED::toJSON(urlDataManager);
- result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = Json::Value((const char*) fText,
- ((const char*) fText) + fByteLength);
+ result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = make_json_text(fText);
result[SKDEBUGCANVAS_ATTRIBUTE_Y] = Json::Value(fConstY);
Json::Value xpos(Json::arrayValue);
- size_t numXpos = fPaint.textToGlyphs(fText, fByteLength, nullptr);
+ size_t numXpos = fPaint.textToGlyphs(fText->data(), fText->size(), nullptr);
for (size_t i = 0; i < numXpos; i++) {
xpos.append(Json::Value(fXpos[i]));
}
@@ -2156,23 +2142,19 @@ Json::Value SkDrawShadowCommand::toJSON(UrlDataManager& urlDataManager) const {
SkDrawTextCommand::SkDrawTextCommand(const void* text, size_t byteLength, SkScalar x, SkScalar y,
const SkPaint& paint)
- : INHERITED(kDrawText_OpType) {
- fText = new char[byteLength];
- memcpy(fText, text, byteLength);
- fByteLength = byteLength;
- fX = x;
- fY = y;
- fPaint = paint;
-}
+ : INHERITED(kDrawText_OpType)
+ , fText(SkData::MakeWithCopy(text, byteLength))
+ , fX(x)
+ , fY(y)
+ , fPaint(paint) {}
void SkDrawTextCommand::execute(SkCanvas* canvas) const {
- canvas->drawText(fText, fByteLength, fX, fY, fPaint);
+ canvas->drawText(fText->data(), fText->size(), fX, fY, fPaint);
}
Json::Value SkDrawTextCommand::toJSON(UrlDataManager& urlDataManager) const {
Json::Value result = INHERITED::toJSON(urlDataManager);
- result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = Json::Value((const char*) fText,
- ((const char*) fText) + fByteLength);
+ result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = make_json_text(fText);
Json::Value coords(Json::arrayValue);
result[SKDEBUGCANVAS_ATTRIBUTE_COORDS] = MakeJsonPoint(fX, fY);
result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = MakeJsonPaint(fPaint, urlDataManager);
@@ -2185,22 +2167,18 @@ SkDrawTextOnPathCommand::SkDrawTextOnPathCommand(const void* text, size_t byteLe
const SkPath& path, const SkMatrix* matrix,
const SkPaint& paint)
: INHERITED(kDrawTextOnPath_OpType)
- , fMatrix(matrix) {
- fText = new char[byteLength];
- memcpy(fText, text, byteLength);
- fByteLength = byteLength;
- fPath = path;
- fPaint = paint;
-}
+ , fText(SkData::MakeWithCopy(text, byteLength))
+ , fPath(path)
+ , fMatrix(matrix)
+ , fPaint(paint) {}
void SkDrawTextOnPathCommand::execute(SkCanvas* canvas) const {
- canvas->drawTextOnPath(fText, fByteLength, fPath, fMatrix.getMaybeNull(), fPaint);
+ canvas->drawTextOnPath(fText->data(), fText->size(), fPath, fMatrix.getMaybeNull(), fPaint);
}
Json::Value SkDrawTextOnPathCommand::toJSON(UrlDataManager& urlDataManager) const {
Json::Value result = INHERITED::toJSON(urlDataManager);
- result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = Json::Value((const char*) fText,
- ((const char*) fText) + fByteLength);
+ result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = make_json_text(fText);
Json::Value coords(Json::arrayValue);
result[SKDEBUGCANVAS_ATTRIBUTE_PATH] = MakeJsonPath(fPath);
if (fMatrix.isValid()) {
@@ -2216,25 +2194,19 @@ SkDrawTextRSXformCommand::SkDrawTextRSXformCommand(const void* text, size_t byte
const SkRSXform xform[], const SkRect* cull,
const SkPaint& paint)
: INHERITED(kDrawTextRSXform_OpType)
+ , fText(SkData::MakeWithCopy(text, byteLength))
+ , fXform(xform, paint.countText(text, byteLength))
, fCull(cull)
-{
- fText = new char[byteLength];
- memcpy(fText, text, byteLength);
- fByteLength = byteLength;
- int count = paint.countText(text, byteLength);
- fXform = new SkRSXform[count];
- memcpy(fXform, xform, count * sizeof(SkRSXform));
- fPaint = paint;
-}
+ , fPaint(paint) {}
void SkDrawTextRSXformCommand::execute(SkCanvas* canvas) const {
- canvas->drawTextRSXform(fText, fByteLength, fXform, fCull.getMaybeNull(), fPaint);
+ canvas->drawTextRSXform(fText->data(), fText->size(), fXform.begin(), fCull.getMaybeNull(),
+ fPaint);
}
Json::Value SkDrawTextRSXformCommand::toJSON(UrlDataManager& urlDataManager) const {
Json::Value result = INHERITED::toJSON(urlDataManager);
- result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = Json::Value((const char*) fText,
- ((const char*) fText) + fByteLength);
+ result[SKDEBUGCANVAS_ATTRIBUTE_TEXT] = make_json_text(fText);
result[SKDEBUGCANVAS_ATTRIBUTE_PAINT] = MakeJsonPaint(fPaint, urlDataManager);
return result;
}
diff --git a/tools/debugger/SkDrawCommand.h b/tools/debugger/SkDrawCommand.h
index 7bac9e4858..fa12dd45d3 100644
--- a/tools/debugger/SkDrawCommand.h
+++ b/tools/debugger/SkDrawCommand.h
@@ -486,16 +486,14 @@ class SkDrawTextCommand : public SkDrawCommand {
public:
SkDrawTextCommand(const void* text, size_t byteLength, SkScalar x, SkScalar y,
const SkPaint& paint);
- ~SkDrawTextCommand() override { delete [] fText; }
void execute(SkCanvas* canvas) const override;
Json::Value toJSON(UrlDataManager& urlDataManager) const override;
private:
- char* fText;
- size_t fByteLength;
- SkScalar fX;
- SkScalar fY;
- SkPaint fPaint;
+ sk_sp<SkData> fText;
+ SkScalar fX;
+ SkScalar fY;
+ SkPaint fPaint;
typedef SkDrawCommand INHERITED;
};
@@ -504,15 +502,13 @@ class SkDrawPosTextCommand : public SkDrawCommand {
public:
SkDrawPosTextCommand(const void* text, size_t byteLength, const SkPoint pos[],
const SkPaint& paint);
- ~SkDrawPosTextCommand() override { delete [] fPos; delete [] fText; }
void execute(SkCanvas* canvas) const override;
Json::Value toJSON(UrlDataManager& urlDataManager) const override;
private:
- char* fText;
- size_t fByteLength;
- SkPoint* fPos;
- SkPaint fPaint;
+ sk_sp<SkData> fText;
+ SkTDArray<SkPoint> fPos;
+ SkPaint fPaint;
typedef SkDrawCommand INHERITED;
};
@@ -521,13 +517,11 @@ class SkDrawTextOnPathCommand : public SkDrawCommand {
public:
SkDrawTextOnPathCommand(const void* text, size_t byteLength, const SkPath& path,
const SkMatrix* matrix, const SkPaint& paint);
- ~SkDrawTextOnPathCommand() override { delete [] fText; }
void execute(SkCanvas* canvas) const override;
Json::Value toJSON(UrlDataManager& urlDataManager) const override;
private:
- char* fText;
- size_t fByteLength;
+ sk_sp<SkData> fText;
SkPath fPath;
SkTLazy<SkMatrix> fMatrix;
SkPaint fPaint;
@@ -539,16 +533,14 @@ class SkDrawTextRSXformCommand : public SkDrawCommand {
public:
SkDrawTextRSXformCommand(const void* text, size_t byteLength, const SkRSXform[],
const SkRect*, const SkPaint& paint);
- ~SkDrawTextRSXformCommand() override { delete[] fText; delete[] fXform; }
void execute(SkCanvas* canvas) const override;
Json::Value toJSON(UrlDataManager& urlDataManager) const override;
private:
- char* fText;
- size_t fByteLength;
- SkRSXform* fXform;
- SkTLazy<SkRect> fCull;
- SkPaint fPaint;
+ sk_sp<SkData> fText;
+ SkTDArray<SkRSXform> fXform;
+ SkTLazy<SkRect> fCull;
+ SkPaint fPaint;
typedef SkDrawCommand INHERITED;
};
@@ -557,16 +549,14 @@ class SkDrawPosTextHCommand : public SkDrawCommand {
public:
SkDrawPosTextHCommand(const void* text, size_t byteLength, const SkScalar xpos[],
SkScalar constY, const SkPaint& paint);
- ~SkDrawPosTextHCommand() override { delete [] fXpos; delete [] fText; }
void execute(SkCanvas* canvas) const override;
Json::Value toJSON(UrlDataManager& urlDataManager) const override;
private:
- SkScalar* fXpos;
- char* fText;
- size_t fByteLength;
- SkScalar fConstY;
- SkPaint fPaint;
+ sk_sp<SkData> fText;
+ SkTDArray<SkScalar> fXpos;
+ SkScalar fConstY;
+ SkPaint fPaint;
typedef SkDrawCommand INHERITED;
};