Skip to content

Commit

Permalink
Reformat C++ files with clang-format
Browse files Browse the repository at this point in the history
  • Loading branch information
dbaston committed Dec 10, 2023
1 parent 0a03ee8 commit ff2c9c7
Show file tree
Hide file tree
Showing 76 changed files with 5,706 additions and 5,055 deletions.
6 changes: 6 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
Language: Cpp
BasedOnStyle: Mozilla
ColumnLimit: 0
IndentWidth: 4
TabWidth: 4
4 changes: 3 additions & 1 deletion python/src/pybindings/feature_bindings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ namespace exactextract {
class PyFeatureBase : public Feature
{
public:
PyFeatureBase() : m_context(initGEOS_r(nullptr, nullptr)), m_geom(nullptr)
PyFeatureBase()
: m_context(initGEOS_r(nullptr, nullptr))
, m_geom(nullptr)
{
}

Expand Down
3 changes: 2 additions & 1 deletion python/src/pybindings/raster_source_bindings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@ class PyRasterSource : public PyRasterSourceBase
PYBIND11_OVERRIDE_PURE(py::array, PyRasterSource, read_window, x0, y0, nx, ny);
}

py::object nodata_value() const override {
py::object nodata_value() const override
{
PYBIND11_OVERRIDE_PURE(py::object, PyRasterSource, nodata_value);
}
};
Expand Down
195 changes: 104 additions & 91 deletions src/box.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,120 +18,133 @@

namespace exactextract {

static inline double clamp(double x, double low, double high) {
return std::min(std::max(x, low), high);
static inline double
clamp(double x, double low, double high)
{
return std::min(std::max(x, low), high);
}

Side
Box::side(const Coordinate& c) const
{
if (c.x == xmin) {
return Side::LEFT;
} else if (c.x == xmax) {
return Side::RIGHT;
} else if (c.y == ymin) {
return Side::BOTTOM;
} else if (c.y == ymax) {
return Side::TOP;
}

Side Box::side(const Coordinate &c) const {
if (c.x == xmin) {
return Side::LEFT;
} else if (c.x == xmax) {
return Side::RIGHT;
} else if (c.y == ymin) {
return Side::BOTTOM;
} else if (c.y == ymax) {
return Side::TOP;
return Side::NONE;
}

Crossing
Box::crossing(const Coordinate& c1, const Coordinate& c2) const
{
// vertical line
if (c1.x == c2.x) {
if (c2.y >= ymax) {
return Crossing{ Side::TOP, c1.x, ymax };
} else if (c2.y <= ymin) {
return Crossing{ Side::BOTTOM, c1.x, ymin };
} else {
throw std::runtime_error("Never get here.");
}
}

return Side::NONE;
// horizontal line
if (c1.y == c2.y) {
if (c2.x >= xmax) {
return Crossing{ Side::RIGHT, xmax, c1.y };
} else if (c2.x <= xmin) {
return Crossing{ Side::LEFT, xmin, c1.y };
} else {
throw std::runtime_error("Never get here");
}
}

Crossing Box::crossing(const Coordinate &c1, const Coordinate &c2) const {
// vertical line
if (c1.x == c2.x) {
if (c2.y >= ymax) {
return Crossing{Side::TOP, c1.x, ymax};
} else if (c2.y <= ymin) {
return Crossing{Side::BOTTOM, c1.x, ymin};
double m = std::abs((c2.y - c1.y) / (c2.x - c1.x));

bool up = c2.y > c1.y;
bool right = c2.x > c1.x;

if (up) {
if (right) {
// 1st quadrant
double y2 = c1.y + m * (xmax - c1.x);

if (y2 < ymax) {
return Crossing{ Side::RIGHT, xmax, clamp(y2, ymin, ymax) };
} else {
throw std::runtime_error("Never get here.");
double x2 = c1.x + (ymax - c1.y) / m;
return Crossing{ Side::TOP, clamp(x2, xmin, xmax), ymax };
}
}
} else {
// 2nd quadrant
double y2 = c1.y + m * (c1.x - xmin);

// horizontal line
if (c1.y == c2.y) {
if (c2.x >= xmax) {
return Crossing{Side::RIGHT, xmax, c1.y};
} else if (c2.x <= xmin) {
return Crossing{Side::LEFT, xmin, c1.y};
if (y2 < ymax) {
return Crossing{ Side::LEFT, xmin, clamp(y2, ymin, ymax) };
} else {
throw std::runtime_error("Never get here");
double x2 = c1.x - (ymax - c1.y) / m;
return Crossing{ Side::TOP, clamp(x2, xmin, xmax), ymax };
}
}
} else {
if (right) {
// 4th quadrant
double y2 = c1.y - m * (xmax - c1.x);

double m = std::abs((c2.y - c1.y) / (c2.x - c1.x));

bool up = c2.y > c1.y;
bool right = c2.x > c1.x;

if (up) {
if (right) {
// 1st quadrant
double y2 = c1.y + m * (xmax - c1.x);

if (y2 < ymax) {
return Crossing{Side::RIGHT, xmax, clamp(y2, ymin, ymax)};
} else {
double x2 = c1.x + (ymax - c1.y) / m;
return Crossing{Side::TOP, clamp(x2, xmin, xmax), ymax};
}
if (y2 > ymin) {
return Crossing{ Side::RIGHT, xmax, clamp(y2, ymin, ymax) };
} else {
// 2nd quadrant
double y2 = c1.y + m * (c1.x - xmin);

if (y2 < ymax) {
return Crossing{Side::LEFT, xmin, clamp(y2, ymin, ymax)};
} else {
double x2 = c1.x - (ymax - c1.y) / m;
return Crossing{Side::TOP, clamp(x2, xmin, xmax), ymax};
}
double x2 = c1.x + (c1.y - ymin) / m;
return Crossing{ Side::BOTTOM, clamp(x2, xmin, xmax), ymin };
}
} else {
if (right) {
// 4th quadrant
double y2 = c1.y - m * (xmax - c1.x);

if (y2 > ymin) {
return Crossing{Side::RIGHT, xmax, clamp(y2, ymin, ymax)};
} else {
double x2 = c1.x + (c1.y - ymin) / m;
return Crossing{Side::BOTTOM, clamp(x2, xmin, xmax), ymin};
}
// 3rd quadrant
double y2 = c1.y - m * (c1.x - xmin);

if (y2 > ymin) {
return Crossing{ Side::LEFT, xmin, clamp(y2, ymin, ymax) };
} else {
// 3rd quadrant
double y2 = c1.y - m * (c1.x - xmin);

if (y2 > ymin) {
return Crossing{Side::LEFT, xmin, clamp(y2, ymin, ymax)};
} else {
double x2 = c1.x - (c1.y - ymin) / m;
return Crossing{Side::BOTTOM, clamp(x2, xmin, xmax), ymin};
}
double x2 = c1.x - (c1.y - ymin) / m;
return Crossing{ Side::BOTTOM, clamp(x2, xmin, xmax), ymin };
}
}

}
}

bool Box::contains(const Box& b) const {
return b.xmin >= xmin && b.xmax <= xmax && b.ymin >= ymin && b.ymax <= ymax;
}
bool
Box::contains(const Box& b) const
{
return b.xmin >= xmin && b.xmax <= xmax && b.ymin >= ymin && b.ymax <= ymax;
}

bool Box::contains(const Coordinate &c) const {
return c.x >= xmin && c.x <= xmax && c.y >= ymin && c.y <= ymax;
}
bool
Box::contains(const Coordinate& c) const
{
return c.x >= xmin && c.x <= xmax && c.y >= ymin && c.y <= ymax;
}

bool Box::strictly_contains(const Coordinate &c) const {
return c.x > xmin && c.x < xmax && c.y > ymin && c.y < ymax;
}
bool
Box::strictly_contains(const Coordinate& c) const
{
return c.x > xmin && c.x < xmax && c.y > ymin && c.y < ymax;
}

std::ostream &operator<<(std::ostream &os, const Box &b) {
os << "POLYGON ((";
os << b.xmin << " " << b.ymin << ", ";
os << b.xmax << " " << b.ymin << ", ";
os << b.xmax << " " << b.ymax << ", ";
os << b.xmin << " " << b.ymax << ", ";
os << b.xmin << " " << b.ymin << "))";
return os;
}
std::ostream&
operator<<(std::ostream& os, const Box& b)
{
os << "POLYGON ((";
os << b.xmin << " " << b.ymin << ", ";
os << b.xmax << " " << b.ymin << ", ";
os << b.xmax << " " << b.ymax << ", ";
os << b.xmin << " " << b.ymax << ", ";
os << b.xmin << " " << b.ymin << "))";
return os;
}

}
Loading

0 comments on commit ff2c9c7

Please sign in to comment.