本文整理汇总了C++中PathIterator::vertex方法的典型用法代码示例。如果您正苦于以下问题:C++ PathIterator::vertex方法的具体用法?C++ PathIterator::vertex怎么用?C++ PathIterator::vertex使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PathIterator
的用法示例。
在下文中一共展示了PathIterator::vertex方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: while
void
clip_to_rect(PathIterator& path,
double x0, double y0, double x1, double y1,
bool inside, std::vector<Polygon>& results)
{
double xmin, ymin, xmax, ymax;
if (x0 < x1)
{
xmin = x0;
xmax = x1;
}
else
{
xmin = x1;
xmax = x0;
}
if (y0 < y1)
{
ymin = y0;
ymax = y1;
}
else
{
ymin = y1;
ymax = y0;
}
if (!inside)
{
std::swap(xmin, xmax);
std::swap(ymin, ymax);
}
Polygon polygon1, polygon2;
double x = 0, y = 0;
unsigned code = 0;
path.rewind(0);
do
{
// Grab the next subpath and store it in polygon1
polygon1.clear();
do
{
if (code == agg::path_cmd_move_to)
{
polygon1.push_back(XY(x, y));
}
code = path.vertex(&x, &y);
if (code == agg::path_cmd_stop)
{
break;
}
if (code != agg::path_cmd_move_to)
{
polygon1.push_back(XY(x, y));
}
}
while ((code & agg::path_cmd_end_poly) != agg::path_cmd_end_poly);
// The result of each step is fed into the next (note the
// swapping of polygon1 and polygon2 at each step).
clip_to_rect_one_step(polygon1, polygon2, clip_to_rect_filters::xlt(xmax));
clip_to_rect_one_step(polygon2, polygon1, clip_to_rect_filters::xgt(xmin));
clip_to_rect_one_step(polygon1, polygon2, clip_to_rect_filters::ylt(ymax));
clip_to_rect_one_step(polygon2, polygon1, clip_to_rect_filters::ygt(ymin));
// Empty polygons aren't very useful, so skip them
if (polygon1.size())
{
results.push_back(polygon1);
}
}
while (code != agg::path_cmd_stop);
}