12880df2609eba09b555ca37be04b6ad89290c765Tom Hudson/*
22880df2609eba09b555ca37be04b6ad89290c765Tom Hudson * Copyright 2015 Google Inc.
32880df2609eba09b555ca37be04b6ad89290c765Tom Hudson *
42880df2609eba09b555ca37be04b6ad89290c765Tom Hudson * Use of this source code is governed by a BSD-style license that can be
52880df2609eba09b555ca37be04b6ad89290c765Tom Hudson * found in the LICENSE file.
62880df2609eba09b555ca37be04b6ad89290c765Tom Hudson */
72880df2609eba09b555ca37be04b6ad89290c765Tom Hudson
82880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#ifndef GrRectBatchFactory_DEFINED
92880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#define GrRectBatchFactory_DEFINED
102880df2609eba09b555ca37be04b6ad89290c765Tom Hudson
112880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#include "GrAAFillRectBatch.h"
122880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#include "GrAAStrokeRectBatch.h"
132880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#include "GrColor.h"
142880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#include "GrNonAAFillRectBatch.h"
152880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#include "GrNonAAStrokeRectBatch.h"
162880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#include "SkMatrix.h"
172880df2609eba09b555ca37be04b6ad89290c765Tom Hudson
182880df2609eba09b555ca37be04b6ad89290c765Tom Hudsonclass GrBatch;
192880df2609eba09b555ca37be04b6ad89290c765Tom Hudsonstruct SkRect;
202880df2609eba09b555ca37be04b6ad89290c765Tom Hudsonclass SkStrokeRec;
212880df2609eba09b555ca37be04b6ad89290c765Tom Hudson
222880df2609eba09b555ca37be04b6ad89290c765Tom Hudson/*
232880df2609eba09b555ca37be04b6ad89290c765Tom Hudson * A factory for returning batches which can draw rectangles.
242880df2609eba09b555ca37be04b6ad89290c765Tom Hudson */
252880df2609eba09b555ca37be04b6ad89290c765Tom Hudsonnamespace GrRectBatchFactory {
262880df2609eba09b555ca37be04b6ad89290c765Tom Hudson
272880df2609eba09b555ca37be04b6ad89290c765Tom Hudsoninline GrDrawBatch* CreateNonAAFill(GrColor color,
282880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                    const SkMatrix& viewMatrix,
292880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                    const SkRect& rect,
302880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                    const SkRect* localRect,
312880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                    const SkMatrix* localMatrix) {
322880df2609eba09b555ca37be04b6ad89290c765Tom Hudson    if (viewMatrix.hasPerspective() || (localMatrix && localMatrix->hasPerspective())) {
332880df2609eba09b555ca37be04b6ad89290c765Tom Hudson        return GrNonAAFillRectBatch::CreateWithPerspective(color, viewMatrix, rect, localRect,
342880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                                           localMatrix);
352880df2609eba09b555ca37be04b6ad89290c765Tom Hudson    } else {
362880df2609eba09b555ca37be04b6ad89290c765Tom Hudson        return GrNonAAFillRectBatch::Create(color, viewMatrix, rect, localRect, localMatrix);
372880df2609eba09b555ca37be04b6ad89290c765Tom Hudson    }
382880df2609eba09b555ca37be04b6ad89290c765Tom Hudson}
392880df2609eba09b555ca37be04b6ad89290c765Tom Hudson
402880df2609eba09b555ca37be04b6ad89290c765Tom Hudsoninline GrDrawBatch* CreateAAFill(GrColor color,
412880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                 const SkMatrix& viewMatrix,
422880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                 const SkRect& rect,
432880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                 const SkRect& devRect) {
442880df2609eba09b555ca37be04b6ad89290c765Tom Hudson    return GrAAFillRectBatch::Create(color, viewMatrix, rect, devRect);
452880df2609eba09b555ca37be04b6ad89290c765Tom Hudson}
462880df2609eba09b555ca37be04b6ad89290c765Tom Hudson
472880df2609eba09b555ca37be04b6ad89290c765Tom Hudsoninline GrDrawBatch* CreateAAFill(GrColor color,
482880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                 const SkMatrix& viewMatrix,
492880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                 const SkMatrix& localMatrix,
502880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                 const SkRect& rect,
512880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                 const SkRect& devRect) {
522880df2609eba09b555ca37be04b6ad89290c765Tom Hudson    return GrAAFillRectBatch::Create(color, viewMatrix, localMatrix, rect, devRect);
532880df2609eba09b555ca37be04b6ad89290c765Tom Hudson}
542880df2609eba09b555ca37be04b6ad89290c765Tom Hudson
552880df2609eba09b555ca37be04b6ad89290c765Tom Hudsoninline GrDrawBatch* CreateNonAAStroke(GrColor color,
562880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                      const SkMatrix& viewMatrix,
572880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                      const SkRect& rect,
582880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                      SkScalar strokeWidth,
592880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                      bool snapToPixelCenters) {
602880df2609eba09b555ca37be04b6ad89290c765Tom Hudson    return GrNonAAStrokeRectBatch::Create(color, viewMatrix, rect, strokeWidth, snapToPixelCenters);
612880df2609eba09b555ca37be04b6ad89290c765Tom Hudson}
622880df2609eba09b555ca37be04b6ad89290c765Tom Hudson
632880df2609eba09b555ca37be04b6ad89290c765Tom Hudsoninline GrDrawBatch* CreateAAStroke(GrColor color,
642880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                   const SkMatrix& viewMatrix,
652880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                   const SkRect& rect,
662880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                   const SkStrokeRec& stroke) {
672880df2609eba09b555ca37be04b6ad89290c765Tom Hudson    return GrAAStrokeRectBatch::Create(color, viewMatrix, rect, stroke);
682880df2609eba09b555ca37be04b6ad89290c765Tom Hudson}
692880df2609eba09b555ca37be04b6ad89290c765Tom Hudson
702880df2609eba09b555ca37be04b6ad89290c765Tom Hudson// First rect is outer; second rect is inner
712880df2609eba09b555ca37be04b6ad89290c765Tom HudsonGrDrawBatch* CreateAAFillNestedRects(GrColor,
722880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                     const SkMatrix& viewMatrix,
732880df2609eba09b555ca37be04b6ad89290c765Tom Hudson                                     const SkRect rects[2]);
742880df2609eba09b555ca37be04b6ad89290c765Tom Hudson
752880df2609eba09b555ca37be04b6ad89290c765Tom Hudson};
762880df2609eba09b555ca37be04b6ad89290c765Tom Hudson
772880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#endif
78