TestMap::TestMap() { MapCoord coord; map = new Map(); MapColor* black = new MapColor(); black->setCmyk(MapColorCmyk(0.0f, 0.0f, 0.0f, 1.0f)); black->setOpacity(1.0f); black->setName("black"); map->addColor(black, 0); line_symbol = new LineSymbol(); line_symbol->setLineWidth(1); line_symbol->setColor(black); map->addSymbol(line_symbol, 0); line_object = new PathObject(line_symbol); line_object->addCoordinate(MapCoord(10, 10)); coord = MapCoord(20, 10); coord.setCurveStart(true); line_object->addCoordinate(coord); line_object->addCoordinate(MapCoord(20, 20)); line_object->addCoordinate(MapCoord(30, 20)); line_object->addCoordinate(MapCoord(30, 10)); map->addObject(line_object); // TODO: fill map with more content as needed }
void DrawPathTool::createPreviewCurve(MapCoord position, float direction) { if (!path_has_preview_point) { int last = preview_path->getCoordinateCount() - 1; (preview_path->getCoordinate(last)).setCurveStart(true); preview_path->addCoordinate(MapCoord(0, 0)); preview_path->addCoordinate(MapCoord(0, 0)); if (draw_dash_points) position.setDashPoint(true); position.setCurveStart(false); preview_path->addCoordinate(position); path_has_preview_point = true; } // Adjust the preview curve int last = preview_path->getCoordinateCount() - 1; MapCoord previous_point = preview_path->getCoordinate(last - 3); MapCoord last_point = preview_path->getCoordinate(last); double bezier_handle_distance = BEZIER_HANDLE_DISTANCE * previous_point.distanceTo(last_point); preview_path->setCoordinate(last - 2, MapCoord(previous_point.x() - bezier_handle_distance * sin(previous_point_direction), previous_point.y() - bezier_handle_distance * cos(previous_point_direction))); preview_path->setCoordinate(last - 1, MapCoord(last_point.x() + bezier_handle_distance * sin(direction), last_point.y() + bezier_handle_distance * cos(direction))); updatePreviewPath(); }