8 #ifndef GrDrawContext_DEFINED
9 #define GrDrawContext_DEFINED
13 #include "GrRenderTarget.h"
16 #include "SkSurfaceProps.h"
17 #include "../private/GrInstancedPipelineInfo.h"
18 #include "../private/GrSingleOwner.h"
24 class GrDrawContextPriv;
25 class GrDrawPathBatchBase;
26 class GrDrawingManager;
29 class GrPathProcessor;
30 class GrPipelineBuilder;
34 struct GrUserStencilSettings;
61 const SkMatrix& viewMatrix,
const char text[],
size_t byteLength,
62 SkScalar x, SkScalar y,
const SkIRect& clipBounds);
64 const SkMatrix& viewMatrix,
const char text[],
size_t byteLength,
65 const SkScalar pos[],
int scalarsPerPosition,
69 SkScalar x, SkScalar y,
85 void clear(
const SkIRect* rect, GrColor color,
bool canIgnoreRect);
100 void drawRect(
const GrClip&,
104 const GrStyle* style =
nullptr);
114 void fillRectToRect(
const GrClip&,
123 void fillRectWithLocalMatrix(
const GrClip& clip,
137 void drawRRect(
const GrClip&,
141 const GrStyle& style);
153 void drawDRRect(
const GrClip&,
167 void drawPath(
const GrClip&,
171 const GrStyle& style);
190 void drawVertices(
const GrClip&,
193 GrPrimitiveType primitiveType,
197 const GrColor colors[],
198 const uint16_t indices[],
212 void drawAtlas(
const GrClip&,
228 void drawOval(
const GrClip&,
232 const GrStyle& style);
247 void drawArc(
const GrClip&,
254 const GrStyle& style);
259 void drawImageLattice(
const GrClip&,
264 std::unique_ptr<SkLatticeIter> iter,
271 void prepareForExternalIO();
273 bool isStencilBufferMultisampled()
const {
274 return fRenderTarget->isStencilBufferMultisampled();
276 bool isUnifiedMultisampled()
const {
return fRenderTarget->isUnifiedMultisampled(); }
277 bool hasMixedSamples()
const {
return fRenderTarget->isMixedSampled(); }
279 bool mustUseHWAA(
const GrPaint& paint)
const {
280 return paint.isAntiAlias() && fRenderTarget->isUnifiedMultisampled();
283 const GrSurfaceDesc& desc()
const {
return fRenderTarget->desc(); }
284 int width()
const {
return fRenderTarget->width(); }
285 int height()
const {
return fRenderTarget->height(); }
286 GrPixelConfig config()
const {
return fRenderTarget->config(); }
287 int numColorSamples()
const {
return fRenderTarget->numColorSamples(); }
288 bool isGammaCorrect()
const {
return SkToBool(fColorSpace.get()); }
289 SkSourceGammaTreatment sourceGammaTreatment()
const {
290 return this->isGammaCorrect() ? SkSourceGammaTreatment::kRespect
291 : SkSourceGammaTreatment::kIgnore;
293 const SkSurfaceProps& surfaceProps()
const {
return fSurfaceProps; }
294 SkColorSpace* getColorSpace()
const {
return fColorSpace.get(); }
295 GrSurfaceOrigin origin()
const {
return fRenderTarget->origin(); }
297 bool wasAbandoned()
const;
299 GrRenderTarget* accessRenderTarget() {
return fRenderTarget.get(); }
303 sk_sp<GrTexture> asTexture() {
return sk_ref_sp(fRenderTarget->asTexture()); }
306 GrDrawContextPriv drawContextPriv();
307 const GrDrawContextPriv drawContextPriv()
const;
309 GrAuditTrail* auditTrail() {
return fAuditTrail; }
313 const SkSurfaceProps* surfaceProps, GrAuditTrail*, GrSingleOwner*);
315 GrDrawingManager* drawingManager() {
return fDrawingManager; }
317 SkDEBUGCODE(GrSingleOwner* singleOwner() {
return fSingleOwner; })
318 SkDEBUGCODE(
void validate()
const;)
321 friend class GrAtlasTextBlob;
322 friend class GrStencilAndCoverTextContext;
324 friend class GrDrawingManager;
325 friend class GrDrawContextPriv;
326 friend class GrTestTarget;
327 friend class GrSWMaskHelper;
330 friend class GrSoftwarePathRenderer;
331 friend class GrAAConvexPathRenderer;
332 friend class GrDashLinePathRenderer;
333 friend class GrAAHairLinePathRenderer;
334 friend class GrAALinearizingConvexPathRenderer;
335 friend class GrAADistanceFieldPathRenderer;
336 friend class GrDefaultPathRenderer;
337 friend class GrPLSPathRenderer;
338 friend class GrMSAAPathRenderer;
339 friend class GrStencilAndCoverPathRenderer;
340 friend class GrTessellatingPathRenderer;
342 bool drawFilledDRRect(
const GrClip& clip,
348 bool drawFilledRect(
const GrClip& clip,
352 const GrUserStencilSettings* ss);
354 void drawNonAAFilledRect(
const GrClip&,
360 const GrUserStencilSettings* ss,
363 void internalDrawPath(
const GrClip& clip,
367 const GrStyle& style);
371 void drawBatch(
const GrPipelineBuilder& pipelineBuilder,
const GrClip&, GrDrawBatch* batch);
373 GrDrawTarget* getDrawTarget();
375 GrDrawingManager* fDrawingManager;
380 GrDrawTarget* fDrawTarget;
382 GrInstancedPipelineInfo fInstancedPipelineInfo;
386 GrAuditTrail* fAuditTrail;
389 SkDEBUGCODE(
mutable GrSingleOwner* fSingleOwner;)
The SkRRect class represents a rounded rect with a potentially different radii for each corner...
Definition: SkRRect.h:48
Definition: SkColorSpace.h:16
The SkPath class encapsulates compound (multiple contour) geometric paths consisting of straight line...
Definition: SkPath.h:27
SkTextBlob combines multiple text runs into an immutable, ref-counted structure.
Definition: SkTextBlob.h:22
Describes a surface to be created.
Definition: GrTypes.h:467
Describes properties and constraints of a given SkSurface.
Definition: SkSurfaceProps.h:51
Definition: SkPoint.h:156
The SkMatrix class holds a 3x3 matrix for transforming coordinates.
Definition: SkMatrix.h:26
Definition: SkRefCnt.h:135
The SkPaint class holds the style and color information about how to draw geometries, text and bitmaps.
Definition: SkPaint.h:46
GrClip is an abstract base class for applying a clip.
Definition: GrClip.h:22
#define SkToBool(cond)
Returns 0 or 1 based on the condition.
Definition: SkTypes.h:287
Definition: GrSurface.h:21
Definition: GrDrawContext.h:51
DEPRECATED - use SkPaintFilterCanvas instead.
Definition: SkDrawFilter.h:26
Definition: GrContext.h:48
uint32_t SkColor
32 bit ARGB color value, not premultiplied.
Definition: SkColor.h:28
The paint describes how color and coverage are computed at each pixel by GrContext draw functions and...
Definition: GrPaint.h:41
GrRenderTarget represents a 2D buffer of pixels that can be rendered to.
Definition: GrRenderTarget.h:26
SkIRect holds four 32 bit integer coordinates for a rectangle.
Definition: SkRect.h:20
SkIPoint holds two 32 bit integer coordinates.
Definition: SkPoint.h:40