aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/graphics/SkStroke.h
blob: 8b148a4efc7cd12daa6721bb180b8fcbfa1e9692 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#ifndef SkStroke_DEFINED
#define SkStroke_DEFINED

#include "SkPoint.h"
#include "SkPaint.h"

struct SkRect;
class SkPath;

#define SK_DefaultStrokeWidth		SK_Scalar1
#define SK_DefaultMiterLimit		SkIntToScalar(4)


/**	\class SkStroke
	SkStroke is the utility class that constructs paths by stroking
	geometries (lines, rects, ovals, roundrects, paths). This is
	invoked when a geometry or text is drawn in a canvas with the
	kStroke_Mask bit set in the paint.
*/
class SkStroke {
public:
	SkStroke();
	SkStroke(const SkPaint&);
	SkStroke(const SkPaint&, SkScalar width);	// width overrides paint.getStrokeWidth()

	SkPaint::Cap	getCap() const { return (SkPaint::Cap)fCap; }
	void		setCap(SkPaint::Cap);

	SkPaint::Join	getJoin() const { return (SkPaint::Join)fJoin; }
	void		setJoin(SkPaint::Join);

//	SkScalar	getMiterLimit() const { return fMiterLimit; }
	void		setMiterLimit(SkScalar);

//	SkScalar	getWidth() const { return fWidth; }
	void		setWidth(SkScalar);

	bool		getDoFill() const { return SkToBool(fDoFill); }
	void		setDoFill(bool doFill) { fDoFill = SkToU8(doFill); }

	void	strokeLine(const SkPoint& start, const SkPoint& end, SkPath*) const;
	void	strokeRect(const SkRect& rect, SkPath*) const;
	void	strokeOval(const SkRect& oval, SkPath*) const;
	void	strokeRRect(const SkRect& rect, SkScalar rx, SkScalar ry, SkPath*) const;
	void	strokePath(const SkPath& path, SkPath*) const;

	////////////////////////////////////////////////////////////////

private:
	SkScalar	fWidth, fMiterLimit;
	U8			fCap, fJoin;
	SkBool8		fDoFill;

	friend class SkPaint;
};

#endif