aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar reed <reed@chromium.org>2015-04-10 20:39:19 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-04-10 20:39:19 -0700
commit054eef2b5ca84bf5b03e5ddba0c30055f5e474cc (patch)
treeecd07f4f7b2b44f2260d353b8ec9fca5ac0e27ac
parent94164944f88972e7fd555170ca94536a70db1515 (diff)
change hairline procs to take SkPoint by value, more efficient on SSE and NEON
-rw-r--r--src/core/SkDraw.cpp3
-rw-r--r--src/core/SkScan.h12
-rw-r--r--src/core/SkScan_Antihair.cpp3
-rw-r--r--src/core/SkScan_Hairline.cpp22
4 files changed, 14 insertions, 26 deletions
diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp
index c4c1bc5ddd..636eaa6f61 100644
--- a/src/core/SkDraw.cpp
+++ b/src/core/SkDraw.cpp
@@ -1876,8 +1876,7 @@ void SkDraw::drawPosText(const char text[], size_t byteLength,
///////////////////////////////////////////////////////////////////////////////
-typedef void (*HairProc)(const SkPoint&, const SkPoint&, const SkRasterClip&,
- SkBlitter*);
+typedef void (*HairProc)(SkPoint, SkPoint, const SkRasterClip&, SkBlitter*);
static HairProc ChooseHairProc(bool doAntiAlias) {
return doAntiAlias ? SkScan::AntiHairLine : SkScan::HairLine;
diff --git a/src/core/SkScan.h b/src/core/SkScan.h
index 46a81073ea..96c58c5f37 100644
--- a/src/core/SkScan.h
+++ b/src/core/SkScan.h
@@ -41,10 +41,8 @@ public:
static void AntiFrameRect(const SkRect&, const SkPoint& strokeSize,
const SkRasterClip&, SkBlitter*);
static void FillTriangle(const SkPoint pts[], const SkRasterClip&, SkBlitter*);
- static void HairLine(const SkPoint&, const SkPoint&, const SkRasterClip&,
- SkBlitter*);
- static void AntiHairLine(const SkPoint&, const SkPoint&, const SkRasterClip&,
- SkBlitter*);
+ static void HairLine(SkPoint, SkPoint, const SkRasterClip&, SkBlitter*);
+ static void AntiHairLine(SkPoint, SkPoint, const SkRasterClip&, SkBlitter*);
static void HairRect(const SkRect&, const SkRasterClip&, SkBlitter*);
static void AntiHairRect(const SkRect&, const SkRasterClip&, SkBlitter*);
static void HairPath(const SkPath&, const SkRasterClip&, SkBlitter*);
@@ -66,10 +64,8 @@ private:
static void AntiFrameRect(const SkRect&, const SkPoint& strokeSize,
const SkRegion*, SkBlitter*);
- static void HairLineRgn(const SkPoint&, const SkPoint&, const SkRegion*,
- SkBlitter*);
- static void AntiHairLineRgn(const SkPoint&, const SkPoint&, const SkRegion*,
- SkBlitter*);
+ static void HairLineRgn(SkPoint, SkPoint, const SkRegion*, SkBlitter*);
+ static void AntiHairLineRgn(SkPoint, SkPoint, const SkRegion*, SkBlitter*);
};
/** Assign an SkXRect from a SkIRect, by promoting the src rect's coordinates
diff --git a/src/core/SkScan_Antihair.cpp b/src/core/SkScan_Antihair.cpp
index 97bb6d2198..c48ad2c3f4 100644
--- a/src/core/SkScan_Antihair.cpp
+++ b/src/core/SkScan_Antihair.cpp
@@ -588,8 +588,7 @@ static void do_anti_hairline(SkFDot6 x0, SkFDot6 y0, SkFDot6 x1, SkFDot6 y1,
}
}
-void SkScan::AntiHairLineRgn(const SkPoint& pt0, const SkPoint& pt1,
- const SkRegion* clip, SkBlitter* blitter) {
+void SkScan::AntiHairLineRgn(SkPoint pt0, SkPoint pt1, const SkRegion* clip, SkBlitter* blitter) {
if (clip && clip->isEmpty()) {
return;
}
diff --git a/src/core/SkScan_Hairline.cpp b/src/core/SkScan_Hairline.cpp
index bd597b3d68..8cce57b8c9 100644
--- a/src/core/SkScan_Hairline.cpp
+++ b/src/core/SkScan_Hairline.cpp
@@ -40,8 +40,7 @@ static bool canConvertFDot6ToFixed(SkFDot6 x) {
}
#endif
-void SkScan::HairLineRgn(const SkPoint& pt0, const SkPoint& pt1,
- const SkRegion* clip, SkBlitter* blitter) {
+void SkScan::HairLineRgn(SkPoint pt0, SkPoint pt1, const SkRegion* clip, SkBlitter* blitter) {
SkBlitterClipper clipper;
SkRect r;
SkIRect clipR, ptsR;
@@ -210,8 +209,7 @@ static int compute_int_quad_dist(const SkPoint pts[3]) {
}
}
-typedef void (*LineProc)(const SkPoint&, const SkPoint&, const SkRegion*,
- SkBlitter*);
+typedef void (*LineProc)(SkPoint, SkPoint, const SkRegion*, SkBlitter*);
static void hairquad(const SkPoint pts[3], const SkRegion* clip,
SkBlitter* blitter, int level, LineProc lineproc) {
@@ -257,8 +255,8 @@ static int compute_quad_level(const SkPoint pts[3]) {
return level;
}
-static void hair_path(const SkPath& path, const SkRasterClip& rclip,
- SkBlitter* blitter, LineProc lineproc) {
+static void hair_path(const SkPath& path, const SkRasterClip& rclip, SkBlitter* blitter,
+ LineProc lineproc) {
if (path.isEmpty()) {
return;
}
@@ -321,13 +319,11 @@ static void hair_path(const SkPath& path, const SkRasterClip& rclip,
}
}
-void SkScan::HairPath(const SkPath& path, const SkRasterClip& clip,
- SkBlitter* blitter) {
+void SkScan::HairPath(const SkPath& path, const SkRasterClip& clip, SkBlitter* blitter) {
hair_path(path, clip, blitter, SkScan::HairLineRgn);
}
-void SkScan::AntiHairPath(const SkPath& path, const SkRasterClip& clip,
- SkBlitter* blitter) {
+void SkScan::AntiHairPath(const SkPath& path, const SkRasterClip& clip, SkBlitter* blitter) {
hair_path(path, clip, blitter, SkScan::AntiHairLineRgn);
}
@@ -368,8 +364,7 @@ void SkScan::FrameRect(const SkRect& r, const SkPoint& strokeSize,
SkScan::FillRect(tmp, clip, blitter);
}
-void SkScan::HairLine(const SkPoint& p0, const SkPoint& p1,
- const SkRasterClip& clip, SkBlitter* blitter) {
+void SkScan::HairLine(SkPoint p0, SkPoint p1, const SkRasterClip& clip, SkBlitter* blitter) {
if (clip.isBW()) {
HairLineRgn(p0, p1, &clip.bwRgn(), blitter);
} else {
@@ -389,8 +384,7 @@ void SkScan::HairLine(const SkPoint& p0, const SkPoint& p1,
}
}
-void SkScan::AntiHairLine(const SkPoint& p0, const SkPoint& p1,
- const SkRasterClip& clip, SkBlitter* blitter) {
+void SkScan::AntiHairLine(SkPoint p0, SkPoint p1, const SkRasterClip& clip, SkBlitter* blitter) {
if (clip.isBW()) {
AntiHairLineRgn(p0, p1, &clip.bwRgn(), blitter);
} else {