本文整理汇总了C++中VectorMap::calculate_for_region方法的典型用法代码示例。如果您正苦于以下问题:C++ VectorMap::calculate_for_region方法的具体用法?C++ VectorMap::calculate_for_region怎么用?C++ VectorMap::calculate_for_region使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VectorMap
的用法示例。
在下文中一共展示了VectorMap::calculate_for_region方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: draw_to_scale
void Panel::draw_to_scale(const DrawingScaledAttr & attr){
#if defined LEGACY_ICON
sg_vector_primitive_t objs[9];
sg_vector_icon_t icon;
VectorMap map;
sg_size_t x_radius;
sg_size_t y_radius;
Pen p = attr.bitmap().pen();
u32 radius;
map.calculate_for_region(attr.region());
radius = m_radius * SG_MAX/4 / DrawingAttr::scale();
if( attr.height() == attr.width() ){
x_radius = radius;
y_radius = radius;
} else if( attr.height() > attr.width() ){
x_radius = radius * attr.height() / attr.width();
y_radius = radius;
} else {
y_radius = radius * attr.width() / attr.height();
x_radius = radius;
}
icon.total = 9;
icon.fill_total = 1;
icon.primitives = objs;
attr.bitmap().set_pen_flags(Pen::FLAG_IS_FILL);
objs[0] = Vector::line(SG_LEFT+x_radius, SG_TOP, SG_RIGHT-x_radius, SG_TOP);
objs[1] = Vector::line(SG_LEFT+x_radius, SG_BOT, SG_RIGHT-x_radius, SG_BOT);
objs[2] = Vector::line(SG_LEFT, SG_TOP+y_radius, SG_LEFT, SG_BOT-y_radius);
objs[3] = Vector::line(SG_RIGHT, SG_TOP+y_radius, SG_RIGHT, SG_BOT-y_radius);
objs[4] = Vector::arc(SG_LEFT+x_radius, SG_TOP+y_radius, x_radius, y_radius, SG_TRIG_POINTS/2, SG_TRIG_POINTS*3/4);
objs[5] = Vector::arc(SG_LEFT+x_radius, SG_BOT-y_radius, x_radius, y_radius, SG_TRIG_POINTS/4, SG_TRIG_POINTS/2);
objs[6] = Vector::arc(SG_RIGHT-x_radius, SG_TOP+y_radius, x_radius, y_radius, SG_TRIG_POINTS*3/4, SG_TRIG_POINTS);
objs[7] = Vector::arc(SG_RIGHT-x_radius, SG_BOT-y_radius, x_radius, y_radius, 0, SG_TRIG_POINTS/4);
objs[8] = Vector::fill(0, 0);
Vector::draw(attr.bitmap(), icon, map);
attr.bitmap().set_pen(p);
#endif
}