Beispiel #1
0
void dial_view::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
  o_dial_widget->mInitPos = event->pos();
  QLineF line(boundingRect().center(), o_dial_widget->mInitPos);
  QLineF base_line(boundingRect().width() / 2, 0.0, boundingRect().center().x(),
                   boundingRect().center().y());
  o_dial_widget->mAngle = angle_to(line, base_line) - 180;
  o_dial_widget->m_is_pressed = 1;
  update();

  std::for_each(std::begin(o_dial_widget->m_on_dial_callback_list),
                std::end(o_dial_widget->m_on_dial_callback_list),
                [=](on_dial_callback_func a_func) {

    if (a_func)
      a_func(o_dial_widget->mProgressValue);
  });
}
Beispiel #2
0
ts::Vector2<double> ts::graphics::Text::character_position(std::size_t index) const
{
    if (geometry_.dirty)
    {
        update_geometry();
    }

    if (index >= geometry_.character_offsets.size())
    {
        return Vector2<double>();
    }

    Vector2<double> result;
    result.x = geometry_.character_offsets[index];
    result.y = base_line(index);

    return result;
}
Beispiel #3
0
	//RAII constructor
	Curve(const std::vector<vec2>& _vertexes) {
		const int size = _vertexes.size();

		vertexes.resize(size);

		for (int i = 0; i < size; i++)
			vertexes[i] = curve_vertex(_vertexes[i]);

		std::sort(vertexes.begin(), vertexes.end(), [](const curve_vertex& v1, const curve_vertex& v2) -> bool {return v1.x < v2.x; });
		line base_line(vertexes[0], vertexes[size - 1]);


		//path tracing
		int next_vertex_index = -1;
		int p = 0;
		while (next_vertex_index != size - 1) {
			for (int i = p + 1; i < size; i++) {
				float vertex_check_result = base_line.vertex_check(vertexes[i]);
				if (vertex_check_result >= 0.0f || floats_equal(vertex_check_result, 0.0f)) {
					vertexes[p].next_vertex_index = i;
					next_vertex_index = i;
					p = next_vertex_index;
				}
			}
		}

		//reverse path tracing
		next_vertex_index = -1;
		p = size - 1;;
		while (next_vertex_index != 0) {
			for (int i = p - 1; i >= 0; i--) {
				float vertex_check_result = base_line.vertex_check(vertexes[i]);
				if (vertex_check_result < 0.0f || floats_equal(vertex_check_result, 0.0f)) {
					vertexes[p].next_vertex_index = i;
					next_vertex_index = i;
					p = next_vertex_index;
				}
			}
		}
	}