chromium/third_party/skia/src/core/SkRegion_path.cpp

/*
 * Copyright 2006 The Android Open Source Project
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include "include/core/SkColor.h"
#include "include/core/SkMatrix.h"
#include "include/core/SkPath.h"
#include "include/core/SkRect.h"
#include "include/core/SkRegion.h"
#include "include/core/SkScalar.h"
#include "include/core/SkTypes.h"
#include "include/private/base/SkDebug.h"
#include "include/private/base/SkMalloc.h"
#include "include/private/base/SkMath.h"
#include "include/private/base/SkPoint_impl.h"
#include "include/private/base/SkTDArray.h"
#include "include/private/base/SkTFitsIn.h"
#include "include/private/base/SkTo.h"
#include "src/base/SkSafeMath.h"
#include "src/base/SkTSort.h"
#include "src/core/SkBlitter.h"
#include "src/core/SkRegionPriv.h"
#include "src/core/SkScan.h"

#include <algorithm>
#include <cstdint>
#include <cstring>
#include <iterator>

// The rgnbuilder caller *seems* to pass short counts, possible often seens early failure, so
// we may not want to promote this to a "std" routine just yet.
static bool sk_memeq32(const int32_t* SK_RESTRICT a, const int32_t* SK_RESTRICT b, int count) {}

class SkRgnBuilder : public SkBlitter {};

SkRgnBuilder::SkRgnBuilder()
    :{}

SkRgnBuilder::~SkRgnBuilder() {}

bool SkRgnBuilder::init(int maxHeight, int maxTransitions, bool pathIsInverse) {}

void SkRgnBuilder::blitH(int x, int y, int width) {}

int SkRgnBuilder::computeRunCount() const {}

void SkRgnBuilder::copyToRect(SkIRect* r) const {}

void SkRgnBuilder::copyToRgn(SkRegion::RunType runs[]) const {}

static unsigned verb_to_initial_last_index(unsigned verb) {}

static unsigned verb_to_max_edges(unsigned verb) {}

// If returns 0, ignore itop and ibot
static int count_path_runtype_values(const SkPath& path, int* itop, int* ibot) {}

static bool check_inverse_on_empty_return(SkRegion* dst, const SkPath& path, const SkRegion& clip) {}

bool SkRegion::setPath(const SkPath& path, const SkRegion& clip) {}

/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////

struct Edge {};

static void find_link(Edge* base, Edge* stop) {}

static int extract_path(Edge* edge, Edge* stop, SkPath* path) {}

struct EdgeLT {};

bool SkRegion::getBoundaryPath(SkPath* path) const {}