tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

SkDashPathPriv.h (2305B)


      1 /*
      2 * Copyright 2014 Google Inc.
      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 SkDashPathPriv_DEFINED
      9 #define SkDashPathPriv_DEFINED
     10 
     11 #include "include/core/SkPathEffect.h"
     12 #include "include/core/SkSpan.h"
     13 #include "src/core/SkPathEffectBase.h"
     14 
     15 namespace SkDashPath {
     16 /**
     17 * Calculates the initialDashLength, initialDashIndex, and intervalLength based on the
     18 * inputed phase and intervals. If adjustedPhase is passed in, then the phase will be
     19 * adjusted to be between 0 and intervalLength. The result will be stored in adjustedPhase.
     20 * If adjustedPhase is nullptr then it is assumed phase is already between 0 and intervalLength
     21 *
     22 * Caller should have already used ValidDashPath to exclude invalid data.
     23 */
     24 void CalcDashParameters(SkScalar phase, SkSpan<const SkScalar> intervals,
     25                        SkScalar* initialDashLength, size_t* initialDashIndex,
     26                        SkScalar* intervalLength, SkScalar* adjustedPhase = nullptr);
     27 
     28 bool FilterDashPath(SkPathBuilder* dst, const SkPath& src, SkStrokeRec*, const SkRect*,
     29                    const SkPathEffectBase::DashInfo& info);
     30 
     31 #ifdef SK_BUILD_FOR_FUZZER
     32 const SkScalar kMaxDashCount = 10000;
     33 #else
     34 const SkScalar kMaxDashCount = 1000000;
     35 #endif
     36 
     37    /** See comments for InternalFilter */
     38    enum class StrokeRecApplication {
     39        kDisallow,
     40        kAllow,
     41    };
     42 
     43    /**
     44     * Caller should have already used ValidDashPath to exclude invalid data. Typically, this leaves
     45     * the strokeRec unmodified. However, for some simple shapes (e.g. a line) it may directly
     46     * evaluate the dash and stroke to produce a stroked output path with a fill strokeRec. Passing
     47     * true for disallowStrokeRecApplication turns this behavior off.
     48     */
     49    bool InternalFilter(SkPathBuilder* dst, const SkPath& src, SkStrokeRec* rec,
     50                        const SkRect* cullRect, SkSpan<const SkScalar> aIntervals,
     51                        SkScalar initialDashLength, int32_t initialDashIndex,
     52                        SkScalar intervalLength, SkScalar startPhase,
     53                        StrokeRecApplication = StrokeRecApplication::kAllow);
     54 
     55    bool ValidDashPath(SkScalar phase, SkSpan<const SkScalar> intervals);
     56 
     57 }  // namespace SkDashPath
     58 
     59 #endif