sk_sp versions of newWithColorFilter and newWithLocalMatrix
BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1782703002 Review URL: https://codereview.chromium.org/1782703002
This commit is contained in:
parent
51b56c9041
commit
150835e779
@ -212,7 +212,7 @@ DEF_SIMPLE_GM(colorfiltershader, canvas, 800, 800) {
|
|||||||
for (int x = -1; x < filters.count(); ++x) {
|
for (int x = -1; x < filters.count(); ++x) {
|
||||||
SkColorFilter* filter = x >= 0 ? filters[x] : nullptr;
|
SkColorFilter* filter = x >= 0 ? filters[x] : nullptr;
|
||||||
|
|
||||||
paint.setShader(shader->newWithColorFilter(filter))->unref();
|
paint.setShader(shader->makeWithColorFilter(filter));
|
||||||
canvas->drawRect(r, paint);
|
canvas->drawRect(r, paint);
|
||||||
canvas->translate(150, 0);
|
canvas->translate(150, 0);
|
||||||
}
|
}
|
||||||
|
@ -154,7 +154,7 @@ protected:
|
|||||||
|
|
||||||
SkMatrix lm;
|
SkMatrix lm;
|
||||||
lm.setScale(2, 2);
|
lm.setScale(2, 2);
|
||||||
paint.setShader(paint.getShader()->newWithLocalMatrix(lm))->unref();
|
paint.setShader(paint.getShader()->makeWithLocalMatrix(lm));
|
||||||
r.fRight += r.width();
|
r.fRight += r.width();
|
||||||
r.fBottom += r.height();
|
r.fBottom += r.height();
|
||||||
|
|
||||||
|
@ -323,13 +323,13 @@ public:
|
|||||||
* Return a shader that will apply the specified localMatrix to this shader.
|
* Return a shader that will apply the specified localMatrix to this shader.
|
||||||
* The specified matrix will be applied before any matrix associated with this shader.
|
* The specified matrix will be applied before any matrix associated with this shader.
|
||||||
*/
|
*/
|
||||||
SkShader* newWithLocalMatrix(const SkMatrix&) const;
|
sk_sp<SkShader> makeWithLocalMatrix(const SkMatrix&) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new shader that produces the same colors as invoking this shader and then applying
|
* Create a new shader that produces the same colors as invoking this shader and then applying
|
||||||
* the colorfilter.
|
* the colorfilter.
|
||||||
*/
|
*/
|
||||||
SkShader* newWithColorFilter(SkColorFilter*) const;
|
sk_sp<SkShader> makeWithColorFilter(SkColorFilter*) const;
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
// Factory methods for stock shaders
|
// Factory methods for stock shaders
|
||||||
@ -359,6 +359,13 @@ public:
|
|||||||
static SkShader* CreateComposeShader(SkShader* dst, SkShader* src, SkXfermode* xfer);
|
static SkShader* CreateComposeShader(SkShader* dst, SkShader* src, SkXfermode* xfer);
|
||||||
static SkShader* CreatePictureShader(const SkPicture* src, TileMode tmx, TileMode tmy,
|
static SkShader* CreatePictureShader(const SkPicture* src, TileMode tmx, TileMode tmy,
|
||||||
const SkMatrix* localMatrix, const SkRect* tile);
|
const SkMatrix* localMatrix, const SkRect* tile);
|
||||||
|
|
||||||
|
SkShader* newWithLocalMatrix(const SkMatrix& matrix) const {
|
||||||
|
return this->makeWithLocalMatrix(matrix).release();
|
||||||
|
}
|
||||||
|
SkShader* newWithColorFilter(SkColorFilter* filter) const {
|
||||||
|
return this->makeWithColorFilter(filter).release();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -289,14 +289,12 @@ protected:
|
|||||||
if (true) {
|
if (true) {
|
||||||
SkMatrix m;
|
SkMatrix m;
|
||||||
m.setSkew(1, 0);
|
m.setSkew(1, 0);
|
||||||
SkShader* s = paint.getShader()->newWithLocalMatrix(m);
|
paint.setShader(paint.getShader()->makeWithLocalMatrix(m));
|
||||||
paint.setShader(s)->unref();
|
|
||||||
}
|
}
|
||||||
if (true) {
|
if (true) {
|
||||||
SkMatrix m;
|
SkMatrix m;
|
||||||
m.setRotate(fAngle);
|
m.setRotate(fAngle);
|
||||||
SkShader* s = paint.getShader()->newWithLocalMatrix(m);
|
paint.setShader(paint.getShader()->makeWithLocalMatrix(m));
|
||||||
paint.setShader(s)->unref();
|
|
||||||
}
|
}
|
||||||
patch.setBounds(fSize1.fX, fSize1.fY);
|
patch.setBounds(fSize1.fX, fSize1.fY);
|
||||||
drawpatches(canvas, paint, nu, nv, &patch);
|
drawpatches(canvas, paint, nu, nv, &patch);
|
||||||
|
@ -867,8 +867,8 @@ SkBlitter* SkBlitter::Choose(const SkPixmap& device,
|
|||||||
|
|
||||||
if (cf) {
|
if (cf) {
|
||||||
SkASSERT(shader);
|
SkASSERT(shader);
|
||||||
shader = shader->newWithColorFilter(cf);
|
paint.writable()->setShader(shader->makeWithColorFilter(cf));
|
||||||
paint.writable()->setShader(shader)->unref();
|
shader = paint->getShader();
|
||||||
// blitters should ignore the presence/absence of a filter, since
|
// blitters should ignore the presence/absence of a filter, since
|
||||||
// if there is one, the shader will take care of it.
|
// if there is one, the shader will take care of it.
|
||||||
}
|
}
|
||||||
|
@ -137,10 +137,10 @@ void SkColorFilterShader::toString(SkString* str) const {
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
SkShader* SkShader::newWithColorFilter(SkColorFilter* filter) const {
|
sk_sp<SkShader> SkShader::makeWithColorFilter(SkColorFilter* filter) const {
|
||||||
SkShader* base = const_cast<SkShader*>(this);
|
SkShader* base = const_cast<SkShader*>(this);
|
||||||
if (!filter) {
|
if (!filter) {
|
||||||
return SkRef(base);
|
return sk_ref_sp(base);
|
||||||
}
|
}
|
||||||
return new SkColorFilterShader(base, filter);
|
return sk_make_sp<SkColorFilterShader>(base, filter);
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ SkFlattenable* SkLocalMatrixShader::CreateProc(SkReadBuffer& buffer) {
|
|||||||
if (!baseShader) {
|
if (!baseShader) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
return baseShader->newWithLocalMatrix(lm);
|
return baseShader->makeWithLocalMatrix(lm).release();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SkLocalMatrixShader::flatten(SkWriteBuffer& buffer) const {
|
void SkLocalMatrixShader::flatten(SkWriteBuffer& buffer) const {
|
||||||
@ -47,9 +47,9 @@ void SkLocalMatrixShader::toString(SkString* str) const {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SkShader* SkShader::newWithLocalMatrix(const SkMatrix& localMatrix) const {
|
sk_sp<SkShader> SkShader::makeWithLocalMatrix(const SkMatrix& localMatrix) const {
|
||||||
if (localMatrix.isIdentity()) {
|
if (localMatrix.isIdentity()) {
|
||||||
return SkRef(const_cast<SkShader*>(this));
|
return sk_ref_sp(const_cast<SkShader*>(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
const SkMatrix* lm = &localMatrix;
|
const SkMatrix* lm = &localMatrix;
|
||||||
@ -63,5 +63,5 @@ SkShader* SkShader::newWithLocalMatrix(const SkMatrix& localMatrix) const {
|
|||||||
baseShader = proxy.get();
|
baseShader = proxy.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
return new SkLocalMatrixShader(baseShader, *lm);
|
return sk_make_sp<SkLocalMatrixShader>(baseShader, *lm);
|
||||||
}
|
}
|
||||||
|
@ -125,8 +125,7 @@ static sk_sp<SkShader> make_grad_sh() {
|
|||||||
|
|
||||||
static sk_sp<SkShader> make_cf_sh() {
|
static sk_sp<SkShader> make_cf_sh() {
|
||||||
SkAutoTUnref<SkColorFilter> filter(make_mx_cf());
|
SkAutoTUnref<SkColorFilter> filter(make_mx_cf());
|
||||||
sk_sp<SkShader> shader(make_color_sh());
|
return make_color_sh()->makeWithColorFilter(filter);
|
||||||
return sk_sp<SkShader>(shader->newWithColorFilter(filter));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool compare_spans(const SkPM4f span4f[], const SkPMColor span4b[], int count,
|
static bool compare_spans(const SkPM4f span4f[], const SkPMColor span4b[], int count,
|
||||||
|
Loading…
Reference in New Issue
Block a user