#include "core/fxge/cfx_path.h"
#include <math.h>
#include <algorithm>
#include <array>
#include <iterator>
#include "core/fxcrt/check_op.h"
#include "core/fxcrt/fx_system.h"
namespace {
bool IsRectPreTransform(const std::vector<CFX_Path::Point>& points) { … }
bool XYBothNotEqual(const CFX_PointF& p1, const CFX_PointF& p2) { … }
bool IsRectImpl(const std::vector<CFX_Path::Point>& points) { … }
CFX_FloatRect CreateRectFromPoints(const CFX_PointF& p1, const CFX_PointF& p2) { … }
bool PathPointsNeedNormalization(const std::vector<CFX_Path::Point>& points) { … }
std::vector<CFX_Path::Point> GetNormalizedPoints(
const std::vector<CFX_Path::Point>& points) { … }
void UpdateLineEndPoints(CFX_FloatRect* rect,
const CFX_PointF& start_pos,
const CFX_PointF& end_pos,
float hw) { … }
void UpdateLineJoinPoints(CFX_FloatRect* rect,
const CFX_PointF& start_pos,
const CFX_PointF& mid_pos,
const CFX_PointF& end_pos,
float half_width,
float miter_limit) { … }
}
CFX_Path::Point::Point() = default;
CFX_Path::Point::Point(const CFX_PointF& point, Type type, bool close)
: … { … }
CFX_Path::Point::Point(const Point& other) = default;
CFX_Path::Point::~Point() = default;
CFX_Path::CFX_Path() = default;
CFX_Path::CFX_Path(const CFX_Path& src) = default;
CFX_Path::CFX_Path(CFX_Path&& src) noexcept = default;
CFX_Path::~CFX_Path() = default;
void CFX_Path::Clear() { … }
void CFX_Path::ClosePath() { … }
void CFX_Path::Append(const CFX_Path& src, const CFX_Matrix* matrix) { … }
void CFX_Path::AppendPoint(const CFX_PointF& point, Point::Type type) { … }
void CFX_Path::AppendPointAndClose(const CFX_PointF& point, Point::Type type) { … }
void CFX_Path::AppendLine(const CFX_PointF& pt1, const CFX_PointF& pt2) { … }
void CFX_Path::AppendFloatRect(const CFX_FloatRect& rect) { … }
void CFX_Path::AppendRect(float left, float bottom, float right, float top) { … }
CFX_FloatRect CFX_Path::GetBoundingBox() const { … }
CFX_FloatRect CFX_Path::GetBoundingBoxForStrokePath(float line_width,
float miter_limit) const { … }
void CFX_Path::Transform(const CFX_Matrix& matrix) { … }
bool CFX_Path::IsRect() const { … }
std::optional<CFX_FloatRect> CFX_Path::GetRect(const CFX_Matrix* matrix) const { … }
CFX_RetainablePath::CFX_RetainablePath() = default;
CFX_RetainablePath::CFX_RetainablePath(const CFX_RetainablePath& src)
: … { … }
CFX_RetainablePath::~CFX_RetainablePath() = default;
RetainPtr<CFX_RetainablePath> CFX_RetainablePath::Clone() const { … }