1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2006 The Android Open Source Project 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#ifndef SkStroke_DEFINED 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define SkStroke_DEFINED 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPath.h" 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPoint.h" 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPaint.h" 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkStrokerPriv.h" 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#ifdef SK_DEBUG 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotextern bool gDebugStrokerErrorSet; 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotextern SkScalar gDebugStrokerError; 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotextern int gMaxRecursion[]; 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/** \class SkStroke 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkStroke is the utility class that constructs paths by stroking 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot geometries (lines, rects, ovals, roundrects, paths). This is 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot invoked when a geometry or text is drawn in a canvas with the 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot kStroke_Mask bit set in the paint. 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot*/ 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass SkStroke { 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic: 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkStroke(); 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkStroke(const SkPaint&); 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkStroke(const SkPaint&, SkScalar width); // width overrides paint.getStrokeWidth() 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPaint::Cap getCap() const { return (SkPaint::Cap)fCap; } 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setCap(SkPaint::Cap); 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPaint::Join getJoin() const { return (SkPaint::Join)fJoin; } 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setJoin(SkPaint::Join); 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setMiterLimit(SkScalar); 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setWidth(SkScalar); 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool getDoFill() const { return SkToBool(fDoFill); } 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setDoFill(bool doFill) { fDoFill = SkToU8(doFill); } 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * ResScale is the "intended" resolution for the output. 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Default is 1.0. 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Larger values (res > 1) indicate that the result should be more precise, since it will 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * be zoomed up, and small errors will be magnified. 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Smaller values (0 < res < 1) indicate that the result can be less precise, since it will 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * be zoomed down, and small errors may be invisible. 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkScalar getResScale() const { return fResScale; } 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setResScale(SkScalar rs) { 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkASSERT(rs > 0 && SkScalarIsFinite(rs)); 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fResScale = rs; 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Stroke the specified rect, winding it in the specified direction.. 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void strokeRect(const SkRect& rect, SkPath* result, 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPath::Direction = SkPath::kCW_Direction) const; 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void strokePath(const SkPath& path, SkPath*) const; 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot //////////////////////////////////////////////////////////////// 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate: 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkScalar fWidth, fMiterLimit; 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkScalar fResScale; 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot uint8_t fCap, fJoin; 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkBool8 fDoFill; 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 75fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot friend class SkPaint; 76fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 77fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 78fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif 79