1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/*
2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2015 Google Inc.
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 GrDrawAtlasOp_DEFINED
9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define GrDrawAtlasOp_DEFINED
10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "GrColor.h"
12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "GrDefaultGeoProcFactory.h"
13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "GrMeshDrawOp.h"
14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "GrSimpleMeshDrawOpHelper.h"
15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass GrDrawAtlasOp final : public GrMeshDrawOp {
17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate:
18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    using Helper = GrSimpleMeshDrawOpHelper;
19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic:
21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    DEFINE_OP_CLASS_ID
22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    static std::unique_ptr<GrDrawOp> Make(GrPaint&& paint, const SkMatrix& viewMatrix,
24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                                          GrAAType aaType, int spriteCount, const SkRSXform* xforms,
25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                                          const SkRect* rects, const SkColor* colors) {
26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        return Helper::FactoryHelper<GrDrawAtlasOp>(std::move(paint), viewMatrix, aaType,
27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                                                    spriteCount, xforms, rects, colors);
28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    }
29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    GrDrawAtlasOp(const Helper::MakeArgs& helperArgs, GrColor color, const SkMatrix& viewMatrix,
31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                  GrAAType, int spriteCount, const SkRSXform* xforms, const SkRect* rects,
32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                  const SkColor* colors);
33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    const char* name() const override { return "DrawAtlasOp"; }
35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    void visitProxies(const VisitProxyFunc& func) const override {
37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        fHelper.visitProxies(func);
38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    }
39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    SkString dumpInfo() const override;
41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    FixedFunctionFlags fixedFunctionFlags() const override;
43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    RequiresDstTexture finalize(const GrCaps& caps, const GrAppliedClip* clip,
45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                                GrPixelConfigIsClamped dstIsClamped) override;
46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate:
48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    void onPrepareDraws(Target*) override;
49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    GrColor color() const { return fColor; }
51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    const SkMatrix& viewMatrix() const { return fViewMatrix; }
52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    bool hasColors() const { return fHasColors; }
53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    int quadCount() const { return fQuadCount; }
54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    bool onCombineIfPossible(GrOp* t, const GrCaps&) override;
56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    struct Geometry {
58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        GrColor fColor;
59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        SkTArray<uint8_t, true> fVerts;
60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    };
61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    SkSTArray<1, Geometry, true> fGeoData;
63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    Helper fHelper;
64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    SkMatrix fViewMatrix;
65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    GrColor fColor;
66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    int fQuadCount;
67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    bool fHasColors;
68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    typedef GrMeshDrawOp INHERITED;
70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot};
71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif
73