/* * Copyright 2012 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrAARectRenderer_DEFINED #define GrAARectRenderer_DEFINED #include "GrColor.h" #include "SkMatrix.h" #include "SkRect.h" #include "SkStrokeRec.h" class GrClip; class GrDrawTarget; class GrIndexBuffer; class GrPipelineBuilder; /* * This class wraps helper functions that draw AA rects (filled & stroked) */ class GrAARectRenderer { public: // TODO: potentialy fuse the fill & stroke methods and differentiate // between them by passing in stroke (==NULL means fill). static void FillAARect(GrDrawTarget* target, GrPipelineBuilder* pipelineBuilder, GrColor color, const SkMatrix& viewMatrix, const SkRect& rect, const SkRect& devRect) { GeometryFillAARect(target, pipelineBuilder, color, viewMatrix, rect, devRect); } static void StrokeAARect(GrDrawTarget*, GrPipelineBuilder*, GrColor, const SkMatrix& viewMatrix, const SkRect& rect, const SkRect& devRect, const SkStrokeRec& stroke); // First rect is outer; second rect is inner static void FillAANestedRects(GrDrawTarget*, GrPipelineBuilder*, GrColor, const SkMatrix& viewMatrix, const SkRect rects[2]); private: GrAARectRenderer(); static void GeometryFillAARect(GrDrawTarget*, GrPipelineBuilder*, GrColor, const SkMatrix& viewMatrix, const SkRect& rect, const SkRect& devRect); static void GeometryStrokeAARect(GrDrawTarget*, GrPipelineBuilder*, GrColor, const SkMatrix& viewMatrix, const SkRect& devOutside, const SkRect& devOutsideAssist, const SkRect& devInside, bool miterStroke); }; #endif // GrAARectRenderer_DEFINED