Revert "Remove SkTLList"
This reverts commit e1d523d70fec3b3d24fef6da4a823c52092b6c77.
Reason for revert: breaking old stdlib versions (< c17)
Original change's description:
> Remove SkTLList
>
> Change-Id: I198678b5cb298cf51872fbb8d4fd5d705a6b684e
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/437339
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
TBR=brianosman@google.com,michaelludwig@google.com,skcq-be@skia-corp.google.com.iam.gserviceaccount.com
Change-Id: I8e02e4cd2f293e7530f842be783de10f69be2ef4
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/438078
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
index b473ded..7485293 100644
--- a/gm/convexpolyeffect.cpp
+++ b/gm/convexpolyeffect.cpp
@@ -20,6 +20,7 @@
#include "include/core/SkString.h"
#include "include/private/GrTypesPriv.h"
#include "src/core/SkCanvasPriv.h"
+#include "src/core/SkTLList.h"
#include "src/gpu/GrFragmentProcessor.h"
#include "src/gpu/GrPaint.h"
#include "src/gpu/effects/GrConvexPolyEffect.h"
@@ -55,11 +56,11 @@
tri.lineTo(100.f, 20.f);
tri.lineTo(15.f, 100.f);
- fPaths.push_back(tri);
- fPaths.emplace_back().reverseAddPath(tri);
+ fPaths.addToTail(tri);
+ fPaths.addToTail(SkPath())->reverseAddPath(tri);
tri.close();
- fPaths.push_back(tri);
+ fPaths.addToTail(tri);
SkPath ngon;
constexpr SkScalar kRadius = 50.f;
@@ -76,16 +77,16 @@
}
}
- fPaths.push_back(ngon);
+ fPaths.addToTail(ngon);
SkMatrix scaleM;
scaleM.setScale(1.1f, 0.4f);
ngon.transform(scaleM);
- fPaths.push_back(ngon);
+ fPaths.addToTail(ngon);
SkPath linePath;
linePath.moveTo(5.f, 5.f);
linePath.lineTo(6.f, 6.f);
- fPaths.push_back(linePath);
+ fPaths.addToTail(linePath);
}
DrawResult onDraw(GrRecordingContext* rContext, SkCanvas* canvas, SkString* errorMsg) override {
@@ -99,13 +100,16 @@
static constexpr SkScalar kDX = 12.f;
static constexpr SkScalar kOutset = 5.f;
- for (const SkPath& path : fPaths) {
+ for (PathList::Iter iter(fPaths, PathList::Iter::kHead_IterStart);
+ iter.get();
+ iter.next()) {
+ const SkPath* path = iter.get();
SkScalar x = 0;
for (int et = 0; et < kGrClipEdgeTypeCnt; ++et) {
const SkMatrix m = SkMatrix::Translate(x, y);
SkPath p;
- path.transform(m, &p);
+ path->transform(m, &p);
GrClipEdgeType edgeType = (GrClipEdgeType) et;
auto [success, fp] = GrConvexPolyEffect::Make(/*inputFP=*/nullptr, edgeType, p);
@@ -121,27 +125,28 @@
auto op = sk_gpu_test::test_ops::MakeRect(rContext, std::move(grPaint), rect);
sdc->addDrawOp(std::move(op));
- x += SkScalarCeilToScalar(path.getBounds().width() + kDX);
+ x += SkScalarCeilToScalar(path->getBounds().width() + kDX);
}
// Draw AA and non AA paths using normal API for reference.
canvas->save();
canvas->translate(x, y);
SkPaint paint;
- canvas->drawPath(path, paint);
- canvas->translate(path.getBounds().width() + 10.f, 0);
+ canvas->drawPath(*path, paint);
+ canvas->translate(path->getBounds().width() + 10.f, 0);
paint.setAntiAlias(true);
- canvas->drawPath(path, paint);
+ canvas->drawPath(*path, paint);
canvas->restore();
- y += SkScalarCeilToScalar(path.getBounds().height() + 20.f);
+ y += SkScalarCeilToScalar(path->getBounds().height() + 20.f);
}
return DrawResult::kOk;
}
private:
- std::vector<SkPath> fPaths;
+ typedef SkTLList<SkPath, 1> PathList;
+ PathList fPaths;
using INHERITED = GM;
};