aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkStrokeRec.cpp
Commit message (Collapse)AuthorAge
* start removing uses of SkScalarMulGravatar Mike Reed2017-02-06
| | | | | | | | | BUG=skia:6197 Change-Id: Ic444c7ee4ca547f483dc8232dcacd6d4ba87d913 Reviewed-on: https://skia-review.googlesource.com/8041 Reviewed-by: Cary Clark <caryclark@google.com> Commit-Queue: Mike Reed <reed@google.com>
* Unify implementations of stroking radius calculationsnsGravatar bsalomon2016-04-29
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1928133002 Review-Url: https://codereview.chromium.org/1928133002
* Style bikeshed - remove extraneous whitespaceGravatar halcanary2016-03-29
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1842753002 Review URL: https://codereview.chromium.org/1842753002
* Pack and align SkStrokeRec to 4-byte boundary.Gravatar jvanverth2015-11-20
| | | | | | | | | | | The new key for the distance field path cache will contain an SkStrokeRec. This change guarantees that we don't have any hidden padding that has garbage values, thereby preventing apparently equal keys from hashing to two different values. This also has the nice effect of reducing the size of SkStrokeRec from 24 bytes to 16 bytes. Review URL: https://codereview.chromium.org/1465773003
* remove SK_LEGACY_STROKE_CURVESGravatar caryclark2015-05-22
| | | | | | | | | The change in Chrome has been landed so this guard is no longer needed. R=reed@google.com,fmalita@chromium.org BUG=102411 Review URL: https://codereview.chromium.org/1157623003
* Make GrStrokeInfo inherit from SkStrokeRecGravatar kkinnunen2015-05-18
| | | | | | | | | | | | | | | | | | | Make the code more readable by inheriting GrStrokeInfo from SkStrokeRec. This should avoid the long .getStrokeRec() and .getStrokeRecPtr(). These were a bit cumbersome especially in cases where an alias variable was created for these, and then the reader had to keep track to which StrokeInfo member the StrokeRec alias was pointing. Removes SkStrokeRec::SkStrokeRec(const SkStrokeRec&). It was memcpying. Try to play it safe wrt compiler using the possible padding of superclass for subclass members. Instead, let the compiler generate the copy constructor. Assignment operator was already compiler-generated, so at least in that way this is consistent. Renames GrStrokeInfo::applyDash to applyDashToPath for consistency with superclass applyToPath. Review URL: https://codereview.chromium.org/1128113008
* flip stroke to chrome compatible defineGravatar caryclark2015-02-24
| | | | Review URL: https://codereview.chromium.org/932723003
* This uses quad approximations of the outer and inner paths describing a ↵Gravatar caryclark2015-02-20
| | | | | | | | | | stroke. Cubics and conics' thick strokes are approximated with quads as well. The approximation uses a similar error term as the fill scan converter to determine the number of quads to use. This also updates SampleApp QuadStroker test with conics, ovals, and stroked text. Review URL: https://codereview.chromium.org/932113002
* optional res-scale parameter to getFillPathGravatar reed2015-02-12
| | | | | | | | BUG=skia: NOTREECHECKS=True TBR= Review URL: https://codereview.chromium.org/911053005
* Add color emoji fallback for nvpr textGravatar cdalton2014-12-01
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/759613005
* Draw more accurate thick-stroked Beziers (disabled)Gravatar caryclark2014-10-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Draw thick-stroked Beziers by computing the outset quadratic, measuring the error, and subdividing until the error is within a predetermined limit. To try this CL out, change src/core/SkStroke.h:18 to #define QUAD_STROKE_APPROXIMATION 1 or from the command line: CPPFLAGS="-D QUAD_STROKE_APPROXIMATION=1" ./gyp_skia Here's what's in this CL: bench/BezierBench.cpp : a microbench for examining where the time is going gm/beziers.cpp : random Beziers with various thicknesses gm/smallarc.cpp : a distillation of bug skia:2769 samplecode/SampleRotateCircles.cpp : controls added for error, limit, width src/core/SkStroke.cpp : the new stroke implementation (disabled) tests/StrokerTest.cpp : a stroke torture test that checks normal and extreme values The new stroke algorithm has a tweakable parameter: stroker.setError(1); (SkStrokeRec.cpp:112) The stroke error is the allowable gap between the midpoint of the stroke quadratic and the center Bezier. As the projection from the quadratic approaches the endpoints, the error is decreased proportionally so that it is always inside the quadratic curve. An overview of how this works: - For a given T range of a Bezier, compute the perpendiculars and find the points outset and inset for some radius. - Construct tangents for the quadratic stroke. - If the tangent don't intersect between them (may happen with cubics), subdivide. - If the quadratic stroke end points are close (again, may happen with cubics), draw a line between them. - Compute the quadratic formed by the intersecting tangents. - If the midpoint of the quadratic is close to the midpoint of the Bezier perpendicular, return the quadratic. - If the end of the stroke at the Bezier midpoint doesn't intersect the quad's bounds, subdivide. - Find where the Bezier midpoint ray intersects the quadratic. - If the intersection is too close to the quad's endpoints, subdivide. - If the error is large proportional to the intersection's distance to the quad's endpoints, subdivide. BUG=skia:723,skia:2769 Review URL: https://codereview.chromium.org/558163005
* Use vertex attributes for dash effect in gpuGravatar egdaniel2014-06-12
| | | | | | | | | | | | | This will allow us to batch dashed lines together when drawing. Also, this removes the need for a coord transform matrix in the shader, thus we save the cost of uploading a new matrix uniform everytime we do a simple transform to the dashed line we are drawing. BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/326103002
* My clang now doesn't complain about !"foo".Gravatar mtklein@google.com2013-08-22
| | | | | | | | | BUG= R=robertphillips@google.com Review URL: https://codereview.chromium.org/22875037 git-svn-id: http://skia.googlecode.com/svn/trunk@10874 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2013-01-26
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@7406 2bbb7eff-a529-9590-31e7-b0007b416f81
* Follow up on the previous patch :Gravatar sugoi@google.com2012-12-17
- Moved the SkStrokeRec class in its own file - Replaced SkStroke by SkStrokeRec in Ganesh - Moved path stroking to the Ganesh level in some cases (everytime it isn't required to do it directly in SkGpuDevice). PathEffect and MaskFilter still require path stroking at the SkGpuDevice for now. - Renamed static functions in SkPath with proper names * No functionality shold have changed with this patch. This is a step towards enabling Ganesh Path Renderers to decide whether or not to stroke the path rather than always receiving the stroked path as an input argument. BUG=chromium:135111 TEST=Try path rendering tests from the gm Review URL: https://codereview.appspot.com/6946072 git-svn-id: http://skia.googlecode.com/svn/trunk@6861 2bbb7eff-a529-9590-31e7-b0007b416f81