remove SkRefCnt safeRef() and safeUnref(), and replace the call-sites with
SkSafeRef() and SkSafeUnref().
This is basically a bug waiting to happen. An optimizing compiler can remove
checks for null on "this" if it chooses. However, SkRefCnt::safeRef() relies on
precisely this check...
void SkRefCnt::safeRef() {
if (this) {
this->ref();
}
}
Since a compiler might skip the if-clause, it breaks the intention of this
method, hence its removal.
static inline void SkSafeRef(SkRefCnt* obj) {
if (obj) {
obj->ref();
}
}
This form is not ignored by an optimizing compile, so we use it instead.
git-svn-id: http://skia.googlecode.com/svn/trunk@762 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleDrawLooper.cpp b/samplecode/SampleDrawLooper.cpp
index 7ea7b75..7cf53b2 100644
--- a/samplecode/SampleDrawLooper.cpp
+++ b/samplecode/SampleDrawLooper.cpp
@@ -27,9 +27,9 @@
{ SK_ColorBLUE, SkPaint::kFill_Style, 0, 0, 0 },
{ 0x88000000, SkPaint::kFill_Style, 0, SkIntToScalar(10), 3 }
};
-
+
fLooper = new SkLayerDrawLooper;
-
+
for (int i = 0; i < SK_ARRAY_COUNT(gParams); i++) {
SkPaint* paint = fLooper->addLayer(gParams[i].fOffset,
gParams[i].fOffset);
@@ -45,11 +45,11 @@
}
}
}
-
+
virtual ~LooperView() {
- fLooper->safeUnref();
+ SkSafeUnref(fLooper);
}
-
+
protected:
// overrides from SkEventSink
virtual bool onQuery(SkEvent* evt) {
@@ -59,18 +59,18 @@
}
return this->INHERITED::onQuery(evt);
}
-
+
void drawBG(SkCanvas* canvas) {
canvas->drawColor(0xFFDDDDDD);
// canvas->drawColor(SK_ColorWHITE);
}
-
+
virtual void onDraw(SkCanvas* canvas) {
this->drawBG(canvas);
-
+
SkPaint paint;
paint.setLooper(fLooper);
-
+
canvas->drawCircle(SkIntToScalar(50), SkIntToScalar(50),
SkIntToScalar(30), paint);
@@ -80,16 +80,16 @@
canvas->drawText("Looper", 6, SkIntToScalar(230), SkIntToScalar(100),
paint);
}
-
+
virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) {
this->inval(NULL);
return this->INHERITED::onFindClickHandler(x, y);
}
-
+
virtual bool onClick(Click* click) {
return this->INHERITED::onClick(click);
}
-
+
private:
typedef SkView INHERITED;
};
diff --git a/samplecode/SampleFontScalerTest.cpp b/samplecode/SampleFontScalerTest.cpp
index d597a9a..de70292 100644
--- a/samplecode/SampleFontScalerTest.cpp
+++ b/samplecode/SampleFontScalerTest.cpp
@@ -39,10 +39,10 @@
gFaces[i].fStyle);
}
}
-
+
virtual ~FontScalerTestView() {
for (int i = 0; i < gFaceCount; i++) {
- fFaces[i]->safeUnref();
+ SkSafeUnref(fFaces[i]);
}
}
@@ -55,14 +55,14 @@
}
return this->INHERITED::onQuery(evt);
}
-
+
void drawBG(SkCanvas* canvas) {
canvas->drawColor(0xFFDDDDDD);
}
-
+
virtual void onDraw(SkCanvas* canvas) {
this->drawBG(canvas);
-
+
SkPaint paint;
// test handling of obscene cubic values (currently broken)
@@ -72,19 +72,19 @@
pts[1].set(-7.18397061e+15, -1.53091184e+13);
pts[2].set(-1.30077315e+16, -2.77196141e+13);
pts[3].set(-1.30077315e+16, -2.77196162e+13);
-
+
SkPath path;
path.moveTo(pts[0]);
path.cubicTo(pts[1], pts[2], pts[3]);
canvas->drawPath(path, paint);
}
-
+
canvas->translate(200, 20);
canvas->rotate(30);
paint.setAntiAlias(true);
- paint.setTypeface(SkTypeface::CreateFromName("Times Roman", SkTypeface::kNormal))->safeUnref();
-
+ SkSafeUnref(paint.setTypeface(SkTypeface::CreateFromName("Times Roman", SkTypeface::kNormal)));
+
// const char* text = "abcdefghijklmnopqrstuvwxyz";
const char* text = "HnHnHnHnHnHnHnHnH";
size_t textLen = strlen(text);
@@ -99,7 +99,7 @@
r.set(0, 0, x, y*20);
canvas->drawRect(r, p);
}
-
+
int index = 0;
for (int ps = 9; ps <= 24; ps++) {
textLen = strlen(text);
@@ -109,7 +109,7 @@
index += 1;
}
}
-
+
private:
typedef SkView INHERITED;
};
diff --git a/samplecode/SampleMovie.cpp b/samplecode/SampleMovie.cpp
index ed1a844..af34198 100644
--- a/samplecode/SampleMovie.cpp
+++ b/samplecode/SampleMovie.cpp
@@ -11,9 +11,9 @@
AnimGifView() {
fMovie = SkMovie::DecodeFile("/skimages/dollarblk.gif");
}
-
+
virtual ~AnimGifView() {
- fMovie->safeUnref();
+ SkSafeUnref(fMovie);
}
protected:
@@ -25,14 +25,14 @@
}
return this->INHERITED::onQuery(evt);
}
-
+
void drawBG(SkCanvas* canvas) {
canvas->drawColor(0xFFDDDDDD);
}
-
+
virtual void onDraw(SkCanvas* canvas) {
this->drawBG(canvas);
-
+
if (fMovie) {
if (fMovie->duration()) {
fMovie->setTime(SkTime::GetMSecs() % fMovie->duration());
@@ -44,7 +44,7 @@
this->inval(NULL);
}
}
-
+
private:
SkRect fClip;
SkIPoint* fPoints;
diff --git a/samplecode/SamplePatch.cpp b/samplecode/SamplePatch.cpp
index fb70dba..4203391 100644
--- a/samplecode/SamplePatch.cpp
+++ b/samplecode/SamplePatch.cpp
@@ -23,17 +23,17 @@
static void drawtriangle(SkCanvas* canvas, const SkPaint& paint,
const SkPoint pts[3]) {
SkPath path;
-
+
path.moveTo(pts[0]);
path.lineTo(pts[1]);
path.lineTo(pts[2]);
-
+
canvas->drawPath(path, paint);
}
static SkShader* make_shader0(SkIPoint* size) {
SkBitmap bm;
-
+
// SkImageDecoder::DecodeFile("/skimages/progressivejpg.jpg", &bm);
SkImageDecoder::DecodeFile("/skimages/logo.png", &bm);
size->set(bm.width(), bm.height());
@@ -54,7 +54,7 @@
public:
Patch() { sk_bzero(fPts, sizeof(fPts)); }
~Patch() {}
-
+
void setPatch(const SkPoint pts[12]) {
memcpy(fPts, pts, 12 * sizeof(SkPoint));
fPts[12] = pts[0]; // the last shall be first
@@ -63,7 +63,7 @@
void draw(SkCanvas*, const SkPaint&, int segsU, int segsV,
bool doTextures, bool doColors);
-
+
private:
SkPoint fPts[13];
int fW, fH;
@@ -89,12 +89,12 @@
SkScalar u = SkIntToScalar(iu) / nu;
SkScalar v = SkIntToScalar(iv) / nv;
-
+
SkScalar uv = SkScalarMul(u, v);
SkScalar Uv = SkScalarMul(SK_Scalar1 - u, v);
SkScalar uV = SkScalarMul(u, SK_Scalar1 - v);
SkScalar UV = SkScalarMul(SK_Scalar1 - u, SK_Scalar1 - v);
-
+
SkScalar x0 = SkScalarMul(UV, edge[TL].fX) + SkScalarMul(uV, edge[TR].fX) +
SkScalarMul(Uv, edge[BL].fX) + SkScalarMul(uv, edge[BR].fX);
SkScalar y0 = SkScalarMul(UV, edge[TL].fY) + SkScalarMul(uV, edge[TR].fY) +
@@ -123,7 +123,7 @@
static SkColor make_color(SkScalar s, SkScalar t) {
int cs = ScalarTo255(s);
- int ct = ScalarTo255(t);
+ int ct = ScalarTo255(t);
return SkColorSetARGB(0xFF, cs, 0, 0) + SkColorSetARGB(0, 0, ct, 0);
}
@@ -139,22 +139,22 @@
SkPoint* edge1 = edge0 + nu;
SkPoint* edge2 = edge1 + nv;
SkPoint* edge3 = edge2 + nu;
-
+
// evaluate the edge points
eval_patch_edge(fPts + 0, edge0, nu);
eval_patch_edge(fPts + 3, edge1, nv);
eval_patch_edge(fPts + 6, edge2, nu);
eval_patch_edge(fPts + 9, edge3, nv);
edge3[nv] = edge0[0]; // the last shall be first
-
+
for (i = 0; i < npts; i++) {
// canvas->drawLine(edge0[i].fX, edge0[i].fY, edge0[i+1].fX, edge0[i+1].fY, paint);
}
-
+
int row, vertCount = (nu + 1) * (nv + 1);
SkAutoTMalloc<SkPoint> vertStorage(vertCount);
SkPoint* verts = vertStorage.get();
-
+
// first row
memcpy(verts, edge0, (nu + 1) * sizeof(SkPoint));
// rows
@@ -172,9 +172,9 @@
for (i = 0; i <= nu; i++) {
last[i] = edge2[nu - i];
}
-
+
// canvas->drawPoints(verts, vertCount, paint);
-
+
int stripCount = (nu + 1) * 2;
SkAutoTMalloc<SkPoint> stripStorage(stripCount * 2);
SkAutoTMalloc<SkColor> colorStorage(stripCount);
@@ -226,8 +226,8 @@
SkShader* fShader1;
SkIPoint fSize0, fSize1;
SkPoint fPts[12];
-
-public:
+
+public:
PatchView() {
fShader0 = make_shader0(&fSize0);
fSize1 = fSize0;
@@ -251,12 +251,12 @@
fPts[10].set(S*0, T*3);
fPts[11].set(S*0, T*2);
}
-
+
virtual ~PatchView() {
- fShader0->safeUnref();
- fShader1->safeUnref();
+ SkSafeUnref(fShader0);
+ SkSafeUnref(fShader1);
}
-
+
protected:
// overrides from SkEventSink
virtual bool onQuery(SkEvent* evt) {
@@ -268,22 +268,22 @@
}
return this->INHERITED::onQuery(evt);
}
-
+
void drawBG(SkCanvas* canvas) {
canvas->drawColor(SK_ColorGRAY);
}
-
+
virtual void onDraw(SkCanvas* canvas) {
this->drawBG(canvas);
-
+
SkPaint paint;
paint.setDither(true);
paint.setFilterBitmap(true);
-
+
canvas->translate(SkIntToScalar(20), 0);
Patch patch;
-
+
paint.setShader(fShader0);
if (fSize0.fX == 0) {
fSize0.fX = 1;
@@ -292,33 +292,33 @@
fSize0.fY = 1;
}
patch.setBounds(fSize0.fX, fSize0.fY);
-
- patch.setPatch(fPts);
+
+ patch.setPatch(fPts);
drawpatches(canvas, paint, 10, 10, &patch);
-
+
paint.setShader(NULL);
paint.setAntiAlias(true);
paint.setStrokeWidth(SkIntToScalar(5));
canvas->drawPoints(SkCanvas::kPoints_PointMode, SK_ARRAY_COUNT(fPts), fPts, paint);
-
+
canvas->translate(0, SkIntToScalar(300));
-
+
paint.setAntiAlias(false);
paint.setShader(fShader1);
patch.setBounds(fSize1.fX, fSize1.fY);
drawpatches(canvas, paint, 10, 10, &patch);
}
-
+
class PtClick : public Click {
public:
int fIndex;
PtClick(SkView* view, int index) : Click(view), fIndex(index) {}
};
-
+
static bool hittest(const SkPoint& pt, SkScalar x, SkScalar y) {
return SkPoint::Length(pt.fX - x, pt.fY - y) < SkIntToScalar(5);
}
-
+
virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) {
for (int i = 0; i < SK_ARRAY_COUNT(fPts); i++) {
if (hittest(fPts[i], x, y)) {
@@ -327,13 +327,13 @@
}
return this->INHERITED::onFindClickHandler(x, y);
}
-
+
virtual bool onClick(Click* click) {
fPts[((PtClick*)click)->fIndex].set(click->fCurr.fX, click->fCurr.fY);
this->inval(NULL);
return true;
}
-
+
private:
typedef SkView INHERITED;
};
diff --git a/samplecode/SampleShaders.cpp b/samplecode/SampleShaders.cpp
index 115f9f5..86c8b17 100644
--- a/samplecode/SampleShaders.cpp
+++ b/samplecode/SampleShaders.cpp
@@ -36,7 +36,7 @@
shaderA->unref();
shaderB->unref();
mode->unref();
-
+
return shader;
}
@@ -51,19 +51,19 @@
SkPoint pts[2];
SkColor colors[2];
-
+
pts[0].set(0, 0);
pts[1].set(SkIntToScalar(100), 0);
colors[0] = SK_ColorRED;
colors[1] = SK_ColorBLUE;
SkShader* shaderA = SkGradientShader::CreateLinear(pts, colors, NULL, 2, SkShader::kClamp_TileMode);
-
+
pts[0].set(0, 0);
pts[1].set(0, SkIntToScalar(100));
colors[0] = SK_ColorBLACK;
colors[1] = SkColorSetARGB(0x80, 0, 0, 0);
SkShader* shaderB = SkGradientShader::CreateLinear(pts, colors, NULL, 2, SkShader::kClamp_TileMode);
-
+
SkXfermode* mode = SkXfermode::Create(SkXfermode::kDstIn_Mode);
fShader = new SkComposeShader(shaderA, shaderB, mode);
@@ -73,9 +73,9 @@
}
virtual ~ShaderView()
{
- fShader->safeUnref();
+ SkSafeUnref(fShader);
}
-
+
protected:
// overrides from SkEventSink
virtual bool onQuery(SkEvent* evt) {
@@ -85,21 +85,21 @@
}
return this->INHERITED::onQuery(evt);
}
-
+
void drawBG(SkCanvas* canvas)
{
// canvas->drawColor(0xFFDDDDDD);
canvas->drawColor(SK_ColorWHITE);
}
-
+
virtual void onDraw(SkCanvas* canvas)
{
this->drawBG(canvas);
-
+
canvas->drawBitmap(fBitmap, 0, 0);
-
+
canvas->translate(SkIntToScalar(20), SkIntToScalar(120));
-
+
SkPaint paint;
SkRect r;
@@ -120,22 +120,22 @@
canvas->drawRect(r, paint);
paint.setShader(make_bitmapfade(fBitmap))->unref();
canvas->drawRect(r, paint);
-
+
paint.setShader(new SkTransparentShader)->unref();
canvas->drawRect(r, paint);
}
-
- virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y)
+
+ virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y)
{
this->inval(NULL);
return this->INHERITED::onFindClickHandler(x, y);
}
-
- virtual bool onClick(Click* click)
+
+ virtual bool onClick(Click* click)
{
return this->INHERITED::onClick(click);
}
-
+
private:
typedef SkView INHERITED;
};
diff --git a/samplecode/SampleText.cpp b/samplecode/SampleText.cpp
index abd88be..b1bb6cb 100644
--- a/samplecode/SampleText.cpp
+++ b/samplecode/SampleText.cpp
@@ -63,7 +63,7 @@
{
int c = srcRows[1][1];
float f = c / 255.f;
-
+
if (c >= 0)
{
f = sqrtf(f);
@@ -96,7 +96,7 @@
SkTypeface* t1 = SkTypeface::CreateFromName(NULL, SkTypeface::kNormal);
SkTypeface* t2 = SkTypeface::CreateFromName("arial", SkTypeface::kNormal);
SkTypeface* t3 = SkTypeface::CreateFromName("helvetica", SkTypeface::kItalic);
-
+
SkASSERT(t0 == t1);
SkASSERT(t0 == t2);
SkASSERT(t0 == t3);
@@ -109,7 +109,7 @@
const char* text = "sdfkljAKLDFJKEWkldfjlk#$%&sdfs.dsj";
size_t length = strlen(text);
SkScalar width = paint.measureText(text, length);
-
+
SkScalar mm = 0;
SkScalar nn = 0;
for (SkScalar w = 0; w <= width; w += SK_Scalar1)
@@ -117,10 +117,10 @@
SkScalar m;
size_t n = paint.breakText(text, length, w, &m,
SkPaint::kBackward_TextBufferDirection);
-
+
SkASSERT(n <= length);
SkASSERT(m <= width);
-
+
if (n == 0)
SkASSERT(m == 0);
else
@@ -152,7 +152,7 @@
virtual void xfer16(uint16_t dst[], const SkPMColor src[], int count, const SkAlpha aa[]);
typedef SkFlattenable* (*Factory)(SkFlattenableReadBuffer&);
-
+
// overrides for SkFlattenable
virtual Factory getFactory() { return Create; }
virtual void flatten(SkFlattenableWriteBuffer& b)
@@ -160,7 +160,7 @@
// this->INHERITED::flatten(b); How can we know if this is legal????
b.write32(SkScalarToFixed(fExp));
}
-
+
private:
SkScalar fExp; // user's value
uint8_t fTable[256]; // cache
@@ -175,7 +175,7 @@
{
return SkNEW_ARGS(SkPowerMode, (b));
}
-
+
typedef SkXfermode INHERITED;
};
@@ -183,7 +183,7 @@
{
fExp = e;
float ee = SkScalarToFloat(e);
-
+
printf("------ %g\n", ee);
for (int i = 0; i < 256; i++)
{
@@ -231,7 +231,7 @@
static int count_char_points(const SkPaint& paint, char c)
{
SkPath path;
-
+
paint.getTextPath(&c, 1, 0, 0, &path);
return path.getPoints(NULL, 0);
}
@@ -264,7 +264,7 @@
{
SkRect16 r, bounds;
int i;
-
+
rgn->setEmpty();
bounds.setEmpty();
@@ -281,7 +281,7 @@
for (i = 0; i < SK_ARRAY_COUNT(badrects); i++)
{
- r.set(badrects[i].x, badrects[i].y, badrects[i].x + badrects[i].width, badrects[i].y + badrects[i].height);
+ r.set(badrects[i].x, badrects[i].y, badrects[i].x + badrects[i].width, badrects[i].y + badrects[i].height);
SkASSERT(rgn->contains(r));
}
}
@@ -291,7 +291,7 @@
{
SkRect r;
SkRegion::Iterator iter(rgn);
-
+
for (; !iter.done(); iter.next())
{
r.set(iter.rect());
@@ -304,11 +304,11 @@
SkScalar clickX)
{
SkPaint linePaint;
-
+
linePaint.setAntiAlias(true);
-
+
SkScalar measured;
-
+
if (paint.breakText(text, length, clickX - x, &measured, SkPaint::kForward_TextBufferDirection))
{
linePaint.setColor(SK_ColorRED);
@@ -331,20 +331,20 @@
SkIntToScalar(5), SkIntToScalar(3),
SkIntToScalar(2), SkIntToScalar(3)
};
-
+
static const SkPoint src[] = {
SkIntToScalar(0), SkIntToScalar(0),
SkIntToScalar(1), SkIntToScalar(0),
SkIntToScalar(1), SkIntToScalar(1),
SkIntToScalar(0), SkIntToScalar(1)
};
-
+
SkMatrix matrix;
-
+
if (matrix.setPolyToPoly(src, dst, 4))
{
SkPoint pt = { SK_Scalar1/2, SK_Scalar1/2 };
- matrix.mapPoints(&pt, 1);
+ matrix.mapPoints(&pt, 1);
printf("---- x = %g y = %g\n", SkScalarToFloat(pt.fX), SkScalarToFloat(pt.fY));
}
else
@@ -424,25 +424,25 @@
printf("--- ave reduction = %g%%\n", 100. * (gOld - gNew) / gOld);
}
-
+
if (true)
{
SkPoint pts[] = { SkIntToScalar(20), 0, SkIntToScalar(256+20), 0 };
SkColor colors[] = { SkColorSetARGB(0, 255, 255, 255), SkColorSetARGB(255, 255, 255, 255) };
fGradient = SkGradientShader::CreateLinear(pts, colors, NULL, 2, SkShader::kClamp_TileMode);
}
-
+
fClickX = 0;
- test_breakText();
+ test_breakText();
test_typefaceCache();
// test_poly();
}
-
+
virtual ~TextSpeedView()
{
fGradient->unref();
- fMF->safeUnref();
+ SkSafeUnref(fMF);
}
protected:
@@ -456,36 +456,36 @@
}
return this->INHERITED::onQuery(evt);
}
-
+
void drawBG(SkCanvas* canvas)
{
// canvas->drawColor(0xFFDDDDDD);
canvas->drawColor(SK_ColorWHITE);
// canvas->drawColor(SK_ColorBLACK);
}
-
+
static void make_textstrip(SkBitmap* bm)
{
bm->setConfig(SkBitmap::kRGB_565_Config, 200, 18);
bm->allocPixels();
bm->eraseColor(SK_ColorWHITE);
-
+
SkCanvas canvas(*bm);
SkPaint paint;
const char* s = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit";
-
+
paint.setFlags(paint.getFlags() | SkPaint::kAntiAlias_Flag
| SkPaint::kDevKernText_Flag);
paint.setTextSize(SkIntToScalar(14));
canvas.drawText(s, strlen(s), SkIntToScalar(8), SkIntToScalar(14), paint);
}
-
+
static void fill_pts(SkPoint pts[], size_t n, SkRandom* rand)
{
for (size_t i = 0; i < n; i++)
pts[i].set(rand->nextUScalar1() * 640, rand->nextUScalar1() * 480);
}
-
+
virtual void onDraw(SkCanvas* canvas)
{
inval(NULL);
@@ -494,22 +494,22 @@
canvas->translate(SkIntToScalar(480), 0);
canvas->rotate(SkIntToScalar(90));
}
-
+
this->drawBG(canvas);
-
+
if (false)
{
SkPaint p;
-
+
p.setAntiAlias(true);
p.setSubpixelText(true);
// p.setLinearText(true);
-
+
SkScalar size = SkIntToScalar(6);
SkMSec dur = 0;
const int LOOP = 16;
const int TIMES = 10;
-
+
for (int times = 0; times < TIMES; times++)
{
SkMSec now = SkTime::GetMSecs();
@@ -522,12 +522,12 @@
dur += SkTime::GetMSecs() - now;
SkGraphics::SetFontCacheUsed(0);
}
-
+
printf("----- duration = %g\n", dur * 1.0 / TIMES);
this->inval(NULL);
return;
}
-
+
if (false)
{
SkPaint p;
@@ -552,7 +552,7 @@
}
}
}
-
+
if (false)
{
SkPaint p;
@@ -569,11 +569,11 @@
#endif
return;
}
-
+
if (false)
{
SkBitmap bm;
-
+
make_textstrip(&bm);
canvas->translate(0, SkIntToScalar(50));
for (int i = 0; i < 10; i++)
@@ -582,16 +582,16 @@
SkPowerMode mode(SkFloatToScalar(1 / gamma));
SkPaint p;
p.setXfermode(&mode);
-
+
canvas->drawBitmap(bm, 0, SkIntToScalar(i) * bm.height(), &p);
}
return;
}
-
+
if (false)
{
SkPaint paint;
-
+
paint.setAntiAlias(true);
paint.setDevKernText(true);
SkMSec now = SkTime::GetMSecs();
@@ -609,9 +609,9 @@
SkRegion rgn;
SkPath path;
SkPaint paint;
-
+
// make_badrgn(&rgn, -2);
-
+
if (false)
{
paint.setColor(SK_ColorBLUE);
@@ -619,7 +619,7 @@
}
paint.setColor(SK_ColorRED);
draw_rgn(rgn, canvas, paint);
-
+
rgn.getBoundaryPath(&path);
paint.setARGB(0x80, 0, 0, 0xFF);
canvas->drawPath(path, paint);
@@ -630,13 +630,13 @@
{
SkRect r = { SkIntToScalar(50), SkIntToScalar(50), SkIntToScalar(300), SkIntToScalar(300) };
SkPaint p;
-
+
p.setStyle(SkPaint::kStroke_Style);
p.setAlpha(0x80);
p.setStrokeWidth(SkIntToScalar(20));
canvas->drawRect(r, p);
}
-
+
if (false)
{
SkPaint p;
@@ -648,7 +648,7 @@
canvas->drawRect(r, p);
return;
}
-
+
if (false)
{
Sk64 aa, bb;
@@ -661,19 +661,19 @@
b = a >> 16;
// SkFixed c = aa.addGetFixed(bb);
-
+
printf("%d %d\n", (int)a, a >> 32);
-
+
SkBitmap bm;
SkPaint paint;
SkScalar scale = SkFloatToScalar(0.5625f);
SkScalar x = SkIntToScalar(100);
SkScalar y = SkIntToScalar(100);
-
+
//paint.setFilterType(SkPaint::kBilinear_FilterType);
-
+
SkImageDecoder::DecodeFile("/app_web_browser.png", &bm);
-
+
// canvas->drawBitmap(bm, x, y, paint);
x += SkIntToScalar(100);
canvas->save();
@@ -691,7 +691,7 @@
canvas->restore();
return;
}
-
+
SkAutoCanvasRestore restore(canvas, false);
{
SkRect r;
@@ -704,7 +704,7 @@
int index = fHints % SK_ARRAY_COUNT(gHints);
index = 1;
// const char* style = gHints[index].fName;
-
+
// canvas->translate(0, SkIntToScalar(50));
// canvas->drawText(style, strlen(style), SkIntToScalar(20), SkIntToScalar(20), paint);
@@ -712,20 +712,20 @@
SkSafeUnref(paint.setTypeface(SkTypeface::CreateFromFile("/skimages/samplefont.ttf")));
paint.setAntiAlias(true);
paint.setFlags(paint.getFlags() | gHints[index].fFlags);
-
+
SkMSec now = 0;
if (REPEAT_COUNT > 1)
now = SkTime::GetMSecs();
SkRect clip;
clip.set(SkIntToScalar(25), SkIntToScalar(34), SkIntToScalar(88), SkIntToScalar(155));
-
+
if (0) {
canvas->clipRect(clip);
}
if (0) {
- SkPath clipPath;
+ SkPath clipPath;
clipPath.addOval(clip);
canvas->clipPath(clipPath);
}
@@ -736,7 +736,7 @@
#ifdef TEST_CLICKX
{
SkPaint p;
-
+
p.setColor(SK_ColorGREEN);
p.setAntiAlias(true);
canvas->drawLine(fClickX, 0, fClickX, SkIntToScalar(1000), p);
@@ -758,26 +758,26 @@
// SkGraphics::SetFontCacheUsed(0);
}
}
-
+
if (REPEAT_COUNT > 1)
{
printf("--------- FPS = %g\n", REPEAT_COUNT * 1000. / (SkTime::GetMSecs() - now));
this->inval(NULL);
}
}
-
- virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y)
+
+ virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y)
{
fClickX = x;
this->inval(NULL);
return this->INHERITED::onFindClickHandler(x, y);
}
-
- virtual bool onClick(Click* click)
+
+ virtual bool onClick(Click* click)
{
return this->INHERITED::onClick(click);
}
-
+
private:
int fHints;
SkScalar fClickX;
diff --git a/samplecode/SampleTextEffects.cpp b/samplecode/SampleTextEffects.cpp
index b71f5b4..77a3bd7 100644
--- a/samplecode/SampleTextEffects.cpp
+++ b/samplecode/SampleTextEffects.cpp
@@ -16,9 +16,9 @@
unsigned r = SkGetPackedR32(c);
unsigned g = SkGetPackedG32(c);
unsigned b = SkGetPackedB32(c);
-
+
unsigned x = r * 5 + g * 7 + b * 4 >> 4;
-
+
return SkPackARGB32(0, x, x, x) | (c & (SK_A32_MASK << SK_A32_SHIFT));
}
@@ -44,7 +44,7 @@
for (int i = 0; i < count; i++)
result[i] = src[i] & mask;
}
-
+
private:
SkPMColor fMask;
};
@@ -82,7 +82,7 @@
p.setStrokeWidth(SK_Scalar1*2);
rast->addLayer(p);
}
-
+
static void r2(SkLayerRasterizer* rast, SkPaint& p)
{
p.setStyle(SkPaint::kStrokeAndFill_Style);
@@ -134,7 +134,7 @@
static void r6(SkLayerRasterizer* rast, SkPaint& p)
{
rast->addLayer(p);
-
+
p.setAntiAlias(false);
SkLayerRasterizer* rast2 = new SkLayerRasterizer;
r5(rast2, p);
@@ -153,7 +153,7 @@
virtual void flatten(SkFlattenableWriteBuffer& buffer)
{
this->INHERITED::flatten(buffer);
-
+
buffer.writeScalar(fRadius);
}
virtual Factory getFactory() { return CreateProc; }
@@ -163,7 +163,7 @@
{
dst->addCircle(loc.fX, loc.fY, fRadius);
}
-
+
Dot2DPathEffect(SkFlattenableReadBuffer& buffer) : Sk2DPathEffect(buffer)
{
fRadius = buffer.readScalar();
@@ -191,7 +191,7 @@
static void r8(SkLayerRasterizer* rast, SkPaint& p)
{
rast->addLayer(p);
-
+
SkMatrix lattice;
lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0);
lattice.postSkew(SK_Scalar1/3, 0, 0, 0);
@@ -220,7 +220,7 @@
}
return false;
}
-
+
virtual Factory getFactory() { return CreateProc; }
virtual void flatten(SkFlattenableWriteBuffer& buffer)
{
@@ -239,17 +239,17 @@
src[1].set(SkIntToScalar(u+ucount) + SK_ScalarHalf,
SkIntToScalar(v) + SK_ScalarHalf);
this->getMatrix().mapPoints(dstP, src, 2);
-
+
dst->moveTo(dstP[0]);
dst->lineTo(dstP[1]);
}
}
-
+
Line2DPathEffect(SkFlattenableReadBuffer& buffer) : Sk2DPathEffect(buffer)
{
fWidth = buffer.readScalar();
}
-
+
private:
SkScalar fWidth;
@@ -264,7 +264,7 @@
static void r9(SkLayerRasterizer* rast, SkPaint& p)
{
rast->addLayer(p);
-
+
SkMatrix lattice;
lattice.setScale(SK_Scalar1, SK_Scalar1*6, 0, 0);
lattice.postRotate(SkIntToScalar(30), 0, 0);
@@ -302,7 +302,7 @@
unsigned dr = SkAbs32(SkPacked16ToR32(a) - SkPacked16ToR32(b));
unsigned dg = SkAbs32(SkPacked16ToG32(a) - SkPacked16ToG32(b));
unsigned db = SkAbs32(SkPacked16ToB32(a) - SkPacked16ToB32(b));
-
+
return SkMax32(dr, SkMax32(dg, db));
}
@@ -317,7 +317,7 @@
}
static void apply_shader(SkPaint* paint, int index)
-{
+{
raster_proc proc = gRastProcs[index];
if (proc)
{
@@ -331,7 +331,7 @@
#if 0
SkScalar dir[] = { SK_Scalar1, SK_Scalar1, SK_Scalar1 };
- paint->setMaskFilter(SkBlurMaskFilter::CreateEmboss(dir, SK_Scalar1/4, SkIntToScalar(4), SkIntToScalar(3)))->unref();
+ paint->setMaskFilter(SkBlurMaskFilter::CreateEmboss(dir, SK_Scalar1/4, SkIntToScalar(4), SkIntToScalar(3)))->unref();
#endif
paint->setColor(SK_ColorBLUE);
}
@@ -345,10 +345,10 @@
{
fFace = SkTypeface::CreateFromFile("/Users/reed/Downloads/p052024l.pfb");
}
-
+
virtual ~TextEffectView()
{
- fFace->safeUnref();
+ SkSafeUnref(fFace);
}
protected:
@@ -362,22 +362,22 @@
}
return this->INHERITED::onQuery(evt);
}
-
+
void drawBG(SkCanvas* canvas)
{
// canvas->drawColor(0xFFDDDDDD);
canvas->drawColor(SK_ColorWHITE);
}
-
+
virtual void onDraw(SkCanvas* canvas)
{
this->drawBG(canvas);
-
+
canvas->save();
// canvas->scale(SK_Scalar1*2, SK_Scalar1*2, 0, 0);
SkPaint paint;
-
+
paint.setAntiAlias(true);
paint.setTextSize(SkIntToScalar(56));
paint.setTypeface(SkTypeface::CreateFromName("sans-serif",
@@ -389,11 +389,11 @@
SkString str("TextEffects");
paint.setTypeface(fFace);
-
+
for (int i = 0; i < SK_ARRAY_COUNT(gRastProcs); i++)
{
apply_shader(&paint, i);
-
+
// paint.setMaskFilter(NULL);
// paint.setColor(SK_ColorBLACK);
@@ -403,7 +403,7 @@
gLightingColors[index].fMul,
gLightingColors[index].fAdd))->unref();
#endif
-
+
canvas->drawText(str.c_str(), str.size(), x, y, paint);
if (0)
@@ -417,7 +417,7 @@
}
canvas->restore();
-
+
if (0)
{
SkPoint pts[] = { 0, 0, 0, SkIntToScalar(150) };
@@ -428,7 +428,7 @@
paint.setShader(s);
canvas->drawRectCoords(0, 0, SkIntToScalar(120), SkIntToScalar(150), paint);
}
-
+
if (0)
{
SkAvoidXfermode mode(SK_ColorWHITE, 0xFF,
@@ -442,20 +442,20 @@
canvas->drawOval(r, paint);
}
}
-
- virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y)
+
+ virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y)
{
gRastIndex = (gRastIndex + 1) % SK_ARRAY_COUNT(gRastProcs);
this->inval(NULL);
return this->INHERITED::onFindClickHandler(x, y);
}
-
- virtual bool onClick(Click* click)
+
+ virtual bool onClick(Click* click)
{
return this->INHERITED::onClick(click);
}
-
+
private:
typedef SkView INHERITED;
};
diff --git a/samplecode/SampleTypeface.cpp b/samplecode/SampleTypeface.cpp
index fa2f546..96082af 100644
--- a/samplecode/SampleTypeface.cpp
+++ b/samplecode/SampleTypeface.cpp
@@ -70,10 +70,10 @@
gFaces[i].fStyle);
}
}
-
+
virtual ~TypefaceView() {
for (int i = 0; i < gFaceCount; i++) {
- fFaces[i]->safeUnref();
+ SkSafeUnref(fFaces[i]);
}
}
@@ -86,11 +86,11 @@
}
return this->INHERITED::onQuery(evt);
}
-
+
void drawBG(SkCanvas* canvas) {
canvas->drawColor(0xFFDDDDDD);
}
-
+
virtual void onDraw(SkCanvas* canvas) {
this->drawBG(canvas);
@@ -105,17 +105,17 @@
const char* text = "Hamburgefons";
const size_t textLen = strlen(text);
-
+
SkScalar x = SkIntToScalar(10);
SkScalar dy = paint.getFontMetrics(NULL);
SkScalar y = dy;
-
+
for (int i = 0; i < gFaceCount; i++) {
paint.setTypeface(fFaces[i]);
canvas->drawText(text, textLen, x, y, paint);
y += dy;
}
-
+
SkRect r;
if (false) {
r.set(10, 10, 100, 100);
@@ -132,7 +132,7 @@
paint.setStyle(SkPaint::kFill_Style);
canvas->drawRect(r, paint);
}
-
+
if (false) {
SkScalar rad = 90;
SkScalar angle = 210;
@@ -142,12 +142,12 @@
SkPath path;
path.arcTo(r, angle, -(angle + 90), true);
path.close();
-
+
paint.setColor(SK_ColorRED);
canvas->drawRect(path.getBounds(), paint);
paint.setColor(SK_ColorBLUE);
canvas->drawPath(path, paint);
-
+
paint.setColor(SK_ColorGREEN);
SkPoint pts[100];
int count = path.getPoints(pts, 100);
@@ -155,7 +155,7 @@
canvas->drawPoints(SkCanvas::kPoints_PointMode, count, pts, paint);
}
}
-
+
private:
typedef SkView INHERITED;
};
diff --git a/samplecode/SampleVertices.cpp b/samplecode/SampleVertices.cpp
index 96fa0da..7f5aa96 100644
--- a/samplecode/SampleVertices.cpp
+++ b/samplecode/SampleVertices.cpp
@@ -21,7 +21,7 @@
static SkShader* make_shader0(SkIPoint* size) {
SkBitmap bm;
-
+
SkImageDecoder::DecodeFile("/skimages/logo.png", &bm);
size->set(bm.width(), bm.height());
return SkShader::CreateBitmapShader(bm, SkShader::kClamp_TileMode,
@@ -39,25 +39,25 @@
SkShader* fShader0;
SkShader* fShader1;
-public:
+public:
VerticesView() {
SkIPoint size;
-
+
fShader0 = make_shader0(&size);
fShader1 = make_shader1(size);
make_strip(&fRecs[0], size.fX, size.fY);
make_fan(&fRecs[1], size.fX, size.fY);
make_tris(&fRecs[2]);
-
+
fScale = SK_Scalar1;
}
-
+
virtual ~VerticesView() {
- fShader0->safeUnref();
- fShader1->safeUnref();
+ SkSafeUnref(fShader0);
+ SkSafeUnref(fShader1);
}
-
+
protected:
// overrides from SkEventSink
virtual bool onQuery(SkEvent* evt) {
@@ -69,65 +69,65 @@
}
return this->INHERITED::onQuery(evt);
}
-
+
void drawBG(SkCanvas* canvas) {
canvas->drawColor(SK_ColorGRAY);
}
-
+
SkScalar fScale;
-
+
virtual void onDraw(SkCanvas* canvas) {
this->drawBG(canvas);
-
+
SkPaint paint;
paint.setDither(true);
paint.setFilterBitmap(true);
-
+
for (int i = 0; i < SK_ARRAY_COUNT(fRecs); i++) {
canvas->save();
-
+
paint.setShader(NULL);
canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
fRecs[i].fVerts, fRecs[i].fTexs,
NULL, NULL, NULL, 0, paint);
-
+
canvas->translate(SkIntToScalar(250), 0);
-
+
paint.setShader(fShader0);
canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
fRecs[i].fVerts, fRecs[i].fTexs,
NULL, NULL, NULL, 0, paint);
canvas->translate(SkIntToScalar(250), 0);
-
+
paint.setShader(fShader1);
canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount,
fRecs[i].fVerts, fRecs[i].fTexs,
NULL, NULL, NULL, 0, paint);
canvas->restore();
-
+
canvas->translate(0, SkIntToScalar(250));
}
}
-
+
virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) {
return new Click(this);
}
-
+
virtual bool onClick(Click* click) {
// fCurrX = click->fICurr.fX;
// fCurrY = click->fICurr.fY;
this->inval(NULL);
return true;
}
-
+
private:
struct Rec {
SkCanvas::VertexMode fMode;
int fCount;
SkPoint* fVerts;
SkPoint* fTexs;
-
+
Rec() : fCount(0), fVerts(NULL), fTexs(NULL) {}
~Rec() { delete[] fVerts; delete[] fTexs; }
};
@@ -135,11 +135,11 @@
void make_tris(Rec* rec) {
int n = 10;
SkRandom rand;
-
+
rec->fMode = SkCanvas::kTriangles_VertexMode;
rec->fCount = n * 3;
rec->fVerts = new SkPoint[rec->fCount];
-
+
for (int i = 0; i < n; i++) {
SkPoint* v = &rec->fVerts[i*3];
for (int j = 0; j < 3; j++) {
@@ -147,17 +147,17 @@
}
}
}
-
+
void make_fan(Rec* rec, int texWidth, int texHeight) {
const SkScalar tx = SkIntToScalar(texWidth);
const SkScalar ty = SkIntToScalar(texHeight);
const int n = 24;
-
+
rec->fMode = SkCanvas::kTriangleFan_VertexMode;
rec->fCount = n + 2;
rec->fVerts = new SkPoint[rec->fCount];
rec->fTexs = new SkPoint[rec->fCount];
-
+
SkPoint* v = rec->fVerts;
SkPoint* t = rec->fTexs;
@@ -171,47 +171,47 @@
}
v[n+1] = v[1];
t[n+1].set(tx, ty);
-
+
SkMatrix m;
m.setScale(SkIntToScalar(100), SkIntToScalar(100));
m.postTranslate(SkIntToScalar(110), SkIntToScalar(110));
m.mapPoints(v, rec->fCount);
}
-
+
void make_strip(Rec* rec, int texWidth, int texHeight) {
const SkScalar tx = SkIntToScalar(texWidth);
const SkScalar ty = SkIntToScalar(texHeight);
const int n = 24;
-
+
rec->fMode = SkCanvas::kTriangleStrip_VertexMode;
rec->fCount = 2 * (n + 1);
rec->fVerts = new SkPoint[rec->fCount];
rec->fTexs = new SkPoint[rec->fCount];
-
+
SkPoint* v = rec->fVerts;
SkPoint* t = rec->fTexs;
-
+
for (int i = 0; i < n; i++) {
SkScalar cos;
SkScalar sin = SkScalarSinCos(SK_ScalarPI * 2 * i / n, &cos);
v[i*2 + 0].set(cos/2, sin/2);
v[i*2 + 1].set(cos, sin);
-
+
t[i*2 + 0].set(tx * i / n, ty);
t[i*2 + 1].set(tx * i / n, 0);
}
v[2*n + 0] = v[0];
v[2*n + 1] = v[1];
-
+
t[2*n + 0].set(tx, ty);
t[2*n + 1].set(tx, 0);
-
+
SkMatrix m;
m.setScale(SkIntToScalar(100), SkIntToScalar(100));
m.postTranslate(SkIntToScalar(110), SkIntToScalar(110));
m.mapPoints(v, rec->fCount);
}
-
+
Rec fRecs[3];
typedef SkView INHERITED;