本文整理汇总了C++中CGESTUREptr::center方法的典型用法代码示例。如果您正苦于以下问题:C++ CGESTUREptr::center方法的具体用法?C++ CGESTUREptr::center怎么用?C++ CGESTUREptr::center使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGESTUREptr
的用法示例。
在下文中一共展示了CGESTUREptr::center方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: cancel_cb
int
SELECT_WIDGET::tap_cb(CGESTUREptr& g, DrawState*& s)
{
err_adv(debug, "SELECT_WIDGET::tap_cb()");
assert(g && g->is_tap());
if (_mode==SLASH_SEL)
{
//pattern editing
Bface* f = find_face(g->start(),0.25,MIN_PIX_AREA);
if (f) {
if (select_list.contains(f)||select_list.contains(f->quad_partner()))
{
//get whichever part of the quad is in the selection list
int temp = select_list.contains(f) ? select_list.get_index(f)+1 : select_list.get_index(f->quad_partner())+1 ;
if (temp>end_face) //user selected the end face
{
end_face=temp;
}
else //user is selecting a pattern
{
if (pattern<temp)
pattern=temp;
//select/deselect face
if (temp < MAX_PATTERN_SIZE)
pattern_array[temp]=!pattern_array[temp];
}
return 1;
}
else
cerr << "tap found a NULL face !" << endl;
}
return cancel_cb(g,s);
}
else
{
// Tap a selected face near the middle to deselect it:
if (try_deselect_face(g->center(), 0.25))
return 1;
// Tap edge to deselect
if (try_deselect_edge(g->center()))
return 1;
}
// Otherwise, turn off SELECT_WIDGET
return cancel_cb(g,s);
}
示例2:
int
SELECT_WIDGET::sm_circle_cb(CGESTUREptr& g, DrawState*& s)
{
err_adv(debug, "SELECT_WIDGET::sm_circle_cb()");
try_select_face(g->center(), 0.25) || try_select_edge(g->center());
return 1;
}
示例3:
int
NPRPen::tap_cb(CGESTUREptr& gest, DrawState*&)
{
cerr << "NPRPen::tap_cb" << endl;
Bface *f = VisRefImage::Intersect(gest->center());
Patch* p = get_ctrl_patch(f);
if (!(f && p)) {
if (_curr_npr_tex)
deselect_current_texture();
return 0;
}
// Set the selected face's patch to using NPRTexture
// It might already be doing this, but who cares!
p->set_texture(NPRTexture::static_name());
GTexture* cur_texture = p->cur_tex();
NPRTexture* nt = dynamic_cast<NPRTexture*>(cur_texture);
if (nt == nullptr)
return 0; //Shouldn't happen
if (_curr_npr_tex)
{
if (_curr_npr_tex != nt)
{
deselect_current_texture();
select_current_texture(nt);
}
}
else
select_current_texture(nt);
return 0;
}
示例4: ray
int
XformPen::tap_cb(CGESTUREptr& tap, DrawState*& s)
{
assert(tap);
if (tap->is_double_tap()) {
// should never happen given order of arcs in XformPen constructor
cerr << "XformPen::tap_cb: error: gesture is double tap"
<< endl;
return 0;
}
// tap on cursor?
BMESHray ray(tap->center());
_view->intersect(ray);
Cursor3D* c = Cursor3D::upcast(ray.geom());
if (c) {
err_adv(debug, "XformPen::tap_cb: hit axis");
c->handle_gesture(tap);
return 0;
}
// tap on mesh?
_mesh = 0;
Bface* f = cur_face();
if (!f) {
err_adv(debug, "XformPen::tap_cb: missed face");
return cancel_cb(tap, s);
}
BMESH* m = f->mesh();
if (!m) {
err_adv(debug, "XformPen::tap_cb: hit face, no mesh");
return cancel_cb(tap, s);
}
GEOMptr g = bmesh_to_geom(m);
if (!g) {
err_adv(debug, "XformPen::tap_cb: hit mesh, no geom");
return cancel_cb(tap, s);
}
// skip floor:
if (FLOOR::isa(g)) {
err_adv(debug, "XformPen::tap_cb: hit floor, skipping...");
return cancel_cb(tap, s);
}
// tap on ordinary mesh (not floor):
_mesh = m;
assert(_mesh);
BMESH::set_focus(_mesh, f->patch());
FLOOR::show();
FLOOR::realign(_mesh,0); // 0 = no undo command
Cursor3D::attach(g);
return 0;
}
示例5: activate
//! Currently checks to see that the gesture was a small circle.
//! If so, this may be an indication that the user wants to go
//! into edge selection mode. It then executes try_select_edge()
//! to try to find the edge. When successful, the widget enters
//! edge selection mode.
bool
SELECT_WIDGET::init_select_edge(CGESTUREptr& g)
{
if (!g->is_small_circle())
return false;
if (!try_select_edge(g->center()))
return false;
_mode = SEL_EDGE;
reset_timeout();
activate();
return true;
}
示例6: stroke_cb
int
PatternPen::tap_cb(CGESTUREptr& gest, DrawState*& s){
// err_msg("PatternPen::tap_cb()");
if (_mode == PROXY){
Bface* f;
f = VisRefImage::Intersect(gest->center());
if(f)
init_proxy(f);
} else {
return stroke_cb(gest, s);
}
return 1;
}
示例7: do_uniform_sweep
int
SWEEP_BASE::tap_cb(CGESTUREptr& g, DrawState*& s)
{
err_adv(debug_all, "SWEEP_BASE::tap_cb");
// tap near end of guideline: do uniform sweep based
// on guideline length:
if (g->center().dist(sweep_end()) < DIST_THRESH_PIXELS)
return do_uniform_sweep(sweep_vec());
// tap elsewhere on the guideline: do uniform sweep based
// on tap location:
if (hits_line(g->end()))
return do_uniform_sweep(project_to_guideline(g->end()) - sweep_origin());
// tap elsewhere: cancel:
return cancel_cb(g,s);
}
示例8: dist
/// pixel-space distance between this gesture and the one provided, computed as distance between centers
double dist(CGESTUREptr& g) const { return center().dist(g->center()); }