29 IndexRange(uint z0, uint z1, uint y0, uint y1, uint x0, uint x1) : Z0(z0), Z1(z1), Y0(y0), Y1(y0), X0(x0), X1(x1) { }
33 uint countX()
const {
return X1 - X0 + 1; }
34 uint countY()
const {
return Y1 - Y0 + 1; }
35 uint countXY()
const {
return countX() * countY(); }
36 uint countZ()
const {
return Z1 - Z0 + 1; }
37 uint count()
const {
return countXY() * countZ(); }
43 void reserve(uint N) { }
44 virtual void writeRangeZYX(uint Z0, uint Z1, uint Y0, uint Y1, uint X0, uint X1) = 0;
45 void writeRangeZX(uint Z0, uint Z1, uint Y, uint X0, uint X1) { writeRangeZYX(Z0, Z1, Y, Y, X0, X1); }
46 void writeRangeZY(uint Z0, uint Z1, uint Y0, uint Y1, uint X) { writeRangeZYX(Z0, Z1, Y0, Y1, X, X); }
47 void writeRangeYX(uint Z, uint Y0, uint Y1, uint X0, uint X1) { writeRangeZYX(Z, Z, Y0, Y1, X0, X1); }
48 void writeRangeY(uint Z, uint Y0, uint Y1, uint X) { writeRangeZYX(Z, Z, Y0, Y1, X, X); }
49 void writeRangeX(uint Z, uint Y, uint X0, uint X1) { writeRangeZYX(Z, Z, Y, Y, X0, X1); }
54 void reserve(uint N) { mRanges.reserve(mRanges.size() + N); }
55 void writeRangeZYX(uint Z0, uint Z1, uint Y0, uint Y1, uint X0, uint X1)
override { mRanges.emplace_back(Z0, Z1, Y0, Y1, X0, X1); }
56 const std::vector<IndexRange>& getRanges()
const {
return mRanges; }
58 std::vector<IndexRange> mRanges;
61template<
class ROP>
class Rasterizer
64 Rasterizer(
const UniformGrid25 &G) : mGrid(G) { mTolerance = G.EdgeLen / 1024.0; }
67 void setExpansion(Real s) { mExpansion = s; }
74 void rasterizeFill(
const Bbox_2&, uint Z0, uint Z1);
75 void rasterizeLine(
const Bbox_2&, uint Z0, uint Z1);
78 void rasterizeFill(
const Segment_25&, uint Z0, uint Z1);
79 void rasterizeLine(
const Segment_25&, uint Z0, uint Z1);
80 void rasterizeFill(
const WideSegment_25&, uint capsMask = RASTERIZE_CAPS_MASK_BOTH);
81 void rasterizeLine(
const WideSegment_25&, uint capsMask = RASTERIZE_CAPS_MASK_BOTH);
82 void rasterizeFill(
const WideSegment_25&, uint capsMask, uint Z0, uint Z1);
83 void rasterizeLine(
const WideSegment_25&, uint capsMask, uint Z0, uint Z1);
84 void rasterizeFill(
const Circle_2&, uint Z0, uint Z1);
85 void rasterizeLine(
const Circle_2&, uint Z0, uint Z1);
86 void rasterizeFill(
const Triangle_2&, uint Z0, uint Z1);
87 void rasterizeLine(
const Triangle_2&, uint Z0, uint Z1);
88 void rasterizeFill(
const Polygon_2&, uint Z0, uint Z1);
89 void rasterizeLine(
const Polygon_2&, uint Z0, uint Z1);
91 void rasterizeFill(
const AShape *, uint Z0, uint Z1);
92 void rasterizeLine(
const AShape *, uint Z0, uint Z1);
94 void rasterizeFill(
const Track&, uint mask = RASTERIZE_MASK_ALL);
95 void rasterizeLine(
const Track&);
97 void rasterizeRanges(
const std::vector<IndexRange>&);
100 void rasterizeDSegment(
const Segment_2&, uint Z0, uint Z1, Real ex);
101 void rasterizeHSegment(
const Segment_2&, uint Z0, uint Z1, Real ex);
102 void rasterizeVSegment(
const Segment_2&, uint Z0, uint Z1, Real ex);
103 void rasterizeDSegmentLine(
const Segment_2&, uint Z0, uint Z1);
104 void rasterizeHSegmentLine(
const Segment_2&, uint Z0, uint Z1);
105 void rasterizeVSegmentLine(
const Segment_2&, uint Z0, uint Z1);
109 Real mExpansion{0.0};