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