/*
* Copyright 2012 Google Inc .
*
* Use of this source code is governed by a BSD - style license that can be
* found in the LICENSE file .
*/
#ifndef SkPathRef_DEFINED
#define SkPathRef_DEFINED
#include "include/core/SkArc.h"
#include "include/core/SkMatrix.h"
#include "include/core/SkPathTypes.h" // IWYU pragma: keep
#include "include/core/SkPoint.h"
#include "include/core/SkRRect.h"
#include "include/core/SkRect.h"
#include "include/core/SkRefCnt.h"
#include "include/core/SkScalar.h"
#include "include/core/SkTypes.h"
#include "include/private/SkIDChangeListener.h"
#include "include/private/base/SkDebug.h"
#include "include/private/base/SkSpan_impl.h"
#include "include/private/base/SkTArray.h"
#include "include/private/base/SkTo.h"
#include <atomic>
#include <cstddef>
#include <cstdint>
#include <tuple>
class SkMatrix;
/*
* These " info " structs are used to return identifying information , when a path
* is queried if it is a special " shape " . ( e . g . isOval ( ) , isRRect ( ) )
*/
struct SkPathRectInfo {
SkRect fRect;
SkPathDirection fDirection;
uint8_t fStartIndex;
};
struct SkPathOvalInfo {
SkRect fBounds;
SkPathDirection fDirection;
uint8_t fStartIndex;
};
struct SkPathRRectInfo {
SkRRect fRRect;
SkPathDirection fDirection;
uint8_t fStartIndex;
};
/*
* Paths can be tagged with a " Type " - - the IsAType
* This signals that it was built from a high - level shape : oval , rrect , arc , wedge .
* We try to retain this tag , but still build the explicitly line / quad / conic / cubic
* structure need to represent that shape . Thus a user of path can always just look
* at the points and verbs , and draw it correctly .
*
* The GPU backend sometimes will sniff the path for this tag / type , and may have a
* more optimal way to draw the shape if they know its " really " an oval or whatever .
*
* Path ' s can also identify as a " rect " - - but we don ' t store any special tag for this .
*
* Here are the special " types " we have APIs for ( e . g . isRRect ( ) ) and what we store :
*
* kGeneral : no identifying shape , no extra data
* ( Rect ) : no tag , but isRect ( ) will examing the points / verbs , and try to
* deduce that it represents a rect .
* kOval : the path bounds is also the oval ' s bounds - - we store the direction
* and start_index ( important for dashing ) . see SkPathMakers . h
* kRRect : same as kOval for implicit bounds , direction and start_index .
* Note : we don ' t store its radii - - we deduce those when isRRect ( ) is
* called , by examining the points / verbs .
*/
enum class SkPathIsAType : uint8_t {
kGeneral,
kOval,
kRRect,
};
struct SkPathIsAData {
uint8_t fStartIndex;
SkPathDirection fDirection;
};
#endif
Messung V0.5 in Prozent C=96 H=100 G=97
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-09-30)
¤
*© Formatika GbR, Deutschland