コード例 #1
0
ファイル: tool_draw_path.cpp プロジェクト: kjetilk/mapper
void DrawPathTool::draw(QPainter* painter, MapWidget* widget)
{
	drawPreviewObjects(painter, widget);
	
	if (editingInProgress())
	{
		painter->setRenderHint(QPainter::Antialiasing);
		if (dragging && (cur_pos - click_pos).manhattanLength() >= Settings::getInstance().getStartDragDistancePx())
		{
			QPen pen(qRgb(255, 255, 255));
			pen.setWidth(3);
			painter->setPen(pen);
			painter->drawLine(widget->mapToViewport(click_pos_map), widget->mapToViewport(constrained_pos_map));
			painter->setPen(active_color);
			painter->drawLine(widget->mapToViewport(click_pos_map), widget->mapToViewport(constrained_pos_map));
		}
		if (previous_point_is_curve_point)
		{
			QPen pen(qRgb(255, 255, 255));
			pen.setWidth(3);
			painter->setPen(pen);
			painter->drawLine(widget->mapToViewport(previous_pos_map), widget->mapToViewport(previous_drag_map));
			painter->setPen(active_color);
			painter->drawLine(widget->mapToViewport(previous_pos_map), widget->mapToViewport(previous_drag_map));
		}
		
		if (!shift_pressed)
			angle_helper->draw(painter, widget);
	}
	
	if (shift_pressed && !dragging)
	{
		snap_helper->draw(painter, widget);
	}
	else if (!editingInProgress() && (picking_angle || picked_angle))
	{
		if (picking_angle)
			snap_helper->draw(painter, widget);
		angle_helper->draw(painter, widget);
	}
}
コード例 #2
0
ファイル: tool_draw_circle.cpp プロジェクト: 999999333/mapper
void DrawCircleTool::draw(QPainter* painter, MapWidget* widget)
{
	drawPreviewObjects(painter, widget);
}
コード例 #3
0
void DrawRectangleTool::draw(QPainter* painter, MapWidget* widget)
{
	drawPreviewObjects(painter, widget);
	
	if (editingInProgress())
	{
		// Snap line
		if (snapped_to_line)
		{
			// Simple hack to make line extend over the whole screen in most cases
			const float scale_factor = 100;
			MapCoord a = snapped_to_line_b + (snapped_to_line_a - snapped_to_line_b) * scale_factor;
			MapCoord b = snapped_to_line_b - (snapped_to_line_a - snapped_to_line_b) * scale_factor;
			
			painter->setPen(selection_color);
			painter->drawLine(widget->mapToViewport(a), widget->mapToViewport(b));
		}
		
		// Helper cross
		bool use_preview_radius = Settings::getInstance().getSettingCached(Settings::RectangleTool_PreviewLineWidth).toBool();
		const double preview_radius_min_pixels = 2.5;
		if (widget->getMapView()->lengthToPixel(preview_point_radius) < preview_radius_min_pixels)
			use_preview_radius = false;
		
		float helper_cross_radius = Settings::getInstance().getRectangleToolHelperCrossRadiusPx();
		painter->setRenderHint(QPainter::Antialiasing);
		
		auto perp_vector = forward_vector.perpRight();
		
		painter->setPen((angles.size() > 1) ? inactive_color : active_color);
		if (preview_point_radius == 0 || !use_preview_radius)
		{
			painter->drawLine(widget->mapToViewport(cur_pos_map) + helper_cross_radius * forward_vector,
							  widget->mapToViewport(cur_pos_map) - helper_cross_radius * forward_vector);
		}
		else
		{
			painter->drawLine(widget->mapToViewport(cur_pos_map + 0.001f * preview_point_radius * perp_vector) + helper_cross_radius * forward_vector,
							  widget->mapToViewport(cur_pos_map + 0.001f * preview_point_radius * perp_vector) - helper_cross_radius * forward_vector);
			painter->drawLine(widget->mapToViewport(cur_pos_map - 0.001f * preview_point_radius * perp_vector) + helper_cross_radius * forward_vector,
							  widget->mapToViewport(cur_pos_map - 0.001f * preview_point_radius * perp_vector) - helper_cross_radius * forward_vector);
		}
		
		painter->setPen(active_color);
		if (preview_point_radius == 0 || !use_preview_radius)
		{
			painter->drawLine(widget->mapToViewport(cur_pos_map) + helper_cross_radius * perp_vector,
							  widget->mapToViewport(cur_pos_map) - helper_cross_radius * perp_vector);
		}
		else
		{
			painter->drawLine(widget->mapToViewport(cur_pos_map + 0.001f * preview_point_radius * forward_vector) + helper_cross_radius * perp_vector,
							  widget->mapToViewport(cur_pos_map + 0.001f * preview_point_radius * forward_vector) - helper_cross_radius * perp_vector);
			painter->drawLine(widget->mapToViewport(cur_pos_map - 0.001f * preview_point_radius * forward_vector) + helper_cross_radius * perp_vector,
							  widget->mapToViewport(cur_pos_map - 0.001f * preview_point_radius * forward_vector) - helper_cross_radius * perp_vector);
		}
	}
	
	angle_helper->draw(painter, widget);
	
	if (shift_pressed)
		snap_helper->draw(painter, widget);
}
コード例 #4
0
ファイル: tool_draw_freehand.cpp プロジェクト: FEK10/mapper
void DrawFreehandTool::draw(QPainter* painter, MapWidget* widget)
{
	drawPreviewObjects(painter, widget);
}