11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
20910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/*
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project
40910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project *
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file.
70910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project */
80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkStroke_DEFINED
110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkStroke_DEFINED
120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkPoint.h"
140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkPaint.h"
150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstruct SkRect;
170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkPath;
180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project/** \class SkStroke
200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkStroke is the utility class that constructs paths by stroking
210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    geometries (lines, rects, ovals, roundrects, paths). This is
220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    invoked when a geometry or text is drawn in a canvas with the
230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    kStroke_Mask bit set in the paint.
240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project*/
250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkStroke {
260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic:
270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkStroke();
280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkStroke(const SkPaint&);
290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkStroke(const SkPaint&, SkScalar width);   // width overrides paint.getStrokeWidth()
300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkPaint::Cap    getCap() const { return (SkPaint::Cap)fCap; }
320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void        setCap(SkPaint::Cap);
330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkPaint::Join   getJoin() const { return (SkPaint::Join)fJoin; }
350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void        setJoin(SkPaint::Join);
360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void    setMiterLimit(SkScalar);
380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void    setWidth(SkScalar);
390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    bool    getDoFill() const { return SkToBool(fDoFill); }
410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void    setDoFill(bool doFill) { fDoFill = SkToU8(doFill); }
420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void    strokeLine(const SkPoint& start, const SkPoint& end, SkPath*) const;
440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void    strokeRect(const SkRect& rect, SkPath*) const;
450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void    strokeOval(const SkRect& oval, SkPath*) const;
460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void    strokeRRect(const SkRect& rect, SkScalar rx, SkScalar ry, SkPath*) const;
470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void    strokePath(const SkPath& path, SkPath*) const;
480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    ////////////////////////////////////////////////////////////////
500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate:
520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkScalar    fWidth, fMiterLimit;
530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    uint8_t     fCap, fJoin;
540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkBool8     fDoFill;
550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkPaint;
570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
61