13f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com
23f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com/*
33f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com * Copyright 2011 Google Inc.
43f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com *
53f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com * Use of this source code is governed by a BSD-style license that can be
63f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com * found in the LICENSE file.
73f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com */
83f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com
93f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com#ifndef GrAAHairLinePathRenderer_DEFINED
103f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com#define GrAAHairLinePathRenderer_DEFINED
113f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com
123f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com#include "GrPathRenderer.h"
133f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com
143f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.comclass GrAAHairLinePathRenderer : public GrPathRenderer {
153f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.compublic:
163f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com    virtual ~GrAAHairLinePathRenderer();
173f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com
183f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com    static GrPathRenderer* Create(GrContext* context);
193f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com
20111fa9c0003b99e052d665af57b51ff973dcb416bsalomon@google.com    virtual bool canDrawPath(const SkPath& path,
215c2ee5c5d8f8593d40a2a9ffd9ca834653ee6af1sugoi@google.com                             const SkStrokeRec& stroke,
22290bf0ae34af76a4350a5df76ce02feb93d68196sugoi@google.com                             const GrDrawTarget* target,
23290bf0ae34af76a4350a5df76ce02feb93d68196sugoi@google.com                             bool antiAlias) const SK_OVERRIDE;
2439639c6a5228c8595458422479d0446440fb3590skia.committer@gmail.com
258bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com    typedef SkTArray<SkPoint, true> PtArray;
268bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com    typedef SkTArray<int, true> IntArray;
278bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com    typedef SkTArray<float, true> FloatArray;
2839639c6a5228c8595458422479d0446440fb3590skia.committer@gmail.com
293f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.comprotected:
30111fa9c0003b99e052d665af57b51ff973dcb416bsalomon@google.com    virtual bool onDrawPath(const SkPath& path,
315c2ee5c5d8f8593d40a2a9ffd9ca834653ee6af1sugoi@google.com                            const SkStrokeRec& stroke,
32111fa9c0003b99e052d665af57b51ff973dcb416bsalomon@google.com                            GrDrawTarget* target,
33111fa9c0003b99e052d665af57b51ff973dcb416bsalomon@google.com                            bool antiAlias) SK_OVERRIDE;
34dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com
353f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.comprivate:
363f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com    GrAAHairLinePathRenderer(const GrContext* context,
373f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com                             const GrIndexBuffer* fLinesIndexBuffer,
383f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com                             const GrIndexBuffer* fQuadsIndexBuffer);
393f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com
408bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com    bool createLineGeom(const SkPath& path,
418bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                        GrDrawTarget* target,
428bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                        const PtArray& lines,
438bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                        int lineCnt,
448bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                        GrDrawTarget::AutoReleaseGeometry* arg,
458bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                        SkRect* devBounds);
4639639c6a5228c8595458422479d0446440fb3590skia.committer@gmail.com
478bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com    bool createBezierGeom(const SkPath& path,
488bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                          GrDrawTarget* target,
498bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                          const PtArray& quads,
508bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                          int quadCnt,
518bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                          const PtArray& conics,
528bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                          int conicCnt,
538bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                          const IntArray& qSubdivs,
548bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                          const FloatArray& cWeights,
558bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                          GrDrawTarget::AutoReleaseGeometry* arg,
568bc87fc5d23ae550ffa5edaaf5844556e5331bb3jvanverth@google.com                          SkRect* devBounds);
573f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com
583f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com    const GrIndexBuffer*        fLinesIndexBuffer;
593f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com    const GrIndexBuffer*        fQuadsIndexBuffer;
603f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com
613f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com    typedef GrPathRenderer INHERITED;
623f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com};
633f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com
643f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com
653f30e3a41fc16816105e28e0d4c241eff6d391b4bsalomon@google.com#endif
66