12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- /*
- * Copyright 2019 Google LLC
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #ifndef GrQuadUtils_DEFINED
- #define GrQuadUtils_DEFINED
- enum class GrQuadAAFlags;
- enum class GrAA : bool;
- enum class GrAAType : unsigned;
- class GrQuad;
- struct SkRect;
- namespace GrQuadUtils {
- // Resolve disagreements between the overall requested AA type and the per-edge quad AA flags.
- // Both outAAType and outEdgeFlags will be updated.
- void ResolveAAType(GrAAType requestedAAType, GrQuadAAFlags requestedEdgeFlags,
- const GrQuad& quad, GrAAType* outAAtype, GrQuadAAFlags* outEdgeFlags);
- /**
- * Crops quad to the provided device-space axis-aligned rectangle. If the intersection of this
- * quad (projected) and cropRect results in a quadrilateral, this returns true. If not, this
- * quad may be updated to be a smaller quad of the same type such that its intersection with
- * cropRect is visually the same. This function assumes that the 'quad' coordinates are finite.
- *
- * The provided edge flags are updated to reflect edges clipped by cropRect (toggling on or off
- * based on cropAA policy). If provided, the local coordinates will be updated to reflect the
- * updated device coordinates of this quad.
- *
- * 'local' may be null, in which case the new local coordinates will not be calculated. This is
- * useful when it's known a paint does not require local coordinates. However, neither
- * 'edgeFlags' nore 'quad' can be null.
- */
- bool CropToRect(const SkRect& cropRect, GrAA cropAA, GrQuadAAFlags* edgeFlags, GrQuad* quad,
- GrQuad* local=nullptr);
- }; // namespace GrQuadUtils
- #endif
|