Home | History | Annotate | Download | only in gpu
      1 /*
      2  * Copyright 2017 ARM Ltd.
      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 GrDistanceFieldGenFromVector_DEFINED
      9 #define GrDistanceFieldGenFromVector_DEFINED
     10 
     11 #include "SkPath.h"
     12 
     13 class SkMatrix;
     14 
     15 #ifndef SK_USE_LEGACY_DISTANCE_FIELDS
     16     #define SK_USE_LEGACY_DISTANCE_FIELDS
     17 #endif
     18 
     19 /** Given a vector path, generate the associated distance field.
     20 
     21  *  @param distanceField     The distance field to be generated. Should already be allocated
     22  *                           by the client with the padding defined in "SkDistanceFieldGen.h".
     23  *  @param path              The path we're using to generate the distance field.
     24  *  @param matrix            Transformation matrix for path.
     25  *  @param width             Width of the distance field.
     26  *  @param height            Height of the distance field.
     27  *  @param rowBytes          Size of each row in the distance field, in bytes.
     28  */
     29 bool GrGenerateDistanceFieldFromPath(unsigned char* distanceField,
     30                                      const SkPath& path, const SkMatrix& viewMatrix,
     31                                      int width, int height, size_t rowBytes);
     32 
     33 inline bool IsDistanceFieldSupportedFillType(SkPath::FillType fFillType)
     34 {
     35     return (SkPath::kEvenOdd_FillType == fFillType ||
     36             SkPath::kInverseEvenOdd_FillType == fFillType);
     37 }
     38 
     39 #endif
     40