11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc. 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkDrawProcs_DEFINED 90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkDrawProcs_DEFINED 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDraw.h" 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 131cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerclass SkAAClip; 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkBlitter; 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstruct SkDraw1Glyph { 174f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger const SkDraw* fDraw; 184f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger SkBounder* fBounder; 194f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger const SkRegion* fClip; 204f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger const SkAAClip* fAAClip; 214f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger SkBlitter* fBlitter; 224f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger SkGlyphCache* fCache; 234f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger SkIRect fClipBounds; 244f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger 254f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger // The fixed x,y are pre-rounded, so impls just trunc them down to ints. 264f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger // i.e. half the sampling frequency has been added. 274f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger // e.g. 1/2 or 1/(2^(SkGlyph::kSubBits+1)) has already been added. 284f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger typedef void (*Proc)(const SkDraw1Glyph&, SkFixed x, SkFixed y, const SkGlyph&); 294f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger 304f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger Proc init(const SkDraw* draw, SkBlitter* blitter, SkGlyphCache* cache); 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectstruct SkDrawProcs { 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDraw1Glyph::Proc fD1GProc; 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 371cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/** 384f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger * If the current paint is set to stroke and the stroke-width when applied to 394f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger * the matrix is <= 1.0, then this returns true, and sets coverage (simulating 404f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger * a stroke by drawing a hairline with partial coverage). If any of these 414f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger * conditions are false, then this returns false and coverage is ignored. 421cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 434f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenbergerbool SkDrawTreatAsHairline(const SkPaint&, const SkMatrix&, SkScalar* coverage); 441cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 47