本文整理汇总了C++中CGESTUREptr::pts方法的典型用法代码示例。如果您正苦于以下问题:C++ CGESTUREptr::pts方法的具体用法?C++ CGESTUREptr::pts怎么用?C++ CGESTUREptr::pts使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGESTUREptr
的用法示例。
在下文中一共展示了CGESTUREptr::pts方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: assert
int
SELECT_WIDGET::stroke_cb(CGESTUREptr& g, DrawState*&)
{
assert(g);
select_faces(g->pts()) || select_edges(g->pts());
return 1;
}
示例2: find_matching_sil
bool
OVERSKETCH::find_matching_sil(CGESTUREptr& g)
{
err_adv(debug, "OVERSKETCH::find_matching_sil");
const size_t MIN_GEST_PTS = 10;
if (!(g && g->pts().size() >= MIN_GEST_PTS))
return false;
if (BMESH::_freeze_sils)
return false;
VisRefImage *vis_ref = VisRefImage::lookup(VIEW::peek());
if (!vis_ref)
return false;
// 1. see if the gesture runs along a silhouette
// of a single mesh.
SilEdgeFilter sil_filter;
const PIXEL_list& pts = g->pts();
BMESHptr mesh = nullptr;
for (PIXEL_list::size_type i=0; i<pts.size(); i++) {
Bedge* e = (Bedge*)
vis_ref->find_near_simplex(pts[i], SIL_SEARCH_RAD, sil_filter);
if (!(e && e->mesh())) {
err_adv(debug, " gesture too far from silhouette");
return false;
}
if (mesh && mesh != e->mesh()) {
err_adv(debug, " found a second mesh, rejecting");
return false;
}
mesh = e->mesh();
}
if (!dynamic_pointer_cast<LMESH>(mesh)) {
err_adv(debug, " found non-LMESH, rejecting");
return false;
}
err_adv(debug, " gesture aligns with silhouette");
err_adv(debug, " mesh level %d", mesh->subdiv_level());
// 2. extract the portion of the silhouette that matches
// the gesture, store in _selected_sils
return find_matching_sil(pts, mesh->sil_strip());
}
示例3: BBoxCell
bool
PatternPen::compute_target_cell(CGESTUREptr& gest){
if (_target_cell) {
print_target_cell();
}
int nb_pts = gest->pts().num();
if (nb_pts < 2) return false;
if (_current_cell_type == BBOX_CELL){
_target_cell = new BBoxCell(gest->pts()[0], gest->pts()[nb_pts-1]);
} else if (_current_cell_type == RECT_CELL){
double thickness;
GESTUREptr axis_gesture;
update_rect_drawer(gest, axis_gesture, thickness);
if (axis_gesture) {
_target_cell = new RectCell(axis_gesture, thickness);
} else {
return false;
}
} else if (_current_cell_type == PATH_CELL){
double thickness;
GESTUREptr axis_gesture;
update_path_drawer(gest, axis_gesture, thickness);
if (axis_gesture) {
_target_cell = new PathCell(axis_gesture, thickness);
} else {
return false;
}
} else if (_current_cell_type == CARRIER_CELL){
GESTUREptr first_gesture;
GESTUREptr second_gesture;
update_carrier_drawer(gest, first_gesture, second_gesture);
if (first_gesture) {
_target_cell = new CarriersCell(first_gesture, second_gesture);
} else {
return false;
}
} else {
return false;
}
_target_cell->set_global_scale(_current_global_scale);
return true;
}
示例4: assert
int
OVERSKETCH::stroke_cb(CGESTUREptr& gest, DrawState*& s)
{
err_adv(debug, "OVERSKETCH::stroke_cb");
assert(gest);
try_oversketch(gest->pts());
return 1; // This means we did use up the gesture
}
示例5: assert
bool
PAPER_DOLL::init(CGESTUREptr& g)
{
if (!(g && g->is_stroke()))
return false;
if (g->below_min_length() || g->below_min_spread())
return false;
if (!g->is_ellipse()) {
err_adv(debug, "PAPER_DOLL::init: non-ellipse");
return false;
}
Panel* p = dynamic_cast<Panel*>(
Bsurface::get_surface(get_top_level(VisRefImage::get_faces(g->pts())))
);
err_adv(debug, "PAPER_DOLL::init: %s panel", p?"found":"could not find");
if (!(p && p->is_selected())) {
err_adv(debug, "PAPER_DOLL::init: ellipse not over selected panel");
return false;
}
assert(p && p->bfaces().size() > 0);
Bface_list faces = Bface_list::reachable_faces(p->bfaces().front());
assert(!faces.empty());
if (!faces.is_planar(deg2rad(1.0))) {
err_adv(debug, "PAPER_DOLL::init: region is not planar");
return false;
}
EdgeStrip boundary = faces.get_boundary();
if (boundary.empty()) {
err_adv(debug, "PAPER_DOLL::init: region has no boundary");
return false;
}
Bsurface_list surfs = Bsurface::get_surfaces(faces);
if (!are_all_bsurfaces<Panel>(surfs)) {
err_adv(debug, "PAPER_DOLL::init: region not all panels");
return 0;
}
err_adv(debug, "PAPER_DOLL::init: proceeding...");
err_adv(debug, " boundary edges: %d, components: %d, panels: %d",
boundary.edges().size(), boundary.num_line_strips(), surfs.num()
);
if (get_instance()->build_primitive(faces)) {
err_adv(debug, " ... succeeded");
return true;
}
err_adv(debug, " ... failed");
return false;
}
示例6: stroke
///////////////////
// Proxy methods
///////////////////
void
PatternPen::add_stroke_to_proxy(CGESTUREptr& gest)
{
if (gest->pts().num() < 2) {
WORLD::message("Failed to generate hatch stroke (too few samples)...");
return;
}
//NDCpt_list ndcpts = gest->pts();
//if (_pattern_texture)
//_pattern_texture->proxy_surface()->add(
// gest->pts(),gest->pressures(), _gesture_drawer->base_stroke_proto());
}