• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2015 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #ifndef GrTextTarget_DEFINED
9 #define GrTextTarget_DEFINED
10 
11 #include "include/core/SkPaint.h"
12 #include "src/gpu/GrColorSpaceInfo.h"
13 
14 class GrAtlasTextOp;
15 class GrClip;
16 class GrPaint;
17 class GrRecordingContext;
18 class GrShape;
19 class SkGlyphRunListPainter;
20 class SkMatrix;
21 struct SkIRect;
22 
23 class GrTextTarget {
24 public:
25     virtual ~GrTextTarget() = default;
26 
width()27     int width() const { return fWidth; }
28 
height()29     int height() const { return fHeight; }
30 
colorSpaceInfo()31     const GrColorSpaceInfo& colorSpaceInfo() const { return fColorSpaceInfo; }
32 
33     virtual void addDrawOp(const GrClip&, std::unique_ptr<GrAtlasTextOp> op) = 0;
34 
35     virtual void drawShape(const GrClip&, const SkPaint&,
36                            const SkMatrix& viewMatrix, const GrShape&) = 0;
37 
38     virtual void makeGrPaint(GrMaskFormat, const SkPaint&, const SkMatrix& viewMatrix,
39                              GrPaint*) = 0;
40 
41     virtual GrRecordingContext* getContext() = 0;
42 
43     virtual SkGlyphRunListPainter* glyphPainter() = 0;
44 
45 protected:
GrTextTarget(int width,int height,const GrColorSpaceInfo & colorSpaceInfo)46     GrTextTarget(int width, int height, const GrColorSpaceInfo& colorSpaceInfo)
47             : fWidth(width), fHeight(height), fColorSpaceInfo(colorSpaceInfo) {
48         SkASSERT(kPremul_SkAlphaType == colorSpaceInfo.alphaType());
49     }
50 
51 private:
52     int fWidth;
53     int fHeight;
54     const GrColorSpaceInfo& fColorSpaceInfo;
55 };
56 #endif  // GrTextTarget_DEFINED
57