#include "include/core/SkRRect.h"
#include "include/core/SkMatrix.h"
#include "include/core/SkPoint.h"
#include "include/core/SkRect.h"
#include "include/core/SkScalar.h"
#include "include/core/SkString.h"
#include "include/core/SkTypes.h"
#include "include/private/base/SkDebug.h"
#include "include/private/base/SkFloatingPoint.h"
#include "src/base/SkBuffer.h"
#include "src/core/SkRRectPriv.h"
#include "src/core/SkRectPriv.h"
#include "src/core/SkScaleToSides.h"
#include "src/core/SkStringUtils.h"
#include <algorithm>
#include <cstring>
#include <iterator>
void SkRRect::setOval(const SkRect& oval) { … }
void SkRRect::setRectXY(const SkRect& rect, SkScalar xRad, SkScalar yRad) { … }
static bool clamp_to_zero(SkVector radii[4]) { … }
static bool radii_are_nine_patch(const SkVector radii[4]) { … }
void SkRRect::setNinePatch(const SkRect& rect, SkScalar leftRad, SkScalar topRad,
SkScalar rightRad, SkScalar bottomRad) { … }
static double compute_min_scale(double rad1, double rad2, double limit, double curMin) { … }
void SkRRect::setRectRadii(const SkRect& rect, const SkVector radii[4]) { … }
bool SkRRect::initializeRect(const SkRect& rect) { … }
static void flush_to_zero(SkScalar& a, SkScalar& b) { … }
bool SkRRect::scaleRadii() { … }
bool SkRRect::checkCornerContainment(SkScalar x, SkScalar y) const { … }
bool SkRRectPriv::IsNearlySimpleCircular(const SkRRect& rr, SkScalar tolerance) { … }
bool SkRRectPriv::AllCornersCircular(const SkRRect& rr, SkScalar tolerance) { … }
bool SkRRect::contains(const SkRect& rect) const { … }
void SkRRect::computeType() { … }
bool SkRRect::transform(const SkMatrix& matrix, SkRRect* dst) const { … }
void SkRRect::inset(SkScalar dx, SkScalar dy, SkRRect* dst) const { … }
size_t SkRRect::writeToMemory(void* buffer) const { … }
void SkRRectPriv::WriteToBuffer(const SkRRect& rr, SkWBuffer* buffer) { … }
size_t SkRRect::readFromMemory(const void* buffer, size_t length) { … }
bool SkRRectPriv::ReadFromBuffer(SkRBuffer* buffer, SkRRect* rr) { … }
SkString SkRRect::dumpToString(bool asHex) const { … }
void SkRRect::dump(bool asHex) const { … }
static bool are_radius_check_predicates_valid(SkScalar rad, SkScalar min, SkScalar max) { … }
bool SkRRect::isValid() const { … }
bool SkRRect::AreRectAndRadiiValid(const SkRect& rect, const SkVector radii[4]) { … }
SkRect SkRRectPriv::InnerBounds(const SkRRect& rr) { … }
SkRRect SkRRectPriv::ConservativeIntersect(const SkRRect& a, const SkRRect& b) { … }