Pangolin
Header-only C++20 plane computational geometry library
Loading...
Searching...
No Matches
bitmatrix.hpp File Reference

One bit per cell over a fixed rectangular window of the integer grid. More...

#include "algorithm/polyominoes.hpp"
#include <algorithm>
#include <array>
#include <bit>
#include <cassert>
#include <cmath>
#include <compare>
#include <concepts>
#include <cstddef>
#include <cstdint>
#include <functional>
#include <iterator>
#include <optional>
#include <ranges>
#include <span>
#include <stdexcept>
#include <type_traits>
#include <utility>
#include <vector>

Go to the source code of this file.

Classes

class  pgl::BitMatrix< TPointType >
 A bit per cell of a rectangular window of the integer grid. More...
class  pgl::BitMatrix< TPointType >::Iterator
 Forward iterator over the set cells, in row-major order. More...

Namespaces

namespace  pgl

Enumerations

enum class  pgl::GridAdjacency { pgl::edge , pgl::vertex }
 Which grid cells count as neighbors. More...

Functions

template<class PointType>
BitMatrix< PointType > pgl::operator+ (const PointType &vector, const BitMatrix< PointType > &matrix)
 Returns the same cells translated by a vector.
template<class PointType>
 pgl::BitMatrix (PointType, int, int) -> BitMatrix< PointType >
template<class PointType, class LabelType>
 pgl::BitMatrix (const Rectangle< PointType, LabelType > &) -> BitMatrix< PointType >
template<class PointType, class LabelType>
 pgl::BitMatrix (const PolygonWithHoles< PointType, LabelType > &) -> BitMatrix< PointType >
template<class PointType, class LabelType>
 pgl::BitMatrix (const Polygon< PointType, LabelType > &) -> BitMatrix< PointType >
template<class PointType, class LabelType>
 pgl::BitMatrix (const PolygonSet< PointType, LabelType > &) -> BitMatrix< PointType >
template<std::ranges::input_range Range>
requires (detail::is_point_v<std::remove_cvref_t<std::ranges::range_value_t<Range>>> && !AnyShapeConcept<std::remove_cvref_t
<Range>> && !detail::is_bit_matrix_v<std::remove_cvref_t<Range>>)
 pgl::BitMatrix (Range &&) -> BitMatrix< std::remove_cvref_t< std::ranges::range_value_t< Range > > >
template<class PointType, class ShapeType>
BitMatrix< PointType > pgl::outerRaster (const ShapeType &shape, const Rectangle< PointType > &window)
 Rasterizes a shape into the cells it meets: its outer approximation.
template<class PointType, class ShapeType>
BitMatrix< PointType > pgl::innerRaster (const ShapeType &shape, const Rectangle< PointType > &window)
 Rasterizes a shape into the cells it covers: its inner approximation.
template<class PointType = Point<int>, class ShapeType>
requires std::signed_integral< std::remove_cvref_t<decltype(std::declval<const ShapeType&>().bbox().min().x())>>
BitMatrix< PointType > pgl::outerRaster (const ShapeType &shape)
 Rasterizes a bounded shape over its own bounding box.
template<class PointType = Point<int>, class ShapeType>
requires std::signed_integral< std::remove_cvref_t<decltype(std::declval<const ShapeType&>().bbox().min().x())>>
BitMatrix< PointType > pgl::innerRaster (const ShapeType &shape)
 Rasterizes a bounded shape over its own bounding box.

Detailed Description

One bit per cell over a fixed rectangular window of the integer grid.