Mapper  0.9.0
API documentation
Todo List
Page Code overview
Review and update the code overview.
Class MapTest
Extent this test.
Class Ocd::LineTextSymbolV8
use and test...
Member OcdEntityIndex< F, T >::insert (const QByteArray &entity_data, const EntryType &entry)
Throw exception
Page OpenOrienteering Mapper XML File Format Documentation
Review and update.
Class OpenOrienteering::ActionGridBar

Update button size on setting changes (not yet needed for mobile UI).

Use parameter order col,row / colspan,rowspan to match the common x,y / width,height pattern.

Member OpenOrienteering::ApplyTemplateTransform::operator() (Object *object) const
Move this if...else into a constructor that sets up a transform member.
Member OpenOrienteering::AreaSymbol::FillPattern::angle
Switch to qreal when legacy native file format is dropped.
Class OpenOrienteering::BooleanTool
This class should get unit tests.
Member OpenOrienteering::ColorListWidget::duplicateColor ()
Switch translation
Member OpenOrienteering::connectPaths_FindClosestEnd (const std::vector< Object *> &objects, const PathObject *a, int a_index, PathPartVector::size_type path_part_a, bool path_part_a_begin, PathObject **out_b, int *out_b_index, int *out_path_part_b, bool *out_path_part_b_begin)
Review use of container API
Class OpenOrienteering::CRSSelector
Consider making this a QWidget which has got a QCombobox - the public QComboBox API should better not be exposed. The combobox' signals could no longer be block from clients.
Member OpenOrienteering::CutTool::renderables
Rewrite renderables handling in MapEditorToolBase so that we can remove it here.
Member OpenOrienteering::CutTool::replaceObject (Object *object, const std::vector< PathObject *> &replacement) const
Consider moving this to a more general class (Map, MapPart).
Class OpenOrienteering::DetermineFontSizeDialog
Move translation items to TextSymbolSettings class.
Class OpenOrienteering::DistributePointsTool
Integrate implementation of MapEditorController::distributePointsClicked().
Member OpenOrienteering::EditLineTool::clickPress () override

Provide a PathObject::convertToStraight(hover_line) ?

Provide a PathObject::convertToCurve(hover_line) ?

Class OpenOrienteering::EditPointTool
See tool_edit_line.cpp for a number of todos.
Member OpenOrienteering::EditPointTool::addDashPointDefault () const
Test/fix for combined symbols.
Member OpenOrienteering::EditPointTool::clickPress () override
Consider calling updateHoverState from an override of (virtual) mousePositionEvent
Member OpenOrienteering::EditPointTool::updateHoverState (const MapCoordF &cursor_pos)
De-duplicate: Copied from EditLineTool
Member OpenOrienteering::EditTool::DeleteObjectKey
Either use a function for testing whether a key means "delete object", or switch to a QAction based implementation since QAction supports alternative QKeySequences.
Member OpenOrienteering::GdalManager::GdalManagerPrivate::supportedRasterExtensions () const
Member OpenOrienteering::Georeferencing::toMapCoordF (const Georeferencing *other, const MapCoordF &map_coords, bool *ok=nullptr) const
Use direct pipeline instead of intermediate WGS84
Member OpenOrienteering::GeoreferencingDialog::requestDeclination (bool no_confirm=false)
Move URL (template) to settings.
Class OpenOrienteering::GPSDisplay
Use qreal instead of float (in all sensor code) for consistency with Qt.
Member OpenOrienteering::LineSymbol::saveImpl (QXmlStreamWriter &xml, const Map &map) const override
Remove "pointed_cap_length" in Mapper 1.0
Member OpenOrienteering::MainWindow::showNewMapWizard ()
error message, cleanup
Member OpenOrienteering::Map::importMap (const Map &imported_map, ImportMode mode, std::vector< bool > *filter=nullptr, int symbol_insert_pos=-1, bool merge_duplicate_symbols=true)

Test and review import of georeferenced and non-georeferenced maps, in all combinations.

Handle rotation of patterns and text, cf. Object::transform.

proper error message

Member OpenOrienteering::MapCoord::fromNative64 (qint64 x, qint64 y)
Raise (and handle exceptions) when out of bounds.
Member OpenOrienteering::MapCoordF::perpRight () const
Replace with normalVector(), similar to QLineF API.
Member OpenOrienteering::MapEditorController::connectPathsClicked ()

Fix connectPathsClicked()

get rid of force if possible

Member OpenOrienteering::MapEditorController::exportVector ()
Error message?
Member OpenOrienteering::MapEditorController::importClicked ()
Reword message (not a map file here). Requires new translations
Member OpenOrienteering::MapEditorController::importMap (Map &other, Map::ImportMode mode, QWidget *dialog_parent, std::vector< bool > *filter=nullptr, int symbol_insert_pos=-1, bool merge_duplicate_symbols=true)
Move message to this context.
Member OpenOrienteering::MapEditorController::importMapFile (const QString &filename, bool show_errors)
error message
Member OpenOrienteering::MapEditorController::MapEditorController (OperatingMode mode, Map *map=nullptr, MapView *map_view=nullptr)

Review/remove mode hack.

Document and fix ownership of map and map_view. Double deletes waiting...

Member OpenOrienteering::MapEditorTool::getCursor () const =0
How to change the cursor for all map widgets while a tool is active?
Member OpenOrienteering::MapEditorTool::isDrawTool () const
This shall be rewritten as virtual/reimplemented function.
Member OpenOrienteering::MapEditorTool::switchToDefaultDrawTool (const Symbol *symbol) const
Review for refactoring: no reimplementation found, maybe not in right class?
Member OpenOrienteering::MapEditorToolBase::updatePreviewObjects ()
get rid of force if possible;
Member OpenOrienteering::MapPart::deleteObject (int pos, bool remove_only)
Make a separate method "removeObject()", this is misleading!
Member OpenOrienteering::MapPart::deleteObject (Object *object, bool remove_only)
Make a separate method "removeObject()", this is misleading!
Member OpenOrienteering::MapPrinter::paperSizeNames ()
Remove MapPrinter::paperSizeNames() in Mapper 1.0.
Member OpenOrienteering::NewMapDialog::NewMapDialog (QWidget *parent=nullptr)
Fix form layout dependency
Member OpenOrienteering::Object::load (QXmlStreamReader &xml, Map *map, const SymbolDictionary &symbol_dict, const Symbol *symbol=nullptr)
Add a warning, but don't throw - throwing lets loading fail.
Member OpenOrienteering::Object::save (QXmlStreamWriter &xml) const
From Mapper 1.0, save just the single anchor coordinate.
Member OpenOrienteering::Object::transform (const QTransform &t)=0
Handle rotation of patterns or text (?)
Member OpenOrienteering::ObjectTagsUndoStep::saveObject (XmlElementWriter &xml, int index) const override
Write tags in deterministic order
Member OpenOrienteering::OcdFileExport::default_version
Add proper API
Member OpenOrienteering::OcdFileExport::exportExtras ()
Member OpenOrienteering::OcdFileExport::exportObjects (OcdFile< Format > &file)
move pattern origin etc.
Member OpenOrienteering::OcdFileExport::exportSetup (OcdFile< Ocd::FormatV8 > &file)
addWarning(...)
Member OpenOrienteering::OcdFileImport::convertOcdString (const QChar *src, uint maxlen) const
Create and use static decoder
Member OpenOrienteering::OcdFileImport::importRectangleSymbol (const S &ocd_symbol)
review symbol number signedness vs.
Member OpenOrienteering::OcdFileImport::setBasicAttributes (OcdImportedTextSymbol *symbol, const QString &font_name, const Ocd::BasicTextAttributesV8 &attributes)
Implement justified alignment
Member OpenOrienteering::OgrFileImport::getSymbol (Symbol::Type type, const char *raw_style_string)
Member OpenOrienteering::OgrFileImport::importImplementation () override
Use hooks and delegates per file format
Member OpenOrienteering::OgrTemplate::makeOrthographicGeoreferencing (const QString &path)
Use the template's datum etc. instead of WGS84?
Member OpenOrienteering::PaintOnTemplateSelectDialog::PaintOnTemplateSelectDialog (Map *map, MapView *view, Template *selected, MainWindow *parent)
Review source string (no ellipsis when no dialog)
Member OpenOrienteering::PassPointList::not_null
Use the Guideline Support Library
Member OpenOrienteering::PathCoord::bezierError ()
Make bezier error configurable
Member OpenOrienteering::PathCoordVector::findNextDashPoint (PathCoordVector::size_type first) const
Consider return a SplitPathCoord (cf. actual usage).
Member OpenOrienteering::PathCoordVector::intersectsBox (const QRectF &box) const
Implement this here, used nowhere else
Member OpenOrienteering::PathObject::calcAllIntersectionsWith (const PathObject *other, Intersections &out) const
FIXME: part_index or other_part_index ???
Member OpenOrienteering::PathObject::calcClosestCoordinate (MapCoordF coord, float &out_distance_sq, MapCoordVector::size_type &out_index) const

Convert out_distance_sq to double (so avoiding conversions).

Return index rather than writing to the provided reference.

Member OpenOrienteering::PathObject::calcClosestPointOnPath (MapCoordF coord, float &out_distance_sq, PathCoord &out_path_coord, MapCoordVector::size_type start_index=0, MapCoordVector::size_type end_index=std::numeric_limits< PathPartVector::size_type >::max()) const

Convert out_distance_sq to double (so avoiding conversions).

Return PathCoord rather than writing to the provided reference.

Legacy compatibility, review/remove

Member OpenOrienteering::PathObject::connectIfClose (PathObject *other, double connect_threshold_sq)
Review documentation, container usage,
Member OpenOrienteering::PathObject::findPartIndexForIndex (MapCoordVector::size_type coords_index) const
Review where this signature can be replace by the one returning an iterator.
Class OpenOrienteering::PointSymbol::Element
Expose elements more directly in PointSymbol API.
Class OpenOrienteering::PointSymbolEditorActivity
Fix that this cross may cover the symbol at small scales.
Member OpenOrienteering::PrintWidget::exportToImage ()
Handle errors
Member OpenOrienteering::ProjTransform::isGeographic () const
Evaluate proj_get_type() instead
Member OpenOrienteering::rectIncludeSafe (QRect &rect, const QRect &other_rect)
Check if QRegion could be used instead.
Member OpenOrienteering::ReplaceSymbolSetDialog::showDialog (QWidget *parent, Map &object_map)

More precise message

More precise message

Show error from importer

Member OpenOrienteering::ReplaceSymbolSetDialog::showDialogForCRT (QWidget *parent, Map &object_map, const Map &symbol_set, QIODevice &crt_file)
Collect source symbols for all patterns, for source icon in dialog
Member OpenOrienteering::SnappingToolHelper::getDisplayRadius () const
Return a dynamic value, or adjust for screen density.
Member OpenOrienteering::SnappingToolHelper::snapToObject (const MapCoordF &position, MapWidget *widget, SnappingToolHelperSnapInfo *info=nullptr, Object *exclude_object=nullptr)

Change to qreal when Path::calcClosestPointOnPath accepts that.

Change to qreal when Path::calcClosestPointOnPath accepts that.

Change to qreal when Path::calcClosestPointOnPath accepts that.

Member OpenOrienteering::SplitPathCoord::at (length_type length, const SplitPathCoord &first)
Handle closed paths.
Member OpenOrienteering::SymbolRenderWidget::fillBorderClicked ()
Merge with/Reuse corresponding action in MapEditorController.
Member OpenOrienteering::SymbolRenderWidget::pasteSymbols ()
Adjust message to this particular action, and remove Map context. See also MapEditor::importMap.
Member OpenOrienteering::SymbolRenderWidget::switchSymbolClicked ()
Merge with/Reuse corresponding action in MapEditorController.
Member OpenOrienteering::SymbolSettingDialog::SymbolSettingDialog (const Symbol *source_symbol, Map *source_map, QWidget *parent)
Switch the following line to Util::Headline::create
Member OpenOrienteering::SymbolWidget::fillBorderClicked ()
Merge with/Reuse corresponding action in MapEditorController.
Member OpenOrienteering::SymbolWidget::switchSymbolClicked ()
Merge with/Reuse corresponding action in MapEditorController.
Member OpenOrienteering::Template::drawOntoTemplate (not_null< MapCoordF *> coords, int num_coords, QColor color, float width, QRectF map_bbox)
Rewrite using a range of MapCoordF.
Member OpenOrienteering::Template::duplicate () const
Rewrite as virtual function, using protected copy constructor.
Member OpenOrienteering::Template::duplicateImpl () const =0
Rewrite together with duplicate().
Member OpenOrienteering::Template::not_null
Use the Guideline Support Library
Member OpenOrienteering::TemplateImage::drawTemplate (QPainter *painter, const QRectF &clip_rect, double scale, bool on_screen, float opacity) const override
Fix image opacity in AdvancedPdfEngine
Class OpenOrienteering::TemplateImageOpenDialog
Move this class to separate files.
Member OpenOrienteering::TemplateListWidget::showOpenTemplateDialog (QWidget *dialog_parent, MapEditorController *controller)
Review the default error message. Don't use question mark.
Member OpenOrienteering::TemplateListWidget::updateButtons ()
Make it possible to delete multiple templates at once
Member OpenOrienteering::TemplateMap::calculateTransformation ()
proper error message
Member OpenOrienteering::TemplateMap::drawTemplate (QPainter *painter, const QRectF &clip_rect, double scale, bool on_screen, float opacity) const override
Get the actual screen's resolution.
Member OpenOrienteering::TemplateMap::loadTemplateFileImpl (bool configuring) override

Convert to RAII

prevent loading and/or let user decide

Member OpenOrienteering::TemplateMap::postLoadConfiguration (QWidget *dialog_parent, bool &out_center_in_view) override
recursive template loading dialog
Member OpenOrienteering::TemplateTrack::postLoadConfiguration (QWidget *dialog_parent, bool &out_center_in_view) override
Remove historical scope
Member OpenOrienteering::TemplateTransform::TemplateTransform () noexcept=default
Remove when we can use C++14 everywhere.
Member OpenOrienteering::TemplateTransform::TemplateTransform (qint32 x, qint32 y, double rotation, double scale_x, double scale_y, double shear=0.0) noexcept
Remove when we can use C++14 everywhere.
Member OpenOrienteering::TextBrowserDialog::highlighted (const QString &link)
: Position near mouse pointer
Class OpenOrienteering::TextObjectAlignmentDockWidget
Use QDockWidget (if necessary at all), don't inherit from it.
Member OpenOrienteering::TextObjectEditorHelper::not_null
Use the Guideline Support Library
Member OpenOrienteering::UndoManager::max_undo_steps
Make this configurable (maybe by used memory instead of step count)
Member OpenOrienteering::VirtualPath::calculateIncomingTangent (size_type i, bool &ok) const
Implement unsigned
Member OpenOrienteering::VirtualPath::findClosestPointTo (MapCoordF coord, float &distance_squared, float distance_bound_squared, size_type start_index, size_type end_index) const
verify
Member OpenOrienteering::XmlElementReader::readForText (MapCoordVector &coords)
Make box size explicit data.
Member OpenOrienteering::XMLFileExporter::exportTemplates ()
Update the relative paths in memory when saving to another directory. Otherwise opening templates in the reloaded saved map may behave different from the current map in memory.
Class PathObjectTest
Extent this test.