本文整理汇总了C++中PointerEvent::pos方法的典型用法代码示例。如果您正苦于以下问题:C++ PointerEvent::pos方法的具体用法?C++ PointerEvent::pos怎么用?C++ PointerEvent::pos使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PointerEvent
的用法示例。
在下文中一共展示了PointerEvent::pos方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: on_pointer_thumb_press
void SliderViewImpl::on_pointer_thumb_press(PointerEvent &e)
{
if (_state_disabled)
return;
_state_pressed = true;
update_state();
mouse_down_mode = mouse_down_thumb_drag;
thumb_move_start_position = _position;
mouse_drag_start_pos = e.pos(track.get());
}
示例2: get_selection_index
int ListBoxViewImpl::get_selection_index(PointerEvent &e)
{
int index = 0;
for (auto &view : listbox->content_view()->children())
{
if (view->geometry().border_box().contains(e.pos(listbox->content_view())))
return index;
index++;
}
return -1;
}
示例3: dispatch_hot_event
void WindowView_Impl::dispatch_hot_event(std::shared_ptr<View> &view, PointerEvent &e)
{
if (view != hot_view)
{
if (hot_view)
{
PointerEvent e_exit(PointerEventType::leave, PointerButton::none, e.pos(window_view->root_view()), e.alt_down(), e.shift_down(), e.ctrl_down(), e.cmd_down());
hot_view->dispatch_event(&e_exit, true);
}
hot_view = view;
if (hot_view)
{
PointerEvent e_enter(PointerEventType::enter, PointerButton::none, e.pos(window_view->root_view()), e.alt_down(), e.shift_down(), e.ctrl_down(), e.cmd_down());
hot_view->dispatch_event(&e_enter, true);
}
}
if (hot_view)
hot_view->update_cursor(window);
}
示例4: on_pointer_move
void SliderViewImpl::on_pointer_move(PointerEvent &e)
{
if (_state_disabled)
return;
if (mouse_down_mode != mouse_down_thumb_drag)
{
return;
}
Pointf mouse_pos(e.pos(track.get()));
Rectf track_geometry(track->geometry().content_box());
int last_position = _position;
if (mouse_pos.x < -100 || mouse_pos.x > track_geometry.get_width() + 100 || mouse_pos.y < -100 || mouse_pos.y > track_geometry.get_height() + 100)
{
_position = thumb_move_start_position;
}
else
{
if (slider->horizontal())
{
int delta = (mouse_pos.x - mouse_drag_start_pos.x);
_position = thumb_move_start_position + (delta * (_max_position - _min_position)) / (track->geometry().content_box().get_width());
}
else
{
int delta = (mouse_pos.y - mouse_drag_start_pos.y);
_position = thumb_move_start_position + (delta * (_max_position - _min_position)) / (track->geometry().content_box().get_height());
}
}
if (_position > _max_position)
_position = _max_position;
if (_position < _min_position)
_position = _min_position;
if (_lock_to_ticks)
{
int remainder = (_position - _min_position) % _tick_count;
_position = _position - remainder;
}
if (last_position != _position)
{
if (_func_value_changed)
_func_value_changed();
slider->set_needs_layout();
}
}
示例5: on_pointer_track_press
void SliderViewImpl::on_pointer_track_press(PointerEvent &e)
{
if (_state_disabled)
return;
if (e.target() == thumb) // Thumb control handled elsewhere
return;
float mouse_pos;
Rectf thumb_geometry(thumb->geometry().content_box());
float thumb_position;
if (slider->horizontal())
{
mouse_pos = e.pos(track.get()).x;
thumb_position = thumb_geometry.left + thumb_geometry.get_width() / 2.0f;
timer_target_position = _min_position + mouse_pos * ((_max_position - _min_position)) / (track->geometry().content_box().get_width());
}
else
{
mouse_pos = e.pos(track.get()).y;
thumb_position = thumb_geometry.top + thumb_geometry.get_height() / 2.0f;
timer_target_position = _min_position + mouse_pos * ((_max_position - _min_position)) / (track->geometry().content_box().get_height());
}
if (mouse_pos < thumb_position)
{
mouse_down_mode = mouse_down_track_decr;
timer_step_size = -_page_step;
}
else
{
mouse_down_mode = mouse_down_track_incr;
timer_step_size = _page_step;
}
scroll_timer_expired();
}
示例6: window_pointer_event
void WindowView_Impl::window_pointer_event(PointerEvent &e)
{
std::shared_ptr<View> view_above_cursor = window_view->find_view_at(e.pos(window_view));
auto view = get_capture_view(e, view_above_cursor);
if (!view)
view = view_above_cursor;
dispatch_hot_event(view, e);
if (e.type() == PointerEventType::enter || e.type() == PointerEventType::leave) // Ignore window enter/leave events
return;
if (view)
view->dispatch_event(&e);
else
window_view->dispatch_event(&e);
}