MeshLib C++ Docs
Loading...
Searching...
No Matches

Namespaces

namespace  MR::Cuda
namespace  MR::MeshLoad
 compatibility names
namespace  MR::MeshSave
namespace  MR::PointsLoad
namespace  MR::PointsSave
namespace  MR::ImageLoad
namespace  MR::ImageSave
namespace  MR::Nesting
namespace  MR::DistanceMapSave
namespace  MR::PlanarTriangulation
namespace  MR::Features::Primitives
namespace  MR::Features::Traits
 Traits that determine how the primitives are related.
namespace  MR::SelfIntersections
namespace  MR::MeshBuilder
 Building topologies by triangles.
namespace  MR::SceneSave
namespace  MR::ObjectSave
namespace  MR::Locale
namespace  MR::Parallel
namespace  MR::PolylineComponents
namespace  MR::detail
namespace  MR::detail::Units
namespace  MR::FileDialog
namespace  MR::ProgressBar
 Utilities to show application progress bar for long operations.
namespace  MR::StyleConsts
namespace  MR::StyleConsts::Modal
namespace  MR::StyleConsts::ProgressBar
namespace  MR::StyleConsts::CustomCombo
namespace  MR::StyleConsts::Notification
 CustomCombo.
namespace  MR::UI
namespace  MR::UI::detail
namespace  MR::UI::StateStorage
 Use this to store state across frames. Like what CollapsingHeader() uses to store it's open/close state.
namespace  MR::SpaceMouse
namespace  MR::VoxelsLoad
namespace  MR::VoxelsSave
namespace  MR::FixUndercuts

Concepts

concept  MR::Trivial
concept  MR::HasGetNormalMethod
concept  MR::HasGetDirectionMethod
concept  MR::Features::Traits::MeasureSupportedOneWay
concept  MR::Features::MeasureSupported
 Whether you can measure two primitives relative to one another.
concept  MR::UnitEnum
 Whether E is one of the unit enums: NoUnit, LengthUnit, AngleUnit, ...
concept  MR::detail::Units::Scalar
concept  MR::UI::detail::Scalar
 Whether T is a scalar type that we can use with our widgets.
concept  MR::UI::detail::VectorOrScalar
 Whether T is a scalar or vector that we can use with our widgets.
concept  MR::UI::detail::ValidBoundForTargetType
concept  MR::UI::detail::ValidDragSpeedForTargetType

Classes

class  MR::CameraOrientation
class  MR::ProvidesViewportWidget
 Inherit your plugin from this to draw viewport widgets from there. More...
struct  MR::ProvidesViewportWidget::ViewportWidgetInterface
 Don't strictly need this, but MSVC warns otherwise. More...
class  MR::DrawViewportWidgetsItem
 This sits in the background and renders various per-viewport buttons. More...
class  MR::MoveObjectByMouse
class  MR::SelectObjectByClick
class  MR::AddCustomThemePlugin
class  MR::OpenDirectoryMenuItem
class  MR::OpenFilesMenuItem
class  MR::OpenDICOMsMenuItem
class  MR::SaveObjectMenuItem
class  MR::SaveSelectedMenuItem
class  MR::SaveSceneAsMenuItem
class  MR::SaveSceneMenuItem
class  MR::CaptureScreenshotMenuItem
class  MR::CaptureUIScreenshotMenuItem
class  MR::CaptureScreenshotToClipBoardMenuItem
class  MR::RibbonSceneSortByName
class  MR::RibbonSceneSelectAll
class  MR::RibbonSceneUnselectAll
class  MR::RibbonSceneShowAll
class  MR::RibbonSceneHideAll
class  MR::RibbonSceneShowOnlyPrev
class  MR::RibbonSceneShowOnlyNext
class  MR::RibbonSceneRename
class  MR::RibbonSceneRemoveSelected
class  MR::ResetSceneMenuItem
class  MR::FitDataMenuItem
class  MR::FitSelectedObjectsMenuItem
class  MR::FitSelectedPrimitivesMenuItem
class  MR::SetViewPresetMenuItem
class  MR::SetViewportConfigPresetMenuItem
class  MR::BinaryOperations
class  MR::OpenRawVoxelsPlugin
class  MR::Cuda::FastWindingNumber
class  MR::EmbeddedPython
struct  MR::EmbeddedPython::Config
struct  MR::MeshSave::CtmSaveOptions
struct  MR::PointsSave::CtmSavePointsOptions
struct  MR::Nesting::Nesting3mfParams
struct  MR::PdfParameters
 Parameters of document style. More...
class  MR::Pdf
struct  MR::Pdf::TextParams
 parameters to drawing text More...
struct  MR::Pdf::PaletteRowStats
struct  MR::Pdf::ImageParams
 Parameters to adding image from file. More...
struct  MR::Pdf::Cell
struct  MR::Pdf::Cell::Empty
struct  MR::Pdf::CellCustomParams
struct  MR::Pdf::TextCellParams
struct  MR::PlanarTriangulation::IntersectionInfo
 Info about intersection point for mapping. More...
struct  MR::PlanarTriangulation::IntersectionsMap
 struct to map new vertices (only appear on intersections) of the outline to it's edges More...
struct  MR::PlanarTriangulation::BaseOutlineParameters
struct  MR::PlanarTriangulation::OutlineParameters
class  MR::AABBTreeBase< T >
 base class for most AABB-trees (except for AABBTreePoints) More...
struct  MR::ObjTreeTraits
class  MR::AABBTreeObjects
struct  MR::NoiseSettings
class  MR::AddVisualProperties< BaseObjectType, Properties >
struct  MR::AffineXf< V >
struct  MR::FlowOrigin
struct  MR::OutputFlows
class  MR::FlowAggregator
 this class can track multiple flows and find in each mesh vertex the amount of water reached it More...
struct  MR::FlowAggregator::Flows
struct  MR::ContoursMeshAlignParams
 Parameters for aligning 2d contours onto mesh surface. More...
struct  MR::BendContoursAlongCurveParams
 Parameters for aligning 2d contours along given curve. More...
class  MR::AngleMeasurementObject
 Represents an angle measurement. More...
struct  MR::Ball< V >
 a ball = points surrounded by a sphere in arbitrary space with vector type V More...
class  MR::BasinVolumeCalculator
class  MR::BestFitParabola< T >
 accumulates a number of (x,y) points to find the best-least-squares parabola approximating them More...
struct  MR::Polynomial< T, degree >
struct  MR::PolynomialWrapper< T >
 This is a unifying interface for a polynomial of some degree, known only in runtime. More...
class  MR::BestFitPolynomial< T, degree >
class  MR::QuadricApprox
struct  MR::CubicBezierCurve< V >
 Cubic Bezier curve. More...
struct  MR::Nesting::BoxNestingCorner
class  MR::Nesting::IBoxNestingPriority
 class to override box nesting metrics More...
struct  MR::Nesting::BoxNestingOptions
struct  MR::Nesting::BoxNestingParams
struct  MR::ZeroOnMove< T >
struct  MR::NoCtor< T >
struct  MR::NoCtor< T >
 for trivial types, return the type itself More...
class  MR::Buffer< V, I >
 std::vector<V>-like container that is 1) resized without initialization of its elements, 2) much simplified: no push_back and many other methods More...
struct  MR::BMap< T, I >
 flat map: I -> T More...
struct  MR::PackMapping
class  MR::ChangeObjectColorAction
class  MR::ChangeFacesColorMapAction
class  MR::ChangeLinesColorMapAction
class  MR::ChangeColoringType
class  MR::ChangeNameAction
class  MR::ChangeObjectAction
class  MR::ChangeVisualizePropertyAction
class  MR::ChangeObjectSelectedAction
class  MR::ChangeObjectVisibilityAction
class  MR::ChangePointCloudAction
class  MR::ChangePointCloudPointsAction
class  MR::ChangeOnePointInCloudAction
class  MR::ChangePointCloudNormalsAction
class  MR::ChangeOneNormalInCloudAction
class  MR::ChangeScaleAction
class  MR::ChangeSceneAction
class  MR::ChangeSceneObjectsOrder
class  MR::ChangeValue< T >
class  MR::ChangeVertsColorMapAction< T >
class  MR::ChangeXfAction
struct  MR::Chunk
 array chunk representation More...
struct  MR::ChunkIterator
 iterator class for array chunks More...
struct  MR::PointAndDistance
struct  MR::MeshPointAndDistance
struct  MR::DistanceFromWeightedPointsParams
struct  MR::DistanceFromWeightedPointsComputeParams
struct  MR::CloudPartMapping
 mapping among elements of source point cloud, from which a part is taken, and target (this) point cloud More...
class  MR::CNCMachineSettings
 class with CNC machine emulation settings More...
struct  MR::Color
class  MR::ColorMapAggregator< Tag >
 Class for aggregate several color map in one Color maps are aggregated according order. More...
struct  MR::ColorMapAggregator< Tag >::PartialColorMap
 partial color map More...
class  MR::CombinedHistoryAction
class  MR::Cone3< T >
 Base class for cone parameterization. More...
struct  MR::ConeFittingFunctor< T >
struct  MR::Cone3ApproximationParams
class  MR::Cone3Approximation< T >
class  MR::ConeObject
class  MR::Config
struct  MR::NewEdgesMap
struct  MR::CutMeshParameters
 Parameters of MR::cutMesh. More...
struct  MR::CutMeshResult
struct  MR::CutByProjectionSettings
 Settings structurer for cutMeshByProjection function. More...
struct  MR::CurvePoint
struct  MR::CurveFunc
class  MR::Cylinder3< T >
class  MR::Cylinder3Approximation< T >
class  MR::CylinderObject
struct  MR::DenseBox
struct  MR::Dipole
struct  MR::DirectoryIterator
 iterator of directory items that will save any errors in (ec) instead of throwing exceptions More...
struct  MR::Directory
struct  MR::DirectoryRecursiveIterator
 recursive iterator of directory items that will save any errors in (ec) instead of throwing exceptions More...
struct  MR::DirectoryRecursive
class  MR::DistanceMeasurementObject
 Represents a distance measurement. More...
struct  MR::DistanceToMeshOptions
 options determining computation of distance from a point to a mesh More...
struct  MR::SignedDistanceToMeshOptions
 options determining computation of signed distance from a point to a mesh More...
class  MR::UndirectedEdgeIterator
 The iterator to find all not-lone undirected edges in the mesh. More...
struct  MR::EdgeLengthMesh
struct  MR::TerminalVertex
struct  MR::VertPathInfo
 information associated with each vertex by the paths builder More...
class  MR::EdgePathsBuilderT< MetricToPenalty >
 the class is responsible for finding smallest metric edge paths on a mesh More...
struct  MR::EdgePathsBuilderT< MetricToPenalty >::ReachedVert
 information about just reached vertex (with final metric value) More...
struct  MR::TrivialMetricToPenalty
 the vertices in the queue are ordered by their metric from a start location More...
struct  MR::MetricToAStarPenalty
class  MR::EdgePathsAStarBuilder
struct  MR::EdgePoint
 encodes a point on an edge of mesh or of polyline More...
struct  MR::EdgePointPair
 two edge-points (e.g. representing collision point of two edges) More...
struct  MR::EdgeSegment
 Represents a segment on one edge. More...
struct  MR::EmbeddedStructureParameters
 Parameters of structure embedding in terrain. More...
struct  MR::EndMillCutter
 end mill cutter specifications More...
struct  MR::EndMillTool
 end mill tool specifications More...
class  MR::EnumNeihbourVertices
class  MR::EnumNeihbourFaces
struct  MR::FaceDistancesSettings
class  MR::IFastWindingNumber
 Abstract class for fast approximate computation of generalized winding number for a mesh (using its AABB tree) More...
class  MR::FastWindingNumber
class  MR::IFastWindingNumberByParts
 Abstract class that complements IFastWindingNumber with chunked processing variants of its methods. More...
struct  MR::ObjKindTraits< X >
 Various information about different types of objects. More...
struct  MR::ObjKindTraits< FeaturesObjectKind::Point >
struct  MR::ObjKindTraits< FeaturesObjectKind::Line >
struct  MR::ObjKindTraits< FeaturesObjectKind::Plane >
struct  MR::ObjKindTraits< FeaturesObjectKind::Circle >
struct  MR::ObjKindTraits< FeaturesObjectKind::Sphere >
struct  MR::ObjKindTraits< FeaturesObjectKind::Cylinder >
struct  MR::ObjKindTraits< FeaturesObjectKind::Cone >
struct  MR::FeatureObjectSharedProperty
struct  MR::FeatureObjectProjectPointResult
struct  MR::IsVisualizeMaskEnum< FeatureVisualizePropertyType >
class  MR::FeatureObject
 An interface class which allows feature objects to share setters and getters on their main properties, for convenient presentation in the UI. More...
struct  MR::RefineParameters
 Optional parameters for refineFeatureObject. More...
struct  MR::Features::Primitives::Plane
struct  MR::Features::Primitives::ConeSegment
struct  MR::Features::MeasureResult
 Stores the results of measuring two objects relative to one another. More...
struct  MR::Features::MeasureResult::BasicPart
struct  MR::Features::MeasureResult::Distance
struct  MR::Features::MeasureResult::Angle
struct  MR::Features::Traits::Unary< T >
struct  MR::Features::Traits::Unary< Primitives::Sphere >
struct  MR::Features::Traits::Unary< Primitives::ConeSegment >
struct  MR::Features::Traits::Unary< Primitives::Plane >
struct  MR::Features::Traits::Binary< A, B >
struct  MR::Features::Traits::Binary< Primitives::Sphere, Primitives::Sphere >
 ?? <-> Sphere More...
struct  MR::Features::Traits::Binary< Primitives::ConeSegment, Primitives::Sphere >
struct  MR::Features::Traits::Binary< Primitives::Plane, Primitives::Sphere >
struct  MR::Features::Traits::Binary< Primitives::ConeSegment, Primitives::ConeSegment >
 ?? <-> Cone More...
struct  MR::Features::Traits::Binary< Primitives::Plane, Primitives::ConeSegment >
struct  MR::Features::Traits::Binary< Primitives::Plane, Primitives::Plane >
 ?? <-> Plane More...
class  MR::FewSmallest< T >
 the class stores some number of smallest elements from a larger number of candidates More...
class  MR::File
 the class to open C FILE handle and automatically close it in the destructor More...
struct  MR::SubdivideFillingSettings
struct  MR::SmoothFillingSettings
struct  MR::OutAttributesFillingSettings
struct  MR::FillHoleNicelySettings
struct  MR::StitchHolesNicelySettings
struct  MR::SelfIntersections::Settings
 Setting set for mesh self-intersections fix. More...
class  MR::FreeFormDeformer
 Class for deforming mesh using Bernstein interpolation. More...
class  MR::FreeFormBestFit
class  MR::FunctionRef< F >
class  MR::FunctionRef< R(Args...)>
 Simplified implementation of std::function_ref from C++26. More...
class  MR::GcodeProcessor
 class to process g-code source and generate toolpath More...
struct  MR::GcodeProcessor::BaseAction< Vec >
struct  MR::GcodeProcessor::MoveAction
 structure that stores information about the movement of the tool, specified by some string of commands More...
struct  MR::GcodeProcessor::Command
class  MR::Graph
 mathematical graph consisting from vertices and undirected edges More...
struct  MR::Graph::EndVertices
struct  MR::ModelPointsData
 structure to contain pointers to model data More...
struct  MR::ObjVertId
struct  MR::GridSettings
 settings defining regular grid, where each quadrangular cell is split on two triangles in one of two ways More...
class  MR::Histogram
class  MR::HistoryAction
struct  MR::ICPPairData
struct  MR::PointPair
 Stores a pair of points: one samples on the source and the closest to it on the target. More...
struct  MR::IPointPairs
 Simple interface for pairs holder. More...
struct  MR::PointPairs
struct  MR::NumSum
struct  MR::ICPProperties
 parameters of ICP algorithm More...
class  MR::ICP
class  MR::Id< T >
 stores index of some element, it is made as template class to avoid mixing faces, edges and vertices More...
class  MR::NoInitId< T >
 Variant of Id<T> with omitted initialization by default. Useful for containers. More...
class  MR::Id< EdgeTag >
class  MR::Id< VoxelTag >
struct  MR::MeshBuilder::equalVector3f
 this makes bit-wise comparison of two Vector3f's thus making two NaNs equal More...
class  MR::MeshBuilder::VertexIdentifier
struct  MR::Image
struct  MR::ImproveSamplingSettings
struct  MR::FindInnerShellSettings
struct  MR::ShellVertexInfo
 information about shell vertex More...
class  MR::InplaceStack< T, N >
 Container class implementing in-place static sized stack. More...
class  MR::InTreePathBuilder
struct  MR::BaseRenderParams
 Common rendering parameters for meshes and UI. More...
struct  MR::ModelBaseRenderParams
struct  MR::ModelRenderParams
 Mesh rendering parameters for primary rendering (as opposed to the picker). More...
struct  MR::BasicUiRenderTask
 IRenderObject::renderUi() can emit zero or more or more of those tasks. They are sorted by depth every frame. More...
struct  MR::BasicUiRenderTask::BackwardPassParams
struct  MR::UiRenderParams
struct  MR::UiRenderManager
class  MR::IRenderObject
class  MR::RenderObjectCombinator< Bases >
 Combines several different IRenderObjects into one in a meaningful way. More...
class  MR::RegisterRenderObjectConstructor
class  MR::Laplacian
struct  MR::Laplacian::Attractor
 attracts the given point inside some mesh's triangle to the given target with the given weight More...
struct  MR::Line< V >
class  MR::LineObject
struct  MR::LineSegm< V >
 a segment of straight dimensional line More...
struct  MR::LinesLoadSettings
 setting for polyline loading from external format, and locations of optional output data More...
struct  MR::LoadedMeshData
 ObjectMeshData and additional information from mesh importer. More...
struct  MR::LoadedObjectT< ObjectT >
 result of loading (e.g. from a file) as one object (with possible subobjects) More...
struct  MR::LoadedObjects
 result of loading (e.g. from a file) as a number of objects More...
struct  MR::FanRecord
 describes one fan of triangles around a point excluding the point More...
struct  MR::FanRecordWithCenter
 describes one fan of triangles around a point including the point More...
struct  MR::SomeLocalTriangulations
 describes a number of local triangulations of some points (e.g. assigned to a thread) More...
struct  MR::AllLocalTriangulations
 triangulations for all points, with easy access by VertId More...
struct  MR::SphereParams
struct  MR::MapOrHashMap< K, V >
struct  MR::MarkedContour3f
struct  MR::SplineSettings
struct  MR::Matrix2< T >
struct  MR::Matrix3< T >
struct  MR::Matrix3< T >::QR
 returns 3 Euler angles, assuming this is a rotation matrix composed as follows: R=R(z)*R(y)*R(x) More...
struct  MR::Matrix4< T >
class  MR::MeasurementObject
struct  MR::MeshAttributesToUpdate
 the attribute data of the mesh that needs to be updated More...
struct  MR::TransformedMesh
 just stores a mesh and its transformation to some fixed reference frame More...
struct  MR::MeshMeshConverter
struct  MR::MeshBuilder::VertDuplication
struct  MR::MeshBuilder::MeshPiece
 a part of a whole mesh to be constructed More...
struct  MR::MeshBuilder::UniteCloseParams
struct  MR::MeshBuilder::Triangle
 mesh triangle represented by its three vertices and by its face ID More...
struct  MR::MeshBuilder::BuildSettings
struct  MR::MeshBuilder::VertSpan
 each face is surrounded by a closed contour of vertices [fistVertex, lastVertex) More...
class  MR::MeshDiff
struct  MR::DivideMeshWithPlaneParams
struct  MR::MakeDegenerateBandAroundRegionParams
 holds together settings for makeDegenerateBandAroundRegion More...
struct  MR::NoInit
struct  MR::MinArg< T, I >
struct  MR::MaxArg< T, I >
struct  MR::MinMaxArg< T, I >
struct  MR::IntersectionPrecomputes< T >
struct  MR::IteratorRange< I >
class  MR::UnionFind< I >
 Union-find data structure for representing disjoin sets of elements with few very quick operations: 1) union of two sets in one, 2) checking whether two elements pertain to the same set, 3) finding representative element (root) of each set by any set's element. More...
class  MR::Heap< T, I, P >
 stores map from element id in[0, size) to T; More...
class  MR::UniqueThreadSafeOwner< T >
class  MR::SharedThreadSafeOwner< T >
struct  MR::IntersectionPrecomputes2< T >
struct  MR::overloaded< Ts >
struct  MR::MeshLoadSettings
 setting for mesh loading from external format, and locations of optional output data More...
class  MR::MeshOrPoints
struct  MR::MeshOrPoints::ProjectionResult
struct  MR::MeshOrPointsXf
 an object and its transformation to global space with other objects More...
class  MR::MeshOrPointsObject
struct  MR::FindOverhangsSettings
 parameters for MR::findOverhangs More...
struct  MR::MeshRegion< RegionTag >
struct  MR::MeshPoint
 describes the point of measurement on mesh More...
struct  MR::InSphereSearchSettings
 controls the finding of maximal inscribed sphere in mesh More...
struct  MR::InSphere
 found maximal inscribed sphere touching input point with center along given direction More...
class  MR::MeshTopology
class  MR::MeshTopologyDiff
struct  MR::TrimWithPlaneParams
 stores basic params for trimWithPlane function More...
struct  MR::TrimOptionalOutput
 stores optional output params for trimWithPlane function More...
struct  MR::WeightedVertex
struct  MR::MeshTriPoint
struct  MR::MovementBuildBodyParams
struct  MR::ICPGroupPair
struct  MR::ICPGroupPairs
class  MR::IICPTreeIndexer
 structure to find leafs and groups of each in cascade mode More...
struct  MR::MultiwayICPSamplingParameters
 Parameters that are used for sampling of the MultiwayICP objects. More...
class  MR::MultiwayICP
struct  MR::MutexOwner
struct  MR::Nesting::NestingResult
struct  MR::Nesting::MeshXf
struct  MR::Nesting::NestingBaseParams
struct  MR::NoDefInit< T >
 this class is similar to T, but does not make default initialization of the fields for best performance More...
struct  MR::DenoiseViaNormalsSettings
class  MR::NormalsToPoints
class  MR::NormalsToPoints::ISolver
 pImpl More...
class  MR::ObjectComparableWithReference
 A base class for a data-model object that is a feature/measurement that can be compared between two models. More...
struct  MR::ObjectComparableWithReference::ComparableProperty
struct  MR::ObjectComparableWithReference::ComparisonTolerance
 Tolerances: More...
struct  MR::ObjectComparableWithReference::ComparisonReferenceValue
 This can't be std::optional<Var>, because we still need the variant to know the correct type. More...
struct  MR::IsVisualizeMaskEnum< DimensionsVisualizePropertyType >
class  MR::ObjectDistanceMap
class  MR::ObjectFactoryBase
class  MR::ObjectFactory< T >
class  MR::ObjectGcode
class  MR::ObjectLines
struct  MR::IsVisualizeMaskEnum< LinesVisualizePropertyType >
class  MR::ObjectLinesHolder
class  MR::ObjectMesh
struct  MR::ObjectMeshMergeOptions
 options to better control MR::merge function More...
struct  MR::ObjectMeshData
 mesh and its per-element attributes for ObjectMeshHolder More...
struct  MR::IsVisualizeMaskEnum< MeshVisualizePropertyType >
class  MR::ObjectMeshHolder
class  MR::ObjectPoints
struct  MR::IsVisualizeMaskEnum< PointsVisualizePropertyType >
class  MR::ObjectPointsHolder
class  MR::ObjectTagEventDispatcher
 class for dispatching object tag addition/removal events More...
struct  MR::OffsetContourIndex
struct  MR::OffsetContoursOrigins
struct  MR::OffsetContoursParams
struct  MR::OffsetContoursRestoreZParams
 Parameters of restoring Z coordinate of XY offset 3d contours. More...
struct  MR::ThickenParams
struct  MR::ZCompensateParams
struct  MR::SortIntersectionsData
 Special data to sort intersections more accurate. More...
struct  MR::OneMeshIntersection
 Simple point on mesh, represented by primitive id and coordinate in mesh space. More...
struct  MR::OneMeshContour
 One contour on mesh. More...
struct  MR::SearchPathSettings
 Geo path search settings. More...
struct  MR::OutlierParams
 Parameters of various criteria for detecting outlier points. More...
class  MR::OutliersDetector
struct  MR::FindOutliersParams
 Outlier point search parameters. More...
struct  MR::FindOverlappingSettings
struct  MR::Parabola< T >
 Represents quadratic function f(x) = a*x*x + b*x + c. More...
struct  MR::Parallel::CallSimply
struct  MR::Parallel::CallSimplyMaker
struct  MR::Parallel::CallWithTLS< T >
struct  MR::Parallel::CallWithTLSMaker< L >
class  MR::ParallelProgressReporter
struct  MR::ParallelProgressReporter::TaskInfo
struct  MR::ParallelProgressReporter::PerTaskReporter
struct  MR::PartMapping
 mapping among elements of source mesh, from which a part is taken, and target mesh More...
class  MR::Src2TgtMaps
 use this adapter to call functions expecting PartMapping parameter to receive src2tgt dense maps More...
class  MR::Tgt2SrcMaps
 use this adapter to call functions expecting PartMapping parameter to receive tgt2src dense maps More...
struct  MR::Plane3< T >
class  MR::PlaneObject
struct  MR::PlyLoadParams
 optional load artifacts and other setting for PLY file loading More...
struct  MR::DividePointCloudOptionalOutput
struct  MR::PointCloudPart
 represents full point cloud (if region is nullptr) or some portion of point cloud (if region pointer is valid) More...
struct  MR::IsVisualizeMaskEnum< PointMeasurementVisualizePropertyType >
class  MR::PointMeasurementObject
class  MR::PointObject
struct  MR::PointOnFace
 a point located on some mesh's face More...
struct  MR::PointOnObject
struct  MR::PointsLoadSettings
 structure with settings and side output parameters for loading point cloud More...
class  MR::IPointsToMeshProjector
 Abstract class, computes the closest point on mesh to each of given points. Pure virtual functions must be implemented. More...
struct  MR::MeshProjectionParameters
class  MR::PointsToMeshProjector
 Computes the closest point on mesh to each of given points on CPU. More...
struct  MR::PolylineComponents::LargeByLengthComponentsSettings
struct  MR::DecimatePolylineSettings< V >
 Parameters structure for MR::decimatePolyline. More...
struct  MR::DecimatePolylineResult
 Results of MR::decimateContour. More...
class  MR::PolylineUndirectedEdgeIterator
class  MR::PolylineTopology
struct  MR::PolylineMaker
 simplifies construction of connected polyline in the topology More...
struct  MR::DividePolylineParameters
struct  MR::PositionedText
struct  MR::PositionVertsSmoothlyParams
struct  MR::SpacingSettings
struct  MR::InflateSettings
class  MR::PrecipitationSimulator
 the class models water increase in the terrain under the rain with constant precipitation More...
struct  MR::PrecipitationSimulator::SimulationStep
struct  MR::PreciseVertCoord
struct  MR::PreciseVertCoords2
struct  MR::SegmentSegmentIntersectResult
struct  MR::CoordinateConverters2
 this struct contains coordinate converters float-int-float More...
struct  MR::PreciseVertCoords
struct  MR::TriangleSegmentIntersectResult
struct  MR::CoordinateConverters
 this struct contains coordinate converters float-int-float More...
class  MR::PriorityQueue< T, P >
 similar to std::priority_queue, but with ability to access underlying vector to custom modify its elements More...
struct  MR::ProjectAttributeParams
 this structure contains transformation for projection from one mesh to another and progress callback More...
struct  MR::QuadraticForm< V >
struct  MR::Quaternion< T >
struct  MR::CompensateRadiusParams
 structure with parameters for compensateRadius function More...
class  MR::RadiusMeasurementObject
 Represents a radius measurement. More...
class  MR::RegularMapMesher
 Class for making mesh from regular distance map. More...
struct  MR::RelaxParams
struct  MR::TransparencyMode
 struct to determine transparent rendering mode More...
struct  MR::RigidScaleXf3< T >
struct  MR::RigidXf3< T >
class  MR::RingIterator< N >
 The iterator to find all edges in a ring of edges (e.g. all edges with same origin or all edges with same left face) More...
class  MR::NextEdgeSameOrigin
class  MR::NextEdgeSameLeft
struct  MR::SaveSettings
 determines how to save points/lines/mesh More...
class  MR::VertRenumber
 maps valid points to packed sequential indices More...
struct  MR::SceneColors
class  MR::SceneRootObject
 Object that is parent of all scene. More...
class  MR::SceneRoot
class  MR::SceneSettings
struct  MR::SegmPoint< T >
 encodes a point inside a line segment using relative distance in [0,1] More...
class  MR::SeparationPointStorage
 storage for points on voxel edges used in Marching Cubes algorithms More...
struct  MR::SeparationPointStorage::Block
struct  MR::SharpenMarchingCubesMeshSettings
struct  MR::Signal< T >
struct  MR::SkyPatch
 this class represents a portion of the sky, and its radiation More...
class  MR::SparsePolynomial< C, D, M >
struct  MR::Sphere< V >
class  MR::SphereObject
struct  MR::SymMatrix2< T >
struct  MR::SymMatrix3< T >
struct  MR::SymMatrix4< T >
struct  MR::SystemMemory
class  MR::SystemPath
 system directory path manager More...
struct  MR::TbbTaskArenaAndGroup
class  MR::TbbThreadMutex
class  MR::TbbThreadMutex::LockGuard
 RAII-style lock guard for the mutex; releases it on destruction. More...
struct  MR::BaseTiffParameters
struct  MR::TiffParameters
struct  MR::RawTiffOutput
struct  MR::WriteRawTiffParams
struct  MR::TriTriDistanceResult< T >
struct  MR::TriTriDistanceParams< T >
struct  MR::TriMesh
struct  MR::FaceFaceFace
 a triple of faces More...
struct  MR::TriPoint< T >
 encodes a point inside a triangle using barycentric coordinates More...
struct  MR::TwoLineSegmClosestPoints< T >
struct  MR::UniformSamplingSettings
struct  MR::UniquePtr< T >
class  MR::UniqueTemporaryFolder
 helper class to create a temporary folder; the folder will be removed on the object's destruction More...
struct  MR::UniteManyMeshesParams
 Parameters structure for uniteManyMeshes function. More...
struct  MR::UnitInfo
 Information about a single measurement unit. More...
struct  MR::UnorientedTriangle
class  MR::Vector< T, I >
 std::vector<T>-like container that requires specific indexing type, More...
struct  MR::Vector3< T >
struct  MR::Vector4< T >
struct  MR::VectorTraits< T >
 Common traits for (mathematical) vectors. More...
struct  MR::VectorTraits< Vector2< T > >
struct  MR::VectorTraits< Vector3< T > >
struct  MR::VectorTraits< Vector4< T > >
class  MR::VersatileChangeMeshPointsAction
class  MR::VertCoordsDiff
class  MR::WatershedGraph
 graphs representing rain basins on the mesh More...
struct  MR::WatershedGraph::BasinInfo
 associated with each vertex in graph More...
struct  MR::WatershedGraph::BdInfo
 associated with each edge in graph More...
struct  MR::WatershedGraph::OverflowPoint
 describes a point where a flow from one basin overflows into another basin More...
struct  MR::Writer< T >
 the purpose of this struct is to invalidate object cache in its destructor More...
class  MR::XfBasedCache< T >
class  MR::PythonExport
struct  MR::PythonExport::ModuleData
struct  MR::PythonFunctionAdder
class  MR::UnifiedPythonStream
struct  MR::TextMeshAlignParams
struct  MR::BendTextAlongCurveParams
class  MR::ChangeLabelAction
struct  MR::IsVisualizeMaskEnum< LabelVisualizePropertyType >
class  MR::ObjectLabel
struct  MR::SymbolMeshParams
class  MR::ImGuiMenu
struct  MR::ImGuiMenu::LabelParams
struct  MR::ImGuiMenu::TagEditorState
 state for the Edit Tag modal dialog More...
struct  MR::ImGuiMenu::SelectionInformationStyle
 style constants used for the information panel More...
class  MR::ImGuiMenu::UiRenderManagerImpl
class  MR::AlphaSortGL
struct  MR::AncillaryLabel
 Helper class to manage ancillary labels used by plugins. More...
class  MR::AncillaryImGuiLabel
 Helper class that draws ImGui label. More...
struct  MR::AncillaryLines
 Helper class to manage ancillary visual lines used by plugins. More...
struct  MR::AncillaryMesh
 Helper class to manage ancillary visual mesh used by plugins. More...
struct  MR::AncillaryPlane
 small struct to simplify creating and clearing ancillary plane object in tools More...
struct  MR::AncillaryPoints
 Helper class to manage ancillary visual points used by plugins. More...
class  MR::Historian< HistoryActionType >
class  MR::ScopeHistory
 The purpose of this class is to combine all actions appended to global history store in one big action to undo/redo them all at once. More...
class  MR::AsyncTimer
 the object to set timer from any thread and wait for alert time from another thread More...
class  MR::AsyncRequest
class  MR::ColorTheme
class  MR::CommandLoop
 Additional command loop for external app control. More...
struct  MR::ShaderWarning
class  MR::CudaAccessor
 The purpose of this class is to access CUDA algorithms without explicit dependency on MRCuda. More...
class  MR::DemoPlugin
class  MR::DepthPeelingGL
 class to encapsulate depth peeling rendering passes as fall back if alpha sort is not available More...
class  MR::DirectionWidget
 Widget for visualizing the direction. More...
class  MR::DirectionWidget::ChangeDirAction
 This history action must be created before the change in widget's direction, base or length to make them undo-able. More...
class  MR::DirectionWidget::ChangeVisibleAction
 history action for changing the visible. It should be added to the history stack by user code More...
struct  MR::DirectionWidget::Arrow
class  MR::IDragDropHandler
 this class is needed to emit detailed Drag & Drop events to Viewer on different platforms More...
struct  MR::FileDialogSignals
 This structure contains global signals for file dialogs, that are called on valid selection of file or folder. More...
struct  MR::FileParameters
struct  MR::FileDialog::Parameters
struct  MR::FileLoadOptions
struct  MR::BaseFitParams
struct  MR::FitDataParams
struct  MR::FitBoxParams
class  MR::FrameCounter
class  MR::FrameRedrawRequest
 class for requesting frame redraw in some time More...
class  MR::GLStaticHolder
class  MR::GlTexture
 represents OpenGL texture owner, and allows uploading data in it remembering texture size More...
struct  MR::GlTexture::Settings
class  MR::ImGuiImage
struct  MR::NameTagClickListener
 A helper base class to subscribe to ImGuiMenu::manuallySelectObjectSignal. More...
struct  MR::DrawSceneUiListener
 A helper base class to subscribe to ImGuiMenu::drawSceneUiSignal. More...
class  MR::ISceneStateCheck
 Interface for checking scene state, to determine availability, also can return string with requirements. More...
class  MR::ItemEnabledPerViewport
class  MR::LambdaRibbonItem
 Simple ribbon item acting given lambda. More...
class  MR::MarkedVoxelSlice
 ImGui visualization of a slice from voxel object and seed marks on it. More...
struct  MR::MarkedVoxelSlice::Mark
struct  MR::MarkedVoxelSlice::Parameters
 Parameters of slice. More...
class  MR::BoundarySelectionWidget
struct  MR::BoundarySelectionWidget::BoundarySelectionWidgetParams
class  MR::ChangeBoundarySelectionHistoryAction
class  MR::MeshModifier
struct  MR::ModalDialogSettings
 Settings for ModalDialog. More...
class  MR::ModalDialog
 Helper class to display modal dialogs. ModalDialogSettings. More...
class  MR::MouseController
struct  MR::MouseController::MouseControlKey
class  MR::MoveObjectByMouseImpl
struct  MR::MruFormatParameters
 Parameters of mesh / point / voxel object storage formats inside an .mru file. More...
class  MR::ObjectImGuiLabel
class  MR::ITransformControls
 Interface class for ObjectTransformWidget custom visualization. More...
class  MR::ITransformControls::ChangeCenterAction
 build-in history action class for change center More...
class  MR::TransformControls
 Basic implementation of ITransformControls. More...
struct  MR::TransformControls::VisualParams
class  MR::ObjectTransformWidget
class  MR::ObjectTransformWidget::ChangeXfAction
 History action for TransformWidget. More...
class  MR::Palette
 Class to hold one dimension texture with value to UV mapping. More...
struct  MR::Palette::Label
 structure for label More...
struct  MR::Palette::Parameters
 base parameters of palette More...
class  MR::PalettePresets
 Class to save and load user palette presets. More...
struct  MR::HoleEdgePoint
class  MR::PickPointManager
struct  MR::PickPointManager::Params
struct  MR::PickPointManager::WidgetHistoryAction
 A common base class for all history actions of this widget. More...
struct  MR::PickPointManager::ObjectState
class  MR::PlaneWidget
struct  MR::PointInAllSpaces
class  MR::RecentFilesStore
class  MR::BasicClickableRectUiRenderTask
class  MR::RenderResetDirtyComponent
 Simple render object to clear dirty flags in render objects combinations. More...
struct  MR::RenderDimensions::Tolerance
struct  MR::RenderDimensions::CommonParams
struct  MR::RenderDimensions::PointParams
class  MR::RenderDimensions::PointTask
struct  MR::RenderDimensions::RadiusParams
class  MR::RenderDimensions::RadiusTask
struct  MR::RenderDimensions::AngleParams
class  MR::RenderDimensions::AngleTask
struct  MR::RenderDimensions::LengthParams
class  MR::RenderDimensions::LengthTask
class  MR::GlBuffer
 represents OpenGL buffer owner, and allows uploading data in it remembering buffer size More...
class  MR::GlTexture2
 represents OpenGL 2D texture owner, and allows uploading data in it remembering texture size More...
class  MR::GlTexture3
 represents OpenGL 3D texture owner, and allows uploading data in it remembering texture size More...
class  MR::GlTexture2DArray
 represents OpenGL array texture 2D owner, and allows uploading data in it remembering texture size More...
struct  MR::BindVertexAttribArraySettings
class  MR::QuadTextureVertexObject
 class for rendering simple texture More...
class  MR::FramebufferData
 class for easier rendering in framebuffer texture More...
struct  MR::FramebufferData::DrawParams
class  MR::RenderBufferRef< T >
 provides access to shared buffer with type casting More...
class  MR::RenderObjectBuffer
 provides shared buffer for loading different types of data to GL memory More...
class  MR::RenderImGuiLabelObject
 The implementation of IRenderObject used by ObjectImGuiLabel. Draws an label using ImGui. More...
class  MR::RenderLabelObject
class  MR::RenderLinesObject
class  MR::RenderPointObject
class  MR::RenderDistanceObject
class  MR::RenderRadiusObject
class  MR::RenderAngleObject
class  MR::RenderMeshObject
class  MR::RenderNameObject
class  MR::RenderPointsObject
class  MR::RenderVolumeObject
struct  MR::DrawButtonParams
struct  MR::CustomButtonParameters
class  MR::RibbonButtonDrawer
 class for drawing ribbon menu buttons More...
struct  MR::RibbonButtonDrawer::ButtonItemWidth
class  MR::RibbonFontHolder
 class for convenient use of ImGui::PushFont / ImGui::PopFont with ribbon fonts More...
class  MR::RibbonFontManager
class  MR::RibbonIcons
 this class holds icons for ribbon items More...
struct  MR::RibbonConfig
class  MR::RibbonMenu
struct  MR::RibbonMenu::DrawGroupConfig
 Configuration of ribbon group. More...
struct  MR::RibbonMenu::DialogItemPtr
class  MR::RibbonMenuItem
class  MR::RibbonMenuSearch
 separate class for search in ribbon menu More...
struct  MR::RibbonMenuSearch::Parameters
struct  MR::RibbonMenuUIConfig
struct  MR::NotificationTags
struct  MR::RibbonNotification
class  MR::RibbonNotifier
 class to hold and operate with notifications More...
class  MR::RibbonMenuItemAdder
class  MR::RibbonMenuItemAdderT< T >
class  MR::RibbonSceneObjectsListDrawer
 class for drawing a list of scene objects in RibbonMenu style More...
struct  MR::MenuItemCaptionSize
struct  MR::MenuItemInfo
class  MR::RibbonSchemaLoadListener
struct  MR::RibbonTab
struct  MR::RibbonSchema
 This structure describes UI schema of ribbon menu. More...
class  MR::RibbonSchemaHolder
struct  MR::RibbonSchemaHolder::SearchResult
 struct to hold information for search result presentation More...
struct  MR::RibbonSchemaHolder::SearchResultWeight
 ancillary struct to hold information for search result order More...
struct  MR::RibbonSchemaHolder::SearchParams
 tool search options More...
class  MR::RibbonSchemaLoader
 Class for loading ribbon schema from structure files (basically called from RibbonMenu, but can be called separately) More...
class  MR::RibbonMenuItemCall< T >
struct  MR::SaveObjectSettings
class  MR::SaveOnClosePlugin
 this plugin will show a message to the user if she closes the application when something is modified More...
class  MR::SceneCache
 class to cached scene objects data More...
class  MR::UndoMenuItem
class  MR::RedoMenuItem
class  MR::SceneObjectsListDrawer
 class for drawing a list of scene objects (and handling interaction with it) More...
struct  MR::FlatTree
struct  MR::TypedFlatTree
struct  MR::SceneReorder
class  MR::ISceneSelectionChange
 Interface for processing scene state change in RibbonItems. More...
class  MR::SceneSelectionChangeClose
 close on state change More...
class  MR::SceneSelectionChangeRestart
 restart on state change More...
struct  MR::NoVisualRepresentationCheck
 special struct for disabling visual representation check More...
struct  MR::NoModelCheck
 special struct for disabling model check More...
class  MR::SceneStateExactCheck< N, ObjectT, typename >
 check that given vector has exactly N objects if type ObjectT More...
class  MR::SceneStateExactCheck< N, ObjectT, NoVisualRepresentationCheck >
class  MR::SceneStateExactCheck< N, ObjectT, NoModelCheck >
class  MR::SceneStateAtLeastCheck< N, ObjectT, typename >
 checks that given vector has at least N objects if type ObjectT More...
class  MR::SceneStateAtLeastCheck< N, ObjectT, NoVisualRepresentationCheck >
class  MR::SceneStateAtLeastCheck< N, ObjectT, NoModelCheck >
class  MR::SceneStateOrCheck< Checks >
 checks that at least one of argument checks is true More...
class  MR::SceneStateAndCheck< Checks >
 checks that all of argument checks are true More...
class  MR::SceneTextureGL
 Class for rendering 3d scene into texture. More...
class  MR::ViewerSetup
class  MR::ShadowsGL
struct  MR::ShortcutKey
class  MR::ShortcutManager
struct  MR::ShortcutManager::ShortcutCommand
struct  MR::StopOnTrueCombiner
 Pass this as a second template argument to boost::signals2::signal<...> to stop the execution of handlers when one of them returns true. More...
class  MR::SplashWindow
class  MR::DefaultSplashWindow
class  MR::StateBasePlugin
class  MR::StateListenerPlugin< Connectables >
class  MR::IPluginUpdate
 Interface for automatically update StatePlugins internal data. More...
class  MR::PluginCloseOnSelectedObjectRemove
class  MR::PluginCloseOnChangeMesh
class  MR::PluginUpdateOnChangeMeshPart
class  MR::PluginCloseOnChangePointCloud
class  MR::PluginCloseOnEscPressed
 Helper class to close a dialog-less plugin when the Esc key is pressed. More...
class  MR::PluginUpdateOr< Updates >
class  MR::SurfaceManipulationWidget
 widget for surface modifying @detail available 3 modes: add (move surface region in direction of normal) remove (move surface region in opposite direction to normal) relax (relax surface region) More...
struct  MR::SurfaceManipulationWidget::Settings
 Mesh change settings. More...
struct  MR::SurfaceManipulationWidget::PickedVertData
class  MR::SurfacePointWidget
 Widget for controlling point on surface with mouse. More...
struct  MR::SurfacePointWidget::Parameters
class  MR::SwapRootAction
class  MR::Toolbar
 class to draw toolbar and toolbar customize windows More...
class  MR::GcodeToolsLibrary
 class for storing CNC tools More...
class  MR::TouchesController
class  MR::TouchpadController
class  MR::TouchpadController::Handler
struct  MR::TouchpadParameters
struct  MR::UI::SaveChangesPopupSettings
struct  MR::UI::ButtonCustomizationParams
 parameters to customize buttonEx More...
struct  MR::UI::ButtonIconCustomizationParams
struct  MR::UI::PlotAxis
struct  MR::UI::CheckboxOrModifierState
struct  MR::UI::RadioButtonOrModifierState
struct  MR::UI::CachedTextSize
struct  MR::UI::SeparatorParams
 Parameters for drawing custom separator. More...
struct  MR::UI::CustomConfigModalSettings
 Settings required for UI::saveCustomConfigModal More...
class  MR::UI::Disabler
 While this exists, it temporarily disables in the given list the flags with 0 bits in the given mask. More...
class  MR::UI::LineAntialiasingDisabler
 While this exists, it temporarily disables antialiasing for the lines drawn to this list. More...
struct  MR::detail::Units::Empty
struct  MR::UnitToStringParams< E >
 Controls how a value with a unit is converted to a string. More...
struct  MR::VectorTraits< ImVec2 >
struct  MR::VectorTraits< ImVec4 >
struct  MR::LaunchParams
 This struct contains rules for viewer launch. More...
class  MR::Viewer
 GLFW-based mesh viewer. More...
class  MR::ViewerEventQueue
 queue to ignore multiple mouse moves in one frame More...
struct  MR::IConnectable
struct  MR::ConnectionHolder
struct  MR::MultiListener< Connectables >
struct  MR::MouseDownListener
struct  MR::MouseUpListener
struct  MR::MouseMoveListener
struct  MR::MouseScrollListener
struct  MR::MouseClickListener
struct  MR::DragStartListener
struct  MR::DragEndListener
struct  MR::DragListener
struct  MR::CharPressedListener
struct  MR::KeyUpListener
struct  MR::KeyDownListener
struct  MR::KeyRepeatListener
struct  MR::PreSetupViewListener
struct  MR::PreDrawListener
struct  MR::DrawListener
struct  MR::PostDrawListener
struct  MR::DragDropListener
struct  MR::DragEntranceListener
struct  MR::DragOverListener
struct  MR::PostResizeListener
struct  MR::InterruptCloseListener
struct  MR::PostRescaleListener
struct  MR::TouchStartListener
struct  MR::TouchMoveListener
struct  MR::TouchEndListener
struct  MR::SpaceMouseMoveListener
 class to subscribe on SpaceMouseMoveSignal More...
struct  MR::SpaceMouseDownListener
 class to subscribe on SpaceMouseDownSgnal More...
struct  MR::SpaceMouseUpListener
 class to subscribe on SpaceMouseUpSignal More...
struct  MR::TouchpadRotateGestureBeginListener
 class to subscribe on TouchpadRotateGestureBeginEvent More...
struct  MR::TouchpadRotateGestureUpdateListener
 class to subscribe on TouchpadRotateGestureUpdateEvent More...
struct  MR::TouchpadRotateGestureEndListener
 class to subscribe on TouchpadRotateGestureEndEvent More...
struct  MR::TouchpadSwipeGestureBeginListener
 class to subscribe on TouchpadSwipeGestureBeginEvent More...
struct  MR::TouchpadSwipeGestureUpdateListener
 class to subscribe on TouchpadSwipeGestureUpdateEvent More...
struct  MR::TouchpadSwipeGestureEndListener
 class to subscribe on TouchpadSwipeGestureEndEvent More...
struct  MR::TouchpadZoomGestureBeginListener
 class to subscribe on TouchpadZoomGestureBeginEvent More...
struct  MR::TouchpadZoomGestureUpdateListener
 class to subscribe on TouchpadZoomGestureUpdateEvent More...
struct  MR::TouchpadZoomGestureEndListener
 class to subscribe on TouchpadZoomGestureEndEvent More...
struct  MR::PostFocusListener
 class to subscribe on PostFocusSingal More...
struct  MR::CursorEntranceListener
 class to subscribe on CursorEntranceSingal More...
class  MR::ViewerPlugin
class  MR::IViewerSettingsManager
class  MR::ViewerSettingsManager
class  MR::ViewerSettingsPlugin
class  MR::ViewerSettingsPlugin::ExternalSettings
 basic class of external settings More...
struct  MR::ViewerSignals
class  MR::ViewerTitle
class  MR::Viewport
struct  MR::Viewport::LinePointImmediateRenderParams
 Rendering parameters for immediate drawing of lines and points. More...
struct  MR::Viewport::TriCornerColors
struct  MR::Viewport::PickRenderObjectParams
 Point picking parameters. More...
struct  MR::Viewport::Parameters
class  MR::CornerControllerObject
 class that holds and manages corner controller object More...
struct  MR::CornerControllerObject::PickedIds
struct  MR::SegmEndColors
 colors of segment ends More...
struct  MR::ViewportPointsWithColors
 stores points and corresponding colors (sizes of vectors should be the same) More...
class  MR::ViewportGL
 This class holds data needed to render viewport primitives and accumulative picker via OpenGL. More...
struct  MR::ViewportGL::PickParameters
 Parameters of objects picking. More...
struct  MR::ViewportGL::BasePickResult
struct  MR::ViewportGL::PickResult
 Result of object picking. More...
struct  MR::ViewportGL::ScaledPickRes
class  MR::ViewportGlobalBasis
 Class to unify Global Basis control. More...
struct  MR::VisualObjectTag
 modified color set for visual objects More...
class  MR::VisualObjectTagManager
 class for storing and changing visual object properties based on the object tags More...
class  MR::WebRequest
 this class is needed to unify cpp and wasm requests More...
struct  MR::WebRequest::FormData
 set payload in multipart/form-data format More...
struct  MR::MeshVoxelsConverter
 converter of meshes in or from signed distance volumetric representation More...
struct  MR::OriginAndDimensions
 shift of zero voxel in 3D space and dimensions of voxel-grid More...
struct  MR::VoxelsLoad::DicomStatus
struct  MR::VoxelsLoad::DicomVolumeT< T >
struct  MR::DistanceVolumeParams
struct  MR::FixUndercuts::FindParams
 Parameters that is used to find undercuts. More...
struct  MR::FixUndercuts::FixParams
 Fix undercuts function parameters. More...
struct  MR::FixUndercuts::ImproveDirectionParameters
struct  MR::FixUndercuts::DistMapImproveDirectionParameters
struct  MR::MarchingCubesParams
class  MR::MarchingCubesByParts
struct  MR::MeshToDistanceVolumeParams
struct  MR::CloseToMeshVolumeParams
struct  MR::MeshToDirectionVolumeParams
class  MR::ObjectVoxels
struct  MR::ObjectVoxels::VolumeRenderingParams
 struct to control volume rendering texture More...
struct  MR::BaseShellParameters
struct  MR::OffsetParameters
struct  MR::SharpOffsetParameters
struct  MR::GeneralOffsetParameters
 allows the user to select in the parameters which offset algorithm to call More...
class  MR::RangeProcessor< TreeT, Transformer >
 Class to use in tbb::parallel_reduce for openvdb::tree transformation. More...
class  MR::ShiftTransformer< TreeT >
 functor for shifting voxels More...
class  MR::RangeProgress
class  MR::RangeProcessorSingle< TreeT, Proc >
 Class to use in tbb::parallel_reduce for tree operations that do not require an output tree. More...
struct  MR::RangeSize
class  MR::RangeCounter< TreeT >
 functor to calculate tile and leaf valid nodes count More...
struct  MR::PointsToDistanceVolumeParams
struct  MR::PointsToMeshParameters
struct  MR::PolylineToDistanceVolumeParams
struct  MR::PolylineToVolumeParams
 Settings to conversion polyline to volume. More...
struct  MR::RebuildMeshSettings
struct  MR::SliceInfoBase
struct  MR::SliceInfo
class  MR::Nesting::SequentialNester
 class to add meshes to nest sequentially More...
struct  MR::ComputeSweptVolumeParameters
 Parameters for computeSweptVolume* functions. More...
class  MR::IComputeToolDistance
 Interface for custom tool distance computation implementations. More...
class  MR::DentalId
 This class represents tooth id. More...
class  MR::TeethMaskToDirectionVolumeConvertor
struct  MR::TeethMaskToDirectionVolumeConvertor::ProcessResult
struct  MR::Nesting::TetrisDensifyOptions
struct  MR::Nesting::TetrisDensifyParams
struct  MR::ToolPathParams
struct  MR::ConstantCuspParams
struct  MR::LineInterpolationParams
struct  MR::ArcInterpolationParams
struct  MR::GCommand
struct  MR::ToolPathResult
struct  MR::MeshToVolumeParams
 Parameters structure for meshToVolume function. More...
struct  MR::GridToMeshSettings
 parameters of OpenVDB Grid to Mesh conversion using Dual Marching Cubes algorithm More...
struct  MR::MakeSignedByWindingNumberSettings
struct  MR::DoubleOffsetSettings
struct  MR::ProgressInterrupter
 This class implements OpenVdb interrupter interface and provides ability to use MR::ProgressCallback in some OpenVdb operations. More...
class  MR::VoxelsVolumeInterpolatedAccessor< Accessor >
struct  MR::TransformVdbVolumeResult
struct  MR::MergeVolumePartSettings
 Parameters' structure for MR::mergeVolumePart. More...
struct  MR::VolumeToMeshByPartsSettings
 Parameters' structure for MR::volumeToMeshByParts. More...
struct  MR::VoxelTraits< T >
struct  MR::VoxelTraits< Vector< T, VoxelId > >
struct  MR::VoxelTraits< VoxelBitSet >
struct  MR::VoxelTraits< VoxelValueGetter< T > >
struct  MR::VoxelTraits< FloatGrid >
struct  MR::VoxelsVolume< T >
 represents a box in 3D space subdivided on voxels stored in T More...
struct  MR::VoxelsVolumeMinMax< T >
class  MR::VoxelsVolumeAccessor< Volume >
 helper class for generalized voxel volume data access More...
class  MR::VoxelsVolumeAccessor< VdbVolume >
 VoxelsVolumeAccessor specialization for VDB volume. More...
class  MR::VoxelsVolumeAccessor< VoxelsVolume< Vector< T, VoxelId > > >
 VoxelsVolumeAccessor specialization for simple volumes.
class  MR::VoxelsVolumeAccessor< VoxelsVolumeMinMax< Vector< T, VoxelId > > >
 VoxelsVolumeAccessor specialization for simple volumes with min/max. More...
class  MR::VoxelsVolumeAccessor< VoxelsVolume< VoxelValueGetter< T > > >
 VoxelsVolumeAccessor specialization for value getters. More...
class  MR::VoxelsVolumeCachingAccessor< V >
struct  MR::VoxelsVolumeCachingAccessor< V >::Parameters

Macros

#define MR_RETURN_IF_UNEXPECTED(expr)
 Exits the current function with an error if the given expression contains an error.
#define MR_REGISTER_RENDER_OBJECT_IMPL(objectType, ...)
#define DETAIL_MR_UNIT_ENUMS(X)
 A list of all unit enums, for internal use.
#define DETAIL_MR_UNIT_VALUE_TYPES(X, ...)
#define MR_X(E)
 ignore for bindings to prevent GCC14 error: undefined symbol: ZN2MR11getUnitInfoITkNS_8UnitEnumENS_8TimeUnitEEERKNS_8UnitInfoET
#define MR_X(E)
 ignore for bindings to prevent GCC14 error: undefined symbol: ZN2MR11getUnitInfoITkNS_8UnitEnumENS_8TimeUnitEEERKNS_8UnitInfoET
#define MR_WRITER(obj)
#define SCOPED_HISTORY(name)
#define MR_REGISTER_RIBBON_ITEM(pluginType)
 registers plugin on module loading, and unregister plugin on module unloading
#define MR_RIBBON_ITEM_CALL(pluginType, f, g)
 calls f(const std::shared_ptr<plugin> &) on module loading, and calls g(const std::shared_ptr<plugin> &) on module unloading
#define MR_X(E)
#define MR_X(E)
#define MR_X(E)
#define MR_X(E)
#define MR_X(T, unused)
#define MR_X(T, unused)
#define MR_X(E)
#define MR_X(T, unused)
#define MR_Y(T, E)
#define MR_Y(T, E)
#define MR_DELETE_MOVE(StaticClassName)
 this is needed as far as MAKE_SLOT cannot be used with movable classes
#define MR_ADD_CTOR_DELETE_MOVE(StaticClassName)

Typedefs

using MR::FileNamesStack = std::vector<std::filesystem::path>
using MR::PdfGeneralFont = std::variant<PdfBuildinFont, std::filesystem::path>
using MR::Pdf::Cell::Value = std::variant<int, float, bool, std::string, Empty>
using MR::Pdf::TableCustomRule = std::function<CellCustomParams( int row, int column, const std::string& cellValueText)>
using MR::PlanarTriangulation::HoleVertIds = std::vector<VertId>
using MR::PlanarTriangulation::HolesVertIds = std::vector<HoleVertIds>
using MR::PlanarTriangulation::ContourIdMap = std::vector<IntersectionInfo>
using MR::PlanarTriangulation::ContoursIdMap = std::vector<ContourIdMap>
using MR::AABBTreeBase< T >::Traits = T
using MR::AABBTreeBase< T >::Node = AABBTreeNode<Traits>
using MR::AABBTreeBase< T >::NodeVec = Vector<Node, NodeId>
using MR::AABBTreeBase< T >::LeafTag = typename T::LeafTag
using MR::AABBTreeBase< T >::LeafId = typename T::LeafId
using MR::AABBTreeBase< T >::LeafBitSet = TaggedBitSet<LeafTag>
using MR::AABBTreeBase< T >::LeafBMap = BMap<LeafId, LeafId>
using MR::AABBTreeBase< T >::BoxT = typename T::BoxT
using MR::ObjTreeTraits::LeafTag = ObjTag
using MR::ObjTreeTraits::LeafId = ObjId
using MR::ObjTreeTraits::BoxT = Box3f
using MR::AffineXf< V >::T = typename V::ValueType
using MR::AffineXf< V >::M = typename V::MatrixType
using MR::Ball< V >::VTraits = VectorTraits<V>
using MR::Ball< V >::T = typename VTraits::BaseType
template<size_t degree>
using MR::Polynomialf = Polynomial<float, degree>
template<size_t degree>
using MR::Polynomiald = Polynomial<double, degree>
template<typename T>
using MR::Polynomialx
using MR::PolynomialWrapperf = PolynomialWrapper<float>
using MR::PolynomialWrapperd = PolynomialWrapper<double>
template<size_t degree>
using MR::BestFitPolynomialf = BestFitPolynomial<float, degree>
template<size_t degree>
using MR::BestFitPolynomiald = BestFitPolynomial<double, degree>
using MR::CubicBezierCurve< V >::VTraits = VectorTraits<V>
using MR::CubicBezierCurve< V >::T = typename VTraits::BaseType
using MR::NoCtor< T >::type = T
using MR::NoCtor< T >::type = NoDefInit<T>
using MR::Buffer< V, I >::T = typename NoCtor<V>::type
using MR::Buffer< V, I >::reference = T&
using MR::Buffer< V, I >::const_reference = const T&
using MR::Buffer< V, I >::iterator = T*
using MR::Buffer< V, I >::const_iterator = const T*
using MR::ChangeObjectColorAction::Obj = VisualObject
using MR::ChangeFacesColorMapAction::Obj = ObjectMeshHolder
using MR::ChangeLinesColorMapAction::Obj = ObjectLinesHolder
using MR::ChangeColoringType::Obj = VisualObject
using MR::ChangeVisualizePropertyAction::Obj = VisualObject
using MR::ChangeObjectSelectedAction::Obj = Object
using MR::ChangeObjectVisibilityAction::Obj = Object
using MR::ChangePointCloudAction::Obj = ObjectPoints
using MR::ChangePointCloudPointsAction::Obj = ObjectPoints
using MR::ChangeOnePointInCloudAction::Obj = ObjectPoints
using MR::ChangePointCloudNormalsAction::Obj = ObjectPoints
using MR::ChangeOneNormalInCloudAction::Obj = ObjectPoints
using MR::ChangeVertsColorMapAction< T >::Obj = T
using MR::ChunkIterator::iterator_category = std::input_iterator_tag
using MR::ChunkIterator::value_type = Chunk
using MR::ChunkIterator::difference_type = std::ptrdiff_t
using MR::ChunkIterator::pointer = Chunk*
using MR::ChunkIterator::reference = Chunk&
using MR::CNCMachineSettings::RotationAxesOrder = std::vector<RotationAxisName>
using MR::CNCMachineSettings::RotationLimits = std::optional<Vector2f>
using MR::ColorMapAggregator< Tag >::ColorMap = Vector<Color, Id<Tag>>
using MR::ColorMapAggregator< Tag >::ElementBitSet = TaggedBitSet<Tag>
using MR::ConeFittingFunctor< T >::Scalar = T
using MR::ConeFittingFunctor< T >::InputType = Eigen::Matrix<T, Eigen::Dynamic, 1>
using MR::ConeFittingFunctor< T >::ValueType = Eigen::Matrix<T, Eigen::Dynamic, 1>
using MR::ConeFittingFunctor< T >::JacobianType = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>
typedef std::vector< const char * > MR::Config::Enum
 Description of a enumeration as a map between [0...N) and N strings.
using MR::PathMeshEdgePointCallback = std::function<void( const MeshEdgePoint& mep )>
 Callback for each MeshEdgePoint in path.
using MR::CurvePoints = std::vector<CurvePoint>
 curve given as a number of points on it samples at arbitrary steps
using MR::UndirectedEdgeIterator::iterator_category = std::forward_iterator_tag
using MR::UndirectedEdgeIterator::value_type = UndirectedEdgeId
template<class T, class E = std::string>
using MR::Expected = tl::expected<T, E>
template<class E = std::string>
using MR::Unexpected = tl::unexpected<E>
using MR::FastInt128 = __int128_t
using MR::IFastWindingNumberByParts::GridByPartsFunc = std::function<Expected<void> ( std::vector<float>&& data, const Vector3i& dims, int zOffset )>
using MR::ObjKindTraits< FeaturesObjectKind::Point >::type = PointObject
using MR::ObjKindTraits< FeaturesObjectKind::Line >::type = LineObject
using MR::ObjKindTraits< FeaturesObjectKind::Plane >::type = PlaneObject
using MR::ObjKindTraits< FeaturesObjectKind::Circle >::type = CircleObject
using MR::ObjKindTraits< FeaturesObjectKind::Sphere >::type = SphereObject
using MR::ObjKindTraits< FeaturesObjectKind::Cylinder >::type = CylinderObject
using MR::ObjKindTraits< FeaturesObjectKind::Cone >::type = ConeObject
using MR::FeaturesPropertyTypesVariant = std::variant<float, Vector3f>
using MR::Features::Primitives::Sphere = Sphere3<float>
 Doubles as a point when the radius is zero.
using MR::Features::Primitives::Variant = std::variant<Sphere, ConeSegment, Plane>
using MR::GcodeProcessor::BaseAction2f = BaseAction<Vector2f>
using MR::GcodeProcessor::BaseAction3f = BaseAction<Vector3f>
using MR::Graph::VertId = GraphVertId
using MR::Graph::EdgeId = GraphEdgeId
using MR::Graph::VertBitSet = GraphVertBitSet
using MR::Graph::EdgeBitSet = GraphEdgeBitSet
using MR::Graph::Neighbours = std::vector<EdgeId>
using MR::Graph::NeighboursPerVertex = Vector<Neighbours, VertId>
 sorted by edgeID
using MR::Graph::EndsPerEdge = Vector<EndVertices, EdgeId>
using MR::MultiObjsSamples = std::vector<ObjVertId>
using MR::HistoryStackFilter = std::function<bool( const std::shared_ptr<HistoryAction>& )>
using MR::HistoryActionsVector = std::vector<std::shared_ptr<HistoryAction>>
using MR::Id< T >::ValueType = int
using MR::Id< EdgeTag >::ValueType = int
using MR::Id< VoxelTag >::ValueType = size_t
using MR::ContinuousContour = std::vector<VarEdgeTri>
using MR::ContinuousContours = std::vector<ContinuousContour>
using MR::UiRenderParams::UiTaskList = std::vector<std::shared_ptr<BasicUiRenderTask>>
using MR::IRenderObjectConstructorLambda = std::function<std::unique_ptr<IRenderObject>( const VisualObject& )>
using MR::Line< V >::T = typename V::ValueType
using MR::LineSegm< V >::T = typename V::ValueType
using MR::ObjectPtr = std::shared_ptr<Object>
using MR::LoadedObject = LoadedObjectT<Object>
using MR::LoadedObjectMesh = LoadedObjectT<ObjectMesh>
using MR::LoadedObjectPoints = LoadedObjectT<ObjectPoints>
using MR::LoadedObjectLines = LoadedObjectT<ObjectLines>
using MR::LoadedObjectVoxels = LoadedObjectT<ObjectVoxels>
using MR::TrianglesRepetitions = std::array<int, 4>
using MR::MapOrHashMap< K, V >::Dense = Vector<V, K>
using MR::MapOrHashMap< K, V >::Hash = HashMap<K, V>
using MR::Matrix2< T >::ValueType = T
using MR::Matrix2< T >::VectorType = Vector2<T>
using MR::Matrix3< T >::ValueType = T
using MR::Matrix3< T >::VectorType = Vector3<T>
using MR::Matrix4< T >::ValueType = T
using MR::Matrix4< T >::VectorType = Vector4<T>
using MR::MR_BIND_IGNORE = std::array<Vector3f, 3>
using MR::EdgePath = std::vector<EdgeId>
using MR::EdgeLoop = std::vector<EdgeId>
using MR::EdgeLoops = std::vector<EdgeLoop>
template<typename T>
using MR::TaggedBitSet = TypedBitSet<Id<T>>
using MR::Int64 = std::int64_t
using MR::Uint64 = std::uint64_t
template<typename T>
using MR::AffineXf3 = AffineXf<Vector3<T>>
template<typename T>
using MR::Sphere3 = Sphere<Vector3<T>>
template<typename T>
using MR::Line3 = Line<Vector3<T>>
template<typename T>
using MR::LineSegm3 = LineSegm<Vector3<T>>
template<typename T>
using MR::Contour2 = Contour<Vector2<T>>
template<typename T>
using MR::Contour3 = Contour<Vector3<T>>
using MR::Contour2d = Contour2<double>
using MR::Contour2f = Contour2<float>
using MR::Contour3d = Contour3<double>
using MR::Contour3f = Contour3<float>
template<typename V>
using MR::Contours = std::vector<Contour<V>>
template<typename T>
using MR::Contours2 = Contours<Vector2<T>>
template<typename T>
using MR::Contours3 = Contours<Vector3<T>>
using MR::Contours2d = Contours2<double>
using MR::Contours2f = Contours2<float>
using MR::Contours3d = Contours3<double>
using MR::Contours3f = Contours3<float>
template<typename T>
using MR::MinMax = Box<T>
using MR::MinMaxf = MinMax<float>
using MR::MinMaxd = MinMax<double>
using MR::MinMaxi = MinMax<int>
template<typename T>
using MR::Box1 = Box<T>
template<typename T>
using MR::Box2 = Box<Vector2<T>>
template<typename T>
using MR::Box3 = Box<Vector3<T>>
template<typename T>
using MR::Ball1 = Ball<T>
template<typename T>
using MR::Ball2 = Ball<Vector2<T>>
template<typename T>
using MR::Ball3 = Ball<Vector3<T>>
template<typename T>
using MR::CubicBezierCurve2 = CubicBezierCurve<Vector2<T>>
template<typename T>
using MR::CubicBezierCurve3 = CubicBezierCurve<Vector3<T>>
template<typename T>
using MR::QuadraticForm3 = QuadraticForm<Vector3<T>>
using MR::Triangle3i = Triangle3<int>
using MR::Triangle3f = Triangle3<float>
using MR::Triangle3d = Triangle3<double>
using MR::MeshEdgePoint = EdgePoint
using MR::SurfacePath = std::vector<MeshEdgePoint>
using MR::SurfacePaths = std::vector<SurfacePath>
using MR::IsoLine = SurfacePath
using MR::IsoLines = SurfacePaths
using MR::PlaneSection = SurfacePath
using MR::PlaneSections = SurfacePaths
using MR::VertPair = std::pair<VertId, VertId>
using MR::FacePair = std::pair<FaceId, FaceId>
using MR::EdgePair = std::pair<EdgeId, EdgeId>
using MR::UndirectedEdgePair = std::pair<UndirectedEdgeId, UndirectedEdgeId>
using MR::UVCoord = Vector2f
using MR::TwoVertIds = std::array<VertId, 2>
 two vertex ids describing an edge with the ends in vertices given by their ids
using MR::ThreeVertIds = std::array<VertId, 3>
 three vertex ids describing a triangle with the corners in vertices given by their ids
using MR::ThreeUVCoords = std::array<UVCoord, 3>
 three UV-coordinates describing texturing of a triangle
using MR::FacePredicate = std::function<bool( FaceId )>
using MR::EdgePredicate = std::function<bool( EdgeId )>
using MR::UndirectedEdgePredicate = std::function<bool( UndirectedEdgeId )>
using MR::PreCollapseCallback = std::function<bool( EdgeId edgeToCollapse, const Vector3f& newEdgeOrgPos )>
using MR::OnEdgeSplit = std::function<void( EdgeId e1, EdgeId e )>
using MR::VertMetric = std::function<float( VertId )>
using MR::FaceMetric = std::function<float( FaceId )>
using MR::EdgeMetric = std::function<float( EdgeId )>
using MR::UndirectedEdgeMetric = std::function<float( UndirectedEdgeId )>
template<typename T, typename Hash = phmap::priv::hash_default_hash<T>, typename Eq = phmap::priv::hash_default_eq<T>>
using MR::ParallelHashSet = phmap::parallel_flat_hash_set<T, Hash, Eq>
using MR::FaceHashSet = HashSet<FaceId>
 No canonical typedefs because phmap::... is not under our control.
using MR::VertHashSet = HashSet<VertId>
using MR::EdgeHashSet = HashSet<EdgeId>
template<typename K, typename V, typename Hash = phmap::priv::hash_default_hash<K>, typename Eq = phmap::priv::hash_default_eq<K>>
using MR::HashMap = phmap::flat_hash_map<K, V, Hash, Eq>
template<typename K, typename V, typename Hash = phmap::priv::hash_default_hash<K>, typename Eq = phmap::priv::hash_default_eq<K>>
using MR::ParallelHashMap = phmap::parallel_flat_hash_map<K, V, Hash, Eq>
using MR::FaceHashMap = HashMap<FaceId, FaceId>
using MR::VertHashMap = HashMap<VertId, VertId>
using MR::EdgeHashMap = HashMap<EdgeId, EdgeId>
using MR::UndirectedEdgeHashMap = HashMap<UndirectedEdgeId, UndirectedEdgeId>
using MR::WholeEdgeHashMap = HashMap<UndirectedEdgeId, EdgeId>
 mapping of whole edges: map[e]->f, map[e.sym()]->f.sym(), where only map[e] for even edges is stored
using MR::FaceMapOrHashMap = MapOrHashMap<FaceId, FaceId>
using MR::VertMapOrHashMap = MapOrHashMap<VertId, VertId>
using MR::EdgeMapOrHashMap = MapOrHashMap<EdgeId, EdgeId>
using MR::UndirectedEdgeMapOrHashMap = MapOrHashMap<UndirectedEdgeId, UndirectedEdgeId>
using MR::WholeEdgeMapOrHashMap = MapOrHashMap<UndirectedEdgeId, EdgeId>
 mapping of whole edges: map[e]->f, map[e.sym()]->f.sym(), where only map[e] for even edges is stored
using MR::GcodeSource = std::vector<std::string>
using MR::MeshOrPoints::LimitedProjectorFunc = std::function<bool( const Vector3f& p, ProjectionResult& res )>
using MR::ProjectOnAllCallback = std::function<void( ObjId, MeshOrPoints::ProjectionResult )>
 to receive object id + projection result on it
using MR::ICPObjects = Vector<MeshOrPointsXf, ObjId>
using MR::ICPLayer = int
using MR::ICPElementId = Id<ICPElemtTag>
using MR::ICPElementBitSet = TaggedBitSet<ICPElemtTag>
using MR::ICPGroupProjector = std::function<void( const Vector3f& p, MeshOrPoints::ProjectionResult& res, ObjId& resId )>
using MR::ICPPairsGrid = Vector<Vector<ICPGroupPairs, ICPElementId>, ICPElementId>
using MR::MultiwayICP::PairsPerLayer = Vector<ICPPairsGrid, ICPLayer>
using MR::ObjectComparableWithReference::ComparisonReferenceValue::Var = std::variant<float, Vector3f>
using MR::ObjectGcode::GcodeChangedSignal = Signal<void( uint32_t mask )>
 signal about gcode changing, triggered in setDirtyFlag
using MR::DashPattern = Vector4<uint8_t>
using MR::ObjectLinesHolder::LinesChangedSignal = Signal<void( uint32_t mask )>
 signal about lines changing, triggered in setDirtyFlag
using MR::ObjectMeshHolder::SelectionChangedSignal = Signal<void()>
 signal about face selection changing, triggered in selectFaces
using MR::ObjectMeshHolder::MeshChangedSignal = Signal<void( uint32_t mask )>
 signal about mesh changing, triggered in setDirtyFlag
using MR::ObjectPointsHolder::SelectionChangedSignal = Signal<void()>
 signal about points selection changing, triggered in selectPoints
using MR::ObjectPointsHolder::ChangedSignal = Signal<void( uint32_t mask )>
 signal about points or normals changing, triggered in setDirtyFlag
using MR::ObjectTagEventDispatcher::TagAddedSignal = Signal<void ( Object* obj, const std::string& tag )>
using MR::ObjectTagEventDispatcher::TagRemovedSignal = Signal<void ( Object* obj, const std::string& tag )>
using MR::OffsetContoursVertMap = std::vector<OffsetContoursOrigins>
using MR::OffsetContoursVertMaps = std::vector<OffsetContoursVertMap>
using MR::ContoursVariableOffset = std::function<float( int, int )>
using MR::OffsetContoursRestoreZParams::OriginZCallback = std::function<float( const Contours2f& offsetCont, const OffsetContourIndex& offsetIndex, const OffsetContoursOrigins& origingContourMapoing)>
using MR::MeshTriPointsConnector = std::function<Expected<SurfacePath>( const MeshTriPoint& start, const MeshTriPoint& end, int startIndex, int endIndex )>
using MR::PickedPoint = std::variant<std::monostate, MeshTriPoint, EdgePoint, VertId>
using MR::FoundPointCallback = std::function<void( VertId, const Vector3f& )>
using MR::OnPointInBallFound = std::function<Processing( const PointsProjectionResult & found, const Vector3f & foundXfPos, Ball3f & ball )>
 this callback is invoked on every point located within the ball, and allows changing the ball for search continuation
using MR::DecimatePolylineSettings2 = DecimatePolylineSettings<Vector2f>
using MR::DecimatePolylineSettings3 = DecimatePolylineSettings<Vector3f>
using MR::PolylineUndirectedEdgeIterator::iterator_category = std::forward_iterator_tag
using MR::PolylineUndirectedEdgeIterator::value_type = UndirectedEdgeId
using MR::PriorityQueue< T, P >::value_type = T
using MR::PriorityQueue< T, P >::Container = std::vector<T>
using MR::PriorityQueue< T, P >::size_type = typename Container::size_type
using MR::QuadraticForm< V >::T = typename V::ValueType
using MR::QuadraticForm< V >::SM = typename V::SymMatrixType
using MR::RegularGridLatticeValidator = std::function<bool( size_t x, size_t y )>
 Lambda for validating grid lattice.
using MR::RegularGridLatticePositioner = std::function<Vector3f( size_t x, size_t y )>
 Lambda for getting lattice position.
using MR::RegularGridMeshFaceValidator
 Lambda for validating mesh face.
using MR::RigidScaleXf3< T >::V = Vector3<T>
using MR::RigidXf3< T >::V = Vector3<T>
using MR::RingIterator< N >::iterator_category = std::forward_iterator_tag
using MR::RingIterator< N >::value_type = EdgeId
using MR::RingIterator< N >::difference_type = std::ptrdiff_t
using MR::OrgRingIterator = RingIterator<NextEdgeSameOrigin>
using MR::LeftRingIterator = RingIterator<NextEdgeSameLeft>
using MR::SeparationPointSet = std::array<VertId, size_t( NeighborDir::Count )>
using MR::SeparationPointMap = HashMap<size_t, SeparationPointSet>
using MR::Sphere< V >::T = typename V::ValueType
using MR::SymMatrix2< T >::ValueType = T
using MR::SymMatrix3< T >::ValueType = T
using MR::SymMatrix4< T >::ValueType = T
using MR::SystemPath::SystemFontPaths = std::array<std::filesystem::path, size_t( SystemFontType::Count )>
using MR::TriTriDistanceResultf = TriTriDistanceResult<float>
using MR::TriTriDistanceResultd = TriTriDistanceResult<double>
using MR::TriTriDistanceParamsf = TriTriDistanceParams<float>
using MR::TriTriDistanceParamsd = TriTriDistanceParams<double>
using MR::TwoLineSegmClosestPointsf = TwoLineSegmClosestPoints<float>
using MR::TwoLineSegmClosestPointsd = TwoLineSegmClosestPoints<double>
using MR::UnionFind< I >::SizeType = typename I::ValueType
 the type that can hold the number of elements of the maximal set (e.g. int for FaceId and size_t for VoxelId)
using MR::FolderCallback = std::function<void( const std::filesystem::path& tempFolderName )>
 this callback will be called before compression on serialization and after decompression on deserialization
template<typename T>
using MR::detail::Units::MakeFloatingPoint = std::conditional_t<std::is_integral_v<typename VectorTraits<T>::BaseType>, typename VectorTraits<T>::template ChangeBaseType<float>, T>
using MR::Vector< T, I >::value_type = typename std::vector<T>::value_type
using MR::Vector< T, I >::reference = typename std::vector<T>::reference
using MR::Vector< T, I >::const_reference = typename std::vector<T>::const_reference
using MR::Vector< T, I >::iterator = typename std::vector<T>::iterator
using MR::Vector< T, I >::const_iterator = typename std::vector<T>::const_iterator
using MR::Vector3< T >::ValueType = T
using MR::Vector3< T >::MatrixType = Matrix3<T>
using MR::Vector3< T >::SymMatrixType = SymMatrix3<T>
using MR::Vector4< T >::ValueType = T
using MR::Vector4< T >::MatrixType = Matrix4<T>
using MR::Vector4< T >::SymMatrixType = SymMatrix4<T>
using MR::VectorTraits< T >::BaseType = T
 The base template handles scalars (or just non-vectors).
template<typename U>
using MR::VectorTraits< T >::ChangeBaseType = U
 Changes the vector element type. For scalars, replaces the whole type.
using MR::VectorTraits< Vector2< T > >::BaseType = T
template<typename U>
using MR::VectorTraits< Vector2< T > >::ChangeBaseType = Vector2<U>
using MR::VectorTraits< Vector3< T > >::BaseType = T
template<typename U>
using MR::VectorTraits< Vector3< T > >::ChangeBaseType = Vector3<U>
using MR::VectorTraits< Vector4< T > >::BaseType = T
template<typename U>
using MR::VectorTraits< Vector4< T > >::ChangeBaseType = Vector4<U>
using MR::VersatileChangeMeshPointsAction::Obj = ObjectMesh
using MR::PythonExport::PythonRegisterFuncton = std::function<void( pybind11::module_& m )>
using MR::ImGuiMenu::NameTagClickSignal = boost::signals2::signal<bool( Object& object, NameTagSelectionMode mode ), StopOnTrueCombiner>
using MR::ImGuiMenu::DrawSceneUiSignal = boost::signals2::signal<void( ViewportId viewportId, UiRenderParams::UiTaskList& tasks )>
typedef unsigned int MR::AlphaSortGL::GLuint
using MR::Historian< HistoryActionType >::Obj = typename HistoryActionType::Obj
using MR::Time = std::chrono::time_point<std::chrono::system_clock>
using MR::AsyncRequest::Command = std::function<void()>
using MR::CommandLoop::CommandFunc = std::function<void()>
using MR::DisabledWarnings = std::vector<ShaderWarning>
using MR::CudaAccessor::CudaFreeMemoryFunc = std::function<size_t()>
 Returns amount of free memory on GPU.
using MR::CudaAccessor::CudaFwnConstructor = std::function<std::unique_ptr<IFastWindingNumber>( const Mesh& )>
 Returns specific implementation of IFastWindingNumber interface that computes windings on GPU.
using MR::CudaAccessor::CudaMeshProjectorConstructor = std::function<std::unique_ptr<IPointsToMeshProjector>()>
 Returns specific implementation of IPointsToMeshProjector interface projects on GPU.
using MR::CudaAccessor::CudaPointsProjectorConstructor = std::function<std::unique_ptr<IPointsProjector>()>
 Returns specific implementation of IPointsProjector interface projects on GPU.
using MR::CudaAccessor::CudaPointsToDistanceVolumeCallback = std::function<Expected<SimpleVolumeMinMax>( const PointCloud& cloud, const PointsToDistanceVolumeParams& params )>
using MR::CudaAccessor::CudaPointsToDistanceVolumeByPartsCallback = std::function<Expected<void>( const PointCloud& cloud, const PointsToDistanceVolumeParams& params, std::function<Expected<void> ( const SimpleVolumeMinMax& volume, int zOffset )> addPart, int layerOverlap )>
using MR::CudaAccessor::CudaComputeToolDistanceConstructor = std::function<std::unique_ptr<IComputeToolDistance>()>
 Returns specific implementation of IComputeToolDistance interface that computes on GPU.
using MR::DirectionWidget::OnDirectionChangedCallback = std::function<void( const Vector3f&, bool )>
 This callback is invoked every time when the direction is changed by mouse.
using MR::FileDialogSignals::SelectFileSignal = Signal<void( const std::filesystem::path& path )>
using MR::FileDialogSignals::SelectFilesSignal = Signal<void( const std::vector<std::filesystem::path>& )>
using MR::FileDialogSignals::SelectFolderSignal = SelectFileSignal
using MR::FileDialogSignals::SelectFoldersSignal = SelectFilesSignal
using MR::FilesLoadedCallback = std::function<void( const std::vector<std::shared_ptr<Object>>& objs, const std::string& errors, const std::string& warnings )>
typedef unsigned int MR::GLStaticHolder::GLuint
using MR::LambdaRibbonItem::SimpleLambda = std::function<void()>
using MR::BoundarySelectionWidget::BoundarySelectionWidgetCallBack = std::function<void( std::shared_ptr<const MR::ObjectMeshHolder> )>
using MR::BoundarySelectionWidget::BoundarySelectionWidgetChecker = std::function<bool( std::shared_ptr<const MR::ObjectMeshHolder> )>
using MR::BoundarySelectionWidget::HolesOnObject = std::vector<MR::EdgeId>
using MR::BoundarySelectionWidget::PerObjectHoles = std::unordered_map <std::shared_ptr<MR::ObjectMeshHolder>, HolesOnObject>
using MR::BoundarySelectionWidget::PerObjectHolesPolylines = std::unordered_map <std::shared_ptr<MR::ObjectMeshHolder>, std::vector<AncillaryLines>>
using MR::BoundarySelectionWidget::PerObjectMeshChangedSignals = std::unordered_map < std::shared_ptr<MR::ObjectMeshHolder>, boost::signals2::scoped_connection>
using MR::TransformModesValidator = std::function<ControlBit( const Vector3f& center, const AffineXf3f& xf, ViewportId )>
using MR::PickPointManager::PickerPointCallBack = std::function<void( std::shared_ptr<VisualObject> obj, int index )>
using MR::PickPointManager::AllowCallBack = std::function<bool( const std::shared_ptr<VisualObject>& obj, int index )>
using MR::PickPointManager::ChangeObjectCallBack = std::function<bool( const std::shared_ptr<VisualObject>& obj )>
using MR::PickPointManager::SurfaceContour = std::vector<std::shared_ptr<SurfacePointWidget>>
using MR::PickPointManager::SurfaceContours = std::unordered_map <std::shared_ptr<VisualObject>, SurfaceContour>
using MR::PickPointManager::FullState = std::vector<ObjectState>
using MR::ProgressBar::TaskWithMainThreadPostProcessing = std::function< std::function<void()>() >
 function that returns post-processing function to be called in main UI thread
using MR::RenderDefaultUiObject = RenderObjectCombinator<RenderNameObject>
 Combines all the default UI IRenderObjects.
using MR::RenderDimensionObject = RenderObjectCombinator<RenderDefaultUiObject, RenderResetDirtyComponent>
typedef unsigned int MR::RenderMeshObject::GLuint
using MR::RibbonFontManager::FontFilePaths = std::array<std::filesystem::path, size_t( FontFile::Count )>
using MR::RibbonMenu::CustomContextMenuCheckbox::Setter = std::function<void( std::shared_ptr<Object> object, ViewportId id, bool checked )>
using MR::RibbonMenu::CustomContextMenuCheckbox::Getter = std::function<bool( std::shared_ptr<Object> object, ViewportId id )>
using MR::RibbonMenu::TabChangedSignal = boost::signals2::signal<void( int prevTabId, int newTabId )>
using MR::RibbonMenu::DrawTabConfig = std::vector<DrawGroupConfig>
using MR::MenuItemsList = std::vector<std::string>
using MR::RibbonMenuItem::DropItemsList = std::vector<std::shared_ptr<RibbonMenuItem>>
using MR::NotificationTagMask = unsigned
using MR::RibbonNotification::OnButtonClick = std::function<void()>
using MR::SplitCaptionInfo = std::vector<std::pair<size_t, float>>
 needed for big buttons text aligning
using MR::ItemMap = HashMap<std::string, MenuItemInfo>
using MR::TabsGroupsMap = HashMap<std::string, std::vector<std::string>>
using MR::GroupsItemsMap = TabsGroupsMap
template<typename ObjectType>
using MR::SceneCache::ObjectList = std::vector<std::shared_ptr<ObjectType>>
typedef int MR::SceneObjectsListDrawer::ImGuiTreeNodeFlags
using MR::ShortcutManager::ShortcutKey = MR::ShortcutKey
using MR::ShortcutManager::Category = MR::ShortcutCategory
using MR::ShortcutManager::ShortcutList = std::vector<std::tuple<ShortcutKey, Category, std::string>>
using MR::ShortcutManager::ShourtcutsMap = HashMap<int, ShortcutCommand>
using MR::ShortcutManager::ShourtcutsBackMap = HashMap<std::string, int>
using MR::StopOnTrueCombiner::result_type = bool
using MR::StateListenerPlugin< Connectables >::PluginParent = StateListenerPlugin<Connectables...>
using MR::StateListenerPlugin< Connectables >::MultiListenerBase = MultiListener<Connectables...>
using MR::PluginUpdateOnChangeMeshPart::UpdateFunc = std::function<void()>
using MR::MenuItemsListMigration = std::function<void ( MenuItemsList& )>
using MR::MenuItemsListMigrations = std::map<int, MenuItemsListMigration>
using MR::VarUnitToStringParams
 The std::variant of UnitToStringParams<E> for all known Es (unit kinds).
using MR::VectorTraits< ImVec2 >::BaseType = float
template<std::same_as< float >>
using MR::VectorTraits< ImVec2 >::ChangeBaseType = ImVec2
 Can't change the element type...
using MR::VectorTraits< ImVec4 >::BaseType = float
template<std::same_as< float >>
using MR::VectorTraits< ImVec4 >::ChangeBaseType = ImVec4
 Can't change the element type...
using MR::Viewer::MouseButton = MR::MouseButton
using MR::Viewer::MouseMode = MR::MouseMode
using MR::Viewer::LaunchParams = MR::LaunchParams
using MR::Viewer::PointInAllSpaces = MR::PointInAllSpaces
using MR::ViewportRectangle = Box2f
 Viewport size.
using MR::StatePlugin = StateListenerPlugin<>
using MR::ViewerEventCallback = std::function<void()>
using MR::ObjAndPick = std::pair<std::shared_ptr<MR::VisualObject>, MR::PointOnObject>
using MR::ConstObjAndPick = std::pair<std::shared_ptr<const MR::VisualObject>, MR::PointOnObject>
using MR::RequirementsFunction = std::function<std::string( const std::shared_ptr<RibbonMenuItem>& )>
using MR::FontAndSize = std::pair<ImFont*, float>
using MR::ViewerSignals::SignalStopHandler = StopOnTrueCombiner
using MR::ViewerSignals::MouseUpDownSignal = boost::signals2::signal<bool( MouseButton btn, int modifier ), SignalStopHandler>
 Mouse events.
using MR::ViewerSignals::MouseMoveSignal = boost::signals2::signal<bool( int x, int y ), SignalStopHandler>
using MR::ViewerSignals::MouseScrollSignal = boost::signals2::signal<bool( float delta ), SignalStopHandler>
using MR::ViewerSignals::CursorEntranceSignal = boost::signals2::signal<void(bool)>
 Cursor enters/leaves.
using MR::ViewerSignals::CharPressedSignal = boost::signals2::signal<bool( unsigned unicodeKey, int modifier ), SignalStopHandler>
 Keyboard event.
using MR::ViewerSignals::KeySignal = boost::signals2::signal<bool( int key, int modifier ), SignalStopHandler>
using MR::ViewerSignals::SpaceMouseMoveSignal = boost::signals2::signal<bool( const Vector3f& translate, const Vector3f& rotate ), SignalStopHandler>
 SpaceMouseEvents.
using MR::ViewerSignals::SpaceMouseKeySignal = boost::signals2::signal<bool( int ), SignalStopHandler>
using MR::ViewerSignals::RenderSignal = boost::signals2::signal<void()>
 Render events.
using MR::ViewerSignals::ObjectsLoadedSignal = boost::signals2::signal<void( const std::vector<std::shared_ptr<Object>>& objs, const std::string& errors, const std::string& warnings )>
 Scene events.
using MR::ViewerSignals::DragDropSignal = boost::signals2::signal<bool( const std::vector<std::filesystem::path>& paths ), SignalStopHandler>
using MR::ViewerSignals::PostResizeSignal = boost::signals2::signal<void( int x, int y )>
using MR::ViewerSignals::PostRescaleSignal = boost::signals2::signal<void( float xscale, float yscale )>
using MR::ViewerSignals::InterruptCloseSignal = boost::signals2::signal<bool(), SignalStopHandler>
using MR::ViewerSignals::TouchSignal = boost::signals2::signal<bool(int,int,int), SignalStopHandler>
 Touch signals.
using MR::ViewerSignals::TouchpadGestureBeginSignal = boost::signals2::signal<bool(), SignalStopHandler>
 Touchpad gesture events.
using MR::ViewerSignals::TouchpadGestureEndSignal = boost::signals2::signal<bool(), SignalStopHandler>
using MR::ViewerSignals::TouchpadRotateGestureUpdateSignal = boost::signals2::signal<bool( float angle ), SignalStopHandler>
using MR::ViewerSignals::TouchpadSwipeGestureUpdateSignal = boost::signals2::signal<bool( float deltaX, float deltaY, bool kinetic ), SignalStopHandler>
using MR::ViewerSignals::TouchpadZoomGestureUpdateSignal = boost::signals2::signal<bool( float scale, bool kinetic ), SignalStopHandler>
using MR::ViewerSignals::PostFocusSignal = boost::signals2::signal<void( bool )>
 Window focus signal.
using MR::ViewerSignals::PreShutdownSignal = boost::signals2::signal<void()>
 Before shutdown signal.
using MR::Viewport::ViewportRectangle = MR::ViewportRectangle
using MR::Viewport::PickRenderObjectPredicate = std::function<bool ( const VisualObject*, ViewportMask )>
 Predicate to additionally filter objects that should be treated as pickable.
using MR::Viewport::FitMode = MR::FitMode
using MR::Viewport::BaseFitParams = MR::BaseFitParams
using MR::Viewport::FitDataParams = MR::FitDataParams
using MR::Viewport::FitBoxParams = MR::FitBoxParams
typedef unsigned int MR::ViewportGL::GLuint
typedef float MR::ViewportGL::GLfloat
using MR::ViewportGL::PickResults = std::vector<PickResult>
using MR::ViewportGL::BasePickResults = std::vector<BasePickResult>
using MR::WebRequest::ResponseCallback = MR::WebResponseCallback
using MR::WebResponseCallback = std::function<void( const Json::Value& response )>
using MR::FixUndercuts::UndercutMetric = std::function<double( const FaceBitSet&, const FindParams& params )>
using MR::VoxelPointPositioner = std::function<Vector3f( const Vector3f&, const Vector3f&, float, float, float )>
using MR::ObjectVoxels::IsoSurfaceChangedSignal = Signal<void()>
 signal about Iso-surface changes (from updateIsoSurface)
using MR::ObjectVoxels::VoxelsChangedSignal = Signal<void()>
 triggered by changes to voxels data
using MR::GeneralOffsetParameters::Mode = MR::OffsetMode
using MR::RangeProcessor< TreeT, Transformer >::InterruptFunc = std::function<bool( void )>
using MR::RangeProcessor< TreeT, Transformer >::ValueT = typename TreeT::ValueType
using MR::RangeProcessor< TreeT, Transformer >::LeafIterT = typename TreeT::LeafCIter
using MR::RangeProcessor< TreeT, Transformer >::TileIterT = typename TreeT::ValueAllCIter
using MR::RangeProcessor< TreeT, Transformer >::LeafRange = typename openvdb::tree::IteratorRange<LeafIterT>
using MR::RangeProcessor< TreeT, Transformer >::TileRange = typename openvdb::tree::IteratorRange<TileIterT>
using MR::RangeProcessor< TreeT, Transformer >::InTreeAccessor = typename openvdb::tree::ValueAccessor<const TreeT>
using MR::RangeProcessor< TreeT, Transformer >::OutTreeAccessor = typename openvdb::tree::ValueAccessor<TreeT>
using MR::ShiftTransformer< TreeT >::InTreeAccessor = typename openvdb::tree::ValueAccessor<const TreeT>
using MR::ShiftTransformer< TreeT >::OutTreeAccessor = typename openvdb::tree::ValueAccessor<TreeT>
using MR::ShiftTransformer< TreeT >::ValueT = typename TreeT::ValueType
using MR::RangeProcessorSingle< TreeT, Proc >::InterruptFunc = std::function<bool( void )>
using MR::RangeProcessorSingle< TreeT, Proc >::ProgressHolder = std::shared_ptr<RangeProgress>
using MR::RangeProcessorSingle< TreeT, Proc >::ValueT = typename TreeT::ValueType
using MR::RangeProcessorSingle< TreeT, Proc >::LeafIterT = typename TreeT::LeafCIter
using MR::RangeProcessorSingle< TreeT, Proc >::TileIterT = typename TreeT::ValueAllCIter
using MR::RangeProcessorSingle< TreeT, Proc >::LeafRange = typename openvdb::tree::IteratorRange<LeafIterT>
using MR::RangeProcessorSingle< TreeT, Proc >::TileRange = typename openvdb::tree::IteratorRange<TileIterT>
using MR::RangeProcessorSingle< TreeT, Proc >::TreeAccessor = typename openvdb::tree::ValueAccessor<const TreeT>
using MR::RangeCounter< TreeT >::ValueT = typename TreeT::ValueType
using MR::RangeCounter< TreeT >::TreeAccessor = openvdb::tree::ValueAccessor<const TreeT>
using MR::RangeCounter< TreeT >::LeafIterT = typename TreeT::LeafCIter
using MR::RangeCounter< TreeT >::TileIterT = typename TreeT::ValueAllCIter
using MR::TeethMaskToDirectionVolumeConvertor::DirectionVolume = std::array<SimpleVolumeMinMax, 3>
 See meshToDirectionVolume for details.
using MR::VoxelsVolumeInterpolatedAccessor< Accessor >::VolumeType = typename Accessor::VolumeType
using MR::VoxelsVolumeInterpolatedAccessor< Accessor >::ValueType = typename Accessor::ValueType
using MR::MergeVolumePartSettings::PreCutCallback = std::function<void( Mesh& mesh, float leftCutPosition, float rightCutPosition )>
 callback to process the generated mesh before the side cutting, e.g. fixing specific generation artifacts
using MR::MergeVolumePartSettings::PostCutCallback = std::function<void( Mesh& )>
 callback to process the generated mesh after the side cutting, e.g. decimating
using MR::MergeVolumePartSettings::PostMergeCallback = std::function<void( Mesh&, const PartMapping& )>
template<typename Volume>
using MR::VolumePartBuilder = std::function<Expected<Volume> ( int begin, int end, std::optional<Vector3i>& offset )>
using MR::VdbVolumes = std::vector<VdbVolume>
template<typename T>
using MR::VoxelValueGetter = std::function<T ( const Vector3i& )>
using MR::VoxelTraits< Vector< T, VoxelId > >::ValueType = T
using MR::VoxelTraits< VoxelBitSet >::ValueType = bool
using MR::VoxelTraits< VoxelValueGetter< T > >::ValueType = T
using MR::VoxelTraits< FloatGrid >::ValueType = float
using MR::VoxelsVolume< T >::ValueType = typename VoxelTraits<T>::ValueType
using MR::VoxelsVolumeAccessor< VdbVolume >::VolumeType = VdbVolume
using MR::VoxelsVolumeAccessor< VdbVolume >::ValueType = typename VolumeType::ValueType
using MR::VoxelsVolumeAccessor< VoxelsVolume< Vector< T, VoxelId > > >::VolumeType = VoxelsVolume<Vector<T,VoxelId>>
using MR::VoxelsVolumeAccessor< VoxelsVolume< Vector< T, VoxelId > > >::ValueType = typename VolumeType::ValueType
using MR::VoxelsVolumeAccessor< VoxelsVolumeMinMax< Vector< T, VoxelId > > >::VolumeType = VoxelsVolumeMinMax<Vector<T,VoxelId>>
using MR::VoxelsVolumeAccessor< VoxelsVolumeMinMax< Vector< T, VoxelId > > >::ValueType = typename VolumeType::ValueType
using MR::VoxelsVolumeAccessor< VoxelsVolume< VoxelValueGetter< T > > >::VolumeType = VoxelsVolume<VoxelValueGetter<T>>
using MR::VoxelsVolumeAccessor< VoxelsVolume< VoxelValueGetter< T > > >::ValueType = typename VolumeType::ValueType
using MR::VoxelsVolumeCachingAccessor< V >::VolumeType = V
using MR::VoxelsVolumeCachingAccessor< V >::ValueType = typename V::ValueType

Enumerations

enum class  MR::SetViewPresetMenuItem::Type {
  MR::SetViewPresetMenuItem::Type::Front , MR::SetViewPresetMenuItem::Type::Top , MR::SetViewPresetMenuItem::Type::Bottom = 3 , MR::SetViewPresetMenuItem::Type::Left ,
  MR::SetViewPresetMenuItem::Type::Back , MR::SetViewPresetMenuItem::Type::Right , MR::SetViewPresetMenuItem::Type::Isometric , MR::SetViewPresetMenuItem::Type::Count
}
enum class  MR::SetViewportConfigPresetMenuItem::Type {
  MR::SetViewportConfigPresetMenuItem::Type::Single , MR::SetViewportConfigPresetMenuItem::Type::Horizontal , MR::SetViewportConfigPresetMenuItem::Type::Vertical , MR::SetViewportConfigPresetMenuItem::Type::Quad ,
  MR::SetViewportConfigPresetMenuItem::Type::Hex , MR::SetViewportConfigPresetMenuItem::Type::Count
}
enum class  MR::MeshSave::CtmSaveOptions::MeshCompression { MR::MeshSave::CtmSaveOptions::MeshCompression::None , MR::MeshSave::CtmSaveOptions::MeshCompression::Lossless , MR::MeshSave::CtmSaveOptions::MeshCompression::Lossy }
enum class  MR::PdfBuildinFont {
  MR::PdfBuildinFont::Courier , MR::PdfBuildinFont::CourierBold , MR::PdfBuildinFont::CourierOblique , MR::PdfBuildinFont::CourierBoldOblique ,
  MR::PdfBuildinFont::Helvetica , MR::PdfBuildinFont::HelveticaBold , MR::PdfBuildinFont::HelveticaOblique , MR::PdfBuildinFont::HelveticaBoldOblique ,
  MR::PdfBuildinFont::TimesRoman , MR::PdfBuildinFont::TimesBold , MR::PdfBuildinFont::TimesItalic , MR::PdfBuildinFont::TimesBoldItalic ,
  MR::PdfBuildinFont::Symbol , MR::PdfBuildinFont::ZapfDingbats , MR::PdfBuildinFont::Count
}
enum class  MR::Pdf::AlignmentHorizontal { MR::Pdf::AlignmentHorizontal::Left , MR::Pdf::AlignmentHorizontal::Center , MR::Pdf::AlignmentHorizontal::Right }
enum class  MR::Pdf::ImageParams::UniformScale { MR::Pdf::ImageParams::UniformScale::None , MR::Pdf::ImageParams::UniformScale::FromWidth , MR::Pdf::ImageParams::UniformScale::FromHeight , MR::Pdf::ImageParams::UniformScale::Auto }
 set height to keep same scale as width scale More...
enum class  MR::Pdf::ImageParams::AlignmentVertical { MR::Pdf::ImageParams::AlignmentVertical::Top , MR::Pdf::ImageParams::AlignmentVertical::Center , MR::Pdf::ImageParams::AlignmentVertical::Bottom }
enum class  MR::PlanarTriangulation::WindingMode { MR::PlanarTriangulation::WindingMode::NonZero , MR::PlanarTriangulation::WindingMode::Positive , MR::PlanarTriangulation::WindingMode::Negative }
 Specify mode of detecting inside and outside parts of triangulation. More...
enum class  MR::Axis { MR::Axis::X , MR::Axis::Y , MR::Axis::Z , MR::Axis::Count }
enum class  MR::ChangeObjectColorAction::Type { MR::ChangeObjectColorAction::Type::Unselected , MR::ChangeObjectColorAction::Type::Selected , MR::ChangeObjectColorAction::Type::Back }
enum class  MR::ChangeSceneAction::Type { MR::ChangeSceneAction::Type::AddObject , MR::ChangeSceneAction::Type::RemoveObject }
enum class  MR::CNCMachineSettings::RotationAxisName { MR::CNCMachineSettings::RotationAxisName::A , MR::CNCMachineSettings::RotationAxisName::B , MR::CNCMachineSettings::RotationAxisName::C }
 enumeration of axes of rotation More...
enum class  MR::ColorMapAggregator< Tag >::AggregateMode { MR::ColorMapAggregator< Tag >::AggregateMode::Overlay , MR::ColorMapAggregator< Tag >::AggregateMode::Blending }
 color map aggregating mode More...
enum class  MR::ConeFitterType { MR::ConeFitterType::ApproximationPCM , MR::ConeFitterType::HemisphereSearchFit , MR::ConeFitterType::SpecificAxisFit }
enum class  MR::CutMeshParameters::ForceFill { MR::CutMeshParameters::ForceFill::None , MR::CutMeshParameters::ForceFill::Good , MR::CutMeshParameters::ForceFill::All }
enum class  MR::DistanceMeasurementObject::DistanceMode {
  MR::DistanceMeasurementObject::DistanceMode::euclidean , MR::DistanceMeasurementObject::DistanceMode::euclideanWithSignedDeltasPerAxis , MR::DistanceMeasurementObject::DistanceMode::euclideanWithAbsoluteDeltasPerAxis , MR::DistanceMeasurementObject::DistanceMode::xAbsolute ,
  MR::DistanceMeasurementObject::DistanceMode::yAbsolute , MR::DistanceMeasurementObject::DistanceMode::zAbsolute
}
enum class  MR::EndMillCutter::Type {
  MR::EndMillCutter::Type::Flat , MR::EndMillCutter::Type::Ball , MR::EndMillCutter::Type::BullNose , MR::EndMillCutter::Type::Chamfer ,
  MR::EndMillCutter::Type::Count
}
 cutter type More...
enum class  MR::FilterType : char { MR::FilterType::Linear , MR::FilterType::Discrete }
enum class  MR::WrapType : char { MR::WrapType::Repeat , MR::WrapType::Mirror , MR::WrapType::Clamp }
enum class  MR::Reorder : char { MR::Reorder::None , MR::Reorder::Lexicographically , MR::Reorder::AABBTree }
 determines how points to be ordered More...
enum class  MR::VertexMass { MR::VertexMass::Unit = 0 , MR::VertexMass::NeiArea }
 determines the weight or mass of each vertex in applications like Laplacian More...
enum class  MR::EdgeWeights { MR::EdgeWeights::Unit = 0 , MR::EdgeWeights::Cotan }
 determines the weight of each edge in applications like Laplacian More...
enum class  MR::RememberShape { MR::RememberShape::Yes , MR::RememberShape::No }
enum class  MR::Processing : bool { MR::Processing::Continue , MR::Processing::Stop }
 typically returned from callbacks to control the behavior of main algorithm More...
enum class  MR::OrientNormals { MR::OrientNormals::TowardOrigin , MR::OrientNormals::AwayFromOrigin , MR::OrientNormals::Smart }
 the method how to choose between two opposite normal orientations More...
enum class  MR::OffsetMode : int { MR::OffsetMode::Smooth , MR::OffsetMode::Standard , MR::OffsetMode::Sharpening }
enum class  MR::ColoringType {
  MR::ColoringType::SolidColor , MR::ColoringType::PrimitivesColorMap , MR::ColoringType::FacesColorMap = PrimitivesColorMap , MR::ColoringType::LinesColorMap = PrimitivesColorMap ,
  MR::ColoringType::VertsColorMap
}
enum class  MR::UseAABBTree : char { MR::UseAABBTree::No , MR::UseAABBTree::Yes , MR::UseAABBTree::YesIfAlreadyConstructed }
enum class  MR::GeodesicPathApprox : char { MR::GeodesicPathApprox::DijkstraBiDir , MR::GeodesicPathApprox::DijkstraAStar , MR::GeodesicPathApprox::FastMarching }
 the algorithm to compute approximately geodesic path More...
enum class  MR::Turn : bool { MR::Turn::Leftmost , MR::Turn::Rightmost }
 what way a path can follow in case of several alternatives More...
enum class  MR::FaceDistancesSettings::OutputFaceValues { MR::FaceDistancesSettings::OutputFaceValues::Distances , MR::FaceDistancesSettings::OutputFaceValues::SeqOrder }
enum class  MR::FeaturesObjectKind {
  MR::FeaturesObjectKind::Point , MR::FeaturesObjectKind::Line , MR::FeaturesObjectKind::Plane , MR::FeaturesObjectKind::Circle ,
  MR::FeaturesObjectKind::Sphere , MR::FeaturesObjectKind::Cylinder , MR::FeaturesObjectKind::Cone , MR::FeaturesObjectKind::_count
}
enum class  MR::FeaturePropertyKind {
  MR::FeaturePropertyKind::position , MR::FeaturePropertyKind::linearDimension , MR::FeaturePropertyKind::direction , MR::FeaturePropertyKind::angle ,
  MR::FeaturePropertyKind::other
}
 Classifies FeatureObjectSharedProperty, mostly for informational purposes. More...
enum class  MR::Features::MeasureResult::Status {
  MR::Features::MeasureResult::Status::ok = 0 , MR::Features::MeasureResult::Status::notImplemented , MR::Features::MeasureResult::Status::badFeaturePair , MR::Features::MeasureResult::Status::badRelativeLocation ,
  MR::Features::MeasureResult::Status::notFinite
}
enum class  MR::SelfIntersections::Settings::Method { MR::SelfIntersections::Settings::Method::Relax , MR::SelfIntersections::Settings::Method::CutAndFill }
 Fix method. More...
enum class  MR::GridSettings::EdgeType { MR::GridSettings::EdgeType::Horizontal , MR::GridSettings::EdgeType::Vertical , MR::GridSettings::EdgeType::DiagonalA , MR::GridSettings::EdgeType::DiagonalB }
enum class  MR::GridSettings::TriType { MR::GridSettings::TriType::Lower , MR::GridSettings::TriType::Upper }
enum class  MR::HistoryAction::Type { MR::HistoryAction::Type::Undo , MR::HistoryAction::Type::Redo }
enum class  MR::ICPMethod { MR::ICPMethod::Combined = 0 , MR::ICPMethod::PointToPoint = 1 , MR::ICPMethod::PointToPlane = 2 }
 The method how to update transformation from point pairs. More...
enum class  MR::ICPMode {
  MR::ICPMode::RigidScale , MR::ICPMode::AnyRigidXf , MR::ICPMode::OrthogonalAxis , MR::ICPMode::FixedAxis ,
  MR::ICPMode::TranslationOnly
}
 The group of transformations, each with its own degrees of freedom. More...
enum class  MR::ICPExitType {
  MR::ICPExitType::NotStarted , MR::ICPExitType::NotFoundSolution , MR::ICPExitType::MaxIterations , MR::ICPExitType::MaxBadIterations ,
  MR::ICPExitType::StopMsdReached
}
 types of exit conditions in calculation More...
enum class  MR::Side { MR::Side::Negative , MR::Side::Positive }
enum class  MR::DepthFunction {
  MR::DepthFunction::Never = 0 , MR::DepthFunction::Less = 1 , MR::DepthFunction::Equal = 2 , MR::DepthFunction::Greater = 4 ,
  MR::DepthFunction::LessOrEqual = Less | Equal , MR::DepthFunction::GreaterOrEqual = Greater | Equal , MR::DepthFunction::NotEqual = Less | Greater , MR::DepthFunction::Always = Less | Equal | Greater ,
  MR::DepthFunction::Default = 8
}
enum class  MR::BasicUiRenderTask::InteractionMask { MR::BasicUiRenderTask::InteractionMask::mouseHover = 1 << 0 , MR::BasicUiRenderTask::InteractionMask::mouseScroll = 1 << 1 }
enum class  MR::MultiwayICPSamplingParameters::CascadeMode { MR::MultiwayICPSamplingParameters::CascadeMode::Sequential , MR::MultiwayICPSamplingParameters::CascadeMode::AABBTreeBased }
enum class  MR::OffsetContoursParams::Type { MR::OffsetContoursParams::Type::Offset , MR::OffsetContoursParams::Type::Shell }
 type of offset More...
enum class  MR::OffsetContoursParams::EndType { MR::OffsetContoursParams::EndType::Round , MR::OffsetContoursParams::EndType::Cut }
 type of offsetting on ends of non-closed contours More...
enum class  MR::OffsetContoursParams::CornerType { MR::OffsetContoursParams::CornerType::Round , MR::OffsetContoursParams::CornerType::Sharp }
 type of positive offset curve in corners More...
enum class  MR::OutlierTypeMask {
  MR::OutlierTypeMask::SmallComponents = 1 << 0 , MR::OutlierTypeMask::WeaklyConnected = 1 << 1 , MR::OutlierTypeMask::FarSurface = 1 << 2 , MR::OutlierTypeMask::AwayNormal = 1 << 3 ,
  MR::OutlierTypeMask::All = SmallComponents | WeaklyConnected | FarSurface | AwayNormal
}
 Types of outlier points. More...
enum class  MR::PrecipitationSimulator::Event { MR::PrecipitationSimulator::Event::Finish , MR::PrecipitationSimulator::Event::BasinFull , MR::PrecipitationSimulator::Event::Merge }
enum class  MR::RelaxApproxType { MR::RelaxApproxType::Planar , MR::RelaxApproxType::Quadric }
enum class  MR::RenderModelPassMask {
  MR::RenderModelPassMask::Opaque = 1 << 0 , MR::RenderModelPassMask::Transparent = 1 << 1 , MR::RenderModelPassMask::VolumeRendering = 1 << 2 , MR::RenderModelPassMask::NoDepthTest = 1 << 3 ,
  MR::RenderModelPassMask::All
}
 Various passes of the 3D rendering. More...
enum  MR::SceneColors::Type {
  MR::SceneColors::SelectedObjectMesh , MR::SceneColors::UnselectedObjectMesh , MR::SceneColors::SelectedObjectPoints , MR::SceneColors::UnselectedObjectPoints ,
  MR::SceneColors::SelectedObjectLines , MR::SceneColors::UnselectedObjectLines , MR::SceneColors::SelectedObjectVoxels , MR::SceneColors::UnselectedObjectVoxels ,
  MR::SceneColors::SelectedObjectDistanceMap , MR::SceneColors::UnselectedObjectDistanceMap , MR::SceneColors::BackFaces , MR::SceneColors::Labels ,
  MR::SceneColors::LabelsGood , MR::SceneColors::LabelsBad , MR::SceneColors::Edges , MR::SceneColors::Points ,
  MR::SceneColors::SelectedFaces , MR::SceneColors::SelectedEdges , MR::SceneColors::SelectedPoints , MR::SceneColors::SelectedFeatures ,
  MR::SceneColors::UnselectedFeatures , MR::SceneColors::FeatureBackFaces , MR::SceneColors::SelectedFeatureDecorations , MR::SceneColors::UnselectedFeatureDecorations ,
  MR::SceneColors::SelectedMeasurements , MR::SceneColors::UnselectedMeasurements , MR::SceneColors::UnselectedMeasurementsX , MR::SceneColors::UnselectedMeasurementsY ,
  MR::SceneColors::UnselectedMeasurementsZ , MR::SceneColors::SelectedTemporaryMeasurements , MR::SceneColors::UnselectedTemporaryMeasurements , MR::SceneColors::BrushAdd ,
  MR::SceneColors::BrushRemove , MR::SceneColors::BrushSmooth , MR::SceneColors::BrushDeform , MR::SceneColors::BrushPatch ,
  MR::SceneColors::Count
}
enum class  MR::SceneSettings::BoolType { MR::SceneSettings::BoolType::UseDefaultScenePropertiesOnDeserialization , MR::SceneSettings::BoolType::Count }
enum class  MR::SceneSettings::FloatType {
  MR::SceneSettings::FloatType::FeaturePointsAlpha , MR::SceneSettings::FloatType::FeatureLinesAlpha , MR::SceneSettings::FloatType::FeatureMeshAlpha , MR::SceneSettings::FloatType::FeatureSubPointsAlpha ,
  MR::SceneSettings::FloatType::FeatureSubLinesAlpha , MR::SceneSettings::FloatType::FeatureSubMeshAlpha , MR::SceneSettings::FloatType::FeatureLineWidth , MR::SceneSettings::FloatType::FeatureSubLineWidth ,
  MR::SceneSettings::FloatType::FeaturePointSize , MR::SceneSettings::FloatType::FeatureSubPointSize , MR::SceneSettings::FloatType::AmbientCoefSelectedObj , MR::SceneSettings::FloatType::Count
}
enum class  MR::SceneSettings::ShadingMode { MR::SceneSettings::ShadingMode::AutoDetect , MR::SceneSettings::ShadingMode::Smooth , MR::SceneSettings::ShadingMode::Flat }
 Mesh faces shading mode. More...
enum class  MR::NeighborDir { MR::NeighborDir::X , MR::NeighborDir::Y , MR::NeighborDir::Z , MR::NeighborDir::Count }
enum class  MR::SignDetectionMode {
  MR::SignDetectionMode::Unsigned , MR::SignDetectionMode::OpenVDB , MR::SignDetectionMode::ProjectionNormal , MR::SignDetectionMode::WindingRule ,
  MR::SignDetectionMode::HoleWindingRule
}
 how to determine the sign of distances from a mesh More...
enum class  MR::SignDetectionModeShort { MR::SignDetectionModeShort::Auto , MR::SignDetectionModeShort::HoleWindingNumber , MR::SignDetectionModeShort::ProjectionNormal }
 how to determine the sign of distances from a mesh, short version including auto-detection More...
enum class  MR::SystemPath::Directory {
  MR::SystemPath::Directory::Resources , MR::SystemPath::Directory::Fonts , MR::SystemPath::Directory::Plugins , MR::SystemPath::Directory::PythonModules ,
  MR::SystemPath::Directory::Count
}
 directory category More...
enum class  MR::SystemPath::SystemFontType {
  MR::SystemPath::SystemFontType::Regular , MR::SystemPath::SystemFontType::Bold , MR::SystemPath::SystemFontType::Italic , MR::SystemPath::SystemFontType::BoldItalic ,
  MR::SystemPath::SystemFontType::Count
}
 supported types of system fonts fonts More...
enum class  MR::BaseTiffParameters::SampleType { MR::BaseTiffParameters::SampleType::Unknown , MR::BaseTiffParameters::SampleType::Uint , MR::BaseTiffParameters::SampleType::Int , MR::BaseTiffParameters::SampleType::Float }
enum class  MR::BaseTiffParameters::ValueType { MR::BaseTiffParameters::ValueType::Unknown , MR::BaseTiffParameters::ValueType::Scalar , MR::BaseTiffParameters::ValueType::RGB , MR::BaseTiffParameters::ValueType::RGBA }
enum class  MR::UpLimitCheck : bool { MR::UpLimitCheck::GreaterOrEqual , MR::UpLimitCheck::Greater }
enum class  MR::NestedComponenetsMode { MR::NestedComponenetsMode::Remove , MR::NestedComponenetsMode::Merge , MR::NestedComponenetsMode::Union }
 Mode of processing components. More...
enum class  MR::NoUnit { MR::NoUnit::_count }
 A stub measurement unit representing no unit. More...
enum class  MR::LengthUnit {
  MR::LengthUnit::microns , MR::LengthUnit::millimeters , MR::LengthUnit::centimeters , MR::LengthUnit::meters ,
  MR::LengthUnit::inches , MR::LengthUnit::feet , MR::LengthUnit::_count
}
 Measurement units of length. More...
enum class  MR::AngleUnit { MR::AngleUnit::radians , MR::AngleUnit::degrees , MR::AngleUnit::_count }
 Measurement units of angle. More...
enum class  MR::PixelSizeUnit { MR::PixelSizeUnit::pixels , MR::PixelSizeUnit::_count }
 Measurement units of screen sizes. More...
enum class  MR::RatioUnit { MR::RatioUnit::factor , MR::RatioUnit::percents , MR::RatioUnit::_count }
 Measurement units for factors / ratios. More...
enum class  MR::TimeUnit { MR::TimeUnit::seconds , MR::TimeUnit::milliseconds , MR::TimeUnit::_count }
 Measurement units for time. More...
enum class  MR::MovementSpeedUnit {
  MR::MovementSpeedUnit::micronsPerSecond , MR::MovementSpeedUnit::millimetersPerSecond , MR::MovementSpeedUnit::centimetersPerSecond , MR::MovementSpeedUnit::metersPerSecond ,
  MR::MovementSpeedUnit::inchesPerSecond , MR::MovementSpeedUnit::feetPerSecond , MR::MovementSpeedUnit::_count
}
 Measurement units for movement speed. More...
enum class  MR::AreaUnit {
  MR::AreaUnit::microns2 , MR::AreaUnit::millimeters2 , MR::AreaUnit::centimeters2 , MR::AreaUnit::meters2 ,
  MR::AreaUnit::inches2 , MR::AreaUnit::feet2 , MR::AreaUnit::_count
}
 Measurement units for surface area. More...
enum class  MR::VolumeUnit {
  MR::VolumeUnit::microns3 , MR::VolumeUnit::millimeters3 , MR::VolumeUnit::centimeters3 , MR::VolumeUnit::meters3 ,
  MR::VolumeUnit::inches3 , MR::VolumeUnit::feet3 , MR::VolumeUnit::_count
}
 Measurement units for body volume. More...
enum class  MR::InvLengthUnit {
  MR::InvLengthUnit::inv_microns , MR::InvLengthUnit::inv_millimeters , MR::InvLengthUnit::inv_centimeters , MR::InvLengthUnit::inv_meters ,
  MR::InvLengthUnit::inv_inches , MR::InvLengthUnit::inv_feet , MR::InvLengthUnit::_count
}
 Measurement units for 1/length. More...
enum class  MR::PythonExport::Priority { MR::PythonExport::Priority::Declaration , MR::PythonExport::Priority::Implementation , MR::PythonExport::Priority::Count }
enum  MR::AlignType { MR::Left , MR::Center , MR::Right }
enum class  MR::SelectedTypesMask {
  MR::SelectedTypesMask::ObjectBit = 1 << 0 , MR::SelectedTypesMask::ObjectPointsHolderBit = 1 << 1 , MR::SelectedTypesMask::ObjectLinesHolderBit = 1 << 2 , MR::SelectedTypesMask::ObjectMeshHolderBit = 1 << 3 ,
  MR::SelectedTypesMask::ObjectLabelBit = 1 << 4 , MR::SelectedTypesMask::ObjectMeshBit = 1 << 5 , MR::SelectedTypesMask::ObjectFeatureBit = 1 << 6 , MR::SelectedTypesMask::ObjectMeasurementBit = 1 << 7
}
enum class  MR::ImGuiMenu::CoordType : int { MR::ImGuiMenu::CoordType::Local , MR::ImGuiMenu::CoordType::World }
enum  MR::ImGuiMenu::ViewportConfigurations { MR::ImGuiMenu::Single , MR::ImGuiMenu::Horizontal , MR::ImGuiMenu::Vertical , MR::ImGuiMenu::Quad }
enum class  MR::ImGuiMenu::NameTagSelectionMode { MR::ImGuiMenu::NameTagSelectionMode::selectOne , MR::ImGuiMenu::NameTagSelectionMode::toggle }
enum class  MR::AsyncTimer::Event { MR::AsyncTimer::Event::AlertTimeReached , MR::AsyncTimer::Event::Terminate }
 to call from waiter thread More...
enum class  MR::ColorTheme::Preset { MR::ColorTheme::Preset::Dark , MR::ColorTheme::Preset::Default = Dark , MR::ColorTheme::Preset::Light , MR::ColorTheme::Preset::Count }
enum class  MR::ColorTheme::Type { MR::ColorTheme::Type::Default , MR::ColorTheme::Type::User }
enum class  MR::ColorTheme::RibbonColorsType {
  MR::ColorTheme::RibbonColorsType::Background , MR::ColorTheme::RibbonColorsType::BackgroundSecStyle , MR::ColorTheme::RibbonColorsType::HeaderBackground , MR::ColorTheme::RibbonColorsType::HeaderSeparator ,
  MR::ColorTheme::RibbonColorsType::TopPanelBackground , MR::ColorTheme::RibbonColorsType::TopPanelSearchBackground , MR::ColorTheme::RibbonColorsType::QuickAccessBackground , MR::ColorTheme::RibbonColorsType::Borders ,
  MR::ColorTheme::RibbonColorsType::TabHovered , MR::ColorTheme::RibbonColorsType::TabClicked , MR::ColorTheme::RibbonColorsType::TabActive , MR::ColorTheme::RibbonColorsType::TabActiveHovered ,
  MR::ColorTheme::RibbonColorsType::TabActiveClicked , MR::ColorTheme::RibbonColorsType::TabText , MR::ColorTheme::RibbonColorsType::TabActiveText , MR::ColorTheme::RibbonColorsType::DialogTab ,
  MR::ColorTheme::RibbonColorsType::DialogTabHovered , MR::ColorTheme::RibbonColorsType::DialogTabActive , MR::ColorTheme::RibbonColorsType::DialogTabActiveHovered , MR::ColorTheme::RibbonColorsType::DialogTabText ,
  MR::ColorTheme::RibbonColorsType::DialogTabActiveText , MR::ColorTheme::RibbonColorsType::ToolbarHovered , MR::ColorTheme::RibbonColorsType::ToolbarClicked , MR::ColorTheme::RibbonColorsType::ModalBackground ,
  MR::ColorTheme::RibbonColorsType::Text , MR::ColorTheme::RibbonColorsType::TextEnabled , MR::ColorTheme::RibbonColorsType::TextDisabled , MR::ColorTheme::RibbonColorsType::TextSelectedBg ,
  MR::ColorTheme::RibbonColorsType::RibbonButtonHovered , MR::ColorTheme::RibbonColorsType::RibbonButtonClicked , MR::ColorTheme::RibbonColorsType::RibbonButtonActive , MR::ColorTheme::RibbonColorsType::RibbonButtonActiveHovered ,
  MR::ColorTheme::RibbonColorsType::RibbonButtonActiveClicked , MR::ColorTheme::RibbonColorsType::ThirdpartyBackground , MR::ColorTheme::RibbonColorsType::ProgressBarBackground , MR::ColorTheme::RibbonColorsType::FrameBackground ,
  MR::ColorTheme::RibbonColorsType::CollapseHeaderBackground , MR::ColorTheme::RibbonColorsType::SelectedObjectText , MR::ColorTheme::RibbonColorsType::SelectedObjectFrame , MR::ColorTheme::RibbonColorsType::GradientStart ,
  MR::ColorTheme::RibbonColorsType::GradientEnd , MR::ColorTheme::RibbonColorsType::TextContrastBackground , MR::ColorTheme::RibbonColorsType::GradBtnStart , MR::ColorTheme::RibbonColorsType::GradBtnHoverStart ,
  MR::ColorTheme::RibbonColorsType::GradBtnActiveStart , MR::ColorTheme::RibbonColorsType::GradBtnDisableStart , MR::ColorTheme::RibbonColorsType::GradBtnEnd , MR::ColorTheme::RibbonColorsType::GradBtnHoverEnd ,
  MR::ColorTheme::RibbonColorsType::GradBtnActiveEnd , MR::ColorTheme::RibbonColorsType::GradBtnDisableEnd , MR::ColorTheme::RibbonColorsType::GradBtnText , MR::ColorTheme::RibbonColorsType::GradBtnSecStyleStart ,
  MR::ColorTheme::RibbonColorsType::GradBtnSecStyleHoverStart , MR::ColorTheme::RibbonColorsType::GradBtnSecStyleActiveStart , MR::ColorTheme::RibbonColorsType::GradBtnSecStyleEnd , MR::ColorTheme::RibbonColorsType::GradBtnSecStyleHoverEnd ,
  MR::ColorTheme::RibbonColorsType::GradBtnSecStyleActiveEnd , MR::ColorTheme::RibbonColorsType::Grid , MR::ColorTheme::RibbonColorsType::Count
}
 Color types used in ribbon. More...
enum class  MR::ColorTheme::ViewportColorsType {
  MR::ColorTheme::ViewportColorsType::Background , MR::ColorTheme::ViewportColorsType::Borders , MR::ColorTheme::ViewportColorsType::AxisX , MR::ColorTheme::ViewportColorsType::AxisY ,
  MR::ColorTheme::ViewportColorsType::AxisZ , MR::ColorTheme::ViewportColorsType::Count
}
enum class  MR::CommandLoop::StartPosition {
  MR::CommandLoop::StartPosition::AfterWindowInit , MR::CommandLoop::StartPosition::AfterSplashAppear , MR::CommandLoop::StartPosition::AfterPluginInit , MR::CommandLoop::StartPosition::BeforeWindowAppear ,
  MR::CommandLoop::StartPosition::AfterWindowAppear
}
 Specify execution in specific time of application start. More...
enum class  MR::FileLoadOptions::ReplaceMode { MR::FileLoadOptions::ReplaceMode::ContructionBased , MR::FileLoadOptions::ReplaceMode::ForceReplace , MR::FileLoadOptions::ReplaceMode::ForceAdd }
enum class  MR::FitMode {
  MR::FitMode::Visible , MR::FitMode::SelectedPrimitives , MR::FitMode::SelectedObjects , MR::FitMode::SelectableObjects ,
  MR::FitMode::CustomObjectsList
}
 Fit mode ( types of objects for which the fit is applied ) More...
enum  MR::GLStaticHolder::ShaderType {
  MR::GLStaticHolder::Mesh , MR::GLStaticHolder::Picker , MR::GLStaticHolder::MeshDesktopPicker , MR::GLStaticHolder::AlphaSortMesh ,
  MR::GLStaticHolder::DepthPeelMesh , MR::GLStaticHolder::Points , MR::GLStaticHolder::AlphaSortPoints , MR::GLStaticHolder::DepthPeelPoints ,
  MR::GLStaticHolder::Lines , MR::GLStaticHolder::LinesJoint , MR::GLStaticHolder::LinesPicker , MR::GLStaticHolder::LinesJointPicker ,
  MR::GLStaticHolder::AlphaSortLines , MR::GLStaticHolder::DepthPeelLines , MR::GLStaticHolder::Labels , MR::GLStaticHolder::AdditionalLines ,
  MR::GLStaticHolder::AdditionalPoints , MR::GLStaticHolder::AdditionalPointsNoOffset , MR::GLStaticHolder::AdditionalQuad , MR::GLStaticHolder::ViewportBorder ,
  MR::GLStaticHolder::AlphaSortOverlayQuad , MR::GLStaticHolder::ShadowOverlayQuad , MR::GLStaticHolder::SimpleOverlayQuad , MR::GLStaticHolder::DepthOverlayQuad ,
  MR::GLStaticHolder::Volume , MR::GLStaticHolder::VolumePicker , MR::GLStaticHolder::Count
}
enum  MR::MarkedVoxelSlice::MaskType { MR::MarkedVoxelSlice::Inside , MR::MarkedVoxelSlice::Outside , MR::MarkedVoxelSlice::Segment , MR::MarkedVoxelSlice::Count }
enum class  MR::MouseButton {
  MR::MouseButton::Left = 0 , MR::MouseButton::Right = 1 , MR::MouseButton::Middle = 2 , MR::MouseButton::Count ,
  MR::MouseButton::NoButton = Count
}
enum class  MR::MouseMode {
  MR::MouseMode::None , MR::MouseMode::Rotation , MR::MouseMode::Translation , MR::MouseMode::Roll ,
  MR::MouseMode::Count
}
 Standard mouse functions for camera control. More...
enum class  MR::MoveObjectByMouseImpl::TransformMode {
  MR::MoveObjectByMouseImpl::TransformMode::None , MR::MoveObjectByMouseImpl::TransformMode::Translation , MR::MoveObjectByMouseImpl::TransformMode::Rotation , MR::MoveObjectByMouseImpl::TransformMode::UniformScale ,
  MR::MoveObjectByMouseImpl::TransformMode::NonUniformScale
}
 Transformation mode. More...
enum class  MR::MruFormatParameters::MeshFormat { MR::MruFormatParameters::MeshFormat::Ctm , MR::MruFormatParameters::MeshFormat::Ply , MR::MruFormatParameters::MeshFormat::Mrmesh }
enum class  MR::MruFormatParameters::PointsFormat { MR::MruFormatParameters::PointsFormat::Ctm , MR::MruFormatParameters::PointsFormat::Ply }
enum class  MR::MruFormatParameters::VoxelsFormat { MR::MruFormatParameters::VoxelsFormat::Vdb , MR::MruFormatParameters::VoxelsFormat::Raw }
enum class  MR::NotificationType {
  MR::NotificationType::Error , MR::NotificationType::Warning , MR::NotificationType::Info , MR::NotificationType::Time ,
  MR::NotificationType::Count
}
enum class  MR::ControlBit {
  MR::ControlBit::None = 0 , MR::ControlBit::RotX = 0x1 , MR::ControlBit::RotY = 0x2 , MR::ControlBit::RotZ = 0x4 ,
  MR::ControlBit::RotMask = RotX | RotY | RotZ , MR::ControlBit::MoveX = 0x8 , MR::ControlBit::MoveY = 0x10 , MR::ControlBit::MoveZ = 0x20 ,
  MR::ControlBit::MoveMask = MoveX | MoveY | MoveZ , MR::ControlBit::FullMask = RotMask | MoveMask
}
enum class  MR::TransformControls::VisualParams::SizeType { MR::TransformControls::VisualParams::SizeType::LengthUnit = 0 , MR::TransformControls::VisualParams::SizeType::Pixels }
 type of length measurement units More...
enum  MR::ObjectTransformWidget::AxisTransformMode { MR::ObjectTransformWidget::AxisTranslation , MR::ObjectTransformWidget::AxisScaling , MR::ObjectTransformWidget::UniformScaling }
 Transform operation applying to object while dragging an axis. This parameter does not apply to active operation. More...
enum class  MR::DrawButtonParams::SizeType { MR::DrawButtonParams::SizeType::Big , MR::DrawButtonParams::SizeType::SmallText , MR::DrawButtonParams::SizeType::Small }
enum  MR::DrawButtonParams::RootType { MR::DrawButtonParams::Ribbon , MR::DrawButtonParams::Toolbar , MR::DrawButtonParams::Header }
 icon size ( = 0 - use preset according to button type), this is scale factor of cBigIcon size (should not respect system scaling) More...
enum class  MR::RibbonButtonDrawer::TextureType { MR::RibbonButtonDrawer::TextureType::Mono , MR::RibbonButtonDrawer::TextureType::Gradient , MR::RibbonButtonDrawer::TextureType::RainbowRect , MR::RibbonButtonDrawer::TextureType::Count }
enum class  MR::RibbonFontManager::FontType {
  MR::RibbonFontManager::FontType::Default , MR::RibbonFontManager::FontType::Small , MR::RibbonFontManager::FontType::Middle , MR::RibbonFontManager::FontType::SemiBold ,
  MR::RibbonFontManager::FontType::Icons , MR::RibbonFontManager::FontType::Big , MR::RibbonFontManager::FontType::BigSemiBold , MR::RibbonFontManager::FontType::Headline ,
  MR::RibbonFontManager::FontType::Monospace , MR::RibbonFontManager::FontType::Count
}
 Font types used in current design. More...
enum class  MR::RibbonFontManager::FontFile {
  MR::RibbonFontManager::FontFile::Regular , MR::RibbonFontManager::FontFile::RegularSC , MR::RibbonFontManager::FontFile::SemiBold , MR::RibbonFontManager::FontFile::Monospace ,
  MR::RibbonFontManager::FontFile::Icons , MR::RibbonFontManager::FontFile::Count
}
 Unique fonts that are used for different FontTypes. More...
enum class  MR::RibbonIcons::ColorType { MR::RibbonIcons::ColorType::Colored , MR::RibbonIcons::ColorType::White }
enum class  MR::RibbonIcons::IconType {
  MR::RibbonIcons::IconType::RibbonItemIcon , MR::RibbonIcons::IconType::ObjectTypeIcon , MR::RibbonIcons::IconType::IndependentIcons , MR::RibbonIcons::IconType::Logos ,
  MR::RibbonIcons::IconType::Count
}
enum class  MR::RibbonIcons::IconTypeData::AvailableColor { MR::RibbonIcons::IconTypeData::AvailableColor::White = 1 << 0 , MR::RibbonIcons::IconTypeData::AvailableColor::Colored = 1 << 1 }
enum class  MR::RibbonItemType { MR::RibbonItemType::Button , MR::RibbonItemType::ButtonWithDrop }
enum class  MR::RibbonTopPanelLayoutMode { MR::RibbonTopPanelLayoutMode::None , MR::RibbonTopPanelLayoutMode::RibbonNoTabs , MR::RibbonTopPanelLayoutMode::RibbonWithTabs }
enum  MR::NotificationTags::Tag : unsigned {
  MR::NotificationTags::None = 0b0000 , MR::NotificationTags::Report = 0b0001 , MR::NotificationTags::Recommendation = 0b0010 , MR::NotificationTags::ImplicitChanges = 0b0100 ,
  MR::NotificationTags::Important = 0b1000 , MR::NotificationTags::Default = Important | ImplicitChanges , MR::NotificationTags::All = Report | ImplicitChanges | Recommendation | Important
}
enum class  MR::RibbonNotificationCorner { MR::RibbonNotificationCorner::LowerLeft , MR::RibbonNotificationCorner::LowerRight }
 corner where notifications will appear More...
enum class  MR::PathPreference { MR::PathPreference::Geodesic , MR::PathPreference::Convex , MR::PathPreference::Concave }
enum class  MR::ShaderTransparencyMode : char { MR::ShaderTransparencyMode::None , MR::ShaderTransparencyMode::AlphaSort , MR::ShaderTransparencyMode::DepthPeel }
enum class  MR::ShortcutCategory : char {
  MR::ShortcutCategory::Info , MR::ShortcutCategory::Edit , MR::ShortcutCategory::View , MR::ShortcutCategory::Scene ,
  MR::ShortcutCategory::Objects , MR::ShortcutCategory::Selection , MR::ShortcutCategory::Count
}
enum class  MR::ShortcutManager::Reason { MR::ShortcutManager::Reason::KeyDown , MR::ShortcutManager::Reason::KeyRepeat }
enum class  MR::StatePluginTabs {
  MR::StatePluginTabs::Basic , MR::StatePluginTabs::Mesh , MR::StatePluginTabs::DistanceMap , MR::StatePluginTabs::PointCloud ,
  MR::StatePluginTabs::Selection , MR::StatePluginTabs::Voxels , MR::StatePluginTabs::Analysis , MR::StatePluginTabs::Test ,
  MR::StatePluginTabs::Other , MR::StatePluginTabs::Count
}
enum class  MR::SurfaceManipulationWidget::WorkMode {
  MR::SurfaceManipulationWidget::WorkMode::Add , MR::SurfaceManipulationWidget::WorkMode::Remove , MR::SurfaceManipulationWidget::WorkMode::Relax , MR::SurfaceManipulationWidget::WorkMode::Laplacian ,
  MR::SurfaceManipulationWidget::WorkMode::Patch
}
 widget work modes More...
enum class  MR::SurfaceManipulationWidget::DeviationCalculationMethod { MR::SurfaceManipulationWidget::DeviationCalculationMethod::PointToPoint , MR::SurfaceManipulationWidget::DeviationCalculationMethod::PointToPlane , MR::SurfaceManipulationWidget::DeviationCalculationMethod::ExactDistance }
 Method for calculating mesh changes. More...
enum class  MR::SurfacePointWidget::PositionType {
  MR::SurfacePointWidget::PositionType::Faces , MR::SurfacePointWidget::PositionType::FaceCenters , MR::SurfacePointWidget::PositionType::Edges , MR::SurfacePointWidget::PositionType::EdgeCenters ,
  MR::SurfacePointWidget::PositionType::Verts
}
enum class  MR::SurfacePointWidget::Parameters::PointSizeType { MR::SurfacePointWidget::Parameters::PointSizeType::Metrical , MR::SurfacePointWidget::Parameters::PointSizeType::Pixel }
enum class  MR::TouchesController::ModeBit : unsigned char {
  MR::TouchesController::ModeBit::Translate = 0b001 , MR::TouchesController::ModeBit::Rotate = 0b010 , MR::TouchesController::ModeBit::Zoom = 0b100 , MR::TouchesController::ModeBit::All = Translate | Rotate | Zoom ,
  MR::TouchesController::ModeBit::Any = All
}
 bit meaning for mode mask More...
enum class  MR::TouchesController::MultiInfo::Finger { MR::TouchesController::MultiInfo::Finger::First , MR::TouchesController::MultiInfo::Finger::Second }
enum class  MR::TouchpadController::Handler::GestureState { MR::TouchpadController::Handler::GestureState::Begin , MR::TouchpadController::Handler::GestureState::Update , MR::TouchpadController::Handler::GestureState::End }
 gesture state More...
enum class  MR::TouchpadParameters::SwipeMode { MR::TouchpadParameters::SwipeMode::SwipeRotatesCamera = 0 , MR::TouchpadParameters::SwipeMode::SwipeMovesCamera = 1 , MR::TouchpadParameters::SwipeMode::Count }
 swipe processing mode More...
enum class  MR::UI::TextureType {
  MR::UI::TextureType::Mono , MR::UI::TextureType::Gradient , MR::UI::TextureType::GradientBtn , MR::UI::TextureType::GradientBtnSecond ,
  MR::UI::TextureType::GradientBtnGray , MR::UI::TextureType::RainbowRect , MR::UI::TextureType::Count
}
 enumeration texture types More...
enum class  MR::NumberStyle { MR::NumberStyle::normal , MR::NumberStyle::distributePrecision , MR::NumberStyle::exponential , MR::NumberStyle::maybeExponential }
enum class  MR::DegreesMode { MR::DegreesMode::degrees , MR::DegreesMode::degreesMinutes , MR::DegreesMode::degreesMinutesSeconds , MR::DegreesMode::_count }
 This controls how the degrees are printed. More...
enum class  MR::ZeroMode { MR::ZeroMode::asIs , MR::ZeroMode::alwaysPositive , MR::ZeroMode::alwaysNegative }
enum  MR::LaunchParams::WindowMode {
  MR::LaunchParams::Show , MR::LaunchParams::HideInit , MR::LaunchParams::Hide , MR::LaunchParams::TryHidden ,
  MR::LaunchParams::NoWindow
}
enum class  MR::Viewer::EventType {
  MR::Viewer::EventType::MouseDown , MR::Viewer::EventType::MouseUp , MR::Viewer::EventType::MouseMove , MR::Viewer::EventType::MouseScroll ,
  MR::Viewer::EventType::KeyDown , MR::Viewer::EventType::KeyUp , MR::Viewer::EventType::KeyRepeat , MR::Viewer::EventType::CharPressed ,
  MR::Viewer::EventType::Count
}
 types of counted events More...
enum class  MR::Viewer::GLPrimitivesType {
  MR::Viewer::GLPrimitivesType::PointArraySize , MR::Viewer::GLPrimitivesType::LineArraySize , MR::Viewer::GLPrimitivesType::TriangleArraySize , MR::Viewer::GLPrimitivesType::PointElementsNum ,
  MR::Viewer::GLPrimitivesType::LineElementsNum , MR::Viewer::GLPrimitivesType::TriangleElementsNum , MR::Viewer::GLPrimitivesType::Count
}
 types of gl primitives counters More...
enum class  MR::ViewerSettingsManager::ObjType {
  MR::ViewerSettingsManager::ObjType::Mesh = 0 , MR::ViewerSettingsManager::ObjType::Lines , MR::ViewerSettingsManager::ObjType::Points , MR::ViewerSettingsManager::ObjType::Voxels ,
  MR::ViewerSettingsManager::ObjType::DistanceMap , MR::ViewerSettingsManager::ObjType::Count
}
enum class  MR::ViewerSettingsPlugin::TabType {
  MR::ViewerSettingsPlugin::TabType::Quick , MR::ViewerSettingsPlugin::TabType::Application , MR::ViewerSettingsPlugin::TabType::Control , MR::ViewerSettingsPlugin::TabType::Viewport ,
  MR::ViewerSettingsPlugin::TabType::MeasurementUnits , MR::ViewerSettingsPlugin::TabType::Features , MR::ViewerSettingsPlugin::TabType::Count
}
enum class  MR::Viewport::Parameters::GlobalBasisScaleMode { MR::Viewport::Parameters::GlobalBasisScaleMode::Auto , MR::Viewport::Parameters::GlobalBasisScaleMode::Fixed }
enum class  MR::Viewport::Parameters::RotationCenterMode { MR::Viewport::Parameters::RotationCenterMode::Static , MR::Viewport::Parameters::RotationCenterMode::DynamicStatic , MR::Viewport::Parameters::RotationCenterMode::Dynamic }
enum class  MR::SideRegions { MR::SideRegions::CCWArrow = 26 , MR::SideRegions::CWArrow = 27 }
enum class  MR::WebRequest::Method {
  MR::WebRequest::Method::Get , MR::WebRequest::Method::Post , MR::WebRequest::Method::Patch , MR::WebRequest::Method::Put ,
  MR::WebRequest::Method::Delete
}
enum class  MR::VoxelsLoad::DicomStatusEnum : int { MR::VoxelsLoad::DicomStatusEnum::Ok = 0 , MR::VoxelsLoad::DicomStatusEnum::Invalid , MR::VoxelsLoad::DicomStatusEnum::Unsupported }
enum class  MR::MarchingCubesParams::CachingMode { MR::MarchingCubesParams::CachingMode::Automatic , MR::MarchingCubesParams::CachingMode::None , MR::MarchingCubesParams::CachingMode::Normal }
enum class  MR::ObjectVoxels::VolumeRenderingParams::ShadingType { MR::ObjectVoxels::VolumeRenderingParams::ShadingType::None , MR::ObjectVoxels::VolumeRenderingParams::ShadingType::ValueGradient , MR::ObjectVoxels::VolumeRenderingParams::ShadingType::AlphaGradient }
 shading model More...
enum class  MR::ObjectVoxels::VolumeRenderingParams::LutType { MR::ObjectVoxels::VolumeRenderingParams::LutType::GrayShades , MR::ObjectVoxels::VolumeRenderingParams::LutType::Rainbow , MR::ObjectVoxels::VolumeRenderingParams::LutType::OneColor }
 coloring type More...
enum class  MR::ObjectVoxels::VolumeRenderingParams::AlphaType { MR::ObjectVoxels::VolumeRenderingParams::AlphaType::Constant , MR::ObjectVoxels::VolumeRenderingParams::AlphaType::LinearIncreasing , MR::ObjectVoxels::VolumeRenderingParams::AlphaType::LinearDecreasing }
 type of alpha function on texture More...
enum class  MR::RangeProgress::Mode { MR::RangeProgress::Mode::Leaves , MR::RangeProgress::Mode::Tiles }
 Mode of parallel_reduce. More...
enum class  MR::ScalarType {
  MR::ScalarType::UInt8 , MR::ScalarType::Int8 , MR::ScalarType::UInt16 , MR::ScalarType::Int16 ,
  MR::ScalarType::UInt32 , MR::ScalarType::Int32 , MR::ScalarType::UInt64 , MR::ScalarType::Int64 ,
  MR::ScalarType::Float32 , MR::ScalarType::Float64 , MR::ScalarType::Float32_4 , MR::ScalarType::Unknown ,
  MR::ScalarType::Count
}
 scalar value's binary format type More...
enum class  MR::BypassDirection { MR::BypassDirection::Clockwise , MR::BypassDirection::CounterClockwise }
enum class  MR::MoveType {
  MR::MoveType::None = -1 , MR::MoveType::FastLinear = 0 , MR::MoveType::Linear = 1 , MR::MoveType::ArcCW = 2 ,
  MR::MoveType::ArcCCW = 3
}
enum class  MR::ArcPlane { MR::ArcPlane::None = -1 , MR::ArcPlane::XY = 17 , MR::ArcPlane::XZ = 18 , MR::ArcPlane::YZ = 19 }
enum class  MR::MeshToVolumeParams::Type { MR::MeshToVolumeParams::Type::Signed , MR::MeshToVolumeParams::Type::Unsigned }
 Conversion type. More...
enum class  MR::VoxelFilterType : int { MR::VoxelFilterType::Median , MR::VoxelFilterType::Mean , MR::VoxelFilterType::Gaussian }

Functions

 MR::CameraOrientation::CameraOrientation ()
virtual void MR::CameraOrientation::drawDialog (ImGuiContext *) override
virtual bool MR::CameraOrientation::blocking () const override
 true if this item is blocking (only one blocking item can be active at once)
MRCOMMONPLUGINS_API MR::ProvidesViewportWidget::ProvidesViewportWidget ()
 MR::ProvidesViewportWidget::ProvidesViewportWidget (const ProvidesViewportWidget &)=delete
ProvidesViewportWidgetMR::ProvidesViewportWidget::operator= (const ProvidesViewportWidget &)=delete
virtual MR::ProvidesViewportWidget::~ProvidesViewportWidget ()=default
virtual MR::ProvidesViewportWidget::ViewportWidgetInterface::~ViewportWidgetInterface ()=default
virtual ViewportId MR::ProvidesViewportWidget::ViewportWidgetInterface::viewportId () const =0
 Don't strictly need this, but MSVC warns otherwise.
virtual void MR::ProvidesViewportWidget::ViewportWidgetInterface::addButton (float order, std::string name, bool active, std::string icon, std::string tooltip, std::function< void()> onClick)=0
virtual void MR::ProvidesViewportWidget::providedViewportWidgets (ViewportWidgetInterface &in)=0
MRCOMMONPLUGINS_API MR::DrawViewportWidgetsItem::DrawViewportWidgetsItem ()
bool MR::DrawViewportWidgetsItem::action () override
 returns true if state of item changed
 MR::MoveObjectByMouse::MoveObjectByMouse ()
 MR::MoveObjectByMouse::~MoveObjectByMouse ()
static MRCOMMONPLUGINS_API MoveObjectByMouseMR::MoveObjectByMouse::instance ()
virtual bool MR::MoveObjectByMouse::onDisable_ () override
virtual void MR::MoveObjectByMouse::drawDialog (ImGuiContext *) override
virtual bool MR::MoveObjectByMouse::blocking () const override
 true if this item is blocking (only one blocking item can be active at once)
virtual ObjAndPick MR::MoveObjectByMouse::MoveObjectByMouseWithSelected::pickObjects_ (std::vector< std::shared_ptr< Object > > &objects, int modifiers) const override
virtual TransformMode MR::MoveObjectByMouse::MoveObjectByMouseWithSelected::modeFromPickModifiers_ (int modifiers) const override
virtual void MR::MoveObjectByMouse::MoveObjectByMouseWithSelected::setStartPoint_ (const ObjAndPick &pick, Vector3f &startPoint) const override
 MR::SelectObjectByClick::SelectObjectByClick ()
virtual bool MR::SelectObjectByClick::blocking () const override
 true if this item is blocking (only one blocking item can be active at once)
virtual void MR::SelectObjectByClick::drawDialog (ImGuiContext *) override
 MR::AddCustomThemePlugin::AddCustomThemePlugin ()
virtual void MR::AddCustomThemePlugin::drawDialog (ImGuiContext *) override
virtual std::string MR::AddCustomThemePlugin::isAvailable (const std::vector< std::shared_ptr< const Object > > &) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
 MR::OpenDirectoryMenuItem::OpenDirectoryMenuItem ()
std::string MR::OpenDirectoryMenuItem::isAvailable (const std::vector< std::shared_ptr< const Object > > &) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
bool MR::OpenDirectoryMenuItem::action () override
 returns true if state of item changed
void MR::OpenDirectoryMenuItem::openDirectory (const std::filesystem::path &directory) const
 MR::OpenFilesMenuItem::OpenFilesMenuItem ()
 MR::OpenFilesMenuItem::~OpenFilesMenuItem ()
virtual bool MR::OpenFilesMenuItem::action () override
 returns true if state of item changed
virtual const DropItemsListMR::OpenFilesMenuItem::dropItems () const override
 MR::OpenDICOMsMenuItem::OpenDICOMsMenuItem ()
virtual bool MR::OpenDICOMsMenuItem::action () override
 returns true if state of item changed
 MR::SaveObjectMenuItem::SaveObjectMenuItem ()
virtual bool MR::SaveObjectMenuItem::action () override
 returns true if state of item changed
virtual std::string MR::SaveObjectMenuItem::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
 MR::SaveSelectedMenuItem::SaveSelectedMenuItem ()
virtual bool MR::SaveSelectedMenuItem::action () override
 returns true if state of item changed
 MR::SaveSceneAsMenuItem::SaveSceneAsMenuItem (const std::string &pluginName="Save Scene As")
virtual bool MR::SaveSceneAsMenuItem::action () override
 returns true if state of item changed
virtual std::string MR::SaveSceneAsMenuItem::isAvailable (const std::vector< std::shared_ptr< const Object > > &) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
void MR::SaveSceneAsMenuItem::saveSceneAs_ ()
void MR::SaveSceneAsMenuItem::saveScene_ (const std::filesystem::path &savePath)
 MR::SaveSceneMenuItem::SaveSceneMenuItem ()
virtual bool MR::SaveSceneMenuItem::action () override
 returns true if state of item changed
 MR::CaptureScreenshotMenuItem::CaptureScreenshotMenuItem ()
virtual void MR::CaptureScreenshotMenuItem::drawDialog (ImGuiContext *) override
virtual bool MR::CaptureScreenshotMenuItem::blocking () const override
 true if this item is blocking (only one blocking item can be active at once)
 MR::CaptureUIScreenshotMenuItem::CaptureUIScreenshotMenuItem ()
virtual bool MR::CaptureUIScreenshotMenuItem::action () override
 returns true if state of item changed
 MR::CaptureScreenshotToClipBoardMenuItem::CaptureScreenshotToClipBoardMenuItem ()
virtual bool MR::CaptureScreenshotToClipBoardMenuItem::action () override
 returns true if state of item changed
virtual std::string MR::CaptureScreenshotToClipBoardMenuItem::isAvailable (const std::vector< std::shared_ptr< const Object > > &) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
 MR::RibbonSceneSortByName::RibbonSceneSortByName ()
virtual std::string MR::RibbonSceneSortByName::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual bool MR::RibbonSceneSortByName::action () override
 returns true if state of item changed
 MR::RibbonSceneSelectAll::RibbonSceneSelectAll ()
virtual std::string MR::RibbonSceneSelectAll::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual bool MR::RibbonSceneSelectAll::action () override
 returns true if state of item changed
 MR::RibbonSceneUnselectAll::RibbonSceneUnselectAll ()
virtual bool MR::RibbonSceneUnselectAll::action () override
 returns true if state of item changed
 MR::RibbonSceneShowAll::RibbonSceneShowAll ()
virtual std::string MR::RibbonSceneShowAll::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual bool MR::RibbonSceneShowAll::action () override
 returns true if state of item changed
 MR::RibbonSceneHideAll::RibbonSceneHideAll ()
virtual std::string MR::RibbonSceneHideAll::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual bool MR::RibbonSceneHideAll::action () override
 returns true if state of item changed
 MR::RibbonSceneShowOnlyPrev::RibbonSceneShowOnlyPrev ()
virtual std::string MR::RibbonSceneShowOnlyPrev::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual bool MR::RibbonSceneShowOnlyPrev::action () override
 returns true if state of item changed
 MR::RibbonSceneShowOnlyNext::RibbonSceneShowOnlyNext ()
virtual std::string MR::RibbonSceneShowOnlyNext::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual bool MR::RibbonSceneShowOnlyNext::action () override
 returns true if state of item changed
 MR::RibbonSceneRename::RibbonSceneRename ()
virtual bool MR::RibbonSceneRename::action () override
 returns true if state of item changed
 MR::RibbonSceneRemoveSelected::RibbonSceneRemoveSelected ()
virtual std::string MR::RibbonSceneRemoveSelected::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual bool MR::RibbonSceneRemoveSelected::action () override
 returns true if state of item changed
 MR::ResetSceneMenuItem::ResetSceneMenuItem ()
virtual bool MR::ResetSceneMenuItem::action () override
 returns true if state of item changed
virtual bool MR::ResetSceneMenuItem::blocking () const override
 true if this item is blocking (only one blocking item can be active at once)
 MR::FitDataMenuItem::FitDataMenuItem ()
virtual bool MR::FitDataMenuItem::action () override
 returns true if state of item changed
virtual std::string MR::FitDataMenuItem::isAvailable (const std::vector< std::shared_ptr< const Object > > &) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
 MR::FitSelectedObjectsMenuItem::FitSelectedObjectsMenuItem ()
virtual bool MR::FitSelectedObjectsMenuItem::action () override
 returns true if state of item changed
virtual std::string MR::FitSelectedObjectsMenuItem::isAvailable (const std::vector< std::shared_ptr< const Object > > &) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
 MR::FitSelectedPrimitivesMenuItem::FitSelectedPrimitivesMenuItem ()
virtual bool MR::FitSelectedPrimitivesMenuItem::action () override
 returns true if state of item changed
virtual std::string MR::FitSelectedPrimitivesMenuItem::isAvailable (const std::vector< std::shared_ptr< const Object > > &) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
 MR::SetViewPresetMenuItem::SetViewPresetMenuItem (Type type)
virtual bool MR::SetViewPresetMenuItem::action () override
 returns true if state of item changed
 MR::SetViewportConfigPresetMenuItem::SetViewportConfigPresetMenuItem (Type type)
virtual void MR::SetViewportConfigPresetMenuItem::setCustomUpdateViewports (const std::function< void(const ViewportMask, ViewportId)> &callback)
virtual bool MR::SetViewportConfigPresetMenuItem::action () override
 returns true if state of item changed
 MR::BinaryOperations::BinaryOperations ()
virtual void MR::BinaryOperations::drawDialog (ImGuiContext *) override
 MR::OpenRawVoxelsPlugin::OpenRawVoxelsPlugin ()
virtual void MR::OpenRawVoxelsPlugin::drawDialog (ImGuiContext *) override
MRCUDA_API bool MR::Cuda::isCudaAvailable (int *driverVersion=nullptr, int *runtimeVersion=nullptr, int *computeMajor=nullptr, int *computeMinor=nullptr)
MRCUDA_API size_t MR::Cuda::getCudaAvailableMemory ()
 Returns available GPU memory in bytes.
MRCUDA_API size_t MR::Cuda::getCudaSafeMemoryLimit ()
 Returns maximum safe amount of free GPU memory that will be used for dynamic-sized buffers.
MRCUDA_API size_t MR::Cuda::maxBufferSize (size_t availableBytes, size_t elementCount, size_t elementBytes)
 Returns maximum buffer size in elements that can be allocated with given memory limit.
MRCUDA_API size_t MR::Cuda::maxBufferSizeAlignedByBlock (size_t availableBytes, const Vector2i &blockDims, size_t elementBytes)
MRCUDA_API size_t MR::Cuda::maxBufferSizeAlignedByBlock (size_t availableBytes, const Vector3i &blockDims, size_t elementBytes)
MRCUDA_API MR::Cuda::FastWindingNumber::FastWindingNumber (const Mesh &mesh)
 constructs this from AABB tree of given mesh;
MRCUDA_API Expected< void > MR::Cuda::FastWindingNumber::calcFromVector (std::vector< float > &res, const std::vector< Vector3f > &points, float beta, FaceId skipFace, const ProgressCallback &cb) override
 see methods' descriptions in IFastWindingNumber
MRCUDA_API Expected< void > MR::Cuda::FastWindingNumber::calcSelfIntersections (FaceBitSet &res, float beta, const ProgressCallback &cb) override
 calculates winding numbers for all centers of mesh's triangles. if winding number is less than 0 or greater then 1, that face is marked as self-intersected
MRCUDA_API Expected< void > MR::Cuda::FastWindingNumber::calcFromGrid (std::vector< float > &res, const Vector3i &dims, const AffineXf3f &gridToMeshXf, float beta, const ProgressCallback &cb) override
 calculates winding numbers in each point from a three-dimensional grid
MRCUDA_API Expected< void > MR::Cuda::FastWindingNumber::calcFromGridWithDistances (std::vector< float > &res, const Vector3i &dims, const AffineXf3f &gridToMeshXf, const DistanceToMeshOptions &options, const ProgressCallback &cb) override
 calculates distances with the sign obtained from generalized winding number in each point from a three-dimensional grid; if sqr(res) < minDistSq or sqr(res) >= maxDistSq, then NaN is returned for such point
MRCUDA_API Expected< void > MR::Cuda::FastWindingNumber::calcFromGridByParts (GridByPartsFunc resFunc, const Vector3i &dims, const AffineXf3f &gridToMeshXf, float beta, int layerOverlap, const ProgressCallback &cb) override
 see methods' descriptions in IFastWindingNumberByParts
MRCUDA_API Expected< void > MR::Cuda::FastWindingNumber::calcFromGridWithDistancesByParts (GridByPartsFunc resFunc, const Vector3i &dims, const AffineXf3f &gridToMeshXf, const DistanceToMeshOptions &options, int layerOverlap, const ProgressCallback &cb) override
 calculates distances with the sign obtained from generalized winding number in each point from a three-dimensional grid; if sqr(res) < minDistSq or sqr(res) >= maxDistSq, then NaN is returned for such point
MRCUDA_API Expected< MR::SimpleVolumeMinMaxMR::Cuda::pointsToDistanceVolume (const PointCloud &cloud, const MR::PointsToDistanceVolumeParams &params)
 makes SimpleVolume filled with signed distances to points with normals
MRCUDA_API Expected< void > MR::Cuda::pointsToDistanceVolumeByParts (const PointCloud &cloud, const MR::PointsToDistanceVolumeParams &params, std::function< Expected< void >(const SimpleVolumeMinMax &volume, int zOffset)> addPart, int layerOverlap)
MRCUDA_API VertScalars MR::Cuda::computeSkyViewFactor (const Mesh &terrain, const VertCoords &samples, const VertBitSet &validSamples, const std::vector< MR::SkyPatch > &skyPatches, BitSet *outSkyRays=nullptr, std::vector< MR::MeshIntersectionResult > *outIntersections=nullptr)
MRCUDA_API BitSet MR::Cuda::findSkyRays (const Mesh &terrain, const VertCoords &samples, const VertBitSet &validSamples, const std::vector< MR::SkyPatch > &skyPatches, std::vector< MR::MeshIntersectionResult > *outIntersections=nullptr)
MRCUDA_API Expected< void > MR::Cuda::negatePicture (MR::Image &image)
 This function inverts Color value (255 - value in each channel except alpha)
MRCUDA_API void MR::Cuda::loadMRCudaDll ()
 call this function to load MRCuda shared library
static MREMBEDDEDPYTHON_API bool MR::EmbeddedPython::isAvailable ()
 Set this once before running anything.
static MREMBEDDEDPYTHON_API void MR::EmbeddedPython::shutdown ()
static bool MR::EmbeddedPython::nowRunning ()
static MREMBEDDEDPYTHON_API bool MR::EmbeddedPython::runString (std::string pythonString, std::function< void(bool success)> onDoneAsync=nullptr)
static MREMBEDDEDPYTHON_API bool MR::EmbeddedPython::runScript (const std::filesystem::path &path)
static MREMBEDDEDPYTHON_API bool MR::EmbeddedPython::isPythonScript (const std::filesystem::path &path)
Expected< LoadedObjectMR::deserializeObjectTreeFrom3mf (const std::filesystem::path &file, const ProgressCallback &callback={})
 loads scene from 3MF file in a new container object
Expected< LoadedObjectMR::deserializeObjectTreeFromModel (const std::filesystem::path &file, const ProgressCallback &callback={})
 loads scene from .model file in a new container object
Expected< MeshMR::MeshLoad::fromCtm (const std::filesystem::path &file, const MeshLoadSettings &settings={})
 loads from .ctm file
Expected< MeshMR::MeshLoad::fromCtm (std::istream &in, const MeshLoadSettings &settings={})
Expected< void > MR::MeshSave::toCtm (const Mesh &mesh, const std::filesystem::path &file, const CtmSaveOptions &options)
 saves in .ctm file
Expected< void > MR::MeshSave::toCtm (const Mesh &mesh, std::ostream &out, const CtmSaveOptions &options)
Expected< void > MR::MeshSave::toCtm (const Mesh &mesh, const std::filesystem::path &file, const SaveSettings &settings={})
Expected< void > MR::MeshSave::toCtm (const Mesh &mesh, std::ostream &out, const SaveSettings &settings={})
Expected< PointCloudMR::PointsLoad::fromCtm (const std::filesystem::path &file, const PointsLoadSettings &settings={})
 loads from .ctm file
Expected< PointCloudMR::PointsLoad::fromCtm (std::istream &in, const PointsLoadSettings &settings={})
Expected< void > MR::PointsSave::toCtm (const PointCloud &points, const std::filesystem::path &file, const CtmSavePointsOptions &options)
 saves in .ctm file
Expected< void > MR::PointsSave::toCtm (const PointCloud &points, std::ostream &out, const CtmSavePointsOptions &options)
Expected< void > MR::PointsSave::toCtm (const PointCloud &points, const std::filesystem::path &file, const SaveSettings &settings={})
Expected< void > MR::PointsSave::toCtm (const PointCloud &points, std::ostream &out, const SaveSettings &settings={})
Expected< std::shared_ptr< Object > > MR::deserializeObjectTreeFromGltf (const std::filesystem::path &file, ProgressCallback callback={})
 loads scene from glTF file in a new container object
Expected< void > MR::serializeObjectTreeToGltf (const Object &root, const std::filesystem::path &file, const SceneSave::Settings &settings)
 saves scene to a glTF file
void MR::loadIOExtras ()
Expected< ImageMR::ImageLoad::fromJpeg (const std::filesystem::path &path, bool ignoreDecompressErrors=false)
Expected< ImageMR::ImageLoad::fromJpeg (std::istream &in, bool ignoreDecompressErrors=false)
Expected< ImageMR::ImageLoad::fromJpeg (const char *data, size_t size, bool ignoreDecompressErrors=false)
Expected< void > MR::ImageSave::toJpeg (const Image &image, const std::filesystem::path &path)
 saves in .jpg format
Expected< PointCloudMR::PointsLoad::fromLas (const std::filesystem::path &file, const PointsLoadSettings &settings={})
 loads from .las file
Expected< PointCloudMR::PointsLoad::fromLas (std::istream &in, const PointsLoadSettings &settings={})
Expected< void > MR::Nesting::exportNesting3mf (const std::filesystem::path &path, const Nesting3mfParams &params)
 exports slicestack 3mf file based on placed meshes
 MR::Pdf::Pdf (const PdfParameters &params=PdfParameters())
 Ctor. Create a document, but not a page. To create a new page use newPage() method.
 MR::Pdf::Pdf (Pdf &&other) noexcept
PdfMR::Pdf::operator= (Pdf other) noexcept
 MR::Pdf::~Pdf ()
 Dtor.
void MR::Pdf::addText (const std::string &text, bool isTitle=false)
void MR::Pdf::addText (const std::string &text, const TextParams &params)
float MR::Pdf::getTextWidth (const std::string &text, const TextParams &params)
 return text width
void MR::Pdf::addTable (const std::vector< std::pair< std::string, float > > &table)
void MR::Pdf::addPaletteStatsTable (const std::vector< PaletteRowStats > &paletteStats)
void MR::Pdf::addImageFromFile (const std::filesystem::path &imagePath, const ImageParams &params)
 Add image from file in current cursor position. If image bigger than page size, autoscale image to page size. Move cursor.
void MR::Pdf::addImage (const Image &image, const ImageParams &params)
void MR::Pdf::newPage ()
 Add new pageand move cursor on it.
void MR::Pdf::setNewPageAction (std::function< void(Pdf &)> action)
 set function to customize new page after creation
void MR::Pdf::saveToFile (const std::filesystem::path &documentPath)
 Save document to file.
void MR::Pdf::setCursorPosX (float posX)
void MR::Pdf::setCursorPosY (float posY)
float MR::Pdf::getCursorPosX () const
float MR::Pdf::getCursorPosY () const
Vector2f MR::Pdf::getPageSize () const
Box2f MR::Pdf::getPageWorkArea () const
 MR::Pdf::operator bool () const
 Checking the ability to work with a document.
 MR::Pdf::Cell::Cell ()
template<typename T>
 MR::Pdf::Cell::Cell (const T &value)
std::string MR::Pdf::Cell::toString (const std::string &fmtStr="{}") const
void MR::Pdf::newTable (int columnCount)
 set up new table (clear table customization, reset parameters to default values)
Expected< void > MR::Pdf::setTableColumnWidths (const std::vector< float > &widths)
 set table column widths
Expected< void > MR::Pdf::addTableTitles (const std::vector< std::string > &titles)
 add in pdf table row with titles
Expected< void > MR::Pdf::setColumnValuesFormat (const std::vector< std::string > &formats)
 set format for conversion values to string for each column
Expected< void > MR::Pdf::addRow (const std::vector< Cell > &cells)
 add in pdf table row with values
float MR::Pdf::getTableTextWidth (const std::string &text)
void MR::Pdf::setTableCustomRule (TableCustomRule rule)
 add rule to customize table cells
void MR::Pdf::drawTextInRect (const std::string &text, const Box2f &rect, const TextParams &params)
 basic drawing methods without automatic cursor position control
void MR::Pdf::drawTextCell (const std::string &text, const TextCellParams &params)
void MR::Pdf::drawRect (const Box2f &rect, const Color &fillColor, const Color &strokeColor)
 draw rect (filled with border)
Expected< ImageMR::ImageLoad::fromPng (const std::filesystem::path &path)
 loads from .png format
Expected< ImageMR::ImageLoad::fromPng (std::istream &in)
Expected< void > MR::ImageSave::toPng (const Image &image, const std::filesystem::path &path)
 saves in .png format
Expected< void > MR::ImageSave::toPng (const Image &image, std::ostream &os)
Expected< ImageMR::ImageLoad::fromTiff (const std::filesystem::path &path)
 loads from .tiff format
Expected< void > MR::ImageSave::toTiff (const Image &image, const std::filesystem::path &path)
 saves in .tiff format
Expected< void > MR::DistanceMapSave::toTiff (const DistanceMap &dmap, const std::filesystem::path &path, const DistanceMapSaveSettings &settings={})
 saves in .tiff format
Expected< void > MR::zlibCompressStream (std::istream &in, std::ostream &out, int level=-1)
 compress the input data using the Deflate algorithm
Expected< void > MR::zlibDecompressStream (std::istream &in, std::ostream &out)
HolesVertIds MR::PlanarTriangulation::findHoleVertIdsByHoleEdges (const MeshTopology &tp, const std::vector< EdgePath > &holePaths)
 return vertices of holes that correspond internal contours representation of PlanarTriangulation
bool MR::PlanarTriangulation::IntersectionInfo::isIntersection () const
Mesh MR::PlanarTriangulation::getOutlineMesh (const Contours2f &contours, IntersectionsMap *interMap=nullptr, const BaseOutlineParameters &params={})
Mesh MR::PlanarTriangulation::getOutlineMesh (const Contours2d &contours, IntersectionsMap *interMap=nullptr, const BaseOutlineParameters &params={})
Contours2f MR::PlanarTriangulation::getOutline (const Contours2f &contours, const OutlineParameters &params={})
 returns Contour representing outline if input contours
Contours2f MR::PlanarTriangulation::getOutline (const Contours2d &contours, const OutlineParameters &params={})
Mesh MR::PlanarTriangulation::triangulateContours (const Contours2d &contours, const HolesVertIds *holeVertsIds=nullptr)
 triangulate 2d contours only closed contours are allowed (first point of each contour should be the same as last point of the contour)
Mesh MR::PlanarTriangulation::triangulateContours (const Contours2f &contours, const HolesVertIds *holeVertsIds=nullptr)
std::optional< MeshMR::PlanarTriangulation::triangulateDisjointContours (const Contours2d &contours, const HolesVertIds *holeVertsIds=nullptr, std::vector< EdgePath > *outBoundaries=nullptr)
 triangulate 2d contours only closed contours are allowed (first point of each contour should be the same as last point of the contour)
std::optional< MeshMR::PlanarTriangulation::triangulateDisjointContours (const Contours2f &contours, const HolesVertIds *holeVertsIds=nullptr, std::vector< EdgePath > *outBoundaries=nullptr)
const NodeVecMR::AABBTreeBase< T >::nodes () const
 const-access to all nodes
const NodeMR::AABBTreeBase< T >::operator[] (NodeId nid) const
 const-access to any node
static NodeId MR::AABBTreeBase< T >::rootNodeId ()
 returns root node id
BoxT MR::AABBTreeBase< T >::getBoundingBox () const
 returns the root node bounding box
size_t MR::AABBTreeBase< T >::heapBytes () const
 returns the amount of memory this object occupies on heap
size_t MR::AABBTreeBase< T >::numLeaves () const
 returns the number of leaves in whole tree
std::vector< NodeId > MR::AABBTreeBase< T >::getSubtrees (int minNum) const
 returns at least given number of top-level not-intersecting subtrees, union of which contain all tree leaves
LeafBitSet MR::AABBTreeBase< T >::getSubtreeLeaves (NodeId subtreeRoot) const
 returns all leaves in the subtree with given root
NodeBitSet MR::AABBTreeBase< T >::getNodesFromLeaves (const LeafBitSet &leaves) const
 returns set of nodes containing among direct or indirect children given leaves
void MR::AABBTreeBase< T >::getLeafOrder (LeafBMap &leafMap) const
void MR::AABBTreeBase< T >::getLeafOrderAndReset (LeafBMap &leafMap)
 MR::AABBTreeObjects::AABBTreeObjects ()=default
 MR::AABBTreeObjects::AABBTreeObjects (Vector< MeshOrPointsXf, ObjId > objs)
 creates tree for given set of objects each with its own transformation
const MeshOrPointsMR::AABBTreeObjects::obj (ObjId oi) const
 gets object by its id
const AffineXf3f & MR::AABBTreeObjects::toWorld (ObjId oi) const
 gets transformation from local space of given object to world space
const AffineXf3f & MR::AABBTreeObjects::toLocal (ObjId oi) const
 gets transformation from world space to local space of given object
const Vector< AffineXf3f, ObjId > & MR::AABBTreeObjects::toLocal () const
 gets mapping: objId -> its transformation from world space to local space
Expected< void > MR::addNoise (VertCoords &points, const VertBitSet &validVerts, NoiseSettings settings)
 Adds noise to the points, using a normal distribution.
Expected< void > MR::addNoise (Mesh &mesh, const VertBitSet *region=nullptr, const NoiseSettings &settings={})
bool MR::AddVisualProperties< BaseObjectType, Properties >::supportsVisualizeProperty (AnyVisualizeMaskEnum type) const override
AllVisualizeProperties MR::AddVisualProperties< BaseObjectType, Properties >::getAllVisualizeProperties () const override
const ViewportMaskMR::AddVisualProperties< BaseObjectType, Properties >::getVisualizePropertyMask (AnyVisualizeMaskEnum type) const override
void MR::AddVisualProperties< BaseObjectType, Properties >::setAllVisualizeProperties_ (const AllVisualizeProperties &properties, std::size_t &pos) override
constexpr MR::AffineXf< V >::AffineXf () noexcept=default
constexpr MR::AffineXf< V >::AffineXf (const M &A, const V &b) noexcept
template<typename U>
 MR::AffineXf< V >::MR_REQUIRES_IF_SUPPORTED (!std::is_same_v< U, V >) const expr explicit AffineXf(const AffineXf< U > &xf) noexcept
static constexpr AffineXf MR::AffineXf< V >::translation (const V &b) noexcept
 creates translation-only transformation (with identity linear component)
static constexpr AffineXf MR::AffineXf< V >::linear (const M &A) noexcept
 creates linear-only transformation (without translation)
static constexpr AffineXf MR::AffineXf< V >::xfAround (const M &A, const V &stable) noexcept
 creates transformation with given linear part with given stable point
constexpr V MR::AffineXf< V >::operator() (const V &x) const noexcept
 application of the transformation to a point
constexpr V MR::AffineXf< V >::linearOnly (const V &x) const noexcept
 MR::FlowAggregator::FlowAggregator (const Mesh &mesh, const VertScalars &heights)
 prepares the processing of given mesh with given height in each vertex
VertScalars MR::FlowAggregator::computeFlow (const std::vector< FlowOrigin > &starts, const OutputFlows &out={}) const
VertScalars MR::FlowAggregator::computeFlow (const std::vector< MeshTriPoint > &starts, const OutputFlows &out={}) const
 same with all amounts equal to 1
VertScalars MR::FlowAggregator::computeFlow (size_t numStarts, const std::function< MeshTriPoint(size_t)> &startById, const std::function< float(size_t)> &amountById, const std::function< const FaceBitSet *(size_t)> &regionById, const OutputFlows &out={}) const
 general version that supplies starts in a functional way
HashMap< VertId, FlowsMR::FlowAggregator::computeFlowsPerBasin (const std::vector< FlowOrigin > &starts) const
HashMap< VertId, FlowsMR::FlowAggregator::computeFlowsPerBasin (const std::vector< MeshTriPoint > &starts) const
 same with all amounts equal to 1
HashMap< VertId, FlowsMR::FlowAggregator::computeFlowsPerBasin (size_t numStarts, const std::function< MeshTriPoint(size_t)> &startById, const std::function< float(size_t)> &amountById) const
 general version that supplies starts in a functional way
UndirectedEdgeBitSet MR::FlowAggregator::computeCatchmentDelineation () const
Expected< MeshMR::alignContoursToMesh (const Mesh &mesh, const Contours2f &contours, const ContoursMeshAlignParams &params)
 Creates planar mesh out of given contour and aligns it to given surface.
Expected< MeshMR::bendContoursAlongCurve (const Contours2f &contours, const CurveFunc &curve, const BendContoursAlongCurveParams &params)
 Converts contours in thick mesh, and deforms it along given path.
Expected< MeshMR::bendContoursAlongSurfacePath (const Contours2f &contours, const Mesh &mesh, const GeodesicPath &path, const BendContoursAlongCurveParams &params)
 Converts contours in thick mesh, and deforms it along given surface path: start->path->end.
Expected< MeshMR::bendContoursAlongSurfacePath (const Contours2f &contours, const Mesh &mesh, const SurfacePath &path, const BendContoursAlongCurveParams &params)
 Converts contours in thick mesh, and deforms it along given surface path.
Expected< std::vector< float > > MR::findPartialLens (const CurvePoints &cp, float *outCurveLen=nullptr)
CurvePoint MR::getCurvePoint (const CurvePoints &cp, const std::vector< float > &lens, float p)
Expected< CurveFuncMR::curveFromPoints (const CurvePoints &cp, float *outCurveLen=nullptr)
Expected< CurveFuncMR::curveFromPoints (CurvePoints &&cp, float *outCurveLen=nullptr)
CurvePoints MR::meshPathCurvePoints (const Mesh &mesh, const GeodesicPath &path)
 converts polyline given as a number of MeshTriPoint/MeshEdgePoint into CurvePoints
CurvePoints MR::meshPathCurvePoints (const Mesh &mesh, const SurfacePath &path)
void MR::addBaseToPlanarMesh (Mesh &mesh, float zOffset)
 MR::AngleMeasurementObject::AngleMeasurementObject ()
 The xf encodes the two rays: the origin is the angle point, (1,0,0) is the first ray, (0,1,0) is the second ray.
 MR::AngleMeasurementObject::AngleMeasurementObject (AngleMeasurementObject &&) noexcept=default
AngleMeasurementObjectMR::AngleMeasurementObject::operator= (AngleMeasurementObject &&) noexcept=default
static constexpr const char * MR::AngleMeasurementObject::StaticTypeName () noexcept
const char * MR::AngleMeasurementObject::typeName () const override
static constexpr const char * MR::AngleMeasurementObject::StaticClassName () noexcept
virtual std::string MR::AngleMeasurementObject::className () const override
static constexpr const char * MR::AngleMeasurementObject::StaticClassNameInPlural () noexcept
virtual std::string MR::AngleMeasurementObject::classNameInPlural () const override
 MR::AngleMeasurementObject::AngleMeasurementObject (ProtectedStruct, const AngleMeasurementObject &obj)
 For std::make_shared() in clone().
std::shared_ptr< ObjectMR::AngleMeasurementObject::clone () const override
std::shared_ptr< ObjectMR::AngleMeasurementObject::shallowClone () const override
Vector3f MR::AngleMeasurementObject::getWorldPoint () const
 Get the angle point in world coordinates.
Vector3f MR::AngleMeasurementObject::getLocalPoint () const
 Get the angle point in local coordinates.
Vector3f MR::AngleMeasurementObject::getWorldRay (bool second) const
Vector3f MR::AngleMeasurementObject::getLocalRay (bool second) const
 Same, but in local coordinates.
virtual void MR::AngleMeasurementObject::setLocalPoint (const MR::Vector3f &point)
 Set the angle point in the local coordinates.
virtual void MR::AngleMeasurementObject::setLocalRays (const MR::Vector3f &a, const MR::Vector3f &b)
bool MR::AngleMeasurementObject::getIsConical () const
 Whether this is a conical angle. The middle line between the rays is preserved, but the rays themselves can be rotated.
void MR::AngleMeasurementObject::setIsConical (bool value)
bool MR::AngleMeasurementObject::getShouldVisualizeRay (bool second) const
 Whether we should draw a ray from the center point to better visualize the angle. Enable this if there isn't already a line object there.
void MR::AngleMeasurementObject::setShouldVisualizeRay (bool second, bool enable)
float MR::AngleMeasurementObject::computeAngle () const
 Computes the angle value, as if by acos(dot(...)) from the two normalized getWorldRay()s.
std::vector< std::string > MR::AngleMeasurementObject::getInfoLines () const override
 return several info lines that can better describe the object in the UI
 MR::AngleMeasurementObject::AngleMeasurementObject (const AngleMeasurementObject &other)=default
void MR::AngleMeasurementObject::swapBase_ (Object &other) override
 swaps this object with other
void MR::AngleMeasurementObject::serializeFields_ (Json::Value &root) const override
void MR::AngleMeasurementObject::deserializeFields_ (const Json::Value &root) override
void MR::AngleMeasurementObject::setupRenderObject_ () const override
void MR::AngleMeasurementObject::onWorldXfChanged_ () override
 Emits worldXfChangedSignal, but derived classes can add additional behavior to it.
Mesh MR::makeArrow (const Vector3f &base, const Vector3f &vert, const float &thickness=0.05f, const float &coneRadius=0.1f, const float coneSize=0.2f, const int qual=32)
 creates hollow arrow from the 'base' to the 'vert'. Number of points on the circle 'qual' is between 3 and 256
Mesh MR::makeBasisAxes (const float &size=1.0f, const float &thickness=0.05f, const float &coneRadius=0.1f, const float coneSize=0.2f, const int qual=32)
 creates the mesh with 3 axis arrows
bool MR::Ball< V >::inside (const V &pt) const
 returns true if given point is strictly inside the ball (not on its spherical surface)
bool MR::Ball< V >::outside (const V &pt) const
 returns true if given point is strictly outside the ball (not on its spherical surface)
bool MR::BasinVolumeCalculator::addTerrainTri (Triangle3f t, float level)
double MR::BasinVolumeCalculator::getVolume () const
 call it after all addTerrainTri to get the volume
double MR::computeBasinVolume (const Mesh &mesh, const FaceBitSet &faces, float level)
void MR::BestFitParabola< T >::addPoint (T x, T y)
 accumulates one more point for parabola fitting
void MR::BestFitParabola< T >::addPoint (T x, T y, T weight)
 accumulates one more point with given weight for parabola fitting
Parabola< T > MR::BestFitParabola< T >::getBestParabola (T tol=std::numeric_limits< T >::epsilon()) const
 computes the best approximating parabola from the accumulated points;
constexpr bool MR::canSolvePolynomial (auto degree)
constexpr bool MR::canMinimizePolynomial (auto degree)
template<typename NewT>
Polynomial< NewT, degree > MR::Polynomial< T, degree >::cast () const
MR::Polynomial< T, degree >::operator() (T x) const
std::vector< T > MR::Polynomial< T, degree >::solve (T tol) const
Polynomial< T, degree==0 ? 0 :degree - 1 > MR::Polynomial< T, degree >::deriv () const
MR::Polynomial< T, degree >::intervalMin (T a, T b) const
template<size_t degree>
 MR::PolynomialWrapper< T >::PolynomialWrapper (const Polynomial< T, degree > &p)
MR::PolynomialWrapper< T >::operator() (T x) const
PolynomialWrapper< T > MR::PolynomialWrapper< T >::deriv () const
std::optional< T > MR::PolynomialWrapper< T >::intervalMin (T a, T b) const
 MR::BestFitPolynomial< T, degree >::BestFitPolynomial (T reg)
void MR::BestFitPolynomial< T, degree >::addPoint (T x, T y)
void MR::BestFitPolynomial< T, degree >::addPoint (T x, T y, T weight)
Polynomial< T, degree > MR::BestFitPolynomial< T, degree >::getBestPolynomial () const
 MR::QuadricApprox::QuadricApprox ()
void MR::QuadricApprox::addPoint (const Vector3d &point, double weight=1.0)
 Adds point to accumulation with weight.
Eigen::Matrix< double, 6, 1 > MR::QuadricApprox::calcBestCoefficients () const
static Vector3d MR::QuadricApprox::findZeroProjection (const Eigen::Matrix< double, 6, 1 > &coefs)
MR::CubicBezierCurve< V >::getPoint (T t) const
 computes point on the curve from parameter value
static std::array< T, 4 > MR::CubicBezierCurve< V >::getWeights (T t)
 computes weights of every control point for given parameter value, the sum of all weights is equal to 1
virtual MR::Nesting::IBoxNestingPriority::~IBoxNestingPriority ()=default
virtual void MR::Nesting::IBoxNestingPriority::init (const Box3f &thisBox)=0
 init priority calculation with box of placed object
virtual void MR::Nesting::IBoxNestingPriority::addNested (const Box3f &box)=0
 accumulate priority by one of already nested boxes
virtual double MR::Nesting::IBoxNestingPriority::complete () const =0
 finalize priority and return the value (more - better)
std::shared_ptr< IBoxNestingPriorityMR::Nesting::getNestPostionMinPriorityMetric (const Box3f &nest)
 priority metric that minimizes position of new object by Z->Y->X coordinate in nest
std::shared_ptr< IBoxNestingPriorityMR::Nesting::getNeighborigDensityPriorityMetric (const Box3f &nest, float neighborhood)
 priority metric that maximizes density of placement in local neighborhood
Expected< void > MR::Nesting::fillNestingSocketCorneres (const std::vector< Box3f > &nestedBoxes, std::vector< BoxNestingCorner > &outCorners, const ProgressCallback &cb={})
Expected< Vector< NestingResult, ObjId > > MR::Nesting::boxNesting (const Vector< MeshXf, ObjId > &meshes, const BoxNestingParams &params)
 finds best positions of input meshes to fit the nest (checks them by contacting box corners)
constexpr MR::ZeroOnMove< T >::ZeroOnMove () noexcept
constexpr MR::ZeroOnMove< T >::ZeroOnMove (const ZeroOnMove &) noexcept=delete
constexpr MR::ZeroOnMove< T >::ZeroOnMove (ZeroOnMove &&z) noexcept
constexpr ZeroOnMoveMR::ZeroOnMove< T >::operator= (const ZeroOnMove &) noexcept=delete
constexpr ZeroOnMoveMR::ZeroOnMove< T >::operator= (ZeroOnMove &&z) noexcept
 MR::Buffer< V, I >::Buffer ()=default
 MR::Buffer< V, I >::Buffer (size_t size)
auto MR::Buffer< V, I >::capacity () const
auto MR::Buffer< V, I >::size () const
bool MR::Buffer< V, I >::empty () const
void MR::Buffer< V, I >::clear ()
void MR::Buffer< V, I >::resize (size_t newSize)
const_reference MR::Buffer< V, I >::operator[] (I i) const MR_LIFETIMEBOUND
reference MR::Buffer< V, I >::operator[] (I i) MR_LIFETIMEBOUND
auto MR::Buffer< V, I >::data () MR_LIFETIMEBOUND
auto MR::Buffer< V, I >::data () const MR_LIFETIMEBOUND
I MR::Buffer< V, I >::beginId () const
 returns the identifier of the first element
I MR::Buffer< V, I >::backId () const
 returns the identifier of the back() element
I MR::Buffer< V, I >::endId () const
 returns backId() + 1
size_t MR::Buffer< V, I >::heapBytes () const
 returns the amount of memory this object occupies on heap
template<typename T, typename I>
MR::getAt (const Buffer< T, I > &bmap MR_LIFETIMEBOUND_NESTED, I key, T def={})
 given some buffer map and a key, returns the value associated with the key, or default value if key is invalid
template<typename T>
BMap< T, T > MR::compose (const BMap< T, T > &a, const BMap< T, T > &b)
 computes the composition of two mappings x -> a(b(x))
 MR::ChangeObjectColorAction::ChangeObjectColorAction (const std::string &name, const std::shared_ptr< VisualObject > &obj, Type type)
 Constructed from original obj.
virtual std::string MR::ChangeObjectColorAction::name () const override
virtual void MR::ChangeObjectColorAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
static void MR::ChangeObjectColorAction::setObjectDirty (const std::shared_ptr< VisualObject > &)
virtual size_t MR::ChangeObjectColorAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeFacesColorMapAction::ChangeFacesColorMapAction (const std::string &name, const std::shared_ptr< ObjectMeshHolder > &obj)
 use this constructor to remember object's face colors before making any changes in them
 MR::ChangeFacesColorMapAction::ChangeFacesColorMapAction (const std::string &name, const std::shared_ptr< ObjectMeshHolder > &obj, FaceColors &&newColorMap)
 use this constructor to remember object's face colors and immediate set new value
virtual std::string MR::ChangeFacesColorMapAction::name () const override
virtual void MR::ChangeFacesColorMapAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
static void MR::ChangeFacesColorMapAction::setObjectDirty (const std::shared_ptr< ObjectMeshHolder > &obj)
virtual size_t MR::ChangeFacesColorMapAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeLinesColorMapAction::ChangeLinesColorMapAction (const std::string &name, const std::shared_ptr< ObjectLinesHolder > &obj)
 use this constructor to remember object's line colors before making any changes in them
 MR::ChangeLinesColorMapAction::ChangeLinesColorMapAction (const std::string &name, const std::shared_ptr< ObjectLinesHolder > &obj, UndirectedEdgeColors &&newColorMap)
 use this constructor to remember object's lines colors and immediate set new value
virtual std::string MR::ChangeLinesColorMapAction::name () const override
virtual void MR::ChangeLinesColorMapAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
static void MR::ChangeLinesColorMapAction::setObjectDirty (const std::shared_ptr< ObjectLinesHolder > &obj)
virtual size_t MR::ChangeLinesColorMapAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeColoringType::ChangeColoringType (const std::string &name, const std::shared_ptr< VisualObject > &obj)
 use this constructor to remember object's coloring type before making any changes in it
 MR::ChangeColoringType::ChangeColoringType (const std::string &name, const std::shared_ptr< VisualObject > &obj, ColoringType newType)
 use this constructor to remember object's coloring type and immediate set new value
virtual std::string MR::ChangeColoringType::name () const override
virtual void MR::ChangeColoringType::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
static void MR::ChangeColoringType::setObjectDirty (const std::shared_ptr< VisualObject > &obj)
virtual size_t MR::ChangeColoringType::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeNameAction::ChangeNameAction (const std::string &actionName, std::shared_ptr< Object > obj)
 construct before giving new name to the object
virtual std::string MR::ChangeNameAction::name () const override
virtual void MR::ChangeNameAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
virtual size_t MR::ChangeNameAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeObjectAction::ChangeObjectAction (const std::string &name, const std::shared_ptr< Object > &obj)
 Constructed from original Object.
virtual std::string MR::ChangeObjectAction::name () const override
virtual void MR::ChangeObjectAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
virtual size_t MR::ChangeObjectAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeVisualizePropertyAction::ChangeVisualizePropertyAction (const std::string &name, const std::shared_ptr< VisualObject > &obj, AnyVisualizeMaskEnum visualizeMaskType)
 use this constructor to remember object's visualize property mask before making any changes in it
 MR::ChangeVisualizePropertyAction::ChangeVisualizePropertyAction (const std::string &name, const std::shared_ptr< VisualObject > &obj, AnyVisualizeMaskEnum visualizeMaskType, ViewportMask newMask)
 use this constructor to remember object's visualize property mask and immediately set new value
virtual std::string MR::ChangeVisualizePropertyAction::name () const override
virtual void MR::ChangeVisualizePropertyAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
static void MR::ChangeVisualizePropertyAction::setObjectDirty (const std::shared_ptr< VisualObject > &)
virtual size_t MR::ChangeVisualizePropertyAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeObjectSelectedAction::ChangeObjectSelectedAction (const std::string &name, const std::shared_ptr< Object > &obj)
 use this constructor to remember object's isSelected property before making any changes in it
 MR::ChangeObjectSelectedAction::ChangeObjectSelectedAction (const std::string &name, const std::shared_ptr< Object > &obj, bool newValue)
 use this constructor to remember object's isSelected property and immediately set new value
virtual std::string MR::ChangeObjectSelectedAction::name () const override
virtual void MR::ChangeObjectSelectedAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
static void MR::ChangeObjectSelectedAction::setObjectDirty (const std::shared_ptr< Object > &)
virtual size_t MR::ChangeObjectSelectedAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeObjectVisibilityAction::ChangeObjectVisibilityAction (const std::string &name, const std::shared_ptr< Object > &obj)
 use this constructor to remember object's visibility mask before making any changes in it
 MR::ChangeObjectVisibilityAction::ChangeObjectVisibilityAction (const std::string &name, const std::shared_ptr< Object > &obj, ViewportMask newVisibilityMask)
 use this constructor to remember object's visibility mask and immediately set new mask
virtual std::string MR::ChangeObjectVisibilityAction::name () const override
virtual void MR::ChangeObjectVisibilityAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
static void MR::ChangeObjectVisibilityAction::setObjectDirty (const std::shared_ptr< Object > &)
virtual size_t MR::ChangeObjectVisibilityAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangePointCloudAction::ChangePointCloudAction (std::string name, const std::shared_ptr< ObjectPoints > &obj)
 use this constructor to remember object's point cloud before making any changes in it
virtual std::string MR::ChangePointCloudAction::name () const override
virtual void MR::ChangePointCloudAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
static void MR::ChangePointCloudAction::setObjectDirty (const std::shared_ptr< ObjectPoints > &obj)
virtual size_t MR::ChangePointCloudAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangePointCloudPointsAction::ChangePointCloudPointsAction (std::string name, const std::shared_ptr< ObjectPoints > &obj)
 use this constructor to remember object's points field before making any changes in it
 MR::ChangePointCloudPointsAction::ChangePointCloudPointsAction (std::string name, const std::shared_ptr< ObjectPoints > &obj, VertCoords &&newPoints)
 use this constructor to remember object's points field and immediate set new value
virtual std::string MR::ChangePointCloudPointsAction::name () const override
virtual void MR::ChangePointCloudPointsAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
static void MR::ChangePointCloudPointsAction::setObjectDirty (const std::shared_ptr< ObjectPoints > &obj)
virtual size_t MR::ChangePointCloudPointsAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeOnePointInCloudAction::ChangeOnePointInCloudAction (std::string name, const std::shared_ptr< ObjectPoints > &obj, VertId pointId)
 use this constructor to remember point's coordinates before making any changes in it
 MR::ChangeOnePointInCloudAction::ChangeOnePointInCloudAction (std::string name, const std::shared_ptr< ObjectPoints > &obj, VertId pointId, const Vector3f &newCoords)
 use this constructor to remember point's coordinates and immediate set new coordinates
virtual std::string MR::ChangeOnePointInCloudAction::name () const override
virtual void MR::ChangeOnePointInCloudAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
static void MR::ChangeOnePointInCloudAction::setObjectDirty (const std::shared_ptr< ObjectPoints > &obj)
virtual size_t MR::ChangeOnePointInCloudAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangePointCloudNormalsAction::ChangePointCloudNormalsAction (std::string name, const std::shared_ptr< ObjectPoints > &obj)
 use this constructor to remember point cloud's normals before making any changes in them
 MR::ChangePointCloudNormalsAction::ChangePointCloudNormalsAction (std::string name, const std::shared_ptr< ObjectPoints > &obj, VertNormals &&newNormals)
 use this constructor to remember point cloud's normals and immediate set new value
virtual std::string MR::ChangePointCloudNormalsAction::name () const override
virtual void MR::ChangePointCloudNormalsAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
static void MR::ChangePointCloudNormalsAction::setObjectDirty (const std::shared_ptr< ObjectPoints > &obj)
virtual size_t MR::ChangePointCloudNormalsAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeOneNormalInCloudAction::ChangeOneNormalInCloudAction (std::string name, const std::shared_ptr< ObjectPoints > &obj, VertId pointId)
 use this constructor to remember point's normal before making any changes in it
 MR::ChangeOneNormalInCloudAction::ChangeOneNormalInCloudAction (std::string name, const std::shared_ptr< ObjectPoints > &obj, VertId pointId, const Vector3f &newNormal)
 use this constructor to remember point's normal and immediate set new normal
virtual std::string MR::ChangeOneNormalInCloudAction::name () const override
virtual void MR::ChangeOneNormalInCloudAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
static void MR::ChangeOneNormalInCloudAction::setObjectDirty (const std::shared_ptr< ObjectPoints > &obj)
virtual size_t MR::ChangeOneNormalInCloudAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeScaleAction::ChangeScaleAction (const std::string &name, const std::shared_ptr< Object > &obj, float scale)
 Constructor that performs object scaling, and remembers inverted scale value for undoing.
virtual std::string MR::ChangeScaleAction::name () const override
virtual void MR::ChangeScaleAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
virtual size_t MR::ChangeScaleAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeSceneAction::ChangeSceneAction (const std::string &name, const std::shared_ptr< Object > &obj, Type type)
 Constructed before removal or addition.
virtual std::string MR::ChangeSceneAction::name () const override
virtual void MR::ChangeSceneAction::action (HistoryAction::Type actionType) override
 This function is called on history action (undo, redo, etc.)
virtual size_t MR::ChangeSceneAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeSceneObjectsOrder::ChangeSceneObjectsOrder (const std::string &name, const std::shared_ptr< Object > &obj)
 Constructed before change order.
virtual std::string MR::ChangeSceneObjectsOrder::name () const override
virtual void MR::ChangeSceneObjectsOrder::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
virtual size_t MR::ChangeSceneObjectsOrder::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeValue< T >::ChangeValue (const std::string &name, T *currentValue, T oldValue)
 Constructed from original object's pointer and old value.
virtual std::string MR::ChangeValue< T >::name () const override
virtual void MR::ChangeValue< T >::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
virtual size_t MR::ChangeValue< T >::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeVertsColorMapAction< T >::ChangeVertsColorMapAction (const std::string &name, const std::shared_ptr< T > &obj)
 use this constructor to remember object's vertex colors before making any changes in them
 MR::ChangeVertsColorMapAction< T >::ChangeVertsColorMapAction (const std::string &name, const std::shared_ptr< T > &obj, VertColors &&newVertsColorMap)
 use this constructor to remember object's vertex colors and immediate set new value
virtual std::string MR::ChangeVertsColorMapAction< T >::name () const override
virtual void MR::ChangeVertsColorMapAction< T >::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
static void MR::ChangeVertsColorMapAction< T >::setObjectDirty (const std::shared_ptr< T > &obj)
virtual size_t MR::ChangeVertsColorMapAction< T >::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ChangeXfAction::ChangeXfAction (const std::string &name, const std::shared_ptr< Object > &obj)
 use this constructor to remember object's transformation before making any changes in it
 MR::ChangeXfAction::ChangeXfAction (const std::string &name, const std::shared_ptr< Object > &obj, const AffineXf3f &newXf)
 use this constructor to remember object's transformation and immediately set new mesh
virtual std::string MR::ChangeXfAction::name () const override
virtual void MR::ChangeXfAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
virtual size_t MR::ChangeXfAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
const std::shared_ptr< Object > & MR::ChangeXfAction::obj () const
MR_BIND_IGNORE std::optional< std::tm > MR::Localtime (std::time_t time)
 A threadsafe equivalent for std::localtime(). Returns null on failure.
MR_BIND_IGNORE std::tm MR::LocaltimeOrZero (std::time_t time)
 Same, but returns a struct full of zeroes on error.
bool MR::ChunkIterator::operator== (const ChunkIterator &other) const
ChunkIteratorMR::ChunkIterator::operator++ ()
ChunkIterator MR::ChunkIterator::operator++ (int)
Chunk MR::ChunkIterator::operator* () const
Chunk MR::ChunkIterator::operator-> () const
size_t MR::chunkCount (size_t totalSize, size_t chunkSize, size_t overlap=0)
 returns the amount of chunks of given size required to cover the full array
IteratorRange< ChunkIteratorMR::splitByChunks (size_t totalSize, size_t chunkSize, size_t overlap=0)
 returns a pair of iterators for chunks covering the array of given size
bool MR::PointAndDistance::valid () const
 check for validity, otherwise there is no point closer than maxBidirDist
 MR::PointAndDistance::operator bool () const
float MR::MeshPointAndDistance::bidirDist () const
 bidirectional distance from input location to mtp considering point's weight
float MR::MeshPointAndDistance::dist () const
auto MR::MeshPointAndDistance::operator<=> (const MeshPointAndDistance &other) const
 comparison telling which point is closer to the location
bool MR::MeshPointAndDistance::valid () const
 check for validity, otherwise there is no point closer than maxBidirDist
 MR::MeshPointAndDistance::operator bool () const
PointAndDistance MR::findClosestWeightedPoint (const Vector3f &loc, const AABBTreePoints &tree, const DistanceFromWeightedPointsComputeParams &params)
MeshPointAndDistance MR::findClosestWeightedMeshPoint (const Vector3f &loc, const Mesh &mesh, const DistanceFromWeightedPointsComputeParams &params)
std::optional< VertMap > MR::findSmallestCloseVertices (const Mesh &mesh, float closeDist, const ProgressCallback &cb={})
std::optional< VertMap > MR::findSmallestCloseVertices (const PointCloud &cloud, float closeDist, const ProgressCallback &cb={})
std::optional< VertMap > MR::findSmallestCloseVertices (const VertCoords &points, float closeDist, const VertBitSet *valid=nullptr, const ProgressCallback &cb={})
std::optional< VertMap > MR::findSmallestCloseVerticesUsingTree (const VertCoords &points, float closeDist, const AABBTreePoints &tree, const VertBitSet *valid, const ProgressCallback &cb={})
std::optional< VertBitSet > MR::findCloseVertices (const Mesh &mesh, float closeDist, const ProgressCallback &cb={})
 finds all close vertices, where for each vertex there is another one located within given distance
std::optional< VertBitSet > MR::findCloseVertices (const PointCloud &cloud, float closeDist, const ProgressCallback &cb={})
 finds all close vertices, where for each vertex there is another one located within given distance
std::optional< VertBitSet > MR::findCloseVertices (const VertCoords &points, float closeDist, const VertBitSet *valid=nullptr, const ProgressCallback &cb={})
 finds all close vertices, where for each vertex there is another one located within given distance
VertBitSet MR::findCloseVertices (const VertMap &smallestMap)
 finds all close vertices, where for each vertex there is another one located within given distance; smallestMap is the result of findSmallestCloseVertices function call
std::vector< EdgePairMR::findTwinEdgePairs (const Mesh &mesh, float closeDist)
 definition: if A,B and C,D are close vertices, then let us name AC and BD twin edges
EdgeBitSet MR::findTwinEdges (const Mesh &mesh, float closeDist)
 finds all directed twin edges
EdgeBitSet MR::findTwinEdges (const std::vector< EdgePair > &pairs)
UndirectedEdgeBitSet MR::findTwinUndirectedEdges (const Mesh &mesh, float closeDist)
 finds all undirected twin edges
UndirectedEdgeBitSet MR::findTwinUndirectedEdges (const std::vector< EdgePair > &pairs)
UndirectedEdgeHashMap MR::findTwinUndirectedEdgeHashMap (const Mesh &mesh, float closeDist)
 provided that each edge has at most one twin, composes bidirectional mapping between twins
UndirectedEdgeHashMap MR::findTwinUndirectedEdgeHashMap (const std::vector< EdgePair > &pairs)
static int MR::CNCMachineSettings::getAxesCount ()
void MR::CNCMachineSettings::setRotationAxis (RotationAxisName paramName, const Vector3f &rotationAxis)
 rotationAxis length will be more then 0.01
const Vector3f & MR::CNCMachineSettings::getRotationAxis (RotationAxisName paramName) const
void MR::CNCMachineSettings::setRotationLimits (RotationAxisName paramName, const RotationLimits &rotationLimits)
const RotationLimitsMR::CNCMachineSettings::getRotationLimits (RotationAxisName paramName) const
void MR::CNCMachineSettings::setRotationOrder (const RotationAxesOrder &rotationAxesOrder)
 duplicated values will be removed (ABAAC - > ABC)
const RotationAxesOrderMR::CNCMachineSettings::getRotationOrder () const
void MR::CNCMachineSettings::setFeedrateIdle (float feedrateIdle)
float MR::CNCMachineSettings::getFeedrateIdle () const
void MR::CNCMachineSettings::setHomePosition (const Vector3f &homePosition)
const Vector3f & MR::CNCMachineSettings::getHomePosition () const
bool MR::CNCMachineSettings::operator== (const CNCMachineSettings &rhs)
bool MR::CNCMachineSettings::operator!= (const CNCMachineSettings &rhs)
Json::Value MR::CNCMachineSettings::saveToJson () const
bool MR::CNCMachineSettings::loadFromJson (const Json::Value &jsonValue)
constexpr MR::Color::Color () noexcept
 MR::Color::Color (NoInit) noexcept
constexpr MR::Color::Color (int r, int g, int b, int a) noexcept
constexpr MR::Color::Color (int r, int g, int b) noexcept
constexpr MR::Color::Color (float r, float g, float b, float a) noexcept
 Using a separate overload instead of a default argument to produce better C bindings.
constexpr MR::Color::Color (float r, float g, float b) noexcept
constexpr unsigned int MR::Color::getUInt32 () const noexcept
 Using a separate overload instead of a default argument to produce better C bindings.
static constexpr Color MR::Color::white () noexcept
static constexpr Color MR::Color::black () noexcept
static constexpr Color MR::Color::gray () noexcept
static constexpr Color MR::Color::red () noexcept
static constexpr Color MR::Color::green () noexcept
static constexpr Color MR::Color::blue () noexcept
static constexpr Color MR::Color::yellow () noexcept
static constexpr Color MR::Color::brown () noexcept
static constexpr Color MR::Color::purple () noexcept
static constexpr Color MR::Color::transparent () noexcept
template<typename T>
static constexpr uint8_t MR::Color::valToUint8 (T val) noexcept
template<typename T>
constexpr MR::Color::Color (const Vector3< T > &vec) noexcept
template<typename T>
constexpr MR::Color::Color (const Vector4< T > &vec) noexcept
template<typename T>
constexpr MR::Color::operator Vector4< T > () const noexcept
const uint8_t & MR::Color::operator[] (int e) const
uint8_t & MR::Color::operator[] (int e)
ColorMR::Color::operator+= (const Color &other)
ColorMR::Color::operator-= (const Color &other)
ColorMR::Color::operator*= (float m)
ColorMR::Color::operator/= (float m)
constexpr Color MR::Color::scaledAlpha (float m) const noexcept
bool MR::operator== (const Color &a, const Color &b)
bool MR::operator!= (const Color &a, const Color &b)
Color MR::operator+ (const Color &a, const Color &b)
Color MR::operator- (const Color &a, const Color &b)
Color MR::operator* (float a, const Color &b)
Color MR::operator* (const Color &b, float a)
Color MR::operator/ (const Color &b, float a)
Color MR::blend (const Color &front, const Color &back)
 MR::ColorMapAggregator< Tag >::ColorMapAggregator ()=default
void MR::ColorMapAggregator< Tag >::setDefaultColor (const Color &color)
 set default (background) color
void MR::ColorMapAggregator< Tag >::pushBack (const PartialColorMap &partitialColorMap)
 add color map after all (more priority)
void MR::ColorMapAggregator< Tag >::insert (int i, const PartialColorMap &partitialColorMap)
 insert color map before element #i (0 - minimum priority)
void MR::ColorMapAggregator< Tag >::replace (int i, const PartialColorMap &partitialColorMap)
 replace color map in #i position
void MR::ColorMapAggregator< Tag >::reset ()
 reset all accumulated color map
size_t MR::ColorMapAggregator< Tag >::getColorMapNumber ()
 get number of accumulated color maps
const PartialColorMapMR::ColorMapAggregator< Tag >::getPartialColorMap (int i)
 get partial color map map by index
void MR::ColorMapAggregator< Tag >::erase (int i, int n=1)
 erase n color map from #i
void MR::ColorMapAggregator< Tag >::setMode (AggregateMode mode)
 set color map aggregating mode
ColorMap MR::ColorMapAggregator< Tag >::aggregate (const ElementBitSet &elementBitSet)
 get aggregated color map for active elements
 MR::CombinedHistoryAction::CombinedHistoryAction (const std::string &name, const std::vector< std::shared_ptr< HistoryAction > > &actions)
 Will call action() for each actions in given order (undo in reverse, redo in forward)
virtual std::string MR::CombinedHistoryAction::name () const override
virtual void MR::CombinedHistoryAction::action (HistoryAction::Type type) override
 This function is called on history action (undo, redo, etc.)
HistoryActionsVectorMR::CombinedHistoryAction::getStack ()
const HistoryActionsVectorMR::CombinedHistoryAction::getStack () const
bool MR::CombinedHistoryAction::filter (HistoryStackFilter filteringCondition)
bool MR::CombinedHistoryAction::empty () const
virtual size_t MR::CombinedHistoryAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::Cone3< T >::Cone3 ()
 MR::Cone3< T >::Cone3 (const Line3< T > &inAxis, T inAngle, T inHeight)
Vector3< T > & MR::Cone3< T >::center (void)
 now we use an apex as center of the cone.
const Vector3< T > & MR::Cone3< T >::center (void) const
 now we use an apex as center of the cone.
Vector3< T > & MR::Cone3< T >::direction (void)
 main axis direction. It could be non normalized. For any cone point dot( point , direction ) >=0
const Vector3< T > & MR::Cone3< T >::direction (void) const
 main axis direction. It could be non normalized. For any cone point dot( point , direction ) >=0
Vector3< T > & MR::Cone3< T >::apex (void)
 return cone apex position
const Vector3< T > & MR::Cone3< T >::apex (void) const
 return cone apex position
Vector3< T > MR::Cone3< T >::projectPoint (const Vector3< T > &point) const
void MR::ConeFittingFunctor< T >::setPoints (const std::vector< MR::Vector3< T > > &pointsMR)
int MR::ConeFittingFunctor< T >::inputs () const
int MR::ConeFittingFunctor< T >::values () const
int MR::ConeFittingFunctor< T >::operator() (const InputType &x, ValueType &F) const
int MR::ConeFittingFunctor< T >::df (const InputType &x, JacobianType &J) const
 MR::Cone3Approximation< T >::Cone3Approximation ()=default
MR::Cone3Approximation< T >::solve (const std::vector< MR::Vector3< T > > &points, Cone3< T > &cone, const Cone3ApproximationParams &params={})
 returns RMS for original points
 MR::ConeObject::ConeObject ()
 Creates simple Cone object with center in zero and radius - 1.
 MR::ConeObject::ConeObject (const std::vector< Vector3f > &pointsToApprox)
 Finds best Cone to approx given points.
 MR::ConeObject::ConeObject (ConeObject &&) noexcept=default
ConeObjectMR::ConeObject::operator= (ConeObject &&) noexcept=default
static constexpr const char * MR::ConeObject::StaticTypeName () noexcept
virtual const char * MR::ConeObject::typeName () const override
static constexpr const char * MR::ConeObject::StaticClassName () noexcept
virtual std::string MR::ConeObject::className () const override
static constexpr const char * MR::ConeObject::StaticClassNameInPlural () noexcept
virtual std::string MR::ConeObject::classNameInPlural () const override
 MR::ConeObject::ConeObject (ProtectedStruct, const ConeObject &obj)
virtual std::shared_ptr< ObjectMR::ConeObject::clone () const override
virtual std::shared_ptr< ObjectMR::ConeObject::shallowClone () const override
float MR::ConeObject::getAngle (ViewportId id={}) const
 calculates cone angle from xf. It is an angle betweeh main axis and side.
Vector3f MR::ConeObject::getCenter (ViewportId id={}) const
 calculates center from xf. Center is the apex of the cone.
float MR::ConeObject::getHeight (ViewportId id={}) const
 calculates cone height from xf
Vector3f MR::ConeObject::getDirection (ViewportId id={}) const
 calculates main axis direction from xf
void MR::ConeObject::setCenter (const Vector3f &center, ViewportId id={})
 updates xf to fit given center. Center is the apex of the cone.
void MR::ConeObject::setDirection (const Vector3f &normal, ViewportId id={})
 updates xf to fit main axis
void MR::ConeObject::setHeight (float height, ViewportId id={})
 updates xf to fit cone height
void MR::ConeObject::setAngle (float angle, ViewportId id={})
 updates xf to fit given cone angle. It is an angle betweeh main axis and side
float MR::ConeObject::getBaseRadius (ViewportId id={}) const
 Computes the base base radius from the xf.
void MR::ConeObject::setBaseRadius (float radius, ViewportId id={})
 Updates the xf for the new base radius.
virtual Vector3f MR::ConeObject::getBasePoint (ViewportId id={}) const override
 Returns point considered as base for the feature.
virtual const std::vector< FeatureObjectSharedProperty > & MR::ConeObject::getAllSharedProperties () const override
 Create and generate list of bounded getters and setters for the main properties of feature object, together with prop. name for display and edit into UI.
FeatureObjectProjectPointResult MR::ConeObject::projectPoint (const Vector3f &point, ViewportId id={}) const override
 MR::ConeObject::ConeObject (const ConeObject &other)=default
virtual void MR::ConeObject::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::ConeObject::serializeFields_ (Json::Value &root) const override
virtual Expected< std::future< Expected< void > > > MR::ConeObject::serializeModel_ (const std::filesystem::path &) const override
virtual Expected< void > MR::ConeObject::deserializeModel_ (const std::filesystem::path &, ProgressCallback) override
 Reads model from file.
void MR::ConeObject::setupRenderObject_ () const override
 MR::Config::Config (Config const &)=delete
void MR::Config::operator= (Config const &)=delete
static ConfigMR::Config::instance ()
void MR::Config::reset (std::string appName)
const std::string & MR::Config::getAppName () const
 the name of the application, UTF8 encoded
void MR::Config::writeToFile ()
 writes current config to file. (implicitly called from destructor)
bool MR::Config::hasBool (const std::string &key) const
 returns true if MRColor with presented key exists
bool MR::Config::getBool (const std::string &key, bool defaultValue=false) const
 returns MRColor with presented key
void MR::Config::setBool (const std::string &key, bool keyValue)
 sets MRColor for presented key
bool MR::Config::hasColor (const std::string &key) const
 returns true if MRColor with presented key exists
Color MR::Config::getColor (const std::string &key, const Color &defaultValue=Color::black()) const
 returns MRColor with presented key
void MR::Config::setColor (const std::string &key, const Color &keyValue)
 sets MRColor for presented key
bool MR::Config::hasFileStack (const std::string &key) const
 returns true if 'recently used' files exist
FileNamesStack MR::Config::getFileStack (const std::string &key, const FileNamesStack &defaultValue=FileNamesStack()) const
 returns 'recently used' files list
void MR::Config::setFileStack (const std::string &key, const FileNamesStack &keyValue)
 sets 'recently used' files list
bool MR::Config::hasVector2i (const std::string &key) const
 returns true if Vector2i with presented key exists
Vector2i MR::Config::getVector2i (const std::string &key, const Vector2i &defaultValue=Vector2i()) const
 returns Vector2i with presented key
void MR::Config::setVector2i (const std::string &key, const Vector2i &keyValue)
 sets Vector2i for presented key
bool MR::Config::hasEnum (const Enum &enumeration, const std::string &key) const
 returns true if given enumeration value with this key exists and is correct
int MR::Config::getEnum (const Enum &enumeration, const std::string &key, int defaultValue=0) const
 returns custom enumeration value
void MR::Config::setEnum (const Enum &enumeration, const std::string &key, int keyValue)
 sets custom enumeration value
bool MR::Config::hasViewportMask (const std::string &key) const
ViewportMask MR::Config::getViewportMask (const std::string &key, ViewportMask defaultValue={}) const
void MR::Config::setViewportMask (const std::string &key, ViewportMask newValue)
bool MR::Config::hasJsonValue (const std::string &key)
 returns true if json value with this key exists
Json::Value MR::Config::getJsonValue (const std::string &key, const Json::Value &defaultValue={})
 returns custom json value
void MR::Config::setJsonValue (const std::string &key, const Json::Value &keyValue)
 sets custom json value
Json::Value MR::Config::toJson () const
 returns json with content of this config
void MR::Config::fromJson (const Json::Value &config)
 replace current config content with given one
Expected< FaceBitSet > MR::cutMeshByContour (Mesh &mesh, const Contour3f &contour, const AffineXf3f &xf={})
Expected< FaceBitSet > MR::cutMeshByContours (Mesh &mesh, const Contours3f &contours, const AffineXf3f &xf={})
Expected< std::vector< EdgePath > > MR::cutMeshByProjection (Mesh &mesh, const Contours3f &contours, const CutByProjectionSettings &settings)
 Performs orthographic projection with of given contours to mesh and cut result lines, fails if any point of contours has missed mesh on projection stage or cut contours contains self-intersections.
std::vector< FaceBitSet > MR::separateClosedContour (const Mesh &mesh, const std::vector< Vector3f > &contour, const PathMeshEdgePointCallback &cb={})
void MR::stitchContours (MeshTopology &topology, const EdgePath &c0, const EdgePath &c1)
EdgeLoop MR::cutAlongEdgeLoop (MeshTopology &topology, const EdgeLoop &c0)
EdgeLoop MR::cutAlongEdgeLoop (Mesh &mesh, const EdgeLoop &c0)
Mesh MR::makeConvexHull (const VertCoords &points, const VertBitSet &validPoints)
 computes the mesh of convex hull from given input points
Mesh MR::makeConvexHull (const Mesh &in)
Mesh MR::makeConvexHull (const PointCloud &in)
Contour2f MR::makeConvexHull (Contour2f points)
 computes the contour of convex hull from given input points
MeshTopology MR::makeCubeTopology ()
Mesh MR::makeCube (const Vector3f &size=Vector3f::diagonal(1.0f), const Vector3f &base=Vector3f::diagonal(-0.5f))
Mesh MR::makeParallelepiped (const Vector3f side[3], const Vector3f &base)
 creates parallelepiped mesh with given min-corner base and given directional vectors size
Mesh MR::makeBoxMesh (const Box3f &box)
 creates mesh visualizing a box
Mesh MR::makeCylinder (float radius=0.1f, float length=1.0f, int resolution=16)
 Z-looking.
Mesh MR::makeOpenCylinder (float radius=1, float z1=-1, float z2=1, int numCircleSegments=16)
 A hollow cylinder.
Mesh MR::makeOpenCone (float radius=1, float zApex=0, float zBase=1, int numCircleSegments=16)
 A hollow cone.
Mesh MR::makeCylinderAdvanced (float radius0=0.1f, float radius1=0.1f, float start_angle=0.0f, float arc_size=2.0f *PI_F, float length=1.0f, int resolution=16)
Mesh MR::makeCone (float radius0=0.1f, float length=1.0f, int resolution=32)
 Makes cone mesh by calling makeCylinderAdvanced with the top radius 0.
 MR::Cylinder3< T >::Cylinder3 ()
 MR::Cylinder3< T >::Cylinder3 (const Vector3< T > &inCenter, const Vector3< T > &inDirectoin, T inRadius, T inLength)
 MR::Cylinder3< T >::Cylinder3 (const Line3< T > &inAxis, T inRadius, T inLength)
Vector3< T > & MR::Cylinder3< T >::center (void)
const Vector3< T > & MR::Cylinder3< T >::center (void) const
Vector3< T > & MR::Cylinder3< T >::direction (void)
const Vector3< T > & MR::Cylinder3< T >::direction (void) const
 MR::Cylinder3Approximation< T >::Cylinder3Approximation ()
void MR::Cylinder3Approximation< T >::reset ()
MR::Cylinder3Approximation< T >::solveGeneral (const std::vector< MR::Vector3< T > > &points, Cylinder3< T > &cylinder, size_t theta=180, size_t phi=90, bool isMultithread=true)
MR::Cylinder3Approximation< T >::solveSpecificAxis (const std::vector< MR::Vector3< T > > &points, Cylinder3< T > &cylinder, MR::Vector3< T > const &cylinderAxis)
 MR::CylinderObject::CylinderObject ()
 Creates simple Cylinder object with center in zero and radius - 1.
 MR::CylinderObject::CylinderObject (const std::vector< Vector3f > &pointsToApprox)
 Finds best Cylinder to approx given points.
 MR::CylinderObject::CylinderObject (CylinderObject &&) noexcept=default
CylinderObjectMR::CylinderObject::operator= (CylinderObject &&) noexcept=default
static constexpr const char * MR::CylinderObject::StaticTypeName () noexcept
virtual const char * MR::CylinderObject::typeName () const override
static constexpr const char * MR::CylinderObject::StaticClassName () noexcept
virtual std::string MR::CylinderObject::className () const override
static constexpr const char * MR::CylinderObject::StaticClassNameInPlural () noexcept
virtual std::string MR::CylinderObject::classNameInPlural () const override
 MR::CylinderObject::CylinderObject (ProtectedStruct, const CylinderObject &obj)
virtual std::shared_ptr< ObjectMR::CylinderObject::clone () const override
virtual std::shared_ptr< ObjectMR::CylinderObject::shallowClone () const override
float MR::CylinderObject::getRadius (ViewportId id={}) const
 calculates radius from xf
Vector3f MR::CylinderObject::getCenter (ViewportId id={}) const
 calculates center from xf
void MR::CylinderObject::setRadius (float radius, ViewportId id={})
 updates xf to fit given radius
void MR::CylinderObject::setCenter (const Vector3f &center, ViewportId id={})
 updates xf to fit given center
Vector3f MR::CylinderObject::getDirection (ViewportId id={}) const
 calculates main axis direction from xf
void MR::CylinderObject::setDirection (const Vector3f &normal, ViewportId id={})
 updates xf to fit main axis
float MR::CylinderObject::getLength (ViewportId id={}) const
 calculates cylinder length from xf
void MR::CylinderObject::setLength (float length, ViewportId id={})
 updates xf to fit cylinder length
virtual Vector3f MR::CylinderObject::getBasePoint (ViewportId id={}) const override
 Returns point considered as base for the feature.
virtual const std::vector< FeatureObjectSharedProperty > & MR::CylinderObject::getAllSharedProperties () const override
 Create and generate list of bounded getters and setters for the main properties of feature object, together with prop. name for display and edit into UI.
FeatureObjectProjectPointResult MR::CylinderObject::projectPoint (const Vector3f &point, ViewportId id={}) const override
 MR::CylinderObject::CylinderObject (const CylinderObject &other)=default
virtual void MR::CylinderObject::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::CylinderObject::serializeFields_ (Json::Value &root) const override
virtual Expected< std::future< Expected< void > > > MR::CylinderObject::serializeModel_ (const std::filesystem::path &) const override
virtual Expected< void > MR::CylinderObject::deserializeModel_ (const std::filesystem::path &, ProgressCallback) override
 Reads model from file.
void MR::CylinderObject::setupRenderObject_ () const override
 MR::DenseBox::DenseBox (const std::vector< Vector3f > &points, const AffineXf3f *xf=nullptr)
 Include given points into this dense box.
 MR::DenseBox::DenseBox (const std::vector< Vector3f > &points, const std::vector< float > &weights, const AffineXf3f *xf=nullptr)
 Include given weighed points into this dense box.
 MR::DenseBox::DenseBox (const MeshPart &meshPart, const AffineXf3f *xf=nullptr)
 Include mesh part into this dense box.
 MR::DenseBox::DenseBox (const PointCloud &points, const AffineXf3f *xf=nullptr)
 Include point into this dense box.
 MR::DenseBox::DenseBox (const Polyline3 &line, const AffineXf3f *xf=nullptr)
 Include line into this dense box.
Vector3f MR::DenseBox::center () const
 returns center of dense box
Vector3f MR::DenseBox::corner (const Vector3b &index) const
bool MR::DenseBox::contains (const Vector3f &pt) const
 returns true if dense box contains given point
const Box3f & MR::DenseBox::box () const
 Access members.
const AffineXf3f & MR::DenseBox::basisXf () const
 transform box space to world space
const AffineXf3f & MR::DenseBox::basisXfInv () const
 transform world space to box space
bool MR::Dipole::addIfGoodApprox (const Vector3f &q, float betaSq, float &addTo) const
void MR::calcDipoles (Dipoles &dipoles, const AABBTree &tree, const Mesh &mesh)
 calculates dipoles for given mesh and AABB-tree
Dipoles MR::calcDipoles (const AABBTree &tree, const Mesh &mesh)
float MR::calcFastWindingNumber (const Dipoles &dipoles, const AABBTree &tree, const Mesh &mesh, const Vector3f &q, float beta, FaceId skipFace)
DirectoryIteratorMR::DirectoryIterator::operator++ ()
auto MR::DirectoryIterator::operator* () const
DirectoryRecursiveIteratorMR::DirectoryRecursiveIterator::operator++ ()
auto MR::DirectoryRecursiveIterator::operator* () const
std::filesystem::path MR::findPathWithExtension (const std::filesystem::path &pathWithoutExtension)
 given file name without final extension, finds in the same folder an existing file with same stem and any extension
bool MR::operator!= (const DirectoryIterator &a, const std::filesystem::directory_iterator &b)
bool MR::operator!= (const DirectoryRecursiveIterator &a, const std::filesystem::recursive_directory_iterator &b)
VertId MR::findDirMaxBruteForce (const Vector3f &dir, const VertCoords &points, const VertBitSet *region=nullptr)
 finds the point having the largest projection on given direction by traversing all region points
VertId MR::findDirMaxBruteForce (const Vector2f &dir, const VertCoords2 &points, const VertBitSet *region=nullptr)
 finds the point having the largest projection on given direction by traversing all region points
VertId MR::findDirMaxBruteForce (const Vector3f &dir, const PointCloud &cloud, const VertBitSet *region=nullptr)
 finds the point in the cloud having the largest projection on given direction by traversing all valid points
VertId MR::findDirMaxBruteForce (const Vector3f &dir, const Polyline3 &polyline)
 finds the vertex in the polyline having the largest projection on given direction by traversing all valid vertices
VertId MR::findDirMaxBruteForce (const Vector2f &dir, const Polyline2 &polyline)
 finds the vertex in the polyline having the largest projection on given direction by traversing all valid vertices
VertId MR::findDirMaxBruteForce (const Vector3f &dir, const MeshPart &mp)
 finds the vertex in the mesh part having the largest projection on given direction by traversing all (region) faces
VertId MR::findDirMaxBruteForce (const Vector3f &dir, const MeshVertPart &mp)
 finds the vertex in the mesh part having the largest projection on given direction by traversing all (region) vertices
MinMaxArg< float, VertId > MR::findDirMinMaxBruteForce (const Vector3f &dir, const VertCoords &points, const VertBitSet *region=nullptr)
 finds the points having the smallest and the largest projections on given direction by traversing all region points
MinMaxArg< float, VertId > MR::findDirMinMaxBruteForce (const Vector2f &dir, const VertCoords2 &points, const VertBitSet *region=nullptr)
 finds the points having the smallest and the largest projections on given direction by traversing all region points
MinMaxArg< float, VertId > MR::findDirMinMaxBruteForce (const Vector3f &dir, const PointCloud &cloud, const VertBitSet *region=nullptr)
 finds the points in the cloud having the smallest and the largest projections on given direction by traversing all valid points
MinMaxArg< float, VertId > MR::findDirMinMaxBruteForce (const Vector3f &dir, const Polyline3 &polyline)
 finds the vertex in the polyline having the smallest and the largest projections on given direction by traversing all valid vertices
MinMaxArg< float, VertId > MR::findDirMinMaxBruteForce (const Vector2f &dir, const Polyline2 &polyline)
 finds the vertex in the polyline having the smallest and the largest projections on given direction by traversing all valid vertices
MinMaxArg< float, VertId > MR::findDirMinMaxBruteForce (const Vector3f &dir, const MeshPart &mp)
 finds the vertices in the mesh part having the smallest and the largest projections on given direction by traversing all (region) faces
MinMaxArg< float, VertId > MR::findDirMinMaxBruteForce (const Vector3f &dir, const MeshVertPart &mp)
 finds the vertices in the mesh part having the smallest and the largest projections on given direction by traversing all (region) vertices
 MR::DistanceMeasurementObject::DistanceMeasurementObject ()
 The xf encodes the distance: the origin is one point, and (1,0,0) is another.
 MR::DistanceMeasurementObject::DistanceMeasurementObject (DistanceMeasurementObject &&) noexcept=default
DistanceMeasurementObjectMR::DistanceMeasurementObject::operator= (DistanceMeasurementObject &&) noexcept=default
static constexpr const char * MR::DistanceMeasurementObject::StaticTypeName () noexcept
const char * MR::DistanceMeasurementObject::typeName () const override
static constexpr const char * MR::DistanceMeasurementObject::StaticClassName () noexcept
virtual std::string MR::DistanceMeasurementObject::className () const override
static constexpr const char * MR::DistanceMeasurementObject::StaticClassNameInPlural () noexcept
virtual std::string MR::DistanceMeasurementObject::classNameInPlural () const override
 MR::DistanceMeasurementObject::DistanceMeasurementObject (ProtectedStruct, const DistanceMeasurementObject &obj)
 For std::make_shared() in clone().
std::shared_ptr< ObjectMR::DistanceMeasurementObject::clone () const override
std::shared_ptr< ObjectMR::DistanceMeasurementObject::shallowClone () const override
Vector3f MR::DistanceMeasurementObject::getWorldPoint () const
 Get the starting point in world coordinates.
Vector3f MR::DistanceMeasurementObject::getLocalPoint () const
 Get the starting point in local coordinates.
Vector3f MR::DistanceMeasurementObject::getWorldDelta () const
 The delta from the starting point to the other point.
Vector3f MR::DistanceMeasurementObject::getLocalDelta () const
virtual void MR::DistanceMeasurementObject::setLocalPoint (const MR::Vector3f &point)
 Set the start point in the local coordinates.
virtual void MR::DistanceMeasurementObject::setLocalDelta (const MR::Vector3f &delta)
 Set the delta vector in the local coordinates.
bool MR::DistanceMeasurementObject::isNegative () const
 Whether the distance should be displayed as a negative one.
virtual void MR::DistanceMeasurementObject::setIsNegative (bool value)
DistanceMode MR::DistanceMeasurementObject::getDistanceMode () const
 Whether we should draw the individual X/Y/Z deltas in addition to the distance itself.
virtual void MR::DistanceMeasurementObject::setDistanceMode (DistanceMode mode)
float MR::DistanceMeasurementObject::computeDistance () const
std::vector< std::string > MR::DistanceMeasurementObject::getInfoLines () const override
 return several info lines that can better describe the object in the UI
std::size_t MR::DistanceMeasurementObject::numComparableProperties () const override
 Implement ObjectComparableWithReference:
std::string_view MR::DistanceMeasurementObject::getComparablePropertyName (std::size_t i) const override
 i goes up to numComparableProperties(), exclusive.
std::optional< ComparablePropertyMR::DistanceMeasurementObject::computeComparableProperty (std::size_t i) const override
std::optional< ComparisonToleranceMR::DistanceMeasurementObject::getComparisonTolerence (std::size_t i) const override
void MR::DistanceMeasurementObject::setComparisonTolerance (std::size_t i, std::optional< ComparisonTolerance > newTolerance) override
std::string_view MR::DistanceMeasurementObject::getComparisonReferenceValueName (std::size_t i) const override
 i goes up to numComparisonReferenceValues(), exclusive.
ComparisonReferenceValue MR::DistanceMeasurementObject::getComparisonReferenceValue (std::size_t i) const override
void MR::DistanceMeasurementObject::setComparisonReferenceValue (std::size_t i, std::optional< ComparisonReferenceValue::Var > value) override
 MR::DistanceMeasurementObject::DistanceMeasurementObject (const DistanceMeasurementObject &other)=default
void MR::DistanceMeasurementObject::swapBase_ (Object &other) override
 swaps this object with other
void MR::DistanceMeasurementObject::serializeFields_ (Json::Value &root) const override
void MR::DistanceMeasurementObject::deserializeFields_ (const Json::Value &root) override
void MR::DistanceMeasurementObject::setupRenderObject_ () const override
void MR::DistanceMeasurementObject::onWorldXfChanged_ () override
 Emits worldXfChangedSignal, but derived classes can add additional behavior to it.
template<class T>
MR::divRound (T n, T d)
template<class T>
Vector2< T > MR::divRound (const Vector2< T > &n, T d)
 computes division n/d with rounding of each components to the nearest integer, all signs of n and d are supported
template<class T>
Vector3< T > MR::divRound (const Vector3< T > &n, T d)
 computes division n/d with rounding of each components to the nearest integer, all signs of n and d are supported
template<class T>
Vector4< T > MR::divRound (const Vector4< T > &n, T d)
 computes division n/d with rounding of each components to the nearest integer, all signs of n and d are supported
 MR::UndirectedEdgeIterator::UndirectedEdgeIterator (const MeshTopology &topology)
 creates begin iterator
 MR::UndirectedEdgeIterator::UndirectedEdgeIterator ()=default
 creates end iterator
UndirectedEdgeIteratorMR::UndirectedEdgeIterator::operator++ ()
UndirectedEdgeId MR::UndirectedEdgeIterator::operator* () const
bool MR::operator== (const UndirectedEdgeIterator &a, const UndirectedEdgeIterator &b)
bool MR::operator!= (const UndirectedEdgeIterator &a, const UndirectedEdgeIterator &b)
IteratorRange< UndirectedEdgeIteratorMR::undirectedEdges (const MeshTopology &topology)
static EdgeLengthMesh MR::EdgeLengthMesh::fromMesh (const Mesh &mesh)
 construct EdgeLengthMesh from an ordinary mesh
float MR::EdgeLengthMesh::leftCotan (EdgeId e) const
float MR::EdgeLengthMesh::cotan (UndirectedEdgeId ue) const
bool MR::EdgeLengthMesh::isDelone (UndirectedEdgeId ue, float threshold=0) const
std::optional< float > MR::EdgeLengthMesh::edgeLengthAfterFlip (EdgeId e) const
bool MR::EdgeLengthMesh::flipEdge (EdgeId e)
bool MR::VertPathInfo::isStart () const
bool MR::EdgePathsBuilderT< MetricToPenalty >::done () const
 returns true if further edge forest growth is impossible
float MR::EdgePathsBuilderT< MetricToPenalty >::doneDistance () const
 returns path length till the next candidate vertex or maximum float value if all vertices have been reached
const VertPathInfoMapMR::EdgePathsBuilderT< MetricToPenalty >::vertPathInfoMap () const
 gives read access to the map from vertex to path to it
float MR::TrivialMetricToPenalty::operator() (float metric, VertId) const
float MR::MetricToAStarPenalty::operator() (float metric, VertId v) const
 MR::EdgePathsAStarBuilder::EdgePathsAStarBuilder (const Mesh &mesh, VertId target, VertId start)
 MR::EdgePathsAStarBuilder::EdgePathsAStarBuilder (const Mesh &mesh, const MeshTriPoint &target, const MeshTriPoint &start)
 MR::EdgePoint::EdgePoint ()=default
 MR::EdgePoint::EdgePoint (EdgeId e, float a)
 MR::EdgePoint::EdgePoint (const MeshTopology &topology, VertId v)
 MR::EdgePoint::EdgePoint (const PolylineTopology &topology, VertId v)
VertId MR::EdgePoint::inVertex (const MeshTopology &topology) const
 returns valid vertex id if the point is in vertex, otherwise returns invalid id
VertId MR::EdgePoint::inVertex (const PolylineTopology &topology) const
 returns valid vertex id if the point is in vertex, otherwise returns invalid id
VertId MR::EdgePoint::getClosestVertex (const MeshTopology &topology) const
 returns one of two edge vertices, closest to this point
VertId MR::EdgePoint::getClosestVertex (const PolylineTopology &topology) const
 returns one of two edge vertices, closest to this point
bool MR::EdgePoint::inVertex () const
 returns true if the point is in a vertex
void MR::EdgePoint::moveToClosestVertex ()
 sets this to the closest end of the edge
bool MR::EdgePoint::isBd (const MeshTopology &topology, const FaceBitSet *region=nullptr) const
 returns true if the point is on the boundary of the region (or for whole mesh if region is nullptr)
bool MR::EdgePoint::valid () const
 consider this valid if the edge ID is valid
 MR::EdgePoint::operator bool () const
EdgePoint MR::EdgePoint::sym () const
 represents the same point relative to sym edge in
bool MR::EdgePoint::operator== (const EdgePoint &rhs) const =default
 returns true if two edge-points are equal including equal not-unique representation
bool MR::same (const MeshTopology &topology, const EdgePoint &lhs, const EdgePoint &rhs)
 returns true if two edge-points are equal considering different representations
 MR::EdgePointPair::EdgePointPair ()=default
 MR::EdgePointPair::EdgePointPair (EdgePoint ia, EdgePoint ib)
bool MR::EdgePointPair::operator== (const EdgePointPair &rhs) const =default
 returns true if two edge-point pairs are equal including equal not-unique representation
 MR::EdgeSegment::EdgeSegment ()=default
 MR::EdgeSegment::EdgeSegment (EdgeId e, float a=0.0f, float b=1.0f)
EdgePoint MR::EdgeSegment::edgePointA () const
 returns starting EdgePoint
EdgePoint MR::EdgeSegment::edgePointB () const
 returns ending EdgePoint
bool MR::EdgeSegment::valid () const
 returns true if the edge is valid and start point is less than end point
bool MR::EdgeSegment::operator== (const EdgeSegment &rhs) const =default
EdgeSegment MR::EdgeSegment::sym () const
 represents the same segment relative to sym edge in
Expected< MeshMR::embedStructureToTerrain (const Mesh &terrain, const Mesh &structure, const EmbeddedStructureParameters &params)
float MR::EndMillTool::getMinimalCutLength () const
 compute the minimal cut length based on the cutter parameters
Mesh MR::EndMillTool::toMesh (int horizontalResolution=32, int verticalResolution=32) const
 create a tool mesh
void MR::serializeToJson (const EndMillCutter &cutter, Json::Value &root)
void MR::serializeToJson (const EndMillTool &tool, Json::Value &root)
Expected< void > MR::deserializeFromJson (const Json::Value &root, EndMillCutter &cutter)
Expected< void > MR::deserializeFromJson (const Json::Value &root, EndMillTool &tool)
void MR::EnumNeihbourVertices::run (const MeshTopology &topology, VertId start, const VertPredicate &pred)
void MR::EnumNeihbourVertices::run (const MeshTopology &topology, const VertBitSet &start, const VertPredicate &pred)
void MR::EnumNeihbourVertices::run (const MeshTopology &topology, const std::vector< MeshTriPoint > &start, const VertPredicate &pred)
VertScalars MR::computeSpaceDistances (const Mesh &mesh, const PointOnFace &start, float range)
VertBitSet MR::findNeighborVerts (const Mesh &mesh, const PointOnFace &start, float rangeSq)
void MR::EnumNeihbourFaces::run (const MeshTopology &topology, VertId start, const FacePredicate &pred)
const char * MR::asString (ColoringType ct)
 returns string representation of enum values
void MR::expand (const MeshTopology &topology, FaceBitSet &region, int hops=1)
 adds to the region all faces within given number of hops (stars) from the initial region boundary
FaceBitSet MR::expand (const MeshTopology &topology, FaceId f, int hops)
 returns the region of all faces within given number of hops (stars) from the initial face
void MR::expand (const MeshTopology &topology, VertBitSet &region, int hops=1)
 adds to the region all vertices within given number of hops (stars) from the initial region boundary
VertBitSet MR::expand (const MeshTopology &topology, VertId v, int hops)
 returns the region of all vertices within given number of hops (stars) from the initial vertex
void MR::shrink (const MeshTopology &topology, FaceBitSet &region, int hops=1)
 removes from the region all faces within given number of hops (stars) from the initial region boundary
void MR::shrink (const MeshTopology &topology, VertBitSet &region, int hops=1)
 removes from the region all vertices within given number of hops (stars) from the initial region boundary
FaceBitSet MR::expandFaces (const MeshTopology &topology, const FaceBitSet &region, const UndirectedEdgeBitSet *stopEdges=nullptr)
FaceBitSet MR::shrinkFaces (const MeshTopology &topology, const FaceBitSet &region, const UndirectedEdgeBitSet *stopEdges=nullptr)
FaceBitSet MR::getBoundaryFaces (const MeshTopology &topology, const FaceBitSet &region)
 returns faces from given region that have at least one neighbor face with shared edge not from the region
template<class E>
MR_BIND_IGNORE auto MR::unexpected (E &&e)
MR_BIND_IGNORE std::string MR::stringOperationCanceled ()
 common message about user termination of an operation
MR_BIND_IGNORE auto MR::unexpectedOperationCanceled ()
 returns Expected error with stringOperationCanceled()
MR_BIND_IGNORE std::string MR::stringUnsupportedFileExtension ()
 common message about unknown file extension
MR_BIND_IGNORE auto MR::unexpectedUnsupportedFileExtension ()
 returns Expected error with stringUnsupportedFileExtension()
MR_BIND_IGNORE std::string MR::stringUnsupportedFileFormat ()
 common message prefix about unsupported file format
MR_BIND_IGNORE auto MR::unexpectedUnsupportedFileFormat ()
 returns Expected error with stringUnsupportedFileFormat()
IsoLines MR::extractIsolines (const MeshTopology &topology, const VertMetric &vertValues, const FaceBitSet *region=nullptr)
 extracts all iso-lines from given scalar field and iso-value=0
bool MR::hasAnyIsoline (const MeshTopology &topology, const VertMetric &vertValues, const FaceBitSet *region=nullptr)
 quickly returns true if extractIsolines produce not-empty set for the same arguments
IsoLines MR::extractIsolines (const MeshTopology &topology, const VertScalars &vertValues, float isoValue, const FaceBitSet *region=nullptr)
 extracts all iso-lines from given scalar field and iso-value
bool MR::hasAnyIsoline (const MeshTopology &topology, const VertScalars &vertValues, float isoValue, const FaceBitSet *region=nullptr)
 quickly returns true if extractIsolines produce not-empty set for the same arguments
PlaneSections MR::extractPlaneSections (const MeshPart &mp, const Plane3f &plane, UseAABBTree u=UseAABBTree::Yes)
 extracts all plane sections of given mesh
bool MR::hasAnyPlaneSection (const MeshPart &mp, const Plane3f &plane, UseAABBTree u=UseAABBTree::Yes)
 quickly returns true if extractPlaneSections produce not-empty set for the same arguments
PlaneSections MR::extractXYPlaneSections (const MeshPart &mp, float zLevel, UseAABBTree u=UseAABBTree::Yes)
 extracts all sections of given mesh with the plane z=zLevel
bool MR::hasAnyXYPlaneSection (const MeshPart &mp, float zLevel, UseAABBTree u=UseAABBTree::Yes)
 quickly returns true if extractXYPlaneSections produce not-empty set for the same arguments
std::vector< LineSegm3f > MR::findTriangleSectionsByXYPlane (const MeshPart &mp, float zLevel, std::vector< FaceId > *faces=nullptr, UseAABBTree u=UseAABBTree::Yes)
PlaneSection MR::trackSection (const MeshPart &mp, const MeshTriPoint &start, MeshTriPoint &end, const Vector3f &direction, float distance)
Expected< PlaneSectionMR::trackSection (const MeshPart &mp, const MeshTriPoint &start, const MeshTriPoint &end, const Vector3f &planePoint, bool ccw)
bool MR::isConsistentlyOriented (const MeshTopology &topology, const IsoLine &isoline)
FaceBitSet MR::getCrossedFaces (const MeshTopology &topology, const IsoLine &isoline)
 for a consistently oriented isoline, returns all faces it goes inside
Contour2f MR::planeSectionToContour2f (const Mesh &mesh, const PlaneSection &section, const AffineXf3f &meshToPlane)
 converts PlaneSections in 2D contours by computing coordinate of each point, applying given xf to it, and retaining only x and y
Contours2f MR::planeSectionsToContours2f (const Mesh &mesh, const PlaneSections &sections, const AffineXf3f &meshToPlane)
std::optional< FaceScalars > MR::calcFaceDistances (const MeshTopology &topology, const EdgeMetric &metric, const FaceBitSet &starts, const FaceDistancesSettings &settings={})
virtual MR::IFastWindingNumber::~IFastWindingNumber ()=default
virtual Expected< void > MR::IFastWindingNumber::calcFromVector (std::vector< float > &res, const std::vector< Vector3f > &points, float beta, FaceId skipFace={}, const ProgressCallback &cb={})=0
 calculates winding numbers in the points from given vector
virtual Expected< void > MR::IFastWindingNumber::calcSelfIntersections (FaceBitSet &res, float beta, const ProgressCallback &cb={})=0
 calculates winding numbers for all centers of mesh's triangles. if winding number is less than 0 or greater then 1, that face is marked as self-intersected
virtual Expected< void > MR::IFastWindingNumber::calcFromGrid (std::vector< float > &res, const Vector3i &dims, const AffineXf3f &gridToMeshXf, float beta, const ProgressCallback &cb={})=0
 calculates winding numbers in each point from a three-dimensional grid
virtual Expected< void > MR::IFastWindingNumber::calcFromGridWithDistances (std::vector< float > &res, const Vector3i &dims, const AffineXf3f &gridToMeshXf, const DistanceToMeshOptions &options, const ProgressCallback &cb)=0
 calculates distances with the sign obtained from generalized winding number in each point from a three-dimensional grid; if sqr(res) < minDistSq or sqr(res) >= maxDistSq, then NaN is returned for such point
 MR::FastWindingNumber::FastWindingNumber (const Mesh &mesh)
Expected< void > MR::FastWindingNumber::calcFromVector (std::vector< float > &res, const std::vector< Vector3f > &points, float beta, FaceId skipFace, const ProgressCallback &cb) override
 see methods' descriptions in IFastWindingNumber
Expected< void > MR::FastWindingNumber::calcSelfIntersections (FaceBitSet &res, float beta, const ProgressCallback &cb) override
 calculates winding numbers for all centers of mesh's triangles. if winding number is less than 0 or greater then 1, that face is marked as self-intersected
Expected< void > MR::FastWindingNumber::calcFromGrid (std::vector< float > &res, const Vector3i &dims, const AffineXf3f &gridToMeshXf, float beta, const ProgressCallback &cb) override
 calculates winding numbers in each point from a three-dimensional grid
float MR::FastWindingNumber::calcWithDistances (const Vector3f &p, const DistanceToMeshOptions &options)
Expected< void > MR::FastWindingNumber::calcFromGridWithDistances (std::vector< float > &res, const Vector3i &dims, const AffineXf3f &gridToMeshXf, const DistanceToMeshOptions &options, const ProgressCallback &cb) override
 calculates distances with the sign obtained from generalized winding number in each point from a three-dimensional grid; if sqr(res) < minDistSq or sqr(res) >= maxDistSq, then NaN is returned for such point
virtual MR::IFastWindingNumberByParts::~IFastWindingNumberByParts ()=default
virtual Expected< void > MR::IFastWindingNumberByParts::calcFromGridByParts (GridByPartsFunc resFunc, const Vector3i &dims, const AffineXf3f &gridToMeshXf, float beta, int layerOverlap, const ProgressCallback &cb)=0
 calculates winding numbers in each point from a three-dimensional grid
virtual Expected< void > MR::IFastWindingNumberByParts::calcFromGridWithDistancesByParts (GridByPartsFunc resFunc, const Vector3i &dims, const AffineXf3f &gridToMeshXf, const DistanceToMeshOptions &options, int layerOverlap, const ProgressCallback &cb)=0
 calculates distances with the sign obtained from generalized winding number in each point from a three-dimensional grid; if sqr(res) < minDistSq or sqr(res) >= maxDistSq, then NaN is returned for such point
template<typename F>
bool MR::forEachObjectKind (F &&func)
 Calls func, which is ( auto kind ) -> bool, for each known object kind. If it returns true, stops immediately and also returns true.
template<typename ... P>
std::shared_ptr< VisualObjectMR::makeObjectFromEnum (FeaturesObjectKind kind, P &&... params)
 Allocates an object of type kind, passing params... to its constructor.
template<typename ... P>
std::shared_ptr< VisualObjectMR::makeObjectFromClassName (std::string className, P &&... params)
 Allocates an object of type kind, passing params... to its constructor.
std::optional< Vector3f > MR::getFeatureNormal (FeatureObject *feature)
 Using forEachObjectKind the template collects a list of features for which the method ...->getNormal() is available.
std::optional< Vector3f > MR::getFeatureDirection (FeatureObject *feature)
 Using forEachObjectKind the template collects a list of features for which the method ...->getDirection() is available.
std::unordered_set< std::string > MR::getFeaturesTypeWithNormals ()
 Try to getNormal from specific feature using forEachObjectKind template. Returns nullopt is ...->getNormal() is not available for given feature type.
std::unordered_set< std::string > MR::getFeaturesTypeWithDirections ()
 Try to getDirection from specific feature using forEachObjectKind template. Returns nullopt is ...->getDirection() is not available for given feature type.
template<typename T, typename C, typename SetterFunc>
 MR::FeatureObjectSharedProperty::FeatureObjectSharedProperty (std::string name, FeaturePropertyKind kind, T(C::*m_getter)(ViewportId) const, SetterFunc m_setter)
static constexpr const char * MR::FeatureObject::StaticTypeName () noexcept
virtual const char * MR::FeatureObject::typeName () const override
static constexpr const char * MR::FeatureObject::StaticClassName () noexcept
virtual std::string MR::FeatureObject::className () const override
static constexpr const char * MR::FeatureObject::StaticClassNameInPlural () noexcept
virtual std::string MR::FeatureObject::classNameInPlural () const override
virtual const std::vector< FeatureObjectSharedProperty > & MR::FeatureObject::getAllSharedProperties () const =0
 Create and generate list of bounded getters and setters for the main properties of feature object, together with prop. name for display and edit into UI.
bool MR::FeatureObject::supportsVisualizeProperty (AnyVisualizeMaskEnum type) const override
 Returns true if this class supports the property type. Otherwise passing it to the functions below is illegal.
AllVisualizeProperties MR::FeatureObject::getAllVisualizeProperties () const override
 get all visualize properties masks
const ViewportMaskMR::FeatureObject::getVisualizePropertyMask (AnyVisualizeMaskEnum type) const override
 returns mask of viewports where given property is set
void MR::FeatureObject::serializeFields_ (Json::Value &root) const override
void MR::FeatureObject::deserializeFields_ (const Json::Value &root) override
virtual FeatureObjectProjectPointResult MR::FeatureObject::projectPoint (const Vector3f &point, ViewportId id={}) const =0
std::optional< Vector3f > MR::FeatureObject::getNormal (const Vector3f &point) const
void MR::FeatureObject::setXf (const AffineXf3f &xf, ViewportId id={}) override
void MR::FeatureObject::resetXf (ViewportId id={}) override
 forgets specific transform in given viewport (or forgets all specific transforms for {} input)
virtual Vector3f MR::FeatureObject::getBasePoint (ViewportId id={}) const
 Returns point considered as base for the feature.
Matrix3f MR::FeatureObject::getRotationMatrix (ViewportId id={}, bool *isDef=nullptr) const
Matrix3f MR::FeatureObject::getScaleShearMatrix (ViewportId id={}, bool *isDef=nullptr) const
const ColorMR::FeatureObject::getDecorationsColor (bool selected, ViewportId viewportId={}, bool *isDef=nullptr) const
virtual void MR::FeatureObject::setDecorationsColor (const Color &color, bool selected, ViewportId viewportId={})
virtual const ViewportProperty< Color > & MR::FeatureObject::getDecorationsColorForAllViewports (bool selected) const
virtual void MR::FeatureObject::setDecorationsColorForAllViewports (ViewportProperty< Color > val, bool selected)
virtual float MR::FeatureObject::getPointSize () const
 Point size and line width, for primary rendering rather than subfeatures.
virtual float MR::FeatureObject::getLineWidth () const
virtual void MR::FeatureObject::setPointSize (float pointSize)
virtual void MR::FeatureObject::setLineWidth (float lineWidth)
virtual float MR::FeatureObject::getSubfeaturePointSize () const
 Point size and line width, for subfeatures rather than primary rendering.
virtual float MR::FeatureObject::getSubfeatureLineWidth () const
virtual void MR::FeatureObject::setSubfeaturePointSize (float pointSize)
virtual void MR::FeatureObject::setSubfeatureLineWidth (float lineWidth)
virtual float MR::FeatureObject::getMainFeatureAlpha () const
 Per-component alpha multipliers. The global alpha is multiplied by thise.
virtual float MR::FeatureObject::getSubfeatureAlphaPoints () const
virtual float MR::FeatureObject::getSubfeatureAlphaLines () const
virtual float MR::FeatureObject::getSubfeatureAlphaMesh () const
virtual void MR::FeatureObject::setMainFeatureAlpha (float alpha)
virtual void MR::FeatureObject::setSubfeatureAlphaPoints (float alpha)
virtual void MR::FeatureObject::setSubfeatureAlphaLines (float alpha)
virtual void MR::FeatureObject::setSubfeatureAlphaMesh (float alpha)
 MR::FeatureObject::FeatureObject (int numDimensions)
 numDimensions is 0 for points, 1 for lines, 2 for surface meshes. We don't use 3 at the moment.
void MR::FeatureObject::setAllVisualizeProperties_ (const AllVisualizeProperties &properties, std::size_t &pos) override
Expected< AffineXf3f > MR::refineFeatureObject (const FeatureObject &featObj, const Mesh &mesh, const RefineParameters &params={})
 Recalculate the feature object's position so it would better fit with the given mesh.
Expected< AffineXf3f > MR::refineFeatureObject (const FeatureObject &featObj, const PointCloud &pointCloud, const RefineParameters &params={})
 Recalculate the feature object's position so it would better fit with the given point cloud.
ConeSegment MR::Features::Primitives::Plane::intersectWithPlane (const Plane &other) const
 Returns an infinite line, with the center in a sane location.
Sphere MR::Features::Primitives::Plane::intersectWithLine (const ConeSegment &line) const
bool MR::Features::Primitives::ConeSegment::isZeroRadius () const
bool MR::Features::Primitives::ConeSegment::isCircle () const
float MR::Features::Primitives::ConeSegment::length () const
 Returns the length. Can be infinite.
Sphere MR::Features::Primitives::ConeSegment::centerPoint () const
ConeSegment MR::Features::Primitives::ConeSegment::extendToInfinity (bool negative) const
 Extends the object to infinity in one direction. The radius in the extended direction becomes equal to the radius in the opposite direction.
ConeSegment MR::Features::Primitives::ConeSegment::extendToInfinity () const
ConeSegment MR::Features::Primitives::ConeSegment::untruncateCone () const
 Untruncates a truncated cone. If it's not a cone at all, returns the object unchanged and triggers an assertion.
ConeSegment MR::Features::Primitives::ConeSegment::axis () const
 Returns a finite axis. For circles, you might want to immediately extendToInfinity() it.
Sphere MR::Features::Primitives::ConeSegment::basePoint (bool negative) const
 Returns a center of one of the two base circles.
Plane MR::Features::Primitives::ConeSegment::basePlane (bool negative) const
 Returns one of the two base planes.
ConeSegment MR::Features::Primitives::ConeSegment::baseCircle (bool negative) const
 Returns one of the two base circles.
Primitives::Sphere MR::Features::toPrimitive (const Vector3f &point)
 Those map various MR types to our primitives. Some of those are identity functions.
Primitives::Sphere MR::Features::toPrimitive (const Sphere3f &sphere)
Primitives::ConeSegment MR::Features::toPrimitive (const Line3f &line)
Primitives::ConeSegment MR::Features::toPrimitive (const LineSegm3f &segm)
Primitives::ConeSegment MR::Features::toPrimitive (const Cylinder3f &cyl)
Primitives::ConeSegment MR::Features::toPrimitive (const Cone3f &cone)
Primitives::ConeSegment MR::Features::primitiveCircle (const Vector3f &point, const Vector3f &normal, float rad)
 normal doesn't need to be normalized.
Primitives::ConeSegment MR::Features::primitiveCylinder (const Vector3f &a, const Vector3f &b, float rad)
 a and b are centers of the sides.
Primitives::ConeSegment MR::Features::primitiveCone (const Vector3f &a, const Vector3f &b, float rad)
 a is the center of the base, b is the pointy end.
std::optional< Primitives::VariantMR::Features::primitiveFromObject (const Object &object)
 Returns null if the object type is unknown. This overload ignores the parent xf.
std::optional< Primitives::VariantMR::Features::primitiveFromObjectWithWorldXf (const Object &object)
 Returns null if the object type is unknown. This overload respects the parent's worldXf().
std::shared_ptr< FeatureObjectMR::Features::primitiveToObject (const Primitives::Variant &primitive, float infiniteExtent)
Primitives::Sphere MR::Features::transformPrimitive (const AffineXf3f &xf, const Primitives::Sphere &primitive)
Primitives::Plane MR::Features::transformPrimitive (const AffineXf3f &xf, const Primitives::Plane &primitive)
Primitives::ConeSegment MR::Features::transformPrimitive (const AffineXf3f &xf, const Primitives::ConeSegment &primitive)
Primitives::Variant MR::Features::transformPrimitive (const AffineXf3f &xf, const Primitives::Variant &primitive)
 MR::Features::MeasureResult::BasicPart::operator bool () const
Vector3f MR::Features::MeasureResult::Distance::closestPointFor (bool b) const
float MR::Features::MeasureResult::Distance::distanceAlongAxis (int i) const
float MR::Features::MeasureResult::Distance::distanceAlongAxisAbs (int i) const
Vector3f MR::Features::MeasureResult::Angle::pointFor (bool b) const
Vector3f MR::Features::MeasureResult::Angle::dirFor (bool b) const
 ^
bool MR::Features::MeasureResult::Angle::isSurfaceNormalFor (bool b) const
float MR::Features::MeasureResult::Angle::computeAngleInRadians () const
void MR::Features::MeasureResult::swapObjects ()
 Modifies the object to swap A and B;.
std::string_view MR::Features::toString (MeasureResult::Status status)
 MeasureResult::Status enum to string.
std::string MR::Features::Traits::Unary< Primitives::Sphere >::name (const Primitives::Sphere &prim) const
std::string MR::Features::Traits::Unary< Primitives::ConeSegment >::name (const Primitives::ConeSegment &prim) const
std::string MR::Features::Traits::Unary< Primitives::Plane >::name (const Primitives::Plane &prim) const
MeasureResult MR::Features::Traits::Binary< Primitives::Sphere, Primitives::Sphere >::measure (const Primitives::Sphere &a, const Primitives::Sphere &b) const
MeasureResult MR::Features::Traits::Binary< Primitives::ConeSegment, Primitives::Sphere >::measure (const Primitives::ConeSegment &a, const Primitives::Sphere &b) const
MeasureResult MR::Features::Traits::Binary< Primitives::Plane, Primitives::Sphere >::measure (const Primitives::Plane &a, const Primitives::Sphere &b) const
MeasureResult MR::Features::Traits::Binary< Primitives::ConeSegment, Primitives::ConeSegment >::measure (const Primitives::ConeSegment &a, const Primitives::ConeSegment &b) const
MeasureResult MR::Features::Traits::Binary< Primitives::Plane, Primitives::ConeSegment >::measure (const Primitives::Plane &a, const Primitives::ConeSegment &b) const
MeasureResult MR::Features::Traits::Binary< Primitives::Plane, Primitives::Plane >::measure (const Primitives::Plane &a, const Primitives::Plane &b) const
template<typename T>
std::string MR::Features::name (const T &primitive)
 Get name of a Primitives::... class (can depend on its parameters).
std::string MR::Features::name (const Primitives::Variant &var)
 Same but for a variant.
template<typename A, typename B>
requires MeasureSupported<A, B>
MeasureResult MR::Features::measure (const A &a, const B &b)
 Measures stuff between two primitives. (Two types from Primitives::....)
template<typename B>
MeasureResult MR::Features::measure (const Primitives::Variant &a, const B &b)
 Same, but with a variant as the first argument.
template<typename A>
MeasureResult MR::Features::measure (const A &a, const Primitives::Variant &b)
 Same, but with a variant as the second argument.
MeasureResult MR::Features::measure (const Primitives::Variant &a, const Primitives::Variant &b)
 Same, but with variants as both argument.
 MR::FewSmallest< T >::FewSmallest ()
 MR::FewSmallest< T >::FewSmallest (size_t maxElms)
 configure the object to store at most given number of elements
void MR::FewSmallest< T >::reset (size_t maxElms)
 clears the content and reconfigure the object to store at most given number of elements
size_t MR::FewSmallest< T >::maxElms () const
 returns the maximum number of elements to be stored here
bool MR::FewSmallest< T >::empty () const
 returns whether the container is currently empty
size_t MR::FewSmallest< T >::size () const
 returns current number of stored element
bool MR::FewSmallest< T >::full () const
 returns whether we have already maximum number of elements stored
const std::vector< T > & MR::FewSmallest< T >::get () const
 returns the smallest elements found so far
const T & MR::FewSmallest< T >::top () const
 returns the largest among stored smallest elements
const T & MR::FewSmallest< T >::topOr (const T &emptyRes) const
 returns the largest among stored smallest elements or given element if this is empty
void MR::FewSmallest< T >::push (T t)
 considers one more element, storing it if it is within the smallest
void MR::FewSmallest< T >::clear ()
 removes all stored elements
MR_BIND_IGNORE FILE * MR::fopen (const std::filesystem::path &filename, const char *mode)
 this version of fopen unlike std::fopen supports unicode file names on Windows
 MR::File::File ()=default
 MR::File::File (const File &)=delete
 MR::File::File (File &&r)
 MR::File::File (const std::filesystem::path &filename, const char *mode)
 MR::File::~File ()
FileMR::File::operator= (const File &)=delete
FileMR::File::operator= (File &&r)
 MR::File::operator FILE * () const
FILE * MR::File::open (const std::filesystem::path &filename, const char *mode)
void MR::File::close ()
void MR::File::detach ()
 the user takes control over the handle
void MR::File::attach (FILE *h)
 gives control over the handle to this object
FaceBitSet MR::fillContourLeft (const MeshTopology &topology, const EdgePath &contour)
FaceBitSet MR::fillContourLeft (const MeshTopology &topology, const std::vector< EdgePath > &contours)
Expected< void > MR::fillContours2D (Mesh &mesh, const std::vector< EdgeId > &holeRepresentativeEdges)
 fill holes with border in same plane (i.e. after cut by plane)
AffineXf3f MR::getXfFromOxyPlane (const Contours3f &contours)
AffineXf3f MR::getXfFromOxyPlane (const Mesh &mesh, const std::vector< EdgePath > &paths)
Expected< void > MR::fillPlanarHole (ObjectMeshData &data, std::vector< EdgeLoop > &holeContours)
FaceBitSet MR::fillHoleNicely (Mesh &mesh, EdgeId holeEdge, const FillHoleNicelySettings &settings)
 fills a hole in mesh specified by one of its edge, optionally subdivides new patch on smaller triangles, optionally make smooth connection with existing triangles outside the hole
FaceBitSet MR::stitchHolesNicely (Mesh &mesh, EdgeId hole0Edge, EdgeId hole1Edge, const StitchHolesNicelySettings &settings)
void MR::filterCreaseEdges (const Mesh &mesh, UndirectedEdgeBitSet &creaseEdges, float critLength, bool filterComponents=true, bool filterBranches=false)
Expected< FaceBitSet > MR::SelfIntersections::getFaces (const Mesh &mesh, bool touchIsIntersection=true, ProgressCallback cb={})
 Find all self-intersections faces component-wise.
Expected< void > MR::SelfIntersections::fix (Mesh &mesh, const Settings &settings)
 Finds and fixes self-intersections per component:
 MR::FreeFormDeformer::FreeFormDeformer (VertCoords &coords, const VertBitSet &valid)
 Only set mesh ref.
 MR::FreeFormDeformer::FreeFormDeformer (Mesh &mesh, const VertBitSet *region=nullptr)
void MR::FreeFormDeformer::init (const Vector3i &resolution=Vector3i::diagonal(2), const Box3f &initialBox=Box3f())
void MR::FreeFormDeformer::setRefGridPointPosition (const Vector3i &coordOfPointInGrid, const Vector3f &newPos)
 Updates ref grid point position.
const Vector3f & MR::FreeFormDeformer::getRefGridPointPosition (const Vector3i &coordOfPointInGrid) const
 Gets ref grid point position.
void MR::FreeFormDeformer::apply () const
Vector3f MR::FreeFormDeformer::applySinglePoint (const Vector3f &point) const
 Apply updated grid to given point.
int MR::FreeFormDeformer::getIndex (const Vector3i &coordOfPointInGrid) const
 Get one dimension index by grid coord.
Vector3i MR::FreeFormDeformer::getCoord (int index) const
 Get grid coord by index.
const std::vector< Vector3f > & MR::FreeFormDeformer::getAllRefGridPositions () const
void MR::FreeFormDeformer::setAllRefGridPositions (const std::vector< Vector3f > &refPoints)
const Vector3i & MR::FreeFormDeformer::getResolution () const
 MR::FreeFormBestFit::FreeFormBestFit (const Box3d &box, const Vector3i &resolution=Vector3i::diagonal(2))
 initialize the class, compute cached values and reserve space for matrices
void MR::FreeFormBestFit::addPair (const Vector3d &src, const Vector3d &tgt, double w=1.0)
 add pair of source and target point to accumulator
void MR::FreeFormBestFit::addPair (const Vector3f &src, const Vector3f &tgt, float w=1.0f)
void MR::FreeFormBestFit::addOther (const FreeFormBestFit &other)
 adds other instance of FreeFormBestFit if it has same ref grid
void MR::FreeFormBestFit::setStabilizer (double stabilizer)
double MR::FreeFormBestFit::getStabilizer () const
std::vector< Vector3f > MR::FreeFormBestFit::findBestDeformationReferenceGrid ()
 finds best grid points positions to align source points to target points
std::vector< Vector3f > MR::makeFreeFormOriginGrid (const Box3f &box, const Vector3i &resolution)
 Returns positions of grid points in given box with given resolution.
std::vector< Vector3f > MR::findBestFreeformDeformation (const Box3f &box, const std::vector< Vector3f > &source, const std::vector< Vector3f > &target, const Vector3i &resolution=Vector3i::diagonal(2), const AffineXf3f *samplesToBox=nullptr)
constexpr MR::FunctionRef< R(Args...)>::FunctionRef () noexcept=delete
constexpr MR::FunctionRef< R(Args...)>::FunctionRef (const FunctionRef &rhs) noexcept=default
template<typename F, std::enable_if_t< std::is_invocable_r_v< R, F &&, Args... > > * = nullptr>
constexpr MR::FunctionRef< R(Args...)>::FunctionRef (F &&f) noexcept
constexpr FunctionRefMR::FunctionRef< R(Args...)>::operator= (const FunctionRef &rhs) noexcept=default
template<typename F, std::enable_if_t< std::is_invocable_r_v< R, F &&, Args... > > * = nullptr>
constexpr FunctionRefMR::FunctionRef< R(Args...)>::operator= (F &&f) noexcept
constexpr void MR::FunctionRef< R(Args...)>::swap (FunctionRef &rhs) noexcept
MR::FunctionRef< R(Args...)>::operator() (Args... args) const
template<typename R, typename... Args>
constexpr void MR::swap (FunctionRef< R(Args...)> &lhs, FunctionRef< R(Args...)> &rhs) noexcept
bool MR::GcodeProcessor::MoveAction::valid () const
 return true if operation was parsed without warnings
 MR::GcodeProcessor::MoveAction::operator bool () const
void MR::GcodeProcessor::reset ()
 reset internal states
void MR::GcodeProcessor::setGcodeSource (const GcodeSource &gcodeSource)
 set g-code source
std::vector< MoveActionMR::GcodeProcessor::processSource ()
 process all lines g-code source and generate corresponding move actions
MoveAction MR::GcodeProcessor::processLine (const std::string_view &line, std::vector< Command > &externalStorage)
void MR::GcodeProcessor::setCNCMachineSettings (const CNCMachineSettings &settings)
 settings
const CNCMachineSettingsMR::GcodeProcessor::getCNCMachineSettings ()
VertId MR::Graph::EndVertices::otherEnd (VertId a) const
 v0 < v1
void MR::Graph::EndVertices::replaceEnd (VertId what, VertId with)
auto MR::Graph::EndVertices::operator<=> (const EndVertices &) const =default
void MR::Graph::construct (NeighboursPerVertex neighboursPerVertex, EndsPerEdge endsPerEdge)
 constructs the graph from all valid vertices and edges
size_t MR::Graph::vertSize () const
 returns the number of vertex records, including invalid ones
const VertBitSetMR::Graph::validVerts () const
 returns all valid vertices in the graph
bool MR::Graph::valid (VertId v) const
 returns true if given vertex is valid
size_t MR::Graph::edgeSize () const
 returns the number of edge records, including invalid ones
const EdgeBitSetMR::Graph::validEdges () const
 returns all valid edges in the graph
bool MR::Graph::valid (EdgeId e) const
 returns true if given edge is valid
const NeighboursMR::Graph::neighbours (VertId v) const
 returns all edges adjacent to given vertex
const EndVerticesMR::Graph::ends (EdgeId e) const
 returns the ends of given edge
EdgeId MR::Graph::findEdge (VertId a, VertId b) const
 finds and returns edge between vertices a and b; returns invalid edge otherwise
bool MR::Graph::areNeighbors (VertId a, VertId b) const
 returns true if the vertices a and b are neighbors
void MR::Graph::merge (VertId remnant, VertId dead, std::function< void(EdgeId remnant, EdgeId dead)> onMergeEdges)
bool MR::Graph::checkValidity () const
 verifies that all internal data structures are valid
std::optional< VertBitSet > MR::verticesGridSampling (const MeshPart &mp, float voxelSize, const ProgressCallback &cb={})
std::optional< VertBitSet > MR::pointGridSampling (const PointCloudPart &pcp, float voxelSize, const ProgressCallback &cb={})
std::optional< MultiObjsSamplesMR::multiModelGridSampling (const Vector< ModelPointsData, ObjId > &models, float voxelSize, const ProgressCallback &cb={})
 MR::Histogram::Histogram ()=default
 MR::Histogram::Histogram (float min, float max, size_t size)
 Initialize histogram with minimum and maximum values, and number of bins.
void MR::Histogram::addSample (float sample, size_t count=1)
 Adds sample to corresponding bin.
void MR::Histogram::addHistogram (const Histogram &hist)
 Adds bins of input hist to this.
const std::vector< size_t > & MR::Histogram::getBins () const
 Gets bins.
float MR::Histogram::getMin () const
 Gets minimum value of histogram.
float MR::Histogram::getMax () const
 Gets maximum value of histogram.
size_t MR::Histogram::getBinId (float sample) const
 Gets id of bin that inherits sample.
std::pair< float, float > MR::Histogram::getBinMinMax (size_t binId) const
 Gets minimum and maximum of diapason inherited by bin.
size_t MR::Histogram::heapBytes () const
 returns the amount of memory this object occupies on heap
virtual MR::HistoryAction::~HistoryAction ()=default
virtual std::string MR::HistoryAction::name () const =0
virtual void MR::HistoryAction::action (Type actionType)=0
 This function is called on history action (undo, redo, etc.)
virtual size_t MR::HistoryAction::heapBytes () const =0
 returns the amount of memory this object occupies on heap
std::pair< bool, int > MR::filterHistoryActionsVector (HistoryActionsVector &historyVector, HistoryStackFilter filteringCondition, size_t firstRedoIndex=0, bool deepFiltering=true)
 Remove actions from history actions vector that match the condition.
 MR::IPointPairs::IPointPairs ()=default
 required to declare explicitly to avoid warnings
 MR::IPointPairs::IPointPairs (const IPointPairs &)=default
IPointPairsMR::IPointPairs::operator= (const IPointPairs &)=default
 MR::IPointPairs::IPointPairs (IPointPairs &&) noexcept=default
IPointPairsMR::IPointPairs::operator= (IPointPairs &&) noexcept=default
virtual MR::IPointPairs::~IPointPairs ()=default
virtual const ICPPairDataMR::IPointPairs::operator[] (size_t) const =0
virtual ICPPairDataMR::IPointPairs::operator[] (size_t)=0
virtual size_t MR::IPointPairs::size () const =0
virtual const ICPPairDataMR::PointPairs::operator[] (size_t idx) const override
virtual ICPPairDataMR::PointPairs::operator[] (size_t idx) override
virtual size_t MR::PointPairs::size () const override
size_t MR::getNumSamples (const IPointPairs &pairs)
 returns the number of samples able to form pairs
size_t MR::getNumActivePairs (const IPointPairs &pairs)
 computes the number of active pairs
float MR::NumSum::rootMeanSqF () const
NumSum MR::getSumSqDistToPoint (const IPointPairs &pairs, std::optional< double > inaccuracy={})
NumSum MR::getSumSqDistToPlane (const IPointPairs &pairs, std::optional< double > inaccuracy={})
float MR::getMeanSqDistToPoint (const IPointPairs &pairs)
 computes root-mean-square deviation between points
float MR::getMeanSqDistToPlane (const IPointPairs &pairs)
 computes root-mean-square deviation from points to target planes
std::string MR::getICPStatusInfo (int iterations, ICPExitType exitType)
 returns status info string
AffineXf3d MR::getAligningXf (const PointToPlaneAligningTransform &p2pl, ICPMode mode, float angleLimit, float scaleLimit, const Vector3f &fixedRotationAxis)
 given prepared (p2pl) object, finds the best transformation from it of given type with given limitations on rotation angle and global scale
size_t MR::deactivateFarPairs (IPointPairs &pairs, float maxDistSq)
 reset active bit if pair distance is further than maxDistSq
void MR::updatePointPairs (PointPairs &pairs, const MeshOrPointsXf &src, const MeshOrPointsXf &tgt, float cosThreshold, float distThresholdSq, bool mutualClosest)
 in each pair updates the target data and performs basic filtering (activation)
 MR::ICP::ICP (const MeshOrPoints &flt, const MeshOrPoints &ref, const AffineXf3f &fltXf, const AffineXf3f &refXf, const VertBitSet &fltSamples={}, const VertBitSet &refSamples={})
 MR::ICP::ICP (const MeshOrPointsXf &flt, const MeshOrPointsXf &ref, const VertBitSet &fltSamples={}, const VertBitSet &refSamples={})
 MR::ICP::ICP (const MeshOrPoints &flt, const MeshOrPoints &ref, const AffineXf3f &fltXf, const AffineXf3f &refXf, float samplingVoxelSize)
 MR::ICP::ICP (const MeshOrPointsXf &flt, const MeshOrPointsXf &ref, float samplingVoxelSize)
void MR::ICP::setParams (const ICPProperties &prop)
 tune algorithm params before run calculateTransformation()
void MR::ICP::setCosineLimit (const float cos)
void MR::ICP::setDistanceLimit (const float dist)
void MR::ICP::setBadIterCount (const int iter)
void MR::ICP::setFarDistFactor (const float factor)
void MR::ICP::setFltSamples (const VertBitSet &fltSamples)
 select pairs with origin samples on floating object
void MR::ICP::sampleFltPoints (float samplingVoxelSize)
void MR::ICP::setRefSamples (const VertBitSet &refSamples)
 select pairs with origin samples on reference object
void MR::ICP::sampleRefPoints (float samplingVoxelSize)
void MR::ICP::samplePoints (float samplingVoxelSize)
 select pairs with origin samples on both objects
MR_BIND_IGNORE void MR::ICP::recomputeBitSet (float fltSamplingVoxelSize)
void MR::ICP::setXfs (const AffineXf3f &fltXf, const AffineXf3f &refXf)
 sets to-world transformations both for floating and reference objects
void MR::ICP::setFloatXf (const AffineXf3f &fltXf)
 sets to-world transformation for the floating object
AffineXf3f MR::ICP::autoSelectFloatXf ()
void MR::ICP::updatePointPairs ()
 recompute point pairs after manual change of transformations or parameters
const ICPPropertiesMR::ICP::getParams () const
std::string MR::ICP::getStatusInfo () const
size_t MR::ICP::getNumSamples () const
 returns status info string
size_t MR::ICP::getNumActivePairs () const
 computes the number of active point pairs
float MR::ICP::getMeanSqDistToPoint () const
 computes root-mean-square deviation between points
float MR::ICP::getMeanSqDistToPlane () const
 computes root-mean-square deviation from points to target planes
const PointPairsMR::ICP::getFlt2RefPairs () const
 returns current pairs formed from samples on floating object and projections on reference object
const PointPairsMR::ICP::getRef2FltPairs () const
 returns current pairs formed from samples on reference object and projections on floating object
AffineXf3f MR::ICP::calculateTransformation ()
constexpr MR::Id< T >::Id () noexcept
 the type used for internal representation of Id
 MR::Id< T >::Id (NoInit) noexcept
template<typename U = int, std::enable_if_t< std::is_integral_v< U >, std::nullptr_t > = nullptr>
constexpr MR::Id< T >::Id (U i) noexcept
constexpr MR::Id< T >::operator ValueType () const
constexpr bool MR::Id< T >::valid () const
constexpr MR::Id< T >::operator bool () const
constexpr ValueTypeMR::Id< T >::get () noexcept
constexpr bool MR::Id< T >::operator== (Id b) const
constexpr bool MR::Id< T >::operator!= (Id b) const
constexpr bool MR::Id< T >::operator< (Id b) const
template<typename U>
bool MR::Id< T >::operator== (Id< U > b) const =delete
template<typename U>
bool MR::Id< T >::operator!= (Id< U > b) const =delete
template<typename U>
bool MR::Id< T >::operator< (Id< U > b) const =delete
constexpr IdMR::Id< T >::operator-- ()
constexpr IdMR::Id< T >::operator++ ()
constexpr Id MR::Id< T >::operator-- (int)
constexpr Id MR::Id< T >::operator++ (int)
constexpr IdMR::Id< T >::operator-= (ValueType a)
constexpr IdMR::Id< T >::operator+= (ValueType a)
 MR::NoInitId< T >::NoInitId ()
 MR::NoInitId< T >::NoInitId (Id< T > id)
constexpr MR::Id< EdgeTag >::Id () noexcept
 the type used for internal representation of Id
 MR::Id< EdgeTag >::Id (NoInit) noexcept
constexpr MR::Id< EdgeTag >::Id (UndirectedEdgeId u) noexcept
constexpr MR::Id< EdgeTag >::Id (ValueType i) noexcept
constexpr MR::Id< EdgeTag >::Id (unsigned int i) noexcept
constexpr MR::Id< EdgeTag >::Id (size_t i) noexcept
constexpr MR::Id< EdgeTag >::operator ValueType () const
constexpr bool MR::Id< EdgeTag >::valid () const
constexpr MR::Id< EdgeTag >::operator bool () const
constexpr ValueTypeMR::Id< EdgeTag >::get () noexcept
constexpr Id MR::Id< EdgeTag >::sym () const
 returns identifier of the edge with same ends but opposite orientation
constexpr bool MR::Id< EdgeTag >::even () const
 among each pair of sym-edges: one is always even and the other is odd
constexpr bool MR::Id< EdgeTag >::odd () const
constexpr UndirectedEdgeId MR::Id< EdgeTag >::undirected () const
 returns unique identifier of the edge ignoring its direction
constexpr MR::Id< EdgeTag >::operator UndirectedEdgeId () const
constexpr bool MR::Id< EdgeTag >::operator== (Id b) const
constexpr bool MR::Id< EdgeTag >::operator!= (Id b) const
constexpr bool MR::Id< EdgeTag >::operator< (Id b) const
template<typename U>
bool MR::Id< EdgeTag >::operator== (Id< U > b) const =delete
template<typename U>
bool MR::Id< EdgeTag >::operator!= (Id< U > b) const =delete
template<typename U>
bool MR::Id< EdgeTag >::operator< (Id< U > b) const =delete
constexpr IdMR::Id< EdgeTag >::operator-- ()
constexpr IdMR::Id< EdgeTag >::operator++ ()
constexpr Id MR::Id< EdgeTag >::operator-- (int)
constexpr Id MR::Id< EdgeTag >::operator++ (int)
constexpr IdMR::Id< EdgeTag >::operator-= (ValueType a)
constexpr IdMR::Id< EdgeTag >::operator+= (ValueType a)
constexpr MR::Id< VoxelTag >::Id () noexcept
 the type used for internal representation of Id
 MR::Id< VoxelTag >::Id (NoInit) noexcept
constexpr MR::Id< VoxelTag >::Id (ValueType i) noexcept
constexpr MR::Id< VoxelTag >::Id (int) noexcept=delete
constexpr MR::Id< VoxelTag >::operator ValueType () const
constexpr bool MR::Id< VoxelTag >::valid () const
constexpr MR::Id< VoxelTag >::operator bool () const
constexpr ValueTypeMR::Id< VoxelTag >::get () noexcept
constexpr bool MR::Id< VoxelTag >::operator== (Id b) const
constexpr bool MR::Id< VoxelTag >::operator!= (Id b) const
constexpr bool MR::Id< VoxelTag >::operator< (Id b) const
template<typename U>
bool MR::Id< VoxelTag >::operator== (Id< U > b) const =delete
template<typename U>
bool MR::Id< VoxelTag >::operator!= (Id< U > b) const =delete
template<typename U>
bool MR::Id< VoxelTag >::operator< (Id< U > b) const =delete
constexpr IdMR::Id< VoxelTag >::operator-- ()
constexpr IdMR::Id< VoxelTag >::operator++ ()
constexpr Id MR::Id< VoxelTag >::operator-- (int)
constexpr Id MR::Id< VoxelTag >::operator++ (int)
constexpr IdMR::Id< VoxelTag >::operator-= (ValueType a)
constexpr IdMR::Id< VoxelTag >::operator+= (ValueType a)
template<typename T>
constexpr Id< T > MR::operator+ (Id< T > id, int a)
template<typename T>
constexpr Id< T > MR::operator+ (Id< T > id, unsigned int a)
template<typename T>
constexpr Id< T > MR::operator+ (Id< T > id, size_t a)
template<typename T>
constexpr Id< T > MR::operator- (Id< T > id, int a)
template<typename T>
constexpr Id< T > MR::operator- (Id< T > id, unsigned int a)
template<typename T>
constexpr Id< T > MR::operator- (Id< T > id, size_t a)
constexpr FaceId MR::operator""_f (unsigned long long i) noexcept
constexpr VertId MR::operator""_v (unsigned long long i) noexcept
constexpr EdgeId MR::operator""_e (unsigned long long i) noexcept
constexpr UndirectedEdgeId MR::operator""_ue (unsigned long long i) noexcept
constexpr VoxelId MR::operator""_vox (unsigned long long i) noexcept
bool MR::MeshBuilder::equalVector3f::operator() (const Vector3f &a, const Vector3f &b) const
void MR::MeshBuilder::VertexIdentifier::reserve (size_t numTris)
 prepare identification of vertices from given this number of triangles
void MR::MeshBuilder::VertexIdentifier::addTriangles (const std::vector< Triangle3f > &buffer)
 identifies vertices from a chunk of triangles
size_t MR::MeshBuilder::VertexIdentifier::numTris () const
 returns the number of triangles added so far
Triangulation MR::MeshBuilder::VertexIdentifier::takeTriangulation ()
 obtains triangulation with vertex ids
VertCoords MR::MeshBuilder::VertexIdentifier::takePoints ()
 obtains coordinates of unique points in the order of vertex ids
ColorMR::Image::operator[] (const Vector2i &p)
 fetches some texture element specified by integer coordinates
Color MR::Image::operator[] (const Vector2i &p) const
size_t MR::Image::heapBytes () const
 returns the amount of memory this object occupies on heap
Color MR::Image::sampleDiscrete (const UVCoord &pos) const
Color MR::Image::sampleBilinear (const UVCoord &pos) const
Color MR::Image::sample (FilterType filter, const UVCoord &pos) const
bool MR::ShellVertexInfo::valid () const
 returns true if shell vertex is in range, does not project on boundary and located on proper side
ShellVertexInfo MR::classifyShellVert (const MeshPart &mp, const Vector3f &shellPoint, const FindInnerShellSettings &settings={})
VertBitSet MR::findInnerShellVerts (const MeshPart &mp, const Mesh &shell, const FindInnerShellSettings &settings={})
FaceBitSet MR::findInnerShellFacesWithSplits (const MeshPart &mp, Mesh &shell, const FindInnerShellSettings &settings={})
const T & MR::InplaceStack< T, N >::top () const
T & MR::InplaceStack< T, N >::top ()
bool MR::InplaceStack< T, N >::empty () const
size_t MR::InplaceStack< T, N >::size () const
void MR::InplaceStack< T, N >::push (const T &value)
void MR::InplaceStack< T, N >::push (T &&value)
void MR::InplaceStack< T, N >::pop ()
ContinuousContours MR::orderIntersectionContours (const MeshTopology &topologyA, const MeshTopology &topologyB, const PreciseCollisionResult &intersections)
ContinuousContours MR::orderSelfIntersectionContours (const MeshTopology &topology, const std::vector< EdgeTri > &intersections)
MR_BIND_IGNORE Contours3f MR::extractIntersectionContours (const Mesh &meshA, const Mesh &meshB, const ContinuousContours &orientedContours, const CoordinateConverters &converters, const AffineXf3f *rigidB2A=nullptr)
 extracts coordinates from two meshes intersection contours
bool MR::isClosed (const ContinuousContour &contour)
 returns true if contour is closed
std::vector< int > MR::detectLoneContours (const ContinuousContours &contours, bool ignoreOpen=false)
void MR::removeLoneDegeneratedContours (const MeshTopology &edgesTopology, OneMeshContours &faceContours, OneMeshContours &edgeContours)
void MR::removeLoneContours (ContinuousContours &contours, bool ignoreOpen=false)
 MR::InTreePathBuilder::InTreePathBuilder (const MeshTopology &topology, const UndirectedEdgeBitSet &treeEdges)
EdgePath MR::InTreePathBuilder::build (VertId start, VertId finish) const
 finds the path in tree from start vertex to finish vertex
std::vector< size_t > MR::splitByLines (const char *data, size_t size)
 returns offsets for each new line in monolith char block
MR_BIND_IGNORE std::streamoff MR::getStreamSize (std::istream &in)
MR_BIND_IGNORE Expected< std::string > MR::readString (std::istream &in)
MR_BIND_IGNORE Expected< Buffer< char > > MR::readCharBuffer (std::istream &in)
 reads input stream to monolith char block
template<typename T>
Expected< void > MR::parseTextCoordinate (const std::string_view &str, Vector3< T > &v, Vector3< T > *n=nullptr, Color *c=nullptr)
 read coordinates to v separated by space
template<typename T>
Expected< void > MR::parseObjCoordinate (const std::string_view &str, Vector3< T > &v, Vector3< T > *c=nullptr)
template<typename T>
Expected< void > MR::parsePtsCoordinate (const std::string_view &str, Vector3< T > &v, Color *c=nullptr, Vector3< T > *n=nullptr)
template<typename T>
Expected< void > MR::parsePtsCoordinate (const std::string_view &str, Vector3< T > &v, Color &c)
Expected< void > MR::parseFirstNum (const std::string_view &str, int &num)
 reads the first integer number in the line
Expected< void > MR::parsePolygon (const std::string_view &str, VertId *vertId, int *numPoints)
template<typename T>
Expected< void > MR::parseAscCoordinate (const std::string_view &str, Vector3< T > &v, Vector3< T > *n=nullptr, Color *c=nullptr)
template<typename T>
Expected< void > MR::parseSingleNumber (const std::string_view &str, T &num)
bool MR::hasBom (const std::string_view &str)
 checks if the given string starts with the UTF-8 byte-order mark
virtual MR::BasicUiRenderTask::~BasicUiRenderTask ()=default
 MR::BasicUiRenderTask::BasicUiRenderTask ()=default
 MR::BasicUiRenderTask::BasicUiRenderTask (const BasicUiRenderTask &)=default
 MR::BasicUiRenderTask::BasicUiRenderTask (BasicUiRenderTask &&)=default
BasicUiRenderTaskMR::BasicUiRenderTask::operator= (const BasicUiRenderTask &)=default
BasicUiRenderTaskMR::BasicUiRenderTask::operator= (BasicUiRenderTask &&)=default
bool MR::BasicUiRenderTask::BackwardPassParams::tryConsumeMouseHover () const
 If nothing else is hovered, this returns true and writes mouseHover to consumedInteractions.
virtual void MR::BasicUiRenderTask::earlyBackwardPass (const BackwardPassParams &params)
virtual void MR::BasicUiRenderTask::renderPass ()=0
 This is the main rendering pass.
virtual MR::UiRenderManager::~UiRenderManager ()=default
virtual void MR::UiRenderManager::preRenderViewport (ViewportId viewport)
 This is called before doing IRenderObject::renderUi() on even object in a viewport. Each viewport is rendered separately.
virtual void MR::UiRenderManager::postRenderViewport (ViewportId viewport)
 This is called after doing IRenderObject::renderUi() on even object in a viewport. Each viewport is rendered separately.
virtual BasicUiRenderTask::BackwardPassParams MR::UiRenderManager::beginBackwardPass (ViewportId viewport, UiRenderParams::UiTaskList &tasks)
virtual void MR::UiRenderManager::finishBackwardPass (ViewportId viewport, const BasicUiRenderTask::BackwardPassParams &params)
 After the backward pass is performed, the parameters should be passed back into this function.
virtual MR::IRenderObject::~IRenderObject ()=default
virtual bool MR::IRenderObject::render (const ModelRenderParams &params)=0
 Returns true if something was rendered, or false if nothing to render.
virtual void MR::IRenderObject::renderPicker (const ModelBaseRenderParams &params, unsigned geomId)=0
virtual size_t MR::IRenderObject::heapBytes () const =0
 returns the amount of memory this object occupies on heap
virtual size_t MR::IRenderObject::glBytes () const =0
 returns the amount of memory this object allocated in OpenGL
virtual void MR::IRenderObject::forceBindAll ()
 binds all data for this render object, not to bind ever again (until object becomes dirty)
virtual void MR::IRenderObject::renderUi (const UiRenderParams &params)
 MR::RenderObjectCombinator< Bases >::RenderObjectCombinator (const VisualObject &object)
bool MR::RenderObjectCombinator< Bases >::render (const ModelRenderParams &params) override
void MR::RenderObjectCombinator< Bases >::renderPicker (const ModelBaseRenderParams &params, unsigned geomId) override
size_t MR::RenderObjectCombinator< Bases >::heapBytes () const override
size_t MR::RenderObjectCombinator< Bases >::glBytes () const override
void MR::RenderObjectCombinator< Bases >::forceBindAll () override
void MR::RenderObjectCombinator< Bases >::renderUi (const UiRenderParams &params) override
MR_BIND_IGNORE std::unique_ptr< IRenderObjectMR::createRenderObject (const VisualObject &visObj, const std::type_index &type)
template<typename ObjectType>
MR_BIND_IGNORE std::unique_ptr< IRenderObjectMR::createRenderObject (const VisualObject &visObj)
template<typename RenderObjType>
MR_BIND_IGNORE IRenderObjectConstructorLambda MR::makeRenderObjectConstructor ()
 MR::RegisterRenderObjectConstructor::RegisterRenderObjectConstructor (const std::type_index &type, IRenderObjectConstructorLambda lambda)
 MR::RegisterRenderObjectConstructor::~RegisterRenderObjectConstructor ()
bool MR::isNanFast (float f)
 quickly tests whether given float is not-a-number
std::optional< VertBitSet > MR::pointIterativeSampling (const PointCloud &cloud, int numSamples, const ProgressCallback &cb={})
 MR::Laplacian::Laplacian (Mesh &mesh)
 MR::Laplacian::Laplacian (const MeshTopology &topology, VertCoords &points)
 MR::Laplacian::Laplacian (Laplacian &&) noexcept
 MR::Laplacian::~Laplacian ()
void MR::Laplacian::init (const VertBitSet &freeVerts, EdgeWeights weights, VertexMass vmass=VertexMass::Unit, RememberShape rem=RememberShape::Yes)
void MR::Laplacian::initFromPoints (const VertCoords &points, const VertBitSet &freeVerts, EdgeWeights weights, VertexMass vmass=VertexMass::Unit, RememberShape rem=RememberShape::Yes)
 same as init() but uses the given points instead of ones passed to a constructor for weights computation and shape memory
void MR::Laplacian::fixVertex (VertId v, bool smooth=true)
void MR::Laplacian::fixVertex (VertId v, const Vector3f &fixedPos, bool smooth=true)
void MR::Laplacian::multVertexWeight (VertId v, double factor)
 multiplies vertex equation's weight on the given factor
void MR::Laplacian::updateSolver ()
 if you manually call this method after initialization and fixing vertices then next apply call will be much faster
void MR::Laplacian::applyToVector (VertCoords &points)
void MR::Laplacian::apply ()
void MR::Laplacian::applyToScalar (VertScalars &scalarField)
const VertBitSet & MR::Laplacian::region () const
 return all initially free vertices and the first layer of vertices around them
const VertBitSet & MR::Laplacian::freeVerts () const
 return currently free vertices
const VertBitSet & MR::Laplacian::firstLayerFixedVerts () const
 return fixed vertices from the first layer around free vertices
const MeshTopologyMR::Laplacian::topology () const
 return the topology for which Laplacian was constructed
VertCoords & MR::Laplacian::points () const
 return the vector of coordinates for which Laplacian was constructed
void MR::Laplacian::addAttractor (const Attractor &a)
 adds one more attractor to the stored list
void MR::Laplacian::removeAllAttractors ()
 forgets all attractors added previously
std::shared_ptr< ObjectMR::makeLevelOfDetails (Mesh &&mesh, int maxDepth)
constexpr MR::Line< V >::Line () noexcept=default
constexpr MR::Line< V >::Line (const V &p, const V &d) noexcept
template<typename U>
constexpr MR::Line< V >::Line (const Line< U > &l) noexcept
MR::Line< V >::operator() (T param) const
 returns point on the line, where param=0 returns p and param=1 returns p+d
T MR::Line< V >::distanceSq (const V &x) const
 returns squared distance from given point to this line
Line MR::Line< V >::operator- () const
 returns same line represented with flipped direction of d-vector
const LineMR::Line< V >::operator+ () const
 returns same representation
Line MR::Line< V >::normalized () const
 returns same line represented with unit d-vector
MR::Line< V >::project (const V &x) const
 finds the closest point on line
 MR::LineObject::LineObject ()
 Creates simple plane object.
 MR::LineObject::LineObject (const std::vector< Vector3f > &pointsToApprox)
 Finds best plane to approx given points.
 MR::LineObject::LineObject (LineObject &&) noexcept=default
LineObjectMR::LineObject::operator= (LineObject &&) noexcept=default
static constexpr const char * MR::LineObject::StaticTypeName () noexcept
virtual const char * MR::LineObject::typeName () const override
static constexpr const char * MR::LineObject::StaticClassName () noexcept
virtual std::string MR::LineObject::className () const override
static constexpr const char * MR::LineObject::StaticClassNameInPlural () noexcept
virtual std::string MR::LineObject::classNameInPlural () const override
 MR::LineObject::LineObject (ProtectedStruct, const LineObject &obj)
virtual std::shared_ptr< ObjectMR::LineObject::clone () const override
virtual std::shared_ptr< ObjectMR::LineObject::shallowClone () const override
Vector3f MR::LineObject::getDirection (ViewportId id={}) const
 calculates direction from xf
Vector3f MR::LineObject::getCenter (ViewportId id={}) const
 calculates center from xf
void MR::LineObject::setDirection (const Vector3f &normal, ViewportId id={})
 updates xf to fit given normal
void MR::LineObject::setCenter (const Vector3f &center, ViewportId id={})
 updates xf to fit given center
void MR::LineObject::setLength (float size, ViewportId id={})
 updates xf to scale size
void MR::LineObject::setPoints (const Vector3f &a, const Vector3f &b, ViewportId id={})
 updates xf for line visually to go from point a to point b
float MR::LineObject::getLength (ViewportId id={}) const
 calculates line size from xf
virtual Vector3f MR::LineObject::getBasePoint (ViewportId id={}) const override
 Returns point considered as base for the feature.
Vector3f MR::LineObject::getPointA (ViewportId id={}) const
 Returns the starting point, aka center - dir * len/2.
Vector3f MR::LineObject::getPointB (ViewportId id={}) const
 Returns the finishing point, aka center + dir * len/2.
FeatureObjectProjectPointResult MR::LineObject::projectPoint (const Vector3f &point, ViewportId id={}) const override
virtual const std::vector< FeatureObjectSharedProperty > & MR::LineObject::getAllSharedProperties () const override
 Create and generate list of bounded getters and setters for the main properties of feature object, together with prop. name for display and edit into UI.
 MR::LineObject::LineObject (const LineObject &other)=default
virtual void MR::LineObject::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::LineObject::serializeFields_ (Json::Value &root) const override
virtual Expected< std::future< Expected< void > > > MR::LineObject::serializeModel_ (const std::filesystem::path &) const override
virtual Expected< void > MR::LineObject::deserializeModel_ (const std::filesystem::path &, ProgressCallback) override
 Reads model from file.
void MR::LineObject::setupRenderObject_ () const override
constexpr MR::LineSegm< V >::LineSegm () noexcept=default
constexpr MR::LineSegm< V >::LineSegm (const V &a, const V &b) noexcept
template<typename U>
constexpr MR::LineSegm< V >::LineSegm (const LineSegm< U > &p) noexcept
MR::LineSegm< V >::dir () const
 returns directional vector of the line
T MR::LineSegm< V >::lengthSq () const
 returns squared length of this line segment
T MR::LineSegm< V >::length () const
 returns the length of this line segment
MR::LineSegm< V >::operator() (T param) const
 returns point on the line, where param=0 returns a and param=1 returns b
template<typename V>
bool MR::operator== (const LineSegm< V > &a, const LineSegm< V > &b)
template<typename V>
MR::closestPointOnLineSegm (const V &pt, const LineSegm< V > &l)
template<typename V>
bool MR::doSegmentsIntersect (const LineSegm< V > &x, const LineSegm< V > &y, typename V::ValueType *xPos=nullptr, typename V::ValueType *yPos=nullptr)
template<typename V>
bool MR::doSegmentLineIntersect (const LineSegm< V > &x, const Line< V > &y, typename V::ValueType *xPos=nullptr, typename V::ValueType *yPos=nullptr)
 MR::FanRecord::FanRecord (VertId b={}, std::uint32_t fn=0)
 MR::FanRecord::FanRecord (NoInit)
 MR::FanRecordWithCenter::FanRecordWithCenter (VertId c={}, VertId b={}, std::uint32_t fn=0)
 MR::FanRecordWithCenter::FanRecordWithCenter (NoInit)
std::optional< AllLocalTriangulationsMR::uniteLocalTriangulations (const std::vector< SomeLocalTriangulations > &in, const ProgressCallback &progress={})
Vector3f MR::computeNormal (const AllLocalTriangulations &triangs, const VertCoords &points, VertId v)
 compute normal at point by averaging neighbor triangle normals weighted by triangle's angle at the point
void MR::orientLocalTriangulations (AllLocalTriangulations &triangs, const VertCoords &coords, const VertBitSet &region, const VertNormals &targetDir)
 orient neighbors around each point in
void MR::orientLocalTriangulations (AllLocalTriangulations &triangs, const VertCoords &coords, const VertBitSet &region, const std::function< Vector3f(VertId)> &targetDir)
bool MR::autoOrientLocalTriangulations (const PointCloud &pointCloud, AllLocalTriangulations &triangs, const VertBitSet &region, ProgressCallback progress={}, Triangulation *outRep3=nullptr, Triangulation *outRep2=nullptr)
 orient neighbors around each point in
TrianglesRepetitions MR::computeTrianglesRepetitions (const AllLocalTriangulations &triangs)
 computes statistics about the number of triangle repetitions in local triangulations
std::vector< UnorientedTriangleMR::findRepeatedUnorientedTriangles (const AllLocalTriangulations &triangs, int repetitions)
 from local triangulations returns all unoriented triangles with given number of repetitions each in [1,3]
Triangulation MR::findRepeatedOrientedTriangles (const AllLocalTriangulations &triangs, int repetitions)
 from local triangulations returns all oriented triangles with given number of repetitions each in [1,3]
void MR::findRepeatedOrientedTriangles (const AllLocalTriangulations &triangs, Triangulation *outRep3, Triangulation *outRep2)
 optional output with all oriented triangles that appear in exactly two local triangulations
Mesh MR::makePlane ()
 Makes square plane 1x1 size with center at (0,0,0) and (0,0,1) normal.
AffineXf3f MR::makeRigidXf (const MeshPart &mp, const AffineXf3f &meshXf)
Mesh MR::makeSphere (const SphereParams &params)
 creates a mesh of sphere with irregular triangulation
Mesh MR::makeUVSphere (float radius=1.0, int horisontalResolution=16, int verticalResolution=16)
 creates a mesh of sphere with regular triangulation (parallels and meridians)
EdgeId MR::mapEdge (const WholeEdgeMap &map, EdgeId src)
 given input edge (src), converts its id using given map
UndirectedEdgeId MR::mapEdge (const WholeEdgeMap &map, UndirectedEdgeId src)
 given input edge (src), converts its id using given map
EdgeId MR::mapEdge (const WholeEdgeHashMap &map, EdgeId src)
 given input edge (src), converts its id using given map
UndirectedEdgeId MR::mapEdge (const WholeEdgeHashMap &map, UndirectedEdgeId src)
 given input edge (src), converts its id using given map
EdgeId MR::mapEdge (const WholeEdgeMapOrHashMap &m, EdgeId src)
 given input edge (src), converts its id using given map
UndirectedEdgeId MR::mapEdge (const WholeEdgeMapOrHashMap &m, UndirectedEdgeId src)
 given input edge (src), converts its id using given map
UndirectedEdgeId MR::mapEdge (const UndirectedEdgeBMap &map, UndirectedEdgeId src)
 given input edge (src), converts its id using given map
UndirectedEdgeBitSet MR::mapEdges (const WholeEdgeMap &map, const UndirectedEdgeBitSet &src)
 given input bit-set (src), converts each id corresponding to set bit using given map, and sets its bit in the resulting bit set
UndirectedEdgeBitSet MR::mapEdges (const WholeEdgeHashMap &map, const UndirectedEdgeBitSet &src)
 given input bit-set (src), converts each id corresponding to set bit using given map, and sets its bit in the resulting bit set
UndirectedEdgeBitSet MR::mapEdges (const UndirectedEdgeBMap &map, const UndirectedEdgeBitSet &src)
 given input bit-set (src), converts each id corresponding to set bit using given map, and sets its bit in the resulting bit set
static MapOrHashMap MR::MapOrHashMap< K, V >::createMap (size_t size=0)
static MapOrHashMap MR::MapOrHashMap< K, V >::createHashMap (size_t capacity=0)
void MR::MapOrHashMap< K, V >::setMap (Dense &&m MR_LIFETIME_CAPTURE_BY_NESTED(this))
void MR::MapOrHashMap< K, V >::setHashMap (Hash &&m MR_LIFETIME_CAPTURE_BY_NESTED(this))
void MR::MapOrHashMap< K, V >::resizeReserve (size_t denseTotalSize, size_t hashAdditionalCapacity)
void MR::MapOrHashMap< K, V >::pushBack (K key MR_LIFETIME_CAPTURE_BY_NESTED(this), V val MR_LIFETIME_CAPTURE_BY_NESTED(this))
template<typename F>
void MR::MapOrHashMap< K, V >::forEach (F &&f) const
 executes given function for all pairs (key, value) with valid value for dense map
DenseMR::MapOrHashMap< K, V >::getMap () MR_LIFETIMEBOUND
const DenseMR::MapOrHashMap< K, V >::getMap () const MR_LIFETIMEBOUND
HashMR::MapOrHashMap< K, V >::getHashMap () MR_LIFETIMEBOUND
const HashMR::MapOrHashMap< K, V >::getHashMap () const MR_LIFETIMEBOUND
void MR::MapOrHashMap< K, V >::clear ()
template<typename K, typename V>
MR::getAt (const MapOrHashMap< K, V > &m, K key, V def={})
template<typename K, typename V>
void MR::setAt (MapOrHashMap< K, V > &m, K key, V val)
template<typename ValueT, typename IndexT>
void MR::mapNewToOldVector (const Vector< ValueT, Id< IndexT > > &oldData, const Vector< Id< IndexT >, Id< IndexT > > &newToOld, Vector< ValueT, Id< IndexT > > &newData)
template<typename ValueT, typename IndexT>
void MR::mapOldToNewVector (const Vector< ValueT, Id< IndexT > > &oldData, const Vector< Id< IndexT >, Id< IndexT > > &newToOld, Vector< ValueT, Id< IndexT > > &newData)
bool MR::isClosed (const Contour3f &c)
MarkedContour3f MR::markedContour (Contour3f in)
MarkedContour3f MR::markedFirstLast (Contour3f in)
MarkedContour3f MR::resample (const MarkedContour3f &in, float minStep, Contour3f *normals=nullptr)
MarkedContour3f MR::makeSpline (MarkedContour3f in, float markStability=1, const Contour3f *normals=nullptr)
MarkedContour3f MR::makeSpline (MarkedContour3f in, const Contour3f &normals, float markStability=1)
MarkedContour3f MR::makeSpline (const Contour3f &controlPoints, const SplineSettings &settings)
constexpr MR::Matrix2< T >::Matrix2 () noexcept
constexpr MR::Matrix2< T >::Matrix2 (const Vector2< T > &x, const Vector2< T > &y)
 initializes matrix from its 2 rows
template<typename U>
constexpr MR::Matrix2< T >::Matrix2 (const Matrix2< U > &m)
static constexpr Matrix2 MR::Matrix2< T >::zero () noexcept
static constexpr Matrix2 MR::Matrix2< T >::identity () noexcept
static constexpr Matrix2 MR::Matrix2< T >::scale (T s) noexcept
 returns a matrix that scales uniformly
static constexpr Matrix2 MR::Matrix2< T >::scale (T sx, T sy) noexcept
 returns a matrix that has its own scale along each axis
static constexpr Matrix2 MR::Matrix2< T >::scale (const Vector2< T > &s) noexcept
static constexpr Matrix2 MR::Matrix2< T >::fromColumns (const Vector2< T > &x, const Vector2< T > &y) noexcept
constexpr const Vector2< T > & MR::Matrix2< T >::operator[] (int row) const noexcept
 row access
constexpr Vector2< T > & MR::Matrix2< T >::operator[] (int row) noexcept
constexpr Vector2< T > MR::Matrix2< T >::col (int i) const noexcept
 column access
constexpr T MR::Matrix2< T >::trace () const noexcept
 computes trace of the matrix
constexpr T MR::Matrix2< T >::normSq () const noexcept
 compute sum of squared matrix elements
constexpr auto MR::Matrix2< T >::norm () const noexcept
constexpr T MR::Matrix2< T >::det () const noexcept
 computes determinant of the matrix
constexpr Matrix2< T > inverse() const noexcept MR_REQUIRES_IF_SUPPORTED(std constexpr Matrix2< T > MR::Matrix2< T >::transposed () const noexcept
 computes inverse matrix
constexpr MR::Matrix3< T >::Matrix3 () noexcept
constexpr MR::Matrix3< T >::Matrix3 (const Vector3< T > &x, const Vector3< T > &y, const Vector3< T > &z)
 initializes matrix from its 3 rows
template<typename U>
 MR::Matrix3< T >::MR_REQUIRES_IF_SUPPORTED (!std::is_same_v< T, U >) const expr explicit Matrix3(const Matrix3< U > &m)
static constexpr Matrix3 MR::Matrix3< T >::zero () noexcept
static constexpr Matrix3 MR::Matrix3< T >::identity () noexcept
static constexpr Matrix3 MR::Matrix3< T >::scale (T s) noexcept
 returns a matrix that scales uniformly
static constexpr Matrix3 MR::Matrix3< T >::scale (T sx, T sy, T sz) noexcept
 returns a matrix that has its own scale along each axis
static constexpr Matrix3 MR::Matrix3< T >::scale (const Vector3< T > &s) noexcept
static constexpr Matrix3 MR::Matrix3< T >::fromColumns (const Vector3< T > &x, const Vector3< T > &y, const Vector3< T > &z) noexcept
constexpr const Vector3< T > & MR::Matrix3< T >::operator[] (int row) const noexcept
 row access
constexpr Vector3< T > & MR::Matrix3< T >::operator[] (int row) noexcept
constexpr Vector3< T > MR::Matrix3< T >::col (int i) const noexcept
 column access
constexpr T MR::Matrix3< T >::trace () const noexcept
 computes trace of the matrix
constexpr T MR::Matrix3< T >::normSq () const noexcept
 compute sum of squared matrix elements
constexpr auto MR::Matrix3< T >::norm () const noexcept
constexpr T MR::Matrix3< T >::det () const noexcept
 computes determinant of the matrix
constexpr Matrix3< T > inverse() const noexcept MR_REQUIRES_IF_SUPPORTED(!std constexpr Matrix3< T > MR::Matrix3< T >::transposed () const noexcept
 computes inverse matrix
template<typename T>
void MR::decomposeMatrix3 (const Matrix3< T > &m, Matrix3< T > &rotation, Matrix3< T > &scaling)
 Decomposes matrix into rotation and scaling matrices.
template<typename T>
bool MR::isRigid (const Matrix3< T > &m)
 Returns true if matrix scale is identity.
constexpr MR::Matrix4< T >::Matrix4 () noexcept
constexpr MR::Matrix4< T >::Matrix4 (const Vector4< T > &x, const Vector4< T > &y, const Vector4< T > &z, const Vector4< T > &w)
 initializes matrix from 4 row-vectors
constexpr MR::Matrix4< T >::Matrix4 (const Matrix3< T > &r, const Vector3< T > &t)
 construct from rotation matrix and translation vector
template<MR_SAME_TYPE_TEMPLATE_PARAM(T, TT)>
constexpr MR::Matrix4< T >::Matrix4 (const AffineXf3< TT > &xf) MR_REQUIRES_IF_SUPPORTED(std
template<typename U>
 MR::Matrix4< T >::MR_REQUIRES_IF_SUPPORTED (!std::is_same_v< T, U >) const expr explicit Matrix4(const Matrix4< U > &m)
static constexpr Matrix4 MR::Matrix4< T >::zero () noexcept
static constexpr Matrix4 MR::Matrix4< T >::identity () noexcept
static constexpr Matrix4 MR::Matrix4< T >::scale (T s) noexcept
 returns a matrix that scales uniformly
constexpr const T & MR::Matrix4< T >::operator() (int row, int col) const noexcept
 element access
constexpr T & MR::Matrix4< T >::operator() (int row, int col) noexcept
constexpr const Vector4< T > & MR::Matrix4< T >::operator[] (int row) const noexcept
 row access
constexpr Vector4< T > & MR::Matrix4< T >::operator[] (int row) noexcept
constexpr Vector4< T > MR::Matrix4< T >::col (int i) const noexcept
 column access
constexpr T MR::Matrix4< T >::trace () const noexcept
 computes trace of the matrix
constexpr T MR::Matrix4< T >::normSq () const noexcept
 compute sum of squared matrix elements
constexpr auto MR::Matrix4< T >::norm () const noexcept
Matrix3< T > MR::Matrix4< T >::submatrix3 (int i, int j) const noexcept
 computes submatrix of the matrix with excluded i-th row and j-th column
MR::Matrix4< T >::det () const noexcept
 computes determinant of the matrix
constexpr Matrix4< T > inverse() const noexcept MR_REQUIRES_IF_SUPPORTED(!std constexpr Matrix4< T > MR::Matrix4< T >::transposed () const noexcept
 computes inverse matrix
constexpr Matrix3< T > MR::Matrix4< T >::getRotation () const noexcept
void MR::Matrix4< T >::setRotation (const Matrix3< T > &rot) noexcept
constexpr Vector3< T > MR::Matrix4< T >::getTranslation () const noexcept
void MR::Matrix4< T >::setTranslation (const Vector3< T > &t) noexcept
constexpr T * MR::Matrix4< T >::data ()
constexpr const T * MR::Matrix4< T >::data () const
template<MR_SAME_TYPE_TEMPLATE_PARAM(T, TT)>
 MR::Matrix4< T >::operator AffineXf3< TT > () const MR_REQUIRES_IF_SUPPORTED(std
 MR::MeasurementObject::MeasurementObject ()
 MR::TransformedMesh::TransformedMesh ()=default
 MR::TransformedMesh::TransformedMesh (Mesh mesh, const AffineXf3f &xf={})
TransformedMesh MR::MeshMeshConverter::operator() (Mesh mesh, const AffineXf3f &xf={}) const
TransformedMesh MR::MeshMeshConverter::operator() (const ObjectMesh &obj) const
const MeshMR::MeshMeshConverter::operator() (const TransformedMesh &xm) const
Mesh && MR::MeshMeshConverter::operator() (TransformedMesh &&xm) const
TransformedMeshMR::operator+= (TransformedMesh &a, const TransformedMesh &b)
 union operation on two meshes
TransformedMeshMR::operator-= (TransformedMesh &a, const TransformedMesh &b)
 difference operation on two meshes
TransformedMeshMR::operator*= (TransformedMesh &a, const TransformedMesh &b)
 intersection operation on two meshes
MeshTopology MR::MeshBuilder::fromTriangles (const Triangulation &t, const BuildSettings &settings={}, ProgressCallback progressCb={})
size_t MR::MeshBuilder::duplicateNonManifoldVertices (Triangulation &t, FaceBitSet *region=nullptr, std::vector< VertDuplication > *dups=nullptr, VertId lastValidVert={})
MeshTopology MR::MeshBuilder::fromTrianglesDuplicatingNonManifoldVertices (Triangulation &t, std::vector< VertDuplication > *dups=nullptr, const BuildSettings &settings={})
Mesh MR::MeshBuilder::fromPointTriples (const std::vector< Triangle3f > &posTriples)
MeshTopology MR::MeshBuilder::fromDisjointMeshPieces (const Triangulation &t, VertId maxVertId, const std::vector< MeshPiece > &pieces, const BuildSettings &settings={})
void MR::MeshBuilder::addTriangles (MeshTopology &res, const Triangulation &t, const BuildSettings &settings={})
void MR::MeshBuilder::addTriangles (MeshTopology &res, std::vector< VertId > &vertTriples, FaceBitSet *createdFaces=nullptr)
MeshTopology MR::MeshBuilder::fromFaceSoup (const std::vector< VertId > &verts, const Vector< VertSpan, FaceId > &faces, const BuildSettings &settings={}, ProgressCallback progressCb={})
 < this set receives indices of added triangles
int MR::MeshBuilder::uniteCloseVertices (Mesh &mesh, float closeDist, bool uniteOnlyBd=true, VertMap *optionalVertOldToNew=nullptr)
int MR::MeshBuilder::uniteCloseVertices (Mesh &mesh, const UniteCloseParams &params={})
 MR::MeshBuilder::Triangle::Triangle () noexcept=default
 MR::MeshBuilder::Triangle::Triangle (VertId a, VertId b, VertId c, FaceId f)
bool MR::MeshBuilder::Triangle::operator== (const Triangle &other) const
template<typename T>
auto MR::preCollapseVertAttribute (const Mesh &mesh, Vector< T, VertId > &data)
PreCollapseCallback MR::meshPreCollapseVertAttribute (const Mesh &mesh, const MeshAttributesToUpdate &params)
 MR::MeshDiff::MeshDiff ()=default
 constructs minimal difference, where applyAndSwap( m ) will produce empty mesh
 MR::MeshDiff::MeshDiff (const Mesh &from, const Mesh &to)
 computes the difference, that can be applied to mesh-from in order to get mesh-to
void MR::MeshDiff::applyAndSwap (Mesh &m)
bool MR::MeshDiff::any () const
size_t MR::MeshDiff::heapBytes () const
 returns the amount of memory this object occupies on heap
void MR::divideMeshWithPlane (ObjectMeshData &data, const Plane3f &plane, const DivideMeshWithPlaneParams &divideParams={})
FaceBitSet MR::findOuterLayer (const Mesh &mesh)
void MR::makeDegenerateBandAroundRegion (Mesh &mesh, const FaceBitSet &region, const MakeDegenerateBandAroundRegionParams &params={})
 Create a band of degenerate faces along the border of the specified region and the rest of the mesh.
template<typename T>
class MRMESH_CLASS MR::Id (EdgeId, Id< EdgeTag >)(UndirectedEdgeId
class MRMESH_CLASS MR::Id< UndirectedEdgeTag > (FaceId, Id< FaceTag >)(VertId
class MRMESH_CLASS MR::Id< VertTag > (PixelId, Id< PixelTag >)(VoxelId
class MRMESH_CLASS MR::Id< VoxelTag > (RegionId, Id< RegionTag >)(NodeId
class MRMESH_CLASS MR::Id< NodeTag > (ObjId, Id< ObjTag >)(TextureId
class MRMESH_CLASS MR::Id< TextureTag > (GraphVertId, Id< GraphVertTag >)(GraphEdgeId
template<typename T>
class MRMESH_CLASS MR::NoInitId (NoInitNodeId, NoInitId< NodeTag >)) template< typename T
template<typename I>
class MRMESH_CLASS MR::TypedBitSet (FaceBitSet, TypedBitSet< FaceId >)(VertBitSet
class MRMESH_CLASS MR::TypedBitSet< VertId > (EdgeBitSet, TypedBitSet< EdgeId >)(UndirectedEdgeBitSet
class MRMESH_CLASS MR::TypedBitSet< UndirectedEdgeId > (PixelBitSet, TypedBitSet< PixelId >)(VoxelBitSet
class MRMESH_CLASS MR::TypedBitSet< VoxelId > (RegionBitSet, TypedBitSet< RegionId >)(NodeBitSet
class MRMESH_CLASS MR::TypedBitSet< NodeId > (ObjBitSet, TypedBitSet< ObjId >)(TextureBitSet
class MRMESH_CLASS MR::TypedBitSet< TextureId > (GraphVertBitSet, TypedBitSet< GraphVertId >)(GraphEdgeBitSet
template<typename T>
class MRMESH_CLASS MR::SetBitIteratorT (SetBitIterator, SetBitIteratorT< BitSet >)(FaceSetBitIterator
class MRMESH_CLASS MR::SetBitIteratorT< FaceBitSet > (VertSetBitIterator, SetBitIteratorT< VertBitSet >)(EdgeSetBitIterator
class MRMESH_CLASS MR::SetBitIteratorT< EdgeBitSet > (UndirectedEdgeSetBitIterator, SetBitIteratorT< UndirectedEdgeBitSet >)) struct Color
MRMESH_CLASS MR::Vector2< bool > (Vector2i, Vector2< int >)(Vector2i64
MRMESH_CLASS MR::Vector2< Int64 > (Vector2f, Vector2< float >)(Vector2d
MRMESH_CLASS MR::Vector3< bool > (Vector3i, Vector3< int >)(Vector3i64
MRMESH_CLASS MR::Vector3< Int64 > (Vector3f, Vector3< float >)(Vector3d
 MR::Vector4< bool > (Vector4i, Vector4< int >)(Vector4i64
 MR::Vector4< Int64 > (Vector4f, Vector4< float >)(Vector4d
 MR::Matrix2< bool > (Matrix2i, Matrix2< int >)(Matrix2i64
 MR::Matrix2< Int64 > (Matrix2f, Matrix2< float >)(Matrix2d
 MR::Matrix3< bool > (Matrix3i, Matrix3< int >)(Matrix3i64
 MR::Matrix3< Int64 > (Matrix3f, Matrix3< float >)(Matrix3d
 MR::Matrix4< bool > (Matrix4i, Matrix4< int >)(Matrix4i64
 MR::Matrix4< Int64 > (Matrix4f, Matrix4< float >)(Matrix4d
 MR::SymMatrix2< bool > (SymMatrix2i, SymMatrix2< int >)(SymMatrix2i64
 MR::SymMatrix2< Int64 > (SymMatrix2f, SymMatrix2< float >)(SymMatrix2d
 MR::SymMatrix3< bool > (SymMatrix3i, SymMatrix3< int >)(SymMatrix3i64
 MR::SymMatrix3< Int64 > (SymMatrix3f, SymMatrix3< float >)(SymMatrix3d
 MR::SymMatrix4< bool > (SymMatrix4i, SymMatrix4< int >)(SymMatrix4i64
 MR::SymMatrix4< Int64 > (SymMatrix4f, SymMatrix4< float >)(SymMatrix4d
 MR::AffineXf< Vector2< float > > (AffineXf2d, AffineXf< Vector2< double > >)(AffineXf3f
 MR::AffineXf< Vector3< float > > (AffineXf3d, AffineXf< Vector3< double > >)) template< typename T > using AffineXf2
 MR::RigidXf3< float > (RigidXf3d, RigidXf3< double >)) 1((template< typename T > struct)
 MR::RigidScaleXf3< float > (RigidScaleXf3d, RigidScaleXf3< double >)) class PointToPointAligningTransform
 MR::Sphere< Vector2< float > > (Sphere2d, Sphere< Vector2< double > >)(Sphere3f
 MR::Sphere< Vector3< float > > (Sphere3d, Sphere< Vector3< double > >)) template< typename T > using Sphere2
 MR::Line< Vector2< float > > (Line2d, Line< Vector2< double > >)(Line3f
 MR::Line< Vector3< float > > (Line3d, Line< Vector3< double > >)) template< typename T > using Line2
 MR::LineSegm< Vector2< float > > (LineSegm2d, LineSegm< Vector2< double > >)(LineSegm3f
 MR::LineSegm< Vector3< float > > (LineSegm3d, LineSegm< Vector3< double > >)) template< typename T > using LineSegm2
 MR::Parabola< float > (Parabolad, Parabola< double >)) 1((template< typename T > class)
 MR::BestFitParabola< float > (BestFitParabolad, BestFitParabola< double >)) 1((template< typename T > class)
 MR::Cylinder3< float > (Cylinder3d, Cylinder3< double >)) 1((template< typename T > class)
 MR::Cone3< float > (Cone3d, Cone3< double >)) template< typename V > using Contour
 No canonical typedefs here, because those ultimately boil to std::vector, which isn't under our control.
 MR::Plane3< float > (Plane3d, Plane3< double >)) 1((template< typename V > struct MRMESH_CLASS)
 MR::Box< int > (Box1i64, Box< Int64 >)(Box1f
 MR::Box< float > (Box1d, Box< double >)(Box2i
 MR::Box< Vector2< int > > (Box2i64, Box< Vector2< Int64 > >)(Box2f
 MR::Box< Vector2< float > > (Box2d, Box< Vector2< double > >)(Box3i
 MR::Box< Vector3< int > > (Box3i64, Box< Vector3< Int64 > >)(Box3f
 MR::Box< Vector3< float > > (Box3d, Box< Vector3< double > >)) using Box1ll
template<typename V>
struct MRMESH_CLASS MR::Ball (Ball1f, Ball< float >)(Ball1d
struct MRMESH_CLASS MR::Ball< double > (Ball2f, Ball< Vector2< float > >)(Ball2d
struct MRMESH_CLASS MR::Ball< Vector2< double > > (Ball3f, Ball< Vector3< float > >)(Ball3d
template<typename V>
struct MRMESH_CLASS MR::CubicBezierCurve (CubicBezierCurve2f, CubicBezierCurve< Vector2< float > >)(CubicBezierCurve2d
struct MRMESH_CLASS MR::CubicBezierCurve< Vector2< double > > (CubicBezierCurve3f, CubicBezierCurve< Vector3< float > >)(CubicBezierCurve3d
 MR::QuadraticForm< Vector2< float > > (QuadraticForm2d, QuadraticForm< Vector2< double > >)(QuadraticForm3f
 MR::QuadraticForm< Vector3< float > > (QuadraticForm3d, QuadraticForm< Vector3< double > >)) template< typename T > using QuadraticForm2
 MR::Quaternion< float > (Quaterniond, Quaternion< double >)) template< typename T > using Triangle3
 No canonical typedefs because std::array is not under our control.
 MR::SegmPoint< float > (SegmPointd, SegmPoint< double >)) struct EdgePoint
 MR::TriPoint< float > (TriPointd, TriPoint< double >)) struct PointOnFace
template<typename T, typename I>
class MRMESH_CLASS MR::Vector (Edges, Vector< TwoVertIds, UndirectedEdgeId >)(Triangulation
 mapping from UndirectedEdgeId to its end vertices
class MRMESH_CLASS MR::Vector< ThreeVertIds, FaceId > (TriCornerUVCoords, Vector< ThreeUVCoords, FaceId >)(Dipoles
 mapping from FaceId to a triple of UV-coordinates
class MRMESH_CLASS MR::Vector< Dipole, NodeId > (FaceMap, Vector< FaceId, FaceId >)(VertMap
class MRMESH_CLASS MR::Vector< VertId, VertId > (EdgeMap, Vector< EdgeId, EdgeId >)(UndirectedEdgeMap
class MRMESH_CLASS MR::Vector< UndirectedEdgeId, UndirectedEdgeId > (ObjMap, Vector< ObjId, ObjId >)(WholeEdgeMap
 mapping of whole edges: map[e]->f, map[e.sym()]->f.sym(), where only map[e] for even edges is stored
class MRMESH_CLASS MR::Vector< EdgeId, UndirectedEdgeId > (UndirectedEdge2RegionMap, Vector< RegionId, UndirectedEdgeId >)(Face2RegionMap
class MRMESH_CLASS MR::Vector< RegionId, FaceId > (Vert2RegionMap, Vector< RegionId, VertId >)(VertCoords
class MRMESH_CLASS MR::Vector< Vector3f, VertId > (VertCoords2, Vector< Vector2f, VertId >)(VertNormals
class MRMESH_CLASS MR::Vector< Vector3f, VertId > (VertUVCoords, Vector< UVCoord, VertId >)(FaceNormals
class MRMESH_CLASS MR::Vector< Vector3f, FaceId > (TexturePerFace, Vector< TextureId, FaceId >)(VertColors
class MRMESH_CLASS MR::Vector< Color, VertId > (FaceColors, Vector< Color, FaceId >)(EdgeColors
class MRMESH_CLASS MR::Vector< Color, EdgeId > (UndirectedEdgeColors, Vector< Color, UndirectedEdgeId >)(VertScalars
class MRMESH_CLASS MR::Vector< float, VertId > (FaceScalars, Vector< float, FaceId >)(EdgeScalars
class MRMESH_CLASS MR::Vector< float, EdgeId > (UndirectedEdgeScalars, Vector< float, UndirectedEdgeId >)) using VertPredicate
template<typename T>
bool MR::contains (const std::function< bool(Id< T >)> &pred, Id< T > id)
template<typename T, typename I>
struct MRMESH_CLASS MR::BMap (FaceBMap, BMap< FaceId, FaceId >)(VertBMap
struct MRMESH_CLASS MR::BMap< VertId, VertId > (EdgeBMap, BMap< EdgeId, EdgeId >)(UndirectedEdgeBMap
struct MRMESH_CLASS MR::BMap< UndirectedEdgeId, UndirectedEdgeId > (WholeEdgeBMap, BMap< EdgeId, UndirectedEdgeId >)) template< typename T
template<typename T>
struct MRMESH_CLASS MR::MeshRegion (MeshPart, MeshRegion< FaceTag >)(MeshVertPart
 MR::Polyline< Vector2f > (Polyline3, Polyline< Vector3f >)) 1((template< typename V > class MRMESH_CLASS)
 MR::AABBTreePolyline< Vector2f > (AABBTreePolyline3, AABBTreePolyline< Vector3f >)) template< typename T > struct IntersectionPrecomputes
 MR::PolylineProjectionResult< Vector2f > (PolylineProjectionResult3, PolylineProjectionResult< Vector3f >)) 1((template< typename V > struct)
 MR::PolylineProjectionWithOffsetResult< Vector2f > (PolylineProjectionWithOffsetResult3, PolylineProjectionWithOffsetResult< Vector3f >)) class DistanceMap
template<typename Tag>
class MRMESH_CLASS MR::ColorMapAggregator (VertColorMapAggregator, ColorMapAggregator< VertTag >)(UndirEdgeColorMapAggregator
class MRMESH_CLASS MR::ColorMapAggregator< UndirectedEdgeTag > (FaceColorMapAggregator, ColorMapAggregator< FaceTag >)) template< typename T > class FewSmallest
template<typename T>
constexpr T MR::sqr (T x) noexcept
 squared value
template<typename T>
constexpr int MR::sgn (T x) noexcept
 sign of given value in { -1, 0, 1 }
template<typename T>
constexpr T MR::distance (T x, T y) noexcept
 absolute difference between two value
template<typename T>
constexpr T MR::distanceSq (T x, T y) noexcept
 squared difference between two value
template<typename V, typename T>
constexpr auto MR::lerp (V v0, V v1, T t) noexcept
 Linear interpolation: returns v0 when t==0 and v1 when t==1.
template<class... Ts>
 MR::overloaded (Ts...) -> overloaded< Ts... >
 explicit deduction guide (not needed as of C++20, but still needed in Clang)
constexpr auto MR::Locale::translate_noop (const char *str) noexcept
 special no-op inline functions to mark string literal as translatable
constexpr auto MR::Locale::translate_noop (const char *ctx, const char *str) noexcept
constexpr auto MR::Locale::translate_noop (const char *single, const char *plural, Int64 n) noexcept
constexpr auto MR::Locale::translate_noop (const char *ctx, const char *single, const char *plural, Int64 n) noexcept
Vector3f MR::orgPnt (const MeshTopology &topology, const VertCoords &points, EdgeId e)
 returns coordinates of the edge origin
Vector3f MR::destPnt (const MeshTopology &topology, const VertCoords &points, EdgeId e)
 returns coordinates of the edge destination
Vector3f MR::edgeVector (const MeshTopology &topology, const VertCoords &points, EdgeId e)
 returns vector equal to edge destination point minus edge origin point
LineSegm3f MR::edgeSegment (const MeshTopology &topology, const VertCoords &points, EdgeId e)
 returns line segment of given edge
Vector3f MR::edgePoint (const MeshTopology &topology, const VertCoords &points, EdgeId e, float f)
 returns a point on the edge: origin point for f=0 and destination point for f=1
Vector3f MR::edgePoint (const MeshTopology &topology, const VertCoords &points, const MeshEdgePoint &ep)
 computes coordinates of point given as edge and relative position on it
Vector3f MR::edgeCenter (const MeshTopology &topology, const VertCoords &points, UndirectedEdgeId e)
 computes the center of given edge
void MR::getLeftTriPoints (const MeshTopology &topology, const VertCoords &points, EdgeId e, Vector3f &v0, Vector3f &v1, Vector3f &v2)
 returns three points of left face of e: v0 = orgPnt( e ), v1 = destPnt( e )
MR_BIND_IGNORE void MR::getLeftTriPoints (const MeshTopology &topology, const VertCoords &points, EdgeId e, Vector3f(&v)[3])
Triangle3f MR::getLeftTriPoints (const MeshTopology &topology, const VertCoords &points, EdgeId e)
 returns three points of left face of e: res[0] = orgPnt( e ), res[1] = destPnt( e )
void MR::getTriPoints (const MeshTopology &topology, const VertCoords &points, FaceId f, Vector3f &v0, Vector3f &v1, Vector3f &v2)
 returns three points of given face
MR_BIND_IGNORE void MR::getTriPoints (const MeshTopology &topology, const VertCoords &points, FaceId f, Vector3f(&v)[3])
Triangle3f MR::getTriPoints (const MeshTopology &topology, const VertCoords &points, FaceId f)
 returns three points of given face
Vector3f MR::triPoint (const MeshTopology &topology, const VertCoords &points, const MeshTriPoint &p)
 computes coordinates of point given as face and barycentric representation
Vector3f MR::triCenter (const MeshTopology &topology, const VertCoords &points, FaceId f)
 returns the centroid of given triangle
float MR::triangleAspectRatio (const MeshTopology &topology, const VertCoords &points, FaceId f)
 returns aspect ratio of given mesh triangle equal to the ratio of the circum-radius to twice its in-radius
float MR::circumcircleDiameterSq (const MeshTopology &topology, const VertCoords &points, FaceId f)
 returns squared circumcircle diameter of given mesh triangle
float MR::circumcircleDiameter (const MeshTopology &topology, const VertCoords &points, FaceId f)
 returns circumcircle diameter of given mesh triangle
MeshTriPoint MR::toTriPoint (const MeshTopology &topology, const VertCoords &points, FaceId f, const Vector3f &p)
 converts face id and 3d point into barycentric representation
MeshTriPoint MR::toTriPoint (const MeshTopology &topology, const VertCoords &points, const PointOnFace &p)
 converts face id and 3d point into barycentric representation
MeshEdgePoint MR::toEdgePoint (const MeshTopology &topology, const VertCoords &points, EdgeId e, const Vector3f &p)
 converts edge and 3d point into edge-point representation
VertId MR::getClosestVertex (const MeshTopology &topology, const VertCoords &points, const PointOnFace &p)
 returns one of three face vertices, closest to given point
VertId MR::getClosestVertex (const MeshTopology &topology, const VertCoords &points, const MeshTriPoint &p)
 returns one of three face vertices, closest to given point
UndirectedEdgeId MR::getClosestEdge (const MeshTopology &topology, const VertCoords &points, const PointOnFace &p)
 returns one of three face edges, closest to given point
UndirectedEdgeId MR::getClosestEdge (const MeshTopology &topology, const VertCoords &points, const MeshTriPoint &p)
 returns one of three face edges, closest to given point
float MR::edgeLength (const MeshTopology &topology, const VertCoords &points, UndirectedEdgeId e)
 returns Euclidean length of the edge
UndirectedEdgeScalars MR::edgeLengths (const MeshTopology &topology, const VertCoords &points)
 computes and returns the lengths of all edges in the mesh
float MR::edgeLengthSq (const MeshTopology &topology, const VertCoords &points, UndirectedEdgeId e)
 returns squared Euclidean length of the edge (faster to compute than length)
Vector3f MR::leftDirDblArea (const MeshTopology &topology, const VertCoords &points, EdgeId e)
 computes directed double area of left triangular face of given edge
Vector3f MR::dirDblArea (const MeshTopology &topology, const VertCoords &points, FaceId f)
 computes directed double area for a triangular face from its vertices
Vector< Vector3f, VertId > MR::dirDblAreas (const MeshTopology &topology, const VertCoords &points, const VertBitSet *region=nullptr)
 computes and returns the directed double area for every (region) vertex in the mesh
float MR::dblArea (const MeshTopology &topology, const VertCoords &points, FaceId f)
 returns twice the area of given face
float MR::area (const MeshTopology &topology, const VertCoords &points, FaceId f)
 returns the area of given face
MR_BIND_IGNORE double MR::area (const MeshTopology &topology, const VertCoords &points, const FaceBitSet &fs)
double MR::area (const MeshTopology &topology, const VertCoords &points, const FaceBitSet *fs=nullptr)
 computes the area of given face-region (or whole mesh)
MR_BIND_IGNORE Vector3d MR::dirArea (const MeshTopology &topology, const VertCoords &points, const FaceBitSet &fs)
Vector3d MR::dirArea (const MeshTopology &topology, const VertCoords &points, const FaceBitSet *fs=nullptr)
 computes the sum of directed areas for faces from given region (or whole mesh)
MR_BIND_IGNORE double MR::projArea (const MeshTopology &topology, const VertCoords &points, const Vector3f &dir, const FaceBitSet &fs)
double MR::projArea (const MeshTopology &topology, const VertCoords &points, const Vector3f &dir, const FaceBitSet *fs=nullptr)
 computes the sum of absolute projected area of faces from given region (or whole mesh) as visible if look from given direction
double MR::volume (const MeshTopology &topology, const VertCoords &points, const FaceBitSet *region=nullptr)
double MR::holePerimeter (const MeshTopology &topology, const VertCoords &points, EdgeId e)
 computes the perimeter of the hole specified by one of its edges with no valid left face (left is hole)
Vector3d MR::holeDirArea (const MeshTopology &topology, const VertCoords &points, EdgeId e)
Vector3f MR::leftTangent (const MeshTopology &topology, const VertCoords &points, EdgeId e)
 computes unit vector that is both orthogonal to given edge and to the normal of its left triangle, the vector is directed inside left triangle
Vector3f MR::leftNormal (const MeshTopology &topology, const VertCoords &points, EdgeId e)
 computes triangular face normal from its vertices
Vector3f MR::normal (const MeshTopology &topology, const VertCoords &points, FaceId f)
 computes triangular face normal from its vertices
Plane3f MR::getPlane3f (const MeshTopology &topology, const VertCoords &points, FaceId f)
 returns the plane containing given triangular face with normal looking outwards
Plane3d MR::getPlane3d (const MeshTopology &topology, const VertCoords &points, FaceId f)
Vector3f MR::dirDblArea (const MeshTopology &topology, const VertCoords &points, VertId v)
 computes sum of directed double areas of all triangles around given vertex
float MR::dblArea (const MeshTopology &topology, const VertCoords &points, VertId v)
 computes the length of summed directed double areas of all triangles around given vertex
Vector3f MR::normal (const MeshTopology &topology, const VertCoords &points, VertId v)
 computes normal in a vertex using sum of directed areas of neighboring triangles
Vector3f MR::normal (const MeshTopology &topology, const VertCoords &points, const MeshTriPoint &p)
Vector3f MR::pseudonormal (const MeshTopology &topology, const VertCoords &points, VertId v, const FaceBitSet *region=nullptr)
Vector3f MR::pseudonormal (const MeshTopology &topology, const VertCoords &points, UndirectedEdgeId e, const FaceBitSet *region=nullptr)
 computes normalized half sum of face normals sharing given edge (only (region) faces will be considered);
Vector3f MR::pseudonormal (const MeshTopology &topology, const VertCoords &points, const MeshTriPoint &p, const FaceBitSet *region=nullptr)
float MR::sumAngles (const MeshTopology &topology, const VertCoords &points, VertId v, bool *outBoundaryVert=nullptr)
 computes the sum of triangle angles at given vertex; optionally returns whether the vertex is on boundary
Expected< VertBitSet > MR::findSpikeVertices (const MeshTopology &topology, const VertCoords &points, float minSumAngle, const VertBitSet *region=nullptr, const ProgressCallback &cb={})
 returns vertices where the sum of triangle angles is below given threshold
float MR::dihedralAngleSin (const MeshTopology &topology, const VertCoords &points, UndirectedEdgeId e)
float MR::dihedralAngleCos (const MeshTopology &topology, const VertCoords &points, UndirectedEdgeId e)
float MR::dihedralAngle (const MeshTopology &topology, const VertCoords &points, UndirectedEdgeId e)
float MR::discreteMeanCurvature (const MeshTopology &topology, const VertCoords &points, VertId v)
float MR::discreteMeanCurvature (const MeshTopology &topology, const VertCoords &points, UndirectedEdgeId e)
float MR::discreteGaussianCurvature (const MeshTopology &topology, const VertCoords &points, VertId v, bool *outBoundaryVert=nullptr)
UndirectedEdgeBitSet MR::findCreaseEdges (const MeshTopology &topology, const VertCoords &points, float angleFromPlanar)
 finds all mesh edges where dihedral angle is distinct from planar PI angle on at least given value
float MR::leftCotan (const MeshTopology &topology, const VertCoords &points, EdgeId e)
float MR::cotan (const MeshTopology &topology, const VertCoords &points, UndirectedEdgeId ue)
QuadraticForm3f MR::quadraticForm (const MeshTopology &topology, const VertCoords &points, VertId v, bool angleWeigted, const FaceBitSet *region=nullptr, const UndirectedEdgeBitSet *creases=nullptr)
Box3f MR::computeBoundingBox (const MeshTopology &topology, const VertCoords &points, const FaceBitSet *region, const AffineXf3f *toWorld=nullptr)
float MR::averageEdgeLength (const MeshTopology &topology, const VertCoords &points)
 computes average length of an edge in the mesh given by (topology, points)
Vector3f MR::findCenterFromPoints (const MeshTopology &topology, const VertCoords &points)
 computes average position of all valid mesh vertices
Vector3f MR::findCenterFromFaces (const MeshTopology &topology, const VertCoords &points)
 computes center of mass considering that density of all triangles is the same
Vector3f MR::findCenterFromBBox (const MeshTopology &topology, const VertCoords &points)
 computes bounding box and returns its center
 MR::MeshOrPoints::MeshOrPoints (const MeshPart &mp)
 MR::MeshOrPoints::MeshOrPoints (const PointCloudPart &pcp)
 MR::MeshOrPoints::MeshOrPoints (const Mesh &mesh)
 these constructors are redundant for C++, but important for python bindings
 MR::MeshOrPoints::MeshOrPoints (const PointCloud &pc)
const MeshPart * MR::MeshOrPoints::asMeshPart () const
 if this object holds a mesh part then returns pointer on it, otherwise returns nullptr
const PointCloudPartMR::MeshOrPoints::asPointCloudPart () const
 if this object holds a point cloud part then returns pointer on it, otherwise returns nullptr
Box3f MR::MeshOrPoints::getObjBoundingBox () const
void MR::MeshOrPoints::cacheAABBTree () const
 if AABBTree is already built does nothing otherwise builds and caches it
Box3f MR::MeshOrPoints::computeBoundingBox (const AffineXf3f *toWorld=nullptr) const
void MR::MeshOrPoints::accumulate (PointAccumulator &accum, const AffineXf3f *xf=nullptr) const
 Adds in existing PointAccumulator the elements of the contained object.
std::optional< VertBitSet > MR::MeshOrPoints::pointsGridSampling (float voxelSize, size_t maxVoxels=500000, const ProgressCallback &cb={}) const
const VertCoords & MR::MeshOrPoints::points () const
 gives access to points-vector (which can include invalid points as well)
const VertBitSet & MR::MeshOrPoints::validPoints () const
 gives access to bit set of valid points
std::function< Vector3f(VertId)> MR::MeshOrPoints::normals () const
 returns normals generating function: VertId->normal (or empty for point cloud without normals)
std::function< float(VertId)> MR::MeshOrPoints::weights () const
 MR::MeshOrPoints::ProjectionResult::operator bool () const
bool MR::MeshOrPoints::ProjectionResult::valid () const
std::function< ProjectionResult(const Vector3f &)> MR::MeshOrPoints::projector () const
 returns a function that finds projection (closest) points on this: Vector3f->ProjectionResult
LimitedProjectorFunc MR::MeshOrPoints::limitedProjector () const
std::function< MeshOrPoints::ProjectionResult(const Vector3f &)> MR::MeshOrPointsXf::projector () const
 returns a function that finds projection (closest) points on this: Vector3f->ProjectionResult
MeshOrPoints::LimitedProjectorFunc MR::MeshOrPointsXf::limitedProjector () const
std::optional< MeshOrPointsMR::getMeshOrPoints (const Object *obj)
 constructs MeshOrPoints from ObjectMesh or ObjectPoints, otherwise returns nullopt
std::optional< MeshOrPointsXfMR::getMeshOrPointsXf (const Object *obj)
void MR::projectOnAll (const Vector3f &pt, const AABBTreeObjects &tree, float upDistLimitSq, const ProjectOnAllCallback &callback, ObjId skipObjId={})
 finds closest point on every object within given distance
MeshOrPoints::ProjectionResult MR::projectWorldPointOntoObject (const Vector3f &p, const Object &obj)
 Projects a point onto an object, in world space. Returns .valid() == false if this object type isn't projectable onto.
MeshOrPoints::ProjectionResult MR::projectWorldPointOntoObjectsRecursive (const Vector3f &p, const Object *root=nullptr, std::function< bool(const Object &)> projectPred=nullptr, std::function< bool(const Object &)> recursePred=nullptr)
 MR::MeshOrPointsObject::MeshOrPointsObject ()
 MR::MeshOrPointsObject::MeshOrPointsObject (std::shared_ptr< VisualObject > vo)
 MR::MeshOrPointsObject::MeshOrPointsObject (std::shared_ptr< ObjectMesh > om)
 MR::MeshOrPointsObject::MeshOrPointsObject (std::shared_ptr< ObjectPoints > op)
void MR::MeshOrPointsObject::set (std::shared_ptr< ObjectMesh > om)
 set to hold ObjectMesh
ObjectMeshMR::MeshOrPointsObject::asObjectMesh () const
 if holding ObjectMesh, return pointer to it, otherwise return nullptr
void MR::MeshOrPointsObject::set (std::shared_ptr< ObjectPoints > op)
 set to hold ObjectPoints
ObjectPointsMR::MeshOrPointsObject::asObjectPoints () const
 if holding ObjectPoints, return pointer to it, otherwise return nullptr
void MR::MeshOrPointsObject::reset ()
const std::shared_ptr< VisualObject > & MR::MeshOrPointsObject::operator-> () const
const std::shared_ptr< VisualObject > & MR::MeshOrPointsObject::get () const
bool MR::MeshOrPointsObject::operator== (std::shared_ptr< VisualObject > other) const
MeshOrPoints MR::MeshOrPointsObject::meshOrPoints () const
 get class that hold either mesh part or point cloud
Expected< std::vector< FaceBitSet > > MR::findOverhangs (const Mesh &mesh, const FindOverhangsSettings &settings)
 Find face regions that might create overhangs.
 MR::MeshRegion< RegionTag >::MeshRegion (const Mesh &m, const TaggedBitSet< RegionTag > *bs=nullptr) noexcept
 nullptr here means whole mesh
 MR::MeshRegion< RegionTag >::MeshRegion (const MeshRegion &other) noexcept=default
 Make this assignable. A better idea would be to rewrite the class to not use references, but doing this instead preserves API compatibility.
MeshRegionMR::MeshRegion< RegionTag >::operator= (const MeshRegion &other) noexcept
FaceBitSet MR::patchMesh (Mesh &mesh, const FaceBitSet &patchBS, const FillHoleNicelySettings &settings={})
void MR::replicateZ (Mesh &m, const Mesh &target)
 adjusts z-coordinates of (m) vertices to make adjusted (m) similar to (target)
template<typename T>
auto MR::onEdgeSplitVertAttribute (const Mesh &mesh, Vector< T, VertId > &data)
template<typename T>
auto MR::onEdgeSplitFaceAttribute (const Mesh &mesh, Vector< T, FaceId > &data)
OnEdgeSplit MR::meshOnEdgeSplitAttribute (const Mesh &mesh, const MeshAttributesToUpdate &params)
OnEdgeSplit MR::meshOnEdgeSplitVertAttribute (const Mesh &mesh, const MeshAttributesToUpdate &params)
OnEdgeSplit MR::meshOnEdgeSplitFaceAttribute (const Mesh &mesh, const MeshAttributesToUpdate &params)
std::optional< VertScalars > MR::computeRayThicknessAtVertices (const Mesh &mesh, const ProgressCallback &progress={})
 returns the distance from each vertex along minus normal to the nearest mesh intersection (or FLT_MAX if no intersection found)
MR_BIND_IGNORE VertScalars MR::computeThicknessAtVertices (const Mesh &mesh)
void MR::MeshPoint::set (const Mesh &mesh, const MeshTriPoint &p)
MeshIntersectionResult MR::rayInsideIntersect (const Mesh &mesh, const MeshPoint &m, float rayEnd=FLT_MAX)
 returns the nearest intersection between the mesh and the ray from given point along minus normal (inside the mesh)
MeshIntersectionResult MR::rayInsideIntersect (const Mesh &mesh, VertId v, float rayEnd=FLT_MAX)
InSphere MR::findInSphere (const Mesh &mesh, const MeshPoint &m, const InSphereSearchSettings &settings)
 finds maximal sphere inscribed in the mesh touching point (p) with center along the normal at (p)
InSphere MR::findInSphere (const Mesh &mesh, VertId v, const InSphereSearchSettings &settings)
std::optional< VertScalars > MR::computeInSphereThicknessAtVertices (const Mesh &mesh, const InSphereSearchSettings &settings, const ProgressCallback &progress={})
 returns the thickness at each vertex as the diameter of the maximal inscribed sphere
EdgeId MR::MeshTopology::makeEdge ()
 creates an edge not associated with any vertex or face
bool MR::MeshTopology::isLoneEdge (EdgeId a) const
 checks whether the edge is disconnected from all other edges and disassociated from all vertices and faces (as if after makeEdge)
UndirectedEdgeId MR::MeshTopology::lastNotLoneUndirectedEdge () const
 returns last not lone undirected edge id, or invalid id if no such edge exists
EdgeId MR::MeshTopology::lastNotLoneEdge () const
 returns last not lone edge id, or invalid id if no such edge exists
void MR::MeshTopology::excludeLoneEdges (UndirectedEdgeBitSet &edges) const
 remove all lone edges from given set
size_t MR::MeshTopology::edgeSize () const
 returns the number of half-edge records including lone ones
size_t MR::MeshTopology::edgeCapacity () const
 returns the number of allocated edge records
size_t MR::MeshTopology::undirectedEdgeSize () const
 returns the number of undirected edges (pairs of half-edges) including lone ones
size_t MR::MeshTopology::undirectedEdgeCapacity () const
 returns the number of allocated undirected edges (pairs of half-edges)
size_t MR::MeshTopology::computeNotLoneUndirectedEdges () const
 computes the number of not-lone (valid) undirected edges
UndirectedEdgeBitSet MR::MeshTopology::findNotLoneUndirectedEdges () const
 finds and returns all not-lone (valid) undirected edges
void MR::MeshTopology::edgeReserve (size_t newCapacity)
 sets the capacity of half-edges vector
bool MR::MeshTopology::hasEdge (EdgeId e) const
 returns true if given edge is within valid range and not-lone
size_t MR::MeshTopology::heapBytes () const
 returns the amount of memory this object occupies on heap
void MR::MeshTopology::shrinkToFit ()
 requests the removal of unused capacity
void MR::MeshTopology::splice (EdgeId a, EdgeId b)
EdgeId MR::MeshTopology::collapseEdge (EdgeId e, const std::function< void(EdgeId del, EdgeId rem)> &onEdgeDel)
EdgeId MR::MeshTopology::next (EdgeId he) const
 next (counter clock wise) half-edge in the origin ring
EdgeId MR::MeshTopology::prev (EdgeId he) const
 previous (clock wise) half-edge in the origin ring
VertId MR::MeshTopology::org (EdgeId he) const
 returns origin vertex of half-edge
VertId MR::MeshTopology::dest (EdgeId he) const
 returns destination vertex of half-edge
FaceId MR::MeshTopology::left (EdgeId he) const
 returns left face of half-edge
FaceId MR::MeshTopology::right (EdgeId he) const
 returns right face of half-edge
void MR::MeshTopology::setOrg (EdgeId a, VertId v)
void MR::MeshTopology::setLeft (EdgeId a, FaceId f)
bool MR::MeshTopology::fromSameOriginRing (EdgeId a, EdgeId b) const
 returns true if a and b are both from the same origin ring
bool MR::MeshTopology::fromSameLeftRing (EdgeId a, EdgeId b) const
 returns true if a and b are both from the same left face ring
int MR::MeshTopology::getOrgDegree (EdgeId a) const
 returns the number of edges around the origin vertex, returns 1 for lone edges
int MR::MeshTopology::getVertDegree (VertId v) const
 returns the number of edges around the given vertex
int MR::MeshTopology::getLeftDegree (EdgeId a) const
 returns the number of edges around the left face: 3 for triangular faces, ...
int MR::MeshTopology::getFaceDegree (FaceId f) const
 returns the number of edges around the given face: 3 for triangular faces, ...
bool MR::MeshTopology::isLeftTri (EdgeId a) const
 returns true if the cell to the left of a is triangular
void MR::MeshTopology::getTriVerts (FaceId f, VertId &v0, VertId &v1, VertId &v2) const
MR_BIND_IGNORE void MR::MeshTopology::getTriVerts (FaceId f, VertId(&v)[3]) const
void MR::MeshTopology::getTriVerts (FaceId f, ThreeVertIds &v) const
 This one is not in the bindings because of the reference-to-array parameter.
ThreeVertIds MR::MeshTopology::getTriVerts (FaceId f) const
bool MR::MeshTopology::isTriVert (FaceId f, VertId v) const
 return true if triangular face (f) has (v) as one of its vertices
std::vector< ThreeVertIdsMR::MeshTopology::getAllTriVerts () const
 returns three vertex ids for valid triangles, invalid triangles are skipped
Triangulation MR::MeshTopology::getTriangulation () const
void MR::MeshTopology::getLeftTriVerts (EdgeId a, VertId &v0, VertId &v1, VertId &v2) const
MR_BIND_IGNORE void MR::MeshTopology::getLeftTriVerts (EdgeId a, VertId(&v)[3]) const
void MR::MeshTopology::getLeftTriVerts (EdgeId a, ThreeVertIds &v) const
 This one is not in the bindings because of the reference-to-array parameter.
ThreeVertIds MR::MeshTopology::getLeftTriVerts (EdgeId a) const
template<typename T>
void MR::MeshTopology::forEachVertex (const MeshTriPoint &p, T &&callback) const
void MR::MeshTopology::getLeftTriEdges (EdgeId e0, EdgeId &e1, EdgeId &e2) const
void MR::MeshTopology::getTriEdges (FaceId f, EdgeId &e0, EdgeId &e1, EdgeId &e2) const
MR_BIND_IGNORE void MR::MeshTopology::getTriEdges (FaceId f, EdgeId(&e)[3]) const
bool MR::MeshTopology::isLeftQuad (EdgeId a) const
 This one is not in the bindings because of the reference-to-array parameter.
const Vector< EdgeId, VertId > & MR::MeshTopology::edgePerVertex () const
 for all valid vertices this vector contains an edge with the origin there
EdgeId MR::MeshTopology::edgeWithOrg (VertId a) const
 returns valid edge if given vertex is present in the mesh
bool MR::MeshTopology::hasVert (VertId a) const
 returns true if given vertex is present in the mesh
int MR::MeshTopology::numValidVerts () const
 returns the number of valid vertices
VertId MR::MeshTopology::lastValidVert () const
 returns last valid vertex id, or invalid id if no single valid vertex exists
VertId MR::MeshTopology::addVertId ()
 creates new vert-id not associated with any edge yet
void MR::MeshTopology::vertResize (size_t newSize)
 explicitly increases the size of vertices vector
void MR::MeshTopology::vertResizeWithReserve (size_t newSize)
 explicitly increases the size of vertices vector, doubling the current capacity if it was not enough
void MR::MeshTopology::vertReserve (size_t newCapacity)
 sets the capacity of vertices vector
size_t MR::MeshTopology::vertSize () const
 returns the number of vertex records including invalid ones
size_t MR::MeshTopology::vertCapacity () const
 returns the number of allocated vert records
const VertBitSet & MR::MeshTopology::getValidVerts () const
 returns cached set of all valid vertices
void MR::MeshTopology::flip (VertBitSet &vs) const
 sets in (vs) all valid vertices that were not selected before the call, and resets other bits
const VertBitSet & MR::MeshTopology::getVertIds (const VertBitSet *region) const
 if region pointer is not null then converts it in reference, otherwise returns all valid vertices in the mesh
const Vector< EdgeId, FaceId > & MR::MeshTopology::edgePerFace () const
 for all valid faces this vector contains an edge with that face at left
EdgeId MR::MeshTopology::edgeWithLeft (FaceId a) const
 returns valid edge if given vertex is present in the mesh
bool MR::MeshTopology::hasFace (FaceId a) const
 returns true if given face is present in the mesh
EdgeId MR::MeshTopology::sharedEdge (FaceId l, FaceId r) const
 if two valid faces share the same edge then it is found and returned
EdgeId MR::MeshTopology::sharedVertInOrg (EdgeId a, EdgeId b) const
 if two valid edges share the same vertex then it is found and returned as Edge with this vertex in origin
EdgeId MR::MeshTopology::sharedVertInOrg (FaceId l, FaceId r) const
 if two valid faces share the same vertex then it is found and returned as Edge with this vertex in origin
FaceId MR::MeshTopology::sharedFace (EdgeId a, EdgeId b) const
 if two valid edges belong to same valid face then it is found and returned
int MR::MeshTopology::numValidFaces () const
 returns the number of valid faces
FaceId MR::MeshTopology::lastValidFace () const
 returns last valid face id, or invalid id if no single valid face exists
FaceId MR::MeshTopology::addFaceId ()
 creates new face-id not associated with any edge yet
void MR::MeshTopology::deleteFace (FaceId f, const UndirectedEdgeBitSet *keepEdges=nullptr)
 deletes the face, also deletes its edges and vertices if they were not shared by other faces and not in
void MR::MeshTopology::deleteFaces (const FaceBitSet &fs, const UndirectedEdgeBitSet *keepEdges=nullptr)
 deletes multiple given faces by calling deleteFace for each
void MR::MeshTopology::faceResize (size_t newSize)
 explicitly increases the size of faces vector
void MR::MeshTopology::faceResizeWithReserve (size_t newSize)
 explicitly increases the size of faces vector, doubling the current capacity if it was not enough
void MR::MeshTopology::faceReserve (size_t newCapacity)
 sets the capacity of faces vector
size_t MR::MeshTopology::faceSize () const
 returns the number of face records including invalid ones
size_t MR::MeshTopology::faceCapacity () const
 returns the number of allocated face records
const FaceBitSet & MR::MeshTopology::getValidFaces () const
 returns cached set of all valid faces
void MR::MeshTopology::flip (FaceBitSet &fs) const
 sets in (fs) all valid faces that were not selected before the call, and resets other bits
const FaceBitSet & MR::MeshTopology::getFaceIds (const FaceBitSet *region) const
 if region pointer is not null then converts it in reference, otherwise returns all valid faces in the mesh
EdgeId MR::MeshTopology::bdEdgeSameLeft (EdgeId e, const FaceBitSet *region=nullptr) const
bool MR::MeshTopology::isLeftBdFace (EdgeId e, const FaceBitSet *region=nullptr) const
EdgeId MR::MeshTopology::bdEdgeWithLeft (FaceId f, const FaceBitSet *region=nullptr) const
bool MR::MeshTopology::isBdFace (FaceId f, const FaceBitSet *region=nullptr) const
 returns true if given face belongs to the region and it has a boundary edge (isBdEdge(e,region) == true)
FaceBitSet MR::MeshTopology::findBdFaces (const FaceBitSet *region=nullptr) const
 returns all faces for which isBdFace(f, region) is true
bool MR::MeshTopology::isLeftInRegion (EdgeId e, const FaceBitSet *region=nullptr) const
 return true if left face of given edge belongs to region (or just have valid id if region is nullptr)
bool MR::MeshTopology::isInnerEdge (EdgeId e, const FaceBitSet *region=nullptr) const
 return true if given edge is inner for given region (or for whole mesh if region is nullptr)
bool MR::MeshTopology::isBdEdge (EdgeId e, const FaceBitSet *region=nullptr) const
EdgeBitSet MR::MeshTopology::findLeftBdEdges (const FaceBitSet *region=nullptr, const EdgeBitSet *test=nullptr) const
 returns all (test) edges for which left(e) does not belong to the region and isBdEdge(e, region) is true
EdgeId MR::MeshTopology::bdEdgeSameOrigin (EdgeId e, const FaceBitSet *region=nullptr) const
bool MR::MeshTopology::isBdVertexInOrg (EdgeId e, const FaceBitSet *region=nullptr) const
 returns true if edge's origin is on (region) boundary
EdgeId MR::MeshTopology::bdEdgeWithOrigin (VertId v, const FaceBitSet *region=nullptr) const
bool MR::MeshTopology::isBdVertex (VertId v, const FaceBitSet *region=nullptr) const
 returns true if given vertex is on (region) boundary
VertBitSet MR::MeshTopology::findBdVerts (const FaceBitSet *region=nullptr, const VertBitSet *test=nullptr) const
 returns all (test) vertices for which isBdVertex(v, region) is true
bool MR::MeshTopology::isInnerOrBdVertex (VertId v, const FaceBitSet *region=nullptr) const
 returns true if one of incident faces of given vertex pertain to given region (or any such face exists if region is nullptr)
bool MR::MeshTopology::isLeftBdEdge (EdgeId e, const FaceBitSet *region=nullptr) const
 returns true if left face of given edge belongs to given region (if provided) and right face either does not exist or does not belong
bool MR::MeshTopology::isInnerOrBdEdge (EdgeId e, const FaceBitSet *region=nullptr) const
 return true if given edge is inner or boundary for given region (or for whole mesh if region is nullptr), returns false for lone edges
EdgeId MR::MeshTopology::nextLeftBd (EdgeId e, const FaceBitSet *region=nullptr, Turn turn=Turn::Rightmost) const
EdgeId MR::MeshTopology::prevLeftBd (EdgeId e, const FaceBitSet *region=nullptr, Turn turn=Turn::Rightmost) const
EdgeId MR::MeshTopology::findEdge (VertId o, VertId d) const
 finds and returns edge from o to d in the mesh; returns invalid edge otherwise
bool MR::MeshTopology::isClosed (const FaceBitSet *region=nullptr) const
 returns true if the mesh (region) does not have any neighboring holes
std::vector< EdgeId > MR::MeshTopology::findHoleRepresentiveEdges (const FaceBitSet *region=nullptr) const
int MR::MeshTopology::findNumHoles (EdgeBitSet *holeRepresentativeEdges=nullptr) const
EdgeLoop MR::MeshTopology::getLeftRing (EdgeId e) const
 returns full edge-loop of left face from (e) starting from (e) itself
std::vector< EdgeLoopMR::MeshTopology::getLeftRings (const std::vector< EdgeId > &es) const
MR_BIND_IGNORE EdgeBitSet MR::MeshTopology::findBoundaryEdges () const
 returns all boundary edges, where each edge does not have valid left face
MR_BIND_IGNORE FaceBitSet MR::MeshTopology::findBoundaryFaces (const FaceBitSet *region=nullptr) const
MR_BIND_IGNORE VertBitSet MR::MeshTopology::findBoundaryVerts (const VertBitSet *region=nullptr) const
VertBitSet MR::MeshTopology::getPathVertices (const EdgePath &path) const
 returns all vertices incident to path edges
FaceBitSet MR::MeshTopology::getPathLeftFaces (const EdgePath &path) const
 returns all valid left faces of path edges
FaceBitSet MR::MeshTopology::getPathRightFaces (const EdgePath &path) const
 returns all valid right faces of path edges
void MR::MeshTopology::flipEdge (EdgeId e)
template<typename T>
void MR::MeshTopology::flipEdgesIn (EdgeId e0, T &&flipNeeded)
template<typename T>
void MR::MeshTopology::flipEdgesIn (VertId v, T &&flipNeeded)
template<typename T>
void MR::MeshTopology::flipEdgesOut (EdgeId e0, T &&flipNeeded)
template<typename T>
void MR::MeshTopology::flipEdgesOut (VertId v, T &&flipNeeded)
EdgeId MR::MeshTopology::splitEdge (EdgeId e, FaceBitSet *region=nullptr, FaceHashMap *new2Old=nullptr)
VertId MR::MeshTopology::splitFace (FaceId f, FaceBitSet *region=nullptr, FaceHashMap *new2Old=nullptr)
void MR::MeshTopology::flipOrientation (const UndirectedEdgeBitSet *fullComponents=nullptr)
void MR::MeshTopology::addPart (const MeshTopology &from, const PartMapping &map={}, bool rearrangeTriangles=false)
void MR::MeshTopology::addPart (const MeshTopology &from, FaceMap *outFmap=nullptr, VertMap *outVmap=nullptr, WholeEdgeMap *outEmap=nullptr, bool rearrangeTriangles=false)
void MR::MeshTopology::addPartByMask (const MeshTopology &from, const FaceBitSet *fromFaces, const PartMapping &map={})
 the same but copies only portion of (from) specified by fromFaces,
MR_BIND_IGNORE void MR::MeshTopology::addPartByMask (const MeshTopology &from, const FaceBitSet &fromFaces, const PartMapping &map={})
 This is skipped in the bindings because it conflicts with the overload taking a pointer in C#. Since that overload is strictly more useful, we're keeping that one.
void MR::MeshTopology::addPartByMask (const MeshTopology &from, const FaceBitSet *fromFaces, bool flipOrientation=false, const std::vector< EdgePath > &thisContours={}, const std::vector< EdgePath > &fromContours={}, const PartMapping &map={})
MR_BIND_IGNORE void MR::MeshTopology::addPartByMask (const MeshTopology &from, const FaceBitSet &fromFaces, bool flipOrientation=false, const std::vector< EdgePath > &thisContours={}, const std::vector< EdgePath > &fromContours={}, const PartMapping &map={})
 This is skipped in the bindings because it conflicts with the overload taking a pointer in C#. Since that overload is strictly more useful, we're keeping that one.
void MR::MeshTopology::rotateTriangles ()
 for each triangle selects edgeWithLeft with minimal origin vertex
void MR::MeshTopology::pack (FaceMap *outFmap=nullptr, VertMap *outVmap=nullptr, WholeEdgeMap *outEmap=nullptr, bool rearrangeTriangles=false)
void MR::MeshTopology::pack (const PackMapping &map)
void MR::MeshTopology::packMinMem (const PackMapping &map)
void MR::MeshTopology::write (std::ostream &s) const
 saves in binary stream
Expected< void > MR::MeshTopology::read (std::istream &s, ProgressCallback callback={})
bool MR::MeshTopology::operator== (const MeshTopology &b) const
 compare that two topologies are exactly the same
void MR::MeshTopology::resizeBeforeParallelAdd (size_t edgeSize, size_t vertSize, size_t faceSize)
void MR::MeshTopology::addPackedPart (const MeshTopology &from, EdgeId toEdgeId, const FaceMap &fmap, const VertMap &vmap)
bool MR::MeshTopology::computeValidsFromEdges (ProgressCallback cb={})
void MR::MeshTopology::stopUpdatingValids ()
 stops updating validVerts(), validFaces(), numValidVerts(), numValidFaces() for parallel processing of mesh parts
bool MR::MeshTopology::updatingValids () const
 returns whether the methods validVerts(), validFaces(), numValidVerts(), numValidFaces() can be called
void MR::MeshTopology::preferEdges (const UndirectedEdgeBitSet &stableEdges)
bool MR::MeshTopology::buildGridMesh (const GridSettings &settings, ProgressCallback cb={})
 constructs triangular grid mesh topology in parallel
bool MR::MeshTopology::checkValidity (ProgressCallback cb={}, bool allVerts=true) const
bool MR::MeshTopology::HalfEdgeRecord::operator== (const HalfEdgeRecord &b) const
 MR::MeshTopology::HalfEdgeRecord::HalfEdgeRecord () noexcept=default
 MR::MeshTopology::HalfEdgeRecord::HalfEdgeRecord (NoInit) noexcept
template<typename T, typename I>
Vector< T, IMR::rearrangeVectorByMap (const Vector< T, I > &oldVector, const BMap< I, I > &map)
 rearrange vector values by map (old.id -> new.id)
 MR::MeshTopologyDiff::MeshTopologyDiff ()=default
 constructs minimal difference, where applyAndSwap( t ) will produce empty topology
 MR::MeshTopologyDiff::MeshTopologyDiff (const MeshTopology &from, const MeshTopology &to)
 computes the difference, that can be applied to topology-from in order to get topology-to
void MR::MeshTopologyDiff::applyAndSwap (MeshTopology &t)
bool MR::MeshTopologyDiff::any () const
size_t MR::MeshTopologyDiff::heapBytes () const
 returns the amount of memory this object occupies on heap
FaceBitSet MR::subdivideWithPlane (Mesh &mesh, const Plane3f &plane, FaceHashMap *new2Old=nullptr, float eps=0, std::function< void(EdgeId, EdgeId, float)> onEdgeSplitCallback=nullptr)
MR_BIND_IGNORE void MR::trimWithPlane (Mesh &mesh, const Plane3f &plane, UndirectedEdgeBitSet *outCutEdges=nullptr, FaceHashMap *new2Old=nullptr, float eps=0, std::function< void(EdgeId, EdgeId, float)> onEdgeSplitCallback=nullptr)
 trim mesh by plane
MR_BIND_IGNORE void MR::trimWithPlane (Mesh &mesh, const Plane3f &plane, std::vector< EdgeLoop > *outCutContours, FaceHashMap *new2Old=nullptr, float eps=0, std::function< void(EdgeId, EdgeId, float)> onEdgeSplitCallback=nullptr)
 trim mesh by plane
void MR::trimWithPlane (Mesh &mesh, const TrimWithPlaneParams &params, const TrimOptionalOutput &optOut={})
 trim mesh by plane
 MR::MeshTriPoint::MeshTriPoint ()=default
 MR::MeshTriPoint::MeshTriPoint (NoInit)
 MR::MeshTriPoint::MeshTriPoint (EdgeId e, TriPointf bary)
 MR::MeshTriPoint::MeshTriPoint (const MeshEdgePoint &ep)
 MR::MeshTriPoint::MeshTriPoint (const MeshTopology &topology, VertId v)
template<typename T>
 MR::MeshTriPoint::MeshTriPoint (EdgeId e, const Vector3< T > &p, const Vector3< T > &v0, const Vector3< T > &v1, const Vector3< T > &v2)
 given a point coordinates computes its barycentric coordinates
VertId MR::MeshTriPoint::inVertex (const MeshTopology &topology) const
 returns valid vertex id if the point is in vertex, otherwise returns invalid id
bool MR::MeshTriPoint::inVertex () const
 returns true if the point is in a vertex
MeshEdgePoint MR::MeshTriPoint::onEdge (const MeshTopology &topology) const
bool MR::MeshTriPoint::isBd (const MeshTopology &topology, const FaceBitSet *region=nullptr) const
 returns true if the point is in vertex or on edge, and that location is on the boundary of the region
bool MR::MeshTriPoint::fromTriangle (const MeshTopology &topology, FaceId f) const
 returns true if the point is inside or on the boundary of given triangular face
bool MR::MeshTriPoint::valid () const
 consider this valid if the edge ID is valid
 MR::MeshTriPoint::operator bool () const
MeshTriPoint MR::MeshTriPoint::lnext (const MeshTopology &topology) const
 represents the same point relative to next edge in the same triangle
MeshTriPoint MR::MeshTriPoint::canonical (const MeshTopology &topology) const
 represents the same point relative to the topology.edgeWithLeft( topology.left( e ) )
std::array< WeightedVertex, 3 > MR::MeshTriPoint::getWeightedVerts (const MeshTopology &topology) const
 returns three weighted triangle's vertices with the sum of not-negative weights equal to 1, and the largest weight in the closest vertex
bool MR::MeshTriPoint::operator== (const MeshTriPoint &rhs) const =default
 returns true if two points are equal including equal not-unique representation
auto MR::MinArg< T, I >::asPair () const
void MR::MinArg< T, I >::include (const std::pair< T, I > &p)
 changes val and arg if given point is smaller
void MR::MinArg< T, I >::include (T testVal, I testArg)
 changes val and arg if given point is smaller
void MR::MinArg< T, I >::include (const MinArg &s)
 changes val and arg if given point is smaller
auto MR::MaxArg< T, I >::asPair () const
void MR::MaxArg< T, I >::include (const std::pair< T, I > &p)
 changes val and arg if given point is larger
void MR::MaxArg< T, I >::include (T testVal, I testArg)
 changes val and arg if given point is larger
void MR::MaxArg< T, I >::include (const MaxArg &s)
 changes val and arg if given point is larger
auto MR::MinMaxArg< T, I >::minPair () const
auto MR::MinMaxArg< T, I >::maxPair () const
void MR::MinMaxArg< T, I >::include (const std::pair< T, I > &p)
 changes min(Arg) and max(Arg) if necessary to include given point
void MR::MinMaxArg< T, I >::include (T v, I arg)
 changes min(Arg) and max(Arg) if necessary to include given point
void MR::MinMaxArg< T, I >::include (const MinMaxArg &s)
 changes min(Arg) and max(Arg) if necessary to include given segment
Expected< LoadedObjectMR::fromSceneMison (const std::filesystem::path &path, const ProgressCallback &callback={})
Expected< LoadedObjectMR::fromSceneMison (std::istream &in, const ProgressCallback &callback={})
Mesh MR::makeMovementBuildBody (const Contours3f &body, const Contours3f &trajectory, const MovementBuildBodyParams &params={})
virtual const ICPPairDataMR::ICPGroupPairs::operator[] (size_t idx) const override
virtual ICPPairDataMR::ICPGroupPairs::operator[] (size_t idx) override
virtual size_t MR::ICPGroupPairs::size () const override
void MR::updateGroupPairs (ICPGroupPairs &pairs, const ICPObjects &objs, ICPGroupProjector srcProjector, ICPGroupProjector tgtProjector, float cosThreshold, float distThresholdSq, bool mutualClosest)
 in each pair updates the target data and performs basic filtering (activation)
virtual MR::IICPTreeIndexer::~IICPTreeIndexer ()=default
virtual bool MR::IICPTreeIndexer::fromSameNode (ICPLayer l, ICPElementId eI, ICPElementId eJ) const =0
 returns true if eI and eJ are from same node
virtual ObjBitSet MR::IICPTreeIndexer::getElementLeaves (ICPLayer l, ICPElementId eId) const =0
 returns bitset of leaves of given node
virtual ICPElementBitSet MR::IICPTreeIndexer::getElementNodes (ICPLayer l, ICPElementId eId) const =0
virtual size_t MR::IICPTreeIndexer::getNumElements (ICPLayer l) const =0
virtual size_t MR::IICPTreeIndexer::getNumLayers () const =0
 MR::MultiwayICP::MultiwayICP (const ICPObjects &objects, const MultiwayICPSamplingParameters &samplingParams)
Vector< AffineXf3f, ObjId > MR::MultiwayICP::calculateTransformations (const ProgressCallback &cb={})
Vector< AffineXf3f, ObjId > MR::MultiwayICP::calculateTransformationsFixFirst (const ProgressCallback &cb={})
bool MR::MultiwayICP::resamplePoints (const MultiwayICPSamplingParameters &samplingParams)
 select pairs with origin samples on all objects
bool MR::MultiwayICP::updateAllPointPairs (const ProgressCallback &cb={})
void MR::MultiwayICP::setParams (const ICPProperties &prop)
 tune algorithm params before run calculateTransformations()
const ICPPropertiesMR::MultiwayICP::getParams () const
float MR::MultiwayICP::getMeanSqDistToPoint (std::optional< double > value={}) const
float MR::MultiwayICP::getMeanSqDistToPlane (std::optional< double > value={}) const
size_t MR::MultiwayICP::getNumSamples () const
 computes the number of samples able to form pairs
size_t MR::MultiwayICP::getNumActivePairs () const
 computes the number of active point pairs
void MR::MultiwayICP::setPerIterationCallback (std::function< void(int inter)> callback)
 sets callback that will be called for each iteration
bool MR::MultiwayICP::devIndependentEquationsModeEnabled () const
void MR::MultiwayICP::devEnableIndependentEquationsMode (bool on)
std::string MR::MultiwayICP::getStatusInfo () const
 returns status info string
const PairsPerLayerMR::MultiwayICP::getPairsPerLayer () const
 returns all pairs of all layers
const IICPTreeIndexerMR::MultiwayICP::getCascadeIndexer () const
 MR::MutexOwner::MutexOwner () noexcept=default
 MR::MutexOwner::MutexOwner (const MutexOwner &) noexcept
 MR::MutexOwner::MutexOwner (MutexOwner &&) noexcept
MutexOwnerMR::MutexOwner::operator= (const MutexOwner &) noexcept
MutexOwnerMR::MutexOwner::operator= (MutexOwner &&) noexcept
constexpr MR::NoDefInit< T >::NoDefInit () noexcept
void MR::denoiseNormals (const Mesh &mesh, FaceNormals &normals, const Vector< float, UndirectedEdgeId > &v, float gamma)
void MR::updateIndicator (const Mesh &mesh, Vector< float, UndirectedEdgeId > &v, const FaceNormals &normals, float beta, float gamma)
void MR::updateIndicatorFast (const MeshTopology &topology, Vector< float, UndirectedEdgeId > &v, const FaceNormals &normals, float beta, float gamma)
Expected< void > MR::meshDenoiseViaNormals (Mesh &mesh, const DenoiseViaNormalsSettings &settings={})
void MR::NormalsToPoints::prepare (const MeshTopology &topology, float guideWeight=1)
void MR::NormalsToPoints::run (const VertCoords &guide, const FaceNormals &normals, VertCoords &points)
void MR::NormalsToPoints::run (const VertCoords &guide, const FaceNormals &normals, VertCoords &points, float maxInitialDistSq)
virtual MR::NormalsToPoints::ISolver::~ISolver ()=default
virtual void MR::NormalsToPoints::ISolver::prepare (const MeshTopology &topology, float guideWeight)=0
virtual void MR::NormalsToPoints::ISolver::run (const VertCoords &guide, const FaceNormals &normals, VertCoords &points, float maxInitialDistSq)=0
virtual MR::ObjectComparableWithReference::~ObjectComparableWithReference ()=default
 MR::ObjectComparableWithReference::ObjectComparableWithReference ()=default
 We have no member variables, so lack of the implicit copy operations wouldn't matter, but MSVC warns on this, so we have to be explicit.
 MR::ObjectComparableWithReference::ObjectComparableWithReference (const ObjectComparableWithReference &)=default
 MR::ObjectComparableWithReference::ObjectComparableWithReference (ObjectComparableWithReference &&)=default
ObjectComparableWithReferenceMR::ObjectComparableWithReference::operator= (const ObjectComparableWithReference &)=default
ObjectComparableWithReferenceMR::ObjectComparableWithReference::operator= (ObjectComparableWithReference &&)=default
virtual std::size_t MR::ObjectComparableWithReference::numComparableProperties () const =0
 Comparing properties:
virtual std::string_view MR::ObjectComparableWithReference::getComparablePropertyName (std::size_t i) const =0
 i goes up to numComparableProperties(), exclusive.
virtual std::optional< ComparablePropertyMR::ObjectComparableWithReference::computeComparableProperty (std::size_t i) const =0
virtual std::optional< ComparisonToleranceMR::ObjectComparableWithReference::getComparisonTolerence (std::size_t i) const =0
virtual void MR::ObjectComparableWithReference::setComparisonTolerance (std::size_t i, std::optional< ComparisonTolerance > newTolerance)=0
virtual bool MR::ObjectComparableWithReference::comparisonToleranceIsAlwaysOnlyPositive (std::size_t i) const
virtual std::size_t MR::ObjectComparableWithReference::numComparisonReferenceValues () const
 Reference values:
virtual std::string_view MR::ObjectComparableWithReference::getComparisonReferenceValueName (std::size_t i) const =0
 i goes up to numComparisonReferenceValues(), exclusive.
virtual ComparisonReferenceValue MR::ObjectComparableWithReference::getComparisonReferenceValue (std::size_t i) const =0
virtual void MR::ObjectComparableWithReference::setComparisonReferenceValue (std::size_t i, std::optional< ComparisonReferenceValue::Var > value)=0
void MR::ObjectComparableWithReference::setComparisonReferenceVal (std::size_t i, const ComparisonReferenceValue &value)
std::string_view MR::toString (DimensionsVisualizePropertyType value)
 MR::ObjectDistanceMap::ObjectDistanceMap ()
 MR::ObjectDistanceMap::ObjectDistanceMap (ObjectDistanceMap &&) noexcept=default
ObjectDistanceMapMR::ObjectDistanceMap::operator= (ObjectDistanceMap &&) noexcept=default
virtual MR::ObjectDistanceMap::~ObjectDistanceMap ()=default
 MR::ObjectDistanceMap::ObjectDistanceMap (ProtectedStruct, const ObjectDistanceMap &obj)
static constexpr const char * MR::ObjectDistanceMap::StaticTypeName () noexcept
virtual const char * MR::ObjectDistanceMap::typeName () const override
static constexpr const char * MR::ObjectDistanceMap::StaticClassName () noexcept
virtual std::string MR::ObjectDistanceMap::className () const override
static constexpr const char * MR::ObjectDistanceMap::StaticClassNameInPlural () noexcept
virtual std::string MR::ObjectDistanceMap::classNameInPlural () const override
virtual void MR::ObjectDistanceMap::applyScale (float scaleFactor) override
 scale object size (all point positions)
virtual std::shared_ptr< ObjectMR::ObjectDistanceMap::clone () const override
virtual std::shared_ptr< ObjectMR::ObjectDistanceMap::shallowClone () const override
virtual std::vector< std::string > MR::ObjectDistanceMap::getInfoLines () const override
 return several info lines that can better describe the object in the UI
bool MR::ObjectDistanceMap::setDistanceMap (const std::shared_ptr< DistanceMap > &dmap, const AffineXf3f &dmap2local, bool needUpdateMesh=true, ProgressCallback cb={})
std::shared_ptr< MeshMR::ObjectDistanceMap::calculateMesh (ProgressCallback cb={}) const
 creates a grid for this object
void MR::ObjectDistanceMap::updateMesh (const std::shared_ptr< Mesh > &mesh)
 updates the grid to the current one
const std::shared_ptr< DistanceMap > & MR::ObjectDistanceMap::getDistanceMap () const
virtual bool MR::ObjectDistanceMap::hasModel () const override
const AffineXf3f & MR::ObjectDistanceMap::getToWorldParameters () const
 unlike the name, actually it is the transformation from distance map in local space
virtual size_t MR::ObjectDistanceMap::heapBytes () const override
 returns the amount of memory this object occupies on heap
void MR::ObjectDistanceMap::resetFrontColor () override
 reset basic object colors to their default values from the current theme
 MR::ObjectDistanceMap::ObjectDistanceMap (const ObjectDistanceMap &other)=default
virtual void MR::ObjectDistanceMap::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::ObjectDistanceMap::serializeFields_ (Json::Value &root) const override
void MR::ObjectDistanceMap::deserializeFields_ (const Json::Value &root) override
Expected< void > MR::ObjectDistanceMap::deserializeModel_ (const std::filesystem::path &path, ProgressCallback progressCb={}) override
 Reads model from file.
virtual Expected< std::future< Expected< void > > > MR::ObjectDistanceMap::serializeModel_ (const std::filesystem::path &path) const override
MR_BIND_IGNORE MR::ObjectFactoryBase::ObjectFactoryBase (std::string className, ObjectMakerFunc *creator)
 MR::ObjectFactoryBase::~ObjectFactoryBase ()
 MR::ObjectFactory< T >::ObjectFactory (std::string className)
 MR::ObjectGcode::ObjectGcode ()
 MR::ObjectGcode::ObjectGcode (ObjectGcode &&)=default
ObjectGcodeMR::ObjectGcode::operator= (ObjectGcode &&)=default
static constexpr const char * MR::ObjectGcode::StaticTypeName () noexcept
virtual const char * MR::ObjectGcode::typeName () const override
static constexpr const char * MR::ObjectGcode::StaticClassName () noexcept
virtual std::string MR::ObjectGcode::className () const override
static constexpr const char * MR::ObjectGcode::StaticClassNameInPlural () noexcept
virtual std::string MR::ObjectGcode::classNameInPlural () const override
virtual std::shared_ptr< ObjectMR::ObjectGcode::clone () const override
virtual std::shared_ptr< ObjectMR::ObjectGcode::shallowClone () const override
virtual void MR::ObjectGcode::setCNCMachineSettings (const CNCMachineSettings &cncSettings)
virtual const CNCMachineSettingsMR::ObjectGcode::getCNCMachineSettings () const
virtual void MR::ObjectGcode::setGcodeSource (const std::shared_ptr< GcodeSource > &gcodeSource)
virtual const std::shared_ptr< GcodeSource > & MR::ObjectGcode::gcodeSource () const
virtual const std::vector< GcodeProcessor::MoveAction > & MR::ObjectGcode::actionList () const
 get action list (produced from g-code source)
virtual const std::vector< int > & MR::ObjectGcode::segmentToSourceLineMap () const
 get mapping of tool path polyline segment id to source line number of g-code source
virtual void MR::ObjectGcode::setDirtyFlags (uint32_t mask, bool invalidateCaches=true) override
 reinterpret_cast to avoid making a copy of shared_ptr
 MR::ObjectGcode::ObjectGcode (ProtectedStruct, const ObjectGcode &obj)
virtual std::vector< std::string > MR::ObjectGcode::getInfoLines () const override
 return several info lines that can better describe the object in the UI
void MR::ObjectGcode::switchFeedrateGradient (bool isFeedrateGradientEnabled)
 set drawing feedrate as gradient of brightness
bool MR::ObjectGcode::isFeedrateGradient () const
void MR::ObjectGcode::setIdleColor (const Color &color)
const ColorMR::ObjectGcode::getIdleColor () const
virtual bool MR::ObjectGcode::select (bool isSelected) override
 selects the object, returns true if value changed, otherwise returns false
virtual void MR::ObjectGcode::setFrontColor (const Color &color, bool selected, ViewportId viewportId={}) override
 sets color of object when it is selected/not-selected (depending on argument) in given viewport
virtual size_t MR::ObjectGcode::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ObjectGcode::ObjectGcode (const ObjectGcode &other)=default
virtual void MR::ObjectGcode::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::ObjectGcode::swapSignals_ (Object &other) override
virtual void MR::ObjectGcode::serializeFields_ (Json::Value &root) const override
 serializeFields_: serializeBaseFields_ plus polyline serialization
void MR::ObjectGcode::deserializeFields_ (const Json::Value &root) override
 deserializeFields_: deserializeBaseFields_ plus polyline deserialization
 MR::ObjectLines::ObjectLines ()=default
 MR::ObjectLines::ObjectLines (ObjectLines &&)=default
ObjectLinesMR::ObjectLines::operator= (ObjectLines &&)=default
static constexpr const char * MR::ObjectLines::StaticTypeName () noexcept
virtual const char * MR::ObjectLines::typeName () const override
static constexpr const char * MR::ObjectLines::StaticClassName () noexcept
virtual std::string MR::ObjectLines::className () const override
static constexpr const char * MR::ObjectLines::StaticClassNameInPlural () noexcept
virtual std::string MR::ObjectLines::classNameInPlural () const override
virtual std::shared_ptr< ObjectMR::ObjectLines::clone () const override
virtual std::shared_ptr< ObjectMR::ObjectLines::shallowClone () const override
virtual void MR::ObjectLines::setPolyline (const std::shared_ptr< Polyline3 > &polyline)
virtual std::shared_ptr< Polyline3 > MR::ObjectLines::updatePolyline (std::shared_ptr< Polyline3 > polyline)
 sets given polyline to this, and returns back previous polyline of this;
virtual const std::shared_ptr< Polyline3 > & MR::ObjectLines::varPolyline ()
 MR::ObjectLines::ObjectLines (ProtectedStruct, const ObjectLines &obj)
virtual std::vector< std::string > MR::ObjectLines::getInfoLines () const override
 return several info lines that can better describe the object in the UI
 MR::ObjectLines::ObjectLines (const ObjectLines &other)=default
virtual void MR::ObjectLines::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::ObjectLines::serializeFields_ (Json::Value &root) const override
 serializeFields_: serializeBaseFields_ plus polyline serialization
std::shared_ptr< ObjectLinesMR::merge (const std::vector< std::shared_ptr< ObjectLines > > &objsLines)
 constructs new ObjectLines containing the union of valid data from all input objects
std::shared_ptr< ObjectLinesMR::cloneRegion (const std::shared_ptr< ObjectLines > &objLines, const UndirectedEdgeBitSet &region)
 constructs new ObjectLines containing the region of data from input object
 MR::ObjectLinesHolder::ObjectLinesHolder ()
 MR::ObjectLinesHolder::ObjectLinesHolder (ObjectLinesHolder &&)=default
ObjectLinesHolderMR::ObjectLinesHolder::operator= (ObjectLinesHolder &&)=default
static constexpr const char * MR::ObjectLinesHolder::StaticTypeName () noexcept
virtual const char * MR::ObjectLinesHolder::typeName () const override
virtual void MR::ObjectLinesHolder::applyScale (float scaleFactor) override
 scale object size (all point positions)
virtual bool MR::ObjectLinesHolder::hasVisualRepresentation () const override
 does the object have any visual representation (visible points, triangles, edges, etc.), no considering child objects
virtual bool MR::ObjectLinesHolder::hasModel () const override
virtual std::shared_ptr< ObjectMR::ObjectLinesHolder::clone () const override
virtual std::shared_ptr< ObjectMR::ObjectLinesHolder::shallowClone () const override
const std::shared_ptr< const Polyline3 > & MR::ObjectLinesHolder::polyline () const
virtual void MR::ObjectLinesHolder::setDirtyFlags (uint32_t mask, bool invalidateCaches=true) override
 reinterpret_cast to avoid making a copy of shared_ptr
virtual void MR::ObjectLinesHolder::setDashPattern (const DashPattern &pattern, ViewportId vpId={})
virtual const DashPatternMR::ObjectLinesHolder::getDashPattern (ViewportId vpId={}, bool *isDef=nullptr) const
virtual void MR::ObjectLinesHolder::setLineWidth (float width)
virtual float MR::ObjectLinesHolder::getLineWidth () const
virtual void MR::ObjectLinesHolder::setPointSize (float size)
virtual float MR::ObjectLinesHolder::getPointSize () const
 MR::ObjectLinesHolder::ObjectLinesHolder (ProtectedStruct, const ObjectLinesHolder &obj)
const VertColors & MR::ObjectLinesHolder::getVertsColorMap () const
 returns per-vertex colors of the object
virtual void MR::ObjectLinesHolder::setVertsColorMap (VertColors vertsColorMap)
 sets per-vertex colors of the object
virtual void MR::ObjectLinesHolder::updateVertsColorMap (VertColors &vertsColorMap)
 swaps per-vertex colors of the object with given argument
const UndirectedEdgeColors & MR::ObjectLinesHolder::getLinesColorMap () const
virtual void MR::ObjectLinesHolder::setLinesColorMap (UndirectedEdgeColors linesColorMap)
virtual void MR::ObjectLinesHolder::updateLinesColorMap (UndirectedEdgeColors &updated)
bool MR::ObjectLinesHolder::supportsVisualizeProperty (AnyVisualizeMaskEnum type) const override
 Returns true if this class supports the property type. Otherwise passing it to the functions below is illegal.
AllVisualizeProperties MR::ObjectLinesHolder::getAllVisualizeProperties () const override
 get all visualize properties masks
const ViewportMaskMR::ObjectLinesHolder::getVisualizePropertyMask (AnyVisualizeMaskEnum type) const override
 returns mask of viewports where given property is set
virtual void MR::ObjectLinesHolder::copyColors (const ObjectLinesHolder &src, const VertMap &thisToSrc)
 copies vertex colors from given source object
virtual Box3f MR::ObjectLinesHolder::getWorldBox (ViewportId={}) const override
virtual size_t MR::ObjectLinesHolder::heapBytes () const override
 returns the amount of memory this object occupies on heap
float MR::ObjectLinesHolder::avgEdgeLen () const
 returns cached average edge length
size_t MR::ObjectLinesHolder::numUndirectedEdges () const
 returns cached information about the number of undirected edges in the polyline
size_t MR::ObjectLinesHolder::numComponents () const
 returns cached information about the number of components in the polyline
float MR::ObjectLinesHolder::totalLength () const
 return cached total length
void MR::ObjectLinesHolder::resetFrontColor () override
 reset basic object colors to their default values from the current theme
 MR::ObjectLinesHolder::ObjectLinesHolder (const ObjectLinesHolder &other)=default
virtual void MR::ObjectLinesHolder::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::ObjectLinesHolder::swapSignals_ (Object &other) override
void MR::ObjectLinesHolder::serializeBaseFields_ (Json::Value &root) const
virtual void MR::ObjectLinesHolder::serializeFields_ (Json::Value &root) const override
 serializeFields_: serializeBaseFields_ plus polyline serialization
Expected< void > MR::ObjectLinesHolder::deserializeModel_ (const std::filesystem::path &path, ProgressCallback progressCb={}) override
 Reads model from file.
void MR::ObjectLinesHolder::deserializeBaseFields_ (const Json::Value &root)
virtual void MR::ObjectLinesHolder::deserializeFields_ (const Json::Value &root) override
 deserializeFields_: deserializeBaseFields_ plus polyline deserialization
virtual Box3f MR::ObjectLinesHolder::computeBoundingBox_ () const override
virtual void MR::ObjectLinesHolder::setupRenderObject_ () const override
void MR::ObjectLinesHolder::setAllVisualizeProperties_ (const AllVisualizeProperties &properties, std::size_t &pos) override
 set all visualize properties masks
 MR::ObjectMesh::ObjectMesh ()=default
 MR::ObjectMesh::ObjectMesh (ObjectMesh &&) noexcept=default
ObjectMeshMR::ObjectMesh::operator= (ObjectMesh &&) noexcept=default
static constexpr const char * MR::ObjectMesh::StaticTypeName () noexcept
virtual const char * MR::ObjectMesh::typeName () const override
static constexpr const char * MR::ObjectMesh::StaticClassName () noexcept
virtual std::string MR::ObjectMesh::className () const override
static constexpr const char * MR::ObjectMesh::StaticClassNameInPlural () noexcept
virtual std::string MR::ObjectMesh::classNameInPlural () const override
virtual const std::shared_ptr< Mesh > & MR::ObjectMesh::varMesh ()
 returns variable mesh, if const mesh is needed use mesh() instead
virtual void MR::ObjectMesh::setMesh (std::shared_ptr< Mesh > mesh)
 sets given mesh to this, resets selection and creases
virtual std::shared_ptr< MeshMR::ObjectMesh::updateMesh (std::shared_ptr< Mesh > mesh)
virtual std::vector< std::string > MR::ObjectMesh::getInfoLines () const override
 return several info lines that can better describe the object in the UI
virtual std::shared_ptr< ObjectMR::ObjectMesh::clone () const override
virtual std::shared_ptr< ObjectMR::ObjectMesh::shallowClone () const override
 MR::ObjectMesh::ObjectMesh (ProtectedStruct, const ObjectMesh &obj)
MeshIntersectionResult MR::ObjectMesh::worldRayIntersection (const Line3f &worldRay, const FaceBitSet *region=nullptr) const
 MR::ObjectMesh::ObjectMesh (const ObjectMesh &other)=default
virtual void MR::ObjectMesh::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::ObjectMesh::serializeFields_ (Json::Value &root) const override
std::shared_ptr< ObjectMeshMR::merge (const std::vector< std::shared_ptr< ObjectMesh > > &objsMesh, const ObjectMeshMergeOptions &options={})
 constructs new ObjectMesh containing the union of valid data from all input objects
std::shared_ptr< ObjectMeshMR::cloneRegion (const std::shared_ptr< ObjectMesh > &objMesh, const FaceBitSet &region, bool copyTexture=true)
ObjectMeshData MR::ObjectMeshData::clone () const
 returns copy of this object with mesh cloned
size_t MR::ObjectMeshData::heapBytes () const
 returns the amount of memory this object occupies on heap
UndirectedEdgeBitSet MR::edgesBetweenDifferentColors (const MeshTopology &topology, const FaceColors &colors)
 return all edges separating faces with different colors
 MR::ObjectMeshHolder::ObjectMeshHolder ()
 MR::ObjectMeshHolder::ObjectMeshHolder (ObjectMeshHolder &&) noexcept=default
ObjectMeshHolderMR::ObjectMeshHolder::operator= (ObjectMeshHolder &&) noexcept=default
static constexpr const char * MR::ObjectMeshHolder::StaticTypeName () noexcept
virtual const char * MR::ObjectMeshHolder::typeName () const override
virtual void MR::ObjectMeshHolder::applyScale (float scaleFactor) override
 scale object size (all point positions)
virtual bool MR::ObjectMeshHolder::hasVisualRepresentation () const override
 mesh object can be seen if the mesh has at least one edge
virtual bool MR::ObjectMeshHolder::hasModel () const override
const std::shared_ptr< const Mesh > & MR::ObjectMeshHolder::mesh () const
MeshPart MR::ObjectMeshHolder::meshPart () const
 reinterpret_cast to avoid making a copy of shared_ptr
virtual std::shared_ptr< ObjectMR::ObjectMeshHolder::clone () const override
virtual std::shared_ptr< ObjectMR::ObjectMeshHolder::shallowClone () const override
virtual void MR::ObjectMeshHolder::setDirtyFlags (uint32_t mask, bool invalidateCaches=true) override
virtual void MR::ObjectMeshHolder::setDirtyFlagsFast (uint32_t mask)
virtual void MR::ObjectMeshHolder::invalidateMetricsCache (uint32_t mask)
 invalidates same caches with mesh metrics (area, volume, ...) as by setDirtyFlags( mask )
const FaceBitSet & MR::ObjectMeshHolder::getSelectedFaces () const
virtual void MR::ObjectMeshHolder::selectFaces (FaceBitSet newSelection)
const ColorMR::ObjectMeshHolder::getSelectedFacesColor (ViewportId id={}) const
 returns colors of selected triangles
virtual void MR::ObjectMeshHolder::setSelectedFacesColor (const Color &color, ViewportId id={})
 sets colors of selected triangles
const UndirectedEdgeBitSet & MR::ObjectMeshHolder::getSelectedEdges () const
virtual void MR::ObjectMeshHolder::selectEdges (UndirectedEdgeBitSet newSelection)
const ColorMR::ObjectMeshHolder::getSelectedEdgesColor (ViewportId id={}) const
 returns colors of selected edges
virtual void MR::ObjectMeshHolder::setSelectedEdgesColor (const Color &color, ViewportId id={})
 sets colors of selected edges
const ViewportProperty< Color > & MR::ObjectMeshHolder::getSelectedEdgesColorsForAllViewports () const
virtual void MR::ObjectMeshHolder::setSelectedEdgesColorsForAllViewports (ViewportProperty< Color > val)
const ViewportProperty< Color > & MR::ObjectMeshHolder::getSelectedFacesColorsForAllViewports () const
virtual void MR::ObjectMeshHolder::setSelectedFacesColorsForAllViewports (ViewportProperty< Color > val)
const ViewportProperty< Color > & MR::ObjectMeshHolder::getEdgesColorsForAllViewports () const
virtual void MR::ObjectMeshHolder::setEdgesColorsForAllViewports (ViewportProperty< Color > val)
const ViewportProperty< Color > & MR::ObjectMeshHolder::getPointsColorsForAllViewports () const
virtual void MR::ObjectMeshHolder::setPointsColorsForAllViewports (ViewportProperty< Color > val)
const ViewportProperty< Color > & MR::ObjectMeshHolder::getBordersColorsForAllViewports () const
virtual void MR::ObjectMeshHolder::setBordersColorsForAllViewports (ViewportProperty< Color > val)
void MR::ObjectMeshHolder::copyAllSolidColors (const ObjectMeshHolder &other)
 set all object solid colors (front/back/etc.) from other object for all viewports
const UndirectedEdgeBitSet & MR::ObjectMeshHolder::creases () const
 Edges on mesh, that will have sharp visualization even with smooth shading.
virtual void MR::ObjectMeshHolder::setCreases (UndirectedEdgeBitSet creases)
void MR::ObjectMeshHolder::setFlatShading (bool on)
 sets flat (true) or smooth (false) shading
bool MR::ObjectMeshHolder::flatShading () const
bool MR::ObjectMeshHolder::supportsVisualizeProperty (AnyVisualizeMaskEnum type) const override
 Returns true if this class supports the property type. Otherwise passing it to the functions below is illegal.
AllVisualizeProperties MR::ObjectMeshHolder::getAllVisualizeProperties () const override
 get all visualize properties masks
const ViewportMaskMR::ObjectMeshHolder::getVisualizePropertyMask (AnyVisualizeMaskEnum type) const override
 returns mask of viewports where given property is set
const ObjectMeshDataMR::ObjectMeshHolder::data () const
 provides read-only access to whole ObjectMeshData
virtual void MR::ObjectMeshHolder::setData (ObjectMeshData &&data)
 sets whole new ObjectMeshData
virtual void MR::ObjectMeshHolder::updateData (ObjectMeshData &data)
 swaps whole ObjectMeshData with given argument
const VertColors & MR::ObjectMeshHolder::getVertsColorMap () const
 returns per-vertex colors of the object
virtual void MR::ObjectMeshHolder::setVertsColorMap (VertColors vertsColorMap)
 sets per-vertex colors of the object
virtual void MR::ObjectMeshHolder::updateVertsColorMap (VertColors &vertsColorMap)
 swaps per-vertex colors of the object with given argument
const FaceColors & MR::ObjectMeshHolder::getFacesColorMap () const
virtual void MR::ObjectMeshHolder::setFacesColorMap (FaceColors facesColorMap)
virtual void MR::ObjectMeshHolder::updateFacesColorMap (FaceColors &updated)
virtual void MR::ObjectMeshHolder::setEdgeWidth (float edgeWidth)
float MR::ObjectMeshHolder::getEdgeWidth () const
virtual void MR::ObjectMeshHolder::setPointSize (float size)
virtual float MR::ObjectMeshHolder::getPointSize () const
const ColorMR::ObjectMeshHolder::getEdgesColor (ViewportId id={}) const
virtual void MR::ObjectMeshHolder::setEdgesColor (const Color &color, ViewportId id={})
const ColorMR::ObjectMeshHolder::getPointsColor (ViewportId id={}) const
virtual void MR::ObjectMeshHolder::setPointsColor (const Color &color, ViewportId id={})
const ColorMR::ObjectMeshHolder::getBordersColor (ViewportId id={}) const
virtual void MR::ObjectMeshHolder::setBordersColor (const Color &color, ViewportId id={})
 MR::ObjectMeshHolder::ObjectMeshHolder (ProtectedStruct, const ObjectMeshHolder &obj)
const MeshTextureMR::ObjectMeshHolder::getTexture () const
 returns first texture in the vector. If there is no textures, returns empty texture
virtual MR_BIND_IGNORE void MR::ObjectMeshHolder::setTexture (MeshTexture texture)
 for backward compatibility
virtual MR_BIND_IGNORE void MR::ObjectMeshHolder::updateTexture (MeshTexture &updated)
const Vector< MeshTexture, TextureId > & MR::ObjectMeshHolder::getTextures () const
virtual void MR::ObjectMeshHolder::setTextures (Vector< MeshTexture, TextureId > texture)
virtual void MR::ObjectMeshHolder::updateTextures (Vector< MeshTexture, TextureId > &updated)
virtual void MR::ObjectMeshHolder::setTexturePerFace (Vector< TextureId, FaceId > texturePerFace)
virtual void MR::ObjectMeshHolder::updateTexturePerFace (Vector< TextureId, FaceId > &texturePerFace)
virtual void MR::ObjectMeshHolder::addTexture (MeshTexture texture)
const TexturePerFace & MR::ObjectMeshHolder::getTexturePerFace () const
const VertUVCoords & MR::ObjectMeshHolder::getUVCoords () const
virtual void MR::ObjectMeshHolder::setUVCoords (VertUVCoords uvCoordinates)
virtual void MR::ObjectMeshHolder::updateUVCoords (VertUVCoords &updated)
virtual void MR::ObjectMeshHolder::copyTextureAndColors (const ObjectMeshHolder &src, const VertMap &thisToSrc, const FaceMap &thisToSrcFaces={})
 copies texture, UV-coordinates and vertex colors from given source object
virtual void MR::ObjectMeshHolder::copyColors (const ObjectMeshHolder &src, const VertMap &thisToSrc, const FaceMap &thisToSrcFaces={})
 copies vertex colors from given source object
const MeshTextureMR::ObjectMeshHolder::getAncillaryTexture () const
 ancillary texture can be used to have custom features visualization without affecting real one
virtual void MR::ObjectMeshHolder::setAncillaryTexture (MeshTexture texture)
const VertUVCoords & MR::ObjectMeshHolder::getAncillaryUVCoords () const
virtual void MR::ObjectMeshHolder::setAncillaryUVCoords (VertUVCoords uvCoordinates)
void MR::ObjectMeshHolder::updateAncillaryUVCoords (VertUVCoords &updated)
bool MR::ObjectMeshHolder::hasAncillaryTexture () const
void MR::ObjectMeshHolder::clearAncillaryTexture ()
virtual bool MR::ObjectMeshHolder::getRedrawFlag (ViewportMask viewportMask) const override
 returns true if the object must be redrawn (due to dirty flags) in one of specified viewports
bool MR::ObjectMeshHolder::isMeshClosed () const
 returns cached information whether the mesh is closed
virtual Box3f MR::ObjectMeshHolder::getWorldBox (ViewportId={}) const override
size_t MR::ObjectMeshHolder::numSelectedFaces () const
 returns cached information about the number of selected faces in the mesh
size_t MR::ObjectMeshHolder::numSelectedEdges () const
 returns cached information about the number of selected undirected edges in the mesh
size_t MR::ObjectMeshHolder::numCreaseEdges () const
 returns cached information about the number of crease undirected edges in the mesh
double MR::ObjectMeshHolder::totalArea () const
 returns cached summed area of mesh triangles
double MR::ObjectMeshHolder::selectedArea () const
 returns cached area of selected triangles
double MR::ObjectMeshHolder::volume () const
 returns cached volume of space surrounded by the mesh, which is valid only if mesh is closed
float MR::ObjectMeshHolder::avgEdgeLen () const
 returns cached average edge length
size_t MR::ObjectMeshHolder::numUndirectedEdges () const
 returns cached information about the number of undirected edges in the mesh
size_t MR::ObjectMeshHolder::numHoles () const
 returns cached information about the number of holes in the mesh
size_t MR::ObjectMeshHolder::numComponents () const
 returns cached information about the number of components in the mesh
size_t MR::ObjectMeshHolder::numHandles () const
 returns cached information about the number of handles in the mesh
virtual size_t MR::ObjectMeshHolder::heapBytes () const override
 returns the amount of memory this object occupies on heap
const char * MR::ObjectMeshHolder::serializeFormat () const
 returns overriden file extension used to serialize mesh inside this object, nullptr means defaultSerializeMeshFormat()
const char * MR::ObjectMeshHolder::actualSerializeFormat () const
 returns overriden file extension used to serialize mesh inside this object if set, or defaultSerializeMeshFormat().c_str() otherwise; never returns nullptr
void MR::ObjectMeshHolder::setSerializeFormat (const char *newFormat)
void MR::ObjectMeshHolder::resetFrontColor () override
 reset basic object colors to their default values from the current theme
void MR::ObjectMeshHolder::resetColors () override
 reset all object colors to their default values from the current theme
virtual size_t MR::ObjectMeshHolder::getModelHash () const override
 return hash of model (or hash object pointer if object has no model)
virtual bool MR::ObjectMeshHolder::sameModels (const Object &other) const override
 return true if model of current object equals to model (the same) of other
 MR::ObjectMeshHolder::ObjectMeshHolder (const ObjectMeshHolder &other)=default
virtual void MR::ObjectMeshHolder::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::ObjectMeshHolder::swapSignals_ (Object &other) override
virtual Expected< std::future< Expected< void > > > MR::ObjectMeshHolder::serializeModel_ (const std::filesystem::path &path) const override
virtual void MR::ObjectMeshHolder::serializeFields_ (Json::Value &root) const override
void MR::ObjectMeshHolder::deserializeFields_ (const Json::Value &root) override
Expected< void > MR::ObjectMeshHolder::deserializeModel_ (const std::filesystem::path &path, ProgressCallback progressCb={}) override
 Reads model from file.
virtual Expected< void > MR::ObjectMeshHolder::setSharedModel_ (const Object &other) override
 shares model from other object
void MR::ObjectMeshHolder::setAllVisualizeProperties_ (const AllVisualizeProperties &properties, std::size_t &pos) override
 set all visualize properties masks
virtual Box3f MR::ObjectMeshHolder::computeBoundingBox_ () const override
virtual void MR::ObjectMeshHolder::setupRenderObject_ () const override
const std::string & MR::defaultSerializeMeshFormat ()
void MR::setDefaultSerializeMeshFormat (std::string newFormat)
 MR::ObjectPoints::ObjectPoints ()=default
 MR::ObjectPoints::ObjectPoints (const ObjectMesh &objMesh, bool saveNormals=true)
ObjectPointsMR::ObjectPoints::operator= (ObjectPoints &&)=default
 MR::ObjectPoints::ObjectPoints (ObjectPoints &&)=default
static constexpr const char * MR::ObjectPoints::StaticTypeName () noexcept
virtual const char * MR::ObjectPoints::typeName () const override
static constexpr const char * MR::ObjectPoints::StaticClassName () noexcept
virtual std::string MR::ObjectPoints::className () const override
static constexpr const char * MR::ObjectPoints::StaticClassNameInPlural () noexcept
virtual std::string MR::ObjectPoints::classNameInPlural () const override
virtual const std::shared_ptr< PointCloud > & MR::ObjectPoints::varPointCloud ()
 returns variable point cloud, if const point cloud is needed use pointCloud() instead
virtual std::shared_ptr< ObjectMR::ObjectPoints::clone () const override
virtual std::shared_ptr< ObjectMR::ObjectPoints::shallowClone () const override
virtual void MR::ObjectPoints::setPointCloud (const std::shared_ptr< PointCloud > &pointCloud)
virtual void MR::ObjectPoints::swapPointCloud (std::shared_ptr< PointCloud > &points)
 MR::ObjectPoints::ObjectPoints (ProtectedStruct, const ObjectPoints &obj)
virtual std::vector< std::string > MR::ObjectPoints::getInfoLines () const override
 return several info lines that can better describe the object in the UI
 MR::ObjectPoints::ObjectPoints (const ObjectPoints &other)=default
virtual void MR::ObjectPoints::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::ObjectPoints::serializeFields_ (Json::Value &root) const override
std::shared_ptr< ObjectPointsMR::merge (const std::vector< std::shared_ptr< ObjectPoints > > &objsPoints)
 constructs new ObjectPoints containing the union of valid points from all input objects
std::shared_ptr< ObjectPointsMR::cloneRegion (const std::shared_ptr< ObjectPoints > &objPoints, const VertBitSet &region)
std::shared_ptr< ObjectPointsMR::pack (const ObjectPoints &pts, Reorder reorder, VertBitSet *newValidVerts=nullptr, const ProgressCallback &cb={})
 MR::ObjectPointsHolder::ObjectPointsHolder ()
 MR::ObjectPointsHolder::ObjectPointsHolder (ObjectPointsHolder &&) noexcept=default
ObjectPointsHolderMR::ObjectPointsHolder::operator= (ObjectPointsHolder &&) noexcept=default
static constexpr const char * MR::ObjectPointsHolder::StaticTypeName () noexcept
virtual const char * MR::ObjectPointsHolder::typeName () const override
virtual void MR::ObjectPointsHolder::applyScale (float scaleFactor) override
 scale object size (all point positions)
virtual bool MR::ObjectPointsHolder::hasVisualRepresentation () const override
 does the object have any visual representation (visible points, triangles, edges, etc.), no considering child objects
virtual bool MR::ObjectPointsHolder::hasModel () const override
const std::shared_ptr< const PointCloud > & MR::ObjectPointsHolder::pointCloud () const
PointCloudPart MR::ObjectPointsHolder::pointCloudPart () const
 reinterpret_cast to avoid making a copy of shared_ptr
virtual std::shared_ptr< ObjectMR::ObjectPointsHolder::clone () const override
virtual std::shared_ptr< ObjectMR::ObjectPointsHolder::shallowClone () const override
virtual void MR::ObjectPointsHolder::setDirtyFlags (uint32_t mask, bool invalidateCaches=true) override
const VertBitSet & MR::ObjectPointsHolder::getSelectedPoints () const
 gets current selected points
void MR::ObjectPointsHolder::selectPoints (VertBitSet newSelection)
 sets current selected points
virtual void MR::ObjectPointsHolder::updateSelectedPoints (VertBitSet &selection)
 swaps current selected points with the argument
const VertBitSet & MR::ObjectPointsHolder::getSelectedPointsOrAll () const
 returns selected points if any, otherwise returns all valid points
const ColorMR::ObjectPointsHolder::getSelectedVerticesColor (ViewportId id={}) const
 returns colors of selected vertices
virtual void MR::ObjectPointsHolder::setSelectedVerticesColor (const Color &color, ViewportId id={})
 sets colors of selected vertices
const ViewportProperty< Color > & MR::ObjectPointsHolder::getSelectedVerticesColorsForAllViewports () const
virtual void MR::ObjectPointsHolder::setSelectedVerticesColorsForAllViewports (ViewportProperty< Color > val)
void MR::ObjectPointsHolder::copyAllSolidColors (const ObjectPointsHolder &other)
 set all object solid colors (front/back/etc.) from other object for all viewports
bool MR::ObjectPointsHolder::supportsVisualizeProperty (AnyVisualizeMaskEnum type) const override
 Returns true if this class supports the property type. Otherwise passing it to the functions below is illegal.
const VertColors & MR::ObjectPointsHolder::getVertsColorMap () const
 returns per-point colors of the object
virtual void MR::ObjectPointsHolder::setVertsColorMap (VertColors vertsColorMap)
 sets per-point colors of the object
virtual void MR::ObjectPointsHolder::updateVertsColorMap (VertColors &vertsColorMap)
 swaps per-point colors of the object with given argument
virtual void MR::ObjectPointsHolder::copyColors (const ObjectPointsHolder &src, const VertMap &thisToSrc, const FaceMap &thisToSrcFaces={})
 copies point colors from given source object
AllVisualizeProperties MR::ObjectPointsHolder::getAllVisualizeProperties () const override
 get all visualize properties masks
const ViewportMaskMR::ObjectPointsHolder::getVisualizePropertyMask (AnyVisualizeMaskEnum type) const override
 returns mask of viewports where given property is set
virtual void MR::ObjectPointsHolder::setPointSize (float size)
 sets size of points on screen in pixels
virtual float MR::ObjectPointsHolder::getPointSize () const
 returns size of points on screen in pixels
 MR::ObjectPointsHolder::ObjectPointsHolder (ProtectedStruct, const ObjectPointsHolder &obj)
virtual Box3f MR::ObjectPointsHolder::getWorldBox (ViewportId={}) const override
size_t MR::ObjectPointsHolder::numValidPoints () const
 returns cached information about the number of valid points
size_t MR::ObjectPointsHolder::numSelectedPoints () const
 returns cached information about the number of selected points
virtual size_t MR::ObjectPointsHolder::heapBytes () const override
 returns the amount of memory this object occupies on heap
int MR::ObjectPointsHolder::getRenderDiscretization () const
size_t MR::ObjectPointsHolder::numRenderingValidPoints () const
 returns count of valid points that will be rendered
int MR::ObjectPointsHolder::getMaxRenderingPoints () const
void MR::ObjectPointsHolder::setMaxRenderingPoints (int val)
const char * MR::ObjectPointsHolder::serializeFormat () const
 returns overriden file extension used to serialize point cloud inside this object, nullptr means defaultSerializePointsFormat()
MR_BIND_IGNORE const char * MR::ObjectPointsHolder::savePointsFormat () const
void MR::ObjectPointsHolder::setSerializeFormat (const char *newFormat)
MR_BIND_IGNORE void MR::ObjectPointsHolder::setSavePointsFormat (const char *newFormat)
void MR::ObjectPointsHolder::resetFrontColor () override
 reset basic object colors to their default values from the current theme
void MR::ObjectPointsHolder::resetColors () override
 reset all object colors to their default values from the current theme
virtual void MR::ObjectPointsHolder::swapSignals_ (Object &other) override
 MR::ObjectPointsHolder::ObjectPointsHolder (const ObjectPointsHolder &other)=default
virtual void MR::ObjectPointsHolder::swapBase_ (Object &other) override
 swaps this object with other
virtual Box3f MR::ObjectPointsHolder::computeBoundingBox_ () const override
virtual Expected< std::future< Expected< void > > > MR::ObjectPointsHolder::serializeModel_ (const std::filesystem::path &path) const override
virtual Expected< void > MR::ObjectPointsHolder::deserializeModel_ (const std::filesystem::path &path, ProgressCallback progressCb={}) override
 Reads model from file.
virtual void MR::ObjectPointsHolder::serializeFields_ (Json::Value &root) const override
virtual void MR::ObjectPointsHolder::deserializeFields_ (const Json::Value &root) override
virtual void MR::ObjectPointsHolder::setupRenderObject_ () const override
void MR::ObjectPointsHolder::setAllVisualizeProperties_ (const AllVisualizeProperties &properties, std::size_t &pos) override
 set all visualize properties masks
const std::string & MR::defaultSerializePointsFormat ()
void MR::setDefaultSerializePointsFormat (std::string newFormat)
bool MR::objectHasSelectableChildren (const MR::Object &object, bool recurse=false)
Expected< void > MR::ObjectSave::toAnySupportedSceneFormat (const Object &object, const std::filesystem::path &file, const Settings &settings={})
Expected< void > MR::ObjectSave::toAnySupportedFormat (const Object &object, const std::filesystem::path &file, const Settings &settings={})
Expected< void > MR::serializeObjectTree (const Object &object, const std::filesystem::path &path, FolderCallback preCompress, const SceneSave::Settings &settings={})
 saves object subtree in given scene file (zip/mru)
Expected< void > MR::serializeObjectTree (const Object &object, const std::filesystem::path &path, const SceneSave::Settings &settings={})
static ObjectTagEventDispatcherMR::ObjectTagEventDispatcher::instance ()
 returns singleton instance
bool MR::OffsetContourIndex::valid () const
bool MR::OffsetContoursOrigins::valid () const
bool MR::OffsetContoursOrigins::isIntersection () const
Contours2f MR::offsetContours (const Contours2f &contours, float offset, const OffsetContoursParams &params={})
 offsets 2d contours in plane
Contours2f MR::offsetContours (const Contours2f &contours, ContoursVariableOffset offset, const OffsetContoursParams &params={})
 offsets 2d contours in plane
Contours3f MR::offsetContours (const Contours3f &contours, float offset, const OffsetContoursParams &params={}, const OffsetContoursRestoreZParams &zParmas={})
 offsets 3d contours in XY plane
Contours3f MR::offsetContours (const Contours3f &contours, ContoursVariableOffset offset, const OffsetContoursParams &params={}, const OffsetContoursRestoreZParams &zParmas={})
 offsets 3d contours in XY plane
bool MR::offsetVerts (Mesh &mesh, const VertMetric &offset, const ProgressCallback &cb={})
Mesh MR::makeThickMesh (const Mesh &m, const ThickenParams &params)
bool MR::zCompensate (Mesh &mesh, const ZCompensateParams &params)
std::optional< VertScalars > MR::findZcompensationShifts (const Mesh &mesh, const ZCompensateParams &params)
 finds the shift along z-axis for each vertex without modifying the mesh
std::optional< VertCoords > MR::findZcompensatedPositions (const Mesh &mesh, const ZCompensateParams &params)
 finds vertices positions of the mesh after z-compensation without modifying the mesh
void MR::subdivideLoneContours (Mesh &mesh, const OneMeshContours &contours, FaceHashMap *new2oldMap=nullptr)
void MR::getOneMeshIntersectionContours (const Mesh &meshA, const Mesh &meshB, const ContinuousContours &contours, OneMeshContours *outA, OneMeshContours *outB, const CoordinateConverters &converters, const AffineXf3f *rigidB2A=nullptr, Contours3f *outPtsA=nullptr, bool addSelfyTerminalVerts=false)
 if true, then open self-intersection contours will be prolonged to terminal vertices
OneMeshContours MR::getOneMeshSelfIntersectionContours (const Mesh &mesh, const ContinuousContours &contours, const CoordinateConverters &converters, const AffineXf3f *rigidB2A=nullptr)
Contours3f MR::extractMeshContours (const OneMeshContours &meshContours)
 Converts OneMeshContours contours representation to Contours3f: set of coordinates.
FaceBMap MR::getOptimalFaceOrdering (const Mesh &mesh)
VertBMap MR::getVertexOrdering (const FaceBMap &faceMap, const MeshTopology &topology)
UndirectedEdgeBMap MR::getEdgeOrdering (const FaceBMap &faceMap, const MeshTopology &topology)
 MR::OutliersDetector::OutliersDetector ()=default
Expected< void > MR::OutliersDetector::prepare (const PointCloud &pc, float radius, OutlierTypeMask mask, ProgressCallback progress={})
void MR::OutliersDetector::setParams (const OutlierParams &params)
 calculate caches
const OutlierParamsMR::OutliersDetector::getParams () const
 Get search parameters.
Expected< VertBitSet > MR::OutliersDetector::find (OutlierTypeMask mask, ProgressCallback progress={})
const std::vector< uint8_t > & MR::OutliersDetector::getWeaklyConnectedStat ()
 unite and calculate actual outliers
Expected< VertBitSet > MR::findOutliers (const PointCloud &pc, const FindOutliersParams &params)
 Finding outlier points.
Expected< FaceBitSet > MR::findOverlappingTris (const MeshPart &mp, const FindOverlappingSettings &settings)
 finds all triangles that have oppositely oriented close triangle in the mesh
constexpr MR::Parabola< T >::Parabola () noexcept=default
constexpr MR::Parabola< T >::Parabola (T a, T b, T c)
template<typename U>
constexpr MR::Parabola< T >::Parabola (const Parabola< U > &p)
constexpr T MR::Parabola< T >::operator() (T x) const
 compute value of quadratic function at any x
constexpr T MR::Parabola< T >::extremArg () const
 argument (x) where parabola reaches extremal value: minimum for a > 0, maximum for a < 0
constexpr T MR::Parabola< T >::extremVal () const
 value (y) where parabola reaches extremal value: minimum for a > 0, maximum for a < 0
auto MR::Parallel::CallSimply::operator() (auto &&f, auto id) const
auto MR::Parallel::CallSimply::operator() (auto &&f, auto id, auto &&subrange) const
auto MR::Parallel::CallSimplyMaker::operator() () const
auto MR::Parallel::CallWithTLS< T >::operator() (auto &&f, auto id) const
auto MR::Parallel::CallWithTLS< T >::operator() (auto &&f, auto id, auto &&subrange) const
auto MR::Parallel::CallWithTLSMaker< L >::operator() () const
template<typename T>
MinMaxArg< T, size_t > MR::parallelMinMaxArg (const T *data, size_t size, const BitSet *region=nullptr, const T *topExcluding=nullptr)
template<typename T, typename Itag>
MinMaxArg< T, Id< Itag > > MR::parallelMinMaxArg (const Vector< T, Id< Itag > > &vec, const TaggedBitSet< Itag > *region=nullptr, const T *topExcluding=nullptr)
template<typename T>
std::pair< T, T > MR::parallelMinMax (const T *data, size_t size, const BitSet *region=nullptr, const T *topExcluding=nullptr)
template<typename T>
std::pair< T, T > MR::parallelMinMax (const std::vector< T > &vec, const BitSet *region=nullptr, const T *topExcluding=nullptr)
template<typename T, typename Itag>
std::pair< T, T > MR::parallelMinMax (const Vector< T, Id< Itag > > &vec, const TaggedBitSet< Itag > *region=nullptr, const T *topExcluding=nullptr)
 MR::ParallelProgressReporter::ParallelProgressReporter (const ProgressCallback &cb)
bool MR::ParallelProgressReporter::PerTaskReporter::operator() (float p) const
PerTaskReporter MR::ParallelProgressReporter::newTask (float weight=1.f)
bool MR::ParallelProgressReporter::operator() ()
void MR::PartMapping::clear ()
 clears all member maps
 MR::Src2TgtMaps::Src2TgtMaps (FaceMap *outFmap, VertMap *outVmap, WholeEdgeMap *outEmap)
 MR::Src2TgtMaps::~Src2TgtMaps ()
 MR::Src2TgtMaps::operator const PartMapping & () const
 maps are moved back to user here
const PartMappingMR::Src2TgtMaps::getPartMapping () const
 MR::Tgt2SrcMaps::Tgt2SrcMaps (FaceMap *outFmap, VertMap *outVmap, WholeEdgeMap *outEmap)
 MR::Tgt2SrcMaps::~Tgt2SrcMaps ()
 MR::Tgt2SrcMaps::operator const PartMapping & () const
 maps are moved back to user here
const PartMappingMR::Tgt2SrcMaps::getPartMapping () const
constexpr MR::Plane3< T >::Plane3 () noexcept=default
constexpr MR::Plane3< T >::Plane3 (const Vector3< T > &n, T d) noexcept
template<typename U>
 MR::Plane3< T >::MR_REQUIRES_IF_SUPPORTED (!std::is_same_v< T, U >) const expr explicit Plane3(const Plane3< U > &p) noexcept
static constexpr Plane3 MR::Plane3< T >::fromDirAndPt (const Vector3< T > &n, const Vector3< T > &p)
MR::Plane3< T >::distance (const Vector3< T > &x) const
 returns distance from given point to this plane (if n is a unit vector)
Plane3 MR::Plane3< T >::operator- () const
 returns same plane represented with flipped direction of n-vector
const Plane3MR::Plane3< T >::operator+ () const
 returns same representation
Plane3 MR::Plane3< T >::normalized () const
 returns same plane represented with unit n-vector
Vector3< T > MR::Plane3< T >::project (const Vector3< T > &p) const
 finds the closest point on plane
 MR::PlaneObject::PlaneObject ()
 Creates simple plane object.
 MR::PlaneObject::PlaneObject (const std::vector< Vector3f > &pointsToApprox)
 Finds best plane to approx given points.
 MR::PlaneObject::PlaneObject (PlaneObject &&) noexcept=default
PlaneObjectMR::PlaneObject::operator= (PlaneObject &&) noexcept=default
static constexpr const char * MR::PlaneObject::StaticTypeName () noexcept
virtual const char * MR::PlaneObject::typeName () const override
static constexpr const char * MR::PlaneObject::StaticClassName () noexcept
virtual std::string MR::PlaneObject::className () const override
static constexpr const char * MR::PlaneObject::StaticClassNameInPlural () noexcept
virtual std::string MR::PlaneObject::classNameInPlural () const override
 MR::PlaneObject::PlaneObject (ProtectedStruct, const PlaneObject &obj)
virtual std::shared_ptr< ObjectMR::PlaneObject::clone () const override
virtual std::shared_ptr< ObjectMR::PlaneObject::shallowClone () const override
Vector3f MR::PlaneObject::getNormal (ViewportId id={}) const
 calculates normal from xf
Vector3f MR::PlaneObject::getCenter (ViewportId id={}) const
 calculates center from xf
void MR::PlaneObject::setNormal (const Vector3f &normal, ViewportId id={})
 updates xf to fit given normal
void MR::PlaneObject::setCenter (const Vector3f &center, ViewportId id={})
 updates xf to fit given center
void MR::PlaneObject::setSize (float size, ViewportId id={})
 updates xf to scale size
float MR::PlaneObject::getSize (ViewportId id={}) const
 calculates plane size from xf
float MR::PlaneObject::getSizeX (ViewportId id={}) const
float MR::PlaneObject::getSizeY (ViewportId id={}) const
Matrix3f MR::PlaneObject::calcLocalBasis (ViewportId id={}) const
 calculates normalized directions of X,Y axis of the plane and normal as Z
void MR::PlaneObject::setSizeX (float size, ViewportId id={})
void MR::PlaneObject::setSizeY (float size, ViewportId id={})
virtual Vector3f MR::PlaneObject::getBasePoint (ViewportId id={}) const override
 Returns point considered as base for the feature.
FeatureObjectProjectPointResult MR::PlaneObject::projectPoint (const Vector3f &point, ViewportId id={}) const override
virtual const std::vector< FeatureObjectSharedProperty > & MR::PlaneObject::getAllSharedProperties () const override
 Create and generate list of bounded getters and setters for the main properties of feature object, together with prop. name for display and edit into UI.
 MR::PlaneObject::PlaneObject (const PlaneObject &other)=default
virtual void MR::PlaneObject::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::PlaneObject::serializeFields_ (Json::Value &root) const override
virtual Expected< std::future< Expected< void > > > MR::PlaneObject::serializeModel_ (const std::filesystem::path &) const override
virtual Expected< void > MR::PlaneObject::deserializeModel_ (const std::filesystem::path &, ProgressCallback) override
 Reads model from file.
void MR::PlaneObject::setupRenderObject_ () const override
Expected< VertCoords > MR::loadPly (std::istream &in, const PlyLoadParams &params)
float MR::findMaxDistanceSqOneWay (const PointCloud &a, const PointCloud &b, const AffineXf3f *rigidB2A=nullptr, float maxDistanceSq=FLT_MAX)
 returns the maximum of the squared distances from each B-point to A-cloud
float MR::findMaxDistanceSq (const PointCloud &a, const PointCloud &b, const AffineXf3f *rigidB2A=nullptr, float maxDistanceSq=FLT_MAX)
 returns the squared Hausdorff distance between two point clouds, that is the maximum of squared distances from each point to the other cloud (in both directions)
VertBitSet MR::findHalfSpacePoints (const PointCloud &pc, const Plane3f &plane)
PointCloud MR::divideWithPlane (const PointCloud &points, const Plane3f &plane, const DividePointCloudOptionalOutput &optOut={})
 MR::PointCloudPart::PointCloudPart (const PointCloud &c, const VertBitSet *bs=nullptr) noexcept
 nullptr here means all valid points of point cloud
 MR::PointCloudPart::PointCloudPart (const PointCloudPart &other) noexcept=default
 Make this assignable. A better idea would be to rewrite the class to not use references, but doing this instead preserves API compatibility.
PointCloudPartMR::PointCloudPart::operator= (const PointCloudPart &other) noexcept
bool MR::dilateRegion (const PointCloud &pointCloud, VertBitSet &region, float dilation, ProgressCallback cb={}, const AffineXf3f *xf=nullptr)
 expands the region on given euclidian distance. returns false if callback also returns false
bool MR::erodeRegion (const PointCloud &pointCloud, VertBitSet &region, float erosion, ProgressCallback cb={}, const AffineXf3f *xf=nullptr)
 shrinks the region on given euclidian distance. returns false if callback also returns false
 MR::PointMeasurementObject::PointMeasurementObject ()=default
 MR::PointMeasurementObject::PointMeasurementObject (PointMeasurementObject &&) noexcept=default
PointMeasurementObjectMR::PointMeasurementObject::operator= (PointMeasurementObject &&) noexcept=default
static constexpr const char * MR::PointMeasurementObject::StaticTypeName () noexcept
const char * MR::PointMeasurementObject::typeName () const override
static constexpr const char * MR::PointMeasurementObject::StaticClassName () noexcept
std::string MR::PointMeasurementObject::className () const override
static constexpr const char * MR::PointMeasurementObject::StaticClassNameInPlural () noexcept
std::string MR::PointMeasurementObject::classNameInPlural () const override
 MR::PointMeasurementObject::PointMeasurementObject (ProtectedStruct, const PointMeasurementObject &obj)
std::shared_ptr< ObjectMR::PointMeasurementObject::clone () const override
std::shared_ptr< ObjectMR::PointMeasurementObject::shallowClone () const override
bool MR::PointMeasurementObject::supportsVisualizeProperty (AnyVisualizeMaskEnum type) const override
 Returns true if this class supports the property type. Otherwise passing it to the functions below is illegal.
AllVisualizeProperties MR::PointMeasurementObject::getAllVisualizeProperties () const override
 get all visualize properties masks
const ViewportMaskMR::PointMeasurementObject::getVisualizePropertyMask (AnyVisualizeMaskEnum type) const override
 returns mask of viewports where given property is set
Vector3f MR::PointMeasurementObject::getLocalPoint (ViewportId id={}) const
 calculates point from xf
Vector3f MR::PointMeasurementObject::getWorldPoint (ViewportId id={}) const
void MR::PointMeasurementObject::setLocalPoint (const Vector3f &point, ViewportId id={})
 updates xf to fit given point
void MR::PointMeasurementObject::setWorldPoint (const Vector3f &point, ViewportId id={})
std::size_t MR::PointMeasurementObject::numComparableProperties () const override
 Implement ObjectComparableWithReference:
std::string_view MR::PointMeasurementObject::getComparablePropertyName (std::size_t i) const override
 i goes up to numComparableProperties(), exclusive.
std::optional< ComparablePropertyMR::PointMeasurementObject::computeComparableProperty (std::size_t i) const override
std::optional< ComparisonToleranceMR::PointMeasurementObject::getComparisonTolerence (std::size_t i) const override
void MR::PointMeasurementObject::setComparisonTolerance (std::size_t i, std::optional< ComparisonTolerance > newTolerance) override
bool MR::PointMeasurementObject::comparisonToleranceIsAlwaysOnlyPositive (std::size_t i) const override
std::size_t MR::PointMeasurementObject::numComparisonReferenceValues () const override
std::string_view MR::PointMeasurementObject::getComparisonReferenceValueName (std::size_t i) const override
 i goes up to numComparisonReferenceValues(), exclusive.
ComparisonReferenceValue MR::PointMeasurementObject::getComparisonReferenceValue (std::size_t i) const override
void MR::PointMeasurementObject::setComparisonReferenceValue (std::size_t i, std::optional< ComparisonReferenceValue::Var > value) override
 MR::PointMeasurementObject::PointMeasurementObject (const PointMeasurementObject &other)=default
void MR::PointMeasurementObject::swapBase_ (Object &other) override
 swaps this object with other
void MR::PointMeasurementObject::serializeFields_ (Json::Value &root) const override
void MR::PointMeasurementObject::deserializeFields_ (const Json::Value &root) override
void MR::PointMeasurementObject::setupRenderObject_ () const override
 MR::PointObject::PointObject ()
 Creates simple point object with zero position.
 MR::PointObject::PointObject (const std::vector< Vector3f > &pointsToApprox)
 Finds best point to approx given points.
 MR::PointObject::PointObject (PointObject &&) noexcept=default
PointObjectMR::PointObject::operator= (PointObject &&) noexcept=default
static constexpr const char * MR::PointObject::StaticTypeName () noexcept
virtual const char * MR::PointObject::typeName () const override
static constexpr const char * MR::PointObject::StaticClassName () noexcept
virtual std::string MR::PointObject::className () const override
static constexpr const char * MR::PointObject::StaticClassNameInPlural () noexcept
virtual std::string MR::PointObject::classNameInPlural () const override
 MR::PointObject::PointObject (ProtectedStruct, const PointObject &obj)
virtual std::shared_ptr< ObjectMR::PointObject::clone () const override
virtual std::shared_ptr< ObjectMR::PointObject::shallowClone () const override
Vector3f MR::PointObject::getPoint (ViewportId id={}) const
 calculates point from xf
void MR::PointObject::setLocalPoint (const Vector3f &point, ViewportId id={})
 updates xf to fit given point
virtual std::vector< FeatureObjectSharedProperty > & MR::PointObject::getAllSharedProperties () const override
 Create and generate list of bounded getters and setters for the main properties of feature object, together with prop. name for display and edit into UI.
FeatureObjectProjectPointResult MR::PointObject::projectPoint (const Vector3f &, ViewportId id={}) const override
 MR::PointObject::PointObject (const PointObject &other)=default
virtual void MR::PointObject::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::PointObject::serializeFields_ (Json::Value &root) const override
virtual Expected< std::future< Expected< void > > > MR::PointObject::serializeModel_ (const std::filesystem::path &) const override
virtual Expected< void > MR::PointObject::deserializeModel_ (const std::filesystem::path &, ProgressCallback) override
 Reads model from file.
void MR::PointObject::setupRenderObject_ () const override
bool MR::PointOnFace::valid () const
 check for validity, otherwise the point is not defined
 MR::PointOnFace::operator bool () const
 MR::PointOnObject::PointOnObject ()
 MR::PointOnObject::operator PointOnFace () const
PickedPoint MR::pointOnObjectToPickedPoint (const VisualObject *object, const PointOnObject &pos)
 Converts PointOnObject coordinates depending on the object type to the PickedPoint variant.
std::optional< Vector3f > MR::getPickedPointPosition (const VisualObject &object, const PickedPoint &point)
MR_BIND_IGNORE Vector3f MR::pickedPointToVector3 (const VisualObject *object, const PickedPoint &point)
 Converts pickedPoint into local coordinates of its object.
MR_BIND_IGNORE bool MR::isPickedPointValid (const VisualObject *object, const PickedPoint &point)
 Checks that the picked point presents in the object's topology.
std::optional< Vector3f > MR::getPickedPointNormal (const VisualObject &object, const PickedPoint &point, bool interpolated=true)
virtual MR::IPointsToMeshProjector::~IPointsToMeshProjector ()=default
virtual void MR::IPointsToMeshProjector::updateMeshData (const Mesh *mesh)=0
 Updates all data related to the referencing mesh.
virtual void MR::IPointsToMeshProjector::findProjections (std::vector< MeshProjectionResult > &result, const std::vector< Vector3f > &points, const AffineXf3f *worldXf=nullptr, const AffineXf3f *worldRefXf=nullptr, float upDistLimitSq=FLT_MAX, float loDistLimitSq=0.0f)=0
 Computes the closest point on mesh to each of given points.
virtual size_t MR::IPointsToMeshProjector::projectionsHeapBytes (size_t numProjections) const =0
 Returns amount of memory needed to compute projections.
VertScalars MR::findSignedDistances (const Mesh &refMesh, const VertCoords &testPoints, const VertBitSet *validTestPoints={}, const MeshProjectionParameters &params={}, IPointsToMeshProjector *projector={})
 if projector is not given then CPU's computations will be used
VertScalars MR::findSignedDistances (const Mesh &refMesh, const Mesh &mesh, const MeshProjectionParameters &params={}, IPointsToMeshProjector *projector={})
 if projector is not given then CPU's computations will be used
virtual void MR::PointsToMeshProjector::updateMeshData (const Mesh *mesh) override
 update all data related to the referencing mesh
virtual void MR::PointsToMeshProjector::findProjections (std::vector< MeshProjectionResult > &result, const std::vector< Vector3f > &points, const AffineXf3f *objXf, const AffineXf3f *refObjXf, float upDistLimitSq, float loDistLimitSq) override
 Computes the closest point on mesh to each of given points.
virtual size_t MR::PointsToMeshProjector::projectionsHeapBytes (size_t numProjections) const override
 Returns amount of additional memory needed to compute projections.
size_t MR::PolylineComponents::getNumComponents (const PolylineTopology &topology)
 returns the number of connected components in polyline
DecimatePolylineResult MR::decimatePolyline (Polyline3 &polyline, const DecimatePolylineSettings3 &settings={})
DecimatePolylineResult MR::decimateContour (Contour3f &contour, const DecimatePolylineSettings3 &settings={})
 MR::PolylineUndirectedEdgeIterator::PolylineUndirectedEdgeIterator (const PolylineTopology &topology)
 creates begin iterator
 MR::PolylineUndirectedEdgeIterator::PolylineUndirectedEdgeIterator ()=default
 creates end iterator
PolylineUndirectedEdgeIteratorMR::PolylineUndirectedEdgeIterator::operator++ ()
UndirectedEdgeId MR::PolylineUndirectedEdgeIterator::operator* () const
template<typename T, typename F1, typename F2>
void MR::PolylineTopology::buildFromContours (const std::vector< std::vector< T > > &contours, F1 &&reservePoints, F2 &&addPoint)
void MR::PolylineTopology::buildOpenLines (const std::vector< VertId > &comp2firstVert)
template<typename T, typename F>
std::vector< std::vector< T > > MR::PolylineTopology::convertToContours (F &&getPoint, std::vector< std::vector< VertId > > *vertMap=nullptr) const
 converts this topology into contours of given type using the functor returning point by its Id
EdgeId MR::PolylineTopology::makeEdge ()
 creates an edge not associated with any vertex
EdgeId MR::PolylineTopology::makeEdge (VertId a, VertId b, EdgeId e={})
int MR::PolylineTopology::makeEdges (const Edges &edges)
bool MR::PolylineTopology::isLoneEdge (EdgeId a) const
 checks whether the edge is disconnected from all other edges and disassociated from all vertices (as if after makeEdge)
UndirectedEdgeId MR::PolylineTopology::lastNotLoneUndirectedEdge () const
 returns last not lone undirected edge id, or invalid id if no such edge exists
EdgeId MR::PolylineTopology::lastNotLoneEdge () const
 returns last not lone edge id, or invalid id if no such edge exists
size_t MR::PolylineTopology::edgeSize () const
 returns the number of half-edge records including lone ones
size_t MR::PolylineTopology::edgeCapacity () const
 returns the number of allocated edge records
size_t MR::PolylineTopology::undirectedEdgeSize () const
 returns the number of undirected edges (pairs of half-edges) including lone ones
size_t MR::PolylineTopology::undirectedEdgeCapacity () const
 returns the number of allocated undirected edges (pairs of half-edges)
size_t MR::PolylineTopology::computeNotLoneUndirectedEdges () const
 computes the number of not-lone (valid) undirected edges
void MR::PolylineTopology::edgeReserve (size_t newCapacity)
 sets the capacity of half-edges vector
bool MR::PolylineTopology::hasEdge (EdgeId e) const
 returns true if given edge is within valid range and not-lone
void MR::PolylineTopology::deleteEdge (UndirectedEdgeId ue)
 given edge becomes lone after the call, so it is un-spliced from connected edges, and if it was not connected at origin or destination, then that vertex is deleted as well
void MR::PolylineTopology::deleteEdges (const UndirectedEdgeBitSet &es)
 calls deleteEdge for every set bit
size_t MR::PolylineTopology::heapBytes () const
 returns the amount of memory this object occupies on heap
void MR::PolylineTopology::splice (EdgeId a, EdgeId b)
EdgeId MR::PolylineTopology::next (EdgeId he) const
 next (counter clock wise) half-edge in the origin ring
VertId MR::PolylineTopology::org (EdgeId he) const
 returns origin vertex of half-edge
VertId MR::PolylineTopology::dest (EdgeId he) const
 returns destination vertex of half-edge
void MR::PolylineTopology::setOrg (EdgeId a, VertId v)
const Vector< EdgeId, VertId > & MR::PolylineTopology::edgePerVertex () const
 for all valid vertices this vector contains an edge with the origin there
Vector< VertId, EdgeId > MR::PolylineTopology::getOrgs () const
 for all edges this vector contains its origin
EdgeId MR::PolylineTopology::edgeWithOrg (VertId a) const
 returns valid edge if given vertex is present in the mesh
bool MR::PolylineTopology::hasVert (VertId a) const
 returns true if given vertex is present in the mesh
int MR::PolylineTopology::getVertDegree (VertId a) const
 returns 0 if given vertex does not exist, 1 if it has one incident edge, and 2 if it has two incident edges
int MR::PolylineTopology::numValidVerts () const
 returns the number of valid vertices
VertId MR::PolylineTopology::lastValidVert () const
 returns last valid vertex id, or invalid id if no single valid vertex exists
VertId MR::PolylineTopology::addVertId ()
 creates new vert-id not associated with any edge yet
void MR::PolylineTopology::vertResize (size_t newSize)
 explicitly increases the size of vertices vector
void MR::PolylineTopology::vertResizeWithReserve (size_t newSize)
 explicitly increases the size of vertices vector, doubling the current capacity if it was not enough
void MR::PolylineTopology::vertReserve (size_t newCapacity)
 sets the capacity of vertices vector
size_t MR::PolylineTopology::vertSize () const
 returns the number of vertex records including invalid ones
size_t MR::PolylineTopology::vertCapacity () const
 returns the number of allocated vert records
const VertBitSet & MR::PolylineTopology::getValidVerts () const
 returns cached set of all valid vertices
const VertBitSet & MR::PolylineTopology::getVertIds (const VertBitSet *region) const
 if region pointer is not null then converts it in reference, otherwise returns all valid vertices in the mesh
EdgeId MR::PolylineTopology::findEdge (VertId o, VertId d) const
 finds and returns edge from o to d in the mesh; returns invalid edge otherwise
VertBitSet MR::PolylineTopology::getPathVertices (const EdgePath &path) const
 returns all vertices incident to path edges
EdgeId MR::PolylineTopology::splitEdge (EdgeId e)
EdgeId MR::PolylineTopology::makePolyline (const VertId *vs, size_t num)
void MR::PolylineTopology::addPart (const PolylineTopology &from, VertMap *outVmap=nullptr, WholeEdgeMap *outEmap=nullptr)
void MR::PolylineTopology::addPartByMask (const PolylineTopology &from, const UndirectedEdgeBitSet &mask, VertMap *outVmap=nullptr, EdgeMap *outEmap=nullptr)
 appends polyline topology (from) in addition to the current topology: creates new edges, verts;
void MR::PolylineTopology::pack (VertMap *outVmap=nullptr, WholeEdgeMap *outEmap=nullptr)
void MR::PolylineTopology::write (std::ostream &s) const
 saves this in binary stream
bool MR::PolylineTopology::read (std::istream &s)
 loads this from binary stream
bool MR::PolylineTopology::operator== (const PolylineTopology &b) const
 comparison via edges (all other members are considered as not important caches)
bool MR::PolylineTopology::operator!= (const PolylineTopology &b) const
bool MR::PolylineTopology::isConsistentlyOriented () const
 returns true if for each edge e: e == e.next() || e.odd() == next( e ).sym().odd()
void MR::PolylineTopology::flip ()
 changes the orientation of all edges: every edge e is replaced with e.sym()
bool MR::PolylineTopology::checkValidity () const
 verifies that all internal data structures are valid
void MR::PolylineTopology::computeValidsFromEdges ()
 computes numValidVerts_ and validVerts_ from edgePerVertex_
bool MR::PolylineTopology::isClosed () const
 returns true if the polyline does not have any holes
bool MR::PolylineTopology::HalfEdgeRecord::operator== (const HalfEdgeRecord &b) const
 MR::PolylineTopology::HalfEdgeRecord::HalfEdgeRecord () noexcept=default
 MR::PolylineTopology::HalfEdgeRecord::HalfEdgeRecord (NoInit) noexcept
 MR::PolylineMaker::PolylineMaker (PolylineTopology &t)
EdgeId MR::PolylineMaker::start (VertId v)
EdgeId MR::PolylineMaker::proceed (VertId v)
void MR::PolylineMaker::close ()
 closes the polyline
void MR::PolylineMaker::finishOpen (VertId v)
 finishes the polyline adding final vertex in it
UndirectedEdgeBitSet MR::subdivideWithPlane (Polyline3 &polyline, const Plane3f &plane, EdgeBitSet *newPositiveEdges={}, std::function< void(EdgeId, EdgeId, float)> onEdgeSplitCallback={})
MR_BIND_IGNORE UndirectedEdgeBitSet MR::subdividePolylineWithPlane (Polyline3 &polyline, const Plane3f &plane, std::function< void(EdgeId, EdgeId, float)> onEdgeSplitCallback={})
void MR::trimWithPlane (Polyline3 &polyline, const Plane3f &plane, const DividePolylineParameters &params={})
MR_BIND_IGNORE void MR::dividePolylineWithPlane (Polyline3 &polyline, const Plane3f &plane, const DividePolylineParameters &params={})
std::vector< EdgeSegmentMR::extractSectionsFromPolyline (const Polyline3 &polyline, const Plane3f &plane, float eps, UndirectedEdgeBitSet *positiveEdges={})
 MR::PositionedText::PositionedText ()=default
 MR::PositionedText::PositionedText (const std::string &text, const Vector3f &position)
bool MR::PositionedText::operator== (const PositionedText &) const =default
void MR::positionVertsSmoothly (Mesh &mesh, const VertBitSet &verts, EdgeWeights edgeWeights=EdgeWeights::Cotan, VertexMass vmass=VertexMass::Unit, const VertBitSet *fixedSharpVertices=nullptr)
void MR::positionVertsSmoothly (const MeshTopology &topology, VertCoords &points, const VertBitSet &verts, EdgeWeights edgeWeights=EdgeWeights::Cotan, VertexMass vmass=VertexMass::Unit, const VertBitSet *fixedSharpVertices=nullptr)
void MR::positionVertsSmoothlySharpBd (Mesh &mesh, const PositionVertsSmoothlyParams &params)
 Puts given vertices in such positions to make smooth surface inside verts-region, but sharp on its boundary;.
void MR::positionVertsSmoothlySharpBd (const MeshTopology &topology, VertCoords &points, const PositionVertsSmoothlyParams &params)
void MR::positionVertsSmoothlySharpBd (Mesh &mesh, const VertBitSet &verts)
void MR::positionVertsWithSpacing (Mesh &mesh, const SpacingSettings &settings)
 Moves given vertices to make the distances between them as specified.
void MR::positionVertsWithSpacing (const MeshTopology &topology, VertCoords &points, const SpacingSettings &settings)
void MR::inflate (Mesh &mesh, const VertBitSet &verts, const InflateSettings &settings)
void MR::inflate (const MeshTopology &topology, VertCoords &points, const VertBitSet &verts, const InflateSettings &settings)
void MR::inflate1 (const MeshTopology &topology, VertCoords &points, const VertBitSet &verts, float pressure)
 MR::PrecipitationSimulator::PrecipitationSimulator (WatershedGraph &wg)
 initializes modeling from the initial subdivision of the terrain
SimulationStep MR::PrecipitationSimulator::simulateOne ()
 processes the next event happened with the terrain basins
 MR::SegmentSegmentIntersectResult::operator bool () const
 MR::TriangleSegmentIntersectResult::operator bool () const
 MR::PriorityQueue< T, P >::PriorityQueue ()
 constructs empty queue
 MR::PriorityQueue< T, P >::PriorityQueue (const P &pred)
 MR::PriorityQueue< T, P >::PriorityQueue (const P &pred, Container &&v MR_LIFETIMEBOUND_NESTED)
 initializes queue elements from given vector
bool MR::PriorityQueue< T, P >::empty () const
 checks if the queue has no elements
size_type MR::PriorityQueue< T, P >::size () const
 returns the number of elements
const T & MR::PriorityQueue< T, P >::top () const MR_LIFETIMEBOUND
 accesses the top element
void MR::PriorityQueue< T, P >::push (const value_type &value MR_LIFETIME_CAPTURE_BY_NESTED(this))
 inserts element in the queue
void MR::PriorityQueue< T, P >::push (value_type &&value MR_LIFETIME_CAPTURE_BY_NESTED(this))
template<class... Args>
void MR::PriorityQueue< T, P >::emplace (Args &&... args)
void MR::PriorityQueue< T, P >::pop ()
 removes the top element from the priority queue
Mesh MR::makePrism (float baseLength, float leftAngle, float rightAngle, float height=1.0f)
MR_BIND_IGNORE void MR::processSelfSubtasks (const AABBTree &tree, std::vector< NodeNode > &subtasks, std::vector< NodeNode > &nextSubtasks, std::function< Processing(const NodeNode &)> processLeaf, std::function< Processing(const Box3f &lBox, const Box3f &rBox)> processNodes)
 This function process all subtasks in one tree
left/right == right/left in this case, so on same non-leaf nodes it only adds 3 next subtasks,
same leafs are skipped and different leafs area processed with processLeaf callback.
bool MR::reportProgress (ProgressCallback cb, float v)
 safely invokes
bool MR::reportProgress (ProgressCallback cb, float v, size_t counter, int divider)
template<typename F>
bool MR::reportProgress (ProgressCallback cb, F &&f)
template<typename F>
bool MR::reportProgress (ProgressCallback cb, F &&f, size_t counter, int divider)
ProgressCallback MR::subprogress (ProgressCallback cb, float from, float to)
 returns a callback that maps [0,1] linearly into [from,to] in the call to
template<typename F>
ProgressCallback MR::subprogress (ProgressCallback cb, F &&f)
 returns a callback that maps the value with given function
ProgressCallback MR::subprogress (ProgressCallback cb, size_t index, size_t count)
 returns a callback that maps [0,1] linearly into [(index+0)/count,(index+1)/count] in the call to
bool MR::writeByBlocks (std::ostream &out, const char *data, size_t dataSize, ProgressCallback callback={}, size_t blockSize=(size_t(1)<< 16))
 write dataSize bytes from data to out stream by blocks blockSize bytes
bool MR::readByBlocks (std::istream &in, char *data, size_t dataSize, ProgressCallback callback={}, size_t blockSize=(size_t(1)<< 16))
 read dataSize bytes from in stream to data by blocks blockSize bytes
template<typename F>
bool MR::projectVertAttribute (const MeshVertPart &mp, const Mesh &oldMesh, F &&func, const ProjectAttributeParams &params={})
template<typename F>
bool MR::projectFaceAttribute (const MeshPart &mp, const Mesh &oldMesh, F &&func, const ProjectAttributeParams &params={})
Expected< void > MR::projectObjectMeshData (const ObjectMeshData &oldMeshData, ObjectMeshData &newMeshData, const FaceBitSet *region=nullptr, const ProjectAttributeParams &params={})
 finds attributes of new mesh by projecting faces/vertices on old mesh
T MR::QuadraticForm< V >::eval (const V &x) const
 evaluates the function at given x
void MR::QuadraticForm< V >::addDistToOrigin (T weight)
 adds to this squared distance to the origin point
void MR::QuadraticForm< V >::addDistToPlane (const V &planeUnitNormal)
 adds to this squared distance to plane passing via origin with given unit normal
void MR::QuadraticForm< V >::addDistToPlane (const V &planeUnitNormal, T weight)
void MR::QuadraticForm< V >::addDistToLine (const V &lineUnitDir)
 adds to this squared distance to line passing via origin with given unit direction
void MR::QuadraticForm< V >::addDistToLine (const V &lineUnitDir, T weight)
constexpr MR::Quaternion< T >::Quaternion () noexcept=default
constexpr MR::Quaternion< T >::Quaternion (T a, T b, T c, T d) noexcept
constexpr MR::Quaternion< T >::Quaternion (const Vector3< T > &axis, T angle) noexcept
constexpr MR::Quaternion< T >::Quaternion (T real, const Vector3< T > &im) noexcept
constexpr MR::Quaternion< T >::Quaternion (const Matrix3< T > &m)
constexpr MR::Quaternion< T >::Quaternion (const Vector3< T > &from, const Vector3< T > &to) noexcept
 finds shorter arc rotation quaternion from one vector to another
constexpr Vector3< T > MR::Quaternion< T >::im () const noexcept
 returns imaginary part of the quaternion as a vector
constexpr T MR::Quaternion< T >::angle () const noexcept
 returns angle of rotation encoded in this quaternion
constexpr Vector3< T > MR::Quaternion< T >::axis () const noexcept
 returns axis of rotation encoded in this quaternion
constexpr T MR::Quaternion< T >::normSq () const
constexpr T MR::Quaternion< T >::norm () const
constexpr Quaternion MR::Quaternion< T >::operator- () const
 returns quaternion representing the same rotation, using the opposite rotation direction and opposite angle
void MR::Quaternion< T >::normalize ()
 scales this quaternion to make its norm unit
Quaternion MR::Quaternion< T >::normalized () const
constexpr Quaternion MR::Quaternion< T >::conjugate () const noexcept
 computes conjugate quaternion, which for unit quaternions encodes the opposite rotation
constexpr Quaternion MR::Quaternion< T >::inverse () const noexcept
 computes reciprocal quaternion
constexpr Vector3< T > MR::Quaternion< T >::operator() (const Vector3< T > &p) const noexcept
 MR::Quaternion< T >::operator Matrix3< T > () const
 converts this into 3x3 rotation matrix
static Quaternion MR::Quaternion< T >::lerp (const Quaternion &q0, const Quaternion &q1, T t)
 given t in [0,1], interpolates linearly two quaternions giving in general not-unit quaternion
static Quaternion MR::Quaternion< T >::slerp (Quaternion q0, Quaternion q1, T t)
 given t in [0,1] and two unit quaternions, interpolates them spherically and produces another unit quaternion
static Matrix3< T > MR::Quaternion< T >::slerp (const Matrix3< T > &m0, const Matrix3< T > &m1, T t)
 given t in [0,1] and two rotation matrices, interpolates them spherically and produces another rotation matrix
static AffineXf3< T > MR::Quaternion< T >::slerp (const AffineXf3< T > &xf0, const AffineXf3< T > &xf1, T t, const Vector3< T > &p={})
QuaternionMR::Quaternion< T >::operator*= (T s)
QuaternionMR::Quaternion< T >::operator/= (T s)
Expected< void > MR::compensateRadius (Mesh &mesh, const CompensateRadiusParams &params)
 MR::RadiusMeasurementObject::RadiusMeasurementObject ()
 MR::RadiusMeasurementObject::RadiusMeasurementObject (RadiusMeasurementObject &&) noexcept=default
RadiusMeasurementObjectMR::RadiusMeasurementObject::operator= (RadiusMeasurementObject &&) noexcept=default
static constexpr const char * MR::RadiusMeasurementObject::StaticTypeName () noexcept
const char * MR::RadiusMeasurementObject::typeName () const override
static constexpr const char * MR::RadiusMeasurementObject::StaticClassName () noexcept
virtual std::string MR::RadiusMeasurementObject::className () const override
static constexpr const char * MR::RadiusMeasurementObject::StaticClassNameInPlural () noexcept
virtual std::string MR::RadiusMeasurementObject::classNameInPlural () const override
 MR::RadiusMeasurementObject::RadiusMeasurementObject (ProtectedStruct, const RadiusMeasurementObject &obj)
 For std::make_shared() in clone().
std::shared_ptr< ObjectMR::RadiusMeasurementObject::clone () const override
std::shared_ptr< ObjectMR::RadiusMeasurementObject::shallowClone () const override
Vector3f MR::RadiusMeasurementObject::getWorldCenter () const
 Get the center in world coordinates.
Vector3f MR::RadiusMeasurementObject::getLocalCenter () const
 Get the center in local coordinates.
Vector3f MR::RadiusMeasurementObject::getWorldRadiusAsVector () const
 The length of this vector is the radius, and the direction is the preferred line drawing direction.
Vector3f MR::RadiusMeasurementObject::getLocalRadiusAsVector () const
Vector3f MR::RadiusMeasurementObject::getWorldNormal () const
 The preferred radius normal, for non-spherical radiuses.
Vector3f MR::RadiusMeasurementObject::getLocalNormal () const
virtual void MR::RadiusMeasurementObject::setLocalCenter (const MR::Vector3f &center)
virtual void MR::RadiusMeasurementObject::setLocalRadiusAsVector (const MR::Vector3f &radiusVec, const Vector3f &normal)
void MR::RadiusMeasurementObject::setLocalRadiusAsVector (const MR::Vector3f &radiusVec)
 Same, but without a preferred normal.
bool MR::RadiusMeasurementObject::getDrawAsDiameter () const
 Whether we should draw this as a diameter instead of a radius.
virtual void MR::RadiusMeasurementObject::setDrawAsDiameter (bool value)
bool MR::RadiusMeasurementObject::getIsSpherical () const
 Whether this is a sphere radius, as opposed to circle/cylinder radius.
virtual void MR::RadiusMeasurementObject::setIsSpherical (bool value)
float MR::RadiusMeasurementObject::getVisualLengthMultiplier () const
virtual void MR::RadiusMeasurementObject::setVisualLengthMultiplier (float value)
float MR::RadiusMeasurementObject::computeRadiusOrDiameter () const
 Computes the radius/diameter value, as if by getLocalRadiusAsVector(), possibly multiplied by two if getDrawAsDiameter().
std::vector< std::string > MR::RadiusMeasurementObject::getInfoLines () const override
 return several info lines that can better describe the object in the UI
 MR::RadiusMeasurementObject::RadiusMeasurementObject (const RadiusMeasurementObject &other)=default
void MR::RadiusMeasurementObject::swapBase_ (Object &other) override
 swaps this object with other
void MR::RadiusMeasurementObject::serializeFields_ (Json::Value &root) const override
void MR::RadiusMeasurementObject::deserializeFields_ (const Json::Value &root) override
void MR::RadiusMeasurementObject::setupRenderObject_ () const override
void MR::RadiusMeasurementObject::onWorldXfChanged_ () override
 Emits worldXfChangedSignal, but derived classes can add additional behavior to it.
template<typename T>
bool MR::rayBoxIntersect (const Box2< T > &box, const Vector2< T > &rayOrigin, T &t0, T &t1, const IntersectionPrecomputes2< T > &prec)
template<typename T = float>
bool MR::rayBoxIntersect (const Box2< T > &box, const Line2< T > &line, T t0, T t1)
EdgeLoop MR::trackLeftBoundaryLoop (const MeshTopology &topology, EdgeId e0, const FaceBitSet *region=nullptr)
EdgeLoop MR::trackLeftBoundaryLoop (const MeshTopology &topology, const FaceBitSet &region, EdgeId e0)
EdgeLoop MR::trackRightBoundaryLoop (const MeshTopology &topology, EdgeId e0, const FaceBitSet *region=nullptr)
EdgeLoop MR::trackRightBoundaryLoop (const MeshTopology &topology, const FaceBitSet &region, EdgeId e0)
EdgeId MR::extractPath (const MeshTopology &topology, EdgeId e0, EdgeBitSet &edges, EdgePath *outPath, Turn turn)
std::vector< EdgeLoopMR::extractAllLoops (const MeshTopology &topology, EdgeBitSet &edges, Turn turn)
std::vector< EdgeLoopMR::findLeftBoundary (const MeshTopology &topology, const FaceBitSet *region=nullptr)
MR_BIND_IGNORE std::vector< EdgeLoopMR::findLeftBoundary (const MeshTopology &topology, const FaceBitSet &region)
 This is skipped in the bindings because it conflicts with the overload taking a pointer in C#. Since that overload is strictly more useful, we're keeping that one.
std::vector< EdgeLoopMR::findRightBoundary (const MeshTopology &topology, const FaceBitSet *region=nullptr)
MR_BIND_IGNORE std::vector< EdgeLoopMR::findRightBoundary (const MeshTopology &topology, const FaceBitSet &region)
 This is skipped in the bindings because it conflicts with the overload taking a pointer in C#. Since that overload is strictly more useful, we're keeping that one.
EdgeBitSet MR::findAllLeftBdEdges (const MeshTopology &topology, const FaceBitSet *region, bool innerMeshEdgesOnly=false)
std::vector< EdgeLoopMR::delRegionKeepBd (Mesh &mesh, const FaceBitSet *region=nullptr, bool keepLoneHoles=false)
MR_BIND_IGNORE std::vector< EdgeLoopMR::delRegionKeepBd (Mesh &mesh, const FaceBitSet &region, bool keepLoneHoles=false)
 This is skipped in the bindings because it conflicts with the overload taking a pointer in C#. Since that overload is strictly more useful, we're keeping that one.
std::vector< EdgePathMR::findLeftBoundaryInsideMesh (const MeshTopology &topology, const FaceBitSet &region)
UndirectedEdgeBitSet MR::findRegionBoundaryUndirectedEdgesInsideMesh (const MeshTopology &topology, const FaceBitSet &region)
 returns all region boundary edges, where each edge has a region face on one side, and a valid not-region face on another side
FaceBitSet MR::findRegionOuterFaces (const MeshTopology &topology, const FaceBitSet &region)
VertBitSet MR::getIncidentVerts (const MeshTopology &topology, const FaceBitSet &faces)
 composes the set of all vertices incident to given faces
const VertBitSet & MR::getIncidentVerts (const MeshTopology &topology, const FaceBitSet *faces, VertBitSet &store)
VertBitSet MR::getInnerVerts (const MeshTopology &topology, const FaceBitSet *region=nullptr)
 composes the set of all vertices not on the boundary of a hole and with all their adjacent faces in given set
MR_BIND_IGNORE VertBitSet MR::getInnerVerts (const MeshTopology &topology, const FaceBitSet &region)
VertBitSet MR::getBoundaryVerts (const MeshTopology &topology, const FaceBitSet *region=nullptr)
 composes the set of all boundary vertices for given region (or whole mesh if !region)
VertBitSet MR::getRegionBoundaryVerts (const MeshTopology &topology, const FaceBitSet &region)
FaceBitSet MR::getIncidentFaces (const MeshTopology &topology, const VertBitSet &verts)
 composes the set of all faces incident to given vertices
FaceBitSet MR::getInnerFaces (const MeshTopology &topology, const VertBitSet &verts)
 composes the set of all faces with all their vertices in given set
EdgeBitSet MR::getRegionEdges (const MeshTopology &topology, const FaceBitSet &faces)
 composes the set of all edges, having a face from given set at the left
UndirectedEdgeBitSet MR::getIncidentEdges (const MeshTopology &topology, const FaceBitSet &faces)
 composes the set of all undirected edges, having a face from given set from one of two sides
UndirectedEdgeBitSet MR::getIncidentEdges (const MeshTopology &topology, const UndirectedEdgeBitSet &edges)
 composes the set of all undirected edges, having at least one common vertex with an edge from given set
VertBitSet MR::getIncidentVerts (const MeshTopology &topology, const UndirectedEdgeBitSet &edges)
 composes the set of all vertices incident to given edges
FaceBitSet MR::getIncidentFaces (const MeshTopology &topology, const UndirectedEdgeBitSet &edges)
 composes the set of all faces incident to given edges
FaceBitSet MR::getNeighborFaces (const MeshTopology &topology, const UndirectedEdgeBitSet &edges)
 composes the set of all left and right faces of given edges
UndirectedEdgeBitSet MR::getInnerEdges (const MeshTopology &topology, const VertBitSet &verts)
 composes the set of all edges with all their vertices in given set
UndirectedEdgeBitSet MR::getInnerEdges (const MeshTopology &topology, const FaceBitSet &region)
 composes the set of all edges having both left and right in given region
const VertBitSet & MR::getIncidentVerts (const MeshTopology &topology, const UndirectedEdgeBitSet *edges, VertBitSet &store)
VertBitSet MR::getInnerVerts (const MeshTopology &topology, const UndirectedEdgeBitSet &edges)
 composes the set of all vertices with all their edges in given set
Expected< MeshMR::makeRegularGridMesh (size_t width, size_t height, const RegularGridLatticeValidator &validator, const RegularGridLatticePositioner &positioner, const RegularGridMeshFaceValidator &faceValidator={}, ProgressCallback cb={})
 Creates regular mesh with points in valid grid lattice.
Expected< MeshMR::makeRegularGridMesh (VertCoords pc, ProgressCallback cb={})
 Creates regular mesh from monotone (connects point with closed x, y neighbors) points.
void MR::RegularMapMesher::setSurfacePC (const std::shared_ptr< PointCloud > &surfacePC)
 Sets surface Point Cloud.
void MR::RegularMapMesher::setDirectionsPC (const std::shared_ptr< PointCloud > &directionsPC)
 Sets directions Point Cloud.
Expected< void > MR::RegularMapMesher::loadDistances (int width, int height, const std::filesystem::path &path)
 Loads distances form distances file (1/distance)
void MR::RegularMapMesher::setDistances (int width, int height, const std::vector< float > &distances)
 Sets distances.
Expected< MeshMR::RegularMapMesher::createMesh () const
 Creates mesh if all components were successfully loaded.
template<typename V>
MR::getLimitedPos (const V &pos, const V &guidePos, typename VectorTraits< V >::BaseType maxGuideDistSq)
 MR::TransparencyMode::TransparencyMode ()=default
 MR::TransparencyMode::TransparencyMode (bool alphaSort)
 MR::TransparencyMode::TransparencyMode (unsigned bgDepthTexId, unsigned fgColorTexId, unsigned fgDepthTexId)
bool MR::TransparencyMode::isAlphaSortEnabled () const
bool MR::TransparencyMode::isDepthPeelingEnabled () const
unsigned MR::TransparencyMode::getBGDepthPeelingDepthTextureId () const
unsigned MR::TransparencyMode::getFGDepthPeelingColorTextureId () const
unsigned MR::TransparencyMode::getFGDepthPeelingDepthTextureId () const
template<typename T>
void MR::resizeNoInit (std::vector< T > &vec, size_t targetSize) MR_REQUIRES_IF_SUPPORTED(sizeof(T) > 0 &&std
constexpr MR::RigidScaleXf3< T >::RigidScaleXf3 () noexcept=default
constexpr MR::RigidScaleXf3< T >::RigidScaleXf3 (const V &a, const V &b, T s) noexcept
template<typename U>
constexpr MR::RigidScaleXf3< T >::RigidScaleXf3 (const RigidScaleXf3< U > &xf) noexcept
template<typename U>
constexpr MR::RigidScaleXf3< T >::RigidScaleXf3 (const RigidXf3< U > &xf) noexcept
AffineXf3< T > MR::RigidScaleXf3< T >::rigidScaleXf () const
 converts this into rigid (with scale) transformation, which non-linearly depends on angles
AffineXf3< T > MR::RigidScaleXf3< T >::linearXf () const
 converts this into not-rigid transformation but with matrix, which linearly depends on angles
constexpr MR::RigidXf3< T >::RigidXf3 () noexcept=default
constexpr MR::RigidXf3< T >::RigidXf3 (const V &a, const V &b) noexcept
template<typename U>
constexpr MR::RigidXf3< T >::RigidXf3 (const RigidXf3< U > &xf) noexcept
AffineXf3< T > MR::RigidXf3< T >::rigidXf () const
 converts this into rigid transformation, which non-linearly depends on angles
AffineXf3< T > MR::RigidXf3< T >::linearXf () const
 converts this into not-rigid transformation but with matrix, which linearly depends on angles
 MR::RingIterator< N >::RingIterator (const MeshTopology &topology, EdgeId edge, bool first)
RingIteratorMR::RingIterator< N >::operator++ ()
EdgeId MR::RingIterator< N >::operator* () const
bool MR::RingIterator< N >::first () const
 MR::NextEdgeSameOrigin::NextEdgeSameOrigin (const MeshTopology &topology)
EdgeId MR::NextEdgeSameOrigin::next (EdgeId e) const
 MR::NextEdgeSameLeft::NextEdgeSameLeft (const MeshTopology &topology)
EdgeId MR::NextEdgeSameLeft::next (EdgeId e) const
IteratorRange< OrgRingIteratorMR::orgRing (const MeshTopology &topology, EdgeId edge)
IteratorRange< OrgRingIteratorMR::orgRing (const MeshTopology &topology, VertId v)
IteratorRange< OrgRingIteratorMR::orgRing0 (const MeshTopology &topology, EdgeId edge)
IteratorRange< LeftRingIteratorMR::leftRing (const MeshTopology &topology, EdgeId edge)
IteratorRange< LeftRingIteratorMR::leftRing (const MeshTopology &topology, FaceId f)
IteratorRange< LeftRingIteratorMR::leftRing0 (const MeshTopology &topology, EdgeId edge)
Vector3f MR::applyFloat (const AffineXf3d *xf, const Vector3f &p)
 returns the point as is or after application of given transform to it in double precision
Vector3f MR::applyFloat (const Matrix3d *m, const Vector3f &n)
 returns the normal as is or after application of given matrix to it in double precision
Vector3d MR::applyDouble (const AffineXf3d *xf, const Vector3f &p)
 converts given point in double precision and applies given transformation to it
Vector3d MR::applyDouble (const Matrix3d *m, const Vector3f &n)
 converts given normal in double precision and applies given matrix to it
 MR::VertRenumber::VertRenumber (const VertBitSet &validVerts, bool saveValidOnly)
 prepares the mapping
bool MR::VertRenumber::saveValidOnly () const
int MR::VertRenumber::sizeVerts () const
 return the total number of vertices to be saved
int MR::VertRenumber::operator() (VertId v) const
 return packed index (if saveValidOnly = true) or same index (if saveValidOnly = false)
const VertCoords & MR::transformPoints (const VertCoords &verts, const VertBitSet &validVerts, const AffineXf3d *xf, VertCoords &buf, const VertRenumber *vertRenumber=nullptr)
const VertNormals & MR::transformNormals (const VertNormals &normals, const VertBitSet &validVerts, const Matrix3d *m, VertNormals &buf)
static const ColorMR::SceneColors::get (Type type)
static void MR::SceneColors::set (Type type, const Color &color)
static const char * MR::SceneColors::getName (Type type)
 MR::SceneRootObject::SceneRootObject ()
 MR::SceneRootObject::SceneRootObject (SceneRootObject &&) noexcept=default
SceneRootObjectMR::SceneRootObject::operator= (SceneRootObject &&) noexcept=default
 MR::SceneRootObject::SceneRootObject (ProtectedStruct, const SceneRootObject &obj)
static constexpr const char * MR::SceneRootObject::StaticTypeName () noexcept
virtual const char * MR::SceneRootObject::typeName () const override
static constexpr const char * MR::SceneRootObject::StaticClassName () noexcept
virtual std::string MR::SceneRootObject::className () const override
static constexpr const char * MR::SceneRootObject::StaticClassNameInPlural () noexcept
virtual std::string MR::SceneRootObject::classNameInPlural () const override
static constexpr const char * MR::SceneRootObject::RootName () noexcept
virtual void MR::SceneRootObject::setAncillary (bool) override
virtual bool MR::SceneRootObject::select (bool) override
 selects the object, returns true if value changed, otherwise returns false
virtual void MR::SceneRootObject::setName (std::string) override
virtual std::shared_ptr< ObjectMR::SceneRootObject::clone () const override
 clones current object only, without parent and/or children
std::shared_ptr< SceneRootObjectMR::SceneRootObject::cloneRoot () const
 same as clone but returns correct type
 MR::SceneRootObject::SceneRootObject (const SceneRootObject &other)=default
virtual void MR::SceneRootObject::serializeFields_ (Json::Value &root) const override
void MR::SceneRootObject::deserializeFields_ (const Json::Value &root) override
std::shared_ptr< SceneRootObjectMR::createRootFormObject (std::shared_ptr< Object > obj)
static SceneRootObjectMR::SceneRoot::get ()
static std::shared_ptr< SceneRootObject > & MR::SceneRoot::getSharedPtr ()
static void MR::SceneRoot::setScenePath (const std::filesystem::path &scenePath)
static const SceneRootObjectMR::SceneRoot::constGet ()
static std::shared_ptr< const SceneRootObjectMR::SceneRoot::constGetSharedPtr ()
static const std::filesystem::path & MR::SceneRoot::getScenePath ()
static void MR::SceneSettings::reset ()
 Reset all scene settings to default values.
static bool MR::SceneSettings::get (BoolType type)
static float MR::SceneSettings::get (FloatType type)
static void MR::SceneSettings::set (BoolType type, bool value)
static void MR::SceneSettings::set (FloatType type, float value)
static ShadingMode MR::SceneSettings::getDefaultShadingMode ()
static void MR::SceneSettings::setDefaultShadingMode (ShadingMode mode)
static const CNCMachineSettingsMR::SceneSettings::getCNCMachineSettings ()
static void MR::SceneSettings::setCNCMachineSettings (const CNCMachineSettings &settings)
 MR::SegmPoint< T >::SegmPoint ()=default
 MR::SegmPoint< T >::SegmPoint (T a)
 MR::SegmPoint< T >::operator T () const
 MR::SegmPoint< T >::operator T& ()
template<typename U>
MR::SegmPoint< T >::interpolate (const U &v0, const U &v1) const
 given values in two vertices, computes interpolated value at this point
int MR::SegmPoint< T >::inVertex () const
 returns [0,1] if the point is in a vertex or -1 otherwise
SegmPoint MR::SegmPoint< T >::sym () const
 represents the same point relative to oppositely directed segment
bool MR::SegmPoint< T >::operator== (const SegmPoint &rhs) const =default
 returns true if two points have equal (a) representation
bool MR::SegmPoint< T >::operator== (T rhs) const
VertId MR::SeparationPointStorage::Block::nextVid () const
 during filling, it is the id of next valid point;
void MR::SeparationPointStorage::resize (size_t blockCount, size_t blockSize)
 prepares storage for given number of blocks, each containing given size of voxels
BlockMR::SeparationPointStorage::getBlock (size_t blockIndex)
 get block for filling in the thread responsible for it
int MR::SeparationPointStorage::makeUniqueVids ()
auto MR::SeparationPointStorage::findSeparationPointSet (size_t voxelId) const -> const SeparationPointSet *
 finds the set (locating the block) by voxel id
Triangulation MR::SeparationPointStorage::getTriangulation (Vector< VoxelId, FaceId > *outVoxelPerFaceMap=nullptr) const
 combines triangulations from every block into one and returns it
void MR::SeparationPointStorage::getPoints (VertCoords &points) const
 obtains coordinates of all stored points
void MR::sharpenMarchingCubesMesh (const MeshPart &ref, Mesh &vox, Vector< VoxelId, FaceId > &face2voxel, const SharpenMarchingCubesMeshSettings &settings)
 MR::Signal< T >::Signal () noexcept=default
 MR::Signal< T >::Signal (const Signal &) noexcept
 MR::Signal< T >::Signal (Signal &&) noexcept=default
SignalMR::Signal< T >::operator= (const Signal &) noexcept
SignalMR::Signal< T >::operator= (Signal &&) noexcept=default
SignalMR::Signal< T >::operator= (boost::signals2::signal< T > &&b) noexcept
const char * MR::asString (SignDetectionMode m)
 returns string representation of enum values
std::vector< Vector3f > MR::sampleHalfSphere ()
 returns quasi-uniform 145 samples on unit half-sphere z>0
VertScalars MR::computeSkyViewFactor (const Mesh &terrain, const VertCoords &samples, const VertBitSet &validSamples, const std::vector< SkyPatch > &skyPatches, BitSet *outSkyRays=nullptr, std::vector< MeshIntersectionResult > *outIntersections=nullptr)
BitSet MR::findSkyRays (const Mesh &terrain, const VertCoords &samples, const VertBitSet &validSamples, const std::vector< SkyPatch > &skyPatches, std::vector< MeshIntersectionResult > *outIntersections=nullptr)
Mesh MR::makeSolidOfRevolution (const Contour2f &profile, int resolution=16)
template<typename C, typename D, D M>
SparsePolynomial< C, D, MMR::operator* (const SparsePolynomial< C, D, M > &a, const SparsePolynomial< C, D, M > &b)
 MR::SparsePolynomial< C, D, M >::SparsePolynomial ()=default
 constructs zero polynomial
 MR::SparsePolynomial< C, D, M >::SparsePolynomial (std::map< D, C > &&)
 takes existing coefficients in ownership
 MR::SparsePolynomial< C, D, M >::SparsePolynomial (C c0, D d1, C c1)
 constructs polynomial c0 + c1*x^d1
 MR::SparsePolynomial< C, D, M >::SparsePolynomial (C c0, D d1, C c1, D d2, C c2)
 constructs polynomial c0 + c1*x^d1 + c2*x^d2
void MR::SparsePolynomial< C, D, M >::setZeroCoeff (D d)
 sets coefficient for given degree to zero
bool MR::SparsePolynomial< C, D, M >::empty () const
 returns true if no single polynomial coefficient is defined
bool MR::SparsePolynomial< C, D, M >::isPositive () const
 returns true if the coefficient for the smallest not-zero degress is positive
const std::map< D, C > & MR::SparsePolynomial< C, D, M >::get () const
 gets read-only access to all not-zero coefficients
SparsePolynomialMR::SparsePolynomial< C, D, M >::operator+= (const SparsePolynomial &b)
SparsePolynomialMR::SparsePolynomial< C, D, M >::operator-= (const SparsePolynomial &b)
constexpr MR::Sphere< V >::Sphere () noexcept=default
constexpr MR::Sphere< V >::Sphere (const V &c, T r) noexcept
template<typename U>
 MR::Sphere< V >::MR_REQUIRES_IF_SUPPORTED (!std::is_same_v< V, U >) const expr explicit Sphere(const Sphere< U > &l) noexcept
MR::Sphere< V >::project (const V &x) const
 finds the closest point on sphere
T MR::Sphere< V >::distance (const V &x) const
T MR::Sphere< V >::distanceSq (const V &x) const
 returns squared distance from given point to this sphere
 MR::SphereObject::SphereObject ()
 Creates simple sphere object with center in zero and radius - 1.
 MR::SphereObject::SphereObject (const std::vector< Vector3f > &pointsToApprox)
 Finds best sphere to approx given points.
 MR::SphereObject::SphereObject (SphereObject &&) noexcept=default
SphereObjectMR::SphereObject::operator= (SphereObject &&) noexcept=default
static constexpr const char * MR::SphereObject::StaticTypeName () noexcept
virtual const char * MR::SphereObject::typeName () const override
static constexpr const char * MR::SphereObject::StaticClassName () noexcept
virtual std::string MR::SphereObject::className () const override
static constexpr const char * MR::SphereObject::StaticClassNameInPlural () noexcept
virtual std::string MR::SphereObject::classNameInPlural () const override
 MR::SphereObject::SphereObject (ProtectedStruct, const SphereObject &obj)
virtual std::shared_ptr< ObjectMR::SphereObject::clone () const override
virtual std::shared_ptr< ObjectMR::SphereObject::shallowClone () const override
float MR::SphereObject::getRadius (ViewportId id={}) const
 calculates radius from xf
Vector3f MR::SphereObject::getCenter (ViewportId id={}) const
 calculates center from xf
void MR::SphereObject::setRadius (float radius, ViewportId id={})
 updates xf to fit given radius
void MR::SphereObject::setCenter (const Vector3f &center, ViewportId id={})
 updates xf to fit given center
virtual const std::vector< FeatureObjectSharedProperty > & MR::SphereObject::getAllSharedProperties () const override
 Create and generate list of bounded getters and setters for the main properties of feature object, together with prop. name for display and edit into UI.
FeatureObjectProjectPointResult MR::SphereObject::projectPoint (const Vector3f &point, ViewportId id={}) const override
 MR::SphereObject::SphereObject (const SphereObject &other)=default
virtual void MR::SphereObject::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::SphereObject::serializeFields_ (Json::Value &root) const override
virtual Expected< std::future< Expected< void > > > MR::SphereObject::serializeModel_ (const std::filesystem::path &) const override
virtual Expected< void > MR::SphereObject::deserializeModel_ (const std::filesystem::path &, ProgressCallback) override
 Reads model from file.
void MR::SphereObject::setupRenderObject_ () const override
std::string MR::getCurrentStacktraceInline ()
void MR::printStacktraceOnCrash ()
 Print stacktrace on application crash.
template<typename F>
bool MR::split (std::string_view str, std::string_view sep, F &&func)
std::string MR::replace (std::string target, std::string_view from, std::string_view to)
 Returns.
void MR::replaceInplace (std::string &target, std::string_view from, std::string_view to)
 Replaces.
std::string_view MR::trim (std::string_view str)
 Removes all whitespace character (detected by std::isspace) at the beginning and the end of string view.
std::string_view MR::trimLeft (std::string_view str)
 Removes all whitespace character (detected by std::isspace) at the beginning of string view.
std::string_view MR::trimRight (std::string_view str)
 Removes all whitespace character (detected by std::isspace) at the end of string view.
bool MR::hasFormatPlaceholders (std::string_view str)
 Returns true if str has at least one {...} formatting placeholder.
Expected< Contours3fMR::offsetSurfaceLine (const Mesh &mesh, const std::vector< MeshTriPoint > &surfaceLine, float offset)
 Returns contours in mesh space that are offset from surfaceLine on offset amount in all directions.
Expected< Contours3fMR::offsetSurfaceLine (const Mesh &mesh, const std::vector< MeshTriPoint > &surfaceLine, const std::function< float(int)> &offsetAtPoint)
 Returns contours in mesh space that are offset from surfaceLine on offsetAtPoint amount in all directions.
constexpr MR::SymMatrix2< T >::SymMatrix2 () noexcept=default
template<typename U>
 MR::SymMatrix2< T >::MR_REQUIRES_IF_SUPPORTED (!std::is_same_v< T, U >) const expr explicit SymMatrix2(const SymMatrix2< U > &m)
static constexpr SymMatrix2 MR::SymMatrix2< T >::identity () noexcept
static constexpr SymMatrix2 MR::SymMatrix2< T >::diagonal (T diagVal) noexcept
constexpr T MR::SymMatrix2< T >::trace () const noexcept
 computes trace of the matrix
constexpr T MR::SymMatrix2< T >::normSq () const noexcept
 computes the squared norm of the matrix, which is equal to the sum of 4 squared elements
constexpr T MR::SymMatrix2< T >::det () const noexcept
 computes determinant of the matrix
constexpr SymMatrix2< T > MR::SymMatrix2< T >::inverse () const noexcept
 computes inverse matrix
constexpr SymMatrix2< T > MR::SymMatrix2< T >::inverse (T det) const noexcept
 computes inverse matrix given determinant of this
SymMatrix2MR::SymMatrix2< T >::operator+= (const SymMatrix2< T > &b)
SymMatrix2MR::SymMatrix2< T >::operator-= (const SymMatrix2< T > &b)
SymMatrix2MR::SymMatrix2< T >::operator*= (T b)
SymMatrix2MR::SymMatrix2< T >::operator/= (T b)
constexpr MR::SymMatrix3< T >::SymMatrix3 () noexcept=default
template<typename U>
 MR::SymMatrix3< T >::MR_REQUIRES_IF_SUPPORTED (!std::is_same_v< T, U >) const expr explicit SymMatrix3(const SymMatrix3< U > &m)
static constexpr SymMatrix3 MR::SymMatrix3< T >::identity () noexcept
static constexpr SymMatrix3 MR::SymMatrix3< T >::diagonal (T diagVal) noexcept
constexpr T MR::SymMatrix3< T >::trace () const noexcept
 computes trace of the matrix
constexpr T MR::SymMatrix3< T >::normSq () const noexcept
 computes the squared norm of the matrix, which is equal to the sum of 9 squared elements
constexpr T MR::SymMatrix3< T >::det () const noexcept
 computes determinant of the matrix
constexpr SymMatrix3< T > MR::SymMatrix3< T >::inverse () const noexcept
 computes inverse matrix
constexpr SymMatrix3< T > MR::SymMatrix3< T >::inverse (T det) const noexcept
 computes inverse matrix given determinant of this
SymMatrix3MR::SymMatrix3< T >::operator+= (const SymMatrix3< T > &b)
SymMatrix3MR::SymMatrix3< T >::operator-= (const SymMatrix3< T > &b)
SymMatrix3MR::SymMatrix3< T >::operator*= (T b)
SymMatrix3MR::SymMatrix3< T >::operator/= (T b)
constexpr MR::SymMatrix4< T >::SymMatrix4 () noexcept=default
template<typename U>
constexpr MR::SymMatrix4< T >::SymMatrix4 (const SymMatrix4< U > &m)
static constexpr SymMatrix4 MR::SymMatrix4< T >::identity () noexcept
static constexpr SymMatrix4 MR::SymMatrix4< T >::diagonal (T diagVal) noexcept
constexpr T MR::SymMatrix4< T >::trace () const noexcept
 computes trace of the matrix
constexpr T MR::SymMatrix4< T >::normSq () const noexcept
 computes the squared norm of the matrix, which is equal to the sum of 16 squared elements
SymMatrix4MR::SymMatrix4< T >::operator+= (const SymMatrix4< T > &b)
SymMatrix4MR::SymMatrix4< T >::operator-= (const SymMatrix4< T > &b)
SymMatrix4MR::SymMatrix4< T >::operator*= (T b)
SymMatrix4MR::SymMatrix4< T >::operator/= (T b)
bool MR::SymMatrix4< T >::operator== (const SymMatrix4< T > &) const =default
void MR::SetCurrentThreadName (const char *name)
 sets debug name for the current thread
MR_BIND_IGNORE std::filesystem::path MR::GetExeDirectory ()
 returns path of current exe directory
MR_BIND_IGNORE std::filesystem::path MR::GetResourcesDirectory ()
MR_BIND_IGNORE std::filesystem::path MR::GetFontsDirectory ()
MR_BIND_IGNORE std::filesystem::path MR::GetLibsDirectory ()
MR_BIND_IGNORE std::filesystem::path MR::GetEmbeddedPythonDirectory ()
std::filesystem::path MR::getUserConfigDir ()
 return path to the folder with user config file(s)
std::filesystem::path MR::getUserConfigFilePath ()
 returns path of config file in APPDATA
std::filesystem::path MR::GetTempDirectory ()
 returns temp directory
std::filesystem::path MR::GetHomeDirectory ()
 returns home directory
const char * MR::GetMRVersionString ()
 _WIN32
void MR::OpenLink (const std::string &url)
 Opens given link in default browser.
bool MR::OpenDocument (const std::filesystem::path &path)
 Opens given file (or directory) in associated application.
std::string MR::GetCpuId ()
 returns string identification of the CPU
std::string MR::GetDetailedOSName ()
 returns string with OS name with details
std::string MR::getOSNoSpaces ()
 returns string identification of the OS
void MR::setNewHandlerIfNeeded ()
 sets new handler for operator new if needed for some platforms
std::string MR::getCurrentStacktrace ()
 returns string representation of the current stacktrace
SystemMemory MR::getSystemMemory ()
 return information about memory available in the system
void MR::setupLoggerByDefault (const std::function< void()> &customLogSinkAdder={})
 _WIN32
static const Expected< std::filesystem::path > & MR::SystemPath::getExecutablePath ()
 get the current executable's file path
static const Expected< std::filesystem::path > & MR::SystemPath::getLibraryPath ()
 get the MRMesh binary's file path
static Expected< std::filesystem::path > MR::SystemPath::getLibraryPathForSymbol (const void *symbol)
static Expected< std::filesystem::path > MR::SystemPath::getExecutableDirectory ()
 get the current executable's directory path
static Expected< std::filesystem::path > MR::SystemPath::getLibraryDirectory ()
 get the MRMesh binary's directory path
static std::filesystem::path MR::SystemPath::getDirectory (Directory dir)
 get the directory path for specified category
static void MR::SystemPath::overrideDirectory (Directory dir, const std::filesystem::path &path)
 override the directory path for specified category, useful for custom configurations
static std::filesystem::path MR::SystemPath::getResourcesDirectory ()
 get the resource files' directory path
static std::filesystem::path MR::SystemPath::getFontsDirectory ()
 get the font files' directory path
static std::filesystem::path MR::SystemPath::getPluginsDirectory ()
 get the plugin binaries' directory path
static std::filesystem::path MR::SystemPath::getPythonModulesDirectory ()
 get the Python modules' binaries' directory path
static const std::vector< SystemFontPaths > & MR::SystemPath::getSystemFonts ()
 get name all system fonts that have italics, bold, bold italics
template<typename F>
void MR::TbbTaskArenaAndGroup::execute (F &&f)
 runs given function within this task group and task arena
void MR::TbbTaskArenaAndGroup::wait ()
 MR::TbbThreadMutex::TbbThreadMutex (std::thread::id id=std::this_thread::get_id())
 MR::TbbThreadMutex::LockGuard::LockGuard (const LockGuard &)=delete
 MR::TbbThreadMutex::LockGuard::LockGuard (LockGuard &&other)
 MR::TbbThreadMutex::LockGuard::~LockGuard ()
std::optional< LockGuardMR::TbbThreadMutex::tryLock ()
int MR::intLog2 (size_t n)
Expected< MeshMR::terrainTriangulation (std::vector< Vector3f > points, ProgressCallback cb={})
std::optional< UVCoordMR::findVertexUV (const MeshTopology &topology, VertId v, const TriCornerUVCoords &triCornerUvCoords)
std::optional< VertUVCoords > MR::findVertexUVs (const MeshTopology &topology, const TriCornerUVCoords &triCornerUvCoords)
Color MR::sampleVertexColor (const Mesh &mesh, VertId v, const MeshTexture &tex, const TriCornerUVCoords &triCornerUvCoords)
VertColors MR::sampleVertexColors (const Mesh &mesh, const MeshTexture &tex, const TriCornerUVCoords &triCornerUvCoords)
bool MR::BaseTiffParameters::operator== (const BaseTiffParameters &) const =default
bool MR::TiffParameters::operator== (const TiffParameters &) const =default
bool MR::isTIFFFile (const std::filesystem::path &path)
 returns true if given file is tiff
Expected< TiffParametersMR::readTiffParameters (const std::filesystem::path &path)
 reads parameters of tiff file
Expected< void > MR::readRawTiff (const std::filesystem::path &path, RawTiffOutput &output)
 load values from tiff to ouput.data
Expected< void > MR::writeRawTiff (const uint8_t *bytes, const std::filesystem::path &path, const WriteRawTiffParams &params)
 writes bytes to tiff file
Expected< void > MR::writeRawTiff (const uint8_t *bytes, const std::filesystem::path &path, const BaseTiffParameters &params, const AffineXf3f *xf)
Mesh MR::makeTorus (float primaryRadius=1.0f, float secondaryRadius=0.1f, int primaryResolution=16, int secondaryResolution=16, std::vector< Vector3f > *points=nullptr)
Mesh MR::makeOuterHalfTorus (float primaryRadius=1.0f, float secondaryRadius=0.1f, int primaryResolution=16, int secondaryResolution=16, std::vector< Vector3f > *points=nullptr)
Mesh MR::makeTorusWithUndercut (float primaryRadius=1.0f, float secondaryRadiusInner=0.1f, float secondaryRadiusOuter=0.2f, int primaryResolution=16, int secondaryResolution=16, std::vector< Vector3f > *points=nullptr)
Mesh MR::makeTorusWithSpikes (float primaryRadius=1.0f, float secondaryRadiusInner=0.1f, float secondaryRadiusOuter=0.5f, int primaryResolution=16, int secondaryResolution=16, std::vector< Vector3f > *points=nullptr)
Mesh MR::makeTorusWithComponents (float primaryRadius=1.0f, float secondaryRadius=0.1f, int primaryResolution=16, int secondaryResolution=16, std::vector< Vector3f > *points=nullptr)
Mesh MR::makeTorusWithSelfIntersections (float primaryRadius=1.0f, float secondaryRadius=0.1f, int primaryResolution=16, int secondaryResolution=16, std::vector< Vector3f > *points=nullptr)
bool MR::TriTriDistanceParams< T >::canExitEarlier () const
 with the current parameters
bool MR::TriTriDistanceParams< T >::canExitEarlier (T distSqLowerBound) const
 with this particular lower bound
TriTriDistanceResultf MR::findTriTriDistance (const Triangle3f &a, const Triangle3f &b, const TriTriDistanceParamsf &params={})
 computes the closest points on two triangles
TriTriDistanceResultd MR::findTriTriDistance (const Triangle3d &a, const Triangle3d &b, const TriTriDistanceParamsd &params={})
MR_BIND_IGNORE float MR::triDist (Vector3f &p, Vector3f &q, const Vector3f s[3], const Vector3f t[3])
 This version is not in the bindings, because the pointer parameters are assumed to point to single objects, which is wrong here.
float MR::triDist (Vector3f &p, Vector3f &q, const std::array< Vector3f, 3 > &s, const std::array< Vector3f, 3 > &t)
void MR::segPoints (Vector3f &VEC, Vector3f &X, Vector3f &Y, const Vector3f &P, const Vector3f &A, const Vector3f &Q, const Vector3f &B)
template<typename T>
Vector3< T > MR::circumcircleCenter (const Vector3< T > &a, const Vector3< T > &b)
 Computes the center of the the triangle's 0AB circumcircle.
template<typename T>
Vector3< T > MR::circumcircleCenter (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c)
 Computes the center of the the triangle's ABC circumcircle.
template<typename T>
bool MR::circumballCenters (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c, T radius, Vector3< T > &centerPos, Vector3< T > &centerNeg)
 ball's center from the negative side of triangle
template<typename T>
MR::minTriangleAngle (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c)
template<typename T>
Vector3< T > MR::dirDblArea (const Triangle3< T > &t)
 computes directed double area of given triangle
template<typename T>
Vector3< T > MR::dirDblArea (const Vector3< T > &q, const Vector3< T > &r)
 computes directed double area of triangle 0QR
template<typename T>
Vector3< T > MR::dirDblArea (const Vector3< T > &p, const Vector3< T > &q, const Vector3< T > &r)
 computes directed double area of triangle PQR
template<typename T>
Vector3< T > MR::normal (const Vector3< T > &q, const Vector3< T > &r)
 computes unit normal of triangle 0QR
template<typename T>
Vector3< T > MR::normal (const Vector3< T > &p, const Vector3< T > &q, const Vector3< T > &r)
 computes unit normal of triangle PQR
template<typename T>
Vector3< T > MR::normal (const Triangle3< T > &t)
 computes unit normal of the given triangle
template<typename T>
MR::dblAreaSq (const Vector3< T > &p, const Vector3< T > &q, const Vector3< T > &r)
 computes the square of double area of given triangle
template<typename T>
MR::dblArea (const Triangle3< T > &t)
 computes twice the area of given triangle
template<typename T>
MR::dblArea (const Vector3< T > &p, const Vector3< T > &q, const Vector3< T > &r)
 computes twice the area of given triangle
template<typename T>
MR::area (const Vector3< T > &p, const Vector3< T > &q, const Vector3< T > &r)
 computes twice the area of given triangle
template<typename T>
MR::dblArea (const Vector2< T > &p, const Vector2< T > &q, const Vector2< T > &r)
 computes twice the area of given triangle
template<typename T>
MR::area (const Vector2< T > &p, const Vector2< T > &q, const Vector2< T > &r)
 computes twice the area of given triangle
template<typename T>
Triangle3< T > MR::makeDegenerate (const Triangle3< T > &t)
 make degenerate triangle (all 3 points on a line) that maximally resembles the input one and has the same centroid
template<typename T>
Triangle3< T > MR::triangleWithNormal (const Triangle3< T > &t, const Vector3< T > &n)
template<typename T>
std::optional< Vector2< T > > MR::posFromTriEdgeLengths (T a, T b, T c)
template<typename T>
std::optional< T > MR::quadrangleOtherDiagonal (T a, T b, T c, T a1, T b1)
template<typename T>
MR::tanSqOfHalfAngle (T a, T b, T c)
template<typename T>
MR::cotan (const Triangle3< T > &t, T absMaxVal=std::numeric_limits< T >::max())
template<typename T>
MR::cotan (T a, T b, T c)
template<typename T>
std::optional< Vector3< T > > MR::gradientInTri (const Vector3< T > &b, const Vector3< T > &c, T vb, T vc)
template<typename T>
std::optional< Vector3< T > > MR::gradientInTri (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c, T va, T vb, T vc)
template<typename T>
std::optional< T > MR::findTriExitPos (const Vector3< T > &b, const Vector3< T > &c, const Vector3< T > &grad)
template<typename T>
std::optional< Vector3< T > > MR::tangentPlaneNormalToSpheres (const Vector3< T > &b, const Vector3< T > &c, T rb, T rc)
template<typename T>
std::optional< Plane3< T > > MR::tangentPlaneToSpheres (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c, T ra, T rb, T rc)
 MR::FaceFaceFace::FaceFaceFace (FaceId a, FaceId b, FaceId c)
 MR::FaceFaceFace::FaceFaceFace ()
auto MR::FaceFaceFace::operator<=> (const FaceFaceFace &rhs) const =default
std::vector< FaceFaceFaceMR::findTripleFaceIntersections (const MeshTopology &topology, const ContinuousContours &selfContours)
constexpr MR::TriPoint< T >::TriPoint () noexcept
 MR::TriPoint< T >::TriPoint (NoInit) noexcept
constexpr MR::TriPoint< T >::TriPoint (T a, T b) noexcept
template<typename U>
 MR::TriPoint< T >::MR_REQUIRES_IF_SUPPORTED (!std::is_same_v< T, U >) const expr TriPoint(const TriPoint< U > &s)
 The condition is needed for the bindings to not duplicate this ctor against the copy ctor.
 MR::TriPoint< T >::TriPoint (const Vector3< T > &p, const Vector3< T > &v0, const Vector3< T > &v1, const Vector3< T > &v2)
 given a point coordinates and triangle (v0,v1,v2) computes barycentric coordinates of the point
 MR::TriPoint< T >::TriPoint (const Vector3< T > &p, const Vector3< T > &v1, const Vector3< T > &v2)
 given a point coordinates and triangle (0,v1,v2) computes barycentric coordinates of the point
template<typename U>
MR::TriPoint< T >::interpolate (const U &v0, const U &v1, const U &v2) const
 given three values in three vertices, computes interpolated value at this barycentric coordinates
TriPoint MR::TriPoint< T >::lnext () const
 represents the same point relative to next edge in the same triangle
constexpr int MR::TriPoint< T >::inVertex () const
 returns [0,2] if the point is in a vertex or -1 otherwise
constexpr int MR::TriPoint< T >::onEdge () const
constexpr bool MR::TriPoint< T >::operator== (const TriPoint &rhs) const =default
 returns true if two points have equal (a,b) representation
TwoLineSegmClosestPointsf MR::findTwoLineSegmClosestPoints (const LineSegm3f &a, const LineSegm3f &b)
 computes the closest points on two line segments
TwoLineSegmClosestPointsd MR::findTwoLineSegmClosestPoints (const LineSegm3d &a, const LineSegm3d &b)
 MR::UnionFind< I >::UnionFind ()=default
 MR::UnionFind< I >::UnionFind (size_t size)
 creates union-find with given number of elements, each element is the only one in its disjoint set
auto MR::UnionFind< I >::size () const
 returns the number of elements in union-find
void MR::UnionFind< I >::reset (size_t size)
 resets union-find to represent given number of elements, each element is the only one in its disjoint set
std::pair< I, bool > MR::UnionFind< I >::unite (I first, I second)
bool MR::UnionFind< I >::united (I first, I second)
 returns true if given two elements are from one set
bool MR::UnionFind< I >::isRoot (I a) const
 returns true if given element is the root of some set
I MR::UnionFind< I >::parent (I a) const
 return parent element of this element, which is equal to given element only for set's root
I MR::UnionFind< I >::find (I a)
 finds the root of the set containing given element with optimizing data structure updates
I MR::UnionFind< I >::findUpdateRange (I a, I begin, I end)
 finds the root of the set containing given element with optimizing data structure in the range [begin, end)
const Vector< I, I > & MR::UnionFind< I >::roots ()
 sets the root of corresponding set as the parent of each element, then returns the vector
const Vector< I, I > & MR::UnionFind< I >::parents () const
 gets the parents of all elements as is
SizeType MR::UnionFind< I >::sizeOfComp (I a)
 returns the number of elements in the set containing given element
template<typename I>
TypedBitSet< IMR::findRootsBitSet (const UnionFind< I > &uf, const TypedBitSet< I > *region=nullptr)
template<typename I>
TypedBitSet< IMR::findComponentBitSet (UnionFind< I > &uf, I a, const TypedBitSet< I > *region=nullptr)
 MR::UniquePtr< T >::UniquePtr () noexcept=default
 MR::UniquePtr< T >::UniquePtr (const UniquePtr &) noexcept
 MR::UniquePtr< T >::UniquePtr (UniquePtr &&) noexcept=default
UniquePtrMR::UniquePtr< T >::operator= (const UniquePtr &) noexcept
UniquePtrMR::UniquePtr< T >::operator= (UniquePtr &&) noexcept=default
UniquePtrMR::UniquePtr< T >::operator= (std::unique_ptr< T > &&b) noexcept
 MR::UniqueTemporaryFolder::UniqueTemporaryFolder (FolderCallback onPreTempFolderDelete={})
 creates new folder in temp directory
 MR::UniqueTemporaryFolder::~UniqueTemporaryFolder ()
 removes folder with all its content
 MR::UniqueTemporaryFolder::operator bool () const
std::filesystem::path MR::UniqueTemporaryFolder::operator/ (const std::filesystem::path &child) const
Expected< MeshMR::uniteManyMeshes (const std::vector< const Mesh * > &meshes, const UniteManyMeshesParams &params={})
template<UnitEnum E>
const UnitInfoMR::getUnitInfo (E unit)=delete
 Returns information about a single measurement unit.
template<UnitEnum E>
bool MR::unitsAreEquivalent (E a, E b)
 Returns true if converting a value between units a and b doesn't change its value.
template<UnitEnum E>
bool MR::unitsAreEquivalent (const std::optional< E > &a, const std::optional< E > &b)
 This version also returns true if a or b is null.
template<UnitEnum E, typename T>
detail::Units::MakeFloatingPoint< T > MR::convertUnits (E from, E to, const T &value)
template<UnitEnum E, typename T>
detail::Units::MakeFloatingPoint< T > MR::convertUnits (const std::optional< E > &from, const std::optional< E > &to, const T &value)
 This version is a no-op if from or to is null.
 MR::UnorientedTriangle::UnorientedTriangle (const ThreeVertIds &inVs, bool *outFlipped=nullptr)
ThreeVertIds MR::UnorientedTriangle::getFlipped () const
 returns this triangle with the opposite orientation
 MR::UnorientedTriangle::operator ThreeVertIds & ()
 id #0 remains the lowest
 MR::UnorientedTriangle::operator const ThreeVertIds & () const
VertId & MR::UnorientedTriangle::operator[] (std::size_t i)
const VertId & MR::UnorientedTriangle::operator[] (std::size_t i) const
 MR::Vector< T, I >::Vector ()=default
 creates empty vector
 MR::Vector< T, I >::Vector (size_t size) MR_REQUIRES_IF_SUPPORTED(sizeof(T)>0 &&std
 creates a vector with size elements with default value
 MR::Vector< T, I >::Vector (size_t size, const T &val)
 creates a vector with size elements with the given value
 MR::Vector< T, I >::Vector (std::vector< T > &&vec)
 moves data from the given std::vector<T>
template<class InputIt>
 MR::Vector< T, I >::Vector (InputIt first, InputIt last)
 MR::Vector< T, I >::Vector (std::initializer_list< T > init)
bool MR::Vector< T, I >::operator== (const Vector &b) const MR_REQUIRES_IF_SUPPORTED(sizeof(T)>0 &&std
bool MR::Vector< T, I >::operator!= (const Vector &b) const MR_REQUIRES_IF_SUPPORTED(sizeof(T)>0 &&std
void MR::Vector< T, I >::clear ()
bool MR::Vector< T, I >::empty () const
std::size_t MR::Vector< T, I >::size () const
void MR::Vector< T, I >::resize (size_t newSize) MR_REQUIRES_IF_SUPPORTED(sizeof(T)>0 &&std
void MR::Vector< T, I >::resize (size_t newSize, const T &t) MR_REQUIRES_IF_SUPPORTED(sizeof(T)>0 &&std
void MR::Vector< T, I >::resizeNoInit (size_t targetSize) MR_REQUIRES_IF_SUPPORTED(sizeof(T)>0 &&std
 resizes the vector skipping initialization of its elements (more precisely initializing them using ( noInit ) constructor )
std::size_t MR::Vector< T, I >::capacity () const
void MR::Vector< T, I >::reserve (size_t capacity)
const_reference MR::Vector< T, I >::operator[] (I i) const MR_LIFETIMEBOUND
reference MR::Vector< T, I >::operator[] (I i) MR_LIFETIMEBOUND
void MR::Vector< T, I >::resizeWithReserve (size_t newSize) MR_REQUIRES_IF_SUPPORTED(sizeof(T)>0 &&std
 doubles reserved memory until resize(newSize) can be done without reallocation
void MR::Vector< T, I >::resizeWithReserve (size_t newSize, const T &value) MR_REQUIRES_IF_SUPPORTED(sizeof(T)>0 &&std
 doubles reserved memory until resize(newSize, value) can be done without reallocation
void MR::Vector< T, I >::autoResizeSet (I pos, size_t len, T val) MR_REQUIRES_IF_SUPPORTED(sizeof(T)>0 &&std
void MR::Vector< T, I >::autoResizeSet (I i, T val) MR_REQUIRES_IF_SUPPORTED(sizeof(T)>0 &&std
 sets the element #i to the given value, adjusting the size of the vector to include new element
reference MR::Vector< T, I >::autoResizeAt (I i) MR_REQUIRES_IF_SUPPORTED(sizeof(T)>0 &&std
 this accessor automatically adjusts the size of the vector
void MR::Vector< T, I >::push_back (const T &t MR_LIFETIME_CAPTURE_BY_NESTED(this))
void MR::Vector< T, I >::push_back (T &&t MR_LIFETIME_CAPTURE_BY_NESTED(this))
void MR::Vector< T, I >::pop_back ()
template<typename... Args>
 MR::Vector< T, I >::MR_REQUIRES_IF_SUPPORTED (sizeof(T)>0 &&std::constructible_from< T, Args &&... >) T &emplace_back(Args &&... args)
const_reference MR::Vector< T, I >::front () const MR_LIFETIMEBOUND
reference MR::Vector< T, I >::front () MR_LIFETIMEBOUND
const_reference MR::Vector< T, I >::back () const MR_LIFETIMEBOUND
reference MR::Vector< T, I >::back () MR_LIFETIMEBOUND
I MR::Vector< T, I >::beginId () const
 returns the identifier of the first element
I MR::Vector< T, I >::backId () const
 returns the identifier of the back() element
I MR::Vector< T, I >::endId () const
 returns backId() + 1
T * MR::Vector< T, I >::data () MR_LIFETIMEBOUND
const T * MR::Vector< T, I >::data () const MR_LIFETIMEBOUND
void MR::Vector< T, I >::swap (Vector &b)
size_t MR::Vector< T, I >::heapBytes () const
 returns the amount of memory this object occupies on heap
template<typename T>
MR::getAt (const std::vector< T > &a, size_t id, T def={})
 given some std::vector and a key, returns the value associated with the key, or default value if key is invalid or outside the std::vector
template<typename T, typename I>
MR::getAt (const Vector< T, I > &a, I id, T def={})
 given some Vector and a key, returns the value associated with the key, or default value if key is invalid or outside the Vector
constexpr MR::Vector3< T >::Vector3 () noexcept
 MR::Vector3< T >::Vector3 (NoInit) noexcept
constexpr MR::Vector3< T >::Vector3 (T x, T y, T z) noexcept
template<typename U>
 MR::Vector3< T >::MR_REQUIRES_IF_SUPPORTED (std::constructible_from< T, U >) explicit const expr Vector3(const Vector2< U > &v) noexcept
static constexpr Vector3 MR::Vector3< T >::diagonal (T a) noexcept
static constexpr Vector3 MR::Vector3< T >::plusX () noexcept
static constexpr Vector3 MR::Vector3< T >::plusY () noexcept
static constexpr Vector3 MR::Vector3< T >::plusZ () noexcept
static constexpr Vector3 MR::Vector3< T >::minusX () noexcept MR_REQUIRES_IF_SUPPORTED(!std
static constexpr Vector3 MR::Vector3< T >::minusY () noexcept MR_REQUIRES_IF_SUPPORTED(!std
static constexpr Vector3 MR::Vector3< T >::minusZ () noexcept MR_REQUIRES_IF_SUPPORTED(!std
template<typename U>
 MR::Vector3< T >::MR_REQUIRES_IF_SUPPORTED (!std::is_same_v< T, U >) const expr explicit Vector3(const Vector3< U > &v) noexcept
constexpr const T & MR::Vector3< T >::operator[] (int e) const noexcept
constexpr T & MR::Vector3< T >::operator[] (int e) noexcept
MR::Vector3< T >::lengthSq () const
auto MR::Vector3< T >::length () const
Vector3 MR::Vector3< T >::normalized () const MR_REQUIRES_IF_SUPPORTED(std
template<MR_SAME_TYPE_TEMPLATE_PARAM(T, TT)>
Vector3 furthestBasisVector() const MR_REQUIRES_IF_SUPPORTED(!std std::pair< Vector3, Vector3 > perpendicular() const MR_REQUIRES_IF_SUPPORTED(std Vector3 MR::Vector3< T >::transformed (const AffineXf3< TT > *xf) const MR_REQUIRES_IF_SUPPORTED(std
 returns one of 3 basis unit vector that makes the biggest angle with the direction specified by this
void MR::Vector3< T >::unsignZeroValues () MR_REQUIRES_IF_SUPPORTED(std
 get rid of signed zero values to be sure that equal vectors have identical binary representation
bool MR::Vector3< T >::isFinite () const MR_REQUIRES_IF_SUPPORTED(std
constexpr MR::Vector4< T >::Vector4 () noexcept
 MR::Vector4< T >::Vector4 (NoInit) noexcept
constexpr MR::Vector4< T >::Vector4 (T x, T y, T z, T w) noexcept
static constexpr Vector4 MR::Vector4< T >::diagonal (T a) noexcept
template<typename U>
 MR::Vector4< T >::MR_REQUIRES_IF_SUPPORTED (!std::is_same_v< T, U >) const expr explicit Vector4(const Vector4< U > &v) noexcept
constexpr const T & MR::Vector4< T >::operator[] (int e) const noexcept
constexpr T & MR::Vector4< T >::operator[] (int e) noexcept
MR::Vector4< T >::lengthSq () const
auto MR::Vector4< T >::length () const
Vector4 MR::Vector4< T >::normalized () const MR_REQUIRES_IF_SUPPORTED(!std
Vector3< T > MR::Vector4< T >::proj3d () const MR_REQUIRES_IF_SUPPORTED(!std
 assuming this is a point represented in homogeneous 4D coordinates, returns the point as 3D-vector
bool MR::Vector4< T >::isFinite () const MR_REQUIRES_IF_SUPPORTED(std
template<typename U>
static constexpr auto && MR::VectorTraits< T >::getElem (int i, U &&value)
template<typename U = T>
static constexpr U MR::VectorTraits< T >::diagonal (U v)
 Adding a template parameter to allow instantiating the rest of the class with T == void.
template<typename U>
static auto && MR::VectorTraits< Vector2< T > >::getElem (int i, U &&value)
static constexpr auto MR::VectorTraits< Vector2< T > >::diagonal (T v)
template<typename U>
static auto && MR::VectorTraits< Vector3< T > >::getElem (int i, U &&value)
static constexpr auto MR::VectorTraits< Vector3< T > >::diagonal (T v)
template<typename U>
static auto && MR::VectorTraits< Vector4< T > >::getElem (int i, U &&value)
static constexpr auto MR::VectorTraits< Vector4< T > >::diagonal (T v)
 MR::VersatileChangeMeshPointsAction::VersatileChangeMeshPointsAction (std::string name, const std::shared_ptr< ObjectMesh > &obj)
 use this constructor to remember object's mesh points in uncompressed format before making any changes in it
 MR::VersatileChangeMeshPointsAction::~VersatileChangeMeshPointsAction ()
virtual std::string MR::VersatileChangeMeshPointsAction::name () const override
virtual void MR::VersatileChangeMeshPointsAction::action (HistoryAction::Type t) override
 This function is called on history action (undo, redo, etc.)
static void MR::VersatileChangeMeshPointsAction::setObjectDirty (const std::shared_ptr< ObjectMesh > &obj)
virtual size_t MR::VersatileChangeMeshPointsAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
void MR::VersatileChangeMeshPointsAction::compress ()
 switch from uncompressed to compressed format to occupy less amount of memory
 MR::VertCoordsDiff::VertCoordsDiff ()=default
 constructs minimal difference, where applyAndSwap( v ) will produce empty vector
 MR::VertCoordsDiff::VertCoordsDiff (const VertCoords &from, const VertCoords &to)
 computes the difference, that can be applied to vector-from in order to get vector-to
void MR::VertCoordsDiff::applyAndSwap (VertCoords &m)
bool MR::VertCoordsDiff::any () const
size_t MR::VertCoordsDiff::heapBytes () const
 returns the amount of memory this object occupies on heap
 MR::WatershedGraph::BasinInfo::BasinInfo ()
float MR::WatershedGraph::BasinInfo::amountTillOverflow () const
 Apparently I need this for MR::Vector to register default-constructibility inside the enclosing class.
float MR::WatershedGraph::BasinInfo::approxLevel () const
 approximate current level of water (z-coordinate) in the basin
void MR::WatershedGraph::BasinInfo::updateAccVolume (float amount)
 updates accumulated volume in the basin to the moment of given precipitation amount
 MR::WatershedGraph::WatershedGraph (const Mesh &mesh, const Vector< int, FaceId > &face2basin, int numBasins)
 constructs the graph from given mesh, heights in z-coordinate, and initial subdivision on basins
float MR::WatershedGraph::getHeightAt (VertId v) const
 returns height at given vertex or FLT_MAX if the vertex is invalid
const GraphMR::WatershedGraph::graph () const
 returns underlying graph where each basin is a vertex
float MR::WatershedGraph::totalArea () const
 returns total precipitation area
int MR::WatershedGraph::numBasins () const
 returns the current number of basins (excluding special "outside" basin)
const BasinInfoMR::WatershedGraph::basinInfo (Graph::VertId v) const
 returns data associated with given basin
BasinInfoMR::WatershedGraph::basinInfo (Graph::VertId v)
const BdInfoMR::WatershedGraph::bdInfo (Graph::EdgeId e) const
 returns data associated with given boundary between basins
BdInfoMR::WatershedGraph::bdInfo (Graph::EdgeId e)
Graph::VertId MR::WatershedGraph::outsideId () const
 returns special "basin" representing outside areas of the mesh
Graph::VertId MR::WatershedGraph::getRootBasin (Graph::VertId v) const
 for valid basin returns self id; for invalid basin returns the id of basin it was merged in
Graph::VertId MR::WatershedGraph::flowsTo (Graph::VertId v) const
 returns the basin where the flow from this basin goes next (it can be self id if the basin is not full yet)
Graph::VertId MR::WatershedGraph::flowsFinallyTo (Graph::VertId v, bool exceptOutside=false) const
void MR::WatershedGraph::setParentsToRoots ()
std::pair< Graph::EdgeId, float > MR::WatershedGraph::findLowestBd () const
Graph::VertId MR::WatershedGraph::merge (Graph::VertId v0, Graph::VertId v1)
 merges basin v1 into basin v0, v1 is deleted after that, returns v0
Graph::VertId MR::WatershedGraph::mergeViaBd (Graph::EdgeId bd)
 merges two basins sharing given boundary, returns remaining basin
FaceBitSet MR::WatershedGraph::getBasinFaces (Graph::VertId basin) const
 returns the mesh faces of given basin
Vector< FaceBitSet, Graph::VertIdMR::WatershedGraph::getAllBasinFaces (bool joinOverflowBasins=false) const
FaceBitSet MR::WatershedGraph::getBasinFacesBelowLevel (Graph::VertId basin, float waterLevel) const
 returns the mesh faces of given basin with at least one vertex below given level
double MR::WatershedGraph::computeBasinVolume (Graph::VertId basin, float waterLevel) const
UndirectedEdgeBitSet MR::WatershedGraph::getInterBasinEdges (bool joinOverflowBasins=false) const
std::vector< OverflowPointMR::WatershedGraph::getOverflowPoints () const
 returns all overflow points in the graph
Vector< Graph::VertId, Graph::VertIdMR::WatershedGraph::iniBasin2Tgt (bool joinOverflowBasins=false) const
 MR::Writer< T >::Writer (T &o)
 MR::Writer< T >::~Writer ()
const std::optional< T > & MR::XfBasedCache< T >::get (const AffineXf3f &xf) const
 returns stored object only if requested transformation is the same as stored one
void MR::XfBasedCache< T >::set (const AffineXf3f &xf, T t)
 sets new transformation and the object
void MR::XfBasedCache< T >::reset ()
 clears stored object
static MRPYTHON_API PythonExportMR::PythonExport::instance ()
void MR::PythonExport::addFunc (const std::string &moduleName, PythonRegisterFuncton func, Priority priority)
void MR::PythonExport::setInitFuncPtr (const std::string &moduleName, PyObject *(*initFncPointer)(void))
const std::array< std::vector< PythonRegisterFuncton >, size_t(Priority::Count)> & MR::PythonExport::functions (const std::string &moduleName) const
const std::unordered_map< std::string, ModuleData > & MR::PythonExport::modules () const
MRPYTHON_API MR::PythonFunctionAdder::PythonFunctionAdder (const std::string &moduleName, std::function< void(pybind11::module_ &m)> func, PythonExport::Priority priority=PythonExport::Priority::Implementation)
MRPYTHON_API MR::PythonFunctionAdder::PythonFunctionAdder (const std::string &moduleName, PyObject *(*initFncPointer)(void))
template<typename E>
void MR::throwExceptionFromExpected (const E &err)
 overload toString functoion to throw exception from custom Expected::error type
template<typename T>
decltype(auto) MR::expectedValueOrThrow (T &&e)
 Like e.value(), but throws using throwExceptionFromExpected (which is better, because it allows Python to see the proper error message), and also supports T == void.
template<typename R, typename E, typename... Args>
auto MR::decorateExpected (std::function< Expected< R, E >(Args...)> &&f) -> std::function< R(Args...)>
template<typename F>
auto MR::decorateExpected (F &&f)
template<typename R, typename T, typename... Args>
auto MR::decorateExpected (R(T::*memFunction)(Args...))
static MRPYTHON_API std::stringstream & MR::UnifiedPythonStream::get ()
Expected< MeshMR::alignTextToMesh (const Mesh &mesh, const TextMeshAlignParams &params)
 Creates symbol mesh and aligns it to given surface.
Expected< MeshMR::bendTextAlongCurve (const CurveFunc &curve, const BendTextAlongCurveParams &params)
Expected< MeshMR::bendTextAlongCurve (const CurvePoints &curve, const BendTextAlongCurveParams &params)
 Creates symbol mesh and deforms it along given curve.
Expected< MeshMR::bendTextAlongSurfacePath (const Mesh &mesh, const GeodesicPath &path, const BendTextAlongCurveParams &params)
 Creates symbol mesh and deforms it along given surface path: start->path->end.
Expected< MeshMR::bendTextAlongSurfacePath (const Mesh &mesh, const SurfacePath &path, const BendTextAlongCurveParams &params)
 Creates symbol mesh and deforms it along given surface path.
 MR::ChangeLabelAction::ChangeLabelAction (const std::string &actionName, std::shared_ptr< ObjectLabel > obj)
virtual std::string MR::ChangeLabelAction::name () const override
virtual void MR::ChangeLabelAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
virtual size_t MR::ChangeLabelAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::ObjectLabel::ObjectLabel ()
 MR::ObjectLabel::ObjectLabel (ObjectLabel &&) noexcept=default
ObjectLabelMR::ObjectLabel::operator= (ObjectLabel &&) noexcept=default
static constexpr const char * MR::ObjectLabel::StaticTypeName () noexcept
virtual const char * MR::ObjectLabel::typeName () const override
virtual void MR::ObjectLabel::applyScale (float scaleFactor) override
 scale object size (all point positions)
virtual bool MR::ObjectLabel::hasVisualRepresentation () const override
 does the object have any visual representation (visible points, triangles, edges, etc.), no considering child objects
virtual std::shared_ptr< ObjectMR::ObjectLabel::clone () const override
virtual std::shared_ptr< ObjectMR::ObjectLabel::shallowClone () const override
virtual void MR::ObjectLabel::setFontHeight (float size)
 sets size of label font in pixels
float MR::ObjectLabel::getFontHeight () const
 returns size of label font on screen in pixels
void MR::ObjectLabel::setLabel (const PositionedText &label)
 sets text and position of label
const PositionedTextMR::ObjectLabel::getLabel () const
void MR::ObjectLabel::setFontPath (const std::filesystem::path &pathToFont)
 sets path to font file
const std::filesystem::path & MR::ObjectLabel::getFontPath () const
void MR::ObjectLabel::setPivotPoint (const Vector2f &pivotPoint)
const Vector2f & MR::ObjectLabel::getPivotPoint () const
 get pivot point
const Vector2f & MR::ObjectLabel::getPivotShift () const
 get pivot shift (pivot point * text diagonal)
virtual void MR::ObjectLabel::setLeaderLineWidth (float width)
 sets width of leader line in pixels
float MR::ObjectLabel::getLeaderLineWidth () const
 returns width of leader line in pixels
virtual void MR::ObjectLabel::setSourcePointSize (float size)
 sets size of source point in pixels
float MR::ObjectLabel::getSourcePointSize () const
 returns size of source point in pixels
virtual void MR::ObjectLabel::setBackgroundPadding (float padding)
 sets background padding in pixels
float MR::ObjectLabel::getBackgroundPadding () const
 returns background padding in pixels
virtual void MR::ObjectLabel::setSourcePointColor (const Color &color, ViewportId id={})
 sets color of source point
const ColorMR::ObjectLabel::getSourcePointColor (ViewportId id={}) const
 returns color of source point
virtual void MR::ObjectLabel::setLeaderLineColor (const Color &color, ViewportId id={})
 sets color of leader line
const ColorMR::ObjectLabel::getLeaderLineColor (ViewportId id={}) const
 return color of leader line
void MR::ObjectLabel::setContourColor (const Color &color, ViewportId id={})
 sets contour color
const ColorMR::ObjectLabel::getContourColor (ViewportId id={}) const
 return contour color
const ViewportProperty< Color > & MR::ObjectLabel::getSourcePointColorsForAllViewports () const
virtual void MR::ObjectLabel::setSourcePointColorsForAllViewports (ViewportProperty< Color > val)
const ViewportProperty< Color > & MR::ObjectLabel::getLeaderLineColorsForAllViewports () const
virtual void MR::ObjectLabel::setLeaderLineColorsForAllViewports (ViewportProperty< Color > val)
const ViewportProperty< Color > & MR::ObjectLabel::getContourColorsForAllViewports () const
virtual void MR::ObjectLabel::setContourColorsForAllViewports (ViewportProperty< Color > val)
 MR::ObjectLabel::ObjectLabel (ProtectedStruct, const ObjectLabel &obj)
virtual Box3f MR::ObjectLabel::getWorldBox (ViewportId={}) const override
const std::shared_ptr< Mesh > & MR::ObjectLabel::labelRepresentingMesh () const
virtual size_t MR::ObjectLabel::heapBytes () const override
 returns the amount of memory this object occupies on heap
AllVisualizeProperties MR::ObjectLabel::getAllVisualizeProperties () const override
 get all visualize properties masks
const ViewportMaskMR::ObjectLabel::getVisualizePropertyMask (AnyVisualizeMaskEnum type) const override
 returns mask of viewports where given property is set
void MR::ObjectLabel::buildMeshFromText () const
 MR::ObjectLabel::ObjectLabel (const ObjectLabel &other)=default
virtual void MR::ObjectLabel::swapBase_ (Object &other) override
 swaps this object with other
virtual Box3f MR::ObjectLabel::computeBoundingBox_ () const override
virtual void MR::ObjectLabel::serializeFields_ (Json::Value &root) const override
virtual void MR::ObjectLabel::deserializeFields_ (const Json::Value &root) override
virtual void MR::ObjectLabel::setupRenderObject_ () const override
void MR::ObjectLabel::setAllVisualizeProperties_ (const AllVisualizeProperties &properties, std::size_t &pos) override
 set all visualize properties masks
Expected< Contours2fMR::createSymbolContours (const SymbolMeshParams &params)
 converts text string into set of contours
Expected< MeshMR::createSymbolsMesh (const SymbolMeshParams &params)
 converts text string into Z-facing symbol mesh
virtual void MR::ImGuiMenu::setupShortcuts_ ()
Vector4f MR::ImGuiMenu::getStoredColor_ (const std::string &str, const Color &defaultColor) const
static const std::shared_ptr< ImGuiMenu > & MR::ImGuiMenu::instance ()
virtual void MR::ImGuiMenu::init (MR::Viewer *_viewer) override
 This function is called when the viewer is initialized (no mesh will be loaded at this stage)
virtual void MR::ImGuiMenu::initBackend ()
 inits glfw and glsl backend
virtual void MR::ImGuiMenu::startFrame ()
 call this to validate imgui context in the begining of the frame
virtual void MR::ImGuiMenu::finishFrame ()
 call this to draw valid imgui context at the end of the frame
virtual void MR::ImGuiMenu::loadFonts (int fontSize=13)
virtual void MR::ImGuiMenu::load_font (int fontSize=13)
virtual void MR::ImGuiMenu::reloadFonts (int fontSize=13)
virtual void MR::ImGuiMenu::reload_font (int fontSize=13)
virtual void MR::ImGuiMenu::shutdown () override
 This function is called before shutdown.
virtual void MR::ImGuiMenu::draw_menu ()
 Draw menu.
void MR::ImGuiMenu::draw_helpers ()
virtual void MR::ImGuiMenu::drawViewerWindow ()
 override this instead using callback_draw_viewer_window
virtual void MR::ImGuiMenu::draw_viewer_window ()
virtual void MR::ImGuiMenu::drawViewerWindowContent ()
 override this instead using callback_draw_viewer_menu
virtual void MR::ImGuiMenu::drawAdditionalWindows ()
 override this instead using callback_draw_custom_window
virtual void MR::ImGuiMenu::draw_custom_window ()
void MR::ImGuiMenu::draw_text (const Viewport &viewport, const Vector3f &pos, const Vector3f &normal, const std::string &text, const Color &color, bool clipByViewport)
void MR::ImGuiMenu::drawLabelsWindow ()
void MR::ImGuiMenu::draw_labels_window ()
float MR::ImGuiMenu::pixelRatio ()
 Computes pixel ratio for hidpi devices.
float MR::ImGuiMenu::pixel_ratio ()
float MR::ImGuiMenu::hidpiScaling ()
 Computes scaling factor for hidpi devices.
float MR::ImGuiMenu::hidpi_scaling ()
void MR::ImGuiMenu::updateScaling ()
float MR::ImGuiMenu::menuScaling () const
float MR::ImGuiMenu::menu_scaling () const
float MR::ImGuiMenu::getUserScaling () const
 returns UI scaling modifier specified by user
void MR::ImGuiMenu::setUserScaling (float scaling)
 sets UI scaling modifier specified by user
ImGuiContext * MR::ImGuiMenu::getCurrentContext () const
ImGuiWindow * MR::ImGuiMenu::getLastFocusedPlugin () const
virtual void MR::ImGuiMenu::showModalMessage (const std::string &msg, NotificationType msgType)
 opens Error / Warning / Info modal window with message text
virtual std::filesystem::path MR::ImGuiMenu::getMenuFontPath () const
void MR::ImGuiMenu::setDrawTimeMillisecThreshold (long long maxGoodTimeMillisec)
 setup maximum good time for frame rendering (if rendering is slower it will become red in statistics window)
void MR::ImGuiMenu::draw_scene_list ()
 Draw scene list window with content.
void MR::ImGuiMenu::draw_scene_list_content (const std::vector< std::shared_ptr< Object > > &selected, const std::vector< std::shared_ptr< Object > > &all)
 Draw scene list content only.
virtual void MR::ImGuiMenu::draw_selection_properties (const std::vector< std::shared_ptr< Object > > &selected)
virtual void MR::ImGuiMenu::draw_selection_properties_content (const std::vector< std::shared_ptr< Object > > &selected)
virtual bool MR::ImGuiMenu::drawCollapsingHeader_ (const char *label, ImGuiTreeNodeFlags flags=0)
 override this to have custom UI in "Selection Properties" window (under "Draw Options")
virtual bool MR::ImGuiMenu::drawCollapsingHeaderTransform_ ()
 override this to customize appearance of collapsing headers for transform block
bool MR::ImGuiMenu::make_visualize_checkbox (std::vector< std::shared_ptr< VisualObject > > selectedVisualObjs, const char *label, AnyVisualizeMaskEnum type, MR::ViewportMask viewportid, bool invert=false)
template<typename ObjectT>
void MR::ImGuiMenu::make_color_selector (std::vector< std::shared_ptr< ObjectT > > selectedVisualObjs, const char *label, std::function< Vector4f(const ObjectT *)> getter, std::function< void(ObjectT *, const Vector4f &)> setter)
template<typename ObjType, typename ValueT>
void MR::ImGuiMenu::make_width (std::vector< std::shared_ptr< VisualObject > > selectedVisualObjs, const char *label, std::function< ValueT(const ObjType *)> getter, std::function< void(ObjType *, const ValueT &)> setter)
void MR::ImGuiMenu::make_light_strength (std::vector< std::shared_ptr< VisualObject > > selectedVisualObjs, const char *label, std::function< float(const VisualObject *)> getter, std::function< void(VisualObject *, const float &)> setter)
template<typename T, typename ObjectType>
void MR::ImGuiMenu::make_slider (std::vector< std::shared_ptr< ObjectType > > selectedVisualObjs, const char *label, std::function< T(const ObjectType *)> getter, std::function< void(ObjectType *, T)> setter, T min, T max)
void MR::ImGuiMenu::make_points_discretization (std::vector< std::shared_ptr< VisualObject > > selectedVisualObjs, const char *label, std::function< int(const ObjectPointsHolder *)> getter, std::function< void(ObjectPointsHolder *, const int &)> setter)
std::shared_ptr< ShortcutManagerMR::ImGuiMenu::getShortcutManager ()
void MR::ImGuiMenu::add_modifier (std::shared_ptr< MR::MeshModifier > modifier)
void MR::ImGuiMenu::allowSceneReorder (bool allow)
bool MR::ImGuiMenu::checkPossibilityObjectRemoval ()
void MR::ImGuiMenu::allowObjectsRemoval (bool allow)
void MR::ImGuiMenu::tryRenameSelectedObject ()
void MR::ImGuiMenu::setObjectTreeState (const Object *obj, bool open)
void MR::ImGuiMenu::expandObjectTreeAndScroll (const Object *obj)
 expands all objs parents in tree and scroll scene tree window so selection becomes visible
void MR::ImGuiMenu::setShowShortcuts (bool val)
 set show shortcuts state (enable / disable)
bool MR::ImGuiMenu::getShowShortcuts () const
 return show shortcuts state (enable / disable)
void MR::ImGuiMenu::enableSavedDialogPositions (bool on)
 enables using of saved positions of plugin windows in the config file
bool MR::ImGuiMenu::isSavedDialogPositionsEnabled () const
 returns true if enabled using of saved positions of plugin windows in the config file, false otherwise
virtual UiRenderManagerMR::ImGuiMenu::getUiRenderManager ()
 This class helps the viewer to renderUi() from IRenderObjects.
const std::shared_ptr< SceneObjectsListDrawer > & MR::ImGuiMenu::getSceneObjectsList ()
bool MR::ImGuiMenu::simulateNameTagClick (Object &object, NameTagSelectionMode mode)
 Behaves as if the user clicked the object name tag, by invoking nameTagClickSignal.
bool MR::ImGuiMenu::simulateNameTagClickWithKeyboardModifiers (Object &object)
 This version uses the currently held keyboard modifiers instead of a custom mode.
bool MR::ImGuiMenu::anyImGuiWindowIsHovered () const
 Scene pick should be disabled because an ImGui window is in the way.
bool MR::ImGuiMenu::anyUiObjectIsHovered () const
 Scene pick should be disabled because a renderUi() UI of some object is in the way.
SelectedTypesMask MR::ImGuiMenu::calcSelectedTypesMask (const std::vector< std::shared_ptr< Object > > &selectedObjs)
bool MR::ImGuiMenu::drawGeneralOptions (const std::vector< std::shared_ptr< Object > > &selectedObjs)
bool MR::ImGuiMenu::drawAdvancedOptions (const std::vector< std::shared_ptr< VisualObject > > &selectedObjs, SelectedTypesMask selectedMask)
bool MR::ImGuiMenu::drawRemoveButton (const std::vector< std::shared_ptr< Object > > &selectedObjs)
bool MR::ImGuiMenu::drawDrawOptionsCheckboxes (const std::vector< std::shared_ptr< VisualObject > > &selectedObjs, SelectedTypesMask selectedMask)
bool MR::ImGuiMenu::drawDrawOptionsColors (const std::vector< std::shared_ptr< VisualObject > > &selectedObjs)
virtual void MR::ImGuiMenu::drawModalMessage_ ()
virtual bool MR::ImGuiMenu::onMouseDown_ (MouseButton button, int modifier) override
 Mouse IO.
virtual bool MR::ImGuiMenu::onMouseUp_ (MouseButton button, int modifier) override
virtual bool MR::ImGuiMenu::onMouseMove_ (int mouse_x, int mouse_y) override
virtual bool MR::ImGuiMenu::onMouseScroll_ (float delta_y) override
virtual void MR::ImGuiMenu::cursorEntrance_ (bool entered) override
virtual bool MR::ImGuiMenu::onCharPressed_ (unsigned key, int modifiers) override
 Keyboard IO.
virtual bool MR::ImGuiMenu::onKeyDown_ (int key, int modifiers) override
virtual bool MR::ImGuiMenu::onKeyUp_ (int key, int modifiers) override
virtual bool MR::ImGuiMenu::onKeyRepeat_ (int key, int modifiers) override
virtual void MR::ImGuiMenu::postResize_ (int width, int height) override
 Scene events.
virtual void MR::ImGuiMenu::postRescale_ (float x, float y) override
virtual bool MR::ImGuiMenu::spaceMouseMove_ (const Vector3f &translate, const Vector3f &rotate) override
 Spacemouse events.
virtual bool MR::ImGuiMenu::spaceMouseDown_ (int key) override
virtual bool MR::ImGuiMenu::touchpadRotateGestureBegin_ () override
 Touchpad gesture events.
virtual bool MR::ImGuiMenu::touchpadRotateGestureUpdate_ (float angle) override
virtual bool MR::ImGuiMenu::touchpadRotateGestureEnd_ () override
virtual bool MR::ImGuiMenu::touchpadSwipeGestureBegin_ () override
virtual bool MR::ImGuiMenu::touchpadSwipeGestureUpdate_ (float deltaX, float deltaY, bool kinetic) override
virtual bool MR::ImGuiMenu::touchpadSwipeGestureEnd_ () override
virtual bool MR::ImGuiMenu::touchpadZoomGestureBegin_ () override
virtual bool MR::ImGuiMenu::touchpadZoomGestureUpdate_ (float scale, bool kinetic) override
virtual bool MR::ImGuiMenu::touchpadZoomGestureEnd_ () override
virtual void MR::ImGuiMenu::postFocus_ (bool focused) override
 Other events.
virtual void MR::ImGuiMenu::rescaleStyle_ ()
float MR::ImGuiMenu::drawSelectionInformation_ ()
void MR::ImGuiMenu::drawFeaturePropertiesEditor_ (const std::shared_ptr< Object > &object)
void MR::ImGuiMenu::drawComparablePropertiesEditor_ (ObjectComparableWithReference &object)
virtual void MR::ImGuiMenu::drawCustomSelectionInformation_ (const std::vector< std::shared_ptr< Object > > &selected, const SelectionInformationStyle &style)
 draw additional selection information (e.g. for custom objects)
virtual void MR::ImGuiMenu::draw_custom_selection_properties (const std::vector< std::shared_ptr< Object > > &selected)
void MR::ImGuiMenu::drawTagInformation_ (const std::vector< std::shared_ptr< Object > > &selected)
float MR::ImGuiMenu::drawTransform_ ()
virtual bool MR::ImGuiMenu::drawTransformContextMenu_ (const std::shared_ptr< Object > &)
virtual void MR::ImGuiMenu::drawShortcutsWindow_ ()
 A virtual function for drawing of the dialog with shortcuts. It can be overriden in the inherited classes.
float MR::ImGuiMenu::getSceneInfoItemWidth_ (int itemCount=1)
 returns width of items in Scene Info window
void MR::ImGuiMenu::UiRenderManagerImpl::preRenderViewport (ViewportId viewport) override
 This is called before doing IRenderObject::renderUi() on even object in a viewport. Each viewport is rendered separately.
void MR::ImGuiMenu::UiRenderManagerImpl::postRenderViewport (ViewportId viewport) override
 This is called after doing IRenderObject::renderUi() on even object in a viewport. Each viewport is rendered separately.
BasicUiRenderTask::BackwardPassParams MR::ImGuiMenu::UiRenderManagerImpl::beginBackwardPass (ViewportId viewport, UiRenderParams::UiTaskList &tasks) override
void MR::ImGuiMenu::UiRenderManagerImpl::finishBackwardPass (ViewportId viewport, const BasicUiRenderTask::BackwardPassParams &params) override
 After the backward pass is performed, the parameters should be passed back into this function.
bool MR::ImGuiMenu::UiRenderManagerImpl::canConsumeEvent (BasicUiRenderTask::InteractionMask event) const
void MR::reserveKeyEvent (ImGuiKey key)
 call if you want ImGui to take event if this key is pressed (to prevent scene reaction on key press)
 MR::AlphaSortGL::~AlphaSortGL ()
void MR::AlphaSortGL::init ()
 Initialize all GL buffers and arrays.
void MR::AlphaSortGL::free ()
 Free all GL data.
void MR::AlphaSortGL::clearTransparencyTextures () const
 Set all textures used for alpha sorting to zero (heads texture, atomics texture)
void MR::AlphaSortGL::drawTransparencyTextureToScreen () const
 Draws alpha sorting overlay quad texture to screen.
void MR::AlphaSortGL::updateTransparencyTexturesSize (int width, int height)
 Updates size of textures used in alpha sorting (according to viewport size)
 MR::AncillaryLabel::AncillaryLabel ()=default
 MR::AncillaryLabel::AncillaryLabel (AncillaryLabel &&b) noexcept=default
 since this uniquely owns an ancillary object, we provide only move operations, not copy
AncillaryLabelMR::AncillaryLabel::operator= (AncillaryLabel &&b)
 MR::AncillaryLabel::AncillaryLabel (Object &parent, const PositionedText &text, bool depthTest=false)
 Make not-pickable ancillary object, link it to parent object, and set label text.
void MR::AncillaryLabel::make (Object &parent, const PositionedText &text, bool depthTest=false)
 Make not-pickable ancillary object, link it to parent object, and set label text.
static std::shared_ptr< ObjectLabelMR::AncillaryLabel::makeDetached (const PositionedText &text, bool depthTest=false)
 Make not-pickable ancillary object without parent object, and set label text.
void MR::AncillaryLabel::reset ()
 detach owned object from parent, stops owning it
 MR::AncillaryLabel::~AncillaryLabel ()
 detach owned object from parent, stops owning it
void MR::AncillaryLabel::setText (const PositionedText &text)
 Set label text.
void MR::AncillaryLabel::resetText ()
 Reset label text.
void MR::AncillaryLabel::setDepthTest (bool depthTest)
 Set depth test.
void MR::AncillaryLabel::setPosition (const Vector3f &pos)
 Set text position.
 MR::AncillaryImGuiLabel::AncillaryImGuiLabel ()=default
void MR::AncillaryImGuiLabel::make (Object &parent, const PositionedText &text)
 Make label in parent space coordinates, follows parent worldXf.
void MR::AncillaryImGuiLabel::make (std::shared_ptr< Object > parent, const PositionedText &text)
void MR::AncillaryImGuiLabel::make (const PositionedText &text)
 Make label in world space coordinates.
void MR::AncillaryImGuiLabel::reset ()
 clears this instance
Vector2f MR::AncillaryImGuiLabel::getPivot () const
void MR::AncillaryImGuiLabel::setPivot (Vector2f pivot)
void MR::AncillaryImGuiLabel::overrideParams (const ImGuiMeasurementIndicators::Params &params)
 Optionally override rendering params for this label.
void MR::AncillaryImGuiLabel::resetOverrideParams ()
 use default parameters instead of overridden ones
 MR::AncillaryLines::AncillaryLines ()=default
 MR::AncillaryLines::AncillaryLines (AncillaryLines &&b) noexcept=default
 since this uniquely owns an ancillary object, we provide only move operations, not copy
AncillaryLinesMR::AncillaryLines::operator= (AncillaryLines &&b)
 MR::AncillaryLines::AncillaryLines (Object &parent)
 Make not-pickable ancillary object, link it to parent object, and set line geometry.
 MR::AncillaryLines::AncillaryLines (Object &parent, const Contour3f &contour)
 MR::AncillaryLines::AncillaryLines (Object &parent, const Contours3f &contours)
void MR::AncillaryLines::make (Object &parent)
 Make not-pickable ancillary object, link it to parent object, and set line geometry.
void MR::AncillaryLines::make (Object &parent, const Contour3f &contour)
void MR::AncillaryLines::make (Object &parent, const Contours3f &contours)
void MR::AncillaryLines::colorizeAxes ()
 Assign an axis' color from the color theme to each line collinear with the axis.
void MR::AncillaryLines::reset ()
 detach owned object from parent, stops owning it
 MR::AncillaryLines::~AncillaryLines ()
 detach owned object from parent, stops owning it
void MR::AncillaryLines::setContours (const Contours3f &contours)
 Set line geometry.
void MR::AncillaryLines::resetContours ()
 Reset line geometry.
void MR::AncillaryLines::setDepthTest (bool depthTest)
 Set depth test.
 MR::AncillaryMesh::AncillaryMesh ()=default
 MR::AncillaryMesh::AncillaryMesh (AncillaryMesh &&b) noexcept=default
 since this uniquely owns an ancillary object, we provide only move operations, not copy
AncillaryMeshMR::AncillaryMesh::operator= (AncillaryMesh &&b)
 MR::AncillaryMesh::AncillaryMesh (Object &parent)
 Make not-pickable object, link it to parent object.
void MR::AncillaryMesh::make (Object &parent)
 Make not-pickable object, link it to parent object.
void MR::AncillaryMesh::reset ()
 detach owned object from parent, stops owning it
 MR::AncillaryMesh::~AncillaryMesh ()
 detach owned object from parent, stops owning it
 MR::AncillaryPlane::AncillaryPlane ()=default
 MR::AncillaryPlane::AncillaryPlane (AncillaryPlane &&b) noexcept=default
 since this uniquely owns an ancillary object, we provide only move operations, not copy
AncillaryPlaneMR::AncillaryPlane::operator= (AncillaryPlane &&b)
 MR::AncillaryPlane::~AncillaryPlane ()
void MR::AncillaryPlane::make ()
void MR::AncillaryPlane::reset ()
 MR::AncillaryPoints::AncillaryPoints ()=default
 MR::AncillaryPoints::AncillaryPoints (AncillaryPoints &&b) noexcept=default
 since this uniquely owns an ancillary object, we provide only move operations, not copy
AncillaryPointsMR::AncillaryPoints::operator= (AncillaryPoints &&b)
 MR::AncillaryPoints::AncillaryPoints (Object &parent)
 Make not-pickable object, link it to parent object.
void MR::AncillaryPoints::make (Object &parent)
 Make not-pickable object, link it to parent object.
void MR::AncillaryPoints::reset ()
 detach owned object from parent, stops owning it
 MR::AncillaryPoints::~AncillaryPoints ()
 detach owned object from parent, stops owning it
void MR::AncillaryPoints::addPoint (const Vector3f &point)
 add ancillary point
void MR::AncillaryPoints::addPoint (const Vector3f &point, const Color &color)
 add ancillary point with color
void MR::AncillaryPoints::addPoints (const std::vector< Vector3f > &points)
 add vector of ancillary points
void MR::AncillaryPoints::addPoints (const std::vector< Vector3f > &points, const std::vector< Vector4f > &colors)
 add vector of ancillary points with colors
void MR::AncillaryPoints::setDepthTest (bool depthTest)
 Set depth test.
void MR::AppendHistory (std::shared_ptr< HistoryAction > action)
 Appends given history action to viewer's global history store.
template<class HistoryActionType, typename... Args>
void MR::AppendHistory (Args &&... args)
 Constructs history action from given arguments, than appends it to viewer's global history store.
template<typename... Args>
 MR::Historian< HistoryActionType >::Historian (std::string name, std::shared_ptr< Obj > obj, Args &&... args)
void MR::Historian< HistoryActionType >::cancelAction ()
 MR::Historian< HistoryActionType >::~Historian ()
void MR::FilterHistoryByCondition (HistoryStackFilter filteringCondition, bool deepFiltering=true)
 MR::ScopeHistory::ScopeHistory (const std::string &name)
 creates new CombinedHistoryAction, and setups global history store to append all new actions there during this object lifetime
 MR::ScopeHistory::~ScopeHistory ()
 created before CombinedHistoryAction if not empty is appended (with all sub-actions) in the global history store
const std::shared_ptr< CombinedHistoryAction > & MR::ScopeHistory::combinedAction () const
 returns the action being populated
void MR::AsyncTimer::setTime (const Time &time)
 sets alert time, forgetting about previous time
bool MR::AsyncTimer::setTimeIfNotSet (const Time &time)
void MR::AsyncTimer::resetTime ()
 reset the timer
void MR::AsyncTimer::terminate ()
 orders the waiter thread to stop
Event MR::AsyncTimer::waitBlocking ()
 MR::AsyncRequest::AsyncRequest ()
 MR::AsyncRequest::~AsyncRequest ()
void MR::AsyncRequest::request (const Time &time, Command command)
void MR::AsyncRequest::requestIfNotSet (const Time &time, Command command)
void MR::AsyncRequest::reset ()
 clears command
Expected< std::string > MR::GetClipboardText ()
 returns data in clipboard
Expected< void > MR::SetClipboardText (const std::string &text)
 sets data in clipboard
static ColorThemeMR::ColorTheme::instance ()
static Preset MR::ColorTheme::getPreset ()
static const char * MR::ColorTheme::getPresetName (Preset type)
static Type MR::ColorTheme::getThemeType ()
static const std::string & MR::ColorTheme::getThemeName ()
static void MR::ColorTheme::setupByTypeName (Type type, const std::string &name)
 Setup this struct.
static void MR::ColorTheme::setupDefaultDark ()
static void MR::ColorTheme::setupDefaultLight ()
static void MR::ColorTheme::setupUserTheme (const std::string &themeName)
static void MR::ColorTheme::setupFromFile (const std::filesystem::path &path, Type type=Type::User)
 Setup this struct from serialized color-theme file.
static void MR::ColorTheme::setupFromJson (const Json::Value &value, Type type=Type::User)
 Setup this struct from Json value.
static void MR::ColorTheme::serializeCurrentToFile (const std::filesystem::path &path)
static void MR::ColorTheme::serializeCurrentToJson (Json::Value &root)
static bool MR::ColorTheme::isInitialized ()
 True if this structure is filled with colors, false if empty.
static void MR::ColorTheme::setRibbonColor (const Color &color, RibbonColorsType type)
 Getter and setter for ribbon colors.
static const ColorMR::ColorTheme::getRibbonColor (RibbonColorsType type)
static const char * MR::ColorTheme::getRibbonColorTypeName (RibbonColorsType type)
static void MR::ColorTheme::setViewportColor (const Color &color, ViewportColorsType type)
 Getter and setter for viewport colors.
static const ColorMR::ColorTheme::getViewportColor (ViewportColorsType type)
static const char * MR::ColorTheme::getViewportColorTypeName (ViewportColorsType type)
static std::filesystem::path MR::ColorTheme::getUserThemesDirectory ()
 Returns directory where user's custom themes are stored.
static void MR::ColorTheme::updateUserThemesList ()
 Find available custom themes.
static std::vector< std::string > MR::ColorTheme::foundUserThemes ()
 Return list of found custom themes.
static void MR::ColorTheme::resetImGuiStyle ()
 Reset ImGui style sizes and colors, and apply menu scaling to it.
static boost::signals2::connection MR::ColorTheme::onChanged (const std::function< void()> &slot, boost::signals2::connect_position position=boost::signals2::at_back)
 Connects given slot to receive signal on every Color Theme change, triggered in apply.
static void MR::CommandLoop::setMainThreadId (const std::thread::id &id)
 This function setups main thread id, it should be called before any command.
static std::thread::id MR::CommandLoop::getMainThreadId ()
static void MR::CommandLoop::setState (StartPosition state)
 Update state of command loop, only can rise.
static void MR::CommandLoop::appendCommand (CommandFunc func, StartPosition state=StartPosition::BeforeWindowAppear)
static void MR::CommandLoop::runCommandFromGUIThread (CommandFunc func)
static void MR::CommandLoop::processCommands ()
 Execute all commands from loop.
static bool MR::CommandLoop::empty ()
 Return true if loop is empty.
static void MR::CommandLoop::removeCommands (bool closeLoop)
void MR::createShader (const std::string &shader_name, const std::string &vert_source, const std::string &frag_source, GLuint &prog_id, const DisabledWarnings &suppressedWarns={})
 This function creates shader and logs output.
void MR::destroyShader (GLuint id)
 Destroys shader program.
static void MR::CudaAccessor::setCudaAvailable (bool val, int maxDriverVersion, int runtimeVersion, int computeMajor, int computeMinor)
 setup functions
static void MR::CudaAccessor::setCudaFreeMemoryFunc (CudaFreeMemoryFunc freeMemFunc)
static void MR::CudaAccessor::setCudaFastWindingNumberConstructor (CudaFwnConstructor fwnCtor)
static void MR::CudaAccessor::setCudaMeshProjectorConstructor (CudaMeshProjectorConstructor mpCtor)
static void MR::CudaAccessor::setCudaPointsProjectorConstructor (CudaPointsProjectorConstructor ppCtor)
static void MR::CudaAccessor::setCudaPointsToDistanceVolumeCallback (CudaPointsToDistanceVolumeCallback callback)
static void MR::CudaAccessor::setCudaPointsToDistanceVolumeByPartsCallback (CudaPointsToDistanceVolumeByPartsCallback callback)
static void MR::CudaAccessor::setCudaComputeToolDistanceConstructor (CudaComputeToolDistanceConstructor ctdCtor)
static bool MR::CudaAccessor::isCudaSupportedByPlarform ()
static bool MR::CudaAccessor::isCudaAvailable ()
 Returns true if CUDA is available on this computer.
static int MR::CudaAccessor::getCudaMaxDriverSupportedVersion ()
 Returns maximum supported by driver version.
static int MR::CudaAccessor::getCudaRuntimeVersion ()
 Returns version of current runtime.
static int MR::CudaAccessor::getComputeCapabilityMajor ()
 Returns Compute Capability major version of current device.
static int MR::CudaAccessor::getComputeCapabilityMinor ()
 Returns Compute Capability minor version of current device.
static size_t MR::CudaAccessor::getCudaFreeMemory ()
 Returns number of free bytes on cuda.
static std::unique_ptr< IFastWindingNumberMR::CudaAccessor::getCudaFastWindingNumber (const Mesh &mesh)
 Returns cuda implementation of IFastWindingNumber.
static std::unique_ptr< IPointsToMeshProjectorMR::CudaAccessor::getCudaPointsToMeshProjector ()
 Returns cuda implementation of IPointsToMeshProjector.
static std::unique_ptr< IPointsProjectorMR::CudaAccessor::getCudaPointsProjector ()
 Returns cuda implementation of IPointsProjector.
static CudaPointsToDistanceVolumeCallback MR::CudaAccessor::getCudaPointsToDistanceVolumeCallback ()
 Returns cuda implementation of PointsToDistanceVolumeCallback.
static CudaPointsToDistanceVolumeByPartsCallback MR::CudaAccessor::getCudaPointsToDistanceVolumeByPartsCallback ()
 Returns cuda implementation of PointsToDistanceVolumeByPartsCallback.
static std::unique_ptr< IComputeToolDistanceMR::CudaAccessor::getCudaComputeToolDistance ()
 Returns CUDA implementation of IComputeToolDistance.
static size_t MR::CudaAccessor::fastWindingNumberMeshMemory (const Mesh &mesh)
static size_t MR::CudaAccessor::fromGridMemory (const Mesh &mesh, const Vector3i &dims)
static size_t MR::CudaAccessor::fromVectorMemory (const Mesh &mesh, size_t inputSize)
 returns amount of required GPU memory for CudaFastWindingNumber::calcFromVector operation
static size_t MR::CudaAccessor::selfIntersectionsMemory (const Mesh &mesh)
 returns amount of required GPU memory for CudaFastWindingNumber::calcSelfIntersections operation
static size_t MR::CudaAccessor::pointsToDistanceVolumeMemory (const PointCloud &pointCloud, const Vector3i &dims, const VertNormals *ptNormals)
 returns amount of required GPU memory for Cuda::pointsToDistanceVolume
virtual void MR::DemoPlugin::init (Viewer *_viewer) override
 This function is called when the viewer is initialized (no mesh will be loaded at this stage)
virtual void MR::DemoPlugin::shutdown () override
 This function is called before shutdown.
 MR::DepthPeelingGL::MR_ADD_CTOR_DELETE_MOVE (DepthPeelingGL)
void MR::DepthPeelingGL::reset (const Vector2i &size)
bool MR::DepthPeelingGL::doPasses (FramebufferData *bgFramebuffer)
void MR::DepthPeelingGL::draw ()
 draws this result texture onto
int MR::DepthPeelingGL::getNumPasses () const
 functions to control number of passes
void MR::DepthPeelingGL::setNumPasses (int passes)
 MR::DirectionWidget::ChangeDirAction::ChangeDirAction (DirectionWidget &widget, const std::string &name="Change Direction")
 MR::DirectionWidget::ChangeVisibleAction::ChangeVisibleAction (DirectionWidget &widget)
virtual void MR::DirectionWidget::ChangeVisibleAction::action (Type) override
 This function is called on history action (undo, redo, etc.)
virtual std::string MR::DirectionWidget::ChangeVisibleAction::name () const override
virtual size_t MR::DirectionWidget::ChangeVisibleAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
void MR::DirectionWidget::create (Object *parent=nullptr)
void MR::DirectionWidget::create (const Vector3f &worldDir, const Vector3f &worldBase, float worldLength, OnDirectionChangedCallback onDirectionChanged, Object *parent=nullptr)
void MR::DirectionWidget::reset ()
void MR::DirectionWidget::setOnDirectionChangedCallback (OnDirectionChangedCallback cb)
 Manually set callback function.
void MR::DirectionWidget::updateArrow (const Arrow &arrow)
 Updates the arrow, in world space.
void MR::DirectionWidget::updateLocalArrow (const Arrow &arrow)
 Updates the arrow in parent's space.
void MR::DirectionWidget::updateDirection (const Vector3f &dir)
 Updates the direction of the arrow, in world space.
void MR::DirectionWidget::updateLocalDirection (const Vector3f &dir)
 Updates the direction of the arrow in parent's space.
void MR::DirectionWidget::updateBase (const Vector3f &base)
 Updates the base of the arrow, in world space.
void MR::DirectionWidget::updateLocalBase (const Vector3f &base)
 Updates the base of the arrow in parent's space.
void MR::DirectionWidget::updateLength (float length)
 Updates the length of the arrow, in world space.
void MR::DirectionWidget::updateLocalLength (float length)
 Updates the length of the arrow in parent's space.
const std::shared_ptr< ObjectMesh > & MR::DirectionWidget::obj () const
 Returns internal data model object of this widget.
void MR::DirectionWidget::setVisible (bool visible)
 Sets the visibility of the widget.
bool MR::DirectionWidget::isVisible () const
void MR::DirectionWidget::setColor (const Color &color)
 Sets the color of the widget.
const ColorMR::DirectionWidget::getColor () const
 Returns the color of the widget.
Arrow MR::DirectionWidget::getArrow () const
 Returns the arrow's properties, in world space.
Arrow MR::DirectionWidget::getLocalArrow () const
 Returns the arrow's properties in parent's space.
Vector3f MR::DirectionWidget::getBase () const
 Returns the base of the widget, in world space.
Vector3f MR::DirectionWidget::getLocalBase () const
 Returns the base of the widget in parent's space.
Vector3f MR::DirectionWidget::getDirection () const
 Returns the direction of the widget, in world space.
Vector3f MR::DirectionWidget::getLocalDirection () const
 Returns the direction of the widget in parent's space.
float MR::DirectionWidget::getLength () const
 Returns the length of the arrow in world space.
float MR::DirectionWidget::getLocalLength () const
 Returns the length of the arrow in parent's space.
ObjectMR::DirectionWidget::getParentPtr () const
 Returns pointer to parent object, always not-null after create() and before reset()
bool MR::DirectionWidget::isMouseBlocked () const
 Block or allow mouse editing (allowed by default)
void MR::DirectionWidget::setMouseBlocked (bool blocked)
virtual MR::IDragDropHandler::~IDragDropHandler ()=default
std::unique_ptr< IDragDropHandlerMR::getDragDropHandler (GLFWwindow *window)
static FileDialogSignalsMR::FileDialogSignals::instance ()
 returns instance of this holder
std::filesystem::path MR::openFileDialog (const FileParameters &params={})
void MR::openFileDialogAsync (std::function< void(const std::filesystem::path &)> callback, const FileParameters &params={})
std::vector< std::filesystem::path > MR::openFilesDialog (const FileParameters &params={})
void MR::openFilesDialogAsync (std::function< void(const std::vector< std::filesystem::path > &)> callback, const FileParameters &params={})
std::filesystem::path MR::openFolderDialog (std::filesystem::path baseFolder={})
void MR::openFolderDialogAsync (std::function< void(const std::filesystem::path &)> callback, std::filesystem::path baseFolder={})
std::vector< std::filesystem::path > MR::openFoldersDialog (std::filesystem::path baseFolder={})
std::filesystem::path MR::saveFileDialog (const FileParameters &params={})
 returns empty path on cancel
void MR::saveFileDialogAsync (std::function< void(const std::filesystem::path &)> callback, const FileParameters &params={})
std::filesystem::path MR::FileDialog::getLastUsedDir ()
void MR::FileDialog::setLastUsedDir (const std::filesystem::path &folder)
 saves in the configuration the path to last used folder (where the files were last saved or open)
 MR::FitDataParams::FitDataParams (float factor_=1.f, bool snapView_=false, FitMode mode_=FitMode::Visible, const std::vector< std::shared_ptr< VisualObject > > &objsList_={})
 custom objects list. used only with CustomObjectsList mode
 MR::FitBoxParams::FitBoxParams (const Box3f &worldBox_, float factor_=1.f, bool snapView_=false)
 box in world space to fit
void MR::FrameCounter::startDraw ()
void MR::FrameCounter::endDraw (bool swapped)
void MR::FrameCounter::reset ()
void MR::FrameRedrawRequest::reset ()
void MR::FrameRedrawRequest::requestFrame (size_t millisecondsInterval=100)
Json::Value MR::GetSystemInfoJson ()
 Accumulate system information in Json value.
static GLuint MR::GLStaticHolder::getShaderId (ShaderType type)
 Creates shader if it is not and return valid id.
static void MR::GLStaticHolder::freeShader (ShaderType type)
 Free shader from GL.
static void MR::GLStaticHolder::freeAllShaders ()
 Free all shaders from GL.
static RenderObjectBufferMR::GLStaticHolder::getStaticGLBuffer ()
 Memory buffer for objects that about to be loaded to GPU, shared among different data types.
static ShaderType MR::GLStaticHolder::getTransparentPointsShader (TransparencyMode m)
 Returns the shader to render transparent points in the given mode.
static ShaderType MR::GLStaticHolder::getTransparentLinesShader (TransparencyMode m)
 Returns the shader to render transparent lines in the given mode.
static ShaderType MR::GLStaticHolder::getTransparentMeshShader (TransparencyMode m)
 Returns the shader to render transparent mesh in the given mode.
void MR::setTextureWrapType (WrapType wrapType, GLenum type=GL_TEXTURE_2D)
void MR::setTextureFilterType (FilterType filterType, GLenum type=GL_TEXTURE_2D)
 MR::GlTexture::GlTexture (GLenum val)
 MR::GlTexture::GlTexture (const GlTexture &)=delete
 MR::GlTexture::GlTexture (GlTexture &&r)
virtual MR::GlTexture::~GlTexture ()
GlTextureMR::GlTexture::operator= (const GlTexture &)=delete
GlTextureMR::GlTexture::operator= (GlTexture &&r)
auto MR::GlTexture::getId () const
bool MR::GlTexture::valid () const
size_t MR::GlTexture::size () const
void MR::GlTexture::gen ()
 generates new texture
void MR::GlTexture::del ()
 deletes the texture
void MR::GlTexture::bind ()
 binds current texture to OpenGL context
size_t MR::GlTexture::Settings::size () const
void MR::GlTexture::loadData (const Settings &settings, const char *arr)
 creates GL data texture using given data and binds it
template<typename C>
void MR::GlTexture::loadData (const Settings &settings, const C &cont)
void MR::GlTexture::loadDataOpt (bool refresh, const Settings &settings, const char *arr)
 binds current texture to OpenGL context, optionally refreshing its data
template<typename C>
void MR::GlTexture::loadDataOpt (bool refresh, const Settings &settings, const C &cont)
virtual void MR::GlTexture::texImage_ (const Settings &settings, const char *arr)=0
 MR::ImGuiImage::ImGuiImage ()
virtual MR::ImGuiImage::~ImGuiImage ()
void MR::ImGuiImage::update (const MeshTexture &texture)
 Sets image to texture.
ImTextureID MR::ImGuiImage::getImTextureId () const
unsigned MR::ImGuiImage::getId () const
 Returns gl texture id.
const MeshTextureMR::ImGuiImage::getMeshTexture () const
 Returns current MeshTexture.
int MR::ImGuiImage::getImageWidth () const
int MR::ImGuiImage::getImageHeight () const
 MR::NameTagClickListener::MR_ADD_CTOR_DELETE_MOVE (NameTagClickListener)
virtual MR::NameTagClickListener::~NameTagClickListener ()=default
virtual void MR::NameTagClickListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::NameTagClickListener::onNameTagClicked_ (Object &object, ImGuiMenu::NameTagSelectionMode mode)=0
 MR::DrawSceneUiListener::MR_ADD_CTOR_DELETE_MOVE (DrawSceneUiListener)
virtual MR::DrawSceneUiListener::~DrawSceneUiListener ()=default
virtual void MR::DrawSceneUiListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual void MR::DrawSceneUiListener::onDrawSceneUi_ (ViewportId viewportId, UiRenderParams::UiTaskList &tasks)=0
virtual MR::ISceneStateCheck::~ISceneStateCheck ()=default
virtual std::string MR::ISceneStateCheck::isAvailable (const std::vector< std::shared_ptr< const Object > > &) const
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
ViewportMask MR::ItemEnabledPerViewport::getEnabledViewports () const
void MR::ItemEnabledPerViewport::setEnabledViewports (ViewportMask newMask)
 MR::ItemEnabledPerViewport::ItemEnabledPerViewport ()=default
 MR::LambdaRibbonItem::LambdaRibbonItem (std::string name, SimpleLambda lambda)
virtual bool MR::LambdaRibbonItem::action () override
 returns true if state of item changed
std::string MR::getLinesVertexShader ()
std::string MR::getLinesFragmentShader (ShaderTransparencyMode mode)
std::string MR::getLinesJointVertexShader ()
std::string MR::getLinesJointFragmentShader ()
std::string MR::getLinesPickerVertexShader ()
std::string MR::getLinesJointPickerVertexShader ()
 MR::MarkedVoxelSlice::MarkedVoxelSlice (const ObjectVoxels &voxels)
VoxelBitSet & MR::MarkedVoxelSlice::getMask (MaskType type)
const VoxelBitSet & MR::MarkedVoxelSlice::getMask (MaskType type) const
 Returns mask(VoxelBitSet of whole voxel object) of given type.
void MR::MarkedVoxelSlice::setMask (const VoxelBitSet &mask, MaskType type)
 Sets mask(VoxelBitSet of whole voxel object) of given type, updates texture.
const ColorMR::MarkedVoxelSlice::getColor (MaskType type) const
 Colors of slice marks controls, setters update texture.
void MR::MarkedVoxelSlice::setColor (const Color &color, MaskType type)
MarkMR::MarkedVoxelSlice::getMark (MaskType type)
const MarkMR::MarkedVoxelSlice::getMark (MaskType type) const
 Returns color and mask(VoxelBitSet of whole voxel object) of given type.
void MR::MarkedVoxelSlice::setMark (const Mark &mark, MaskType type)
 Sets color and mask(VoxelBitSet of whole voxel object) of given type, updates texture.
std::vector< Mark > & MR::MarkedVoxelSlice::getCustomBackgroundMarks ()
const std::vector< Mark > & MR::MarkedVoxelSlice::getCustomBackgroundMarks () const
void MR::MarkedVoxelSlice::setCustomBackgroundMarks (const std::vector< Mark > &backgroundMarks)
 Sets background colors and masks(VoxelBitSet of whole voxel object) of given type, updates texture.
std::vector< Mark > & MR::MarkedVoxelSlice::getCustomForegroundMarks ()
const std::vector< Mark > & MR::MarkedVoxelSlice::getCustomForegroundMarks () const
void MR::MarkedVoxelSlice::setCustomForegroundMarks (const std::vector< Mark > &foregroundMarks)
 Sets foreground colors and masks(VoxelBitSet of whole voxel object) of given type, updates texture.
SlicePlane MR::MarkedVoxelSlice::getActivePlane () const
 Active plane (YZ, ZX or XY) controls, setters update texture.
void MR::MarkedVoxelSlice::setActivePlane (SlicePlane plane)
const Vector3i & MR::MarkedVoxelSlice::getActiveVoxel () const
void MR::MarkedVoxelSlice::setActiveVoxel (const Vector3i &voxel)
float MR::MarkedVoxelSlice::getMin () const
 Slice normalization parameters, setters update texture.
void MR::MarkedVoxelSlice::setMin (float min)
float MR::MarkedVoxelSlice::getMax () const
void MR::MarkedVoxelSlice::setMax (float max)
const Box3i & MR::MarkedVoxelSlice::getActiveBox () const
 Returns current active box of slice.
void MR::MarkedVoxelSlice::setActiveBox (const Box3i &box)
 Updates active box of slice, do not affect ObjectVoxels, updates texture.
const ParametersMR::MarkedVoxelSlice::getParameters () const
 Get all parameters as one structure.
void MR::MarkedVoxelSlice::setParameters (const Parameters &params)
 Set all parameters as one structure, updates texture.
void MR::MarkedVoxelSlice::forceUpdate ()
 Set current slice with marks to texture, do not abuse this.
void MR::BoundarySelectionWidget::enable (bool isEnabled)
 enable or disable widget
void MR::BoundarySelectionWidget::create (BoundarySelectionWidgetCallBack onBoundarySelected, BoundarySelectionWidgetChecker isObjectValidToPick)
void MR::BoundarySelectionWidget::onObjectChange_ ()
 meshChangedSignal processor
void MR::BoundarySelectionWidget::reset ()
 reset widget, clear internal variables and detach from signals.
bool MR::BoundarySelectionWidget::selectHole (std::shared_ptr< MR::ObjectMeshHolder > object, int index)
 select one of the holes. Return true on success.
void MR::BoundarySelectionWidget::clear ()
 clear selection
std::pair< std::shared_ptr< MR::ObjectMeshHolder >, EdgeId > MR::BoundarySelectionWidget::getSelectHole () const
 returns pair of selected hole ( in Edge representations) and objects on which particular hole is present
std::vector< MR::Vector3f > MR::BoundarySelectionWidget::getPointsForSelectedHole () const
 collect and return vector of points ( verts coord ) for all edges in selected mesh boundary
 MR::ChangeBoundarySelectionHistoryAction::ChangeBoundarySelectionHistoryAction (std::string name, BoundarySelectionWidget &widget, std::shared_ptr< ObjectMeshHolder > object, int index)
std::string MR::ChangeBoundarySelectionHistoryAction::name () const override
 HistoryAction.
void MR::ChangeBoundarySelectionHistoryAction::action (Type type) override
 This function is called on history action (undo, redo, etc.)
size_t MR::ChangeBoundarySelectionHistoryAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
 MR::MeshModifier::MeshModifier (std::string name, StatePluginTabs tab=StatePluginTabs::Mesh)
virtual MR::MeshModifier::~MeshModifier ()=default
virtual bool MR::MeshModifier::action () override
 returns true if state of item changed
bool MR::MeshModifier::modify (const std::vector< std::shared_ptr< VisualObject > > &selectedObjects)
 RenderObject here for auto update.
StatePluginTabs MR::MeshModifier::getTab () const
bool MR::MeshModifier::checkStringMask (const std::string &mask) const
 check if search mask satisfies for this modifier
std::string MR::getMeshVerticesShader ()
std::string MR::getMeshFragmentShader (bool gl4, ShaderTransparencyMode mode, bool msaaEnabled)
std::string MR::getMeshFragmentShaderArgumetsBlock ()
std::string MR::getMeshFragmentShaderColoringBlock ()
 MR::ModalDialog::ModalDialog (std::string label, ModalDialogSettings settings)
bool MR::ModalDialog::beginPopup ()
void MR::ModalDialog::endPopup ()
 Render the dialog's footer ("Don't show again" checkbox) and finish the dialog.
static float MR::ModalDialog::windowWidth ()
 Returns the current window width in pixels.
std::string MR::getMouseModeString (MouseMode mode)
 MR::MouseController::MR_ADD_CTOR_DELETE_MOVE (MouseController)
void MR::MouseController::connect ()
 called in Viewer init, connects to Viewer mouse signals
void MR::MouseController::setMouseControl (const MouseControlKey &key, MouseMode mode)
const Vector2i & MR::MouseController::getDownMousePos () const
 returns previous mouse down (if several mouse buttons are down returns position of first one)
const Vector2i & MR::MouseController::getMousePos () const
 returns current mouse position
bool MR::MouseController::isPressed (MouseButton button) const
 returns state of mouse button
bool MR::MouseController::isPressedAny () const
 returns true if any mouse btn is down
bool MR::MouseController::isCursorInside () const
bool MR::MouseController::isDropOldEventOnNewActive () const
 dropOldEventsOnNew flag - drop active mouse down state (calling mouseUp) if new mouse event happens
void MR::MouseController::dropOldEventsOnNew (bool on)
std::optional< MouseControlKeyMR::MouseController::findControlByMode (MouseMode mode) const
 returns nullopt if no control is present for given mode, otherwise returns associated control
static std::string MR::MouseController::getControlString (const MouseControlKey &key)
 make string from mouse button and modifier
static int MR::MouseController::mouseAndModToKey (const MouseControlKey &key)
 cast mouse button and modifier to simple int key
static MouseControlKey MR::MouseController::keyToMouseAndMod (int key)
 cast simple int key to mouse button and modifier
void MR::MouseController::setTrasformModifierCb (std::function< void(AffineXf3f &)> cb)
 set callback to modify view transform before it is applied to viewport
void MR::MouseController::setFOVModifierCb (std::function< void(float &)> cb)
 set callback to modify new field of view before it is applied to viewport
int MR::MouseController::getMouseConflicts ()
 MR::MoveObjectByMouseImpl::MoveObjectByMouseImpl ()=default
virtual MR::MoveObjectByMouseImpl::~MoveObjectByMouseImpl ()=default
int MR::MoveObjectByMouseImpl::minDistance () const
void MR::MoveObjectByMouseImpl::setMinDistance (int minDistance)
void MR::MoveObjectByMouseImpl::onDrawDialog () const
bool MR::MoveObjectByMouseImpl::onMouseDown (MouseButton button, int modifiers)
bool MR::MoveObjectByMouseImpl::onMouseMove (int x, int y)
bool MR::MoveObjectByMouseImpl::onMouseUp (MouseButton button, int modifiers)
bool MR::MoveObjectByMouseImpl::isMoving () const
void MR::MoveObjectByMouseImpl::cancel ()
void MR::MoveObjectByMouseImpl::enableHistory (bool history)
 enables or disables adding history to viewer history store by this tool
bool MR::MoveObjectByMouseImpl::isHistoryEnabled () const
 returns true if appending history to viewer history store is enabled in this tool
virtual ObjAndPick MR::MoveObjectByMouseImpl::pickObjects_ (std::vector< std::shared_ptr< Object > > &objects, int modifiers) const
virtual TransformMode MR::MoveObjectByMouseImpl::modeFromPickModifiers_ (int modifiers) const
 Helper function to determine TransformMode based on modifiers.
virtual TransformMode MR::MoveObjectByMouseImpl::modeFromPick_ (MouseButton button, int modifiers) const
 this function is called from onMouseDown to verify if pick should proceed, if None is returned - onMouseDown is canceled
virtual void MR::MoveObjectByMouseImpl::setStartPoint_ (const ObjAndPick &pick, Vector3f &startPoint) const
 startPoint - a point under cursor for transform calculation, can be the picked point or else (world coordinates)
virtual void MR::MoveObjectByMouseImpl::setCenterPoint_ (const std::vector< std::shared_ptr< Object > > &objects, Vector3f &centerPoint) const
 centerPoint - a point that will be used as center of rotation/scaling in world space
virtual Plane3f MR::MoveObjectByMouseImpl::calcControlPlane_ (const Viewport &vp, const Vector3f &viewportCenterPoint, const Vector3f &xfCenterPoint) const
Box3f MR::MoveObjectByMouseImpl::getBbox_ (const std::vector< std::shared_ptr< Object > > &objects) const
 MR::ObjectImGuiLabel::ObjectImGuiLabel ()
 MR::ObjectImGuiLabel::ObjectImGuiLabel (ObjectImGuiLabel &&) noexcept=default
ObjectImGuiLabelMR::ObjectImGuiLabel::operator= (ObjectImGuiLabel &&) noexcept=default
static constexpr const char * MR::ObjectImGuiLabel::StaticTypeName () noexcept
const char * MR::ObjectImGuiLabel::typeName () const override
bool MR::ObjectImGuiLabel::hasVisualRepresentation () const override
 does the object have any visual representation (visible points, triangles, edges, etc.), no considering child objects
std::shared_ptr< ObjectMR::ObjectImGuiLabel::clone () const override
std::shared_ptr< ObjectMR::ObjectImGuiLabel::shallowClone () const override
 MR::ObjectImGuiLabel::ObjectImGuiLabel (ProtectedStruct, const ObjectImGuiLabel &obj)
const std::string & MR::ObjectImGuiLabel::getLabel () const
void MR::ObjectImGuiLabel::setLabel (std::string value)
 MR::ObjectImGuiLabel::ObjectImGuiLabel (const ObjectImGuiLabel &other)=default
void MR::ObjectImGuiLabel::swapBase_ (Object &other) override
 swaps this object with other
void MR::ObjectImGuiLabel::serializeFields_ (Json::Value &root) const override
void MR::ObjectImGuiLabel::deserializeFields_ (const Json::Value &root) override
void MR::ObjectImGuiLabel::setupRenderObject_ () const override
void MR::excludeLoneEdgesWithHistory (const std::shared_ptr< ObjectMesh > &objMesh)
void MR::excludeAllEdgesWithHistory (const std::shared_ptr< ObjectMesh > &objMesh)
void MR::mapEdgesWithHistory (const std::shared_ptr< ObjectMesh > &objMesh, const WholeEdgeMap &emap)
void MR::mapEdgesWithHistory (const std::shared_ptr< ObjectMesh > &objMesh, const WholeEdgeHashMap &emap)
void MR::mapEdgesWithHistory (const std::shared_ptr< ObjectMesh > &objMesh, const UndirectedEdgeBMap &emap)
void MR::packPointsWithHistory (const std::shared_ptr< ObjectPoints > &objPoints, Reorder reoder)
void MR::packPointsWithHistory (const std::shared_ptr< ObjectPoints > &objPoints, Reorder reoder, VertBitSet newValidVerts)
virtual MR::ITransformControls::~ITransformControls ()=default
const Vector3f & MR::ITransformControls::getCenter () const
 get center of the widget in local space
void MR::ITransformControls::setCenter (const Vector3f &center)
virtual float MR::ITransformControls::getRadius () const
 should return current radius of the widget
virtual void MR::ITransformControls::updateSizeInPixel ()
 should calculates and sets the matrix to set the size in pixels
void MR::ITransformControls::setTransformModesValidator (TransformModesValidator validator)
void MR::ITransformControls::setPickThrough (bool on)
 Enables or disables pick through mode, in this mode controls will be picked even if they are occluded by other objects.
bool MR::ITransformControls::getPickThrough () const
ControlBit MR::ITransformControls::getHoveredControl () const
 Returns currently hovered control.
virtual void MR::ITransformControls::init (std::shared_ptr< Object > parent)=0
 Called once on widget created to init internal objects.
virtual void MR::ITransformControls::update ()=0
void MR::ITransformControls::hover ()
 Called for hover checks.
void MR::ITransformControls::stopModify ()
 This is called to stop drawing active visualization when modification is stopped.
void MR::ITransformControls::updateVisualTransformMode (ControlBit showMask, ViewportMask viewportMask, const AffineXf3f &xf)
 Called each frame for each viewport to update available transformation modes.
virtual void MR::ITransformControls::updateTranslation (Axis ax, const Vector3f &startMove, const Vector3f &endMove, ViewportId vpId)=0
 One have to implement these functions to have visualization of translation and rotation.
virtual void MR::ITransformControls::updateRotation (Axis ax, const AffineXf3f &xf, float startAngle, float endAngle, ViewportId vpId)=0
 xf - widget current xf
 MR::ITransformControls::ChangeCenterAction::ChangeCenterAction (const std::string &name, ITransformControls &controls)
virtual std::string MR::ITransformControls::ChangeCenterAction::name () const override
virtual void MR::ITransformControls::ChangeCenterAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
virtual size_t MR::ITransformControls::ChangeCenterAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
virtual ControlBit MR::ITransformControls::hover_ (bool pickThrough)=0
virtual void MR::ITransformControls::stopModify_ ()=0
virtual void MR::ITransformControls::updateVisualTransformMode_ (ControlBit showMask, ViewportMask viewportMask)=0
void MR::TransformControls::VisualParams::update (const Box3f &box)
 updates radius and width with given box
void MR::TransformControls::setVisualParams (const VisualParams &params)
const VisualParamsMR::TransformControls::getVisualParams () const
virtual MR::TransformControls::~TransformControls ()
virtual void MR::TransformControls::init (std::shared_ptr< Object > parent) override
 Called once on widget created to init internal objects.
virtual void MR::TransformControls::update () override
virtual float MR::TransformControls::getRadius () const override
 should return current radius of the widget
void MR::TransformControls::setRadius (float radius)
float MR::TransformControls::getWidth () const
void MR::TransformControls::setWidth (float width)
 set width for this widget
void MR::TransformControls::setSizeType (VisualParams::SizeType type)
 sets the type of widget size units ( recalculates the current values into new units of measurement )
virtual void MR::TransformControls::updateSizeInPixel () override
 calculates and sets the matrix to set the size in pixels
virtual void MR::TransformControls::updateTranslation (Axis ax, const Vector3f &startMove, const Vector3f &endMove, ViewportId vpId) override
 One have to implement these functions to have visualization of translation and rotation.
virtual void MR::TransformControls::updateRotation (Axis ax, const AffineXf3f &xf, float startAngle, float endAngle, ViewportId vpId) override
 xf - widget current xf
static TransformModesValidator MR::TransformControls::ThresholdDotValidator (float thresholdDot)
 returns TransformModesValidator by threshold dot value (this value is duty for hiding widget controls that have small projection on screen)
void MR::ObjectTransformWidget::create (const Box3f &box, const AffineXf3f &xf, std::shared_ptr< ITransformControls > controls={})
void MR::ObjectTransformWidget::reset ()
ControlBit MR::ObjectTransformWidget::getTransformModeMask (ViewportId id={}) const
 Returns current transform mode mask.
void MR::ObjectTransformWidget::setTransformMode (ControlBit mask, ViewportId id={})
 Sets transform mode mask (enabling or disabling corresponding widget controls)
AxisTransformMode MR::ObjectTransformWidget::getAxisTransformMode () const
 Returns current axis transform mode (translate/scale object while dragging an axis)
void MR::ObjectTransformWidget::setAxisTransformMode (AxisTransformMode mode)
 Sets current axis transform mode (translate/scale object while dragging an axis)
std::shared_ptr< ObjectMR::ObjectTransformWidget::getRootObject () const
 Returns root object of widget.
std::shared_ptr< ITransformControlsMR::ObjectTransformWidget::getControls () const
 Returns controls object, that visualize widget.
template<typename T>
std::shared_ptr< T > MR::ObjectTransformWidget::getControlsAs () const
void MR::ObjectTransformWidget::setControlsXf (const AffineXf3f &xf, ViewportId id={})
AffineXf3f MR::ObjectTransformWidget::getControlsXf (ViewportId id={}) const
void MR::ObjectTransformWidget::followObjVisibility (const std::weak_ptr< Object > &obj)
void MR::ObjectTransformWidget::setScaleTooltipCallback (std::function< void(float)> callback)
 Sets callback that will be called in draw function during scaling with current scale arg.
void MR::ObjectTransformWidget::setTranslateTooltipCallback (std::function< void(float)> callback)
 Sets callback that will be called in draw function during translation with current shift arg.
void MR::ObjectTransformWidget::setRotateTooltipCallback (std::function< void(float)> callback)
 Sets callback that will be called in draw function during rotation with current angle in rad.
void MR::ObjectTransformWidget::setStopModifyCallback (std::function< void()> callback)
 Sets callback that will be called when modification of widget stops.
void MR::ObjectTransformWidget::setStartModifyCallback (std::function< void()> callback)
 Sets callback that will be called when modification of widget starts.
void MR::ObjectTransformWidget::setAddXfCallback (std::function< void(const AffineXf3f &)> callback)
 Sets callback that will be called when widget gets additive transform.
void MR::ObjectTransformWidget::setApproveXfCallback (std::function< bool(const AffineXf3f &)> callback)
 MR::ObjectTransformWidget::ChangeXfAction::ChangeXfAction (const std::string &name, ObjectTransformWidget &widget)
virtual std::string MR::ObjectTransformWidget::ChangeXfAction::name () const override
virtual void MR::ObjectTransformWidget::ChangeXfAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
virtual size_t MR::ObjectTransformWidget::ChangeXfAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
Expected< LoadedObjectMR::makeObjectTreeFromFolder (const std::filesystem::path &folder, bool dicomOnly, const ProgressCallback &callback={})
 load all supported files from given folder in new container object
Expected< LoadedObjectMR::makeObjectTreeFromZip (const std::filesystem::path &zipPath, const ProgressCallback &callback={})
 load all supported files from given zip-archive in new container object
static const std::vector< Color > & MR::Palette::BlueGreenRedColors ()
static const std::vector< Color > & MR::Palette::GreenRedColors ()
 simpler palette colors: from green to red
 MR::Palette::Palette (const std::vector< Color > &colors)
void MR::Palette::setBaseColors (const std::vector< Color > &colors)
 Set base palette colors colors.size() should be more or equal 2 for discrete palette using vector of colors calculated by mixing the base colors i.e. base {blue, red} -> discrete 3 {blue, 0.5*blue + 0.5*red, red}.
void MR::Palette::setRangeMinMax (float min, float max)
 set range limits for palette (need for find color by value) all palette colors are evenly distributed between min and max
void MR::Palette::setRangeMinMaxNegPos (float minNeg, float maxNeg, float minPos, float maxPos)
 set range limits for palette (need for find color by value) two half palette colors are evenly distributed between MinNeg / MaxNeg and MinPos / MaxPos for values between MaxNeg / MinPos return one color (from center palette)
void MR::Palette::setDiscretizationNumber (int discretization)
 set number of different colors for discrete palette
void MR::Palette::setFilterType (FilterType type)
 set palette type (linear / discrete)
void MR::Palette::draw (const std::string &windowName, const ImVec2 &pose, const ImVec2 &size, bool onlyTopHalf=false)
void MR::Palette::draw (ImDrawList *drawList, float scaling, const ImVec2 &pos, const ImVec2 &size, const Color &labelBgColor, bool onlyTopHalf=false) const
void MR::Palette::draw (ImDrawList *drawList, float scaling, const ImVec2 &pos, const ImVec2 &size, bool onlyTopHalf=false) const
 MR::Palette::Label::Label ()=default
 MR::Palette::Label::Label (float val, std::string text)
void MR::Palette::resetLabels ()
 reset labels to standard view
void MR::Palette::setCustomLabels (const std::vector< Label > &labels)
 set labels manually
void MR::Palette::setLabelsVisible (bool visible)
 set labels visible
bool MR::Palette::loadFromJson (const Json::Value &root)
void MR::Palette::saveCurrentToJson (Json::Value &root) const
 Serialize this palette data to JsonValue.
Color MR::Palette::getColor (float relativeValue) const
Color MR::Palette::getInvalidColor () const
 return invalid color
VertColors MR::Palette::getVertColors (const VertScalars &values, const VertBitSet &region, const VertBitSet *valids, const VertBitSet *validsForStats)
const MeshTextureMR::Palette::getTexture () const
float MR::Palette::getRelativePos (float val) const
 get relative position in [0,1], where 0 is for minimum and 1 is for maximum
UVCoord MR::Palette::getUVcoord (float val, bool valid=true) const
static VertPredicate MR::Palette::predFromBitSet (const VertBitSet *bits)
VertUVCoords MR::Palette::getUVcoords (const VertScalars &values, const VertBitSet &region, const VertPredicate &valids={}, const VertPredicate &validsForStats={})
VertUVCoords MR::Palette::getUVcoords (const VertScalars &values, const VertBitSet &region, const VertBitSet *valids, const VertBitSet *validsForStats=nullptr)
const ParametersMR::Palette::getParameters () const
float MR::Palette::getRangeMin () const
 returns minimum value in the palette's range
float MR::Palette::getRangeMax () const
 returns maximum value in the palette's range
float MR::Palette::getRangeSq () const
 returns minimum squared value, not smaller than all squared values of palette's range
std::string MR::Palette::getStringValue (float value) const
 returns formated string for this value of palette
int MR::Palette::getMaxLabelCount ()
 returns maximal label count
void MR::Palette::setMaxLabelCount (int val)
 sets maximal label count
void MR::Palette::setLegendLimits (const MinMaxf &limits)
 set legend limits. if min > max - limits are disabled
bool MR::Palette::isHistogramEnabled () const
 Histogram:
int MR::Palette::getNumHistogramBuckets () const
void MR::Palette::setNumHistogramBuckets (int n)
int MR::Palette::getDefaultNumHistogramBuckets () const
 Returns the recommended argument for setNumHistogramBuckets().
bool MR::Palette::isDiscretizationPercentagesEnabled () const
 Should we maintain the percentages of distances in each discretization step?
void MR::Palette::enableDiscretizationPercentages (bool enable)
static void MR::Palette::resizeCallback_ (ImGuiSizeCallbackData *data)
static const std::vector< std::string > & MR::PalettePresets::getPresetNames ()
 gets names of existing presets
static bool MR::PalettePresets::loadPreset (const std::string &name, Palette &palette)
static Expected< void > MR::PalettePresets::savePreset (const std::string &name, const Palette &palette)
 saves given palette to preset with given name
static std::filesystem::path MR::PalettePresets::getPalettePresetsFolder ()
 returns path to presets folder
HoleEdgePoint MR::findClosestToMouseHoleEdge (const Vector2i &mousePos, const std::shared_ptr< ObjectMeshHolder > &objMesh, const std::vector< EdgeId > &holeRepresentativeEdges, float accuracy=5.5f, bool attractToVert=false, float cornerAccuracy=10.5f)
HoleEdgePoint MR::findClosestToMouseEdge (const Vector2i &mousePos, const std::vector< std::shared_ptr< ObjectLinesHolder > > &objsLines, float accuracy=5.5f)
HoleEdgePoint MR::findClosestToMouseEdge (const Vector2i &mousePos, const std::vector< std::shared_ptr< ObjectLines > > &objsLines, float accuracy=5.5f)
 MR::PickPointManager::PickPointManager ()
 create an object and starts listening for mouse events
 MR::PickPointManager::~PickPointManager ()
 destroy this and remove the undo/redo actions referring this from the history.
const SurfaceContourMR::PickPointManager::getSurfaceContour (const std::shared_ptr< VisualObject > &obj)
 return contour for specific object (creating new one if necessary)
const SurfaceContoursMR::PickPointManager::getSurfaceContours () const
 return all contours, i.e. per object unorderd_map of ordered surface points [vector].
bool MR::PickPointManager::isClosedContour (const std::shared_ptr< VisualObject > &obj) const
 check whether the contour is closed for a particular object.
size_t MR::PickPointManager::numPickPoints (const std::shared_ptr< VisualObject > &obj) const
 returns the total number of pick points (including extra point if the contour is closed) on given object
std::shared_ptr< SurfacePointWidgetMR::PickPointManager::getPointWidget (const std::shared_ptr< VisualObject > &obj, int index) const
 returns point widget by index from given object or nullptr if no such widget exists
int MR::PickPointManager::getPointIndex (const std::shared_ptr< VisualObject > &obj, SurfacePointWidget &pointWidget) const
 returns index of given point widget on given object or -1 if this widget is not from given object
SurfacePointWidgetMR::PickPointManager::draggedPointWidget () const
 returns point widget currently dragged by mouse
bool MR::PickPointManager::appendPoint (const std::shared_ptr< VisualObject > &obj, const PickedPoint &triPoint, bool startDragging=false)
bool MR::PickPointManager::insertPoint (const std::shared_ptr< VisualObject > &obj, int index, const PickedPoint &triPoint, bool startDragging=false)
bool MR::PickPointManager::removePoint (const std::shared_ptr< VisualObject > &obj, int pickedIndex)
 Remove point with pickedIndex index from contour connected with obj.
bool MR::PickPointManager::closeContour (const std::shared_ptr< VisualObject > &obj, bool makeClosed=true)
FullState MR::PickPointManager::getFullState () const
 returns the state of this
void MR::PickPointManager::clear ()
 removes all points from all objects
void MR::PickPointManager::setFullState (FullState s)
 removes all current points, then adds pick points on all objects as prescribed by given state
void MR::PlaneWidget::updatePlane (const Plane3f &plane, bool updateCameraRotation=true)
void MR::PlaneWidget::updateBox (const Box3f &box, bool updateCameraRotation=true)
void MR::PlaneWidget::definePlane ()
 defines plane, adds plane object to scene
void MR::PlaneWidget::undefinePlane ()
 undefines plane, removes PlaneObject from scene
void MR::PlaneWidget::setLocalMode (bool on)
bool MR::PlaneWidget::isInLocalMode () const
void MR::PlaneWidget::setLocalShift (float shift)
float MR::PlaneWidget::getLocalShift () const
const Plane3fMR::PlaneWidget::getPlane () const
 returns plane
const std::shared_ptr< ObjectMesh > & MR::PlaneWidget::getPlaneObject () const
 returns plane object
void MR::PlaneWidget::setOnPlaneUpdateCallback (OnPlaneUpdateCallback callback)
const Box3f & MR::PlaneWidget::box () const
 returns box which is used to calculate size and position of the visualized plane part
bool MR::PlaneWidget::importPlaneMode () const
 returns the flag importPlaneMode_, if it is true you can use a plain object from the scene
void MR::PlaneWidget::setImportPlaneMode (bool val)
 sets the flag importPlaneMode_, if it is true you can use a plain object from the scene
bool MR::PlaneWidget::getShowPlaneByDefault () const
 returns the flag that is true if the plane is shown by default
void MR::PlaneWidget::setShowPlaneByDefault (bool val)
 sets the flag that is true if the plane is shown by default
std::string MR::getPointsVertexShader ()
std::string MR::getPointsFragmentShader (ShaderTransparencyMode mode)
void MR::ProgressBar::setup ()
 this function should be called only once for each frame (it is called in MR::Menu (MR::RibbonMenu))
void MR::ProgressBar::onFrameEnd ()
 call this function on frame end
void MR::ProgressBar::order (const char *name, const std::function< void()> &task, int taskCount=1)
void MR::ProgressBar::orderWithMainThreadPostProcessing (const char *name, TaskWithMainThreadPostProcessing task, int taskCount=1)
void MR::ProgressBar::orderWithManualFinish (const char *name, std::function< void()> task, int taskCount=1)
bool MR::ProgressBar::isCanceled ()
bool MR::ProgressBar::isFinished ()
float MR::ProgressBar::getProgress ()
float MR::ProgressBar::getLastOperationTime ()
 returns time of last operation in seconds, returns -1.0f if no operation was performed
const std::string & MR::ProgressBar::getLastOperationTitle ()
 returns title of the last operation
void MR::ProgressBar::nextTask ()
void MR::ProgressBar::nextTask (const char *s)
void MR::ProgressBar::setTaskCount (int n)
void MR::ProgressBar::forceSetTaskName (std::string taskName)
 set the current task's name without auto-updating progress value
void MR::ProgressBar::resetTaskName ()
void MR::ProgressBar::finish ()
bool MR::ProgressBar::isOrdered ()
 returns true if progress bar was ordered and not finished
bool MR::ProgressBar::setProgress (float p)
bool MR::ProgressBar::callBackSetProgress (float p)
bool MR::ProgressBar::simpleCallBackSetProgress (float p)
void MR::ProgressBar::printTimingTree (double minTimeSec=0.1)
template<typename F, typename... Args>
void MR::pythonAppendOrRun (F func, Args &&... args)
template<typename R, typename... Args>
auto MR::pythonRunFromGUIThread (std::function< R(Args...)> &&f) -> std::function< void(Args...)>
template<typename F>
auto MR::pythonRunFromGUIThread (F &&f)
template<typename R, typename T, typename... Args>
auto MR::pythonRunFromGUIThread (R(T::*memFunction)(Args...))
 MR::RecentFilesStore::RecentFilesStore ()=default
 MR::RecentFilesStore::RecentFilesStore (std::string appName, int capacity=10)
void MR::RecentFilesStore::storeFile (const std::filesystem::path &file) const
std::vector< std::filesystem::path > MR::RecentFilesStore::getStoredFiles () const
 Returns filenames from storage.
int MR::RecentFilesStore::getCapacity () const
 Returns maximum size of recently opened files stack.
boost::signals2::connection MR::RecentFilesStore::onUpdate (const boost::function< void(const FileNamesStack &files)> &slot, boost::signals2::connect_position position=boost::signals2::at_back)
 Connects given slot to receive signal on every update of this store.
 MR::BasicClickableRectUiRenderTask::BasicClickableRectUiRenderTask ()=default
 MR::BasicClickableRectUiRenderTask::BasicClickableRectUiRenderTask (const BasicClickableRectUiRenderTask &other)
 Don't assign the memebers (except the base), because we want to preserve the state across frames.
BasicClickableRectUiRenderTaskMR::BasicClickableRectUiRenderTask::operator= (const BasicClickableRectUiRenderTask &other)
virtual MR::BasicClickableRectUiRenderTask::~BasicClickableRectUiRenderTask ()=default
virtual void MR::BasicClickableRectUiRenderTask::onClick ()=0
 This is called when the click happens.
void MR::BasicClickableRectUiRenderTask::earlyBackwardPass (const BackwardPassParams &backParams) override
 This is what ultimately calls onClick() if the certain conditions hold.
 MR::RenderResetDirtyComponent::RenderResetDirtyComponent (const VisualObject &object)
virtual bool MR::RenderResetDirtyComponent::render (const ModelRenderParams &)
 only clears dirty flag of the object
virtual void MR::RenderResetDirtyComponent::renderPicker (const ModelBaseRenderParams &, unsigned)
virtual size_t MR::RenderResetDirtyComponent::heapBytes () const
 returns the amount of memory this object occupies on heap
virtual size_t MR::RenderResetDirtyComponent::glBytes () const
 returns the amount of memory this object allocated in OpenGL
 MR::RenderDimensions::PointTask::PointTask ()
 MR::RenderDimensions::PointTask::PointTask (const UiRenderParams &uiParams, const AffineXf3f &xf, Color color, const PointParams &params)
void MR::RenderDimensions::PointTask::renderPass () override
 This is the main rendering pass.
void MR::RenderDimensions::PointTask::onClick () override
 Implement BasicClickableRectUiRenderTask:
 MR::RenderDimensions::RadiusTask::RadiusTask ()
 MR::RenderDimensions::RadiusTask::RadiusTask (const UiRenderParams &uiParams, const AffineXf3f &xf, Color color, const RadiusParams &params)
void MR::RenderDimensions::RadiusTask::renderPass () override
 This is the main rendering pass.
void MR::RenderDimensions::RadiusTask::onClick () override
 Implement BasicClickableRectUiRenderTask:
 MR::RenderDimensions::AngleTask::AngleTask ()
 MR::RenderDimensions::AngleTask::AngleTask (const UiRenderParams &uiParams, const AffineXf3f &xf, Color color, const AngleParams &params)
void MR::RenderDimensions::AngleTask::renderPass () override
 This is the main rendering pass.
void MR::RenderDimensions::AngleTask::onClick () override
 Implement BasicClickableRectUiRenderTask:
 MR::RenderDimensions::LengthTask::LengthTask ()
 MR::RenderDimensions::LengthTask::LengthTask (const UiRenderParams &uiParams, const AffineXf3f &xf, Color color, const LengthParams &params)
void MR::RenderDimensions::LengthTask::renderPass () override
 This is the main rendering pass.
void MR::RenderDimensions::LengthTask::onClick () override
 Implement BasicClickableRectUiRenderTask:
 MR::GlBuffer::GlBuffer ()=default
 MR::GlBuffer::GlBuffer (const GlBuffer &)=delete
 MR::GlBuffer::GlBuffer (GlBuffer &&r)
 MR::GlBuffer::~GlBuffer ()
GlBufferMR::GlBuffer::operator= (const GlBuffer &)=delete
GlBufferMR::GlBuffer::operator= (GlBuffer &&r)
auto MR::GlBuffer::getId () const
bool MR::GlBuffer::valid () const
size_t MR::GlBuffer::size () const
void MR::GlBuffer::gen ()
 generates new buffer
void MR::GlBuffer::del ()
 deletes the buffer
void MR::GlBuffer::bind (GLenum target)
 binds current buffer to OpenGL context
void MR::GlBuffer::loadData (GLenum target, const char *arr, size_t arrSize)
 creates GL data buffer using given data and binds it
template<typename T>
void MR::GlBuffer::loadData (GLenum target, const T *arr, size_t arrSize)
template<typename C>
void MR::GlBuffer::loadData (GLenum target, const C &cont)
void MR::GlBuffer::loadDataOpt (GLenum target, bool refresh, const char *arr, size_t arrSize)
 binds current buffer to OpenGL context, optionally refreshing its data
template<typename T>
void MR::GlBuffer::loadDataOpt (GLenum target, bool refresh, const T *arr, size_t arrSize)
template<typename C>
void MR::GlBuffer::loadDataOpt (GLenum target, bool refresh, const C &cont)
 MR::GlTexture2::GlTexture2 ()
static Vector3i MR::GlTexture2::ToResolution (const Vector2i &value)
 MR::GlTexture3::GlTexture3 ()
 MR::GlTexture2DArray::GlTexture2DArray ()
GLint MR::bindVertexAttribArray (const BindVertexAttribArraySettings &settings)
template<typename T, template< typename, typename... > class C, typename... args>
GLint MR::bindVertexAttribArray (const GLuint program_shader, const char *name, GlBuffer &buf, const C< T, args... > &V, int baseTypeElementsNumber, bool refresh, bool forceUse=false)
template<typename T, std::size_t N>
GLint MR::bindVertexAttribArray (const GLuint program_shader, const char *name, GlBuffer &buf, const std::array< T, N > &V, int baseTypeElementsNumber, bool refresh, bool forceUse=false)
int MR::getDepthFunctionLess (DepthFunction funcType)
int MR::getDepthFunctionLEqual (DepthFunction funcType)
void MR::QuadTextureVertexObject::gen ()
 generates simple quad for rendering
void MR::QuadTextureVertexObject::bind ()
 binds simple quad vertex data
void MR::QuadTextureVertexObject::del ()
 removes this object
void MR::FramebufferData::gen (const Vector2i &size, bool copyDepth, int msaaPow, bool highPrecisionDepth=false)
void MR::FramebufferData::bind (bool clear=true, float clearDepth=1.0f)
void MR::FramebufferData::bindDefault ()
void MR::FramebufferData::bindTexture (bool color=true, bool depth=true)
 marks the texture to reading
void MR::FramebufferData::copyTextureBindDef ()
void MR::FramebufferData::del ()
 removes this framebuffer
unsigned MR::FramebufferData::getColorTexture () const
 gets texture id for binding in other shaders
unsigned MR::FramebufferData::getDepthTexture () const
const Vector2i & MR::FramebufferData::getSize () const
bool MR::FramebufferData::isBound () const
 return true if texture is bound
void MR::FramebufferData::draw (QuadTextureVertexObject &quadObject, const DrawParams &params) const
 draws this framebuffer using quadObject
void MR::bindDepthPeelingTextures (GLuint shaderId, const TransparencyMode &tMode, GLenum startGLTextureIndex)
 helper function to bind depth and color buffers to given shader program
void MR::objectPreRenderSetup (const TransparencyMode &tMode, RenderModelPassMask desiredPass, bool deptTesting)
void MR::objectPostRenderSetup (const TransparencyMode &tMode, RenderModelPassMask desiredPass, bool deptTesting)
Vector2i MR::calcTextureRes (int bufferSize, int maxTextWidth)
 calc texture resolution, to fit MAX_TEXTURE_SIZE, and have minimal empty pixels
 MR::RenderBufferRef< T >::RenderBufferRef ()=default
 MR::RenderBufferRef< T >::RenderBufferRef (T *data, std::size_t glSize, bool dirty)
T & MR::RenderBufferRef< T >::operator[] (std::size_t i) const noexcept
 returns reference to i-th element
T * MR::RenderBufferRef< T >::data () const noexcept
 returns pointer to buffer data
std::size_t MR::RenderBufferRef< T >::size () const noexcept
 returns actual buffer size
std::size_t MR::RenderBufferRef< T >::glSize () const noexcept
 returns number of elements that are about to be loaded or already loaded to GL memory
bool MR::RenderBufferRef< T >::dirty () const noexcept
 returns true if associated data were updated
template<typename T>
RenderBufferRef< T > MR::RenderObjectBuffer::prepareBuffer (std::size_t glSize, bool dirty=true)
size_t MR::RenderObjectBuffer::heapBytes () const
void MR::renderImGui (const Vector2i &resolution, const std::function< void()> &configureFunc, const std::function< void()> &drawFunc)
 MR::RenderImGuiLabelObject::RenderImGuiLabelObject (const VisualObject &object)
void MR::RenderImGuiLabelObject::renderUi (const UiRenderParams &params) override
 MR::RenderLabelObject::RenderLabelObject (const VisualObject &visObj)
 MR::RenderLabelObject::~RenderLabelObject ()
virtual bool MR::RenderLabelObject::render (const ModelRenderParams &params) override
 Returns true if something was rendered, or false if nothing to render.
virtual void MR::RenderLabelObject::renderPicker (const ModelBaseRenderParams &params, unsigned geomId) override
virtual size_t MR::RenderLabelObject::heapBytes () const override
 returns the amount of memory this object occupies on heap
virtual size_t MR::RenderLabelObject::glBytes () const override
 returns the amount of memory this object allocated in OpenGL
virtual void MR::RenderLabelObject::forceBindAll () override
 binds all data for this render object, not to bind ever again (until object becomes dirty)
 MR::RenderLinesObject::RenderLinesObject (const VisualObject &visObj)
 MR::RenderLinesObject::~RenderLinesObject ()
virtual bool MR::RenderLinesObject::render (const ModelRenderParams &params) override
 Returns true if something was rendered, or false if nothing to render.
virtual void MR::RenderLinesObject::renderPicker (const ModelBaseRenderParams &params, unsigned geomId) override
virtual size_t MR::RenderLinesObject::heapBytes () const override
 returns the amount of memory this object occupies on heap
virtual size_t MR::RenderLinesObject::glBytes () const override
 returns the amount of memory this object allocated in OpenGL
virtual void MR::RenderLinesObject::forceBindAll () override
 binds all data for this render object, not to bind ever again (until object becomes dirty)
const Vector2f & MR::GetAvailableLineWidthRange ()
 Returns the range of line widths that are allowed by current renderer.
 MR::RenderPointObject::RenderPointObject (const VisualObject &object)
void MR::RenderPointObject::renderUi (const UiRenderParams &params) override
 MR::RenderDistanceObject::RenderDistanceObject (const VisualObject &object)
void MR::RenderDistanceObject::renderUi (const UiRenderParams &params) override
 MR::RenderRadiusObject::RenderRadiusObject (const VisualObject &object)
void MR::RenderRadiusObject::renderUi (const UiRenderParams &params) override
 MR::RenderAngleObject::RenderAngleObject (const VisualObject &object)
void MR::RenderAngleObject::renderUi (const UiRenderParams &params) override
 MR::RenderMeshObject::RenderMeshObject (const VisualObject &visObj)
virtual MR::RenderMeshObject::~RenderMeshObject ()
virtual bool MR::RenderMeshObject::render (const ModelRenderParams &params) override
 Returns true if something was rendered, or false if nothing to render.
virtual void MR::RenderMeshObject::renderPicker (const ModelBaseRenderParams &params, unsigned geomId) override
virtual size_t MR::RenderMeshObject::heapBytes () const override
 returns the amount of memory this object occupies on heap
virtual size_t MR::RenderMeshObject::glBytes () const override
 returns the amount of memory this object allocated in OpenGL
virtual void MR::RenderMeshObject::forceBindAll () override
 binds all data for this render object, not to bind ever again (until object becomes dirty)
RenderBufferRef< Vector3f > MR::RenderMeshObject::loadVertPosBuffer_ ()
RenderBufferRef< Vector3f > MR::RenderMeshObject::loadVertNormalsBuffer_ ()
RenderBufferRef< ColorMR::RenderMeshObject::loadVertColorsBuffer_ ()
RenderBufferRef< UVCoordMR::RenderMeshObject::loadVertUVBuffer_ ()
RenderBufferRef< Vector3i > MR::RenderMeshObject::loadFaceIndicesBuffer_ ()
RenderBufferRef< unsigned > MR::RenderMeshObject::loadFaceSelectionTextureBuffer_ ()
RenderBufferRef< Vector4f > MR::RenderMeshObject::loadFaceNormalsTextureBuffer_ ()
RenderBufferRef< uint8_t > MR::RenderMeshObject::loadTexturePerFaceTextureBuffer_ ()
RenderBufferRef< VertId > MR::RenderMeshObject::loadPointValidIndicesBuffer_ ()
virtual void MR::RenderMeshObject::renderEdges_ (const ModelRenderParams &parameters, RenderModelPassMask desiredPass, GLuint vao, const Color &color, uint32_t dirtyFlag)
virtual void MR::RenderMeshObject::renderMeshEdges_ (const ModelRenderParams &parameters, RenderModelPassMask desiredPass)
virtual void MR::RenderMeshObject::renderMeshVerts_ (const ModelRenderParams &parameters, RenderModelPassMask desiredPass)
virtual void MR::RenderMeshObject::bindMesh_ (GLStaticHolder::ShaderType shaderType)
virtual void MR::RenderMeshObject::bindMeshPicker_ ()
virtual void MR::RenderMeshObject::bindEdges_ ()
virtual void MR::RenderMeshObject::bindBorders_ ()
virtual void MR::RenderMeshObject::bindSelectedEdges_ ()
virtual void MR::RenderMeshObject::bindEmptyTextures_ (GLuint shaderId)
virtual void MR::RenderMeshObject::bindPoints_ (GLStaticHolder::ShaderType shaderType)
virtual void MR::RenderMeshObject::drawMesh_ (bool solid, ViewportId viewportId, bool picker=false) const
virtual void MR::RenderMeshObject::initBuffers_ ()
 Create a new set of OpenGL buffer objects.
virtual void MR::RenderMeshObject::freeBuffers_ ()
 Release the OpenGL buffer objects.
virtual void MR::RenderMeshObject::update_ (ViewportMask mask)
void MR::RenderNameObject::Task::renderPass () override
void MR::RenderNameObject::Task::onClick () override
 MR::RenderNameObject::RenderNameObject (const VisualObject &object)
void MR::RenderNameObject::renderUi (const UiRenderParams &params) override
virtual ImGuiMeasurementIndicators::Text MR::RenderNameObject::getObjectNameText (const VisualObject &object, ViewportId viewportId) const
 The text displayed as the clickable object name.
virtual ImGuiMeasurementIndicators::Text MR::RenderNameObject::getObjectNameExtraText (const VisualObject &object, ViewportId viewportId) const
 MR::RenderPointsObject::RenderPointsObject (const VisualObject &visObj)
 MR::RenderPointsObject::~RenderPointsObject ()
virtual bool MR::RenderPointsObject::render (const ModelRenderParams &params) override
 Returns true if something was rendered, or false if nothing to render.
virtual void MR::RenderPointsObject::renderPicker (const ModelBaseRenderParams &params, unsigned geomId) override
virtual size_t MR::RenderPointsObject::heapBytes () const override
 returns the amount of memory this object occupies on heap
virtual size_t MR::RenderPointsObject::glBytes () const override
 returns the amount of memory this object allocated in OpenGL
virtual void MR::RenderPointsObject::forceBindAll () override
 binds all data for this render object, not to bind ever again (until object becomes dirty)
Image MR::renderToImage (const Vector2i &resolution, const std::optional< Color > &backgroundColor, const std::function< void(FramebufferData *framebuffer)> &drawFunc)
 MR::RenderVolumeObject::RenderVolumeObject (const VisualObject &visObj)
 MR::RenderVolumeObject::~RenderVolumeObject ()
virtual bool MR::RenderVolumeObject::render (const ModelRenderParams &params) override
 Returns true if something was rendered, or false if nothing to render.
virtual void MR::RenderVolumeObject::renderPicker (const ModelBaseRenderParams &params, unsigned geomId) override
virtual size_t MR::RenderVolumeObject::heapBytes () const override
 returns the amount of memory this object occupies on heap
virtual size_t MR::RenderVolumeObject::glBytes () const override
 returns the amount of memory this object allocated in OpenGL
virtual void MR::RenderVolumeObject::forceBindAll () override
 binds all data for this render object, not to bind ever again (until object becomes dirty)
static void MR::RibbonButtonDrawer::InitGradientTexture ()
 Creates GL texture for gradient UI (called on theme apply)
static std::unique_ptr< ImGuiImage > & MR::RibbonButtonDrawer::GetTexture (TextureType type)
bool MR::RibbonButtonDrawer::GradientCheckboxItem (const MenuItemInfo &item, bool *value) const
 draw gradient checkbox with icon (for menu item)
static bool MR::RibbonButtonDrawer::CustomCollapsingHeader (const char *label, ImGuiTreeNodeFlags flags=0, int issueCount=0)
ButtonItemWidth MR::RibbonButtonDrawer::calcItemWidth (const MenuItemInfo &item, DrawButtonParams::SizeType sizeType) const
void MR::RibbonButtonDrawer::drawButtonItem (const MenuItemInfo &item, const DrawButtonParams &params) const
 draw item button
void MR::RibbonButtonDrawer::drawCustomButtonItem (const MenuItemInfo &item, const CustomButtonParameters &customParam, const DrawButtonParams &params) const
 draw item button
void MR::RibbonButtonDrawer::drawButtonIcon (const MenuItemInfo &item, const DrawButtonParams &params) const
 draw item button icon
bool MR::RibbonButtonDrawer::drawTabArrowButton (const char *icon, const ImVec2 &size, float iconSize)
 draw custom styled button
void MR::RibbonButtonDrawer::setMonochrome (const std::optional< Color > &color)
 if set color then instead of multicolored icons will be drawn with this color
void MR::RibbonButtonDrawer::setOnPressAction (std::function< void(std::shared_ptr< RibbonMenuItem >, const std::string &)> action)
 set reaction on press item button
void MR::RibbonButtonDrawer::setGetterRequirements (std::function< std::string(std::shared_ptr< RibbonMenuItem >)> getterRequirements)
 set function to get requirements for activate item
void MR::RibbonButtonDrawer::setMenu (RibbonMenu *menu)
void MR::RibbonButtonDrawer::setShortcutManager (const ShortcutManager *shortcutManager)
int MR::RibbonButtonDrawer::pushRibbonButtonColors (bool enabled, bool active, bool forceHovered, DrawButtonParams::RootType rootType) const
 MR::RibbonFontHolder::RibbonFontHolder (const RibbonFontManager::FontType &fontType)
 MR::RibbonFontHolder::RibbonFontHolder (const RibbonFontManager::FontType &fontType, float scale)
 MR::RibbonFontHolder::RibbonFontHolder (const RibbonFontManager::FontType &fontType, float scale, bool pushOnCreate)
 MR::RibbonFontHolder::~RibbonFontHolder ()
void MR::RibbonFontHolder::pushFont ()
 check the font for existence and push it
void MR::RibbonFontHolder::popFont ()
 check the font for existence and pop it
bool MR::RibbonFontHolder::isPushed ()
 font is pushed
 MR::RibbonFontManager::RibbonFontManager ()
void MR::RibbonFontManager::loadAllFonts (ImWchar *charRanges)
 load all fonts using in ribbon menu
ImFont * MR::RibbonFontManager::getFontByType (FontType type) const
 get font by font type
static float MR::RibbonFontManager::getFontSizeByType (FontType type)
 get font size by font type
std::filesystem::path MR::RibbonFontManager::getMenuFontPath () const
 get ribbon menu font path
const FontFilePathsMR::RibbonFontManager::getAllFontPaths () const
 returns list of all font paths
void MR::RibbonFontManager::setNewFontPaths (const FontFilePaths &paths)
static ImFont * MR::RibbonFontManager::getFontByTypeStatic (FontType type)
static FontAndSize MR::RibbonFontManager::getFontAndSizeByTypeStatic (FontType type)
static void MR::RibbonFontManager::initFontManagerInstance (RibbonFontManager *ribbonFontManager)
static void MR::RibbonIcons::load ()
 this should be called once on start of program (called in RibbonMenu::init)
static void MR::RibbonIcons::free ()
 this should be called once before program stops (called in RibbonMenu::shutdown)
static const ImGuiImageMR::RibbonIcons::findByName (const std::string &name, float width, ColorType colorType, IconType iconType)
 finds icon with best fitting size, if there is no returns nullptr
RibbonConfig MR::createRibbonConfigFromJson (const Json::Value &root)
 parse given json and setup RibbonConfig from it
void MR::applyRibbonConfig (const RibbonConfig &config)
 apply given config to the application
 MR::RibbonMenu::RibbonMenu ()
 MR::RibbonMenu::~RibbonMenu ()
static std::shared_ptr< RibbonMenuMR::RibbonMenu::instance ()
 returns RibonMenu from ViewerInstance()
void MR::RibbonMenu::setCustomContextCheckbox (const std::string &name, CustomContextMenuCheckbox customContextMenuCheckbox)
virtual void MR::RibbonMenu::init (MR::Viewer *_viewer) override
 This function is called when the viewer is initialized (no mesh will be loaded at this stage)
virtual void MR::RibbonMenu::shutdown () override
 This function is called before shutdown.
virtual void MR::RibbonMenu::drawViewerWindow () override
 override this instead using callback_draw_viewer_window
virtual void MR::RibbonMenu::drawAdditionalWindows () override
 override this instead using callback_draw_custom_window
void MR::RibbonMenu::openToolbarCustomize ()
 open Toolbar Customize modal popup
virtual void MR::RibbonMenu::loadFonts (int font_size=13) override
virtual std::filesystem::path MR::RibbonMenu::getMenuFontPath () const override
virtual void MR::RibbonMenu::pinTopPanel (bool on)
 set top panel pinned and unpinned
bool MR::RibbonMenu::isTopPannelPinned () const
int MR::RibbonMenu::getTopPanelOpenedHeight () const
 this functions allow you to get top panel height (before scaling)
int MR::RibbonMenu::getTopPanelHiddenHeight () const
int MR::RibbonMenu::getTopPanelCurrentHeight () const
void MR::RibbonMenu::setTopPanelMaxOpenedTimer (float sec)
virtual void MR::RibbonMenu::setQuickAccessListVersion (int version)
 set quick access menu item list version
virtual void MR::RibbonMenu::readQuickAccessList (const Json::Value &root)
 read quick access menu items list from json
void MR::RibbonMenu::resetQuickAccessList ()
 reset quick access menu items list to default
Vector2i MR::RibbonMenu::getSceneSize ()
 get Scene List window size
void MR::RibbonMenu::setSceneSize (const Vector2i &size)
 set Scene List window size
bool MR::RibbonMenu::hasActiveBlockingItem () const
 returns true if any blocking plugin is now active
bool MR::RibbonMenu::hasAnyActiveItem () const
 returns true if any plugin is now active
void MR::RibbonMenu::updateItemStatus (const std::string &itemName)
 updates status of item if it was changed outside of menu
int MR::RibbonMenu::getActiveTabIndex () const
 returns index of active tab in RibbonSchemaHolder::schema().tabsOrder
RibbonFontManagerMR::RibbonMenu::getFontManager ()
 get access to Ribbon font manager
RibbonButtonDrawerMR::RibbonMenu::getRibbonButtonDrawer ()
 get access to Ribbon button drawer
ToolbarMR::RibbonMenu::getToolbar ()
 get access to Ribbon Toolbar
RibbonNotifierMR::RibbonMenu::getRibbonNotifier ()
 get access to Ribbon notifier
void MR::RibbonMenu::setActiveListPos (const ImVec2 &pos)
void MR::RibbonMenu::showActiveList ()
 set active plugins list showed
virtual void MR::RibbonMenu::pushNotification (const RibbonNotification &notification)
static void MR::RibbonMenu::cloneTree (const std::vector< std::shared_ptr< Object > > &selectedObjects)
 clones given objects with sub-objects (except for ancillary and unrecognized children) and undo
static void MR::RibbonMenu::cloneSelectedPart (const std::shared_ptr< Object > &object)
 clones selected part of given object as separate object (faces, points)
bool MR::RibbonMenu::getAutoCloseBlockingPlugins () const
 returns flag defining if closing plugin on opening another one is enabled
void MR::RibbonMenu::setAutoCloseBlockingPlugins (bool value)
 sets flag defining if closing plugin on opening another one is enabled or not
const RibbonMenuUIConfigMR::RibbonMenu::getMenuUIConfig () const
 returns current menu ui configuration (find more in RibbonMenuUIConfig comments)
virtual void MR::RibbonMenu::setMenuUIConfig (const RibbonMenuUIConfig &newConfig)
bool MR::RibbonMenu::drawGroupUngroupButton (const std::vector< std::shared_ptr< Object > > &selected)
 ======== selected objects options drawing
bool MR::RibbonMenu::drawSelectSubtreeButton (const std::vector< std::shared_ptr< Object > > &selected)
bool MR::RibbonMenu::drawCloneButton (const std::vector< std::shared_ptr< Object > > &selected)
bool MR::RibbonMenu::drawCustomCheckBox (const std::vector< std::shared_ptr< Object > > &selected, SelectedTypesMask selectedMask)
bool MR::RibbonMenu::drawCloneSelectionButton (const std::vector< std::shared_ptr< Object > > &selected)
bool MR::RibbonMenu::drawMergeSubtreeButton (const std::vector< std::shared_ptr< Object > > &selected)
virtual void MR::RibbonMenu::drawBigButtonItem_ (const MenuItemInfo &item)
 draw single item
virtual void MR::RibbonMenu::drawSmallButtonsSet_ (const std::vector< std::string > &group, int setFrontIndex, int setLength, bool withText)
 draw set of small text buttons
virtual DrawTabConfig MR::RibbonMenu::setupItemsGroupConfig_ (const std::vector< std::string > &groupsInTab, const std::string &tabName, bool centerItems)
 draw group of items
virtual void MR::RibbonMenu::setupItemsGroup_ (const std::vector< std::string > &groupsInTab, const std::string &tabName, bool centerItems)
virtual void MR::RibbonMenu::drawItemsGroup_ (const std::string &tabName, const std::string &groupName, DrawGroupConfig config)
virtual bool MR::RibbonMenu::itemPressed_ (const std::shared_ptr< RibbonMenuItem > &item, const std::string &requiremetnsHint={})
virtual std::string MR::RibbonMenu::getRequirements_ (const std::shared_ptr< RibbonMenuItem > &item) const
 returns requirements line for given tool, empty line means that tool is available
virtual void MR::RibbonMenu::drawActiveBlockingDialog_ ()
virtual void MR::RibbonMenu::drawActiveNonBlockingDialogs_ ()
virtual void MR::RibbonMenu::postResize_ (int width, int height) override
 Scene events.
virtual void MR::RibbonMenu::postRescale_ (float x, float y) override
virtual void MR::RibbonMenu::drawItemDialog_ (DialogItemPtr &itemPtr)
virtual void MR::RibbonMenu::drawTopPanel_ (bool drawTabs=true, bool centerItems=false)
 Draw ribbon top panel.
virtual void MR::RibbonMenu::drawRibbonSceneList_ ()
 Draw scene list window with content.
virtual Vector2f MR::RibbonMenu::drawRibbonSceneResizeLine_ ()
virtual void MR::RibbonMenu::drawRibbonViewportsLabels_ ()
 Draw viewport id and projection type for all viewporrts.
virtual void MR::RibbonMenu::drawRibbonSceneInformation_ (const std::vector< std::shared_ptr< Object > > &selected)
virtual bool MR::RibbonMenu::drawCollapsingHeaderTransform_ () override
 override this to customize appearance of collapsing headers for transform block
virtual bool MR::RibbonMenu::drawTransformContextMenu_ (const std::shared_ptr< Object > &selected) override
virtual void MR::RibbonMenu::addRibbonItemShortcut_ (const std::string &itemName, const ShortcutKey &key, ShortcutCategory category)
virtual void MR::RibbonMenu::setupShortcuts_ () override
virtual void MR::RibbonMenu::drawShortcutsWindow_ () override
 A virtual function for drawing of the dialog with shortcuts. It can be overriden in the inherited classes.
virtual void MR::RibbonMenu::readMenuItemsStructure_ ()
 reads files with panel description
virtual bool MR::RibbonMenu::drawCollapsingHeader_ (const char *label, ImGuiTreeNodeFlags flags=0) override
 override this to have custom UI in "Selection Properties" window (under "Draw Options")
virtual void MR::RibbonMenu::highlightBlocking_ ()
virtual void MR::RibbonMenu::drawSceneListButtons_ ()
 draw scene list buttons
virtual void MR::RibbonMenu::fixViewportsSize_ (int w, int h)
 updates viewport sizes with respect to ribbon top and left panels
void MR::RibbonMenu::drawActiveList_ ()
 need to be called if you override windows pipeline and use ActiveListPlugin
virtual void MR::RibbonMenu::drawNotifications_ ()
 call this to draw RibbonNotifier with respect of scene size and ribbon top panel
virtual void MR::RibbonMenu::updateTopPanelSize_ (bool drawTabs)
 this function changes internal sizes of topPanel when it is enabled or disabled
virtual void MR::RibbonMenu::drawHeaderQuickAccess_ ()
 draw quick access bar at header level
virtual float MR::RibbonMenu::drawHeaderHelpers_ (float requiredTabSize)
virtual void MR::RibbonMenu::drawActiveListButton_ (float btnSize)
 helper list of active tools
virtual void MR::RibbonMenu::drawSearchButton_ ()
 header helper search bar at panel
virtual void MR::RibbonMenu::drawCollapseButton_ ()
 header helper button to pin/unpin ribbon
virtual void MR::RibbonMenu::drawHelpButton_ (const std::string &url)
 header helper button link to help page
void MR::pushNotification (const RibbonNotification &notification)
 Checks if RibbonMenu is available, if it is - forwards notification to RibbonNotifier. Otherwise - calls showModal() function.
 MR::RibbonMenuItem::MR_DELETE_MOVE (RibbonMenuItem)
 MR::RibbonMenuItem::RibbonMenuItem (std::string name)
virtual MR::RibbonMenuItem::~RibbonMenuItem ()=default
virtual bool MR::RibbonMenuItem::action ()=0
 returns true if state of item changed
virtual bool MR::RibbonMenuItem::isActive () const
 for state items returns true if activated
virtual bool MR::RibbonMenuItem::blocking () const
 true if this item is blocking (only one blocking item can be active at once)
const std::string & MR::RibbonMenuItem::name () const
virtual const std::string & MR::RibbonMenuItem::uiName () const
void MR::RibbonMenuItem::setRibbonItemType (RibbonItemType type)
virtual RibbonItemType MR::RibbonMenuItem::type () const
 type of this item, base RibbonMenuItem can be only button
void MR::RibbonMenuItem::setDropItemsFromItemList (const MenuItemsList &itemsList)
virtual const DropItemsListMR::RibbonMenuItem::dropItems () const
virtual std::string MR::RibbonMenuItem::getDynamicTooltip () const
 return not-empty string with tooltip that shall replace the static tooltip from json
const char * MR::RibbonMenuSearch::windowName () const
 returns search imgui popup window name
void MR::RibbonMenuSearch::pushRecentItem (const std::shared_ptr< RibbonMenuItem > &item)
 add item to recent items list
void MR::RibbonMenuSearch::drawMenuUI (const Parameters &params)
 draws search elements and window with its logic
void MR::RibbonMenuSearch::setSmallUI (bool on)
 set draw mode (true - small button, false - input string )
float MR::RibbonMenuSearch::getWidthMenuUI () const
float MR::RibbonMenuSearch::getSearchStringWidth () const
 get search string width (+ item spacing)
void MR::RibbonMenuSearch::activate ()
 activate search from outside (i.e. shortcut)
void MR::RibbonMenuSearch::setRequirementsFunc (const RequirementsFunction &requirementsFunc)
 set function to get a requirements line for some tool
bool MR::RibbonMenuUIConfig::operator== (const RibbonMenuUIConfig &) const =default
bool MR::RibbonNotification::operator== (const RibbonNotification &other) const
void MR::RibbonNotifier::pushNotification (const RibbonNotification &notification)
 adds new notification for drawing
void MR::RibbonNotifier::draw (const Box2i &limitFramebuffer)
void MR::RibbonNotifier::setHitoryButtonMaxLifeTime (float histBtnMaxLifeTime)
 MR::RibbonMenuItemAdder::RibbonMenuItemAdder (std::shared_ptr< RibbonMenuItem > item)
 calls RibbonSchemaHolder::addItem( item_ = item );
 MR::RibbonMenuItemAdder::~RibbonMenuItemAdder ()
 calls RibbonSchemaHolder::delItem( item_ );
template<typename... Args>
 MR::RibbonMenuItemAdderT< T >::RibbonMenuItemAdderT (Args &&... args)
virtual void MR::RibbonSceneObjectsListDrawer::draw (float height) override
void MR::RibbonSceneObjectsListDrawer::initRibbonMenu (RibbonMenu *ribbonMenu)
void MR::RibbonSceneObjectsListDrawer::setCloseContextOnChange (bool deselect)
 set closing scene context menu on any change
bool MR::RibbonSceneObjectsListDrawer::getCloseContextOnChange ()
 get flag closing scene context menu on any change
virtual void MR::RibbonSceneObjectsListDrawer::drawCustomObjectPrefixInScene_ (const Object &obj, bool opened) override
virtual void MR::RibbonSceneObjectsListDrawer::drawSceneContextMenu_ (const std::vector< std::shared_ptr< Object > > &selected, const std::string &uniqueStr) override
virtual bool MR::RibbonSceneObjectsListDrawer::collapsingHeader_ (const std::string &uniqueName, ImGuiTreeNodeFlags flags) override
 override this to customize CollapsingHeader draw
virtual std::string MR::RibbonSceneObjectsListDrawer::objectLineStrId_ (const Object &object, const std::string &uniqueStr) override
virtual bool MR::RibbonSceneObjectsListDrawer::drawObject_ (Object &object, const std::string &uniqueStr, int depth) override
 override this to customize whole object line
virtual bool MR::RibbonSceneObjectsListDrawer::drawSkippedObject_ (Object &object, const std::string &uniqueStr, int depth) override
 draw dummy container for skipped object
const std::string & MR::MenuItemInfo::getCaption () const
 needed for translation
virtual MR::RibbonSchemaLoadListener::~RibbonSchemaLoadListener ()=default
virtual void MR::RibbonSchemaLoadListener::onRibbonSchemaLoad_ ()=0
void MR::RibbonSchema::eliminateEmptyGroups ()
 deletes empty groups (and references on them from tabs)
void MR::RibbonSchema::sortTabsByPriority ()
 re-order items in tabsOrder according to their priority, the order of items having same priority is preserved
void MR::RibbonSchema::updateCaptions ()
 updates inner caption for all StateBasePlugins in schema
static RibbonSchemaMR::RibbonSchemaHolder::schema ()
static bool MR::RibbonSchemaHolder::addItem (const std::shared_ptr< RibbonMenuItem > &item)
static bool MR::RibbonSchemaHolder::delItem (const std::shared_ptr< RibbonMenuItem > &item)
static std::vector< SearchResultMR::RibbonSchemaHolder::search (const std::string &searchStr, const SearchParams &params)
 searches for tools with the most appropriate names (captions) or tooltips
static int MR::RibbonSchemaHolder::findItemTab (const std::shared_ptr< RibbonMenuItem > &item)
 returns item tab index in schema.tabsOrder or -1 if no tab found (e.g. scene fast access panel or header access panel)
 MR::RibbonSchemaLoader::RibbonSchemaLoader ()=default
virtual MR::RibbonSchemaLoader::~RibbonSchemaLoader ()=default
virtual void MR::RibbonSchemaLoader::loadSchema () const
 Loads schema from files.
static void MR::RibbonSchemaLoader::readMenuItemsList (const Json::Value &root, MenuItemsList &list)
 Reads schema items list from root to list
static void MR::RibbonSchemaLoader::recalcItemSizes ()
 Recalc items sizes.
virtual std::vector< std::filesystem::path > MR::RibbonSchemaLoader::getStructureFiles_ (const std::string &fileExtension) const
 finds structure json files in exe directory
void MR::RibbonSchemaLoader::sortFilesByOrder_ (std::vector< std::filesystem::path > &files) const
 sort structure json files by order
void MR::RibbonSchemaLoader::readItemsJson_ (const std::filesystem::path &path) const
 appends one menu items json info
void MR::RibbonSchemaLoader::readItemsJson_ (const Json::Value &root, const std::string &schemaName={}) const
void MR::RibbonSchemaLoader::readUIJson_ (const std::filesystem::path &path) const
 appends one ui json info
void MR::RibbonSchemaLoader::readUIJson_ (const Json::Value &root) const
template<typename F>
 MR::RibbonMenuItemCall< T >::RibbonMenuItemCall (F f, std::function< void(std::shared_ptr< T >)> g)
 MR::RibbonMenuItemCall< T >::~RibbonMenuItemCall ()
Expected< void > MR::saveObjectToFile (const Object &obj, const std::filesystem::path &filename, const SaveObjectSettings &settings={})
 save visual object (mesh, lines, points or voxels) to file
virtual void MR::SaveOnClosePlugin::init (Viewer *_viewer) override
 This function is called when the viewer is initialized (no mesh will be loaded at this stage)
virtual void MR::SaveOnClosePlugin::shutdown () override
 This function is called before shutdown.
static void MR::SceneCache::invalidateAll ()
template<typename ObjectType, ObjectSelectivityType SelectivityType>
static const ObjectList< ObjectType > & MR::SceneCache::getAllObjects ()
 MR::SceneCache::BasicVectorHolder::BasicVectorHolder ()=default
 MR::SceneCache::BasicVectorHolder::BasicVectorHolder (const BasicVectorHolder &)=default
 MR::SceneCache::BasicVectorHolder::BasicVectorHolder (BasicVectorHolder &&)=default
virtual MR::SceneCache::BasicVectorHolder::~BasicVectorHolder ()=default
 MR::UndoMenuItem::UndoMenuItem ()
virtual bool MR::UndoMenuItem::action () override
 returns true if state of item changed
virtual std::string MR::UndoMenuItem::isAvailable (const std::vector< std::shared_ptr< const Object > > &) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual std::string MR::UndoMenuItem::getDynamicTooltip () const override
 return not-empty string with tooltip that shall replace the static tooltip from json
 MR::RedoMenuItem::RedoMenuItem ()
virtual bool MR::RedoMenuItem::action () override
 returns true if state of item changed
virtual std::string MR::RedoMenuItem::isAvailable (const std::vector< std::shared_ptr< const Object > > &) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual std::string MR::RedoMenuItem::getDynamicTooltip () const override
 return not-empty string with tooltip that shall replace the static tooltip from json
virtual MR::SceneObjectsListDrawer::~SceneObjectsListDrawer ()=default
virtual void MR::SceneObjectsListDrawer::draw (float height)
void MR::SceneObjectsListDrawer::setShowNewSelectedObjects (bool show)
 set flag of the object visibility activation after selection
bool MR::SceneObjectsListDrawer::getShowNewSelectedObjects ()
 get flag of the object visibility activation after selection
void MR::SceneObjectsListDrawer::setDeselectNewHiddenObjects (bool deselect)
 set flag of deselect object after hidden
bool MR::SceneObjectsListDrawer::getDeselectNewHiddenObjects ()
 get flag of deselect object after hidden
void MR::SceneObjectsListDrawer::changeSelection (bool isDown, bool isShift)
void MR::SceneObjectsListDrawer::changeVisible (bool isDown)
void MR::SceneObjectsListDrawer::selectAllObjects ()
 select all selectable objects
void MR::SceneObjectsListDrawer::setLeavesVisibility (bool visible)
 set visible flag all selectable objects
void MR::SceneObjectsListDrawer::setObjectTreeState (const Object *obj, bool open)
 set object collapse state (hiding children)
void MR::SceneObjectsListDrawer::expandObjectTreeAndScroll (const Object *obj)
 expands all objs parents in tree and scroll scene tree window so selection becomes visible
void MR::SceneObjectsListDrawer::allowSceneReorder (bool allow)
 set possibility change object order
void MR::SceneObjectsListDrawer::setNextFrameFixScroll (int skipFrames=1)
 helper method for fix scroll position after change available height
virtual void MR::SceneObjectsListDrawer::drawCustomObjectPrefixInScene_ (const Object &, bool)
virtual void MR::SceneObjectsListDrawer::drawSceneContextMenu_ (const std::vector< std::shared_ptr< Object > > &, const std::string &)
virtual float MR::SceneObjectsListDrawer::drawCustomTreeObjectProperties_ (Object &obj, bool onlyCalcHeight)
virtual bool MR::SceneObjectsListDrawer::collapsingHeader_ (const std::string &uniqueName, ImGuiTreeNodeFlags flags)
 override this to customize CollapsingHeader draw
virtual std::string MR::SceneObjectsListDrawer::objectLineStrId_ (const Object &object, const std::string &uniqueStr)
virtual bool MR::SceneObjectsListDrawer::drawObject_ (Object &object, const std::string &uniqueStr, int depth)
 override this to customize whole object line
virtual bool MR::SceneObjectsListDrawer::drawSkippedObject_ (Object &object, const std::string &uniqueStr, int depth)
 draw dummy container for skipped object
bool MR::SceneObjectsListDrawer::drawObjectCollapsingHeader_ (Object &object, const std::string &uniqueStr, bool hasRealChildren)
 function that draws collapsing header and process click on it
void MR::SceneObjectsListDrawer::processItemClick_ (Object &object, const std::vector< std::shared_ptr< Object > > &selected)
 function that do click logic on object line (select/deselect/rename/open context)
void MR::SceneObjectsListDrawer::makeDragDropSource_ (const std::vector< std::shared_ptr< Object > > &payload)
 payload object will be moved
bool MR::SceneObjectsListDrawer::needDragDropTarget_ ()
 checking the need to draw a target
void MR::SceneObjectsListDrawer::makeDragDropTarget_ (Object &target, bool before, bool betweenLine, const std::string &uniqueStr)
void MR::SceneObjectsListDrawer::drawObjectVisibilityCheckbox_ (Object &object, const std::string &uniqueStr)
 draw visibility checkbox and call ImGui::SameLine at the end
static TypedFlatTree MR::TypedFlatTree::fromFlatTree (const FlatTree &tree)
std::vector< FlatTreeMR::getFlatSubtrees (const std::vector< std::shared_ptr< Object > > &objs)
void MR::mergeSubtree (TypedFlatTree subtree)
 merge objects of same type in the object tree
void MR::mergeSubtree (std::shared_ptr< Object > rootObj)
bool MR::sceneReorderWithUndo (const SceneReorder &task)
bool MR::moveAllChildrenWithUndo (Object &oldParent, Object &newParent, const std::string &historyName="Move Children")
virtual MR::ISceneSelectionChange::~ISceneSelectionChange ()=default
virtual void MR::ISceneSelectionChange::updateSelection (const std::vector< std::shared_ptr< const Object > > &)
virtual void MR::SceneSelectionChangeClose::updateSelection (const std::vector< std::shared_ptr< const Object > > &) override
virtual void MR::SceneSelectionChangeRestart::updateSelection (const std::vector< std::shared_ptr< const Object > > &) override
template<typename ObjectT>
std::string MR::getNObjectsLine (unsigned n)
template<typename ObjectT, bool visualRepresentationCheck, bool modelCheck>
std::string MR::sceneSelectedExactly (const std::vector< std::shared_ptr< const Object > > &objs, unsigned n)
template<typename ObjectT, bool visualRepresentationCheck, bool modelCheck>
std::string MR::sceneSelectedAtLeast (const std::vector< std::shared_ptr< const Object > > &objs, unsigned n)
virtual MR::SceneStateExactCheck< N, ObjectT, typename >::~SceneStateExactCheck ()=default
virtual std::string MR::SceneStateExactCheck< N, ObjectT, typename >::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual MR::SceneStateExactCheck< N, ObjectT, NoVisualRepresentationCheck >::~SceneStateExactCheck ()=default
virtual std::string MR::SceneStateExactCheck< N, ObjectT, NoVisualRepresentationCheck >::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual MR::SceneStateExactCheck< N, ObjectT, NoModelCheck >::~SceneStateExactCheck ()=default
virtual std::string MR::SceneStateExactCheck< N, ObjectT, NoModelCheck >::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual MR::SceneStateAtLeastCheck< N, ObjectT, typename >::~SceneStateAtLeastCheck ()=default
virtual std::string MR::SceneStateAtLeastCheck< N, ObjectT, typename >::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual MR::SceneStateAtLeastCheck< N, ObjectT, NoVisualRepresentationCheck >::~SceneStateAtLeastCheck ()=default
virtual std::string MR::SceneStateAtLeastCheck< N, ObjectT, NoVisualRepresentationCheck >::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual MR::SceneStateAtLeastCheck< N, ObjectT, NoModelCheck >::~SceneStateAtLeastCheck ()=default
virtual std::string MR::SceneStateAtLeastCheck< N, ObjectT, NoModelCheck >::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
 return empty string if all requirements are satisfied, otherwise return first unsatisfied requirement
virtual MR::SceneStateOrCheck< Checks >::~SceneStateOrCheck ()=default
virtual std::string MR::SceneStateOrCheck< Checks >::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
virtual MR::SceneStateAndCheck< Checks >::~SceneStateAndCheck ()=default
virtual std::string MR::SceneStateAndCheck< Checks >::isAvailable (const std::vector< std::shared_ptr< const Object > > &objs) const override
void MR::SceneTextureGL::bind (bool clear)
void MR::SceneTextureGL::unbind ()
 binds default framebuffer (and read/draw framebuffers)
void MR::SceneTextureGL::reset (const Vector2i &size, int msaaPow, bool depthTexture)
void MR::SceneTextureGL::copyTexture ()
 copy texture so draw() can render it
void MR::SceneTextureGL::draw ()
 renders texture
bool MR::SceneTextureGL::isBound () const
 return true if texture is bound
FramebufferDataMR::SceneTextureGL::getFramebuffer ()
float MR::SelectCurvaturePreference (PathPreference *pp)
BitSet MR::calculateSelectedPixelsInsidePolygon (const Contour2f &screenPoints)
BitSet MR::calculateSelectedPixelsNearPolygon (const Contour2f &screenPoints, float radiusPix)
FaceBitSet MR::findIncidentFaces (const Viewport &viewport, const BitSet &pixBs, const ObjectMesh &obj, bool onlyVisible=false, bool includeBackfaces=true, const std::vector< ObjectMesh * > *occludingMeshes=nullptr)
void MR::appendGPUVisibleFaces (const Viewport &viewport, const BitSet &pixBs, const std::vector< std::shared_ptr< ObjectMesh > > &objects, std::vector< FaceBitSet > &visibleFaces, bool includeBackfaces=true)
 these meshes can influence face visibility in onlyVisible=true mode
VertBitSet MR::findVertsInViewportArea (const Viewport &viewport, const BitSet &bsVec, const ObjectPoints &obj, bool includeBackfaces=true, bool onlyVisible=false)
 MR::ViewerSetup::ViewerSetup ()=default
 explicitly define ctors to avoid warning C5267: definition of implicit copy constructor is deprecated because it has a user-provided destructor
 MR::ViewerSetup::ViewerSetup (const ViewerSetup &)=default
 MR::ViewerSetup::ViewerSetup (ViewerSetup &&)=default
virtual MR::ViewerSetup::~ViewerSetup ()=default
virtual void MR::ViewerSetup::setupBasePlugins (Viewer *) const
 Setups Menu Save and Open plugins.
virtual void MR::ViewerSetup::setupCommonModifiers (Viewer *) const
 Setups modifiers to Menu plugin if it is present in viewer.
virtual void MR::ViewerSetup::setupCommonPlugins (Viewer *) const
 Setups custom plugins to viewer.
virtual void MR::ViewerSetup::setupSettingsManager (Viewer *viewer, const std::string &appName, bool reset=false) const
virtual void MR::ViewerSetup::setupConfiguration (Viewer *viewer) const
virtual void MR::ViewerSetup::setupExtendedLibraries () const
virtual void MR::ViewerSetup::unloadExtendedLibraries () const
 free all libraries loaded in setupExtendedLibraries()
std::string MR::getPickerFragmentShader (bool points, bool cornerMode=true)
std::string MR::getFragmentShaderClippingBlock ()
std::string MR::getFragmentShaderPointSizeBlock ()
std::string MR::getFragmentShaderOnlyOddBlock (bool sampleMask)
std::string MR::getFragmentShaderHeaderBlock (bool gl4, bool alphaSort)
std::string MR::getFragmentShaderEndBlock (ShaderTransparencyMode transparencyMode)
std::string MR::getShaderMainBeginBlock (bool addDepthPeelSamplers)
 MR::ShadowsGL::MR_ADD_CTOR_DELETE_MOVE (ShadowsGL)
 MR::ShadowsGL::~ShadowsGL ()
void MR::ShadowsGL::enable (bool on)
 subscribe to viewer events on enable, unsubscribe on disable
bool MR::ShadowsGL::isEnabled () const
const Vector2f & MR::ShadowsGL::getShadowShift () const
 shift in screen space
void MR::ShadowsGL::setShadowShift (const Vector2f &shift)
const Vector4f & MR::ShadowsGL::getShadowColor () const
void MR::ShadowsGL::setShadowColor (const Vector4f &color)
float MR::ShadowsGL::getBlurRadius () const
void MR::ShadowsGL::setBlurRadius (float radius)
float MR::ShadowsGL::getQuality () const
void MR::ShadowsGL::setQuality (float quality)
bool MR::ShortcutKey::operator< (const ShortcutKey &other) const
virtual MR::ShortcutManager::~ShortcutManager ()=default
virtual void MR::ShortcutManager::setShortcut (const ShortcutKey &key, const ShortcutCommand &command)
const ShortcutListMR::ShortcutManager::getShortcutList () const
bool MR::ShortcutManager::isEnabled () const
 processShortcut does nothing if not enabled
void MR::ShortcutManager::enable (bool on)
virtual bool MR::ShortcutManager::processShortcut (const ShortcutKey &key, Reason=Reason::KeyDown) const
 if given key has action in shortcut map - process it and returns true, otherwise returns false;
bool MR::ShortcutManager::onKeyDown_ (int key, int modifier) override
bool MR::ShortcutManager::onKeyRepeat_ (int key, int modifier) override
static const char * MR::ShortcutManager::getModifierString (int mod)
 make string from strictly one modifier
static std::string MR::ShortcutManager::getKeyString (int key)
 make string from a key without modifiers, for arrow characters it uses icons font
static std::string MR::ShortcutManager::getKeyFullString (const ShortcutKey &key, bool respectKey=true)
 make string from all modifiers and with/without key and returns it
std::optional< ShortcutKeyMR::ShortcutManager::findShortcutByName (const std::string &name) const
 if action with given name is present in shortcut list - returns it
void MR::ShortcutManager::clear ()
 clear all saved shortcuts
static int MR::ShortcutManager::mapKeyFromKeyAndMod (const ShortcutKey &key, bool respectKeyboard)
static ShortcutKey MR::ShortcutManager::kayAndModFromMapKey (int mapKey)
 returns key with modifier (alt, ctrl, shift, etc.) from simple map key
void MR::showModal (const std::string &error, NotificationType type)
 Check if menu is available and if it is, shows modal window.
void MR::showError (const std::string &error)
template<typename Iter>
bool MR::StopOnTrueCombiner::operator() (Iter first, Iter last) const
 MR::SplashWindow::SplashWindow (std::string name)
virtual MR::SplashWindow::~SplashWindow ()
 Thread should be stopped before destructor.
void MR::SplashWindow::start ()
void MR::SplashWindow::stop ()
 Closes splash window if it is still opened.
virtual float MR::SplashWindow::minimumTimeSec () const
 Returns minimum time in seconds, splash screen to be present.
 MR::DefaultSplashWindow::DefaultSplashWindow ()
 MR::StateBasePlugin::StateBasePlugin (std::string name, StatePluginTabs tab=StatePluginTabs::Other)
virtual MR::StateBasePlugin::~StateBasePlugin ()=default
virtual void MR::StateBasePlugin::drawDialog (ImGuiContext *ctx)
virtual bool MR::StateBasePlugin::action () override
 returns true if state of item changed
virtual bool MR::StateBasePlugin::isActive () const override
 for state items returns true if activated
virtual bool MR::StateBasePlugin::blocking () const override
 true if this item is blocking (only one blocking item can be active at once)
virtual void MR::StateBasePlugin::shutdown () override
 This function is called before shutdown.
bool MR::StateBasePlugin::isEnabled () const
virtual bool MR::StateBasePlugin::enable (bool on)
virtual bool MR::StateBasePlugin::dialogIsOpen () const
static const char * MR::StateBasePlugin::UINameSuffix ()
virtual const std::string & MR::StateBasePlugin::uiName () const override
void MR::StateBasePlugin::setUIName (std::string name)
 set plugin name that will be used for dialog in ImGuiBeginWindow_
StatePluginTabs MR::StateBasePlugin::getTab () const
static const char * MR::StateBasePlugin::getTabName (StatePluginTabs tab)
virtual std::string MR::StateBasePlugin::getTooltip () const
virtual std::string MR::StateBasePlugin::sortString () const
 returns special string for sorting plugins in menu (plugin name by default)
bool MR::StateBasePlugin::checkStringMask (const std::string &mask) const
 check if search mask satisfies for this plugin
virtual bool MR::StateBasePlugin::ImGuiBeginWindow_ (ImGui::CustomStatePluginWindowParameters params)
virtual bool MR::StateBasePlugin::onEnable_ ()
virtual bool MR::StateBasePlugin::onDisable_ ()
virtual MR::StateListenerPlugin< Connectables >::~StateListenerPlugin ()=default
virtual bool MR::StateListenerPlugin< Connectables >::enable (bool on) override final
virtual MR::IPluginUpdate::~IPluginUpdate ()=default
virtual void MR::IPluginUpdate::preDrawUpdate ()
 called each frame in before drawDialog
virtual void MR::IPluginUpdate::onPluginEnable_ ()
 called when plugin started
virtual void MR::IPluginUpdate::onPluginDisable_ ()
 called when plugin stops
virtual bool MR::IPluginUpdate::shouldClose_ () const
 called each frame, return true to close plugin
virtual void MR::PluginCloseOnSelectedObjectRemove::onPluginEnable_ () override
 called when plugin started
virtual void MR::PluginCloseOnSelectedObjectRemove::onPluginDisable_ () override
 called when plugin stops
virtual bool MR::PluginCloseOnSelectedObjectRemove::shouldClose_ () const override
 called each frame, return true to close plugin
virtual bool MR::PluginCloseOnChangeMesh::reactOnFaceSelectionChanges_ () const
 plugin can override it to make this helper class also react on face selections updates
virtual void MR::PluginCloseOnChangeMesh::onPluginEnable_ () override
 called when plugin started
virtual void MR::PluginCloseOnChangeMesh::onPluginDisable_ () override
 called when plugin stops
virtual bool MR::PluginCloseOnChangeMesh::shouldClose_ () const override
 called each frame, return true to close plugin
void MR::PluginUpdateOnChangeMeshPart::setUpdateFunc (UpdateFunc func)
 setup your update function that will be called if plugin is dirty in this frame
virtual void MR::PluginUpdateOnChangeMeshPart::preDrawUpdate () override
 called each frame in before drawDialog
virtual void MR::PluginUpdateOnChangeMeshPart::onPluginEnable_ () override
 sets dirty initially for first update, so no need to call UpdateFunc manually
virtual void MR::PluginUpdateOnChangeMeshPart::onPluginDisable_ () override
 clears connections and UpdateFunc
virtual void MR::PluginCloseOnChangePointCloud::onPluginEnable_ () override
 called when plugin started
virtual void MR::PluginCloseOnChangePointCloud::onPluginDisable_ () override
 called when plugin stops
virtual bool MR::PluginCloseOnChangePointCloud::shouldClose_ () const override
 called each frame, return true to close plugin
bool MR::PluginCloseOnEscPressed::shouldClose_ () const override
 called each frame, return true to close plugin
virtual void MR::PluginUpdateOr< Updates >::preDrawUpdate () override
virtual void MR::PluginUpdateOr< Updates >::onPluginEnable_ () override
virtual void MR::PluginUpdateOr< Updates >::onPluginDisable_ () override
virtual bool MR::PluginUpdateOr< Updates >::shouldClose_ () const override
 MR::SurfaceManipulationWidget::SurfaceManipulationWidget ()
virtual MR::SurfaceManipulationWidget::~SurfaceManipulationWidget ()
void MR::SurfaceManipulationWidget::init (const std::shared_ptr< ObjectMesh > &objectMesh)
 initialize widget according ObjectMesh
void MR::SurfaceManipulationWidget::reset ()
 reset widget state
void MR::SurfaceManipulationWidget::setFixedRegion (const FaceBitSet &region)
void MR::SurfaceManipulationWidget::setSettings (const Settings &settings)
 set widget settings (mesh change settings)
const SettingsMR::SurfaceManipulationWidget::getSettings ()
 get widget settings
float MR::SurfaceManipulationWidget::getMinRadius ()
 minimum radius of editing area.
PaletteMR::SurfaceManipulationWidget::palette ()
 get palette used for visualization point shifts
void MR::SurfaceManipulationWidget::updateTexture ()
 update texture used for colorize surface (use after change colorMap in palette)
void MR::SurfaceManipulationWidget::updateUVs ()
 update texture uv coords used for colorize surface (use after change ranges in palette)
void MR::SurfaceManipulationWidget::enableDeviationVisualization (bool enable)
 enable visualization of mesh deviations
void MR::SurfaceManipulationWidget::setDeviationCalculationMethod (DeviationCalculationMethod method)
 set method for calculating mesh changes
DeviationCalculationMethod MR::SurfaceManipulationWidget::deviationCalculationMethod () const
 get method for calculating mesh changes
bool MR::SurfaceManipulationWidget::sameOriginalMeshTopology () const
 returns true if the current object's mesh has the same topology as original input mesh (and vertices with same IDs can be compared)
Vector2f MR::SurfaceManipulationWidget::getMinMax ()
 get min / max point shifts for (useful for setup palette)
void MR::SurfaceManipulationWidget::setIgnoreOcclusion (bool ignore)
 allow the user to edit parts of object that are hidden in the current view by other objects
bool MR::SurfaceManipulationWidget::ignoreOcclusion () const
void MR::SurfaceManipulationWidget::setEditOnlyCodirectedSurface (bool edit)
 restricts editable area to vertices whose normals look into the same half-space as normal under cursor
bool MR::SurfaceManipulationWidget::isEditOnlyCodirectedSurface () const
 get state of an editable region restriction
bool MR::SurfaceManipulationWidget::onMouseDown_ (MouseButton button, int modifiers) override
 start modifying mesh surface
bool MR::SurfaceManipulationWidget::onMouseUp_ (MouseButton button, int modifiers) override
 stop modifying mesh surface, generate history action
bool MR::SurfaceManipulationWidget::onMouseMove_ (int mouse_x, int mouse_y) override
 update
void MR::SurfaceManipulationWidget::postDraw_ () override
 need to visualize bad region (draw grey circle)
virtual bool MR::SurfaceManipulationWidget::checkModifiers_ (int modifiers) const
virtual void MR::SurfaceManipulationWidget::appendMeshDataChangeHistory_ (ObjectMeshData &&newMeshData, const FaceBitSet &newFaces)
void MR::SurfaceManipulationWidget::reallocData_ (size_t size)
void MR::SurfaceManipulationWidget::clearData_ ()
void MR::SurfaceManipulationWidget::initConnections_ ()
void MR::SurfaceManipulationWidget::resetConnections_ ()
void MR::SurfaceManipulationWidget::changeSurface_ ()
void MR::SurfaceManipulationWidget::updateUVmap_ (bool set, bool wholeMesh=false)
void MR::SurfaceManipulationWidget::updateRegion_ (const Vector2f &mousePos)
void MR::SurfaceManipulationWidget::invalidateMetricsCache_ ()
void MR::SurfaceManipulationWidget::abortEdit_ ()
void MR::SurfaceManipulationWidget::initLaplacian_ (RememberShape rs)
 Laplacian.
void MR::SurfaceManipulationWidget::laplacianPickVert_ (const PointOnFace &pick)
 for singleEditingRegion_
void MR::SurfaceManipulationWidget::laplacianMoveVert_ (const Vector2f &mousePos)
void MR::SurfaceManipulationWidget::updateVizualizeSelection_ ()
void MR::SurfaceManipulationWidget::updateRegionUVs_ (const VertBitSet &region)
void MR::SurfaceManipulationWidget::updateValueChanges_ (const VertBitSet &region)
void MR::SurfaceManipulationWidget::updateValueChangesPointToPoint_ (const VertBitSet &region)
void MR::SurfaceManipulationWidget::updateValueChangesPointToPlane_ (const VertBitSet &region)
void MR::SurfaceManipulationWidget::updateValueChangesExactDistance_ (const VertBitSet &region)
void MR::SurfaceManipulationWidget::createLastStableObjMesh_ ()
void MR::SurfaceManipulationWidget::removeLastStableObjMesh_ ()
void MR::SurfaceManipulationWidget::compressChangePointsAction_ ()
void MR::SurfaceManipulationWidget::subdivideAfterAddRemove_ ()
void MR::SurfaceManipulationWidget::updateDistancesAndRegion_ (const Mesh &mesh, const std::vector< MeshTriPoint > &start, VertScalars &distances, VertBitSet &region, const VertBitSet *untouchable)
 MR::SurfacePointWidget::~SurfacePointWidget ()
const PickedPointMR::SurfacePointWidget::create (const std::shared_ptr< VisualObject > &surface, const PointOnObject &startPos)
const PickedPointMR::SurfacePointWidget::create (const std::shared_ptr< VisualObject > &surface, const PickedPoint &startPos)
void MR::SurfacePointWidget::reset ()
 resets whole widget
const std::shared_ptr< SphereObject > & MR::SurfacePointWidget::getPickSphere () const
 returns object of control sphere
const ParametersMR::SurfacePointWidget::getParameters () const
 get current setup of this widget
void MR::SurfacePointWidget::setParameters (const Parameters &params)
 set parameters for this widget
void MR::SurfacePointWidget::setBaseColor (const Color &color)
 set baseColor parameter for this widget
void MR::SurfacePointWidget::updateParameters (const std::function< void(Parameters &)> &visitor)
bool MR::SurfacePointWidget::getAutoHover () const
void MR::SurfacePointWidget::setAutoHover (bool on)
void MR::SurfacePointWidget::setHovered (bool on)
const PickedPointMR::SurfacePointWidget::getCurrentPosition () const
 returns stored position of this widget
Vector3f MR::SurfacePointWidget::getCoords () const
 return local object's coordinates at the current position where the center of sphere is located
Vector3f MR::SurfacePointWidget::toVector3f () const
std::optional< Vector3f > MR::SurfacePointWidget::findCoords () const
 return local object's coordinates at the current position, or std::nullopt if it is invalid
std::optional< Vector3f > MR::SurfacePointWidget::findNormal () const
 return the normal in local object's coordinates at the current position, or std::nullopt if it is invalid or normal is not defined
MeshTriPoint MR::SurfacePointWidget::getCurrentPositionMeshTriPoint () const
 returns stored position as MeshTriPoint, otherwise returns invalid (default) MeshTriPoint
void MR::SurfacePointWidget::setCurrentPosition (const PointOnObject &pos)
 sets new position for the widget
void MR::SurfacePointWidget::setCurrentPosition (const PickedPoint &pos)
 sets new position for the widget
void MR::SurfacePointWidget::swapCurrentPosition (PickedPoint &pos)
 sets new position for the widget and returns previous position in the argument
void MR::SurfacePointWidget::setCanMoveCallback (std::function< bool(SurfacePointWidget &, const PickedPoint &)> canMove)
 this callback is called before modification starts if it is set, and can cancel it by returning false
void MR::SurfacePointWidget::setStartMoveCallback (std::function< void(SurfacePointWidget &, const PickedPoint &)> startMove)
 this callback is called when modification starts if it is set
void MR::SurfacePointWidget::setOnMoveCallback (std::function< void(SurfacePointWidget &, const PickedPoint &)> onMove)
 this callback is called on modification if it is set
void MR::SurfacePointWidget::setEndMoveCallback (std::function< void(SurfacePointWidget &, const PickedPoint &)> endMove)
 this callback is called when modification ends if it is set
std::shared_ptr< VisualObject > & MR::SurfacePointWidget::getBaseSurface ()
bool MR::SurfacePointWidget::isOnMove () const
 returns whether is the widget moving
static bool MR::SurfacePointWidget::isPickIntoBackFace (const std::shared_ptr< MR::VisualObject > &obj, const MR::PointOnObject &pick, const Vector3f &cameraEye)
 Checks whether the current peak is a peak in the invisible (reverse) side of the mesh or cloud point.
bool MR::SurfacePointWidget::startDragging ()
 MR::SwapRootAction::SwapRootAction (const std::string &name)
 Constructed from original root.
virtual std::string MR::SwapRootAction::name () const override
virtual void MR::SwapRootAction::action (HistoryAction::Type) override
 This function is called on history action (undo, redo, etc.)
virtual size_t MR::SwapRootAction::heapBytes () const override
 returns the amount of memory this object occupies on heap
void MR::Toolbar::setRibbonMenu (RibbonMenu *ribbonMenu)
 set pointer on ribbon menu to access it
void MR::Toolbar::drawToolbar ()
float MR::Toolbar::getCurrentToolbarWidth () const
void MR::Toolbar::openCustomize ()
 enable toolbar customize window rendering
void MR::Toolbar::drawCustomize ()
void MR::Toolbar::readItemsList (const Json::Value &root)
 read toolbar items from json
void MR::Toolbar::resetItemsList ()
const MenuItemsListMR::Toolbar::getItemsList () const
 get access to items
int MR::Toolbar::getItemsListVersion () const
 get item list version
void MR::Toolbar::setItemsListVersion (int version)
 set item list version
void MR::Toolbar::setItemsListMigrations (const MenuItemsListMigrations &migrations)
 set item list's upgrade rules
void MR::Toolbar::setMaxItemCount (int maxItemCount)
int MR::Toolbar::getMaxItemCount () const
 MR::GcodeToolsLibrary::GcodeToolsLibrary (const std::string &libraryName)
bool MR::GcodeToolsLibrary::drawInterface ()
 draw interface for interacting with storage (based on UI::combo)
bool MR::GcodeToolsLibrary::drawCreateToolDialog ()
const std::shared_ptr< ObjectMesh > & MR::GcodeToolsLibrary::getToolObject ()
 get selected tool as ObjectMesh
const std::shared_ptr< EndMillTool > & MR::GcodeToolsLibrary::getEndMillTool () const
 get selected tool as EndMillTool (if available)
void MR::GcodeToolsLibrary::setAutoSize (float size)
 set object specific size for automatic resize default object
 MR::TouchesController::MR_ADD_CTOR_DELETE_MOVE (TouchesController)
void MR::TouchesController::setTrasformModifierCb (std::function< void(AffineXf3f &)> cb)
 set callback to modify view transform before it is applied to viewport
ModeBit MR::TouchesController::getModeMask () const
 mode mask can block some modes when two finger controll camera
void MR::TouchesController::setModeMask (ModeBit mask)
bool MR::TouchesController::MultiInfo::update (Info info, bool remove=false)
std::optional< Vector2f > MR::TouchesController::MultiInfo::getPosition (Finger fing) const
std::optional< Vector2f > MR::TouchesController::MultiInfo::getPosition (int id) const
std::optional< FingerMR::TouchesController::MultiInfo::getFingerById (int id) const
std::optional< int > MR::TouchesController::MultiInfo::getIdByFinger (Finger fing) const
int MR::TouchesController::MultiInfo::getNumPressed () const
 MR::TouchpadController::MR_ADD_CTOR_DELETE_MOVE (TouchpadController)
void MR::TouchpadController::initialize (GLFWwindow *window)
 initialize listening to touchpad events
void MR::TouchpadController::reset ()
 reset event handler
const TouchpadParametersMR::TouchpadController::getParameters () const
void MR::TouchpadController::setParameters (const TouchpadParameters &parameters)
virtual MR::TouchpadController::Handler::~Handler ()=default
void MR::TouchpadController::Handler::mouseScroll (float dx, float dy, bool kinetic)
void MR::TouchpadController::Handler::rotate (float angle, GestureState state)
 rotate gesture
void MR::TouchpadController::Handler::swipe (float dx, float dy, bool kinetic, GestureState state)
 swipe gesture; kinetic flag is set when the event is produced not by a user action but by hardware 'kinetic' scrolling
void MR::TouchpadController::Handler::zoom (float scale, bool kinetic, GestureState state)
 pitch ('zoom') gesture
void MR::UI::saveChangesPopup (const char *str_id, const SaveChangesPopupSettings &settings={})
float MR::UI::scale ()
 Returns the global UI scale. Use this instead of passing around the scale in parameters.
void MR::UI::detail::setScale (float newScale)
 Strictly for internal use. Updates the value that scale() returns.
bool MR::UI::isItemActive (const char *name)
 Checks if the item with this name in the current window is active.
bool MR::UI::StateStorage::readBool (std::string_view key, bool defaultValue=false)
void MR::UI::StateStorage::writeBool (std::string_view key, bool value)
std::unique_ptr< ImGuiImage > & MR::UI::getTexture (TextureType type)
 get texture by type
void MR::UI::init ()
 init internal parameters
ImGuiKey MR::UI::getImGuiModPrimaryCtrl ()
 returns imgui modifier Id based on current environment
const char * MR::UI::getImGuiPrimaryCtrlName ()
 returns "Ctrl" by default or "Command" if ImGui has changed it internally for macos
bool MR::UI::checkKey (ImGuiKey passedKey)
 returns true if button is pressed in this frame, preserve its further processing in viewer keyboard events system if taken here
bool MR::UI::buttonEx (const char *label, bool active, const Vector2f &size=Vector2f(0, 0), ImGuiButtonFlags flags=ImGuiButtonFlags_None, const ButtonCustomizationParams &customParams={})
 draw gradient button, which can be disabled (active = false)
bool MR::UI::buttonEx (const char *label, const Vector2f &size=Vector2f(0, 0), const ButtonCustomizationParams &customParams={})
 draw gradient button, which can be customized
bool MR::UI::button (const char *label, bool active, const Vector2f &size=Vector2f(0, 0), ImGuiKey key=ImGuiKey_None)
bool MR::UI::button (const char *label, const Vector2f &size=Vector2f(0, 0), ImGuiKey key=ImGuiKey_None)
bool MR::UI::buttonCommonSize (const char *label, const Vector2f &size=Vector2f(0, 0), ImGuiKey key=ImGuiKey_None)
bool MR::UI::buttonUnique (const char *label, int *value, int ownValue, const Vector2f &size=Vector2f(0, 0), ImGuiKey key=ImGuiKey_None)
 draw button with same logic as radioButton
void MR::UI::drawPoltHorizontalAxis (const PlotAxis &plotAxis)
 draw dash with text along the horizontal axis
void MR::UI::drawPoltVerticalAxis (const PlotAxis &plotAxis)
 draw dash with text along the vertical axis
bool MR::UI::buttonIconEx (const std::string &name, const Vector2f &iconSize, const std::string &text, const ImVec2 &buttonSize, const ButtonIconCustomizationParams &params={})
 draw a button with an icon and text under it
bool MR::UI::buttonIcon (const std::string &name, const Vector2f &iconSize, const std::string &text, const ImVec2 &buttonSize)
 button with a gradient, always active
bool MR::UI::buttonIconFlatBG (const std::string &name, const Vector2f &iconSize, const std::string &text, const ImVec2 &buttonSize, bool textUnderIcon=true, ImGuiKey key=ImGuiKey_None)
 button without a gradient, always active, configurable by an external style
bool MR::UI::buttonUniqueIcon (const std::string &iconName, const Vector2f &iconSize, const std::string &text, const ImVec2 &buttonSize, int *value, int ownValue, bool textUnderIcon=true, ImGuiKey key=ImGuiKey_None)
bool MR::UI::toggle (const char *label, bool *value)
 draws checkbox-like toggle (enabled/disabled states)(O=)/(=O)
bool MR::UI::checkbox (const char *label, bool *value)
 draw gradient checkbox
bool MR::UI::checkboxOrFixedValue (const char *label, bool *value, std::optional< bool > valueOverride)
 If valueOverride is specified, then the checkbox is disabled and that value is displayed instead of value.
bool MR::UI::checkboxValid (const char *label, bool *value, bool valid)
 If valid is false checkbox is disabled. Same as checkboxOrFixedValue( ..., valid ? nullopt : false ).
bool MR::UI::checkboxMixed (const char *label, bool *value, bool mixed)
 draw gradient checkbox with mixed state
template<typename Getter, typename Setter>
bool MR::UI::checkbox (const char *label, Getter get, Setter set)
 draw gradient checkbox
template<typename Getter, typename Setter>
bool MR::UI::checkboxValid (const char *label, Getter get, Setter set, bool valid)
template<typename T>
bool MR::UI::checkboxFlags (const char *label, T &target, T flags)
 Draw a checkbox toggling one or more bits in the mask.
 MR::UI::CheckboxOrModifierState::CheckboxOrModifierState ()
 MR::UI::CheckboxOrModifierState::CheckboxOrModifierState (bool baseValue)
 MR::UI::CheckboxOrModifierState::operator bool () const
bool MR::UI::checkboxOrModifier (const char *label, CheckboxOrModifierState &value, int modifiers, int respectedModifiers=-1, std::optional< bool > valueOverride={})
bool MR::UI::radioButton (const char *label, int *value, int valButton)
 draw gradient radio button
bool MR::UI::radioButtonOrFixedValue (const char *label, int *value, int valButton, std::optional< int > valueOverride)
 If valueOverride is specified, then the radio button is disabled and that value is displayed instead of value.
 MR::UI::RadioButtonOrModifierState::operator int () const
 The effective value, affected by modifiers.
bool MR::UI::radioButtonOrModifier (const char *label, RadioButtonOrModifierState &value, int valButton, int modifiers, int respectedModifiers=-1, std::optional< int > valueOverride={})
bool MR::UI::colorEdit4 (const char *label, Vector4f &color, ImGuiColorEditFlags flags=ImGuiColorEditFlags_None)
 draw gradient color edit 4
bool MR::UI::colorEdit4 (const char *label, Color &color, ImGuiColorEditFlags flags=ImGuiColorEditFlags_None)
bool MR::UI::combo (const char *label, int *v, const std::vector< std::string > &options, bool showPreview=true, const std::vector< std::string > &tooltips={}, const std::string &defaultText="Not selected")
 draw combo box
bool MR::UI::beginCombo (const char *label, const std::string &text, bool enableTestEngine=true)
void MR::UI::endCombo ()
 Only call this if beginCombo() returned true!
bool MR::UI::comboElem (const char *label, bool selected)
 A replacement for ImGui::Selectable() that should be used with beginCombo() and endCombo() to be able to interact with the combo-box from the UI Test Engine.
bool MR::UI::inputText (const char *label, std::string &str, ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
 Draws text input, should be used instead of ImGui::InputText().
bool MR::UI::inputTextIntoArray (const char *label, char *array, std::size_t size, ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
 This overload is for arrays, as opposed to std::strings.
bool MR::UI::inputTextMultiline (const char *label, std::string &str, const ImVec2 &size=ImVec2(), ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
 Draws multiline text input, should be used instead of ImGui::InputTextMultiline().
bool MR::UI::inputTextIntoArrayMultiline (const char *label, char *buf, size_t buf_size, const ImVec2 &size=ImVec2(), ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
 This overload is for arrays, as opposed to std::strings.
bool MR::UI::inputTextMultilineFullyScrollable (CachedTextSize &cache, const char *label, std::string &str, const ImVec2 &size=ImVec2(), ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
 This version adds a horizontal scrollbar. Also it never draws the label, and uses full window width by default (so you can pass 0 as width).
bool MR::UI::inputTextIntoArrayMultilineFullyScrollable (CachedTextSize &cache, const char *label, char *buf, size_t buf_size, const ImVec2 &size=ImVec2(), ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
bool MR::UI::inputTextCentered (const char *label, std::string &str, float width=0.0f, ImGuiInputTextFlags flags=0, ImGuiInputTextCallback callback=nullptr, void *user_data=nullptr)
 draw input text box with text aligned by center
void MR::UI::inputTextCenteredReadOnly (const char *label, const std::string &str, float width=0.0f, const std::optional< ImVec4 > &textColor={}, const std::optional< ImVec4 > &labelColor={})
 draw read-only text box with text aligned by center
bool MR::UI::detail::genericSlider (const char *label, ImGuiDataType data_type, void *p_data, const void *p_min, const void *p_max, const char *format, ImGuiSliderFlags flags)
 A type-erased slider.
template<UnitEnum E, VectorOrScalar T, typename F>
bool MR::UI::detail::unitWidget (const char *label, T &v, UnitToStringParams< E > &unitParams, F &&func)
template<UnitEnum E, detail::VectorOrScalar T>
requires ( VectorTraits<T>::size == 1 )
float MR::UI::getDefaultDragSpeed ()
 Default drag speed for UI::drag().
template<UnitEnum E, detail::VectorOrScalar T, detail::VectorOrScalar TargetType>
MR::UI::getDefaultStep (bool fast)
 Default step speed for UI::input().
template<UnitEnum E, detail::VectorOrScalar T, detail::ValidBoundForTargetType< T > U = typename VectorTraits<T>::BaseType>
bool MR::UI::slider (const char *label, T &v, const U &vMin, const U &vMax, UnitToStringParams< E > unitParams={}, ImGuiSliderFlags flags=defaultSliderFlags)
template<UnitEnum E, detail::VectorOrScalar T, detail::ValidDragSpeedForTargetType< T > SpeedType = float, detail::ValidBoundForTargetType< T > U = typename VectorTraits<T>::BaseType>
bool MR::UI::drag (const char *label, T &v, SpeedType vSpeed=getDefaultDragSpeed< E, SpeedType >(), const U &vMin=std::numeric_limits< U >::lowest(), const U &vMax=std::numeric_limits< U >::max(), UnitToStringParams< E > unitParams={}, ImGuiSliderFlags flags=defaultSliderFlags, const U &step=getDefaultStep< E, U, T >(false), const U &stepFast=getDefaultStep< E, U, T >(true))
template<UnitEnum E, detail::VectorOrScalar T, detail::ValidBoundForTargetType< T > U = typename VectorTraits<T>::BaseType>
bool MR::UI::input (const char *label, T &v, const U &vMin=std::numeric_limits< U >::lowest(), const U &vMax=std::numeric_limits< U >::max(), UnitToStringParams< E > unitParams={}, ImGuiSliderFlags flags=defaultSliderFlags)
 Like drag(), but clicking it immediately activates text input, so it's not actually draggable.
template<UnitEnum E, detail::VectorOrScalar T>
void MR::UI::readOnlyValue (const char *label, const T &v, std::optional< ImVec4 > textColor={}, UnitToStringParams< E > unitParams={}, std::optional< ImVec4 > labelColor={})
template<UnitEnum E, detail::Scalar T, typename F>
bool MR::UI::plusMinusGeneric (const char *label, T &plus, T &minus, UnitToStringParams< E > unitToStringParams, F &&func)
template<UnitEnum E, detail::Scalar T, detail::ValidDragSpeedForTargetType< T > SpeedType = float, typename F = std::nullptr_t>
bool MR::UI::dragPlusMinus (const char *label, T &plus, T &minus, SpeedType speed=getDefaultDragSpeed< E, SpeedType >(), T plusMin=T{}, T plusMax=std::numeric_limits< T >::max(), UnitToStringParams< E > unitParams={}, ImGuiSliderFlags flags=defaultSliderFlags, F &&wrapFunc=nullptr)
template<UnitEnum E, detail::Scalar T, typename F = std::nullptr_t>
bool MR::UI::inputPlusMinus (const char *label, T &plus, T &minus, T plusMin=T{}, T plusMax=std::numeric_limits< T >::max(), UnitToStringParams< E > unitParams={}, ImGuiSliderFlags flags=defaultSliderFlags, F &&wrapFunc=nullptr)
const std::pair< const char *, ImU32 > & MR::UI::notificationChar (NotificationType type)
 returns icons font character for given notification type, and its color
void MR::UI::mouseControlHint (ImGuiMouseButton btn, const std::string &hint)
 draws hint with corresponding mouse btn icon
void MR::UI::transparentText (const char *fmt,...)
 similar to ImGui::Text but use current text color with alpha channel = 0.5
void MR::UI::transparentTextWrapped (const char *fmt,...)
 similar to ImGui::TextWrapped but use current text color with alpha channel = 0.5
void MR::UI::notificationFrame (NotificationType type, const std::string &str)
 similar to ImGui::TextWrapped but also have styled background and notification type indicator
void MR::UI::setTooltipIfHovered (const std::string &text)
 draw tooltip only if current item is hovered
void MR::UI::separator (const SeparatorParams &params)
 separator line with customizations
void MR::UI::separator (const std::string &text="", int issueCount=-1)
void MR::UI::separator (const std::string &text, const ImVec4 &color, const std::string &issueCount)
void MR::UI::separator (const ImGuiImage &icon, const std::string &text, const Vector2f &iconSize={ 24.f, 24.f })
void MR::UI::separator (const std::string &iconName, const std::string &text, const Vector2f &iconSize={ 24.f, 24.f })
void MR::UI::progressBar (float fraction, const Vector2f &size=Vector2f(-1, 0))
bool MR::UI::beginTabBar (const char *str_id, ImGuiTabBarFlags flags=0)
 create and append items into a TabBar: see corresponding ImGui:: functions
void MR::UI::endTabBar ()
bool MR::UI::beginTabItem (const char *label, bool *p_open=NULL, ImGuiTabItemFlags flags=0)
void MR::UI::endTabItem ()
void MR::UI::alignTextToFramePadding (float padding)
void MR::UI::alignTextToControl (float controlHeight)
void MR::UI::alignTextToRadioButton ()
 Specialization of alignTextToFramePadding for UI::radioButton.
void MR::UI::alignTextToCheckBox ()
 Specialization of alignTextToFramePadding for UI::checkbox.
void MR::UI::alignTextToButton ()
 Specialization of alignTextToFramePadding for UI::button with default height.
void MR::UI::highlightWindowArea (const ImVec2 &min={-1.0f, -1.0f}, const ImVec2 &max={ -1.0f, -1.0f })
std::string MR::UI::CustomConfigModalSettings::popupName () const
 returns accumulated name of the popup
void MR::UI::saveCustomConfigModal (const CustomConfigModalSettings &settings)
 Draw modal window to save user configs (for example Palettes)
 MR::UI::Disabler::Disabler (ImDrawList &list, ImDrawFlags mask)
 MR::UI::Disabler::Disabler (const Disabler &)=delete
DisablerMR::UI::Disabler::operator= (const Disabler &)=delete
 MR::UI::Disabler::~Disabler ()
 MR::UI::LineAntialiasingDisabler::LineAntialiasingDisabler (ImDrawList &list)
template<UnitEnum E>
const UnitToStringParams< E > & MR::getDefaultUnitParams ()
template<UnitEnum E>
void MR::setDefaultUnitParams (const UnitToStringParams< E > &newParams)
 Modifies the default parameters for converting a specific unit type to a string.
std::string_view MR::toString (DegreesMode mode)
template<UnitEnum E, detail::Units::Scalar T>
std::string MR::valueToString (T value, const UnitToStringParams< E > &params=getDefaultUnitParams< E >())
template<detail::Units::Scalar T>
std::string MR::valueToString (T value, const VarUnitToStringParams &params)
 This overload lets you select the unit kind at runtime.
template<detail::Units::Scalar T>
int MR::guessPrecision (T value)
 Same but for vectors.
template<detail::Units::Scalar T>
int MR::guessPrecision (T min, T max)
template<UnitEnum E, detail::Units::Scalar T>
std::string MR::valueToImGuiFormatString (T value, const UnitToStringParams< E > &params=getDefaultUnitParams< E >())
template<detail::Units::Scalar T>
std::string MR::valueToImGuiFormatString (T value, const VarUnitToStringParams &params)
 This overload lets you select the unit kind at runtime.
template<typename U>
static auto && MR::VectorTraits< ImVec2 >::getElem (int i, U &&value)
template<typename U = ImVec2>
static constexpr U MR::VectorTraits< ImVec2 >::diagonal (float v)
 Adding a template parameter to avoid including the whole imgui.h.
template<typename U>
static auto && MR::VectorTraits< ImVec4 >::getElem (int i, U &&value)
template<typename U = ImVec4>
static constexpr U MR::VectorTraits< ImVec4 >::diagonal (float v)
 Adding a template parameter to avoid including the whole imgui.h.
static void MR::Viewer::parseLaunchParams (LaunchParams &params)
 Accumulate launch params from cmd args.
int MR::Viewer::launch (const LaunchParams &params)
 Launch viewer with given params.
void MR::Viewer::launchEventLoop ()
 Starts event loop.
void MR::Viewer::launchShut ()
 Terminate window.
bool MR::Viewer::isLaunched () const
const LaunchParamsMR::Viewer::getLaunchParams () const
 get full parameters with witch viewer was launched
static ViewerMR::Viewer::instance ()
 provides non const access to viewer
static ViewerMR::Viewer::instanceRef ()
static const ViewerMR::Viewer::constInstance ()
 provide const access to viewer
static const ViewerMR::Viewer::constInstanceRef ()
template<typename PluginType>
PluginType * MR::Viewer::getPluginInstance ()
bool MR::Viewer::isSupportedFormat (const std::filesystem::path &file_name)
bool MR::Viewer::loadFiles (const std::vector< std::filesystem::path > &filesList, const FileLoadOptions &options)
bool MR::Viewer::loadFiles (const std::vector< std::filesystem::path > &filesList)
bool MR::Viewer::saveToFile (const std::filesystem::path &mesh_file_name)
 Save first selected objects to file.
bool MR::Viewer::keyPressed (unsigned int unicode_key, int modifier)
 Callbacks.
bool MR::Viewer::keyDown (int key, int modifier)
bool MR::Viewer::keyUp (int key, int modifier)
bool MR::Viewer::keyRepeat (int key, int modifier)
bool MR::Viewer::mouseDown (MouseButton button, int modifier)
bool MR::Viewer::mouseUp (MouseButton button, int modifier)
bool MR::Viewer::mouseMove (int mouse_x, int mouse_y)
bool MR::Viewer::mouseScroll (float delta_y)
bool MR::Viewer::mouseClick (MouseButton button, int modifier)
bool MR::Viewer::dragStart (MouseButton button, int modifier)
bool MR::Viewer::dragEnd (MouseButton button, int modifier)
bool MR::Viewer::drag (int mouse_x, int mouse_y)
bool MR::Viewer::spaceMouseMove (const Vector3f &translate, const Vector3f &rotate)
bool MR::Viewer::spaceMouseDown (int key)
bool MR::Viewer::spaceMouseUp (int key)
bool MR::Viewer::spaceMouseRepeat (int key)
bool MR::Viewer::dragDrop (const std::vector< std::filesystem::path > &paths)
bool MR::Viewer::touchStart (int id, int x, int y)
 Touch callbacks (now used in EMSCRIPTEN build only)
bool MR::Viewer::touchMove (int id, int x, int y)
bool MR::Viewer::touchEnd (int id, int x, int y)
bool MR::Viewer::touchpadRotateGestureBegin ()
 Touchpad gesture callbacks.
bool MR::Viewer::touchpadRotateGestureUpdate (float angle)
bool MR::Viewer::touchpadRotateGestureEnd ()
bool MR::Viewer::touchpadSwipeGestureBegin ()
bool MR::Viewer::touchpadSwipeGestureUpdate (float dx, float dy, bool kinetic)
bool MR::Viewer::touchpadSwipeGestureEnd ()
bool MR::Viewer::touchpadZoomGestureBegin ()
bool MR::Viewer::touchpadZoomGestureUpdate (float scale, bool kinetic)
bool MR::Viewer::touchpadZoomGestureEnd ()
bool MR::Viewer::interruptWindowClose ()
 This function is called when window should close, if return value is true, window will stay open.
void MR::Viewer::draw (bool force=false)
 Draw everything.
void MR::Viewer::drawFull (bool dirtyScene)
 Draw 3d scene with UI.
void MR::Viewer::drawScene (FramebufferData *framebuffer)
void MR::Viewer::setSceneDirty ()
 Call this function to force redraw scene into scene texture.
void MR::Viewer::setupScene ()
 Setup viewports views.
void MR::Viewer::clearFramebuffers ()
 Cleans framebuffers for all viewports (sets its background)
void MR::Viewer::resize (int w, int h)
 OpenGL context resize.
void MR::Viewer::postResize (int w, int h)
 explicitly set framebuffer size
void MR::Viewer::postSetPosition (int xPos, int yPos)
 external resize due to user interaction
void MR::Viewer::postSetMaximized (bool maximized)
 external set position due to user interaction
void MR::Viewer::postSetIconified (bool iconified)
 external set maximized due to user interaction
void MR::Viewer::postFocus (bool focused)
 external set iconified due to user interaction
void MR::Viewer::postRescale (float x, float y)
 external focus handler due to user interaction
void MR::Viewer::postClose ()
 external rescale due to user interaction
void MR::Viewer::set_root (SceneRootObject &newRoot)
 called when close signal received
void MR::Viewer::clearScene ()
 removes all objects from scene
ViewportMR::Viewer::viewport (ViewportId viewportId={})
 Multi-viewport methods ///.
const ViewportMR::Viewer::viewport (ViewportId viewportId={}) const
ViewportId MR::Viewer::append_viewport (const ViewportRectangle &viewportRect, bool append_empty=false)
Box2f MR::Viewer::getViewportsBounds () const
bool MR::Viewer::erase_viewport (const size_t index)
bool MR::Viewer::erase_viewport (ViewportId viewport_id)
int MR::Viewer::viewport_index (ViewportId viewport_id) const
ViewportId MR::Viewer::getHoveredViewportId () const
ViewportId MR::Viewer::getHoveredViewportIdOrInvalid () const
 Same, but returns an invalid ID if no viewport is hovered, instead of returning the last selected viewport.
void MR::Viewer::select_hovered_viewport ()
 Change selected_core_index to the viewport containing the mouse.
void MR::Viewer::fitDataViewport (MR::ViewportMask vpList=MR::ViewportMask::all(), float fill=0.6f, bool snapView=true)
void MR::Viewer::fitBoxViewport (const Box3f &box, MR::ViewportMask vpList=MR::ViewportMask::all(), float fill=0.6f, bool snapView=true)
void MR::Viewer::preciseFitDataViewport (MR::ViewportMask vpList=MR::ViewportMask::all())
void MR::Viewer::preciseFitDataViewport (MR::ViewportMask vpList, const FitDataParams &param)
size_t MR::Viewer::getTotalFrames () const
size_t MR::Viewer::getSwappedFrames () const
size_t MR::Viewer::getFPS () const
double MR::Viewer::getPrevFrameDrawTimeMillisec () const
size_t MR::Viewer::getStaticGLBufferSize () const
 Returns memory amount used by shared GL memory buffer.
void MR::Viewer::incrementForceRedrawFrames (int i=1, bool swapOnLastOnly=false)
void MR::Viewer::forceSwapOnFrame (int i=0)
 Forces redraw no later than the specified number of frames.
bool MR::Viewer::isCurrentFrameSwapping () const
 Returns true if current frame will be shown on display.
size_t MR::Viewer::getEventsCount (EventType type) const
 Returns number of events of given type.
size_t MR::Viewer::getLastFrameGLPrimitivesCount (GLPrimitivesType type) const
 Returns number of events of given type.
void MR::Viewer::incrementThisFrameGLPrimitivesCount (GLPrimitivesType type, size_t num)
 Increment number of gl primitives drawed in this frame.
ViewportMask MR::Viewer::getPresentViewports () const
 Returns mask of present viewports.
void MR::Viewer::resetAllCounters ()
 Restes frames counter and events counter.
Image MR::Viewer::captureSceneScreenShot (const Vector2i &resolution=Vector2i(), bool transparentBg=false)
void MR::Viewer::captureUIScreenShot (std::function< void(const Image &)> callback, const Vector2i &pos=Vector2i(), const Vector2i &size=Vector2i())
bool MR::Viewer::isAlphaSortAvailable () const
 Returns true if can enable alpha sort.
bool MR::Viewer::enableAlphaSort (bool on)
bool MR::Viewer::isAlphaSortEnabled () const
 Returns true if alpha sort is enabled, false otherwise.
int MR::Viewer::getDepthPeelNumPasses () const
 Returns number of passes performed by depth peeler.
void MR::Viewer::setDepthPeelNumPasses (int numPasses)
 Sets desired number of passes to depth peeler.
bool MR::Viewer::isDepthPeelingEnabled () const
 Returns true if depth peeling is enabled, false otherwise.
bool MR::Viewer::isSceneTextureBound () const
 Returns if scene texture is now bound.
void MR::Viewer::bindSceneTexture (bool bind)
bool MR::Viewer::isSceneTextureEnabled () const
 Returns true if 3d scene is rendering in scene texture instead of main framebuffer.
int MR::Viewer::getMSAA () const
void MR::Viewer::requestChangeMSAA (int newMSAA)
int MR::Viewer::getRequestedMSAA () const
 Returns MSAA level that have been requested (might be different from actual MSAA using, because of GPU limitations or need to restart app)
void MR::Viewer::setViewportSettingsManager (std::unique_ptr< IViewerSettingsManager > mng)
const std::unique_ptr< IViewerSettingsManager > & MR::Viewer::getViewerSettingsManager () const
PointInAllSpaces MR::Viewer::getPixelPointInfo (const Vector3f &screenPoint) const
 Finds point in all spaces from screen space pixel point.
PointInAllSpaces MR::Viewer::getMousePointInfo () const
 Finds point under mouse in all spaces and under mouse viewport id.
Vector3f MR::Viewer::screenToViewport (const Vector3f &screenPoint, ViewportId id) const
Vector3f MR::Viewer::viewportToScreen (const Vector3f &viewportPoint, ViewportId id) const
std::vector< std::reference_wrapper< Viewport > > MR::Viewer::getViewports (ViewportMask mask=ViewportMask::any())
 Returns viewports satisfying given mask.
void MR::Viewer::enableGlobalHistory (bool on)
 Enables or disables global history (clears it on disable)
bool MR::Viewer::isGlobalHistoryEnabled () const
 Return true if global history is enabled, false otherwise.
void MR::Viewer::appendHistoryAction (const std::shared_ptr< HistoryAction > &action)
bool MR::Viewer::globalHistoryUndo ()
bool MR::Viewer::globalHistoryRedo ()
HistoryStoreMR::Viewer::getGlobalHistoryStore () const
const std::shared_ptr< SpaceMouse::Handler > & MR::Viewer::getSpaceMouseHandler () const
 Return spacemouse handler.
void MR::Viewer::onSceneSaved (const std::filesystem::path &savePath, bool storeInRecent=true)
 This method is called after successful scene saving to update scene root, window title and undo.
const std::shared_ptr< ImGuiMenu > & MR::Viewer::getMenuPlugin () const
 Get/Set menu plugin (which is separated from other plugins to be inited first before splash window starts)
void MR::Viewer::setMenuPlugin (std::shared_ptr< ImGuiMenu > menu)
std::shared_ptr< RibbonMenuMR::Viewer::getRibbonMenu () const
 get menu plugin casted in RibbonMenu
template<typename T>
std::shared_ptr< T > MR::Viewer::getMenuPluginAs () const
 Get the menu plugin casted in given type.
void MR::Viewer::stopEventLoop ()
 sets stop event loop flag (this flag is glfwShouldWindowClose equivalent)
bool MR::Viewer::getStopEventLoopFlag () const
 get stop event loop flag (this flag is glfwShouldWindowClose equivalent)
bool MR::Viewer::windowShouldClose ()
bool MR::Viewer::isGLInitialized () const
void MR::Viewer::makeTitleFromSceneRootPath ()
 update the title of the main window and, if any scene was opened, show its filename
bool MR::Viewer::hasScaledFramebuffer () const
 returns true if the system framebuffer is scaled (valid for macOS and Wayland)
ViewerSignalsMR::Viewer::signals ()
 return the structure with all viewer's signals
void MR::Viewer::emplaceEvent (std::string name, ViewerEventCallback cb, bool skipable=false)
void MR::Viewer::popEventByName (const std::string &name)
 pop all events from the queue while they have this name
void MR::Viewer::postEmptyEvent ()
const TouchpadControllerMR::Viewer::touchpadController () const
TouchpadControllerMR::Viewer::touchpadController ()
const SpaceMouse::ControllerMR::Viewer::spaceMouseController () const
SpaceMouse::ControllerMR::Viewer::spaceMouseController ()
const MouseControllerMR::Viewer::mouseController () const
MouseControllerMR::Viewer::mouseController ()
const RecentFilesStoreMR::Viewer::recentFilesStore () const
 Store of recently opened files.
RecentFilesStoreMR::Viewer::recentFilesStore ()
bool MR::Viewer::getSortDroppedFiles () const
 returns whether to sort the filenames received from Drag&Drop in lexicographical order before adding them in scene
void MR::Viewer::setSortDroppedFiles (bool value)
 sets whether to sort the filenames received from Drag&Drop in lexicographical order before adding them in scene
void MR::Viewer::drawUiRenderObjects ()
 draw 2d (UI) part of objects in scene
bool MR::Viewer::isMultiViewportAvailable ()
void MR::Viewer::EventsCounter::reset ()
void MR::Viewer::GLPrimitivesCounter::reset ()
int MR::launchDefaultViewer (const Viewer::LaunchParams &params, const ViewerSetup &setup)
 starts default viewer with given params and setup
void MR::ViewerEventQueue::emplace (std::string name, ViewerEventCallback cb, bool skipable=false)
void MR::ViewerEventQueue::execute ()
 execute all events in queue
void MR::ViewerEventQueue::popByName (const std::string &name)
 pop all events while they have this name
bool MR::ViewerEventQueue::empty () const
virtual MR::IConnectable::~IConnectable ()=default
virtual void MR::IConnectable::connect (Viewer *viewer, int group=0, boost::signals2::connect_position pos=boost::signals2::connect_position::at_back)=0
virtual void MR::IConnectable::disconnect ()=0
virtual MR::ConnectionHolder::~ConnectionHolder ()=default
virtual void MR::ConnectionHolder::disconnect ()
virtual MR::MultiListener< Connectables >::~MultiListener ()=default
virtual void MR::MultiListener< Connectables >::connect (Viewer *viewer, int group=0, boost::signals2::connect_position pos=boost::signals2::connect_position::at_back)
virtual void MR::MultiListener< Connectables >::disconnect ()
 MR::MouseDownListener::MR_ADD_CTOR_DELETE_MOVE (MouseDownListener)
virtual MR::MouseDownListener::~MouseDownListener ()=default
virtual void MR::MouseDownListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::MouseDownListener::onMouseDown_ (MouseButton btn, int modifiers)=0
 MR::MouseUpListener::MR_ADD_CTOR_DELETE_MOVE (MouseUpListener)
virtual MR::MouseUpListener::~MouseUpListener ()=default
virtual void MR::MouseUpListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::MouseUpListener::onMouseUp_ (MouseButton btn, int modifiers)=0
 MR::MouseMoveListener::MR_ADD_CTOR_DELETE_MOVE (MouseMoveListener)
virtual MR::MouseMoveListener::~MouseMoveListener ()=default
virtual void MR::MouseMoveListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::MouseMoveListener::onMouseMove_ (int x, int y)=0
 MR::MouseScrollListener::MR_ADD_CTOR_DELETE_MOVE (MouseScrollListener)
virtual MR::MouseScrollListener::~MouseScrollListener ()=default
virtual void MR::MouseScrollListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::MouseScrollListener::onMouseScroll_ (float delta)=0
 MR::MouseClickListener::MR_ADD_CTOR_DELETE_MOVE (MouseClickListener)
virtual MR::MouseClickListener::~MouseClickListener ()=default
virtual void MR::MouseClickListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::MouseClickListener::onMouseClick_ (MouseButton btn, int modifiers)=0
 MR::DragStartListener::MR_ADD_CTOR_DELETE_MOVE (DragStartListener)
virtual MR::DragStartListener::~DragStartListener ()=default
virtual void MR::DragStartListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::DragStartListener::onDragStart_ (MouseButton btn, int modifiers)=0
 MR::DragEndListener::MR_ADD_CTOR_DELETE_MOVE (DragEndListener)
virtual MR::DragEndListener::~DragEndListener ()=default
virtual void MR::DragEndListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::DragEndListener::onDragEnd_ (MouseButton btn, int modifiers)=0
 MR::DragListener::MR_ADD_CTOR_DELETE_MOVE (DragListener)
virtual MR::DragListener::~DragListener ()=default
virtual void MR::DragListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::DragListener::onDrag_ (int x, int y)=0
 MR::CharPressedListener::MR_ADD_CTOR_DELETE_MOVE (CharPressedListener)
virtual MR::CharPressedListener::~CharPressedListener ()=default
virtual void MR::CharPressedListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::CharPressedListener::onCharPressed_ (unsigned charKey, int modifier)=0
 MR::KeyUpListener::MR_ADD_CTOR_DELETE_MOVE (KeyUpListener)
virtual MR::KeyUpListener::~KeyUpListener ()=default
virtual void MR::KeyUpListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::KeyUpListener::onKeyUp_ (int key, int modifier)=0
 MR::KeyDownListener::MR_ADD_CTOR_DELETE_MOVE (KeyDownListener)
virtual MR::KeyDownListener::~KeyDownListener ()=default
virtual void MR::KeyDownListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::KeyDownListener::onKeyDown_ (int key, int modifier)=0
 MR::KeyRepeatListener::MR_ADD_CTOR_DELETE_MOVE (KeyRepeatListener)
virtual MR::KeyRepeatListener::~KeyRepeatListener ()=default
virtual void MR::KeyRepeatListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::KeyRepeatListener::onKeyRepeat_ (int key, int modifier)=0
 MR::PreSetupViewListener::MR_ADD_CTOR_DELETE_MOVE (PreSetupViewListener)
virtual MR::PreSetupViewListener::~PreSetupViewListener ()=default
virtual void MR::PreSetupViewListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual void MR::PreSetupViewListener::preSetupView_ ()=0
 MR::PreDrawListener::MR_ADD_CTOR_DELETE_MOVE (PreDrawListener)
virtual MR::PreDrawListener::~PreDrawListener ()=default
virtual void MR::PreDrawListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual void MR::PreDrawListener::preDraw_ ()=0
 MR::DrawListener::MR_ADD_CTOR_DELETE_MOVE (DrawListener)
virtual MR::DrawListener::~DrawListener ()=default
virtual void MR::DrawListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual void MR::DrawListener::draw_ ()=0
 MR::PostDrawListener::MR_ADD_CTOR_DELETE_MOVE (PostDrawListener)
virtual MR::PostDrawListener::~PostDrawListener ()=default
virtual void MR::PostDrawListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual void MR::PostDrawListener::postDraw_ ()=0
 MR::DragDropListener::MR_ADD_CTOR_DELETE_MOVE (DragDropListener)
virtual MR::DragDropListener::~DragDropListener ()=default
virtual void MR::DragDropListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::DragDropListener::dragDrop_ (const std::vector< std::filesystem::path > &paths)=0
 MR::DragEntranceListener::MR_ADD_CTOR_DELETE_MOVE (DragEntranceListener)
virtual MR::DragEntranceListener::~DragEntranceListener ()=default
virtual void MR::DragEntranceListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual void MR::DragEntranceListener::dragEntrance_ (bool enter)=0
 MR::DragOverListener::MR_ADD_CTOR_DELETE_MOVE (DragOverListener)
virtual MR::DragOverListener::~DragOverListener ()=default
virtual void MR::DragOverListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::DragOverListener::dragOver_ (int x, int y)=0
 MR::PostResizeListener::MR_ADD_CTOR_DELETE_MOVE (PostResizeListener)
virtual MR::PostResizeListener::~PostResizeListener ()=default
virtual void MR::PostResizeListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual void MR::PostResizeListener::postResize_ (int w, int h)=0
 MR::InterruptCloseListener::MR_ADD_CTOR_DELETE_MOVE (InterruptCloseListener)
virtual MR::InterruptCloseListener::~InterruptCloseListener ()=default
virtual void MR::InterruptCloseListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::InterruptCloseListener::interruptClose_ ()=0
 MR::PostRescaleListener::MR_ADD_CTOR_DELETE_MOVE (PostRescaleListener)
virtual MR::PostRescaleListener::~PostRescaleListener ()=default
virtual void MR::PostRescaleListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual void MR::PostRescaleListener::postRescale_ (float x, float y)=0
 MR::TouchStartListener::MR_ADD_CTOR_DELETE_MOVE (TouchStartListener)
virtual MR::TouchStartListener::~TouchStartListener ()=default
virtual void MR::TouchStartListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::TouchStartListener::onTouchStart_ (int id, int x, int y)=0
 MR::TouchMoveListener::MR_ADD_CTOR_DELETE_MOVE (TouchMoveListener)
virtual MR::TouchMoveListener::~TouchMoveListener ()=default
virtual void MR::TouchMoveListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::TouchMoveListener::onTouchMove_ (int id, int x, int y)=0
 MR::TouchEndListener::MR_ADD_CTOR_DELETE_MOVE (TouchEndListener)
virtual MR::TouchEndListener::~TouchEndListener ()=default
virtual void MR::TouchEndListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::TouchEndListener::onTouchEnd_ (int id, int x, int y)=0
 MR::SpaceMouseMoveListener::MR_ADD_CTOR_DELETE_MOVE (SpaceMouseMoveListener)
virtual MR::SpaceMouseMoveListener::~SpaceMouseMoveListener ()=default
virtual void MR::SpaceMouseMoveListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::SpaceMouseMoveListener::spaceMouseMove_ (const Vector3f &translate, const Vector3f &rotate)=0
 MR::SpaceMouseDownListener::MR_ADD_CTOR_DELETE_MOVE (SpaceMouseDownListener)
virtual MR::SpaceMouseDownListener::~SpaceMouseDownListener ()=default
virtual void MR::SpaceMouseDownListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::SpaceMouseDownListener::spaceMouseDown_ (int key)=0
 MR::SpaceMouseUpListener::MR_ADD_CTOR_DELETE_MOVE (SpaceMouseUpListener)
virtual MR::SpaceMouseUpListener::~SpaceMouseUpListener ()=default
virtual void MR::SpaceMouseUpListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::SpaceMouseUpListener::spaceMouseUp_ (int key)=0
 MR::TouchpadRotateGestureBeginListener::MR_ADD_CTOR_DELETE_MOVE (TouchpadRotateGestureBeginListener)
virtual MR::TouchpadRotateGestureBeginListener::~TouchpadRotateGestureBeginListener ()=default
virtual void MR::TouchpadRotateGestureBeginListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::TouchpadRotateGestureBeginListener::touchpadRotateGestureBegin_ ()=0
 MR::TouchpadRotateGestureUpdateListener::MR_ADD_CTOR_DELETE_MOVE (TouchpadRotateGestureUpdateListener)
virtual MR::TouchpadRotateGestureUpdateListener::~TouchpadRotateGestureUpdateListener ()=default
virtual void MR::TouchpadRotateGestureUpdateListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::TouchpadRotateGestureUpdateListener::touchpadRotateGestureUpdate_ (float angle)=0
 MR::TouchpadRotateGestureEndListener::MR_ADD_CTOR_DELETE_MOVE (TouchpadRotateGestureEndListener)
virtual MR::TouchpadRotateGestureEndListener::~TouchpadRotateGestureEndListener ()=default
virtual void MR::TouchpadRotateGestureEndListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::TouchpadRotateGestureEndListener::touchpadRotateGestureEnd_ ()=0
 MR::TouchpadSwipeGestureBeginListener::MR_ADD_CTOR_DELETE_MOVE (TouchpadSwipeGestureBeginListener)
virtual MR::TouchpadSwipeGestureBeginListener::~TouchpadSwipeGestureBeginListener ()=default
virtual void MR::TouchpadSwipeGestureBeginListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::TouchpadSwipeGestureBeginListener::touchpadSwipeGestureBegin_ ()=0
 MR::TouchpadSwipeGestureUpdateListener::MR_ADD_CTOR_DELETE_MOVE (TouchpadSwipeGestureUpdateListener)
virtual MR::TouchpadSwipeGestureUpdateListener::~TouchpadSwipeGestureUpdateListener ()=default
virtual void MR::TouchpadSwipeGestureUpdateListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::TouchpadSwipeGestureUpdateListener::touchpadSwipeGestureUpdate_ (float dx, float dy, bool kinetic)=0
 MR::TouchpadSwipeGestureEndListener::MR_ADD_CTOR_DELETE_MOVE (TouchpadSwipeGestureEndListener)
virtual MR::TouchpadSwipeGestureEndListener::~TouchpadSwipeGestureEndListener ()=default
virtual void MR::TouchpadSwipeGestureEndListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::TouchpadSwipeGestureEndListener::touchpadSwipeGestureEnd_ ()=0
 MR::TouchpadZoomGestureBeginListener::MR_ADD_CTOR_DELETE_MOVE (TouchpadZoomGestureBeginListener)
virtual MR::TouchpadZoomGestureBeginListener::~TouchpadZoomGestureBeginListener ()=default
virtual void MR::TouchpadZoomGestureBeginListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::TouchpadZoomGestureBeginListener::touchpadZoomGestureBegin_ ()=0
 MR::TouchpadZoomGestureUpdateListener::MR_ADD_CTOR_DELETE_MOVE (TouchpadZoomGestureUpdateListener)
virtual MR::TouchpadZoomGestureUpdateListener::~TouchpadZoomGestureUpdateListener ()=default
virtual void MR::TouchpadZoomGestureUpdateListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::TouchpadZoomGestureUpdateListener::touchpadZoomGestureUpdate_ (float scale, bool kinetic)=0
 MR::TouchpadZoomGestureEndListener::MR_ADD_CTOR_DELETE_MOVE (TouchpadZoomGestureEndListener)
virtual MR::TouchpadZoomGestureEndListener::~TouchpadZoomGestureEndListener ()=default
virtual void MR::TouchpadZoomGestureEndListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual bool MR::TouchpadZoomGestureEndListener::touchpadZoomGestureEnd_ ()=0
 MR::PostFocusListener::MR_ADD_CTOR_DELETE_MOVE (PostFocusListener)
virtual MR::PostFocusListener::~PostFocusListener ()=default
virtual void MR::PostFocusListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual void MR::PostFocusListener::postFocus_ (bool focused)=0
 MR::CursorEntranceListener::MR_ADD_CTOR_DELETE_MOVE (CursorEntranceListener)
virtual MR::CursorEntranceListener::~CursorEntranceListener ()=default
virtual void MR::CursorEntranceListener::connect (Viewer *viewer, int group, boost::signals2::connect_position pos) override
virtual void MR::CursorEntranceListener::cursorEntrance_ (bool enter)=0
ViewerMR::getViewerInstance ()
 returns global instance of Viewer class
void MR::incrementForceRedrawFrames (int i=1, bool swapOnLastOnly=false)
virtual MR::ViewerPlugin::~ViewerPlugin ()
virtual void MR::ViewerPlugin::init (Viewer *_viewer)
 This function is called when the viewer is initialized (no mesh will be loaded at this stage)
virtual void MR::ViewerPlugin::shutdown ()
 This function is called before shutdown.
virtual MR::IViewerSettingsManager::~IViewerSettingsManager ()=default
virtual int MR::IViewerSettingsManager::loadInt (const std::string &name, int def=0)=0
virtual void MR::IViewerSettingsManager::saveInt (const std::string &name, int value)=0
virtual std::string MR::IViewerSettingsManager::loadString (const std::string &name, const std::string &def="")=0
virtual void MR::IViewerSettingsManager::saveString (const std::string &name, const std::string &value)=0
virtual bool MR::IViewerSettingsManager::loadBool (const std::string &name, bool def=false)=0
virtual void MR::IViewerSettingsManager::saveBool (const std::string &name, bool value)=0
virtual void MR::IViewerSettingsManager::resetSettings (Viewer &)=0
virtual void MR::IViewerSettingsManager::loadSettings (Viewer &)=0
virtual void MR::IViewerSettingsManager::saveSettings (const Viewer &)=0
 MR::ViewerSettingsManager::ViewerSettingsManager ()
virtual int MR::ViewerSettingsManager::loadInt (const std::string &name, int def) override
virtual void MR::ViewerSettingsManager::saveInt (const std::string &name, int value) override
virtual std::string MR::ViewerSettingsManager::loadString (const std::string &name, const std::string &def) override
virtual void MR::ViewerSettingsManager::saveString (const std::string &name, const std::string &value) override
virtual bool MR::ViewerSettingsManager::loadBool (const std::string &name, bool def) override
virtual void MR::ViewerSettingsManager::saveBool (const std::string &name, bool value) override
virtual void MR::ViewerSettingsManager::resetSettings (Viewer &) override
virtual void MR::ViewerSettingsManager::loadSettings (Viewer &viewer) override
virtual void MR::ViewerSettingsManager::saveSettings (const Viewer &viewer) override
const std::string & MR::ViewerSettingsManager::getLastExtention (ObjType objType)
void MR::ViewerSettingsManager::setLastExtention (ObjType objType, std::string ext)
 MR::ViewerSettingsPlugin::ViewerSettingsPlugin ()
virtual void MR::ViewerSettingsPlugin::drawDialog (ImGuiContext *ctx) override
virtual bool MR::ViewerSettingsPlugin::blocking () const override
 true if this item is blocking (only one blocking item can be active at once)
void MR::ViewerSettingsPlugin::updateThemes ()
 call this function if you save/delete color theme, or change current theme outside of this plugin
virtual MR::ViewerSettingsPlugin::ExternalSettings::~ExternalSettings ()
virtual const std::string & MR::ViewerSettingsPlugin::ExternalSettings::getName () const =0
 returns the name of the setting, which is a unique value
virtual void MR::ViewerSettingsPlugin::ExternalSettings::draw ()=0
 the function of drawing the configuration UI
virtual void MR::ViewerSettingsPlugin::ExternalSettings::reset ()
 restore the settings to their default values
virtual const char * MR::ViewerSettingsPlugin::ExternalSettings::separatorName () const
 if not overriden this setting will be drawn in tools block
void MR::ViewerSettingsPlugin::addComboSettings (const TabType tab, std::shared_ptr< ExternalSettings > settings)
 add external settings with UI combo box
void MR::ViewerSettingsPlugin::delComboSettings (const TabType tab, const ExternalSettings *settings)
 delete external settings with UI combo box
static ViewerSettingsPluginMR::ViewerSettingsPlugin::instance ()
void MR::ViewerSettingsPlugin::setActiveTab (TabType tab)
 changes active tab
 MR::ViewerTitle::ViewerTitle ()=default
virtual MR::ViewerTitle::~ViewerTitle ()=default
void MR::ViewerTitle::setAppName (std::string appName)
 Name of the application.
void MR::ViewerTitle::setVersion (std::string version)
 Version of application.
void MR::ViewerTitle::setSceneName (std::string sceneName)
 Name of current scene.
virtual std::string MR::ViewerTitle::compose () const
 this function is called from update_ compose resulting name
void MR::ViewerTitle::update_ ()
 called when something changes, composes new title and apply it to window
ImVec2 MR::position (const ViewportRectangle &rect)
ImVec2 MR::size (const ViewportRectangle &rect)
template<typename T>
Vector4< T > MR::toVec4 (const ViewportRectangle &rect)
static ViewportMR::Viewport::get (ViewportId viewportId={})
 MR::Viewport::Viewport ()
 MR::Viewport::~Viewport ()
Viewport MR::Viewport::clone () const
 MR::Viewport::Viewport (Viewport &&) noexcept=default
ViewportMR::Viewport::operator= (Viewport &&) noexcept=default
void MR::Viewport::init ()
 Initialization.
void MR::Viewport::setAxesPos (const int pixelXoffset=-100, const int pixelYoffset=-100)
void MR::Viewport::setAxesSize (const int axisPixSize=80)
const Vector2f & MR::Viewport::getAxesPosition () const
 returns position of basis axes in viewport space
float MR::Viewport::getAxesSize () const
const Matrix4f & MR::Viewport::getAxesProjectionMatrix () const
 returns projection matrix that is used for basis axes and view controller rendering
void MR::Viewport::shut ()
 Shutdown.
void MR::Viewport::clearFramebuffers ()
 ----------------— Drawing functions
void MR::Viewport::recursiveDraw (const Object &obj, DepthFunction depthFunc=DepthFunction::Default, const AffineXf3f &rootXf={}, RenderModelPassMask renderType=RenderModelPassMask::All, const TransparencyMode &transparentMode={}, int *numDraws=nullptr) const
 Immediate draw of given object tree.
bool MR::Viewport::draw (const VisualObject &obj, DepthFunction depthFunc=DepthFunction::Default, RenderModelPassMask pass=RenderModelPassMask::All, const TransparencyMode &transparentMode={}) const
bool MR::Viewport::draw (const VisualObject &obj, const AffineXf3f &xf, DepthFunction depthFunc=DepthFunction::Default, RenderModelPassMask pass=RenderModelPassMask::All, const TransparencyMode &transparentMode={}) const
bool MR::Viewport::draw (const VisualObject &obj, const AffineXf3f &xf, const Matrix4f &projM, DepthFunction depthFunc=DepthFunction::Default, RenderModelPassMask pass=RenderModelPassMask::All, const TransparencyMode &transparentMode={}) const
bool MR::Viewport::drawOrthoFixedPos (const VisualObject &obj, const AffineXf3f &xf, DepthFunction depthFunc=DepthFunction::Default, RenderModelPassMask pass=RenderModelPassMask::All, const TransparencyMode &transparentMode={}) const
void MR::Viewport::drawLines (const std::vector< LineSegm3f > &lines, const std::vector< SegmEndColors > &colors, const LinePointImmediateRenderParams &params)
 Draw lines immediately.
void MR::Viewport::drawLines (const std::vector< LineSegm3f > &lines, const std::vector< SegmEndColors > &colors, float width=1, bool depthTest=true)
void MR::Viewport::drawPoints (const std::vector< Vector3f > &points, const std::vector< Vector4f > &colors, const LinePointImmediateRenderParams &params)
 Draw points immediately.
void MR::Viewport::drawPoints (const std::vector< Vector3f > &points, const std::vector< Vector4f > &colors, float width=1, bool depthTest=true)
void MR::Viewport::drawTris (const std::vector< Triangle3f > &tris, const std::vector< TriCornerColors > &colors, const ModelRenderParams &params, bool depthTest=true)
 Draw triangles immediately (flat shaded)
void MR::Viewport::drawTris (const std::vector< Triangle3f > &tris, const std::vector< TriCornerColors > &colors, const Matrix4f &modelM={}, bool depthTest=true)
BaseRenderParams MR::Viewport::getBaseRenderParams () const
 Prepares base rendering parameters for this viewport.
BaseRenderParams MR::Viewport::getBaseRenderParams (const Matrix4f &projM) const
 Prepares base rendering parameters for this viewport with custom projection matrix.
BaseRenderParams MR::Viewport::getBaseRenderParamsOrthoFixedPos () const
 Prepares base rendering parameters for this viewport with orthographic proj matrix and rotation component of view matrix.
ModelRenderParams MR::Viewport::getModelRenderParams (const Matrix4f &modelM, Matrix4f *normM, DepthFunction depthFunc=DepthFunction::Default, RenderModelPassMask pass=RenderModelPassMask::All, const TransparencyMode &transparentMode={}) const
 Prepares rendering parameters to draw a model with given transformation in this viewport.
ModelRenderParams MR::Viewport::getModelRenderParamsOrthoFixedPos (const Matrix4f &modelM, Matrix4f *normM, DepthFunction depthFunc=DepthFunction::Default, RenderModelPassMask pass=RenderModelPassMask::All, const TransparencyMode &transparentMode={}) const
 Prepares rendering parameters to draw a model with orthographic proj matrix and rotation component of view matrix.
ModelRenderParams MR::Viewport::getModelRenderParams (const Matrix4f &modelM, const BaseRenderParams &baseParams, Matrix4f *normM, DepthFunction depthFunc=DepthFunction::Default, RenderModelPassMask pass=RenderModelPassMask::All, const TransparencyMode &transparentMode={}) const
 Prepares rendering parameters to draw a model with given transformation in this viewport with custom BaseRenderParams.
static PickRenderObjectParams MR::Viewport::PickRenderObjectParams::defaults ()
ObjAndPick MR::Viewport::pickRenderObject (const PickRenderObjectParams &params=PickRenderObjectParams::defaults()) const
ObjAndPick MR::Viewport::pickRenderObject (std::span< VisualObject *const > objects, const PickRenderObjectParams &params=PickRenderObjectParams::defaults()) const
 This overload uses objects from the list (possibly filtered by a predicate).
ConstObjAndPick MR::Viewport::pickRenderObjectConst (std::span< const VisualObject *const > objects, const PickRenderObjectParams &params=PickRenderObjectParams::defaults()) const
 This overload uses const objects from the list (possibly filtered by a predicate). Sadly need a different name to avoid over resolution issues.
ObjAndPick MR::Viewport::pick_render_object () const
ObjAndPick MR::Viewport::pick_render_object (uint16_t pickRadius) const
ObjAndPick MR::Viewport::pick_render_object (const std::vector< VisualObject * > &objects) const
 NOTE! If your list is hardcoded, use .objects = std::array{ a, b, c }.
ObjAndPick MR::Viewport::pick_render_object (const std::vector< VisualObject * > &objects, uint16_t pickRadius, bool exactPickFirst=true) const
ObjAndPick MR::Viewport::pick_render_object (bool exactPickFirst) const
 This function allows to pick point in scene by GL with default pick radius, but with specified exactPickFirst parameter (see description upper).
ObjAndPick MR::Viewport::pick_render_object (const Vector2f &viewportPoint) const
ObjAndPick MR::Viewport::pick_render_object (const std::vector< VisualObject * > &objects, const Vector2f &viewportPoint) const
std::vector< ObjAndPickMR::Viewport::multiPickObjects (std::span< VisualObject *const > objects, const std::vector< Vector2f > &viewportPoints, const BaseRenderParams *overrideRenderParams=nullptr) const
std::vector< std::shared_ptr< VisualObject > > MR::Viewport::findObjectsInRect (const Box2i &rect, int maxRenderResolutionSide=512) const
std::unordered_map< std::shared_ptr< ObjectMesh >, FaceBitSet > MR::Viewport::findVisibleFaces (const BitSet &includePixBs, int maxRenderResolutionSide=512) const
FaceBitSet MR::Viewport::findCameraLookingFaces (const Mesh &mesh, const AffineXf3f &meshToWorld) const
 finds all triangles of a mesh that having normals oriented toward the camera in this viewport
ConstObjAndPick MR::Viewport::const_pick_render_object () const
ConstObjAndPick MR::Viewport::const_pick_render_object (const std::vector< const VisualObject * > &objects) const
std::vector< ConstObjAndPickMR::Viewport::constMultiPickObjects (const std::vector< const VisualObject * > &objects, const std::vector< Vector2f > &viewportPoints) const
void MR::Viewport::transformView (const AffineXf3f &xf)
bool MR::Viewport::getRedrawFlag () const
void MR::Viewport::resetRedrawFlag ()
bool MR::Viewport::Parameters::operator== (const Viewport::Parameters &other) const =default
void MR::Viewport::setRotation (bool state)
 Starts or stop rotation.
const ViewportRectangleMR::Viewport::getViewportRect () const
 Note, Y is up for this box.
float MR::Viewport::getPixelSize () const
 Finds length between near pixels on zNear plane. Only good in the orthographic projection.
float MR::Viewport::getPixelSizeAtPoint (const Vector3f &worldPoint) const
void MR::Viewport::setViewportRect (const ViewportRectangle &rect)
AffineXf3f MR::Viewport::getUnscaledViewXf () const
 returns orthonormal matrix with translation
AffineXf3f MR::Viewport::getViewXf () const
 converts directly from the view matrix
Vector3f MR::Viewport::getUpDirection () const
 returns unit vector in world space corresponding to up-direction in camera space
Vector3f MR::Viewport::getRightDirection () const
 assume that viewM is orthogonal and inverse=transpose
Vector3f MR::Viewport::getBackwardDirection () const
 assume that viewM is orthogonal and inverse=transpose
Line3f MR::Viewport::unprojectPixelRay (const Vector2f &viewportPoint) const
 assume that viewM is orthogonal and inverse=transpose
Vector3f MR::Viewport::worldToCameraSpace (const Vector3f &p) const
 convert point(s) to camera space by applying view matrix
std::vector< Vector3f > MR::Viewport::worldToCameraSpace (const std::vector< Vector3f > &p) const
Vector3f MR::Viewport::projectToClipSpace (const Vector3f &worldPoint) const
std::vector< Vector3f > MR::Viewport::projectToClipSpace (const std::vector< Vector3f > &worldPoints) const
Vector3f MR::Viewport::unprojectFromClipSpace (const Vector3f &clipPoint) const
std::vector< Vector3f > MR::Viewport::unprojectFromClipSpace (const std::vector< Vector3f > &clipPoints) const
Vector3f MR::Viewport::projectToViewportSpace (const Vector3f &worldPoint) const
std::vector< Vector3f > MR::Viewport::projectToViewportSpace (const std::vector< Vector3f > &worldPoints) const
Vector3f MR::Viewport::unprojectFromViewportSpace (const Vector3f &viewportPoint) const
std::vector< Vector3f > MR::Viewport::unprojectFromViewportSpace (const std::vector< Vector3f > &viewportPoints) const
Vector3f MR::Viewport::clipSpaceToViewportSpace (const Vector3f &p) const
std::vector< Vector3f > MR::Viewport::clipSpaceToViewportSpace (const std::vector< Vector3f > &p) const
Vector3f MR::Viewport::viewportSpaceToClipSpace (const Vector3f &p) const
std::vector< Vector3f > MR::Viewport::viewportSpaceToClipSpace (const std::vector< Vector3f > &p) const
void MR::Viewport::setupView ()
 updates view and projection matrices due to camera parameters (called each frame)
void MR::Viewport::preDraw ()
void MR::Viewport::postDraw () const
void MR::Viewport::fitData (float fill=1.0f, bool snapView=true)
void MR::Viewport::fitBox (const Box3f &newSceneBox, float fill=1.0f, bool snapView=true)
void MR::Viewport::preciseFitBoxToScreenBorder (const FitBoxParams &params)
 fit view and proj matrices to match the screen size with given box
void MR::Viewport::preciseFitDataToScreenBorder (const FitDataParams &params={})
 fit view and proj matrices to match the screen size with given objects
float MR::Viewport::getRatio () const
 returns viewport width/height ratio
bool MR::Viewport::allModelsInsideViewportRectangle () const
 returns true if all models are fully projected inside the viewport rectangle
const Box3f & MR::Viewport::getSceneBox () const
const ParametersMR::Viewport::getParameters () const
Vector3f MR::Viewport::getCameraPoint () const
 returns camera world location for the current view
void MR::Viewport::setCameraPoint (const Vector3f &cameraWorldPos)
 sets camera world location for the current view
void MR::Viewport::setCameraTrackballAngle (const Quaternionf &rot)
void MR::Viewport::setCameraTranslation (const Vector3f &translation)
void MR::Viewport::setCameraViewAngle (float newViewAngle)
void MR::Viewport::setCameraZoom (float zoom)
void MR::Viewport::setOrthographic (bool orthographic)
void MR::Viewport::setBackgroundColor (const Color &color)
void MR::Viewport::setClippingPlane (const Plane3f &plane)
void MR::Viewport::setLabel (std::string s)
void MR::Viewport::setSelectable (bool on)
void MR::Viewport::showAxes (bool on)
void MR::Viewport::showClippingPlane (bool on)
void MR::Viewport::showRotationCenter (bool on)
void MR::Viewport::showGlobalBasis (bool on)
void MR::Viewport::rotationCenterMode (Parameters::RotationCenterMode mode)
void MR::Viewport::setParameters (const Viewport::Parameters &params)
void MR::Viewport::cameraLookAlong (const Vector3f &dir, const Vector3f &up)
void MR::Viewport::cameraRotateAround (const Line3f &axis, float angle)
Vector3f MR::Viewport::getRotationPivot () const
 returns current rotation pivot in world space, which should appear static on a screen during rotation by the user
void MR::Viewport::resetStaticRotationPivot (const std::optional< Vector3f > &pivot=std::nullopt)
bool MR::CornerControllerObject::PickedIds::operator== (const PickedIds &other) const =default
 MR::CornerControllerObject::CornerControllerObject ()=default
void MR::CornerControllerObject::initDefault ()
 initialize this object with default settings
void MR::CornerControllerObject::enable (ViewportMask mask)
 enables or disables this object by provided mask
void MR::CornerControllerObject::draw (const Viewport &vp, const AffineXf3f &rotXf, const AffineXf3f &vpInvXf)
 draw this object in given viewport in position of basis axes
bool MR::CornerControllerObject::getRedrawFlag (ViewportMask mask) const
 returns true if objects requires redraw
void MR::CornerControllerObject::resetRedrawFlag ()
 marks this object as drawn
Mesh MR::makeCornerControllerMesh (float size, float cornerRatio=0.2f)
 Makes cube mesh with specified face structure for each 3-rank corner, each 2-rank corner and each side:
.
Mesh MR::makeCornerControllerRotationArrowMesh (float size, const Vector2f &shift, bool ccw)
 Makes planar arrow mesh that will be used for controlling in plane rotation in corner near cube controller.
VertUVCoords MR::makeCornerControllerUVCoords (float cornerRatio=0.2f)
 Creates UV coordinates for makeCornerControllerMesh output mesh for texture like:
"Right"" Left "
" Top ""Bottom"
"Front"" Back ".
Vector< MeshTexture, TextureId > MR::loadCornerControllerTextures ()
 Loads 3 textures for corner controller: default, side hovered, corner hovered.
const TexturePerFace & MR::getCornerControllerTexureMap ()
RegionId MR::getCornerControllerRegionByFace (FaceId face)
 returns region id of corner controller by its face
TexturePerFace MR::getCornerControllerHoveredTextureMap (RegionId rId)
 returns textures map with region faces hovered
void MR::updateCurrentViewByControllerRegion (CornerControllerObject::PickedIds pickedId)
 setup camera for selected viewport by corner controller region
bool MR::operator== (const SegmEndColors &a, const SegmEndColors &b)
bool MR::operator== (const ViewportPointsWithColors &a, const ViewportPointsWithColors &b)
 MR::ViewportGL::ViewportGL ()=default
 MR::ViewportGL::ViewportGL (const ViewportGL &)
 Copy operators do nothing, not to share GL data.
ViewportGLMR::ViewportGL::operator= (const ViewportGL &)
 MR::ViewportGL::ViewportGL (ViewportGL &&other) noexcept
ViewportGLMR::ViewportGL::operator= (ViewportGL &&) noexcept
 MR::ViewportGL::~ViewportGL ()
void MR::ViewportGL::init ()
 Initialize all GL buffers and arrays.
void MR::ViewportGL::free ()
 Free all GL data.
void MR::ViewportGL::drawBorder (const Box2f &rect, const Color &color) const
 Binds and draws viewport border.
void MR::ViewportGL::fillViewport (const Box2f &rect, const Color &color) const
 Fills viewport with given color (clear frame buffer)
bool MR::ViewportGL::checkInit () const
 Check that members have been initialized.
PickResults MR::ViewportGL::pickObjects (const PickParameters &params, const std::vector< Vector2i > &picks) const
 Find picked object, face id and z coordinate, of objects given in parameters (works for vector of picks)
std::vector< unsigned > MR::ViewportGL::findUniqueObjectsInRect (const PickParameters &params, const Box2i &rect, int maxRenderResolutionSide) const
ScaledPickRes MR::ViewportGL::pickObjectsInRect (const PickParameters &params, const Box2i &rect, int maxRenderResolutionSide) const
void MR::ViewportGL::PickTextureFrameBuffer::resize (const Vector2i &size)
void MR::ViewportGL::PickTextureFrameBuffer::del ()
void MR::ViewportGL::PickTextureFrameBuffer::bind (bool read)
 MR::ViewportGlobalBasis::ViewportGlobalBasis ()
 Constructs default global basis object.
float MR::ViewportGlobalBasis::getAxesLength (ViewportId id={}) const
 Returns length of axis (all are the same)
float MR::ViewportGlobalBasis::getAxesWidth (ViewportId id={}) const
 Returns width of axis (all are the same)
void MR::ViewportGlobalBasis::setAxesProps (float length, float width, ViewportId id={})
 Sets length and width for all axes.
void MR::ViewportGlobalBasis::setColors (const Color &xColor, const Color &yColor, const Color &zColor, const Color &labelColors)
 Sets colors for each axis of this object.
const std::vector< std::shared_ptr< VisualObject > > & MR::ViewportGlobalBasis::axesChildren () const
 Simple accessor to visual children (useful for pickers or box calculations)
bool MR::ViewportGlobalBasis::getRedrawFlag (ViewportMask vpMask) const
 returns true if any of its children requires redraw
void MR::ViewportGlobalBasis::resetRedrawFlag () const
 reset redraw flag for all children
void MR::ViewportGlobalBasis::draw (const Viewport &vp) const
 Draw this object into given viewport.
void MR::ViewportGlobalBasis::setVisible (bool on, ViewportMask vpMask=ViewportMask::all())
 Set visibility for all child objects.
void MR::ViewportGlobalBasis::setVisibilityMask (ViewportMask vpMask)
bool MR::ViewportGlobalBasis::isVisible (ViewportMask vpMask=ViewportMask::any()) const
 returns true if object is present and visible
ViewportMask MR::ViewportGlobalBasis::getVisibilityMask () const
void MR::ViewportGlobalBasis::setGridVisible (bool on, ViewportMask vpMask=ViewportMask::all())
 Set visibility for grid objects.
void MR::ViewportGlobalBasis::setGridVisibilityMask (ViewportMask vpMask)
bool MR::ViewportGlobalBasis::isGridVisible (ViewportMask vpMask=ViewportMask::any()) const
 returns true if grid is present and visible
ViewportMask MR::ViewportGlobalBasis::getGridVisibilityMask () const
void MR::ViewportGlobalBasis::resetConnections ()
 clears connections of this structure (by default it changes colors on theme change and change font size on rescale)
static VisualObjectTagManagerMR::VisualObjectTagManager::instance ()
 get access to the global instance
static const std::map< std::string, VisualObjectTag > & MR::VisualObjectTagManager::tags ()
 get read-only access to the visual object tags' storage
static void MR::VisualObjectTagManager::registerTag (std::string tag, VisualObjectTag visTag)
 add visual object tag
static void MR::VisualObjectTagManager::updateTag (const std::string &tag, VisualObjectTag visTag)
 update visual object tag; linked objects are NOT updated automatically
static void MR::VisualObjectTagManager::unregisterTag (const std::string &tag)
 remove visual object tag; linked objects are NOT updated automatically
static std::vector< std::shared_ptr< Object > > MR::VisualObjectTagManager::getAllObjectsWithTag (Object *root, const std::string &tag, const ObjectSelectivityType &type=ObjectSelectivityType::Selectable)
 find all object in given object tree with the visual object tag
static void MR::VisualObjectTagManager::update (VisualObject &visObj, const std::string &tag)
 update visual object properties according to whether given object has the visual object tag or not
void MR::deserializeFromJson (const Json::Value &root, VisualObjectTagManager &manager)
void MR::serializeToJson (const VisualObjectTagManager &manager, Json::Value &root)
std::string MR::getTrivialVertexShader ()
 simple quad vertex shader
std::string MR::getVolumeFragmentShader ()
 shader with raytracing over volume
std::string MR::getVolumePickerFragmentShader ()
 shader with raytracing over volume
Expected< Json::Value > MR::parseResponse (const Json::Value &response)
 returns json value of text or error if response failed
 MR::WebRequest::WebRequest ()=default
 MR::WebRequest::WebRequest (std::string url)
void MR::WebRequest::clear ()
 clear all request data
void MR::WebRequest::setMethod (Method method)
 set HTTP method
void MR::WebRequest::setTimeout (int timeoutMs)
 set timeout in milliseconds
void MR::WebRequest::setParameters (std::unordered_map< std::string, std::string > parameters)
 set URL query parameters
void MR::WebRequest::setHeaders (std::unordered_map< std::string, std::string > headers)
 set HTTP headers
void MR::WebRequest::setInputPath (std::filesystem::path inputPath)
 set path to the file to upload
void MR::WebRequest::setUploadProgressCallback (ProgressCallback callback)
void MR::WebRequest::setFormData (std::vector< FormData > formData)
void MR::WebRequest::setBody (std::string body)
 set payload in plain format
void MR::WebRequest::setOutputPath (std::filesystem::path outputPath)
 prefer to save the response to file
void MR::WebRequest::setDownloadProgressCallback (ProgressCallback callback)
 set progress callback for download
void MR::WebRequest::setAsync (bool async)
 set async mode (return immediately after sending request)
void MR::WebRequest::setLogName (std::string logName)
 set log name
void MR::WebRequest::send (std::string url, std::string logName, ResponseCallback callback, bool async=true)
void MR::WebRequest::send (ResponseCallback callback)
static void MR::WebRequest::waitRemainingAsync ()
 if any async request is still in progress, wait for it
FloatGrid MR::MeshVoxelsConverter::operator() (const MeshPart &mp, const AffineXf3f &xf={}) const
FloatGrid MR::MeshVoxelsConverter::operator() (const ObjectMesh &obj) const
Mesh MR::MeshVoxelsConverter::operator() (const FloatGrid &grid) const
 [0, 1] ratio of combining small triangles into bigger ones
OriginAndDimensions MR::calcOriginAndDimensions (const Box3f &box, float voxelSize)
 computes origin and dimensions of voxel-grid to cover given 3D box with given spacing (voxelSize)
float MR::voxelizeAndComputeVolume (const std::vector< std::shared_ptr< Mesh > > &meshes, const AffineXf3f &xf, const Vector3f &voxelSize)
 MR::VoxelsLoad::DicomStatus::DicomStatus (DicomStatusEnum st, std::string_view rs="")
 implicit by design
 MR::VoxelsLoad::DicomStatus::operator bool () const
bool MR::VoxelsLoad::DicomStatus::operator== (DicomStatusEnum s) const
DicomStatus MR::VoxelsLoad::isDicomFile (const std::filesystem::path &path, std::string *seriesUid=nullptr, Vector3i *dims=nullptr)
bool MR::VoxelsLoad::isDicomFolder (const std::filesystem::path &dirPath)
 check if given folder contains at least one DICOM file
std::vector< std::filesystem::path > MR::VoxelsLoad::findDicomFoldersRecursively (const std::filesystem::path &path)
 returns all the dicom folders in path, searching recursively
Expected< DicomVolumeMR::VoxelsLoad::loadDicomFile (const std::filesystem::path &file, const ProgressCallback &cb={})
 Loads full volume from single DICOM file (not a slice file) as SimpleVolumeMinMax.
Expected< DicomVolumeAsVdb > MR::VoxelsLoad::loadDicomFileAsVdb (const std::filesystem::path &file, const ProgressCallback &cb={})
 Loads full volume from single DICOM file (not a slice file) as VdbVolume.
Expected< DicomVolumeMR::VoxelsLoad::loadDicomFolder (const std::filesystem::path &path, unsigned maxNumThreads, const ProgressCallback &cb={})
 Loads one volume from DICOM files located in given folder as SimpleVolumeMinMax.
Expected< DicomVolumeAsVdb > MR::VoxelsLoad::loadDicomFolderAsVdb (const std::filesystem::path &path, unsigned maxNumThreads, const ProgressCallback &cb={})
 Loads one volume from DICOM files located in given folder as VdbVolume.
std::vector< Expected< DicomVolume > > MR::VoxelsLoad::loadDicomsFolder (const std::filesystem::path &path, unsigned maxNumThreads, const ProgressCallback &cb={})
 Loads all volumes from DICOM files located in given folder as a number of SimpleVolumeMinMax.
std::vector< Expected< DicomVolumeAsVdb > > MR::VoxelsLoad::loadDicomsFolderAsVdb (const std::filesystem::path &path, unsigned maxNumThreads, const ProgressCallback &cb={})
 Loads all volumes from DICOM files located in given folder as a number of VdbVolume.
std::vector< Expected< DicomVolumeAsVdb > > MR::VoxelsLoad::loadDicomsFolderTreeAsVdb (const std::filesystem::path &path, unsigned maxNumThreads=4, const ProgressCallback &cb={})
 Loads every subfolder with DICOM volume as new object.
Expected< std::shared_ptr< ObjectVoxels > > MR::VoxelsLoad::createObjectVoxels (const DicomVolumeAsVdb &dcm, const ProgressCallback &cb={})
 converts DicomVolumeAsVdb in ObjectVoxels
Expected< LoadedObjectsMR::VoxelsLoad::makeObjectVoxelsFromDicomFolder (const std::filesystem::path &folder, const ProgressCallback &callback={})
 Loads 3D volumetric data from dicom-files in given folder, and converts them into an ObjectVoxels.
Expected< void > MR::VoxelsSave::toDicom (const VdbVolume &vdbVolume, const std::filesystem::path &path, ProgressCallback cb={})
 Save voxels object to a single 3d DICOM file.
template<typename T>
Expected< void > MR::VoxelsSave::toDicom (const VoxelsVolume< Vector< T, VoxelId > > &volume, const std::filesystem::path &path, const std::optional< MinMaxf > &sourceScale={}, const ProgressCallback &cb={})
template Expected< void > MR::VoxelsSave::toDicom (const VoxelsVolume< Vector< std::uint16_t, VoxelId > > &volume, const std::filesystem::path &path, const std::optional< MinMaxf > &sourceScale, const ProgressCallback &cb)
MR_BIND_IGNORE Expected< void > MR::FixUndercuts::fixUndercuts (Mesh &mesh, const Vector3f &upDirection, float voxelSize=0.0f, float bottomExtension=0.0f)
MR_BIND_IGNORE Expected< void > MR::FixUndercuts::fixUndercuts (Mesh &mesh, const FaceBitSet &selectedArea, const Vector3f &upDirection, float voxelSize=0.0f, float bottomExtension=0.0f)
Expected< void > MR::FixUndercuts::fix (Mesh &mesh, const FixParams &params)
UndercutMetric MR::FixUndercuts::getUndercutAreaMetric (const Mesh &mesh)
 returns the metric that computes total area of undercut faces
UndercutMetric MR::FixUndercuts::getUndercutAreaProjectionMetric (const Mesh &mesh)
 returns the metric that computes summed absolute projected area of undercut
MR_BIND_IGNORE void MR::FixUndercuts::findUndercuts (const Mesh &mesh, const Vector3f &upDirection, FaceBitSet &outUndercuts)
 Adds to.
MR_BIND_IGNORE void MR::FixUndercuts::findUndercuts (const Mesh &mesh, const Vector3f &upDirection, VertBitSet &outUndercuts)
 Adds to.
MR_BIND_IGNORE double MR::FixUndercuts::findUndercuts (const Mesh &mesh, const Vector3f &upDirection, FaceBitSet &outUndercuts, const UndercutMetric &metric)
double MR::FixUndercuts::find (const Mesh &mesh, const FindParams &params, FaceBitSet &outUndercuts, const UndercutMetric &metric={})
void MR::FixUndercuts::find (const Mesh &mesh, const FindParams &params, VertBitSet &outUndercuts)
 Adds undercuts to.
double MR::FixUndercuts::scoreUndercuts (const Mesh &mesh, const Vector3f &upDirection, const Vector2i &resolution)
Vector3f MR::FixUndercuts::improveDirection (const Mesh &mesh, const ImproveDirectionParameters &params, const UndercutMetric &metric)
Vector3f MR::FixUndercuts::distMapImproveDirection (const Mesh &mesh, const DistMapImproveDirectionParameters &params)
Expected< MeshMR::marchingCubes (const SimpleVolume &volume, const MarchingCubesParams &params={})
 makes Mesh from SimpleVolume with given settings using Marching Cubes algorithm
Expected< TriMeshMR::marchingCubesAsTriMesh (const SimpleVolume &volume, const MarchingCubesParams &params={})
Expected< MeshMR::marchingCubes (const SimpleVolumeMinMax &volume, const MarchingCubesParams &params={})
 makes Mesh from SimpleVolumeMinMax with given settings using Marching Cubes algorithm
Expected< TriMeshMR::marchingCubesAsTriMesh (const SimpleVolumeMinMax &volume, const MarchingCubesParams &params={})
Expected< MeshMR::marchingCubes (const VdbVolume &volume, const MarchingCubesParams &params={})
 makes Mesh from VdbVolume with given settings using Marching Cubes algorithm
Expected< TriMeshMR::marchingCubesAsTriMesh (const VdbVolume &volume, const MarchingCubesParams &params={})
Expected< MeshMR::marchingCubes (const FunctionVolume &volume, const MarchingCubesParams &params={})
 makes Mesh from FunctionVolume with given settings using Marching Cubes algorithm
Expected< TriMeshMR::marchingCubesAsTriMesh (const FunctionVolume &volume, const MarchingCubesParams &params={})
Expected< MeshMR::marchingCubes (const SimpleBinaryVolume &volume, const MarchingCubesParams &params={})
 makes Mesh from SimpleBinaryVolume with given settings using Marching Cubes algorithm
Expected< TriMeshMR::marchingCubesAsTriMesh (const SimpleBinaryVolume &volume, const MarchingCubesParams &params={})
 MR::MarchingCubesByParts::MarchingCubesByParts (const Vector3i &dims, const MarchingCubesParams &params, int layersPerBlock=0)
 MR::MarchingCubesByParts::~MarchingCubesByParts ()
 MR::MarchingCubesByParts::MarchingCubesByParts (MarchingCubesByParts &&s) noexcept
MarchingCubesByPartsMR::MarchingCubesByParts::operator= (MarchingCubesByParts &&s) noexcept
int MR::MarchingCubesByParts::layersPerBlock () const
 the number of z-slices of the volume in the blocks
int MR::MarchingCubesByParts::nextZ () const
 the last z-layer of the previous part and the first z-layer of the next part
Expected< void > MR::MarchingCubesByParts::addPart (const SimpleVolume &part)
 adds one more part of volume into consideration, with first z=nextZ()
Expected< TriMeshMR::MarchingCubesByParts::finalize ()
 finishes processing and outputs produced trimesh
Expected< SimpleVolumeMinMaxMR::meshToDistanceVolume (const MeshPart &mp, const MeshToDistanceVolumeParams &params)
 makes SimpleVolume filled with (signed or unsigned) distances from Mesh with given settings
FunctionVolume MR::meshToDistanceFunctionVolume (const MeshPart &mp, const MeshToDistanceVolumeParams &params)
 makes FunctionVolume representing (signed or unsigned) distances from Mesh with given settings
Expected< SimpleBinaryVolume > MR::makeCloseToMeshVolume (const MeshPart &mp, const CloseToMeshVolumeParams &params)
 makes a binary volume with close-to-surface predicate values according to the given parameters
Expected< SimpleVolumeMinMaxMR::meshRegionToIndicatorVolume (const Mesh &mesh, const FaceBitSet &region, float offset, const DistanceVolumeParams &params)
Expected< std::array< SimpleVolumeMinMax, 3 > > MR::meshToDirectionVolume (const MeshToDirectionVolumeParams &params)
 MR::ObjectVoxels::ObjectVoxels ()
ObjectVoxelsMR::ObjectVoxels::operator= (ObjectVoxels &&) noexcept=default
 MR::ObjectVoxels::ObjectVoxels (ObjectVoxels &&) noexcept=default
virtual MR::ObjectVoxels::~ObjectVoxels ()=default
static constexpr const char * MR::ObjectVoxels::StaticTypeName () noexcept
virtual const char * MR::ObjectVoxels::typeName () const override
static constexpr const char * MR::ObjectVoxels::StaticClassName () noexcept
virtual std::string MR::ObjectVoxels::className () const override
static constexpr const char * MR::ObjectVoxels::StaticClassNameInPlural () noexcept
virtual std::string MR::ObjectVoxels::classNameInPlural () const override
virtual void MR::ObjectVoxels::applyScale (float scaleFactor) override
 scale object size (all point positions)
const std::shared_ptr< Mesh > & MR::ObjectVoxels::surface () const
 Returns iso surface, empty if iso value is not set.
const VdbVolume & MR::ObjectVoxels::vdbVolume () const
 Return VdbVolume.
VdbVolume & MR::ObjectVoxels::varVdbVolume ()
const FloatGridMR::ObjectVoxels::grid () const
 Returns Float grid which contains voxels data, see more on openvdb::FloatGrid.
virtual bool MR::ObjectVoxels::hasModel () const override
const Vector3i & MR::ObjectVoxels::dimensions () const
 Returns dimensions of voxel objects.
float MR::ObjectVoxels::getIsoValue () const
 Returns current iso value.
const HistogramMR::ObjectVoxels::histogram () const
 Returns histogram.
const Vector3f & MR::ObjectVoxels::voxelSize () const
virtual std::vector< std::string > MR::ObjectVoxels::getInfoLines () const override
 return several info lines that can better describe the object in the UI
void MR::ObjectVoxels::construct (const SimpleVolume &simpleVolume, const std::optional< Vector2f > &minmax={}, ProgressCallback cb={}, bool normalPlusGrad=false)
void MR::ObjectVoxels::construct (const SimpleVolumeMinMax &simpleVolumeMinMax, ProgressCallback cb={}, bool normalPlusGrad=false)
void MR::ObjectVoxels::construct (const FloatGrid &grid, const Vector3f &voxelSize, const std::optional< Vector2f > &minmax={})
void MR::ObjectVoxels::construct (const VdbVolume &vdbVolume)
 Clears all internal data and then creates grid and calculates histogram (surface is not built, call updateHistogramAndSurface)
void MR::ObjectVoxels::updateHistogramAndSurface (ProgressCallback cb={})
virtual Expected< bool > MR::ObjectVoxels::setIsoValue (float iso, ProgressCallback cb={}, bool updateSurface=true)
std::shared_ptr< MeshMR::ObjectVoxels::updateIsoSurface (std::shared_ptr< Mesh > mesh)
VdbVolume MR::ObjectVoxels::updateVdbVolume (VdbVolume vdbVolume)
Histogram MR::ObjectVoxels::updateHistogram (Histogram histogram)
Expected< std::shared_ptr< Mesh > > MR::ObjectVoxels::recalculateIsoSurface (float iso, ProgressCallback cb={}) const
 Calculates and return new mesh or error message.
Expected< std::shared_ptr< Mesh > > MR::ObjectVoxels::recalculateIsoSurface (const VdbVolume &volume, float iso, ProgressCallback cb={}) const
 Same as above, but takes external volume.
Histogram MR::ObjectVoxels::recalculateHistogram (std::optional< Vector2f > minmax, ProgressCallback cb={}) const
 Calculates and returns new histogram.
bool MR::ObjectVoxels::getDualMarchingCubes () const
 returns true if the iso-surface is built using Dual Marching Cubes algorithm or false if using Standard Marching Cubes
virtual void MR::ObjectVoxels::setDualMarchingCubes (bool on, bool updateSurface=true, ProgressCallback cb={})
virtual void MR::ObjectVoxels::setVoxelPointPositioner (VoxelPointPositioner positioner)
 set voxel point positioner for Marching Cubes (only for Standard Marching Cubes)
virtual void MR::ObjectVoxels::setActiveBounds (const Box3i &activeBox, ProgressCallback cb={}, bool updateSurface=true)
const Box3i & MR::ObjectVoxels::getActiveBounds () const
virtual void MR::ObjectVoxels::invalidateActiveBoundsCaches ()
 Call this function in main thread post processing if you call setActiveBounds from progress bar thread.
const VoxelBitSet & MR::ObjectVoxels::getSelectedVoxels () const
void MR::ObjectVoxels::selectVoxels (const VoxelBitSet &selectedVoxels)
const VoxelBitSet & MR::ObjectVoxels::getVolumeRenderActiveVoxels () const
 get active (visible) voxels
void MR::ObjectVoxels::setVolumeRenderActiveVoxels (const VoxelBitSet &activeVoxels)
 set active (visible) voxels (using only in Volume Rendering mode)
VoxelId MR::ObjectVoxels::getVoxelIdByCoordinate (const Vector3i &coord) const
VoxelId MR::ObjectVoxels::getVoxelIdByPoint (const Vector3f &point) const
Vector3i MR::ObjectVoxels::getCoordinateByVoxelId (VoxelId id) const
const VolumeIndexerMR::ObjectVoxels::getVolumeIndexer () const
 Returns indexer with more options.
bool MR::ObjectVoxels::prepareDataForVolumeRendering (ProgressCallback cb={}) const
bool MR::ObjectVoxels::isVolumeRenderingEnabled () const
void MR::ObjectVoxels::enableVolumeRendering (bool on)
std::unique_ptr< SimpleVolume > MR::ObjectVoxels::getVolumeRenderingData () const
 move volume rendering data to caller: basically used in RenderVolumeObject
bool MR::ObjectVoxels::VolumeRenderingParams::operator== (const VolumeRenderingParams &) const =default
const VolumeRenderingParamsMR::ObjectVoxels::getVolumeRenderingParams () const
void MR::ObjectVoxels::setVolumeRenderingParams (const VolumeRenderingParams &params)
virtual bool MR::ObjectVoxels::hasVisualRepresentation () const override
 mesh object can be seen if the mesh has at least one edge
void MR::ObjectVoxels::setMaxSurfaceVertices (int maxVerts)
 sets top limit on the number of vertices in the iso-surface
int MR::ObjectVoxels::getMaxSurfaceVertices () const
 gets top limit on the number of vertices in the iso-surface
virtual std::shared_ptr< ObjectMR::ObjectVoxels::clone () const override
virtual std::shared_ptr< ObjectMR::ObjectVoxels::shallowClone () const override
virtual void MR::ObjectVoxels::setDirtyFlags (uint32_t mask, bool invalidateCaches=true) override
size_t MR::ObjectVoxels::activeVoxels () const
 returns cached information about the number of active voxels
 MR::ObjectVoxels::ObjectVoxels (ProtectedStruct, const ObjectVoxels &obj)
virtual size_t MR::ObjectVoxels::heapBytes () const override
 returns the amount of memory this object occupies on heap
const char * MR::ObjectVoxels::serializeFormat () const
 returns overriden file extension used to serialize voxels inside this object, nullptr means defaultSerializeVoxelsFormat()
void MR::ObjectVoxels::setSerializeFormat (const char *newFormat)
void MR::ObjectVoxels::resetFrontColor () override
 reset basic object colors to their default values from the current theme
 MR::ObjectVoxels::ObjectVoxels (const ObjectVoxels &other)=default
virtual void MR::ObjectVoxels::swapBase_ (Object &other) override
 swaps this object with other
virtual void MR::ObjectVoxels::swapSignals_ (Object &other) override
virtual void MR::ObjectVoxels::serializeFields_ (Json::Value &root) const override
void MR::ObjectVoxels::deserializeFields_ (const Json::Value &root) override
Expected< void > MR::ObjectVoxels::deserializeModel_ (const std::filesystem::path &path, ProgressCallback progressCb={}) override
 Reads model from file.
virtual Expected< std::future< Expected< void > > > MR::ObjectVoxels::serializeModel_ (const std::filesystem::path &path) const override
const std::string & MR::defaultSerializeVoxelsFormat ()
void MR::setDefaultSerializeVoxelsFormat (std::string newFormat)
float MR::suggestVoxelSize (const MeshPart &mp, float approxNumVoxels)
 computes size of a cubical voxel to get approximately given number of voxels during rasterization
Expected< MeshMR::offsetMesh (const MeshPart &mp, float offset, const OffsetParameters &params={})
Expected< MeshMR::doubleOffsetMesh (const MeshPart &mp, float offsetA, float offsetB, const OffsetParameters &params={})
Expected< MeshMR::mcOffsetMesh (const MeshPart &mp, float offset, const OffsetParameters &params={}, Vector< VoxelId, FaceId > *outMap=nullptr)
Expected< MeshMR::mcShellMeshRegion (const Mesh &mesh, const FaceBitSet &region, float offset, const BaseShellParameters &params, Vector< VoxelId, FaceId > *outMap=nullptr)
Expected< MeshMR::sharpOffsetMesh (const MeshPart &mp, float offset, const SharpOffsetParameters &params={})
Expected< MeshMR::generalOffsetMesh (const MeshPart &mp, float offset, const GeneralOffsetParameters &params)
Expected< MeshMR::thickenMesh (const Mesh &mesh, float offset, const GeneralOffsetParameters &params={}, const PartMapping &map={})
 mapping between original mesh and thicken result
Expected< MeshMR::offsetOneDirection (const MeshPart &mp, float offset, const GeneralOffsetParameters &params={})
Expected< MeshMR::offsetPolyline (const Polyline3 &polyline, float offset, const OffsetParameters &params={})
 MR::RangeProcessor< TreeT, Transformer >::RangeProcessor (const openvdb::math::CoordBBox &b, const TreeT &inT, TreeT &outT, const Transformer &xform)
 MR::RangeProcessor< TreeT, Transformer >::RangeProcessor (const openvdb::math::CoordBBox &b, const TreeT &inTree, const Transformer &xform)
 MR::RangeProcessor< TreeT, Transformer >::~RangeProcessor ()
 MR::RangeProcessor< TreeT, Transformer >::RangeProcessor (RangeProcessor &other, tbb::split)
 Splitting constructor: don't copy the original processor's output tree.
void MR::RangeProcessor< TreeT, Transformer >::setInterrupt (const InterruptFunc &f)
void MR::RangeProcessor< TreeT, Transformer >::operator() (const LeafRange &rCRef)
 Transform each leaf node in the given range.
void MR::RangeProcessor< TreeT, Transformer >::join (RangeProcessor &other)
 Merge another processor's output tree into this processor's tree.
void MR::ShiftTransformer< TreeT >::operator() (const InTreeAccessor &inAcc, OutTreeAccessor &outAcc, openvdb::math::Coord coord)
void MR::ShiftTransformer< TreeT >::setShift (const openvdb::math::Coord &shift)
void MR::translateToZero (openvdb::FloatGrid &grid)
 MR::RangeProgress::RangeProgress (ProgressCallback cb, size_t size, Mode mode)
void MR::RangeProgress::add (size_t l, size_t t)
bool MR::RangeProgress::reportProgress () const
 retorts progress if called from main thread, otherwise do nothing
 MR::RangeProcessorSingle< TreeT, Proc >::RangeProcessorSingle (const openvdb::math::CoordBBox &b, const TreeT &inT, const Proc &proc)
 MR::RangeProcessorSingle< TreeT, Proc >::RangeProcessorSingle (RangeProcessorSingle &other, tbb::split)
 Splitting constructor: don't copy the original processor's output tree.
void MR::RangeProcessorSingle< TreeT, Proc >::setInterrupt (const InterruptFunc &f)
void MR::RangeProcessorSingle< TreeT, Proc >::setProgressHolder (ProgressHolder progressHolder)
void MR::RangeProcessorSingle< TreeT, Proc >::operator() (const LeafRange &rCRef)
 Transform each leaf node in the given range.
void MR::RangeProcessorSingle< TreeT, Proc >::join (RangeProcessorSingle &other)
 Merge another processor's output tree into this processor's tree.
 MR::RangeCounter< TreeT >::RangeCounter ()
 MR::RangeCounter< TreeT >::RangeCounter (const RangeCounter &)
void MR::RangeCounter< TreeT >::action (const LeafIterT &, const TreeAccessor &, const openvdb::math::CoordBBox &)
void MR::RangeCounter< TreeT >::action (const TileIterT &, const TreeAccessor &, const openvdb::math::CoordBBox &)
void MR::RangeCounter< TreeT >::join (const RangeCounter &other)
template<typename GridT>
RangeSize MR::calculateRangeSize (const GridT &grid)
Expected< MeshMR::partialOffsetMesh (const MeshPart &mp, float offset, const GeneralOffsetParameters &params={})
Expected< SimpleVolume > MR::pointsToDistanceVolume (const PointCloud &cloud, const PointsToDistanceVolumeParams &params)
 makes SimpleVolume filled with signed distances to points with normals
FunctionVolume MR::pointsToDistanceFunctionVolume (const PointCloud &cloud, const PointsToDistanceVolumeParams &params)
 makes FunctionVolume representing signed distances to points with normals
Expected< VertColors > MR::calcAvgColors (const PointCloud &cloud, const VertColors &colors, const VertCoords &tgtPoints, const VertBitSet &tgtVerts, float sigma, const ProgressCallback &cb={})
Expected< MeshMR::pointsToMeshFusion (const PointCloud &cloud, const PointsToMeshParameters &params)
Expected< FloatGridMR::polylineToDistanceField (const Polyline3 &polyline, const PolylineToDistanceVolumeParams &params)
 convert polyline to voxels distance field
Expected< VdbVolume > MR::polylineToVdbVolume (const Polyline3 &polyline, const PolylineToDistanceVolumeParams &params)
 convert polyline to VDB volume
Expected< SimpleVolume > MR::polylineToSimpleVolume (const Polyline3 &polyline, const PolylineToVolumeParams &params)
 convert polyline to simple volume
Expected< FunctionVolumeMR::polylineToFunctionVolume (const Polyline3 &polyline, const PolylineToVolumeParams &params)
 convert polyline to function volume
Expected< MeshMR::rebuildMesh (const MeshPart &mp, const RebuildMeshSettings &settings)
std::function< float(const char *)> MR::getTypeConverter (ScalarType scalarType, Uint64 range, Int64 min)
template<typename F>
std::invoke_result_t< F, int > MR::visitScalarType (F &&f, ScalarType scalarType, const char *c)
 More general template to pass a single value of specified format scalarType to a generic function f.
auto MR::SliceInfoBase::operator<=> (const SliceInfoBase &) const =default
void MR::sortScansByOrder (std::vector< std::filesystem::path > &scans, std::vector< SliceInfo > &zOrder)
 Sort scan files in given vector by given slice information.
void MR::putScanFileNameInZ (const std::vector< std::filesystem::path > &scans, std::vector< SliceInfo > &zOrder)
 Read layer heights from given scan file names.
void MR::sortScanFilesByName (std::vector< std::filesystem::path > &scans)
 Sort scan files in given vector by names (respect numbers in it)
 MR::Nesting::SequentialNester::SequentialNester (const NestingBaseParams &params, float voxelSize)
 if voxelSize > 0 peform densification on each addition
Expected< NestingResultMR::Nesting::SequentialNester::nestMesh (const MeshXf &meshXf, const BoxNestingOptions &options, const std::vector< OutEdge > *densificationSequence=nullptr)
Expected< Vector< NestingResult, ObjId > > MR::Nesting::SequentialNester::nestMeshes (const Vector< MeshXf, ObjId > &meshes, const BoxNestingOptions &options, const std::vector< OutEdge > *densificationSequence=nullptr)
Box3f MR::computeWorkArea (const Polyline3 &toolpath, const MeshPart &tool)
 Compute bounding box for swept volume for given tool and toolpath.
Box3i MR::computeGridBox (const Box3f &workArea, float voxelSize)
 Compute required voxel volume's dimensions for given work area.
Expected< MeshMR::computeSweptVolumeWithMeshMovement (const ComputeSweptVolumeParameters &params)
Expected< MeshMR::computeSweptVolumeWithDistanceVolume (const ComputeSweptVolumeParameters &params)
virtual MR::IComputeToolDistance::~IComputeToolDistance ()=default
virtual Expected< Vector3i > MR::IComputeToolDistance::prepare (const Vector3i &dims, const Polyline3 &toolpath, const EndMillTool &toolSpec)=0
virtual Expected< Vector3i > MR::IComputeToolDistance::prepare (const Vector3i &dims, const Polyline3 &toolpath, const Polyline2 &toolProfile)=0
virtual Expected< void > MR::IComputeToolDistance::computeToolDistance (std::vector< float > &output, const Vector3i &dims, float voxelSize, const Vector3f &origin, float padding) const =0
 Compute tool distance.
Expected< MeshMR::computeSweptVolumeWithCustomToolDistance (IComputeToolDistance &comp, const ComputeSweptVolumeParameters &params)
template<int id>
static constexpr DentalId MR::DentalId::fromFDI ()
 Creates id from FDI number known at compile time.
static std::optional< DentalIdMR::DentalId::fromFDI (int id)
 Creates id from FDI number known only at runtime.
int MR::DentalId::fdi () const
 Returns FDI representation of the id.
auto MR::DentalId::operator<=> (const DentalId &other) const =default
static Expected< TeethMaskToDirectionVolumeConvertorMR::TeethMaskToDirectionVolumeConvertor::create (const VdbVolume &volume, const std::vector< int > &additionalIds={})
const HashMap< int, Box3i > & MR::TeethMaskToDirectionVolumeConvertor::getObjectBounds () const
 Returns all the objects present in volume and corresponding bounding boxes.
Expected< ProcessResultMR::TeethMaskToDirectionVolumeConvertor::convertObject (int id) const
 Converts single object into direction volume.
Expected< ProcessResultMR::TeethMaskToDirectionVolumeConvertor::convertAll () const
 Converts all the objects into direction volume.
Expected< std::array< SimpleVolumeMinMax, 3 > > MR::teethMaskToDirectionVolume (const VdbVolume &volume, const std::vector< int > &additionalIds={})
 A shortcut for TeethMaskToDirectionVolumeConvertor::create and TeethMaskToDirectionVolumeConvertor::convertAll.
Expected< Vector< AffineXf3f, ObjId > > MR::Nesting::tetrisNestingDensify (const Vector< MeshXf, ObjId > &meshes, const TetrisDensifyParams &params)
 make nested meshes more compact by representing them via voxels and pushing to nest zero
Expected< ToolPathResultMR::constantZToolPath (const MeshPart &mp, const ToolPathParams &params)
Expected< ToolPathResultMR::lacingToolPath (const MeshPart &mp, const ToolPathParams &params, Axis cutDirection)
 Slices are built along the axis defined by cutDirection argument (can be Axis::X or Axis::Y)
Expected< ToolPathResultMR::constantCuspToolPath (const MeshPart &mp, const ConstantCuspParams &params)
std::shared_ptr< ObjectGcodeMR::exportToolPathToGCode (const std::vector< GCommand > &commands)
 generates G-Code for milling tool
Expected< void > MR::interpolateLines (std::vector< GCommand > &commands, const LineInterpolationParams &params, Axis axis)
 interpolates several points lying on the same straight line with one move
Expected< void > MR::interpolateArcs (std::vector< GCommand > &commands, const ArcInterpolationParams &params, Axis axis)
 interpolates given path with arcs
FaceBitSet MR::smoothSelection (Mesh &mesh, const FaceBitSet &region, float expandOffset, float shrinkOffset)
FloatGrid MR::meshToLevelSet (const MeshPart &mp, const AffineXf3f &xf, const Vector3f &voxelSize, float surfaceOffset=3, ProgressCallback cb={})
FloatGrid MR::meshToDistanceField (const MeshPart &mp, const AffineXf3f &xf, const Vector3f &voxelSize, float surfaceOffset=3, ProgressCallback cb={})
void MR::evalGridMinMax (const FloatGrid &grid, float &min, float &max)
 eval min max value from FloatGrid
Expected< VdbVolume > MR::meshToDistanceVdbVolume (const MeshPart &mp, const MeshToVolumeParams &params={})
Expected< VdbVolume > MR::meshToVolume (const MeshPart &mp, const MeshToVolumeParams &params={})
VdbVolume MR::floatGridToVdbVolume (FloatGrid grid)
 fills VdbVolume data from FloatGrid (does not fill voxels size, cause we expect it outside)
FloatGrid MR::simpleVolumeToDenseGrid (const SimpleVolume &simpleVolume, float background=0.0f, ProgressCallback cb={})
VdbVolume MR::simpleVolumeToVdbVolume (const SimpleVolumeMinMax &simpleVolume, ProgressCallback cb={})
 set the simpleVolume.min as the background value
VdbVolume MR::functionVolumeToVdbVolume (const FunctionVolume &functoinVolume, ProgressCallback cb={})
template<typename AccessorOrGrid>
void MR::putSimpleVolumeInDenseGrid (AccessorOrGrid &gridAccessor, const Vector3i &minCoord, const SimpleVolume &simpleVolume, ProgressCallback cb={})
 Copy given simpleVolume into the grid, starting at minCoord Instantiated for AccessorOrGrid in { openvdb::FloatGrid::Accessor, FloatGrid, openvdb::FloatGrid }. The template is used to not include openvdb's mess into this header (forward declaring classes in openvdb is also non-trivial). When used with a Grid, multithreaded implementation of copying is used (so the function is not thread safe). When used with an Accessor, this function could be called from different threads on the same volume (provided that accessors are different, of course).
Expected< SimpleVolumeMinMaxMR::vdbVolumeToSimpleVolume (const VdbVolume &vdbVolume, const Box3i &activeBox=Box3i(), ProgressCallback cb={})
Expected< SimpleVolumeMinMaxMR::vdbVolumeToSimpleVolumeNorm (const VdbVolume &vdbVolume, const Box3i &activeBox=Box3i(), std::optional< MinMaxf > sourceScale={}, ProgressCallback cb={})
Expected< SimpleVolumeMinMaxU16 > MR::vdbVolumeToSimpleVolumeU16 (const VdbVolume &vdbVolume, const Box3i &activeBox=Box3i(), std::optional< MinMaxf > sourceScale={}, ProgressCallback cb={})
Expected< MeshMR::gridToMesh (const FloatGrid &grid, const GridToMeshSettings &settings)
 converts OpenVDB Grid into mesh using Dual Marching Cubes algorithm
Expected< MeshMR::gridToMesh (FloatGrid &&grid, const GridToMeshSettings &settings)
Expected< void > MR::makeSignedByWindingNumber (FloatGrid &grid, const Vector3f &voxelSize, const Mesh &refMesh, const MakeSignedByWindingNumberSettings &settings)
 set signs for unsigned distance field grid using generalized winding number computed at voxel grid point from refMesh
Expected< MeshMR::doubleOffsetVdb (const MeshPart &mp, const DoubleOffsetSettings &settings)
 MR::ProgressInterrupter::ProgressInterrupter (ProgressCallback cb)
virtual bool MR::ProgressInterrupter::wasInterrupted (int percent=-1) override
bool MR::ProgressInterrupter::getWasInterrupted () const
 MR::VoxelsVolumeInterpolatedAccessor< Accessor >::VoxelsVolumeInterpolatedAccessor (const VolumeType &volume, const Accessor &accessor)
 MR::VoxelsVolumeInterpolatedAccessor< Accessor >::VoxelsVolumeInterpolatedAccessor (const VoxelsVolumeInterpolatedAccessor &)=delete
 delete copying constructor to avoid accidentally creating non-thread-safe accessors
 MR::VoxelsVolumeInterpolatedAccessor< Accessor >::VoxelsVolumeInterpolatedAccessor (const VoxelsVolumeInterpolatedAccessor &other, const Accessor &accessor)
 a copying-like constructor with explicitly provided accessor
ValueType MR::VoxelsVolumeInterpolatedAccessor< Accessor >::get (const Vector3f &pos) const
 get value at specified coordinates
template<typename Accessor>
SimpleVolumeMinMax MR::resampleVolumeByInterpolation (const typename Accessor::VolumeType &volume, const Accessor &accessor, const Vector3f &newVoxelSize)
 sample function that resamples the voxel volume using interpolating accessor
VdbVolume MR::voxelFilter (const VdbVolume &volume, VoxelFilterType type, int width)
TransformVdbVolumeResult MR::transformVdbVolume (const VdbVolume &volume, const AffineXf3f &xf, bool fixBox=false, const Box3f &box={})
bool MR::voxelsApplyTransform (ObjectVoxels &obj, const AffineXf3f &xf, bool fixBox)
template<typename Volume>
Expected< void > MR::mergeVolumePart (Mesh &mesh, std::vector< EdgePath > &cutContours, Volume &&volume, float leftCutPosition, float rightCutPosition, const MergeVolumePartSettings &settings={})
 Merge one mesh with another generated from a voxel volume part.
template<typename Volume>
Expected< MeshMR::volumeToMeshByParts (const VolumePartBuilder< Volume > &builder, const Vector3i &dimensions, const Vector3f &voxelSize, const VolumeToMeshByPartsSettings &settings={}, const MergeVolumePartSettings &mergeSettings={})
 converts a voxel volume into a mesh without full memory loading
MRVOXELS_CLASS MR::VoxelsVolumeMinMax< Vector< float, VoxelId > > (SimpleVolumeMinMaxU16, VoxelsVolumeMinMax< Vector< uint16_t, VoxelId > >)(VdbVolume
MRVOXELS_CLASS MR::VoxelsVolume< VoxelValueGetter< float > > (FunctionVolumeU8, VoxelsVolume< VoxelValueGetter< uint8_t > >)(SimpleVolume
MRVOXELS_CLASS MR::VoxelsVolume< Vector< float, VoxelId > > (SimpleVolumeU16, VoxelsVolume< Vector< uint16_t, VoxelId > >)(SimpleBinaryVolume
size_t MR::VoxelsVolume< T >::heapBytes () const
Expected< SimpleVolumeMinMaxMR::functionVolumeToSimpleVolume (const FunctionVolume &volume, const ProgressCallback &callback={})
 converts function volume into simple volume
 MR::VoxelsVolumeAccessor< VdbVolume >::VoxelsVolumeAccessor (const VolumeType &volume)
ValueType MR::VoxelsVolumeAccessor< VdbVolume >::get (const Vector3i &pos) const
ValueType MR::VoxelsVolumeAccessor< VdbVolume >::get (const VoxelLocation &loc) const
const Vector3i & MR::VoxelsVolumeAccessor< VdbVolume >::minCoord () const
Vector3f MR::VoxelsVolumeAccessor< VdbVolume >::shift () const
 this additional shift shall be added to integer voxel coordinates during transformation in 3D space
 MR::VoxelsVolumeAccessor< VoxelsVolume< Vector< T, VoxelId > > >::VoxelsVolumeAccessor (const VolumeType &volume)
ValueType MR::VoxelsVolumeAccessor< VoxelsVolume< Vector< T, VoxelId > > >::get (const Vector3i &pos) const
ValueType MR::VoxelsVolumeAccessor< VoxelsVolume< Vector< T, VoxelId > > >::get (const VoxelLocation &loc) const
Vector3f MR::VoxelsVolumeAccessor< VoxelsVolume< Vector< T, VoxelId > > >::shift () const
 this additional shift shall be added to integer voxel coordinates during transformation in 3D space
 MR::VoxelsVolumeAccessor< VoxelsVolume< VoxelValueGetter< T > > >::VoxelsVolumeAccessor (const VolumeType &volume)
ValueType MR::VoxelsVolumeAccessor< VoxelsVolume< VoxelValueGetter< T > > >::get (const Vector3i &pos) const
ValueType MR::VoxelsVolumeAccessor< VoxelsVolume< VoxelValueGetter< T > > >::get (const VoxelLocation &loc) const
Vector3f MR::VoxelsVolumeAccessor< VoxelsVolume< VoxelValueGetter< T > > >::shift () const
 this additional shift shall be added to integer voxel coordinates during transformation in 3D space
 MR::VoxelsVolumeCachingAccessor< V >::VoxelsVolumeCachingAccessor (const VoxelsVolumeAccessor< V > &accessor, const VolumeIndexer &indexer, Parameters parameters={})
int MR::VoxelsVolumeCachingAccessor< V >::currentLayer () const
 get current layer
bool MR::VoxelsVolumeCachingAccessor< V >::preloadLayer (int z, const ProgressCallback &cb={})
bool MR::VoxelsVolumeCachingAccessor< V >::preloadNextLayer (const ProgressCallback &cb={})
ValueType MR::VoxelsVolumeCachingAccessor< V >::get (const VoxelLocation &loc) const
 get voxel volume data
bool fromSameTriangle (const MeshTopology &topology, EdgePoint &a, EdgePoint &b)
bool fromSameTriangle (const MeshTopology &topology, EdgePoint &&a, EdgePoint &&b)
template<typename V>
std::pair< QuadraticForm< V >, V > sum (const QuadraticForm< V > &q0, const V &x0, const QuadraticForm< V > &q1, const V &x1, bool minAmong01=false)
 if true then the minimum is selected only between points x0 and x1
template<typename V>
QuadraticForm< V > sumAt (const QuadraticForm< V > &q0, const V &x0, const QuadraticForm< V > &q1, const V &x1, const V &pos)

Variables

UI::RadioButtonOrModifierState MR::MoveObjectByMouse::MoveObjectByMouseWithSelected::modXfMode {}
 Options are provided externally rather than directly from modifiers.
UI::RadioButtonOrModifierState MR::MoveObjectByMouse::MoveObjectByMouseWithSelected::modXfTarget {}
 XfMode.
bool MR::EmbeddedPython::Config::siteImport { true }
std::string MR::EmbeddedPython::Config::home
std::vector< std::string > MR::EmbeddedPython::Config::argv
static MREMBEDDEDPYTHON_API Config MR::EmbeddedPython::pythonConfig
MeshCompression MR::MeshSave::CtmSaveOptions::meshCompression = MeshCompression::Lossless
float MR::MeshSave::CtmSaveOptions::vertexPrecision = 1.0f / 1024.0f
int MR::MeshSave::CtmSaveOptions::compressionLevel = 1
 LZMA compression: 0 - minimal compression, but fast; 9 - maximal compression, but slow.
const char * MR::MeshSave::CtmSaveOptions::comment = "MeshInspector.com"
 comment saved in the file
int MR::PointsSave::CtmSavePointsOptions::compressionLevel = 1
 0 - minimal compression, but fast; 9 - maximal compression, but slow
const char * MR::PointsSave::CtmSavePointsOptions::comment = "MeshInspector Points"
 comment saved in the file
Vector< MeshXf, ObjId > MR::Nesting::Nesting3mfParams::meshes
 nested meshes with their transforms into nest
float MR::Nesting::Nesting3mfParams::zStep = 1.0f
 slicing step
bool MR::Nesting::Nesting3mfParams::decimateSlices { true }
 if set: decimate slices
const ImageMR::Nesting::Nesting3mfParams::image = nullptr
 optional image of all meshes in nest
const std::vector< Image > * MR::Nesting::Nesting3mfParams::meshImages { nullptr }
 optional screen shots of each mesh one by one
const std::vector< std::string > * MR::Nesting::Nesting3mfParams::meshNames { nullptr }
 optional names of each mesh one by one
ProgressCallback MR::Nesting::Nesting3mfParams::cb
float MR::PdfParameters::titleSize = 18.f
float MR::PdfParameters::textSize = 14.f
PdfGeneralFont MR::PdfParameters::defaultFont = PdfBuildinFont::Helvetica
 Font name.
PdfGeneralFont MR::PdfParameters::defaultFontBold = PdfBuildinFont::HelveticaBold
PdfGeneralFont MR::PdfParameters::tableFont = PdfBuildinFont::Courier
PdfGeneralFont MR::PdfParameters::tableFontBold = PdfBuildinFont::CourierBold
PdfGeneralFont MR::Pdf::TextParams::fontName = PdfBuildinFont::Helvetica
float MR::Pdf::TextParams::fontSize = 14.f
AlignmentHorizontal MR::Pdf::TextParams::alignment = AlignmentHorizontal::Left
Color MR::Pdf::TextParams::colorText = Color::black()
bool MR::Pdf::TextParams::underline = false
Color MR::Pdf::PaletteRowStats::color
std::string MR::Pdf::PaletteRowStats::rangeMin
std::string MR::Pdf::PaletteRowStats::rangeMax
std::string MR::Pdf::PaletteRowStats::percent
Vector2f MR::Pdf::ImageParams::size
std::string MR::Pdf::ImageParams::caption
 caption if not empty - add caption under marks (if exist) or image.
enum MR::Pdf::ImageParams::UniformScale MR::Pdf::ImageParams::uniformScale = UniformScale::None
enum MR::Pdf::ImageParams::AlignmentVertical MR::Pdf::ImageParams::alignmentVertical = AlignmentVertical::Top
AlignmentHorizontal MR::Pdf::ImageParams::alignmentHorizontal = AlignmentHorizontal::Left
Value MR::Pdf::Cell::data
std::optional< ColorMR::Pdf::CellCustomParams::colorText
std::optional< ColorMR::Pdf::CellCustomParams::colorCellBg
std::optional< ColorMR::Pdf::CellCustomParams::colorCellBorder
std::optional< std::string > MR::Pdf::CellCustomParams::text
TextParams MR::Pdf::TextCellParams::textParams
Box2f MR::Pdf::TextCellParams::rect
Color MR::Pdf::TextCellParams::colorBorder = Color::transparent()
Color MR::Pdf::TextCellParams::colorBackground = Color::transparent()
float MR::Pdf::ColumnInfo::width = 100
std::string MR::Pdf::ColumnInfo::valueFormat = "{}"
Color MR::Pdf::TableGeneralParams::colorTitleText = Color::white()
Color MR::Pdf::TableGeneralParams::colorTitleBg { 42, 102, 246 }
Color MR::Pdf::TableGeneralParams::colorCellText = Color::black()
Color MR::Pdf::TableGeneralParams::colorCellBg1 { 170, 194, 251 }
Color MR::Pdf::TableGeneralParams::colorCellBg2 { 212, 224, 253 }
Color MR::Pdf::TableGeneralParams::colorLines = Color::white()
float MR::Pdf::TableGeneralParams::fontSize = 12.f
VertId MR::PlanarTriangulation::IntersectionInfo::lOrg
VertId MR::PlanarTriangulation::IntersectionInfo::lDest
VertId MR::PlanarTriangulation::IntersectionInfo::uOrg
 ids of upper intersection edge vertices
VertId MR::PlanarTriangulation::IntersectionInfo::uDest
float MR::PlanarTriangulation::IntersectionInfo::lRatio = 0.0f
float MR::PlanarTriangulation::IntersectionInfo::uRatio = 0.0f
size_t MR::PlanarTriangulation::IntersectionsMap::shift { 0 }
 shift of index
ContourIdMap MR::PlanarTriangulation::IntersectionsMap::map
 map[id-shift] = {lower intersection edge, upper intersection edge}
bool MR::PlanarTriangulation::BaseOutlineParameters::allowMerge { false }
 allow to merge vertices with same coordinates
WindingMode MR::PlanarTriangulation::BaseOutlineParameters::innerType { WindingMode::Negative }
 what to mark as inner part
ContoursIdMapMR::PlanarTriangulation::OutlineParameters::indicesMap { nullptr }
 optional output from result contour ids to input ones
BaseOutlineParameters MR::PlanarTriangulation::OutlineParameters::baseParams
NodeVec MR::AABBTreeBase< T >::nodes_
float MR::NoiseSettings::sigma = 0.01f
unsigned int MR::NoiseSettings::seed = 0
 start state of the generator engine
ProgressCallback MR::NoiseSettings::callback = {}
std::array< ViewportMask, sizeof...(Properties)> MR::AddVisualProperties< BaseObjectType, Properties >::propertyMasks_
 All enabled by default.
M MR::AffineXf< V >::A
MR::AffineXf< V >::b
MeshTriPoint MR::FlowOrigin::point
 point on the mesh, where this flow starts
float MR::FlowOrigin::amount = 1
 amount of flow, e.g. can be proportional to the horizontal area associated with the start point
Polyline3 * MR::OutputFlows::pPolyline = nullptr
 optional output: lines of all flows
UndirectedEdgeScalars * MR::OutputFlows::pFlowPerEdge = nullptr
 optional output: flow in each line of outPolyline
float MR::OutputFlows::amountGreaterThan = 0
 output in outPolyline only the flows with the amount greater than
Polyline3 MR::FlowAggregator::Flows::polyline
UndirectedEdgeScalars MR::FlowAggregator::Flows::flowPerEdge
MeshTriPoint MR::ContoursMeshAlignParams::meshPoint
 Point coordinate on mesh, represent position of contours box 'pivotPoint' on mesh.
Vector2f MR::ContoursMeshAlignParams::pivotPoint { 0.0f, 0.0f }
Vector3f MR::ContoursMeshAlignParams::xDirection
 Represents 2d contours xDirection in mesh space.
const Vector3f * MR::ContoursMeshAlignParams::zDirection { nullptr }
float MR::ContoursMeshAlignParams::extrusion { 1.0f }
 Contours extrusion in +z and -z direction.
float MR::ContoursMeshAlignParams::maximumShift { 2.5f }
 Maximum allowed shift along 'zDirection' for alignment.
float MR::BendContoursAlongCurveParams::pivotCurveTime = 0
Vector2f MR::BendContoursAlongCurveParams::pivotBoxPoint {0.0f, 0.0f}
bool MR::BendContoursAlongCurveParams::periodicCurve = false
 if true, curve parameter will be always within [0,curve.totalLength) with repetition: xr := mod( x, curve.totalLength )
bool MR::BendContoursAlongCurveParams::stretch = true
 stretch all contours along curve to fit in curve.totalLength
float MR::BendContoursAlongCurveParams::extrusion { 1.0f }
 Contours extrusion outside of curve level.
static constexpr int MR::Ball< V >::elements = VTraits::size
MR::Ball< V >::center
 ball's center
T MR::Ball< V >::radiusSq = 0
 ball's squared radius
static constexpr size_t MR::Polynomial< T, degree >::n = degree + 1
MR_BIND_IGNORE Eigen::Vector< T, nMR::Polynomial< T, degree >::a
 We're not binding Eigen at the moment, so this has to be hidden.
Polynomialx< T > MR::PolynomialWrapper< T >::poly
static constexpr int MR::CubicBezierCurve< V >::elements = VTraits::size
MR::CubicBezierCurve< V >::p [4]
 4 control points
Vector3f MR::Nesting::BoxNestingCorner::pos
 Vector3f - corner position.
uint8_t MR::Nesting::BoxNestingCorner::bitMask { 0 }
 corner mask 0bZYX (0b000 - lower left corner, 0b111 - upper right)
bool MR::Nesting::BoxNestingOptions::allow3dNesting { true }
 if true allows placing objects over the bottom plane
bool MR::Nesting::BoxNestingOptions::allowRotation { false }
 set false to keep original XY orientation
bool MR::Nesting::BoxNestingOptions::volumeBasedOrder = true
 if true - nests objects in the order of decreasing volume, otherwise nest in the input order
bool MR::Nesting::BoxNestingOptions::checkLessCombinations { false }
 reduces nesting candidate options for speedup
int MR::Nesting::BoxNestingOptions::iterationLimit = 10'000'000
 limit maximum number of tries, not to freeze for too long in this function
std::shared_ptr< IBoxNestingPriorityMR::Nesting::BoxNestingOptions::priorityMetric
const Vector3f * MR::Nesting::BoxNestingOptions::expansionFactor { nullptr }
 optional input expansion of boxes (useful to compensate shrinkage of material)
const std::vector< Box3f > * MR::Nesting::BoxNestingOptions::preNestedVolumes { nullptr }
 if not-nullptr contains boxes that are fixed in the nest and should not be intersected by floating (input) meshes
const std::vector< BoxNestingCorner > * MR::Nesting::BoxNestingOptions::additinalSocketCorners { nullptr }
 user might force these sockets to be considered as corners for placing candidates
ProgressCallback MR::Nesting::BoxNestingOptions::cb
 callback indicating progress of the nesting
NestingBaseParams MR::Nesting::BoxNestingParams::baseParams
BoxNestingOptions MR::Nesting::BoxNestingParams::options
MR::ZeroOnMove< T >::val = 0
Buffer< T, IMR::BMap< T, I >::b
size_t MR::BMap< T, I >::tsize = 0
 target size, all values inside b must be less than this value
UndirectedEdgeBMap MR::PackMapping::e
FaceBMap MR::PackMapping::f
VertBMap MR::PackMapping::v
size_t MR::Chunk::offset
 chunk offset
size_t MR::Chunk::size
 chunk size; the last chunk's size may be smaller than other chunk's ones
size_t MR::ChunkIterator::totalSize { 0 }
size_t MR::ChunkIterator::chunkSize { 0 }
size_t MR::ChunkIterator::overlap { 0 }
size_t MR::ChunkIterator::index { 0 }
VertId MR::PointAndDistance::vId
 a cloud's point
float MR::PointAndDistance::dist = 0
 the distance from input location to point vId considering point's weight
Vector3f MR::MeshPointAndDistance::loc
 point location
MeshTriPoint MR::MeshPointAndDistance::mtp
 the corresponding point on mesh in barycentric representation
float MR::MeshPointAndDistance::eucledeanDist = 0
 euclidean distance from input location to mtp
float MR::MeshPointAndDistance::w = 0
 point's weight
bool MR::MeshPointAndDistance::bidirectionalOrOutside = true
VertMetric MR::DistanceFromWeightedPointsParams::pointWeight
 function returning the weight of each point, must be set by the user
float MR::DistanceFromWeightedPointsParams::minWeight = 0
float MR::DistanceFromWeightedPointsParams::maxWeight = 0
float MR::DistanceFromWeightedPointsParams::maxWeightGrad = FLT_MAX
bool MR::DistanceFromWeightedPointsParams::bidirectionalMode = true
float MR::DistanceFromWeightedPointsComputeParams::minBidirDist = -FLT_MAX
float MR::DistanceFromWeightedPointsComputeParams::maxBidirDist = FLT_MAX
 default 0 here does not work for negative distances
VertMap * MR::CloudPartMapping::src2tgtVerts = nullptr
 from.id -> this.id, efficient when full cloud without many invalid points is added into another cloud
VertMap * MR::CloudPartMapping::tgt2srcVerts = nullptr
 this.id -> from.id, efficient when any cloud or its part is added into empty cloud
uint8_t MR::Color::r
uint8_t MR::Color::g
uint8_t MR::Color::b
uint8_t MR::Color::a
ColorMap MR::ColorMapAggregator< Tag >::PartialColorMap::colorMap
ElementBitSet MR::ColorMapAggregator< Tag >::PartialColorMap::elements
 color map
Line3< T > MR::Cone3< T >::axis
MR::Cone3< T >::angle = 0
 for any cone point dot( point , direction ) >=0
MR::Cone3< T >::height = 0
 cone angle, main axis vs side
std::vector< Eigen::Vector3< T > > MR::ConeFittingFunctor< T >::points
int MR::Cone3ApproximationParams::levenbergMarquardtMaxIteration = 40
ConeFitterType MR::Cone3ApproximationParams::coneFitterType = ConeFitterType::HemisphereSearchFit
int MR::Cone3ApproximationParams::hemisphereSearchPhiResolution = 30
int MR::Cone3ApproximationParams::hemisphereSearchThetaResolution = 30
UndirectedEdgeBitSet MR::NewEdgesMap::splitEdges
HashMap< UndirectedEdgeId, int > MR::NewEdgesMap::map
const SortIntersectionsDataMR::CutMeshParameters::sortData {nullptr}
FaceMap * MR::CutMeshParameters::new2OldMap {nullptr}
 This is optional output - map from newly generated faces to old faces (N-1)
enum MR::CutMeshParameters::ForceFill MR::CutMeshParameters::None
NewEdgesMapMR::CutMeshParameters::new2oldEdgesMap { nullptr }
 Optional output map for each new edge introduced after cut maps edge from old topology or old face.
std::vector< EdgePathMR::CutMeshResult::resultCut
 Paths of new edges on mesh, they represent same contours as input, but already cut.
FaceBitSet MR::CutMeshResult::fbsWithContourIntersections
Vector3f MR::CutByProjectionSettings::direction
 direction of projection (in mesh space)
const AffineXf3f * MR::CutByProjectionSettings::cont2mesh { nullptr }
 if set - used to transform contours form its local space to mesh local space
Vector3f MR::CurvePoint::pos
 position on the curve
Vector3f MR::CurvePoint::dir
 direction along the curve
Vector3f MR::CurvePoint::snorm
 the normal of the surface where the curve is located
std::function< CurvePoint(float)> MR::CurveFunc::func
 curve given as a function: position along curve -> point
float MR::CurveFunc::totalLength = 1.0f
 total length of the given curve
Line3< T > MR::Cylinder3< T >::mainAxis
MR::Cylinder3< T >::radius = 0
MR::Cylinder3< T >::length = 0
MR::Cylinder3Approximation< T >::BestHemisphereStoredData::error = std::numeric_limits<T>::max()
MR::Cylinder3Approximation< T >::BestHemisphereStoredData::rootSquare = std::numeric_limits<T>::max()
Eigen::Vector< T, 3 > MR::Cylinder3Approximation< T >::BestHemisphereStoredData::W
Eigen::Vector< T, 3 > MR::Cylinder3Approximation< T >::BestHemisphereStoredData::PC
Vector3f MR::Dipole::pos
float MR::Dipole::area = 0
Vector3f MR::Dipole::dirArea
float MR::Dipole::rr = 0
std::filesystem::directory_iterator MR::DirectoryIterator::it
std::error_code & MR::DirectoryIterator::ec
std::filesystem::path MR::Directory::dir
std::error_code & MR::Directory::ec
std::filesystem::recursive_directory_iterator MR::DirectoryRecursiveIterator::it
std::error_code & MR::DirectoryRecursiveIterator::ec
std::filesystem::path MR::DirectoryRecursive::dir
std::error_code & MR::DirectoryRecursive::ec
float MR::DistanceToMeshOptions::minDistSq { 0 }
 minimum squared distance from a point to mesh to be computed precisely
float MR::DistanceToMeshOptions::maxDistSq { FLT_MAX }
 maximum squared distance from a point to mesh to be computed precisely
bool MR::DistanceToMeshOptions::nullOutsideMinMax = true
float MR::DistanceToMeshOptions::windingNumberThreshold = 0.5f
float MR::DistanceToMeshOptions::windingNumberBeta = 2
SignDetectionMode MR::SignedDistanceToMeshOptions::signMode { SignDetectionMode::ProjectionNormal }
 the method to compute distance sign
MeshTopology MR::EdgeLengthMesh::topology
UndirectedEdgeScalars MR::EdgeLengthMesh::edgeLengths
VertId MR::TerminalVertex::v
float MR::TerminalVertex::metric = 0
EdgeId MR::VertPathInfo::back
 edge from this vertex to its predecessor in the forest
float MR::VertPathInfo::metric = FLT_MAX
 best summed metric to reach this vertex
VertId MR::EdgePathsBuilderT< MetricToPenalty >::ReachedVert::v
EdgeId MR::EdgePathsBuilderT< MetricToPenalty >::ReachedVert::backward
 edge from this vertex to its predecessor in the forest (if this vertex is not start)
float MR::EdgePathsBuilderT< MetricToPenalty >::ReachedVert::penalty = FLT_MAX
float MR::EdgePathsBuilderT< MetricToPenalty >::ReachedVert::metric = FLT_MAX
 summed metric to reach this vertex
MR_NO_UNIQUE_ADDRESS MetricToPenalty MR::EdgePathsBuilderT< MetricToPenalty >::metricToPenalty_
VertId MR::EdgePathsBuilderT< MetricToPenalty >::CandidateVert::v
float MR::EdgePathsBuilderT< MetricToPenalty >::CandidateVert::penalty = FLT_MAX
 best penalty to reach this vertex
const VertCoords * MR::MetricToAStarPenalty::points = nullptr
Vector3f MR::MetricToAStarPenalty::target
EdgeId MR::EdgePoint::e
SegmPointf MR::EdgePoint::a
 a in [0,1], a=0 => point is in org( e ), a=1 => point is in dest( e )
EdgePoint MR::EdgePointPair::a
EdgePoint MR::EdgePointPair::b
EdgeId MR::EdgeSegment::e
 id of the edge
SegmPointf MR::EdgeSegment::a { 0.0f }
 start of the segment
SegmPointf MR::EdgeSegment::b { 1.0f }
 end of the segment
float MR::EmbeddedStructureParameters::fillAngle = 0.0f
 angle of fill cone (mound)
float MR::EmbeddedStructureParameters::cutAngle = 0.0f
 angle of cut cone (pit)
float MR::EmbeddedStructureParameters::minAnglePrecision = PI_F / 9.0f
 min angle precision of basin expansion
FaceBitSet * MR::EmbeddedStructureParameters::outStructFaces { nullptr }
 optional out new faces of embedded structure
FaceBitSet * MR::EmbeddedStructureParameters::outFillFaces { nullptr }
 optional out new faces of fill part
FaceBitSet * MR::EmbeddedStructureParameters::outCutFaces { nullptr }
 optional out new faces of cut part
FaceMap * MR::EmbeddedStructureParameters::new2oldFaces { nullptr }
 optional out map new terrain faces to old terrain faces
Type MR::EndMillCutter::type = Type::Flat
float MR::EndMillCutter::cornerRadius = 0.f
 (bull nose) corner radius
float MR::EndMillCutter::cuttingAngle = 0.f
 (chamfer) cutting angle
float MR::EndMillCutter::endDiameter = 0.f
 (chamfer) end diameter
float MR::EndMillTool::length = 1.f
 overall tool length
float MR::EndMillTool::diameter = 0.1f
 tool diameter
EndMillCutter MR::EndMillTool::cutter
 cutter
OutputFaceValues MR::FaceDistancesSettings::out = OutputFaceValues::Distances
float * MR::FaceDistancesSettings::maxDist = nullptr
 optional output of the maximal distance to the most distant face
ProgressCallback MR::FaceDistancesSettings::progress
 for progress reporting and cancellation
static constexpr std::string_view MR::ObjKindTraits< FeaturesObjectKind::Point >::name = "Point"
static constexpr std::string_view MR::ObjKindTraits< FeaturesObjectKind::Line >::name = "Line"
static constexpr std::string_view MR::ObjKindTraits< FeaturesObjectKind::Plane >::name = "Plane"
static constexpr std::string_view MR::ObjKindTraits< FeaturesObjectKind::Circle >::name = "Circle"
static constexpr std::string_view MR::ObjKindTraits< FeaturesObjectKind::Sphere >::name = "Sphere"
static constexpr std::string_view MR::ObjKindTraits< FeaturesObjectKind::Cylinder >::name = "Cylinder"
static constexpr std::string_view MR::ObjKindTraits< FeaturesObjectKind::Cone >::name = "Cone"
std::string MR::FeatureObjectSharedProperty::propertyName
FeaturePropertyKind MR::FeatureObjectSharedProperty::kind
std::function< FeaturesPropertyTypesVariant(const FeatureObject *objectToInvoke, ViewportId id)> MR::FeatureObjectSharedProperty::getter
 due to getAllSharedProperties in FeatureObject returns static vector, we need externaly setup object to invoke setter ad getter.
std::function< void(const FeaturesPropertyTypesVariant &, FeatureObject *objectToInvoke, ViewportId id)> MR::FeatureObjectSharedProperty::setter
Vector3f MR::FeatureObjectProjectPointResult::point
std::optional< Vector3f > MR::FeatureObjectProjectPointResult::normal
 Subfeatures
 DetailsOnNameTag
 _count
 If true, show additional details on the name tag, such as point coordinates. Not all features use this.
ViewportMask MR::FeatureObject::subfeatureVisibility_ = ViewportMask::all()
ViewportMask MR::FeatureObject::detailsOnNameTag_ = ViewportMask::all()
ViewportProperty< Matrix3f > MR::FeatureObject::r_
ViewportProperty< Matrix3f > MR::FeatureObject::s_
 rotation
std::array< ViewportProperty< Color >, 2 > MR::FeatureObject::decorationsColor_
 scale
float MR::FeatureObject::pointSize_ = 10
 Those apply only to some features:
float MR::FeatureObject::lineWidth_ = 2
float MR::FeatureObject::subPointSize_ = 6
 Point size and line width, for subfeatures rather than primary rendering.
float MR::FeatureObject::subLineWidth_ = 1
float MR::FeatureObject::mainFeatureAlpha_ = 1
 Per-component alpha multipliers. The global alpha is multiplied by thise.
float MR::FeatureObject::subAlphaPoints_ = 1
float MR::FeatureObject::subAlphaLines_ = 1
float MR::FeatureObject::subAlphaMesh_ = 0.5f
float MR::RefineParameters::distanceLimit { 0.1f }
 Maximum distance from the source model to the feature.
float MR::RefineParameters::normalTolerance { 30.f }
 Maximum angle between the source model's normal and the feature's normal.
const FaceBitSet * MR::RefineParameters::faceRegion {}
 (for meshes only) Reference faces used for filtering intermediate results that are too far from it
const VertBitSet * MR::RefineParameters::vertRegion {}
 (for meshes only) Reference vertices used for filtering intermediate results that are too far from it
int MR::RefineParameters::maxIterations { 10 }
 Maximum amount of iterations performed until a stable set of points is found.
ProgressCallback MR::RefineParameters::callback
 Progress callback.
Vector3f MR::Features::Primitives::Plane::center
Vector3f MR::Features::Primitives::Plane::normal = Vector3f( 1, 0, 0 )
 This must be normalized. The sign doesn't matter.
Vector3f MR::Features::Primitives::ConeSegment::referencePoint
 Some point on the axis, but not necessarily the true center point. Use centerPoint() for that.
Vector3f MR::Features::Primitives::ConeSegment::dir
 The axis direction. Must be normalized.
float MR::Features::Primitives::ConeSegment::positiveSideRadius = 0
 Cap radius in the dir direction.
float MR::Features::Primitives::ConeSegment::negativeSideRadius = 0
 Cap radius in the direction opposite to dir.
float MR::Features::Primitives::ConeSegment::positiveLength = 0
 Distance from the center to the cap in the dir direction.
float MR::Features::Primitives::ConeSegment::negativeLength = 0
 Distance from the center to the cap in the direction opposite to dir.
bool MR::Features::Primitives::ConeSegment::hollow = false
 If true, the cone has no caps and no volume, and all distances (to the conical surface, that is) are positive.
Status MR::Features::MeasureResult::BasicPart::status = Status::notImplemented
float MR::Features::MeasureResult::Distance::distance = 0
 This is a separate field because it can be negative.
Vector3f MR::Features::MeasureResult::Distance::closestPointA
Vector3f MR::Features::MeasureResult::Distance::closestPointB
Distance MR::Features::MeasureResult::distance
 Exact distance.
Distance MR::Features::MeasureResult::centerDistance
Vector3f MR::Features::MeasureResult::Angle::pointA
Vector3f MR::Features::MeasureResult::Angle::pointB
Vector3f MR::Features::MeasureResult::Angle::dirA
Vector3f MR::Features::MeasureResult::Angle::dirB
 Normalized.
bool MR::Features::MeasureResult::Angle::isSurfaceNormalA = false
 Whether dir{A,B} is a surface normal or a line direction.
bool MR::Features::MeasureResult::Angle::isSurfaceNormalB = false
Angle MR::Features::MeasureResult::angle
std::vector< Primitives::VariantMR::Features::MeasureResult::intersections
 The primitives obtained from intersecting those two.
UndirectedEdgeBitSet * MR::SubdivideFillingSettings::notFlippable = nullptr
 in triangulateOnly = false mode, edges specified by this bit-set will never be flipped, but they can be split so it is updated during the operation
float MR::SubdivideFillingSettings::maxEdgeLen = 0
 Subdivision is stopped when all edges inside or on the boundary of the region are not longer than this value.
int MR::SubdivideFillingSettings::maxEdgeSplits = 1000
 Maximum number of edge splits allowed during subdivision.
float MR::SubdivideFillingSettings::maxAngleChangeAfterFlip = 30 * PI_F / 180.0f
 Improves local mesh triangulation by doing edge flips if it does not change dihedral angle more than on this value (in radians)
std::function< bool(EdgeId e)> MR::SubdivideFillingSettings::beforeEdgeSplit
 (If this is set) this function is called in subdivision each time edge (e) is going to split, if it returns false then this split will be skipped
std::function< void(EdgeId e1, EdgeId e)> MR::SubdivideFillingSettings::onEdgeSplit
 (If this is set) this function is called in subdivision each time edge (e) is split into (e1->e), but before the ring is made Delone
bool MR::SmoothFillingSettings::naturalSmooth = false
 Additionally smooth 3 layers of vertices near hole boundary both inside and outside of the hole.
EdgeWeights MR::SmoothFillingSettings::edgeWeights = EdgeWeights::Cotan
 edge weighting scheme for smoothCurvature mode
VertexMass MR::SmoothFillingSettings::vmass = VertexMass::Unit
 vertex mass scheme for smoothCurvature mode
VertUVCoords * MR::OutAttributesFillingSettings::uvCoords = {}
 optional uv-coordinates of vertices; if provided then elements corresponding to new vertices will be added there
VertColors * MR::OutAttributesFillingSettings::colorMap = {}
 optional colors of vertices; if provided then elements corresponding to new vertices will be added there
FaceColors * MR::OutAttributesFillingSettings::faceColors = {}
 optional colors of faces; if provided then elements corresponding to new faces will be added there
FillHoleParams MR::FillHoleNicelySettings::triangulateParams
 how to triangulate the hole, must be specified by the user
bool MR::FillHoleNicelySettings::triangulateOnly = false
 If false then additional vertices are created inside the patch for best mesh quality.
SubdivideFillingSettings MR::FillHoleNicelySettings::subdivideSettings
 if triangulateOnly is false - this settings are used to subdivide new filling
bool MR::FillHoleNicelySettings::smoothCurvature = true
 Whether to make patch over the hole smooth both inside and on its boundary with existed surface.
SmoothFillingSettings MR::FillHoleNicelySettings::smoothSeettings
 if smoothCurvature is true and `triangulateOnly is false - these settings are used to smooth new filling
OutAttributesFillingSettings MR::FillHoleNicelySettings::outAttributes
 structure with optional output attributes
StitchHolesParams MR::StitchHolesNicelySettings::triangulateParams
 how to triangulate the cylinder between holes, must be specified by the user
bool MR::StitchHolesNicelySettings::triangulateOnly = false
 If false then additional vertices are created inside the patch for best mesh quality.
SubdivideFillingSettings MR::StitchHolesNicelySettings::subdivideSettings
 if triangulateOnly is false - this settings are used to subdivide new filling
bool MR::StitchHolesNicelySettings::smoothCurvature = true
 Whether to make patch over the hole smooth both inside and on its boundary with existed surface.
SmoothFillingSettings MR::StitchHolesNicelySettings::smoothSeettings
 if smoothCurvature is true and `triangulateOnly is false - these settings are used to smooth new filling
OutAttributesFillingSettings MR::StitchHolesNicelySettings::outAttributes
 structure with optional output attributes
bool MR::SelfIntersections::Settings::touchIsIntersection = true
 If true then count touching faces as self-intersections.
Method MR::SelfIntersections::Settings::method = Method::Relax
int MR::SelfIntersections::Settings::relaxIterations = 5
 Maximum relax iterations.
int MR::SelfIntersections::Settings::maxExpand = 3
 Maximum expand count (edge steps from self-intersecting faces), should be > 0.
float MR::SelfIntersections::Settings::subdivideEdgeLen = 0.0f
ProgressCallback MR::SelfIntersections::Settings::callback = {}
 Callback function.
std::vector< Vec > MR::GcodeProcessor::BaseAction< Vec >::path
 tool movement parsed from gcode
std::string MR::GcodeProcessor::BaseAction< Vec >::warning
 parser warning
BaseAction3f MR::GcodeProcessor::MoveAction::action
std::vector< Vector3f > MR::GcodeProcessor::MoveAction::toolDirection
bool MR::GcodeProcessor::MoveAction::idle = true
 tool direction for each point from action.path
float MR::GcodeProcessor::MoveAction::feedrate = 100.f
char MR::GcodeProcessor::Command::key
float MR::GcodeProcessor::Command::value
 in lowercase
VertId MR::Graph::EndVertices::v0
VertId MR::Graph::EndVertices::v1
const VertCoords * MR::ModelPointsData::points { nullptr }
 all points of model
const VertBitSet * MR::ModelPointsData::validPoints { nullptr }
 bitset of valid points
const AffineXf3f * MR::ModelPointsData::xf { nullptr }
 model world xf
ObjId MR::ModelPointsData::fakeObjId {}
 if present this value will override ObjId in result ObjVertId
ObjId MR::ObjVertId::objId
VertId MR::ObjVertId::vId
Vector2i MR::GridSettings::dim
BMap< VertId, size_t > MR::GridSettings::vertIds
BMap< UndirectedEdgeId, size_t > MR::GridSettings::uedgeIds
BMap< FaceId, size_t > MR::GridSettings::faceIds
Vector3f MR::ICPPairData::srcPoint
 coordinates of the source point after transforming in world space
Vector3f MR::ICPPairData::srcNorm
 normal in source point after transforming in world space
Vector3f MR::ICPPairData::tgtPoint
 coordinates of the closest point on target after transforming in world space
Vector3f MR::ICPPairData::tgtNorm
 normal in the target point after transforming in world space
float MR::ICPPairData::distSq = 0.f
 squared distance between source and target points
float MR::ICPPairData::weight = 1.f
 weight of the pair (to prioritize over other pairs)
VertId MR::PointPair::srcVertId
 id of the source point
VertId MR::PointPair::tgtCloseVert
float MR::PointPair::normalsAngleCos = 1.f
 cosine between normals in source and target points
bool MR::PointPair::tgtOnBd = false
 true if if the closest point on target is located on the boundary (only for meshes)
BitSet MR::IPointPairs::active
 whether corresponding pair from vec must be considered during minimization
std::vector< PointPairMR::PointPairs::vec
 vector of all point pairs both active and not
int MR::NumSum::num = 0
double MR::NumSum::sum = 0
ICPMethod MR::ICPProperties::method = ICPMethod::PointToPlane
 The method how to update transformation from point pairs, see description of each option in ICPMethod.
float MR::ICPProperties::p2plAngleLimit = PI_F / 6.0f
float MR::ICPProperties::p2plScaleLimit = 2
 [radians]
float MR::ICPProperties::cosThreshold = 0.7f
float MR::ICPProperties::distThresholdSq = 1.f
 in [-1,1]
float MR::ICPProperties::farDistFactor = 3.f
 [distance^2]
ICPMode MR::ICPProperties::icpMode = ICPMode::AnyRigidXf
 dimensionless
Vector3f MR::ICPProperties::fixedRotationAxis
 Additional parameter for ICPMode::OrthogonalAxis and ICPMode::FixedAxis transformation groups.
int MR::ICPProperties::iterLimit = 10
int MR::ICPProperties::badIterStopCount = 3
float MR::ICPProperties::exitVal = 0
bool MR::ICPProperties::mutualClosest = false
 [distance]
std::vector< ColorMR::Image::pixels
Vector2i MR::Image::resolution
int MR::ImproveSamplingSettings::numIters = 1
 the number of algorithm iterations to perform
int MR::ImproveSamplingSettings::minPointsInSample = 1
VertMap * MR::ImproveSamplingSettings::pt2sm = nullptr
 optional output: mapping from input point id to sample id
PointCloudMR::ImproveSamplingSettings::cloudOfSamples = nullptr
 optional output: new cloud containing averaged points and normals for each sample
Vector< int, VertId > * MR::ImproveSamplingSettings::ptsInSm = nullptr
 optional output: the number of points in each sample
const VertColors * MR::ImproveSamplingSettings::ptColors = nullptr
 optional input: colors of input points
VertColors * MR::ImproveSamplingSettings::smColors = nullptr
 optional output: averaged colors of samples
ProgressCallback MR::ImproveSamplingSettings::progress
 output progress status and receive cancel signal
Side MR::FindInnerShellSettings::side = Side::Negative
 specifies which side of shell is of interest: negative or positive relative to mesh normals
float MR::FindInnerShellSettings::maxDistSq = FLT_MAX
 specifies maximum squared distance from shell parts of interest to source mesh
bool MR::FindInnerShellSettings::useWindingNumber = false
 if true, a slower algorithm is activated that is more robust in the presence of self-intersections on mesh
float MR::FindInnerShellSettings::windingNumberThreshold = 0.25f
int MR::FindInnerShellSettings::minVertsInComp = 10
bool MR::ShellVertexInfo::inRange = false
 true when shell vertex is within settings.maxDist from source mesh
bool MR::ShellVertexInfo::projOnBd = false
 shell vertex projects on source mesh boundary (never true for winding rule mode)
bool MR::ShellVertexInfo::rightSide = false
 whether shell vertex is on requested side of source mesh
const Matrix4f & MR::BaseRenderParams::viewMatrix
const Matrix4f & MR::BaseRenderParams::projMatrix
ViewportId MR::BaseRenderParams::viewportId
Vector4i MR::BaseRenderParams::viewport
 id of the viewport
const Matrix4f & MR::ModelBaseRenderParams::modelMatrix
const Plane3fMR::ModelBaseRenderParams::clipPlane
DepthFunction MR::ModelBaseRenderParams::depthFunction = DepthFunction::Default
 viewport clip plane (it is not applied while object does not have clipping flag set)
const Matrix4f * MR::ModelRenderParams::normMatrixPtr { nullptr }
Vector3f MR::ModelRenderParams::lightPos
 normal matrix, only necessary for triangles rendering
TransparencyMode MR::ModelRenderParams::transparencyMode
 position of light source
RenderModelPassMask MR::ModelRenderParams::passMask = RenderModelPassMask::All
 determines how to handle transparent models
float MR::BasicUiRenderTask::renderTaskDepth = 0
 The tasks are sorted by this depth, descending (larger depth = further away).
InteractionMask MR::BasicUiRenderTask::BackwardPassParams::consumedInteractions {}
UiTaskListMR::UiRenderParams::tasks = nullptr
 Those are Z-sorted and then executed.
constexpr float MR::cQuietNan = std::numeric_limits<float>::quiet_NaN()
constexpr int MR::cQuietNanBits = std::bit_cast< int >( cQuietNan )
MeshTriPoint MR::Laplacian::Attractor::p
Vector3d MR::Laplacian::Attractor::target
double MR::Laplacian::Attractor::weight = 1
Vector3d MR::Laplacian::Equation::rhs
double MR::Laplacian::Equation::centerCoeff = 0
 equation right hand side
int MR::Laplacian::Equation::firstElem = 0
 coefficient on matrix diagonal
double MR::Laplacian::Element::coeff = 0
VertId MR::Laplacian::Element::neiVert
MR::Line< V >::p
MR::Line< V >::d
MR::LineSegm< V >::a
MR::LineSegm< V >::b
VertColors * MR::LinesLoadSettings::colors = nullptr
 optional load artifact: per-vertex color map
ProgressCallback MR::LinesLoadSettings::callback
 callback for set progress and stop process
bool MR::LinesLoadSettings::telemetrySignal = true
 permit telemetry signal about loading
MeshTexture MR::LoadedMeshData::texture
AffineXf3f MR::LoadedMeshData::xf
int MR::LoadedMeshData::skippedFaceCount = 0
int MR::LoadedMeshData::duplicatedVertexCount = 0
std::shared_ptr< ObjectT > MR::LoadedObjectT< ObjectT >::obj
std::string MR::LoadedObjectT< ObjectT >::warnings
std::optional< LengthUnitMR::LoadedObjectT< ObjectT >::lengthUnit
 either empty or ends with '
'
std::vector< ObjectPtrMR::LoadedObjects::objs
std::string MR::LoadedObjects::warnings
std::optional< LengthUnitMR::LoadedObjects::lengthUnit
 either empty or ends with '
'
VertId MR::FanRecord::border
std::uint32_t MR::FanRecord::firstNei
 the position of first neigbor in LocalTriangulations::neighbours
VertId MR::FanRecordWithCenter::center
 center point in the fan
std::vector< VertId > MR::SomeLocalTriangulations::neighbors
std::vector< FanRecordWithCenterMR::SomeLocalTriangulations::fanRecords
VertId MR::SomeLocalTriangulations::maxCenterId
Buffer< VertId > MR::AllLocalTriangulations::neighbors
Vector< FanRecord, VertId > MR::AllLocalTriangulations::fanRecords
float MR::SphereParams::radius = 1
int MR::SphereParams::numMeshVertices = 100
std::variant< Dense, HashMR::MapOrHashMap< K, V >::var
 default construction will select dense map
Contour3f MR::MarkedContour3f::contour
BitSet MR::MarkedContour3f::marks
 indices of control (marked) points
float MR::SplineSettings::samplingStep = 1
float MR::SplineSettings::controlStability = 1
 a positive value, the more the value the closer resulting spline will be to given control points
int MR::SplineSettings::iterations = 1
Contour3fMR::SplineSettings::normals = nullptr
 optional parameter with the normals of input points that will be resampled to become normals of output points
bool MR::SplineSettings::normalsAffectShape = false
 if true and normals are provided, then the curve at marked points will try to be orthogonal to given normal there
Vector2< T > MR::Matrix2< T >::x { 1, 0 }
 rows, identity matrix by default
Vector2< T > MR::Matrix2< T >::y { 0, 1 }
static constexpr Matrix2 static rotation(T angle) noexcept MR_REQUIRES_IF_SUPPORTED(std constexpr Matrix2 static rotation(const Vector2< T > &from, const Vector2< T > &to) noexcept MR_REQUIRES_IF_SUPPORTED(std constexpr Matrix MR::Matrix2< T >::fromRows )(const Vector2< T > &x, const Vector2< T > &y) noexcept
 creates matrix representing rotation around origin on given angle
Vector3< T > MR::Matrix3< T >::x { 1, 0, 0 }
 rows, identity matrix by default
Vector3< T > MR::Matrix3< T >::y { 0, 1, 0 }
Vector3< T > MR::Matrix3< T >::z { 0, 0, 1 }
static constexpr Matrix3 static rotation(const Vector3< T > &axis, T angle) noexcept MR_REQUIRES_IF_SUPPORTED(std constexpr Matrix3 static rotation(const Vector3< T > &from, const Vector3< T > &to) noexcept MR_REQUIRES_IF_SUPPORTED(std constexpr Matrix3 static rotationFromEuler(const Vector3< T > &eulerAngles) noexcept MR_REQUIRES_IF_SUPPORTED(std constexpr Matrix3 static approximateLinearRotationMatrixFromEuler(const Vector3< T > &eulerAngles) noexcept MR_REQUIRES_IF_SUPPORTED(std constexpr Matrix MR::Matrix3< T >::fromRows )(const Vector3< T > &x, const Vector3< T > &y, const Vector3< T > &z) noexcept
 creates matrix representing rotation around given axis on given angle
Matrix3 MR::Matrix3< T >::QR::q
Matrix3 MR::Matrix3< T >::QR::r
Vector4< T > MR::Matrix4< T >::x { 1, 0, 0, 0 }
 rows, identity matrix by default
Vector4< T > MR::Matrix4< T >::y { 0, 1, 0, 0 }
Vector4< T > MR::Matrix4< T >::z { 0, 0, 1, 0 }
Vector4< T > MR::Matrix4< T >::w { 0, 0, 0, 1 }
VertUVCoords * MR::MeshAttributesToUpdate::uvCoords = nullptr
VertColors * MR::MeshAttributesToUpdate::colorMap = nullptr
TexturePerFace * MR::MeshAttributesToUpdate::texturePerFace = nullptr
FaceColors * MR::MeshAttributesToUpdate::faceColors = nullptr
Mesh MR::TransformedMesh::mesh
AffineXf3f MR::TransformedMesh::xf
VertId MR::MeshBuilder::VertDuplication::srcVert
VertId MR::MeshBuilder::VertDuplication::dupVert
 original vertex before duplication
FaceMap MR::MeshBuilder::MeshPiece::fmap
VertMap MR::MeshBuilder::MeshPiece::vmap
 face of part -> face of whole mesh
MeshTopology MR::MeshBuilder::MeshPiece::topology
 vert of part -> vert of whole mesh
FaceBitSet MR::MeshBuilder::MeshPiece::rem
float MR::MeshBuilder::UniteCloseParams::closeDist = 0.0f
 < vertices located closer to each other than
bool MR::MeshBuilder::UniteCloseParams::uniteOnlyBd = true
 if true, only vertices from this region can be affected
VertBitSet * MR::MeshBuilder::UniteCloseParams::region = nullptr
 if true - try to duplicates non-manifold vertices instead of removing faces
bool MR::MeshBuilder::UniteCloseParams::duplicateNonManifold = false
 is the mapping of vertices: before -> after
VertMap * MR::MeshBuilder::UniteCloseParams::optionalVertOldToNew = nullptr
 this can be used to map attributes to duplicated vertices
std::vector< MeshBuilder::VertDuplication > * MR::MeshBuilder::UniteCloseParams::optionalDuplications = nullptr
ThreeVertIds MR::MeshBuilder::Triangle::v
FaceId MR::MeshBuilder::Triangle::f
FaceBitSet * MR::MeshBuilder::BuildSettings::region = nullptr
 if region is given then on input it contains the faces to be added, and on output the faces failed to be added
int MR::MeshBuilder::BuildSettings::shiftFaceId = 0
 this value to be added to every faceId before its inclusion in the topology
bool MR::MeshBuilder::BuildSettings::allowNonManifoldEdge = true
 whether to permit non-manifold edges in the resulting topology
int * MR::MeshBuilder::BuildSettings::skippedFaceCount = nullptr
 optional output: counter of skipped faces during mesh creation
int MR::MeshBuilder::VertSpan::firstVertex = 0
int MR::MeshBuilder::VertSpan::lastVertex = 0
float MR::DivideMeshWithPlaneParams::eps { 0.0f }
 if existing vertex is within eps distance from the plane, then move the vertex not introducing new ones
bool MR::DivideMeshWithPlaneParams::fillCut { true }
 if set - function tries to fill cut after dividing (this operation might fail leading to "params.errors")
bool MR::DivideMeshWithPlaneParams::subdivideFilling { false }
 if set and filled - function subdivides filling after cut
ObjectMeshDataMR::DivideMeshWithPlaneParams::otherPart { nullptr }
 optional output other part of dividing (expected to be empty)
std::vector< std::string > * MR::DivideMeshWithPlaneParams::errors { nullptr }
 optional output list of errors that could possibly happen during 'divideMeshWithPlane' function call
FaceBitSet * MR::MakeDegenerateBandAroundRegionParams::outNewFaces = nullptr
 (optional) output newly generated faces
UndirectedEdgeBitSet * MR::MakeDegenerateBandAroundRegionParams::outExtrudedEdges = nullptr
 (optional) output edges orthogonal to the boundary
float * MR::MakeDegenerateBandAroundRegionParams::maxEdgeLength = nullptr
 (optional) return legth of the longest edges from the boundary of the region
VertHashMapMR::MakeDegenerateBandAroundRegionParams::new2OldMap = nullptr
 (optional) map of new vertices to old ones
constexpr NoInit MR::noInit
template<typename T>
struct MRMESH_CLASS MR::NoDefInit
class MRMESH_CLASS MR::EdgeTag
class MRMESH_CLASS MR::UndirectedEdgeTag
class MRMESH_CLASS MR::FaceTag
class MRMESH_CLASS MR::VertTag
class MRMESH_CLASS MR::PixelTag
class MRMESH_CLASS MR::VoxelTag
class MRMESH_CLASS MR::RegionTag
class MRMESH_CLASS MR::NodeTag
class MRMESH_CLASS MR::ObjTag
class MRMESH_CLASS MR::TextureTag
class MRMESH_CLASS MR::GraphVertTag
class MRMESH_CLASS MR::GraphEdgeTag
template<>
class MRMESH_CLASS Id< GraphEdgeTag > class MR::EdgeId MR::Id< EdgeTag >
template<>
class MR::VoxelId MR::Id< VoxelTag >
class MRMESH_CLASS MR::I = size_t> class MRMESH_CLASS Buffer
class MRMESH_CLASS MR::BitSet
template<typename T>
 MR::struct
MRMESH_CLASS MR::Vector2
MRMESH_CLASS MR::Vector2b
MRMESH_CLASS MR::Vector3
MRMESH_CLASS MR::Vector3b
 MR::Vector4
 MR::Vector4b
 MR::Matrix2
 MR::Matrix2b
 MR::Matrix3
 MR::Matrix3b
 MR::Matrix4
 MR::Matrix4b
 MR::SymMatrix2
 MR::SymMatrix2b
 MR::SymMatrix3
 MR::SymMatrix3b
 MR::SymMatrix4
 MR::SymMatrix4b
 MR::AffineXf
 MR::AffineXf2f
 MR::RigidXf3
 MR::RigidXf3f
 MR::RigidScaleXf3
 MR::RigidScaleXf3f
 MR::Sphere
 MR::Sphere2f
 MR::Line
 MR::Line2f
 MR::LineSegm
 MR::LineSegm2f
 MR::Parabola
 MR::Parabolaf
 MR::BestFitParabola
 MR::BestFitParabolaf
 MR::Cylinder3
 MR::Cylinder3f
 MR::Cone3
 MR::Cone3f
 MR::Plane3
 MR::Plane3f
 MR::Box
 MR::Box1i
 MR::QuadraticForm
 MR::QuadraticForm2f
 MR::Quaternion
 MR::Quaternionf
 MR::SegmPoint
 MR::SegmPointf
 MR::TriPoint
 MR::TriPointf
struct MRMESH_CLASS MR::Dipole
struct MRMESH_CLASS MR::Hash = phmap::priv::hash_default_hash<T>
struct MRMESH_CLASS MR::Eq
class MRMESH_CLASS MR::MeshTopology
struct MRMESH_CLASS MR::Mesh
struct MRMESH_CLASS MR::EdgeLengthMesh
class MRMESH_CLASS MR::MeshOrPoints
struct MRMESH_CLASS MR::PointCloud
struct MRMESH_CLASS MR::PointCloudPart
class MRMESH_CLASS MR::AABBTree
class MRMESH_CLASS MR::AABBTreePoints
class MRMESH_CLASS MR::AABBTreeObjects
struct MRMESH_CLASS MR::CloudPartMapping
struct MRMESH_CLASS MR::PartMapping
 MR::Polyline
 MR::Polyline2
 MR::AABBTreePolyline
 MR::AABBTreePolyline2
 MR::PolylineProjectionWithOffsetResult
 MR::Polyline2ProjectionWithOffsetResult
class MRMESH_CLASS MR::ChangeSceneAction
template<typename...>
constexpr bool MR::dependent_false = false
std::optional< Edges > * MR::MeshLoadSettings::edges = nullptr
 optional load artifact: polyline edges
VertColors * MR::MeshLoadSettings::colors = nullptr
 optional load artifact: per-vertex color map
FaceColors * MR::MeshLoadSettings::faceColors = nullptr
 optional load artifact: per-face color map
VertUVCoords * MR::MeshLoadSettings::uvCoords = nullptr
 optional load artifact: per-vertex uv-coordinates
VertNormals * MR::MeshLoadSettings::normals = nullptr
 optional load artifact: per-vertex normals
MeshTextureMR::MeshLoadSettings::texture = nullptr
 optional load artifact: texture image
int * MR::MeshLoadSettings::skippedFaceCount = nullptr
 optional output: counter of skipped faces during mesh creation
int * MR::MeshLoadSettings::duplicatedVertexCount = nullptr
 optional output: counter of duplicated vertices (that created for resolve non-manifold geometry)
AffineXf3f * MR::MeshLoadSettings::xf = nullptr
 optional output: transform for the loaded mesh to improve precision of vertex coordinates
ProgressCallback MR::MeshLoadSettings::callback
 callback for set progress and stop process
bool MR::MeshLoadSettings::telemetrySignal = true
 permit telemetry signal about loading
Vector3f MR::MeshOrPoints::ProjectionResult::point
 found closest point
std::optional< Vector3f > MR::MeshOrPoints::ProjectionResult::normal
bool MR::MeshOrPoints::ProjectionResult::isBd = false
 can be true only for meshes, if the closest point is located on the boundary of the mesh (or the current region)
float MR::MeshOrPoints::ProjectionResult::distSq = FLT_MAX
 squared distance from query point to the closest point
VertId MR::MeshOrPoints::ProjectionResult::closestVert
MeshOrPoints MR::MeshOrPointsXf::obj
AffineXf3f MR::MeshOrPointsXf::xf
Vector3f MR::FindOverhangsSettings::axis { Vector3f::plusZ() }
 base axis marking the up direction
float MR::FindOverhangsSettings::layerHeight { 1.f }
 height of a layer
float MR::FindOverhangsSettings::maxOverhangDistance { 1.f }
 maximum allowed overhang distance within a layer
int MR::FindOverhangsSettings::hops = 0
 number of hops used to smooth out the overhang regions (0 - disable smoothing)
const AffineXf3f * MR::FindOverhangsSettings::xf = nullptr
 mesh transform
ProgressCallback MR::FindOverhangsSettings::progressCb
const MeshMR::MeshRegion< RegionTag >::mesh
const TaggedBitSet< RegionTag > * MR::MeshRegion< RegionTag >::region = nullptr
MeshTriPoint MR::MeshPoint::triPoint
 relative position on mesh
Vector3f MR::MeshPoint::pt
 3d coordinates
Vector3f MR::MeshPoint::inDir
 unit direction inside the mesh = minus normal
FacePredicate MR::MeshPoint::notIncidentFaces
 predicate that returns true for mesh faces not-incident to the point
bool MR::InSphereSearchSettings::insideAndOutside = false
float MR::InSphereSearchSettings::maxRadius = 1
int MR::InSphereSearchSettings::maxIters = 16
 maximum number of shrinking iterations for one triangle
float MR::InSphereSearchSettings::minShrinkage = 0.99999f
 iterations stop if next radius is larger than minShrinkage times previous radius
float MR::InSphereSearchSettings::minAngleCos = -1
Vector3f MR::InSphere::center
float MR::InSphere::radius = 0
MeshProjectionResult MR::InSphere::oppositeTouchPoint
 excluding input point and incident triangles, distSq - squared distance to sphere's center
EdgeId MR::MeshTopology::HalfEdgeRecord::next
 next counter clock wise half-edge in the origin ring
EdgeId MR::MeshTopology::HalfEdgeRecord::prev
 next clock wise half-edge in the origin ring
VertId MR::MeshTopology::HalfEdgeRecord::org
 vertex at the origin of the edge
FaceId MR::MeshTopology::HalfEdgeRecord::left
 face at the left of the edge
Plane3f MR::TrimWithPlaneParams::plane
 Input plane to cut mesh with.
float MR::TrimWithPlaneParams::eps = 0
 if existing vertex is within eps distance from the plane, then move the vertex not introducing new ones
std::function< void(EdgeId, EdgeId, float)> MR::TrimWithPlaneParams::onEdgeSplitCallback
 is invoked each time when an edge is split. Receives edge ID before split, edge ID after split, and weight of the origin vertex
UndirectedEdgeBitSet * MR::TrimOptionalOutput::outCutEdges = nullptr
 newly appeared hole boundary edges
std::vector< EdgeLoop > * MR::TrimOptionalOutput::outCutContours = nullptr
 newly appeared hole contours where each edge does not have right face
FaceHashMapMR::TrimOptionalOutput::new2Old = nullptr
 mapping from newly appeared triangle to its original triangle (part to full)
MeshMR::TrimOptionalOutput::otherPart = nullptr
 left part of the trimmed mesh
FaceHashMapMR::TrimOptionalOutput::otherNew2Old = nullptr
 mapping from newly appeared triangle to its original triangle (part to full) in otherPart
std::vector< EdgeLoop > * MR::TrimOptionalOutput::otherOutCutContours = nullptr
 newly appeared hole contours where each edge does not have right face in otherPart
VertId MR::WeightedVertex::v
float MR::WeightedVertex::weight = 0
EdgeId MR::MeshTriPoint::e
TriPointf MR::MeshTriPoint::bary
MR::MinArg< T, I >::val = std::numeric_limits<T>::max()
I MR::MinArg< T, I >::arg
MR::MaxArg< T, I >::val = std::numeric_limits<T>::lowest()
I MR::MaxArg< T, I >::arg
MR::MinMaxArg< T, I >::min = std::numeric_limits<T>::max()
MR::MinMaxArg< T, I >::max = std::numeric_limits<T>::lowest()
I MR::MinMaxArg< T, I >::minArg
I MR::MinMaxArg< T, I >::maxArg
bool MR::MovementBuildBodyParams::allowRotation { true }
std::optional< Vector3f > MR::MovementBuildBodyParams::center
std::optional< Vector3f > MR::MovementBuildBodyParams::bodyNormal
std::optional< Vector3f > MR::MovementBuildBodyParams::bodyUpDir
const Contours3fMR::MovementBuildBodyParams::trajectoryNormals { nullptr }
const AffineXf3f * MR::MovementBuildBodyParams::b2tXf { nullptr }
 optional transform body space to trajectory space
bool MR::MovementBuildBodyParams::startMeshFromBody { false }
 if true, then body-contours will be located exactly on resulting mesh
ObjVertId MR::ICPGroupPair::srcId
ObjVertId MR::ICPGroupPair::tgtClosestId
std::vector< ICPGroupPairMR::ICPGroupPairs::vec
float MR::MultiwayICPSamplingParameters::samplingVoxelSize = 0
 sampling size of each object, 0 has special meaning "take all valid points"
int MR::MultiwayICPSamplingParameters::maxGroupSize = 64
enum MR::MultiwayICPSamplingParameters::CascadeMode MR::MultiwayICPSamplingParameters::AABBTreeBased
ProgressCallback MR::MultiwayICPSamplingParameters::cb
 callback for progress reports
MR_BIND_IGNORE std::mutex MR::MutexOwner::m
AffineXf3f MR::Nesting::NestingResult::xf
 best found xf for this object (might be equal with input xf if no good nesting was found)
bool MR::Nesting::NestingResult::nested { false }
 false - means that this object does not fit the nest
const MeshMR::Nesting::MeshXf::mesh { nullptr }
 input mesh - should not be nullptr
AffineXf3f MR::Nesting::MeshXf::xf
 input mesh world transformation before nesting
Box3f MR::Nesting::NestingBaseParams::nest
 available nest
float MR::Nesting::NestingBaseParams::minInterval { 0.01f }
 minimum space among meshes in the nest
bool MR::DenoiseViaNormalsSettings::fastIndicatorComputation = true
 use approximated computation, which is much faster than precise solution
float MR::DenoiseViaNormalsSettings::beta = 0.01f
 0.001 - sharp edges, 0.01 - moderate edges, 0.1 - smooth edges
float MR::DenoiseViaNormalsSettings::gamma = 5.f
 the amount of smoothing: 0 - no smoothing, 1 - average smoothing, ...
int MR::DenoiseViaNormalsSettings::normalIters = 10
 the number of iterations to smooth normals and find creases; the more the better quality, but longer computation
int MR::DenoiseViaNormalsSettings::pointIters = 20
 the number of iterations to update vertex coordinates from found normals; the more the better quality, but longer computation
float MR::DenoiseViaNormalsSettings::guideWeight = 1
 how much resulting points must be attracted to initial points (e.g. to avoid general shrinkage), must be > 0
bool MR::DenoiseViaNormalsSettings::limitNearInitial = false
 if true then maximal displacement of each point during denoising will be limited
float MR::DenoiseViaNormalsSettings::maxInitialDist = 0
 maximum distance between a point and its position before relaxation, ignored if limitNearInitial = false
UndirectedEdgeBitSet * MR::DenoiseViaNormalsSettings::outCreases = nullptr
 optionally returns creases found during smoothing
ProgressCallback MR::DenoiseViaNormalsSettings::cb = {}
 to get the progress and optionally cancel
float MR::ObjectComparableWithReference::ComparableProperty::value = 0
std::optional< float > MR::ObjectComparableWithReference::ComparableProperty::referenceValue = 0.f
float MR::ObjectComparableWithReference::ComparisonTolerance::positive = 0
 How much larger can this value be compared to the reference?
float MR::ObjectComparableWithReference::ComparisonTolerance::negative = 0
bool MR::ObjectComparableWithReference::ComparisonReferenceValue::isSet = false
Var MR::ObjectComparableWithReference::ComparisonReferenceValue::var
 If isSet == false, this will hold zeroes, or some other default values.
 diameter
 angle
 length
 _count
GcodeChangedSignal MR::ObjectGcode::gcodeChangedSignal
 Points
 Smooth
 Dashed
 _count
LinesChangedSignal MR::ObjectLinesHolder::linesChangedSignal
std::optional< size_t > MR::ObjectLinesHolder::numUndirectedEdges_
std::optional< size_t > MR::ObjectLinesHolder::numComponents_
std::optional< float > MR::ObjectLinesHolder::avgEdgeLen_
std::optional< float > MR::ObjectLinesHolder::totalLength_
ViewportProperty< XfBasedCache< Box3f > > MR::ObjectLinesHolder::worldBox_
VertColors MR::ObjectLinesHolder::vertsColorMap_
UndirectedEdgeColors MR::ObjectLinesHolder::linesColorMap_
ViewportMask MR::ObjectLinesHolder::showPoints_
ViewportMask MR::ObjectLinesHolder::smoothConnections_
ViewportMask MR::ObjectLinesHolder::dashed_
ViewportProperty< DashPatternMR::ObjectLinesHolder::dashPattern_ = DashPattern::diagonal( 20 )
float MR::ObjectLinesHolder::lineWidth_ { 1.0f }
 width on lines on screen in pixels
float MR::ObjectLinesHolder::pointSize_ { 5.f }
std::shared_ptr< Polyline3 > MR::ObjectLinesHolder::polyline_
const std::vector< AffineXf3f > * MR::ObjectMeshMergeOptions::overrideXfs { nullptr }
 if not nullptr: merged object will take overridden transform for each object
std::shared_ptr< MeshMR::ObjectMeshData::mesh
FaceBitSet MR::ObjectMeshData::selectedFaces
 selection
UndirectedEdgeBitSet MR::ObjectMeshData::selectedEdges
UndirectedEdgeBitSet MR::ObjectMeshData::creases
VertColors MR::ObjectMeshData::vertColors
 colors
FaceColors MR::ObjectMeshData::faceColors
VertUVCoords MR::ObjectMeshData::uvCoordinates
 textures
TexturePerFace MR::ObjectMeshData::texturePerFace
 Faces
 Texture
 Edges
 Points
 SelectedFaces
 SelectedEdges
 EnableShading
 FlatShading
 OnlyOddFragments
 BordersHighlight
 PolygonOffsetFromCamera
 _count
 recommended for drawing edges on top of mesh
SelectionChangedSignal MR::ObjectMeshHolder::faceSelectionChangedSignal
SelectionChangedSignal MR::ObjectMeshHolder::edgeSelectionChangedSignal
SelectionChangedSignal MR::ObjectMeshHolder::creasesChangedSignal
MeshChangedSignal MR::ObjectMeshHolder::meshChangedSignal
ObjectMeshData MR::ObjectMeshHolder::data_
Vector< MeshTexture, TextureId > MR::ObjectMeshHolder::textures_
 Texture options.
MeshTexture MR::ObjectMeshHolder::ancillaryTexture_
VertUVCoords MR::ObjectMeshHolder::ancillaryUVCoordinates_
 vertices coordinates in ancillary texture
std::optional< size_t > MR::ObjectMeshHolder::numHoles_
std::optional< size_t > MR::ObjectMeshHolder::numComponents_
std::optional< size_t > MR::ObjectMeshHolder::numUndirectedEdges_
std::optional< size_t > MR::ObjectMeshHolder::numHandles_
std::optional< bool > MR::ObjectMeshHolder::meshIsClosed_
std::optional< size_t > MR::ObjectMeshHolder::numSelectedFaces_
std::optional< size_t > MR::ObjectMeshHolder::numSelectedEdges_
std::optional< size_t > MR::ObjectMeshHolder::numCreaseEdges_
std::optional< double > MR::ObjectMeshHolder::totalArea_
std::optional< double > MR::ObjectMeshHolder::selectedArea_
std::optional< double > MR::ObjectMeshHolder::volume_
std::optional< float > MR::ObjectMeshHolder::avgEdgeLen_
ViewportProperty< XfBasedCache< Box3f > > MR::ObjectMeshHolder::worldBox_
ViewportMask MR::ObjectMeshHolder::showTexture_
ViewportMask MR::ObjectMeshHolder::showFaces_ = ViewportMask::all()
ViewportMask MR::ObjectMeshHolder::showEdges_
ViewportMask MR::ObjectMeshHolder::showPoints_
ViewportMask MR::ObjectMeshHolder::showSelectedEdges_ = ViewportMask::all()
ViewportMask MR::ObjectMeshHolder::showSelectedFaces_ = ViewportMask::all()
ViewportMask MR::ObjectMeshHolder::showBordersHighlight_
ViewportMask MR::ObjectMeshHolder::polygonOffset_
ViewportMask MR::ObjectMeshHolder::flatShading_
 toggle per-face or per-vertex properties
ViewportMask MR::ObjectMeshHolder::shadingEnabled_ = ViewportMask::all()
ViewportMask MR::ObjectMeshHolder::onlyOddFragments_
ViewportProperty< ColorMR::ObjectMeshHolder::edgesColor_
ViewportProperty< ColorMR::ObjectMeshHolder::pointsColor_
ViewportProperty< ColorMR::ObjectMeshHolder::bordersColor_
ViewportProperty< ColorMR::ObjectMeshHolder::edgeSelectionColor_
ViewportProperty< ColorMR::ObjectMeshHolder::faceSelectionColor_
float MR::ObjectMeshHolder::edgeWidth_ { 0.5f }
float MR::ObjectMeshHolder::pointSize_ { 5.f }
 SelectedVertices
 _count
static constexpr int MR::ObjectPointsHolder::MaxRenderingPointsDefault = 1'000'000
 default value for maximum rendered points number
static constexpr int MR::ObjectPointsHolder::MaxRenderingPointsUnlimited = std::numeric_limits<int>::max()
 recommended value for maximum rendered points number to disable discretization
SelectionChangedSignal MR::ObjectPointsHolder::pointsSelectionChangedSignal
Signal< void()> MR::ObjectPointsHolder::renderDiscretizationChangedSignal
 signal about render discretization changing, triggered in setRenderDiscretization
ChangedSignal MR::ObjectPointsHolder::pointsChangedSignal
ChangedSignal MR::ObjectPointsHolder::normalsChangedSignal
VertBitSet MR::ObjectPointsHolder::selectedPoints_
std::optional< size_t > MR::ObjectPointsHolder::numValidPoints_
std::optional< size_t > MR::ObjectPointsHolder::numSelectedPoints_
ViewportProperty< ColorMR::ObjectPointsHolder::selectedVerticesColor_
ViewportMask MR::ObjectPointsHolder::showSelectedVertices_ = ViewportMask::all()
VertColors MR::ObjectPointsHolder::vertsColorMap_
std::shared_ptr< PointCloudMR::ObjectPointsHolder::points_
ViewportProperty< XfBasedCache< Box3f > > MR::ObjectPointsHolder::worldBox_
float MR::ObjectPointsHolder::pointSize_ { 5.0f }
 size of point in pixels
int MR::ObjectPointsHolder::maxRenderingPoints_ = MaxRenderingPointsDefault
 Selectable
 object itself and all its ancestors are selectable
 LocalSelectable
 object itself is selectable
 Selected
 object itself is selected and all its ancestors are selectable
 LocalSelected
 object itself is selected
TagAddedSignal MR::ObjectTagEventDispatcher::tagAddedSignal
 the signal is called when a tag is added to any object
TagRemovedSignal MR::ObjectTagEventDispatcher::tagRemovedSignal
 the signal is called when a tag is removed from any object
int MR::OffsetContourIndex::contourId { -1 }
 -1 means unknown index
int MR::OffsetContourIndex::vertId { -1 }
 -1 means unknown index
OffsetContourIndex MR::OffsetContoursOrigins::lOrg
OffsetContourIndex MR::OffsetContoursOrigins::lDest
 index of lower corresponding destination point on input contour
OffsetContourIndex MR::OffsetContoursOrigins::uOrg
 index of upper corresponding origin point on input contour
OffsetContourIndex MR::OffsetContoursOrigins::uDest
 index of upper corresponding destination point on input contour
float MR::OffsetContoursOrigins::lRatio { 0.0f }
float MR::OffsetContoursOrigins::uRatio { 0.0f }
enum MR::OffsetContoursParams::Type MR::OffsetContoursParams::Offset
enum MR::OffsetContoursParams::EndType MR::OffsetContoursParams::Round
enum MR::OffsetContoursParams::CornerType MR::OffsetContoursParams::Round
float MR::OffsetContoursParams::minAnglePrecision = PI_F / 9.0f
 precision of round corners and ends
float MR::OffsetContoursParams::maxSharpAngle = PI_F * 2.0f / 3.0f
 limit for sharp corners connection
OffsetContoursVertMapsMR::OffsetContoursParams::indicesMap = nullptr
 120 deg
OriginZCallback MR::OffsetContoursRestoreZParams::zCallback
int MR::OffsetContoursRestoreZParams::relaxIterations = 1
 if > 0 z coordinate will be relaxed this many iterations
float MR::ThickenParams::outsideOffset = 0
 the amount of offset for original mesh vertices
float MR::ThickenParams::insideOffset = 0
 the amount of offset for cloned mirrored mesh vertices in the opposite direction
float MR::ThickenParams::normalsTrustFactor = 1
float MR::ZCompensateParams::maxShift = 0
bool MR::ZCompensateParams::reduceSelfIntersections = false
 if true, limits the movement of each vertex to reduce self-intersections in the mesh
float MR::ZCompensateParams::minThickness = 0
 only if (reduceSelfIntersections = true), avoids moving a vertex closer than this distance to another triangle
ProgressCallback MR::ZCompensateParams::progress
 to report progress and cancel processing
const MeshMR::SortIntersectionsData::otherMesh
const ContinuousContoursMR::SortIntersectionsData::contours
ConvertToIntVector MR::SortIntersectionsData::converter
const AffineXf3f * MR::SortIntersectionsData::rigidB2A {nullptr}
size_t MR::SortIntersectionsData::meshAVertsNum
bool MR::SortIntersectionsData::isOtherA {false}
std::variant< FaceId, EdgeId, VertId > MR::OneMeshIntersection::primitiveId
Vector3f MR::OneMeshIntersection::coordinate
std::vector< OneMeshIntersectionMR::OneMeshContour::intersections
bool MR::OneMeshContour::closed {false}
GeodesicPathApprox MR::SearchPathSettings::geodesicPathApprox { GeodesicPathApprox::DijkstraAStar }
 the algorithm to compute approximately geodesic path
int MR::SearchPathSettings::maxReduceIters { 100 }
 the maximum number of iterations to reduce approximate path length and convert it in geodesic path
int MR::OutlierParams::maxClusterSize = 20
 Maximum points in the outlier component.
int MR::OutlierParams::maxNeighbors = 7
 Maximum number of adjacent points for an outlier point.
float MR::OutlierParams::minHeight = 0.3f
 Minimum distance (as proportion of search radius) to the approximate surface from outliers point.
float MR::OutlierParams::minAngle = PI_F / 3.f
OutlierParams MR::FindOutliersParams::finderParams
 Parameters of various criteria for detecting outlier points.
float MR::FindOutliersParams::radius = 1.f
 Radius of the search for neighboring points for analysis.
OutlierTypeMask MR::FindOutliersParams::mask = OutlierTypeMask::All
 Mask of the types of outliers that are looking for.
ProgressCallback MR::FindOutliersParams::progress = {}
 Progress callback.
float MR::FindOverlappingSettings::maxDistSq = 1e-10f
 maximal distance between closest points of one triangle and another overlapping triangle
float MR::FindOverlappingSettings::maxNormalDot = -0.99f
 suggestion: multiply it on mesh.getBoundingBox().size().lengthSq();
float MR::FindOverlappingSettings::minAreaFraction = 1e-5f
 consider triangle as overlapping only if the area of the oppositely oriented triangle is at least given fraction of the triangle's area
std::function< bool(FaceId l, FaceId r)> MR::FindOverlappingSettings::pred
 if predicate is present it should return true for pair of faces that should be considered as overlap
ProgressCallback MR::FindOverlappingSettings::cb
 for reporting current progress and allowing the user to cancel the algorithm
MR::Parabola< T >::a = 0
MR::Parabola< T >::b = 0
MR::Parabola< T >::c = 0
T & MR::Parallel::CallWithTLS< T >::tls
tbb::enumerable_thread_specific< L > & MR::Parallel::CallWithTLSMaker< L >::e
float MR::ParallelProgressReporter::TaskInfo::progress = 0.f
float MR::ParallelProgressReporter::TaskInfo::weight = 1.f
ParallelProgressReporterMR::ParallelProgressReporter::PerTaskReporter::reporter_ = nullptr
TaskInfoMR::ParallelProgressReporter::PerTaskReporter::task_ = nullptr
FaceMapOrHashMapMR::PartMapping::src2tgtFaces = nullptr
VertMapOrHashMapMR::PartMapping::src2tgtVerts = nullptr
WholeEdgeMapOrHashMapMR::PartMapping::src2tgtEdges = nullptr
FaceMapOrHashMapMR::PartMapping::tgt2srcFaces = nullptr
VertMapOrHashMapMR::PartMapping::tgt2srcVerts = nullptr
WholeEdgeMapOrHashMapMR::PartMapping::tgt2srcEdges = nullptr
Vector3< T > MR::Plane3< T >::n
MR::Plane3< T >::d = 0
std::optional< Triangulation > * MR::PlyLoadParams::tris = nullptr
 optional load artifact: mesh triangles
std::optional< Edges > * MR::PlyLoadParams::edges = nullptr
 optional load artifact: polyline edges
VertColors * MR::PlyLoadParams::colors = nullptr
 optional load artifact: per-vertex color map
FaceColors * MR::PlyLoadParams::faceColors = nullptr
 optional load artifact: per-face color map
VertUVCoords * MR::PlyLoadParams::uvCoords = nullptr
 optional load artifact: per-vertex uv-coordinates
TriCornerUVCoords * MR::PlyLoadParams::triCornerUvCoords = nullptr
 optional load artifact: per-corner uv-coordinates for each triangle
VertNormals * MR::PlyLoadParams::normals = nullptr
 optional load artifact: per-vertex normals
MeshTextureMR::PlyLoadParams::texture = nullptr
 optional load artifact: texture image
std::filesystem::path MR::PlyLoadParams::dir
 directory to load texture files from
ProgressCallback MR::PlyLoadParams::callback
 callback for set progress and stop process
bool MR::PlyLoadParams::telemetrySignal = true
 permit telemetry signal about loading
VertMap * MR::DividePointCloudOptionalOutput::outVmap { nullptr }
 optional out map from input points to output
PointCloudMR::DividePointCloudOptionalOutput::otherPart { nullptr }
 optional out other part of the point cloud
VertMap * MR::DividePointCloudOptionalOutput::otherOutVmap { nullptr }
 optional out map from input points to other part output
const PointCloudMR::PointCloudPart::cloud
const VertBitSet * MR::PointCloudPart::region = nullptr
 CapVisibility
 _count
FaceId MR::PointOnFace::face
 mesh's face containing the point
Vector3f MR::PointOnFace::point
 a point of the mesh's face
Vector3f MR::PointOnObject::point
 3D location on the object in local coordinates
float MR::PointOnObject::zBuffer { 1.0f }
 z buffer value
int   MR::PointOnObject::primId = -1 
FaceId   MR::PointOnObject::face 
UndirectedEdgeId   MR::PointOnObject::uedge 
 for ObjectMesh More...
VertId   MR::PointOnObject::vert 
 for ObjectLines More...
union { 
   int   MR::PointOnObject::primId = -1 
   FaceId   MR::PointOnObject::face 
   UndirectedEdgeId   MR::PointOnObject::uedge 
 for ObjectMesh More...
   VertId   MR::PointOnObject::vert 
 for ObjectLines More...
}; 
 to which primitive that point pertains
VertColors * MR::PointsLoadSettings::colors = nullptr
 points where to load point color map
AffineXf3f * MR::PointsLoadSettings::outXf = nullptr
 transform for the loaded point cloud
ProgressCallback MR::PointsLoadSettings::callback
 callback for set progress and stop process
bool MR::PointsLoadSettings::telemetrySignal = true
 permit telemetry signal about loading
float MR::MeshProjectionParameters::loDistLimitSq = 0
float MR::MeshProjectionParameters::upDistLimitSq = FLT_MAX
const AffineXf3f * MR::MeshProjectionParameters::refXf = nullptr
 optional reference mesh to world transformation
const AffineXf3f * MR::MeshProjectionParameters::xf = nullptr
 optional test points to world transformation
int MR::PolylineComponents::LargeByLengthComponentsSettings::maxLargeComponents = 2
 return at most given number of largest by length connected components
int * MR::PolylineComponents::LargeByLengthComponentsSettings::numSmallerComponents = nullptr
 optional output: the number of components in addition to returned ones
float MR::PolylineComponents::LargeByLengthComponentsSettings::minLength = 0
 do not consider a component large if its length is below this value
float MR::DecimatePolylineSettings< V >::maxError = 0.001f
 Limit from above on the maximum distance from moved vertices to original contour.
float MR::DecimatePolylineSettings< V >::maxEdgeLen = FLT_MAX
 Maximal possible edge length created during decimation.
float MR::DecimatePolylineSettings< V >::stabilizer = 0.001f
bool MR::DecimatePolylineSettings< V >::optimizeVertexPos = true
int MR::DecimatePolylineSettings< V >::maxDeletedVertices = INT_MAX
 Limit on the number of deleted vertices.
VertBitSet * MR::DecimatePolylineSettings< V >::region = nullptr
bool MR::DecimatePolylineSettings< V >::touchBdVertices = true
std::function< bool(EdgeId edgeToCollapse, const V &newEdgeOrgPos)> MR::DecimatePolylineSettings< V >::preCollapse
 The user can provide this optional callback that is invoked immediately before edge collapse;.
std::function< void(UndirectedEdgeId ue, float &collapseErrorSq, V &collapsePos)> MR::DecimatePolylineSettings< V >::adjustCollapse
 The user can provide this optional callback for adjusting error introduced by this edge collapse and the collapse position.
Vector< QuadraticForm< V >, VertId > * MR::DecimatePolylineSettings< V >::vertForms = nullptr
 If not null, then on input: if the vector is not empty then it is taken for initialization instead of form computation for all vertices; on output: quadratic form for each remaining vertex is returned there.
int MR::DecimatePolylineResult::vertsDeleted = 0
 Number deleted verts. Same as the number of performed collapses.
float MR::DecimatePolylineResult::errorIntroduced = 0
 Max different (as distance) between original contour and result contour.
EdgeId MR::PolylineTopology::HalfEdgeRecord::next
 next counter clock wise half-edge in the origin ring
VertId MR::PolylineTopology::HalfEdgeRecord::org
 vertex at the origin of the edge
PolylineTopologyMR::PolylineMaker::topology
std::function< void(EdgeId, EdgeId, float)> MR::DividePolylineParameters::onEdgeSplitCallback
 onEdgeSplitCallback is invoked each time when an edge is split. Receives edge ID before split, edge ID after split, and weight of the origin vertex
bool MR::DividePolylineParameters::closeLineAfterCut = false
VertMap * MR::DividePolylineParameters::outVmap = nullptr
 map from input polyline verts to output
EdgeMap * MR::DividePolylineParameters::outEmap = nullptr
 map from input polyline edges to output
Polyline3 * MR::DividePolylineParameters::otherPart = nullptr
 otherPart Optional return, polyline composed from edges on the negative side of the plane
VertMap * MR::DividePolylineParameters::otherOutVmap = nullptr
 map from input polyline verts to other output
EdgeMap * MR::DividePolylineParameters::otherOutEmap = nullptr
 map from input polyline edges to other output
std::string MR::PositionedText::text
Vector3f MR::PositionedText::position
const VertBitSet * MR::PositionVertsSmoothlyParams::region = nullptr
const Vector< Vector3f, VertId > * MR::PositionVertsSmoothlyParams::vertShifts = nullptr
 optional additional shifts of each vertex relative to smooth position
float MR::PositionVertsSmoothlyParams::stabilizer = 0
 the more the value, the bigger attraction of each vertex to its original position
VertMetric MR::PositionVertsSmoothlyParams::vertStabilizers
 if specified then it is used instead of stabilizer
UndirectedEdgeMetric MR::PositionVertsSmoothlyParams::edgeWeights
 if specified then it is used for edge weights instead of default 1
const VertBitSet * MR::SpacingSettings::region = nullptr
 vertices to be moved by the algorithm, nullptr means all valid vertices
UndirectedEdgeMetric MR::SpacingSettings::dist
 target distance of each edge in the mesh (for at least one edge's vertex in the region)
int MR::SpacingSettings::numIters = 10
 must be defined by the caller
float MR::SpacingSettings::stabilizer = 3
 too small number here can lead to instability, too large - to slow convergence
float MR::SpacingSettings::maxSumNegW = 0.1f
 maximum sum of minus negative weights, if it is exceeded then stabilizer is increased automatically
FacePredicate MR::SpacingSettings::isInverted
 if this predicated is given, then all inverted faces will be converted in degenerate faces at the end of each iteration
float MR::InflateSettings::pressure = 0
int MR::InflateSettings::iterations = 3
bool MR::InflateSettings::preSmooth = true
bool MR::InflateSettings::gradualPressureGrowth = true
 whether to increase the pressure gradually during the iterations (recommended for best quality)
Event MR::PrecipitationSimulator::SimulationStep::event = Event::Finish
float MR::PrecipitationSimulator::SimulationStep::amount = FLT_MAX
 amount of precipitation (in same units as mesh coordinates and water level)
GraphVertId MR::PrecipitationSimulator::SimulationStep::basin
GraphVertId MR::PrecipitationSimulator::SimulationStep::neiBasin
VertId MR::PreciseVertCoord::id
 unique id of the vertex (in both contours)
int MR::PreciseVertCoord::pt
 coordinate
VertId MR::PreciseVertCoords2::id
 unique id of the vertex (in both contours)
Vector2i MR::PreciseVertCoords2::pt
 integer coordinates of the vertex
bool MR::SegmentSegmentIntersectResult::doIntersect = false
 whether the segments intersect
bool MR::SegmentSegmentIntersectResult::cIsLeftFromAB = false
 whether the directed line AB has C point at the left
ConvertToIntVector2 MR::CoordinateConverters2::toInt {}
ConvertToFloatVector2 MR::CoordinateConverters2::toFloat {}
VertId MR::PreciseVertCoords::id
 unique id of the vertex (in both meshes)
Vector3i MR::PreciseVertCoords::pt
 integer coordinates of the vertex
bool MR::TriangleSegmentIntersectResult::doIntersect = false
 whether triangle and segment intersect
bool MR::TriangleSegmentIntersectResult::dIsLeftFromABC = false
 whether the plane with orientated triangle ABC has D point at the left
ConvertToIntVector MR::CoordinateConverters::toInt {}
ConvertToFloatVector MR::CoordinateConverters::toFloat {}
Container MR::PriorityQueue< T, P >::c
MeshProjectionTransforms MR::ProjectAttributeParams::xfs
ProgressCallback MR::ProjectAttributeParams::progressCb
SM MR::QuadraticForm< V >::A
T MR::QuadraticForm< V >::c = 0
MR::Quaternion< T >::a = 1
 real part of the quaternion
MR::Quaternion< T >::b = 0
MR::Quaternion< T >::c = 0
MR::Quaternion< T >::d = 0
 imaginary part: b*i + c*j + d*k
Vector3f MR::CompensateRadiusParams::direction
 Z direction of milling tool.
float MR::CompensateRadiusParams::toolRadius { 0.0f }
 radius of spherical tool
const FaceBitSet * MR::CompensateRadiusParams::region { nullptr }
int MR::CompensateRadiusParams::maxIterations { 100 }
 maximum iteration of applying algorithm (each iteration improves result a little bit)
int MR::CompensateRadiusParams::relaxExpansion = 3
 how many hops to expand around each moved vertex for relaxation
int MR::CompensateRadiusParams::relaxIterations = 5
 how many iterations of relax is applied on each compensation iteration
float MR::CompensateRadiusParams::relaxForce = 0.3f
 force of relaxations on each compensation iteration
ProgressCallback MR::CompensateRadiusParams::callback
int MR::RelaxParams::iterations = 1
 number of iterations
const VertBitSet * MR::RelaxParams::region = nullptr
 region to relax
float MR::RelaxParams::force = 0.5f
 speed of relaxing, typical values (0.0, 0.5]
bool MR::RelaxParams::limitNearInitial = false
 if true then maximal displacement of each point during denoising will be limited
float MR::RelaxParams::maxInitialDist = 0
 maximum distance between a point and its position before relaxation, ignored if limitNearInitial = false
MR_BIND_IGNORE int MR::RelaxParams::_padding
V MR::RigidScaleXf3< T >::a
 rotation angles relative to x,y,z axes
V MR::RigidScaleXf3< T >::b
 shift
MR::RigidScaleXf3< T >::s = 1
 scaling
V MR::RigidXf3< T >::a
 rotation angles relative to x,y,z axes
V MR::RigidXf3< T >::b
 shift
bool MR::SaveSettings::onlyValidPoints = true
bool MR::SaveSettings::packPrimitives = true
const VertColors * MR::SaveSettings::colors = nullptr
 optional per-vertex color to save with the geometry
const std::vector< Color > * MR::SaveSettings::primitiveColors = nullptr
 per-face colors for meshes, per-undirected-edge colors for polylines, unused for point clouds and other
const VertUVCoords * MR::SaveSettings::uvMap = nullptr
 optional per-vertex uv coordinate to save with the geometry
bool MR::SaveSettings::saveTriCornerUVCoords = true
const MeshTextureMR::SaveSettings::texture = nullptr
 optional texture to save with the geometry
std::string MR::SaveSettings::materialName = "Default"
 the name of file (UTF8 encoded) without extension to save texture in some formats (e.g. .OBJ, .PLY)
const AffineXf3d * MR::SaveSettings::xf = nullptr
 this transformation can optionally be applied to all vertices (points) of saved object
std::optional< LengthUnitMR::SaveSettings::lengthUnit
 units of input coordinates and transformation, to be serialized if the format supports it
std::optional< ColorMR::SaveSettings::solidColor
 the color of whole object
ProgressCallback MR::SaveSettings::progress
 to report save progress and cancel saving if user desires
MR::SegmPoint< T >::a = 0
 a in [0,1], a=0 => point is in v0, a=1 => point is in v1
static constexpr auto MR::SegmPoint< T >::eps = 10 * std::numeric_limits<T>::epsilon()
SeparationPointMap MR::SeparationPointStorage::Block::smap
std::vector< Vector3f > MR::SeparationPointStorage::Block::coords
VertId MR::SeparationPointStorage::Block::shift
 after makeUniqueVids(), it is the unique id of first point in coords
Triangulation MR::SeparationPointStorage::Block::tris
Vector< VoxelId, FaceId > MR::SeparationPointStorage::Block::faceMap
float MR::SharpenMarchingCubesMeshSettings::minNewVertDev = 0
float MR::SharpenMarchingCubesMeshSettings::maxNewRank2VertDev = 0
float MR::SharpenMarchingCubesMeshSettings::maxNewRank3VertDev = 0
float MR::SharpenMarchingCubesMeshSettings::offset = 0
 relative to reference mesh
float MR::SharpenMarchingCubesMeshSettings::maxOldVertPosCorrection = 0
int MR::SharpenMarchingCubesMeshSettings::posSelIters = 3
UndirectedEdgeBitSet * MR::SharpenMarchingCubesMeshSettings::outSharpEdges = nullptr
 if non-null then created sharp edges will be saved here
Vector3f MR::SkyPatch::dir
 direction toward the center of the patch
float MR::SkyPatch::radiation = 0
 radiation of the patch depending on Sun's position, sky clearness and brightness, etc
MR::Sphere< V >::center
T MR::Sphere< V >::radius = 0
MR::SymMatrix2< T >::xx = 0
 zero matrix by default
MR::SymMatrix2< T >::xy = 0
MR::SymMatrix2< T >::yy = 0
MR::SymMatrix3< T >::xx = 0
 zero matrix by default
MR::SymMatrix3< T >::xy = 0
MR::SymMatrix3< T >::xz = 0
MR::SymMatrix3< T >::yy = 0
MR::SymMatrix3< T >::yz = 0
MR::SymMatrix3< T >::zz = 0
MR::SymMatrix4< T >::xx = 0
 zero matrix by default
MR::SymMatrix4< T >::xy = 0
MR::SymMatrix4< T >::xz = 0
MR::SymMatrix4< T >::xw = 0
MR::SymMatrix4< T >::yy = 0
MR::SymMatrix4< T >::yz = 0
MR::SymMatrix4< T >::yw = 0
MR::SymMatrix4< T >::zz = 0
MR::SymMatrix4< T >::zw = 0
MR::SymMatrix4< T >::ww = 0
size_t MR::SystemMemory::physicalTotal = 0
 total amount of physical memory in the system, in bytes (0 if no info)
size_t MR::SystemMemory::physicalAvailable = 0
 available amount of physical memory in the system, in bytes (0 if no info)
tbb::task_arena MR::TbbTaskArenaAndGroup::arena
tbb::task_group MR::TbbTaskArenaAndGroup::group
Signal< void(const std::string &)> MR::TelemetrySignal
 activate this signal if you want to add some string in telemetry
enum MR::BaseTiffParameters::SampleType MR::BaseTiffParameters::Unknown
enum MR::BaseTiffParameters::ValueType MR::BaseTiffParameters::Unknown
int MR::BaseTiffParameters::bytesPerSample = 0
 size of internal data in file
Vector2i MR::BaseTiffParameters::imageSize
 size of image if not layered, otherwise size of layer
bool MR::TiffParameters::tiled = false
 true if tif file is tiled
Vector2i MR::TiffParameters::tileSize
int MR::TiffParameters::layers = 1
int MR::TiffParameters::depth = 0
 tile depth (if several layers)
uint8_t * MR::RawTiffOutput::bytes { nullptr }
 main output data, should be allocated
size_t MR::RawTiffOutput::size { 0 }
 allocated data size
TiffParametersMR::RawTiffOutput::params { nullptr }
 optional params output
AffineXf3f * MR::RawTiffOutput::p2wXf { nullptr }
 optional pixel to world transform
bool MR::RawTiffOutput::convertToFloat { true }
 input if true loads tiff file as floats array
float * MR::RawTiffOutput::min { nullptr }
 min max
float * MR::RawTiffOutput::max { nullptr }
BaseTiffParameters MR::WriteRawTiffParams::baseParams
const AffineXf3f * MR::WriteRawTiffParams::xf = nullptr
 optional transformation data written to GeoTIFF's ModelTransformationTag
std::string MR::WriteRawTiffParams::noData
 optional NoData value written to GDAL_NODATA
Vector3< T > MR::TriTriDistanceResult< T >::a
Vector3< T > MR::TriTriDistanceResult< T >::b
MR::TriTriDistanceResult< T >::distSq = 0
bool MR::TriTriDistanceResult< T >::overlap = true
MR::TriTriDistanceParams< T >::upDistLimitSq = std::numeric_limits<T>::max()
UpLimitCheck MR::TriTriDistanceParams< T >::upLimitCheck = UpLimitCheck::Greater
Triangulation MR::TriMesh::tris
VertCoords MR::TriMesh::points
FaceId MR::FaceFaceFace::aFace
FaceId MR::FaceFaceFace::bFace
FaceId MR::FaceFaceFace::cFace
MR::TriPoint< T >::a
 a in [0,1], a=0 => point is on [v2,v0] edge, a=1 => point is in v1
MR::TriPoint< T >::b
 b in [0,1], b=0 => point is on [v0,v1] edge, b=1 => point is in v2
static constexpr auto MR::TriPoint< T >::eps = SegmPoint<T>::eps
Vector3< T > MR::TwoLineSegmClosestPoints< T >::a
 the closest points each from its respective segment
Vector3< T > MR::TwoLineSegmClosestPoints< T >::b
Vector3< T > MR::TwoLineSegmClosestPoints< T >::dir
float MR::UniformSamplingSettings::distance = 0
 minimal distance between samples
float MR::UniformSamplingSettings::minNormalDot = 0
bool MR::UniformSamplingSettings::lexicographicalOrder = true
const VertNormals * MR::UniformSamplingSettings::pNormals = nullptr
 if not nullptr then these normals will be used during sampling instead of normals in the cloud itself
ProgressCallback MR::UniformSamplingSettings::progress
 to report progress and cancel processing
bool MR::UniteManyMeshesParams::useRandomShifts { false }
 Apply random shift to each mesh, to prevent degenerations on coincident surfaces.
bool MR::UniteManyMeshesParams::fixDegenerations { false }
float MR::UniteManyMeshesParams::maxAllowedError { 1e-5f }
unsigned int MR::UniteManyMeshesParams::randomShiftsSeed { 0 }
 Seed that is used for random shifts.
FaceBitSet * MR::UniteManyMeshesParams::newFaces { nullptr }
 If set, the bitset will store new faces created by boolean operations.
NestedComponenetsMode MR::UniteManyMeshesParams::nestedComponentsMode { NestedComponenetsMode::Remove }
bool MR::UniteManyMeshesParams::mergeOnFail { false }
 If set - merges meshes instead of booleaning it if boolean operation fails.
bool MR::UniteManyMeshesParams::forceCut = false
ProgressCallback MR::UniteManyMeshesParams::progressCb
float MR::UnitInfo::conversionFactor = 1
std::string_view MR::UnitInfo::prettyName
std::string_view MR::UnitInfo::unitSuffix
ThreeVertIds MR::UnorientedTriangle::verts {}
std::vector< T > MR::Vector< T, I >::vec_
 The user can directly manipulate the vector, they can't break anything anyway.
static constexpr int MR::Vector3< T >::elements = 3
MR::Vector3< T >::x
MR::Vector3< T >::y
MR::Vector3< T >::z
static constexpr int MR::Vector4< T >::elements = 4
MR::Vector4< T >::x
MR::Vector4< T >::y
MR::Vector4< T >::z
MR::Vector4< T >::w
static constexpr int MR::VectorTraits< T >::size = 1
static constexpr bool MR::VectorTraits< T >::supportNoInit = false
static constexpr int MR::VectorTraits< Vector2< T > >::size = 2
static constexpr bool MR::VectorTraits< Vector2< T > >::supportNoInit = true
static constexpr int MR::VectorTraits< Vector3< T > >::size = 3
static constexpr bool MR::VectorTraits< Vector3< T > >::supportNoInit = true
static constexpr int MR::VectorTraits< Vector4< T > >::size = 4
static constexpr bool MR::VectorTraits< Vector4< T > >::supportNoInit = true
VertId MR::WatershedGraph::BasinInfo::lowestVert
 in the whole basin
float MR::WatershedGraph::BasinInfo::lowestLevel = FLT_MAX
 lowest level (z-coordinate of lowestVert) in the basin
float MR::WatershedGraph::BasinInfo::area = 0
 precipitation area that flows in this basin (and if it is full, continue flowing next)
float MR::WatershedGraph::BasinInfo::lowestBdLevel = FLT_MAX
 lowest position on the boundary of the basin
float MR::WatershedGraph::BasinInfo::maxVolume = 0
 full water volume to be accumulated in the basin till water reaches the lowest height on the boundary
float MR::WatershedGraph::BasinInfo::accVolume = 0
 accumulated water volume in the basin so far
float MR::WatershedGraph::BasinInfo::lastUpdateAmount = 0
 the amount when accVolume was last updated
float MR::WatershedGraph::BasinInfo::lastMergeLevel = FLT_MAX
 water level in the basin when it was formed (by merge or creation)
float MR::WatershedGraph::BasinInfo::lastMergeVolume = 0
 water volume in the basin when it was formed (by merge or creation)
Graph::EdgeId MR::WatershedGraph::BasinInfo::overflowVia
 when level=lowestBdLevel, volume=0, all water from this basin overflows via this boundary
VertId MR::WatershedGraph::BdInfo::lowestVert
 on this boundary
VertId MR::WatershedGraph::OverflowPoint::v
Graph::VertId MR::WatershedGraph::OverflowPoint::fullBasin
 mesh vertex on the boundary of full basin and the other where it overflows
Graph::VertId MR::WatershedGraph::OverflowPoint::overflowTo
T & MR::Writer< T >::obj
PyObject *(* MR::PythonExport::ModuleData::initFncPointer )(void)
std::array< std::vector< PythonRegisterFuncton >, size_t(Priority::Count)> MR::PythonExport::ModuleData::functions
MeshTriPoint MR::TextMeshAlignParams::startPoint
 Position on mesh, where text's pivot point is mapped.
Vector2f MR::TextMeshAlignParams::pivotPoint {0.0f, 0.0f}
Vector3f MR::TextMeshAlignParams::direction
 Direction of text, must be not zero.
const Vector3f * MR::TextMeshAlignParams::textNormal {nullptr}
 Text normal to surface, if nullptr - use mesh normal at startPoint
float MR::TextMeshAlignParams::fontHeight {1.0f}
 Font height, meters.
float MR::TextMeshAlignParams::surfaceOffset {1.0f}
 Text mesh inside and outside offset of input mesh.
float MR::TextMeshAlignParams::textMaximumMovement {2.5f}
 Maximum possible movement of text mesh alignment, meters.
bool MR::TextMeshAlignParams::fontBasedSizeCalc { false }
 If true then size of each symbol will be calculated from font height, otherwise - on bounding box of the text.
SymbolMeshParams MR::BendTextAlongCurveParams::symbolMesh
 parameters of contours to mesh conversion
float MR::BendTextAlongCurveParams::pivotCurveTime = 0
 Position on the curve, where bounding box's pivot point is mapped.
Vector2f MR::BendTextAlongCurveParams::pivotBoxPoint {0.0f, 0.0f}
float MR::BendTextAlongCurveParams::fontHeight {1.0f}
 Font height, meters.
float MR::BendTextAlongCurveParams::surfaceOffset {1.0f}
 Text mesh inside and outside offset of curve's surface.
bool MR::BendTextAlongCurveParams::fontBasedSizeCalc { false }
 If true then size of each symbol will be calculated from font height, otherwise - on bounding box of the text.
bool MR::BendTextAlongCurveParams::periodicCurve = false
 if true, curve parameter will be always within [0,1) with repetition: xr := x - floor(x)
bool MR::BendTextAlongCurveParams::stretch = true
 stretch whole text along curve to fit in unit curve range
 SourcePoint
 LeaderLine
 Background
 Contour
 _count
PositionedText MR::ObjectLabel::label_
std::filesystem::path MR::ObjectLabel::pathToFont_
Vector2f MR::ObjectLabel::pivotPoint_
float MR::ObjectLabel::fontHeight_ { 25.0f }
 size of label font on screen in pixels
float MR::ObjectLabel::leaderLineWidth_ { 1.0f }
 width of leader line on screen in pixels
float MR::ObjectLabel::sourcePointSize_ { 5.f }
 radius of source point on screen in pixels
float MR::ObjectLabel::backgroundPadding_ { 8.f }
 padding of background on screen in pixels
ViewportMask MR::ObjectLabel::sourcePoint_
ViewportMask MR::ObjectLabel::background_
ViewportMask MR::ObjectLabel::contour_
ViewportMask MR::ObjectLabel::leaderLine_
ViewportProperty< ColorMR::ObjectLabel::sourcePointColor_
ViewportProperty< ColorMR::ObjectLabel::leaderLineColor_
ViewportProperty< ColorMR::ObjectLabel::contourColor_
std::string MR::SymbolMeshParams::text
 Text that will be made mesh.
int MR::SymbolMeshParams::fontDetalization {5}
 Detailization of Bezier curves on font glyphs.
Vector2f MR::SymbolMeshParams::symbolsDistanceAdditionalOffset { 0.0f, 0.0f }
float MR::SymbolMeshParams::symbolsThicknessOffsetModifier { 0.0f }
AlignType MR::SymbolMeshParams::align {AlignType::Left}
 alignment of the text inside bbox
std::filesystem::path MR::SymbolMeshParams::pathToFontFile
 Path to font file.
static constexpr float MR::SymbolMeshParams::MaxGeneratedFontHeight = 5826.0f * 1e-3f
 _WIN32
float MR::ImGuiMenu::hidpiScale_
 Hidpi scaling to be used for text rendering.
float MR::ImGuiMenu::pixelRatio_
float MR::ImGuiMenu::userScaling_ = 1.0f
 user defined additional scaling modifier
ImGuiContext * MR::ImGuiMenu::context_ = nullptr
 ImGui Context.
ImGuiWindow * MR::ImGuiMenu::prevFrameFocusPlugin_ = nullptr
 last focused plugin window
bool MR::ImGuiMenu::pollEventsInPreDraw = false
 if true, then pre_draw will start from polling glfw events
bool MR::ImGuiMenu::showShortcuts_ { false }
 be careful here with true, this can cause infinite recurse
bool MR::ImGuiMenu::showStatistics_ { false }
long long MR::ImGuiMenu::frameTimeMillisecThreshold_ { 25 }
bool MR::ImGuiMenu::showRenameModal_ { false }
std::string MR::ImGuiMenu::renameBuffer_
std::string MR::ImGuiMenu::popUpRenameBuffer_
bool MR::ImGuiMenu::needModalBgChange_ { false }
bool MR::ImGuiMenu::showInfoModal_ { false }
std::string MR::ImGuiMenu::storedModalMessage_
NotificationType MR::ImGuiMenu::modalMessageType_ { NotificationType::Error }
std::shared_ptr< ShortcutManagerMR::ImGuiMenu::shortcutManager_
ImVec2 MR::ImGuiMenu::sceneWindowPos_
ImVec2 MR::ImGuiMenu::sceneWindowSize_
ImVec2 MR::ImGuiMenu::mainWindowPos_
ImVec2 MR::ImGuiMenu::mainWindowSize_
bool MR::ImGuiMenu::savedDialogPositionEnabled_ { false }
std::weak_ptr< ObjectMR::ImGuiMenu::lastRenameObj_
Box3f MR::ImGuiMenu::selectionLocalBox_
Box3f MR::ImGuiMenu::selectionWorldBox_
 updated in drawSelectionInformation_
enum MR::ImGuiMenu::CoordType MR::ImGuiMenu::Local
std::string MR::ImGuiMenu::LabelParams::lastLabel
std::string MR::ImGuiMenu::LabelParams::labelBuffer
std::shared_ptr< ObjectLabelMR::ImGuiMenu::LabelParams::obj { nullptr }
struct MR::ImGuiMenu::LabelParams MR::ImGuiMenu::oldLabelParams_
bool MR::ImGuiMenu::allowRemoval_ { true }
bool MR::ImGuiMenu::uniformScale_ { true }
bool MR::ImGuiMenu::xfHistUpdated_ { false }
bool MR::ImGuiMenu::invertedRotation_ { false }
std::optional< std::pair< std::string, Vector4f > > MR::ImGuiMenu::storedColor_
std::string MR::ImGuiMenu::searchPluginsString_
std::vector< std::shared_ptr< MR::MeshModifier > > MR::ImGuiMenu::modifiers_
enum MR::ImGuiMenu::ViewportConfigurations MR::ImGuiMenu::Single
bool MR::ImGuiMenu::selectionChangedToSingleObj_ { false }
 flag to correctly update scroll on transform window appearing
ViewportId MR::ImGuiMenu::selectedViewport_ = {}
 menu will change objects' colors in this viewport
std::weak_ptr< ObjectMR::ImGuiMenu::editedFeatureObject_
 When editing feature properties, this is the target object.
AffineXf3f MR::ImGuiMenu::editedFeatureObjectOldXf_
 When editing feature properties, this is the original xf of the target object, for history purposes.
std::string MR::ImGuiMenu::TagEditorState::initName
std::string MR::ImGuiMenu::TagEditorState::name
bool MR::ImGuiMenu::TagEditorState::initHasFrontColor = false
bool MR::ImGuiMenu::TagEditorState::hasFrontColor = false
ImVec4 MR::ImGuiMenu::TagEditorState::selectedColor
ImVec4 MR::ImGuiMenu::TagEditorState::unselectedColor
TagEditorState MR::ImGuiMenu::tagEditorState_
bool MR::ImGuiMenu::showEditTag_ = false
 whether to open the Edit Tag modal dialog
std::string MR::ImGuiMenu::tagNewName_
 buffer string for the tag name input widget
NameTagClickSignal MR::ImGuiMenu::nameTagClickSignal
 This is triggered whenever a name tag of an object is clicked.
DrawSceneUiSignal MR::ImGuiMenu::drawSceneUiSignal
 This is called every frame for every viewport. Use this to draw UI bits on top of the scene.
Color MR::ImGuiMenu::SelectionInformationStyle::textColor
 value text color
Color MR::ImGuiMenu::SelectionInformationStyle::labelColor
 property label color
Color MR::ImGuiMenu::SelectionInformationStyle::selectedTextColor
 selected value text color
float MR::ImGuiMenu::SelectionInformationStyle::itemWidth {}
 value item width
float MR::ImGuiMenu::SelectionInformationStyle::item2Width {}
 value item width for two-segment field
float MR::ImGuiMenu::SelectionInformationStyle::item3Width {}
 value item width for three-segment field
bool MR::ImGuiMenu::capturedMouse_ { false }
BasicUiRenderTask::InteractionMask MR::ImGuiMenu::UiRenderManagerImpl::consumedInteractions {}
 Which things are blocked by our renderUi() calls.
std::unique_ptr< UiRenderManagerImplMR::ImGuiMenu::uiRenderManager_
 This class helps the viewer to renderUi() from IRenderObjects.
std::shared_ptr< SceneObjectsListDrawerMR::ImGuiMenu::sceneObjectsList_
std::shared_ptr< ObjectLabelMR::AncillaryLabel::obj
std::shared_ptr< ObjectLinesMR::AncillaryLines::obj
std::shared_ptr< ObjectMeshMR::AncillaryMesh::obj
std::shared_ptr< PlaneObjectMR::AncillaryPlane::obj
std::shared_ptr< ObjectPointsMR::AncillaryPoints::obj
CommandFunc MR::CommandLoop::Command::func
StartPosition MR::CommandLoop::Command::state { StartPosition::BeforeWindowAppear }
std::condition_variable MR::CommandLoop::Command::callerThreadCV
std::thread::id MR::CommandLoop::Command::threadId
int MR::ShaderWarning::number {0}
 number is presented in some of gpu shader compilations output
std::string MR::ShaderWarning::line
 some part of warning line to find
DemoPlugin MR::DemoPluginInstance
Vector3f MR::DirectionWidget::Arrow::dir
 unit direction along arrow
Vector3f MR::DirectionWidget::Arrow::base
 the point from which the arrow starts
float MR::DirectionWidget::Arrow::length = 1
 the length of the arrow
SelectFileSignal MR::FileDialogSignals::onOpenFile
 called when one file is selected for opening (openFileDialog and openFileDialogAsync)
SelectFilesSignal MR::FileDialogSignals::onOpenFiles
 called when several files are selected for opening (openFilesDialog and openFilesDialogAsync)
SelectFileSignal MR::FileDialogSignals::onSaveFile
 called when file name is selected for saving (saveFileDialog and saveFileDialogAsync)
SelectFolderSignal MR::FileDialogSignals::onSelectFolder
 called when one folder is selected (we do not now differ reason)(openFolderDialog and openFolderDialogAsync)
SelectFoldersSignal MR::FileDialogSignals::onSelectFolders
 called when several folders are selected (we do not now differ reason)(openFoldersDialog)
std::string MR::FileParameters::fileName
 Default filename.
std::filesystem::path MR::FileParameters::baseFolder {}
IOFilters MR::FileParameters::filters {}
bool MR::FileDialog::Parameters::folderDialog {false}
bool MR::FileDialog::Parameters::multiselect {true}
 open dialog only
bool MR::FileDialog::Parameters::saveDialog {false}
 open dialog only
const char * MR::FileLoadOptions::undoPrefix = "Open "
 first part of undo name
ReplaceMode MR::FileLoadOptions::replaceMode = ReplaceMode::ContructionBased
 Determines how to deal with current scene after loading new one.
FilesLoadedCallback MR::FileLoadOptions::loadedCallback
float MR::BaseFitParams::factor { 1.f }
bool MR::BaseFitParams::snapView { false }
FitMode MR::FitDataParams::mode { FitMode::Visible }
std::vector< std::shared_ptr< VisualObject > > MR::FitDataParams::objsList
 fit mode
Box3f MR::FitBoxParams::worldBox
size_t MR::FrameCounter::totalFrameCounter { 0 }
size_t MR::FrameCounter::swappedFrameCounter { 0 }
size_t MR::FrameCounter::startFrameNum { 0 }
size_t MR::FrameCounter::fps { 0 }
std::chrono::duration< double > MR::FrameCounter::drawTimeMilliSec { 0 }
static constexpr GLuint MR::GlTexture::NO_TEX = 0
Vector3i MR::GlTexture::Settings::resolution
GLint MR::GlTexture::Settings::internalFormat = GL_RGBA
GLint MR::GlTexture::Settings::format = GL_RGBA
GLint MR::GlTexture::Settings::type = GL_UNSIGNED_BYTE
WrapType MR::GlTexture::Settings::wrap = WrapType::Mirror
FilterType MR::GlTexture::Settings::filter = FilterType::Discrete
GLuint MR::GlTexture::textureID_ = NO_TEX
size_t MR::GlTexture::size_ = 0
GLenum MR::GlTexture::type_ = NO_TEX
Color MR::MarkedVoxelSlice::Mark::color
VoxelBitSet MR::MarkedVoxelSlice::Mark::mask
std::array< Mark, size_t(MaskType::Count)> MR::MarkedVoxelSlice::Parameters::marks = {Mark{Color::red()},Mark{Color::blue()},Mark{Color::yellow()}}
 Base marks.
std::vector< MarkMR::MarkedVoxelSlice::Parameters::customBackgroundMarks
std::vector< MarkMR::MarkedVoxelSlice::Parameters::customForegroundMarks
Vector3i MR::MarkedVoxelSlice::Parameters::activeVoxel
 Current voxel.
Box3i MR::MarkedVoxelSlice::Parameters::activeBox
 Active box, set as ObjectVoxels active box in constructor.
float MR::MarkedVoxelSlice::Parameters::min {0.0f}
 Minimum dense to show black.
float MR::MarkedVoxelSlice::Parameters::max {0.0f}
 Maximum dense to show white.
SlicePlane MR::MarkedVoxelSlice::Parameters::activePlane {XY}
 Slice plane.
std::optional< ColorMR::MarkedVoxelSlice::Parameters::inactiveVoxelColor
 if inactiveVoxelColor is set to some color then it will be blended with inactive voxel's color
MR::Color MR::BoundarySelectionWidget::BoundarySelectionWidgetParams::ordinaryColor = MR::Color::gray()
float MR::BoundarySelectionWidget::BoundarySelectionWidgetParams::ordinaryLineWidth = 3
MR::Color MR::BoundarySelectionWidget::BoundarySelectionWidgetParams::hoveredColor = MR::Color::green()
float MR::BoundarySelectionWidget::BoundarySelectionWidgetParams::hoveredLineWidth = 4
MR::Color MR::BoundarySelectionWidget::BoundarySelectionWidgetParams::selectedColor = MR::Color::purple()
float MR::BoundarySelectionWidget::BoundarySelectionWidgetParams::selectedLineWidth = 3
BoundarySelectionWidgetParams MR::BoundarySelectionWidget::params
 configuration params
float MR::ModalDialogSettings::windowWidth = 0.f
 Dialog window width. If the value is zero or negative, defaults to cModalWindowWidth * UI::scale().
std::string MR::ModalDialogSettings::headline
bool MR::ModalDialogSettings::closeButton = false
 Add a close button next in the top right corner of the dialog.
std::string MR::ModalDialogSettings::text
 Render a centered text under the headline.
bool * MR::ModalDialogSettings::dontShowAgain = nullptr
bool MR::ModalDialogSettings::closeOnClickOutside = false
 If set, close the dialog on mouse click outside of it.
std::function< void()> MR::ModalDialogSettings::onWindowClose
 Callback for the window close event.
MouseButton MR::MouseController::MouseControlKey::btn { MouseButton::Left }
int MR::MouseController::MouseControlKey::mod { 0 }
float MR::MoveObjectByMouseImpl::deadZonePixelRadius_ { 20.0f }
AffineXf3f MR::MoveObjectByMouseImpl::currentXf_
enum MR::MruFormatParameters::MeshFormat MR::MruFormatParameters::meshFormat = MeshFormat::Ply
 ObjectMesh storage format.
enum MR::MruFormatParameters::PointsFormat MR::MruFormatParameters::pointsFormat = PointsFormat::Ply
 ObjectPoints storage format.
enum MR::MruFormatParameters::VoxelsFormat MR::MruFormatParameters::voxelsFormat = VoxelsFormat::Vdb
 ObjectVoxels storage format.
float MR::TransformControls::VisualParams::radius { -1.0f }
float MR::TransformControls::VisualParams::width { -1.0f }
SizeType MR::TransformControls::VisualParams::sizeType = SizeType::LengthUnit
 sets the type of widget size units (metric length or pixels units)
float MR::TransformControls::VisualParams::coneRadiusFactor { 1.35f }
 the product of this factor and width gives cone radius of the arrows
float MR::TransformControls::VisualParams::coneSizeFactor { 2.2f }
 the product of this factor and width gives cone size of the arrows
float MR::TransformControls::VisualParams::negativeLineExtension { 1.15f }
 extension of the translation line in the negative direction relative to the radius
float MR::TransformControls::VisualParams::positiveLineExtension { 1.3f }
 extension of the translation line in the positive direction relative to the radius
std::array< Color, size_t(Axis::Count)> MR::TransformControls::VisualParams::rotationColors { Color::red(),Color::green(),Color::blue() }
 colors of widget
std::array< Color, size_t(Axis::Count)> MR::TransformControls::VisualParams::translationColors { Color::red(),Color::green(),Color::blue() }
Color MR::TransformControls::VisualParams::helperLineColor { Color::black() }
Color MR::TransformControls::VisualParams::activeLineColor { Color::white() }
static const std::vector< ColorMR::Palette::DefaultColors
 preset palette colors: from blue via green to red
float MR::Palette::Label::value = 0.f
std::string MR::Palette::Label::text
 label position according normal scale (from Min to Max)
bool MR::Palette::Label::isZero = false
 label text
std::vector< float > MR::Palette::Parameters::ranges = { 0.f, 1.f }
std::vector< ColorMR::Palette::Parameters::baseColors
 range limits for palette
MinMaxf MR::Palette::Parameters::legendLimits
 palette base colors (need for calculate real colors according discretization)
int MR::Palette::Parameters::discretization = 7
 if valid - limit legend range
int MR::Palette::drawDelayFrames_ = 0
int MR::HoleEdgePoint::holeIdx { -1 }
 hole index
MeshEdgePoint MR::HoleEdgePoint::edgePoint
int MR::PickPointManager::Params::widgetContourCloseMod = getGlfwModPrimaryCtrl()
 Modifier key for closing a contour (ordered vector of points) using the widget.
int MR::PickPointManager::Params::widgetDeletePointMod = GLFW_MOD_SHIFT
 Modifier key for deleting a point using the widget.
bool MR::PickPointManager::Params::writeHistory = true
 Whether to write undo history of all operations including public modifying functions and user actions.
std::string MR::PickPointManager::Params::historyNameSuffix
 This is appended to the names of all undo/redo actions.
bool MR::PickPointManager::Params::startDraggingJustAddedPoint = true
 Whether to activate dragging new point immediately after its creation on mouse down.
SurfacePointWidget::Parameters MR::PickPointManager::Params::surfacePointParams
Color MR::PickPointManager::Params::ordinaryPointColor = Color::gray()
 The color of all pick spheres except the one with the largest index on each object.
Color MR::PickPointManager::Params::lastPointColor = Color::green()
 The color of last by index pick sphere in open contour.
Color MR::PickPointManager::Params::closeContourPointColor = Color::transparent()
 The color of last by index pick sphere in closed contour, which coincides in position with the first pick sphere.
Viewport::PickRenderObjectPredicate MR::PickPointManager::Params::pickPredicate
 Predicate to additionally filter objects that should be treated as pickable.
AllowCallBack MR::PickPointManager::Params::canAddPoint
PickerPointCallBack MR::PickPointManager::Params::onPointAdd
 This callback is invoked after a point is added with its index.
AllowCallBack MR::PickPointManager::Params::canMovePoint
PickerPointCallBack MR::PickPointManager::Params::onPointMoveStart
 This callback is invoked when a point starts being dragged.
PickerPointCallBack MR::PickPointManager::Params::onPointMove
 This callback is invoked every time after currently dragged point is moved (in between onPointMoveStart and onPointMoveFinish)
PickerPointCallBack MR::PickPointManager::Params::onPointMoveFinish
 This callback is invoked when point's dragging is completed.
AllowCallBack MR::PickPointManager::Params::canRemovePoint
PickerPointCallBack MR::PickPointManager::Params::onPointRemove
 This callback is invoked when a point is removed with its index before deletion.
ChangeObjectCallBack MR::PickPointManager::Params::onUpdatePoints
Params MR::PickPointManager::params
std::weak_ptr< VisualObjectMR::PickPointManager::ObjectState::objPtr
std::vector< PickedPointMR::PickPointManager::ObjectState::pickedPoints
boost::signals2::scoped_connection MR::PickPointManager::ConnectionHolder::onMeshChanged
boost::signals2::scoped_connection MR::PickPointManager::ConnectionHolder::onPointsChanged
Vector3f MR::PointInAllSpaces::screenSpace
Vector3f MR::PointInAllSpaces::viewportSpace
ViewportId MR::PointInAllSpaces::viewportId
Vector3f MR::PointInAllSpaces::clipSpace
Vector3f MR::PointInAllSpaces::cameraSpace
Vector3f MR::PointInAllSpaces::worldSpace
 World space: applied model transform to Mesh(Point Cloud) vertices xyz[-inf, inf].
std::shared_ptr< VisualObjectMR::PointInAllSpaces::obj
 Model space: coordinates as they stored in the model of VisualObject.
PointOnFace MR::PointInAllSpaces::pof
ImVec2 MR::BasicClickableRectUiRenderTask::clickableCornerA
 Set those to set the clickable area. Zero both to hovers and clicks.
ImVec2 MR::BasicClickableRectUiRenderTask::clickableCornerB
bool MR::BasicClickableRectUiRenderTask::enabled = true
bool MR::BasicClickableRectUiRenderTask::isHovered = false
 Read these to decide how to render.
bool MR::BasicClickableRectUiRenderTask::isActive = false
float MR::RenderDimensions::Tolerance::positive = 0
float MR::RenderDimensions::Tolerance::negative = 0
 Should be positive or zero.
const VisualObjectMR::RenderDimensions::CommonParams::objectToSelect = nullptr
std::string MR::RenderDimensions::CommonParams::objectName
 Optional. If specified, this name is drawn above the measurement.
CommonParams MR::RenderDimensions::PointParams::common
Vector3f MR::RenderDimensions::PointParams::point
ImVec2 MR::RenderDimensions::PointParams::align = ImVec2( 1, 1 )
 The world point.
std::optional< Vector3f > MR::RenderDimensions::PointParams::referencePoint
 If specified, we're comparing point against this position.
Vector3f MR::RenderDimensions::PointParams::referenceNormal
std::optional< ToleranceMR::RenderDimensions::PointParams::tolerance
bool MR::RenderDimensions::PointParams::capIsVisible = true
 Whether to draw the cap or not.
CommonParams MR::RenderDimensions::RadiusParams::common
Vector3f MR::RenderDimensions::RadiusParams::center
 The center point.
Vector3f MR::RenderDimensions::RadiusParams::radiusAsVector = Vector3f( 1, 0, 0 )
 The length of this is the radius. This is also the preferred drawing direction relative to center.
Vector3f MR::RenderDimensions::RadiusParams::normal = Vector3f( 0, 0, 1 )
 The preferred normal for non-spherical radiuses. The length is ignored, and this is automatically adjusted to be perpendicular to radiusAsVector.
bool MR::RenderDimensions::RadiusParams::drawAsDiameter = false
 Whether we should draw this as a diameter instead of a radius.
bool MR::RenderDimensions::RadiusParams::isSpherical = false
 Whether this is a sphere radius, as opposed to circle/cylinder radius.
float MR::RenderDimensions::RadiusParams::visualLengthMultiplier = 2 / 3.f
CommonParams MR::RenderDimensions::AngleParams::common
Vector3f MR::RenderDimensions::AngleParams::center
 The center point.
std::array< Vector3f, 2 > MR::RenderDimensions::AngleParams::rays
bool MR::RenderDimensions::AngleParams::isConical = false
 Whether this is a conical angle. The middle line between the rays is preserved, but the rays themselves can be rotated.
std::array< bool, 2 > MR::RenderDimensions::AngleParams::shouldVisualizeRay { true, true }
 Whether we should draw a ray from the center point to better visualize the angle. Enable this if there isn't already a line object there.
CommonParams MR::RenderDimensions::LengthParams::common
std::array< Vector3f, 2 > MR::RenderDimensions::LengthParams::points
 The points between which we're measuring.
bool MR::RenderDimensions::LengthParams::drawAsNegative = false
 Whether the distance should be displayed as a negative one.
std::optional< int > MR::RenderDimensions::LengthParams::onlyOneAxis
 If set, use only once axis (with this index, 0..2) instead of euclidean.
std::optional< float > MR::RenderDimensions::LengthParams::referenceValue
 If set, we're comparing the distance with a reference value.
std::optional< ToleranceMR::RenderDimensions::LengthParams::tolerance
 Tolerances. Only make sense if referenceValue is set.
GLuint MR::BindVertexAttribArraySettings::program_shader = 0
const char * MR::BindVertexAttribArraySettings::name = nullptr
GlBufferMR::BindVertexAttribArraySettings::buf
const char * MR::BindVertexAttribArraySettings::arr = nullptr
size_t MR::BindVertexAttribArraySettings::arrSize = 0
int MR::BindVertexAttribArraySettings::baseTypeElementsNumber = 0
bool MR::BindVertexAttribArraySettings::refresh = false
bool MR::BindVertexAttribArraySettings::forceUse = false
bool MR::BindVertexAttribArraySettings::isColor = false
Vector2i MR::FramebufferData::DrawParams::size
WrapType MR::FramebufferData::DrawParams::wrap { WrapType::Clamp }
 size of the viewport that is used in draw function
FilterType MR::FramebufferData::DrawParams::filter { FilterType::Linear }
 wrap type of underlaying textures
bool MR::FramebufferData::DrawParams::forceSimpleDepthDraw = false
 filter type of underlaying textures
float MR::FramebufferData::DrawParams::simpleDepth = 0.5f
 force using simpleDepth for all fragments even if depth texture is present
const ObjectMeshHolderMR::RenderMeshObject::objMesh_
int MR::RenderMeshObject::vertPosSize_ { 0 }
int MR::RenderMeshObject::vertNormalsSize_ { 0 }
int MR::RenderMeshObject::vertColorsSize_ { 0 }
int MR::RenderMeshObject::vertUVSize_ { 0 }
int MR::RenderMeshObject::faceIndicesSize_ { 0 }
int MR::RenderMeshObject::edgeSize_ { 0 }
int MR::RenderMeshObject::selEdgeSize_ { 0 }
int MR::RenderMeshObject::bordersSize_ { 0 }
int MR::RenderMeshObject::pointSize_ { 0 }
int MR::RenderMeshObject::pointValidSize_ { 0 }
Vector2i MR::RenderMeshObject::faceSelectionTextureSize_
Vector2i MR::RenderMeshObject::faceNormalsTextureSize_
Vector2i MR::RenderMeshObject::texturePerFaceSize_
GLuint MR::RenderMeshObject::edgesArrayObjId_ { 0 }
GLuint MR::RenderMeshObject::borderArrayObjId_ { 0 }
GlBuffer MR::RenderMeshObject::borderBuffer_
GLuint MR::RenderMeshObject::selectedEdgesArrayObjId_ { 0 }
GlBuffer MR::RenderMeshObject::selectedEdgesBuffer_
GLuint MR::RenderMeshObject::meshArrayObjId_ { 0 }
GLuint MR::RenderMeshObject::meshPickerArrayObjId_ { 0 }
GlBuffer MR::RenderMeshObject::vertPosBuffer_
GlBuffer MR::RenderMeshObject::vertUVBuffer_
GlBuffer MR::RenderMeshObject::vertNormalsBuffer_
GlBuffer MR::RenderMeshObject::vertColorsBuffer_
GlBuffer MR::RenderMeshObject::facesIndicesBuffer_
GlTexture2 MR::RenderMeshObject::faceSelectionTex_
GlTexture2 MR::RenderMeshObject::faceColorsTex_
GlTexture2 MR::RenderMeshObject::facesNormalsTex_
GlTexture2 MR::RenderMeshObject::texturePerFace_
GlTexture2DArray MR::RenderMeshObject::textureArray_
GlTexture2 MR::RenderMeshObject::edgesTexture_
GlTexture2 MR::RenderMeshObject::selEdgesTexture_
GlTexture2 MR::RenderMeshObject::borderTexture_
GlTexture2 MR::RenderMeshObject::emptyVertsColorTexture_
GlTexture2 MR::RenderMeshObject::emptyLinesColorTexture_
GlTexture2 MR::RenderMeshObject::emptyScnLengthColorTexture_
int MR::RenderMeshObject::maxTexSize_ { 0 }
GLuint MR::RenderMeshObject::pointsArrayObjId_ { 0 }
GlBuffer MR::RenderMeshObject::pointValidBuffer_
bool MR::RenderMeshObject::dirtyPointPos_ = false
uint32_t MR::RenderMeshObject::dirty_ { 0 }
 Marks dirty buffers that need to be uploaded to OpenGL.
bool MR::RenderMeshObject::dirtyEdges_ { false }
 ...
bool MR::RenderMeshObject::cornerMode_ = false
const VisualObjectMR::RenderNameObject::Task::object = nullptr
const UiRenderParamsMR::RenderNameObject::Task::params = nullptr
ImVec2 MR::RenderNameObject::Task::point
ImVec2 MR::RenderNameObject::Task::point2
ImVec2 MR::RenderNameObject::Task::textCenter
ImGuiMeasurementIndicators::Text MR::RenderNameObject::Task::text
ImVec2 MR::RenderNameObject::Task::textPos
ImVec2 MR::RenderNameObject::Task::paddingA
ImVec2 MR::RenderNameObject::Task::paddingB
ImGuiMeasurementIndicators::Text MR::RenderNameObject::Task::textExtra
float MR::RenderNameObject::Task::textToExtraTextSpacing = 0
Vector3f MR::RenderNameObject::nameUiPoint
 The line attachment point.
bool MR::RenderNameObject::nameUiPointIsRelativeToBoundingBoxCenter = true
Vector3f MR::RenderNameObject::nameUiLocalOffset
 Which way the name is moved relative to the point, in model space. The length is respected.
Vector2f MR::RenderNameObject::nameUiScreenOffset
std::optional< Vector3f > MR::RenderNameObject::nameUiRotateToScreenPlaneAroundSphereCenter
bool MR::RenderNameObject::nameUiRotateLocalOffset90Degrees = false
enum MR::DrawButtonParams::SizeType MR::DrawButtonParams::Big
ImVec2 MR::DrawButtonParams::itemSize
 type of button to draw
float MR::DrawButtonParams::iconSize { 0.f }
 size of whole item group, needed for all, this should respect system scaling
enum MR::DrawButtonParams::RootType MR::DrawButtonParams::Ribbon
bool MR::DrawButtonParams::forceHovered = false
 if true treat this item as hovered
bool MR::DrawButtonParams::forcePressed = false
 if true treat this item as pressed
bool * MR::DrawButtonParams::isPressed = nullptr
 set true if item pressed
std::function< int(bool, bool)> MR::CustomButtonParameters::pushColorsCb
 if not set push default ribbon colors
RibbonIcons::IconType MR::CustomButtonParameters::iconType
float MR::RibbonButtonDrawer::ButtonItemWidth::baseWidth { 0.0f }
float MR::RibbonButtonDrawer::ButtonItemWidth::additionalWidth { 0.0f }
constexpr float MR::cGradientButtonFramePadding = 7.5f
constexpr float MR::cTabYOffset = 4.0f
constexpr float MR::cTabsInterval = 8.0f
constexpr float MR::cTabFrameRounding = 5.0f
constexpr float MR::cTabMinimumWidth = 68.0f
constexpr float MR::cTabHeight = 28.0f
constexpr float MR::cTabLabelMinPadding = 12.0f
constexpr float MR::cTopPanelScrollStep = 50.0f
constexpr float MR::cTopPanelScrollBtnSize = 20.0f
constexpr float MR::cTopPanelAditionalButtonSize = cTabHeight - cTabYOffset
constexpr float MR::cSeparateBlocksSpacing = 12.0f
constexpr float MR::cSeparatorIndentMultiplier = 0.67f
constexpr float MR::cRibbonItemInterval = 4.0f
constexpr float MR::cRibbonItemMinWidth = 86.0f
constexpr float MR::cRibbonButtonWindowPaddingX = 6.0f
constexpr float MR::cRibbonButtonWindowPaddingY = 4.0f
constexpr float MR::cCheckboxPadding = 2.0f
constexpr float MR::cButtonPadding = 8.0f
constexpr float MR::cInputPadding = 9.0f
constexpr float MR::cDefaultItemSpacing = 8.0f
constexpr float MR::cDefaultInnerSpacing = 8.0f
constexpr float MR::cDefaultWindowPaddingX = 8.0f
constexpr float MR::cDefaultWindowPaddingY = 12.0f
constexpr float MR::cItemInfoIndent = 16.0f
constexpr float MR::cSmallItemDropSizeModifier = 0.5f
constexpr float MR::cHeaderQuickAccessFrameRounding = 3.0f
constexpr float MR::cHeaderQuickAccessXSpacing = 12.0f
constexpr float MR::cHeaderQuickAccessIconSize = 14.0f
constexpr float MR::cHeaderQuickAccessFrameSize = 24.0f
constexpr float MR::cMiddleIconSize = 15.0f
constexpr float MR::cSmallIconSize = 10.0f
constexpr float MR::cQuickAccessBarHeight = 40.0f
constexpr float MR::cScrollBarSize = 10.0f
constexpr float MR::cBigIconSize = 20.0f
constexpr int MR::cSmallFontSize = 11
constexpr int MR::cMiddleFontSize = 12
constexpr int MR::cDefaultFontSize = 13
constexpr int MR::cBigFontSize = 15
constexpr int MR::cHeadlineFontSize = 20
constexpr float MR::cRadioButtonSize = 20.0f
constexpr float MR::cModalWindowWidth = 368.0f
constexpr float MR::cModalWindowPaddingX = 28.0f
constexpr float MR::cModalWindowPaddingY = 20.0f
constexpr float MR::cModalButtonWidth = 104.0f
const float MR::cRadioInnerSpacingX = 12.f
constexpr Vector2f MR::StyleConsts::pluginItemSpacing { 8, 10 }
constexpr float MR::StyleConsts::Modal::bigTitlePadding = 22.0f
constexpr float MR::StyleConsts::Modal::exitBtnSize = 24.0f
constexpr float MR::StyleConsts::ProgressBar::internalSpacing = 16.0f
constexpr float MR::StyleConsts::ProgressBar::rounding = 8.0f
constexpr Color MR::StyleConsts::ProgressBar::textColor = Color( 117, 125, 136 )
constexpr Vector2f MR::StyleConsts::CustomCombo::framePadding { 13, 8 }
constexpr float MR::StyleConsts::Notification::cWindowRounding = 4.f
constexpr float MR::StyleConsts::Notification::cWindowSpacing = 20.f
constexpr float MR::StyleConsts::Notification::cWindowBorderWidth = 2.f
constexpr float MR::StyleConsts::Notification::cWindowPadding = 16.f
constexpr float MR::StyleConsts::Notification::cNotificationWindowPaddingX = 10.f
constexpr float MR::StyleConsts::Notification::cNotificationWindowPaddingY = 10.f
constexpr float MR::StyleConsts::Notification::cWindowsPosY = 95.f
constexpr float MR::StyleConsts::Notification::cHistoryButtonSizeY = 28.0f
constexpr Vector2f MR::StyleConsts::Notification::cTextFramePadding { 30, 8 }
constexpr float MR::StyleConsts::Notification::cTextFrameRounding = 8.0f
FontFile MR::RibbonFontManager::FontData::fontFile { FontFile::RegularSC }
Vector2f MR::RibbonFontManager::FontData::scaledOffset
 what file type to use for this font
ImFont * MR::RibbonFontManager::FontData::fontPtr { nullptr }
 offset that is used for each glyph while creating atlas (updates in updateFontsScaledOffset_), should respect font size with scaling
std::unique_ptr< ImGuiImageMR::RibbonIcons::Icons::colored
std::unique_ptr< ImGuiImageMR::RibbonIcons::Icons::white
std::filesystem::path MR::RibbonIcons::IconTypeData::pathDirectory
std::pair< Sizes, Sizes > MR::RibbonIcons::IconTypeData::minMaxSizes
 first - min size, second - max size
AvailableColor MR::RibbonIcons::IconTypeData::availableColor = AvailableColor::White
HashMap< std::string, SizedIcons > MR::RibbonIcons::IconTypeData::map
std::optional< RibbonMenuUIConfigMR::RibbonConfig::menuUIConfig
std::optional< ColorMR::RibbonConfig::monochromeRibbonIcons
std::optional< Json::Value > MR::RibbonConfig::colorTheme
 if present all ribbon items will be drawn with this monochrome color (if available)
std::optional< Json::Value > MR::RibbonConfig::ribbonStructure
 if present will be applied
std::optional< Json::Value > MR::RibbonConfig::ribbonItemsOverrides
 analogue for ui.json file, if present will replace current layout
Setter MR::RibbonMenu::CustomContextMenuCheckbox::setter
Getter MR::RibbonMenu::CustomContextMenuCheckbox::getter
SelectedTypesMask MR::RibbonMenu::CustomContextMenuCheckbox::selectedMask = SelectedTypesMask( -1 )
TabChangedSignal MR::RibbonMenu::tabChangedSignal
 this signal is called when active tab changes
int MR::RibbonMenu::DrawGroupConfig::numBig { 0 }
int MR::RibbonMenu::DrawGroupConfig::numSmallText { 0 }
int MR::RibbonMenu::DrawGroupConfig::numSmall { 0 }
std::shared_ptr< RibbonMenuItemMR::RibbonMenu::DialogItemPtr::item
bool MR::RibbonMenu::DialogItemPtr::dialogPositionFixed { false }
 this flag is needed to correctly fix position of UI dialog (temporary, while plugin dialogs are floating in viewport)
DialogItemPtr MR::RibbonMenu::activeBlockingItem_
std::vector< DialogItemPtrMR::RibbonMenu::activeNonBlockingItems_
std::vector< std::shared_ptr< const Object > > MR::RibbonMenu::prevFrameSelectedObjectsCache_
RibbonMenuSearch MR::RibbonMenu::searcher_
RibbonItemType MR::RibbonMenuItem::type_ { RibbonItemType::Button }
DropItemsList MR::RibbonMenuItem::dropList_
RibbonButtonDrawerMR::RibbonMenuSearch::Parameters::btnDrawer
RibbonFontManagerMR::RibbonMenuSearch::Parameters::fontManager
std::function< void(int)> MR::RibbonMenuSearch::Parameters::changeTabFunc
Signal< void()> MR::RibbonMenuSearch::onFocusSignal
 this signal is emitted when search bar is focused
Signal< void(std::shared_ptr< RibbonMenuItem >)> MR::RibbonMenuSearch::onToolActivateSignal
 this signal is emitted when tool is activated within search
RibbonTopPanelLayoutMode MR::RibbonMenuUIConfig::topLayout { RibbonTopPanelLayoutMode::RibbonWithTabs }
 how to show top panel
bool MR::RibbonMenuUIConfig::centerRibbonItems { false }
 if true - items on selected tab will be centered to have equal spacing from left and right (ignored top panel is hidden)
bool MR::RibbonMenuUIConfig::drawScenePanel { true }
 if false - panel with scene tree, information and transform will be hidden
bool MR::RibbonMenuUIConfig::drawToolbar { true }
 if false - toolbar will be hidden (ignored if top panel is hidden)
bool MR::RibbonMenuUIConfig::drawViewportTags { true }
 if false - window with viewport label and id will be hidden
bool MR::RibbonMenuUIConfig::drawNotifications { true }
 if false - no notifications are drawn on screen
bool MR::RibbonMenuUIConfig::drawSearchBar { true }
 if false - hides search bar at the header panel of ribbon
std::string MR::RibbonMenuUIConfig::helpLink = "https:/// meshinspector.com/inapphelp/"
 help btn leads to this page, if empty - no help btn is drawn
OnButtonClick MR::RibbonNotification::onButtonClick
std::string MR::RibbonNotification::buttonName = "OK"
 Name of button that will be drawn if callback is enabled.
std::string MR::RibbonNotification::header
 Header of notification.
std::string MR::RibbonNotification::text
 Text of notification.
NotificationType MR::RibbonNotification::type { NotificationType::Info }
 Type of notification.
float MR::RibbonNotification::lifeTimeSec = -1.0f
NotificationTagMask MR::RibbonNotification::tags = NotificationTags::All
 it ANDs with RibbonNotifier allowed tags to see if notification should be displayed
float MR::RibbonNotifier::defaultNotificationLifeTimeSeconds = 5.0f
 this value is used as notification lifeTimeSec if negative values passed
NotificationTagMask MR::RibbonNotifier::allowedTagMask = NotificationTags::Default
 this mask is used to control allowed notifications by filtering with tags
RibbonNotificationCorner MR::RibbonNotifier::cornerPosition = RibbonNotificationCorner::LowerLeft
 position of notifications on screen
RibbonNotification MR::RibbonNotifier::NotificationWithTimer::notification
float MR::RibbonNotifier::NotificationWithTimer::timer { 0.0f }
int MR::RibbonNotifier::NotificationWithTimer::sameCounter = 1
int MR::RibbonNotifier::DrawNotificationSettings::index { 0 }
float MR::RibbonNotifier::DrawNotificationSettings::width { 0.0f }
bool MR::RibbonNotifier::DrawNotificationSettings::historyMode { false }
Vector2f * MR::RibbonNotifier::DrawNotificationSettings::currentPos { nullptr }
Signal< void()> MR::RibbonSceneObjectsListDrawer::onDrawContextSignal
 this signal is emitted each frame inside scene context window
float MR::RibbonSceneObjectsListDrawer::LastDepthInfo::screenPosY { 0.0f }
int MR::RibbonSceneObjectsListDrawer::LastDepthInfo::id { 0 }
float MR::MenuItemCaptionSize::baseSize { 0.0f }
SplitCaptionInfo MR::MenuItemCaptionSize::splitInfo
std::shared_ptr< RibbonMenuItemMR::MenuItemInfo::item
std::string MR::MenuItemInfo::caption
std::string MR::MenuItemInfo::tooltip
std::string MR::MenuItemInfo::icon
MenuItemCaptionSize MR::MenuItemInfo::captionSize
std::string MR::MenuItemInfo::helpLink
 already scaled
int MR::MenuItemInfo::localeDomainId = -1
 link to help page
std::string MR::RibbonTab::name
int MR::RibbonTab::priority { 0 }
bool MR::RibbonTab::experimental { false }
std::vector< RibbonTabMR::RibbonSchema::tabsOrder
TabsGroupsMap MR::RibbonSchema::tabsMap
GroupsItemsMap MR::RibbonSchema::groupsMap
ItemMap MR::RibbonSchema::items
MenuItemsList MR::RibbonSchema::defaultQuickAccessList
MenuItemsList MR::RibbonSchema::headerQuickAccessList
MenuItemsList MR::RibbonSchema::sceneButtonsList
int MR::RibbonSchemaHolder::SearchResult::tabIndex { -1 }
const MenuItemInfoMR::RibbonSchemaHolder::SearchResult::item { nullptr }
 -1 is default value if item has no tab
float MR::RibbonSchemaHolder::SearchResultWeight::captionWeight { 1.f }
float MR::RibbonSchemaHolder::SearchResultWeight::captionOrderWeight { 1.f }
float MR::RibbonSchemaHolder::SearchResultWeight::tooltipWeight { 1.f }
float MR::RibbonSchemaHolder::SearchResultWeight::tooltipOrderWeight { 1.f }
int * MR::RibbonSchemaHolder::SearchParams::captionCount = nullptr
 gets the number of matches in the captions
std::vector< SearchResultWeight > * MR::RibbonSchemaHolder::SearchParams::weights = nullptr
 returns the coefficients of matching the search string for each tool found
RequirementsFunction MR::RibbonSchemaHolder::SearchParams::requirementsFunc = {}
 sort the results according to the launch capability (empty requirements)
bool MR::SaveObjectSettings::backupOriginalFile = false
 if true then before saving, original files is renamed, and renamed back if saving fails
ProgressCallback MR::SaveObjectSettings::callback
 callback function to set progress (for progress bar)
ObjectList< ObjectType > MR::SceneCache::VectorHolder< ObjectType, SelectivityType >::value
bool MR::SceneObjectsListDrawer::showNewSelectedObjects_ = true
bool MR::SceneObjectsListDrawer::deselectNewHiddenObjects_ = false
int MR::SceneObjectsListDrawer::MoveAndScrollData::index = -1
float MR::SceneObjectsListDrawer::MoveAndScrollData::posY = -1.f
 index of new selected object in list of all
bool MR::SceneObjectsListDrawer::MoveAndScrollData::needScroll = false
 scroll position of new selected object in list of all
float MR::SceneObjectsListDrawer::ScrollPositionPreservation::relativeMousePos { 0.0f }
float MR::SceneObjectsListDrawer::ScrollPositionPreservation::absLinePosRatio { 0.0f }
std::unordered_map< const Object *, bool > MR::SceneObjectsListDrawer::sceneOpenCommands_
constexpr int MR::sDefaultGroupState = 0
std::shared_ptr< ObjectMR::FlatTree::root
std::vector< std::shared_ptr< Object > > MR::FlatTree::subobjects
std::shared_ptr< ObjectMR::TypedFlatTree::root
std::vector< std::shared_ptr< ObjectMesh > > MR::TypedFlatTree::objsMesh
std::vector< std::shared_ptr< ObjectLines > > MR::TypedFlatTree::objsLines
std::vector< std::shared_ptr< ObjectPoints > > MR::TypedFlatTree::objsPoints
std::vector< Object * > MR::SceneReorder::who
 objects that will be moved
ObjectMR::SceneReorder::to { nullptr }
 target object
bool MR::SceneReorder::before { false }
std::string MR::SceneReorder::historyName { "Reorder Scene" }
 the name of added undo history scope
std::function< void()> MR::ViewerSetup::setupCustomLogSink
 functor to setup custom log sink, i.e. sending logs to web
std::function< void()> MR::ViewerSetup::shutdownCustomLogSink
 functor to shutdown custom log sink, i.e. send all remaining logs to web before exit
std::filesystem::path MR::ViewerSetup::LoadedModule::filename
int MR::ShortcutKey::key { 0 }
int MR::ShortcutKey::mod { 0 }
Category MR::ShortcutManager::ShortcutCommand::category
std::string MR::ShortcutManager::ShortcutCommand::name
std::function< void()> MR::ShortcutManager::ShortcutCommand::action
 name of action
bool MR::ShortcutManager::ShortcutCommand::repeatable = true
static const std::string MR::ShortcutManager::categoryNames [6] = { "Info", "Edit", "View", "Scene", "Objects", "Selection " }
bool MR::ShortcutManager::enabled_ { true }
ShourtcutsMap MR::ShortcutManager::map_
ShourtcutsBackMap MR::ShortcutManager::backMap_
std::optional< ShortcutListMR::ShortcutManager::listCache_
std::string MR::SplashWindow::name_
GLFWwindow * MR::SplashWindow::window_ { nullptr }
ImGuiContext * MR::SplashWindow::guiContext_ { nullptr }
std::atomic< bool > MR::SplashWindow::terminate_ { false }
std::string MR::StateBasePlugin::plugin_name
bool MR::StateBasePlugin::isEnabled_ {false}
bool MR::StateBasePlugin::dialogIsOpen_ {false}
bool MR::StateBasePlugin::dialogIsCollapsed_ { false }
StatePluginTabs MR::StateBasePlugin::tab_ {StatePluginTabs::Other}
bool MR::PluginCloseOnChangeMesh::meshChanged_ { false }
 plugin can return the value to false after mesh change if it changed the mesh by itself and does not want to close
bool MR::PluginCloseOnChangePointCloud::pointCloudChanged_ { false }
 plugin can return the value to false after points change if it changed the mesh by itself and does not want to close
WorkMode MR::SurfaceManipulationWidget::Settings::workMode = WorkMode::Add
float MR::SurfaceManipulationWidget::Settings::radius = 1.f
 radius of editing region
float MR::SurfaceManipulationWidget::Settings::relaxForce = 0.2f
 speed of relaxing, typical values (0 - 0.5]
float MR::SurfaceManipulationWidget::Settings::editForce = 1.f
 material thickness added or removed to the surface
float MR::SurfaceManipulationWidget::Settings::sharpness = 50.f
 effect of force on points far from center editing area. [0 - 100]
float MR::SurfaceManipulationWidget::Settings::relaxForceAfterEdit = 0.25f
 force of relaxing modified area after editing (add / remove) is complete. [0 - 0.5], 0 - not relax
EdgeWeights MR::SurfaceManipulationWidget::Settings::edgeWeights = EdgeWeights::Cotan
 edge weights for Laplacian and Patch
VertexMass MR::SurfaceManipulationWidget::Settings::vmass = VertexMass::NeiArea
 vertex weights for Laplacian and Patch
bool MR::SurfaceManipulationWidget::Settings::laplacianBasedAddRemove = false
 if true in Add/Remove modes, the modification will be done using Laplacian solver, where the closest vertices will be attracted toward mouse cursor to form ideal ridges or grooves
bool MR::SurfaceManipulationWidget::Settings::subdivideGrooves = false
 if true in Add/Remove modes, changed parts of mesh will be subdivided on mouse up
Settings MR::SurfaceManipulationWidget::settings_
std::shared_ptr< ObjectMeshMR::SurfaceManipulationWidget::obj_
VertBitSet MR::SurfaceManipulationWidget::unchangeableVerts_
float MR::SurfaceManipulationWidget::minRadius_ = 1.f
Vector2f MR::SurfaceManipulationWidget::mousePos_
 mouse position of last updateRegion_
std::vector< MeshTriPointMR::SurfaceManipulationWidget::pointsUnderMouse_
 mesh points under mouse in the current frame (could be many in case of fast mouse movement)
VertBitSet MR::SurfaceManipulationWidget::singleEditingRegion_
 current (under the cursor) region of tool application
VertBitSet MR::SurfaceManipulationWidget::visualizationRegion_
 vertices of triangles partially or fully highlighted with red
VertBitSet MR::SurfaceManipulationWidget::generalEditingRegion_
 united region of tool application since the last mouse down
VertScalars MR::SurfaceManipulationWidget::pointsShift_
VertScalars MR::SurfaceManipulationWidget::editingDistanceMap_
VertScalars MR::SurfaceManipulationWidget::visualizationDistanceMap_
VertScalars MR::SurfaceManipulationWidget::valueChanges_
VertScalars MR::SurfaceManipulationWidget::lastStableValueChanges_
std::shared_ptr< MeshMR::SurfaceManipulationWidget::originalMesh_
 original input mesh
VertBitSet MR::SurfaceManipulationWidget::unknownSign_
 cached data to avoid reallocating memory
std::shared_ptr< ObjectMeshMR::SurfaceManipulationWidget::lastStableObjMesh_
bool MR::SurfaceManipulationWidget::firstInit_ = true
bool MR::SurfaceManipulationWidget::badRegion_ = false
 need to save settings in re-initial
bool MR::SurfaceManipulationWidget::mousePressed_ = false
 in selected region less than 3 points
boost::signals2::scoped_connection MR::SurfaceManipulationWidget::meshChangedConnection_
bool MR::SurfaceManipulationWidget::ownMeshChangedSignal_ = false
bool MR::SurfaceManipulationWidget::connectionsInitialized_ = false
VertId MR::SurfaceManipulationWidget::touchVertId_
 Laplacian.
Vector3f MR::SurfaceManipulationWidget::touchVertIniPos_
 we fix this vertex in Laplacian and move it manually
Vector2i MR::SurfaceManipulationWidget::storedDown_
 initial position of fixed vertex
std::unique_ptr< LaplacianMR::SurfaceManipulationWidget::laplacian_
VertBitSet MR::SurfaceManipulationWidget::pickedVerts_
 these are all vertices, which will are attracted to be under mouse considering material width since last mouse down
Vector3f MR::SurfaceManipulationWidget::PickedVertData::target
float MR::SurfaceManipulationWidget::PickedVertData::minMouseDistSq = FLT_MAX
 attraction point
HashMap< VertId, PickedVertDataMR::SurfaceManipulationWidget::pickedVertsToData_
 same vertices as in pickedVerts_ mapped to PickedVertData
std::shared_ptr< VersatileChangeMeshPointsActionMR::SurfaceManipulationWidget::historyAction_
bool MR::SurfaceManipulationWidget::appendHistoryAction_ = false
 true if historyAction_ is prepared but not yet appended to HistoryStore, which is done on first mouse move
std::shared_ptr< PaletteMR::SurfaceManipulationWidget::palette_
bool MR::SurfaceManipulationWidget::enableDeviationTexture_ = false
DeviationCalculationMethod MR::SurfaceManipulationWidget::deviationCalculationMethod_ = DeviationCalculationMethod::ExactDistance
bool MR::SurfaceManipulationWidget::sameOriginalMeshTopology_ = true
bool MR::SurfaceManipulationWidget::ignoreOcclusion_ = false
 allow the user to edit parts of object that are hidden in the current view by other objects
bool MR::SurfaceManipulationWidget::editOnlyCodirectedSurface_ = true
PositionType MR::SurfacePointWidget::Parameters::positionType { PositionType::Faces }
 type of point positioning, look at PositionType comments for more info
Color MR::SurfacePointWidget::Parameters::baseColor { Color::gray() }
 basic color of control sphere
Color MR::SurfacePointWidget::Parameters::hoveredColor { Color::red() }
 color of control sphere when it is hovered by mouse
Color MR::SurfacePointWidget::Parameters::activeColor { { Color::red() } }
 color of control sphere when it is in move
PointSizeType MR::SurfacePointWidget::Parameters::radiusSizeType { PointSizeType::Pixel }
 how to set the size of the dots in mm or in pixels.
float MR::SurfacePointWidget::Parameters::radius { 0.0f }
int MR::SurfacePointWidget::Parameters::customModifiers = 0
bool MR::SurfacePointWidget::Parameters::pickInBackFaceObject = true
 pick_render_object parameters. Allow to use object in which pick exactly fell, instead of closer object in pick radius.
int MR::TouchesController::Info::id {-1}
Vector2f MR::TouchesController::Info::position
bool MR::TouchpadParameters::ignoreKineticMoves = false
 most touchpads implement kinetic (or inertial) scrolling, this option disables handling of these events
bool MR::TouchpadParameters::cancellable = false
 enable gesture's cancellability, i.e. revert its changes in case of external interruption
enum MR::TouchpadParameters::SwipeMode MR::TouchpadParameters::swipeMode = SwipeMode::SwipeRotatesCamera
std::string MR::UI::SaveChangesPopupSettings::shortCloseText = "Close"
 text that is shown if we have nothing to save
std::string MR::UI::SaveChangesPopupSettings::dontSaveText = "Don't Save"
 text that is shown if we have changes but don't want to save them
std::string MR::UI::SaveChangesPopupSettings::saveTooltip = "Save current scene"
std::string MR::UI::SaveChangesPopupSettings::dontSaveTooltip = "Donh't save current scene"
std::string MR::UI::SaveChangesPopupSettings::cancelTooltip = "Cansel"
std::string MR::UI::SaveChangesPopupSettings::header
 header that is used in dialog
std::function< void()> MR::UI::SaveChangesPopupSettings::onOk = {}
 if not empty this function is called on "save" and "not save" options( if succeed )
bool MR::UI::ButtonCustomizationParams::enabled = true
 If false, the button is grayed out and can't be clicked.
ImGuiButtonFlags MR::UI::ButtonCustomizationParams::flags = ImGuiButtonFlags_None
 imgui flags for this button
ImGuiImageMR::UI::ButtonCustomizationParams::customTexture = nullptr
bool MR::UI::ButtonCustomizationParams::forceImGuiBackground = false
 force use imgui background if !customTexture
bool MR::UI::ButtonCustomizationParams::forceImguiTextColor = false
 force use if ImGuiCol_Text for text
bool MR::UI::ButtonCustomizationParams::border = false
 show border or not
bool MR::UI::ButtonCustomizationParams::underlineFirstLetter = false
 draw line under first letter of label
bool MR::UI::ButtonCustomizationParams::enableTestEngine = true
 Allow interacting with this button from UI::TestEngine.
std::string MR::UI::ButtonCustomizationParams::testEngineName
 if not empty, force use this string as name in TestEngine
ButtonCustomizationParams MR::UI::ButtonIconCustomizationParams::baseParams
 basic customization parameters
bool MR::UI::ButtonIconCustomizationParams::textUnderImage = true
 if false - text is to the right
ImVec2 MR::UI::PlotAxis::startAxisPoint
 the point from which the axes will be drawn
float MR::UI::PlotAxis::size = 100.f
 size plot by axis
float MR::UI::PlotAxis::optimalLenth = 10.0f
 optimal length between dashes
float MR::UI::PlotAxis::minValue = 0.0f
 the minimum value of the axis
float MR::UI::PlotAxis::maxValue = 1.0f
 the maximal value of the axis
size_t MR::UI::PlotAxis::textDashIndicesStep = 1
 sign every nth dash
float MR::UI::PlotAxis::lenDash = 8.0f
 length dash without text
float MR::UI::PlotAxis::lenDashWithText = 12.0f
 length dash with text
float MR::UI::PlotAxis::textPadding = 3.0f
 text offset from dash
VarUnitToStringParams MR::UI::PlotAxis::labelFormatParams
 the format of the text for labels
bool MR::UI::CheckboxOrModifierState::baseValue = false
 The persistent value of this setting, as set by the user by clicking the checkbox.
bool MR::UI::CheckboxOrModifierState::modifierHeld = false
 Whether the setting is currently inverted because the modifier is held.
int MR::UI::RadioButtonOrModifierState::value {}
 The permanent value of this setting, as set by the user by clicking the radio button.
int MR::UI::RadioButtonOrModifierState::effectiveValue {}
 The value that is displayed, and to be used - can differ from value if modifiers are pressed.
std::optional< ImVec2 > MR::UI::CachedTextSize::cachedSize
constexpr int MR::UI::defaultSliderFlags = ImGuiSliderFlags_AlwaysClamp
 Default flags for slider() and drag() below.
const ImGuiImageMR::UI::SeparatorParams::icon { nullptr }
 optional icon in the left part of separator
Vector2f MR::UI::SeparatorParams::iconSize
 size of icon
std::string MR::UI::SeparatorParams::label
 label at the left part of separator (drawn after icon if present)
std::string MR::UI::SeparatorParams::suffix
 framed text after label (might be used for some indications)
std::optional< ColorMR::UI::SeparatorParams::suffixFrameColor
 color of background frame behind suffix (if not present default ImGuiCol_FrameBg is used)
bool MR::UI::SeparatorParams::forceImGuiSpacing = false
float MR::UI::SeparatorParams::extraScale = 1
 The spacing is multiplied by this.
std::string MR::UI::CustomConfigModalSettings::configName
 Name of desired config type.
std::string MR::UI::CustomConfigModalSettings::imGuiIdKey
 Optional string added at the end of popup name to have unique names.
std::filesystem::path MR::UI::CustomConfigModalSettings::configDirectory
 Directory where to save config.
std::string * MR::UI::CustomConfigModalSettings::inputName { nullptr }
 String used by input.
bool MR::UI::CustomConfigModalSettings::inputNameDialog = true
 If false, inputName is used (if inputName is nullptr this option is not used)
bool MR::UI::CustomConfigModalSettings::triggerSave = false
 if true - opens modal in this frame, or saves if (!inputNameDialog && inputName)
bool MR::UI::CustomConfigModalSettings::warnExisting = true
 If true - warns user before overriding existing file, otherwise override without warning.
std::function< bool(const std::string &name)> MR::UI::CustomConfigModalSettings::onSave
 Callback that is called when save is requested->returns true if file saved successfully (to close modal)
std::string_view MR::UnitToStringParams< E >::decorationFormatString = "{}"
std::optional< E > MR::UnitToStringParams< E >::sourceUnit = getDefaultUnitParams<E>().sourceUnit
 — Units:
std::optional< E > MR::UnitToStringParams< E >::targetUnit = getDefaultUnitParams<E>().targetUnit
 The measurement unit of the resulting string. If null, no conversion is performed, and the unit name is taken from sourceUnit if any.
bool MR::UnitToStringParams< E >::unitSuffix = getDefaultUnitParams<E>().unitSuffix
 Whether to show the unit suffix.
NumberStyle MR::UnitToStringParams< E >::style = getDefaultUnitParams<E>().style
 — Precision:
int MR::UnitToStringParams< E >::precision = getDefaultUnitParams<E>().precision
 How many digits of precision.
bool MR::UnitToStringParams< E >::plusSign = getDefaultUnitParams<E>().plusSign
 — Other:
ZeroMode MR::UnitToStringParams< E >::zeroMode = getDefaultUnitParams<E>().zeroMode
 How to deal with zeroes.
bool MR::UnitToStringParams< E >::unicodeMinusSign = getDefaultUnitParams<E>().unicodeMinusSign
 Use a pretty Unicode minus sign instead of the ASCII -.
char MR::UnitToStringParams< E >::thousandsSeparator = getDefaultUnitParams<E>().thousandsSeparator
 If non-zero, this character is inserted between every three digits to the left of the decimal point.
char MR::UnitToStringParams< E >::thousandsSeparatorFrac = getDefaultUnitParams<E>().thousandsSeparatorFrac
 If non-zero, this character is inserted between every three digits to the right of the decimal point.
bool MR::UnitToStringParams< E >::leadingZero = getDefaultUnitParams<E>().leadingZero
 If false, remove zero before the fractional point (.5 instead of 0.5).
bool MR::UnitToStringParams< E >::stripTrailingZeroes = getDefaultUnitParams<E>().stripTrailingZeroes
 Remove trailing zeroes after the fractional point. If the point becomes the last symbol, remove the point too.
std::conditional_t< std::is_same_v< E, AngleUnit >, DegreesMode, detail::Units::EmptyMR::UnitToStringParams< E >::degreesMode = getDefaultUnitParams<E>().degreesMode
 When printing degrees, this lets you display arcminutes and possibly arcseconds. Ignored for everything else.
static constexpr int MR::VectorTraits< ImVec2 >::size = 2
static constexpr int MR::VectorTraits< ImVec4 >::size = 4
bool MR::LaunchParams::fullscreen { false }
int MR::LaunchParams::width { 0 }
 if true starts fullscreen
int MR::LaunchParams::height { 0 }
enum MR::LaunchParams::WindowMode MR::LaunchParams::HideInit
bool MR::LaunchParams::enableTransparentBackground { false }
bool MR::LaunchParams::preferOpenGL3 { false }
bool MR::LaunchParams::render3dSceneInTexture { true }
bool MR::LaunchParams::developerFeatures { false }
 If not set renders scene each frame.
bool MR::LaunchParams::multiViewport { true }
 If set shows some developer features useful for debugging.
std::string MR::LaunchParams::name { "MRViewer" }
 If set allows to move the imgui (tool) windows outside the main () window. (unavailable for Apple, Wayland and Emscripten)
bool MR::LaunchParams::resetConfig { false }
 Window name.
bool MR::LaunchParams::startEventLoop { true }
 if true - resets config file on start of the application
bool MR::LaunchParams::close { true }
 If false - does not start event loop.
bool MR::LaunchParams::console { false }
 If !startEventLoop close immediately after start, otherwise close on window close, make sure you call launchShut manually if this flag is false.
int MR::LaunchParams::argc { 0 }
 If true - shows developers console.
char ** MR::LaunchParams::argv { nullptr }
 Pass argc.
bool MR::LaunchParams::showMRVersionInTitle { false }
 Pass argv.
bool MR::LaunchParams::isAnimating { false }
 if true - print version info in window title
int MR::LaunchParams::animationMaxFps { 30 }
 if true - calls render without system events
bool MR::LaunchParams::unloadPluginsAtEnd { false }
 max fps if animating
std::shared_ptr< SplashWindowMR::LaunchParams::splashWindow
 unload all extended libraries right before program exit
bool MR::Viewer::swapOnLastPostEventsRedraw { true }
 if true only last frame of force redraw after events will be swapped, otherwise each will be swapped
int MR::Viewer::forceRedrawMinimumIncrementAfterEvents { 4 }
 minimum auto increment force redraw frames after events
GLFWwindow * MR::Viewer::window
 Member variables ///.
std::function< void(Viewer *viewer)> MR::Viewer::resetSettingsFunction
std::vector< ViewportMR::Viewer::viewport_list
 Stores all the viewing options.
size_t MR::Viewer::selected_viewport_index
std::vector< ViewerPlugin * > MR::Viewer::plugins
 List of registered plugins.
float MR::Viewer::pixelRatio { 1.0f }
Vector2i MR::Viewer::framebufferSize
Vector2i MR::Viewer::windowSavePos
Vector2i MR::Viewer::windowSaveSize
 pos to save
Vector2i MR::Viewer::windowOldPos
 size to save
bool MR::Viewer::windowMaximized { false }
bool MR::Viewer::isAnimating { false }
 if true - calls render without system events
int MR::Viewer::animationMaxFps { 30 }
 max fps if animating
float MR::Viewer::scrollForce { }
uint16_t MR::Viewer::glPickRadius { }
 opengl-based pick window radius in pixels
bool MR::Viewer::experimentalFeatures { }
 Experimental/developer features enabled.
std::vector< std::string > MR::Viewer::commandArgs
 command arguments, each parsed arg should be erased from here not to affect other parsers
std::shared_ptr< ObjectMeshMR::Viewer::basisAxes
std::unique_ptr< CornerControllerObjectMR::Viewer::basisViewController
std::unique_ptr< ViewportGlobalBasisMR::Viewer::globalBasis
std::shared_ptr< ObjectMeshMR::Viewer::rotationSphere
std::shared_ptr< ObjectMeshMR::Viewer::clippingPlaneObject
 Stores clipping plane mesh.
std::shared_ptr< ViewerTitleMR::Viewer::windowTitle
 class that updates viewer title
std::array< size_t, size_t(EventType::Count)> MR::Viewer::EventsCounter::counter {}
std::array< size_t, size_t(GLPrimitivesType::Count)> MR::Viewer::GLPrimitivesCounter::counter {}
const std::string MR::cDefaultMultiViewportKey = "defaultMultiViewport"
 key for getting/satting default state for multi viewport from the config
std::string MR::ViewerEventQueue::NamedEvent::name
ViewerEventCallback MR::ViewerEventQueue::NamedEvent::cb
boost::signals2::scoped_connection MR::ConnectionHolder::connection_
class MRVIEWER_CLASS MR::WebRequest
ViewerMR::ViewerPlugin::viewer = &getViewerInstance()
 Pointer to the main Viewer class.
MouseUpDownSignal MR::ViewerSignals::mouseDownSignal
MouseUpDownSignal MR::ViewerSignals::mouseUpSignal
 signal is called on mouse down
MouseMoveSignal MR::ViewerSignals::mouseMoveSignal
 signal is called on mouse up
MouseScrollSignal MR::ViewerSignals::mouseScrollSignal
 signal is called on mouse move, note that input x and y are in screen space
MouseUpDownSignal MR::ViewerSignals::mouseClickSignal
MouseUpDownSignal MR::ViewerSignals::dragStartSignal
 signal is called when mouse button is pressed and immediately released
MouseUpDownSignal MR::ViewerSignals::dragEndSignal
 signal is called when mouse button is pressed (deferred if click behavior is on)
MouseMoveSignal MR::ViewerSignals::dragSignal
 signal is called when mouse button used to start drag is released
CursorEntranceSignal MR::ViewerSignals::cursorEntranceSignal
CharPressedSignal MR::ViewerSignals::charPressedSignal
KeySignal MR::ViewerSignals::keyUpSignal
 signal is called when unicode char on/is down/pressed for some time
KeySignal MR::ViewerSignals::keyDownSignal
 signal is called on key up
KeySignal MR::ViewerSignals::keyRepeatSignal
 signal is called on key down
SpaceMouseMoveSignal MR::ViewerSignals::spaceMouseMoveSignal
SpaceMouseKeySignal MR::ViewerSignals::spaceMouseDownSignal
 signal is called on spacemouse 3d controller (joystick) move
SpaceMouseKeySignal MR::ViewerSignals::spaceMouseUpSignal
 signal is called on spacemouse key down
SpaceMouseKeySignal MR::ViewerSignals::spaceMouseRepeatSignal
 signal is called on spacemouse key up
RenderSignal MR::ViewerSignals::preSetupViewSignal
RenderSignal MR::ViewerSignals::preDrawSignal
 signal is called before viewports cleanup and camera setup, so one can customize camera XFs for this frame
RenderSignal MR::ViewerSignals::preDrawPostViewportSignal
 signal is called before scene draw (but after scene setup)
RenderSignal MR::ViewerSignals::drawSignal
 signal is called before scene draw but after viewport.preDraw()
RenderSignal MR::ViewerSignals::postDrawPreViewportSignal
 signal is called on scene draw (after objects tree but before viewport.postDraw())
RenderSignal MR::ViewerSignals::postDrawSignal
 signal is called after scene draw but after before viewport.postDraw()
ObjectsLoadedSignal MR::ViewerSignals::objectsLoadedSignal
CursorEntranceSignal MR::ViewerSignals::dragEntranceSignal
 signal is called when objects are loaded by Viewer::loadFiles function
MouseMoveSignal MR::ViewerSignals::dragOverSignal
 signal is called on drag enter/leave the window
DragDropSignal MR::ViewerSignals::dragDropSignal
 signal is called on drag coordinate changed
PostResizeSignal MR::ViewerSignals::postResizeSignal
 signal is called on drag and drop file
PostRescaleSignal MR::ViewerSignals::postRescaleSignal
 signal is called after window resize
InterruptCloseSignal MR::ViewerSignals::interruptCloseSignal
 signal is called after window rescale
TouchSignal MR::ViewerSignals::touchStartSignal
TouchSignal MR::ViewerSignals::touchMoveSignal
 signal is called when any touch starts
TouchSignal MR::ViewerSignals::touchEndSignal
 signal is called when touch moves
TouchpadGestureBeginSignal MR::ViewerSignals::touchpadRotateGestureBeginSignal
TouchpadRotateGestureUpdateSignal MR::ViewerSignals::touchpadRotateGestureUpdateSignal
 signal is called on touchpad rotate gesture beginning
TouchpadGestureEndSignal MR::ViewerSignals::touchpadRotateGestureEndSignal
 signal is called on touchpad rotate gesture update
TouchpadGestureBeginSignal MR::ViewerSignals::touchpadSwipeGestureBeginSignal
 signal is called on touchpad rotate gesture end
TouchpadSwipeGestureUpdateSignal MR::ViewerSignals::touchpadSwipeGestureUpdateSignal
 signal is called on touchpad swipe gesture beginning
TouchpadGestureEndSignal MR::ViewerSignals::touchpadSwipeGestureEndSignal
 signal is called on touchpad swipe gesture update
TouchpadGestureBeginSignal MR::ViewerSignals::touchpadZoomGestureBeginSignal
 signal is called on touchpad swipe gesture end
TouchpadZoomGestureUpdateSignal MR::ViewerSignals::touchpadZoomGestureUpdateSignal
 signal is called on touchpad zoom gesture beginning
TouchpadGestureEndSignal MR::ViewerSignals::touchpadZoomGestureEndSignal
 signal is called on touchpad zoom gesture update
PostFocusSignal MR::ViewerSignals::postFocusSignal
PreShutdownSignal MR::ViewerSignals::preShutdownSignal
std::string MR::ViewerTitle::appName_
std::string MR::ViewerTitle::version_
std::string MR::ViewerTitle::sceneName_
float MR::Viewport::LinePointImmediateRenderParams::width {1.0f}
bool MR::Viewport::LinePointImmediateRenderParams::depthTest { true }
Vector4f MR::Viewport::TriCornerColors::a
Vector4f MR::Viewport::TriCornerColors::b
Vector4f MR::Viewport::TriCornerColors::c
std::optional< Vector2f > MR::Viewport::PickRenderObjectParams::point
 If specified, this is the target screen point. Otherwise use the mouse pos in viewport coordinates.
PickRenderObjectPredicate MR::Viewport::PickRenderObjectParams::predicate
 Predicate to additionally filter objects that should be treated as pickable.
int MR::Viewport::PickRenderObjectParams::pickRadius = -1
bool MR::Viewport::PickRenderObjectParams::exactPickFirst = true
const BaseRenderParamsMR::Viewport::PickRenderObjectParams::baseRenderParams { nullptr }
 if not nullptr it can override render params for picker
ViewportId MR::Viewport::id { 1}
 Unique identifier.
Color MR::Viewport::Parameters::backgroundColor = Color( Vector3f{0.3f, 0.3f, 0.5f} )
Vector3f MR::Viewport::Parameters::lightPosition {0.0f, 0.3f, 0.0f}
Quaternionf MR::Viewport::Parameters::cameraTrackballAngle
 x y z - position, w - factor
Vector3f MR::Viewport::Parameters::cameraTranslation
float MR::Viewport::Parameters::cameraZoom {1.0f}
float MR::Viewport::Parameters::cameraViewAngle {45.0f}
float MR::Viewport::Parameters::cameraDnear {1.0f}
float MR::Viewport::Parameters::cameraDfar {100.0f}
bool MR::Viewport::Parameters::depthTest {true}
bool MR::Viewport::Parameters::orthographic {true}
enum MR::Viewport::Parameters::GlobalBasisScaleMode MR::Viewport::Parameters::Auto
float MR::Viewport::Parameters::objectScale {1.0f}
 Caches the two-norm between the min/max point of the bounding box.
Color MR::Viewport::Parameters::borderColor
std::string MR::Viewport::Parameters::label
Plane3f MR::Viewport::Parameters::clippingPlane {Vector3f::plusX(), 0.0f}
enum MR::Viewport::Parameters::RotationCenterMode MR::Viewport::Parameters::Dynamic
std::optional< Vector3f > MR::Viewport::Parameters::staticRotationPivot
bool MR::Viewport::Parameters::compensateRotation { true }
bool MR::Viewport::Parameters::selectable {true}
 this flag allows viewport to be selected by user
ViewportId MR::CornerControllerObject::PickedIds::vId
RegionId MR::CornerControllerObject::PickedIds::rId
Vector4f MR::SegmEndColors::a
Vector4f MR::SegmEndColors::b
std::vector< Vector3f > MR::ViewportPointsWithColors::points
std::vector< Vector4f > MR::ViewportPointsWithColors::colors
std::span< VisualObject *const > MR::ViewportGL::PickParameters::renderVector
BaseRenderParams MR::ViewportGL::PickParameters::baseRenderParams
 objects to pick
Plane3f MR::ViewportGL::PickParameters::clippingPlane
 parameters for rendering pick object
unsigned MR::ViewportGL::BasePickResult::geomId { unsigned( -1 ) }
unsigned MR::ViewportGL::BasePickResult::primId { unsigned( -1 ) }
 id of picked object in PickParameters::renderVector (-1 means invalid)
float MR::ViewportGL::PickResult::zBuffer {1.0f}
BasePickResults MR::ViewportGL::ScaledPickRes::pickRes
Box2i MR::ViewportGL::ScaledPickRes::updatedBox
unsigned MR::ViewportGL::PickColor::color [4]
Color MR::VisualObjectTag::selectedColor
Color MR::VisualObjectTag::unselectedColor
std::string MR::WebRequest::FormData::path
std::string MR::WebRequest::FormData::contentType
std::string MR::WebRequest::FormData::name
std::string MR::WebRequest::FormData::fileName
float MR::MeshVoxelsConverter::voxelSize = 0.001f
 both in and from
float MR::MeshVoxelsConverter::surfaceOffset = 3
 to voxels:
ProgressCallback MR::MeshVoxelsConverter::callBack
 number voxels around surface to calculate distance in (should be positive)
float MR::MeshVoxelsConverter::offsetVoxels = 0
 from voxels:
float MR::MeshVoxelsConverter::adaptivity = 0
 the value is in voxels (not in meters!), 0 for no-offset
Vector3f MR::OriginAndDimensions::origin
Vector3i MR::OriginAndDimensions::dimensions
DicomStatusEnum MR::VoxelsLoad::DicomStatus::status = DicomStatusEnum::Invalid
std::string MR::VoxelsLoad::DicomStatus::reason
MR::VoxelsLoad::DicomVolumeT< T >::vol
std::string MR::VoxelsLoad::DicomVolumeT< T >::name
AffineXf3f MR::VoxelsLoad::DicomVolumeT< T >::xf
Vector3f MR::DistanceVolumeParams::origin
 origin point of voxels box
ProgressCallback MR::DistanceVolumeParams::cb
 progress callback
Vector3f MR::DistanceVolumeParams::voxelSize { 1.0f,1.0f,1.0f }
 size of voxel on each axis
Vector3i MR::DistanceVolumeParams::dimensions { 100,100,100 }
 num voxels along each axis
Vector3f MR::FixUndercuts::FindParams::upDirection
 Primitives that are not visible from up direction are considered as undercuts (fix undercuts is performed downwards (in -direction))
float MR::FixUndercuts::FindParams::wallAngle = 0.0f
FindParams MR::FixUndercuts::FixParams::findParameters
 parameters of what is considered as undercut
float MR::FixUndercuts::FixParams::voxelSize = 0.0f
 voxel size for internal computations: lower size - better precision but more system resources required
float MR::FixUndercuts::FixParams::bottomExtension = 0.0f
 minimum extension of bottom part of the mesh
const FaceBitSet * MR::FixUndercuts::FixParams::region = nullptr
 if set - only this region will be fixed (but still all mesh will be rebuild)
bool MR::FixUndercuts::FixParams::smooth = false
 if true applies one iterations of gaussian filtering for voxels, useful if thin walls expected
ProgressCallback MR::FixUndercuts::FixParams::cb
Vector3f MR::FixUndercuts::ImproveDirectionParameters::hintDirection
 Hint direction which will be improved.
float MR::FixUndercuts::ImproveDirectionParameters::baseAngleStep {5.0f*PI_F / 180.0f}
 Radial step given in radians look improveDirection comment.
float MR::FixUndercuts::ImproveDirectionParameters::maxBaseAngle {30.0f*PI_F / 180.0f}
 Maximum radial line given in radians look improveDirection comment.
float MR::FixUndercuts::ImproveDirectionParameters::polarAngleStep {20.0f*PI_F / 180.0f}
 Polar angle step.
Vector2i MR::FixUndercuts::DistMapImproveDirectionParameters::distanceMapResolution {100,100}
 Resolution of distance map, lower it is, faster score works.
Vector3f MR::MarchingCubesParams::origin
 origin point of voxels box in 3D space with output mesh
ProgressCallback MR::MarchingCubesParams::cb
 progress callback
float MR::MarchingCubesParams::iso { 0.0f }
 target iso-value of the surface to be extracted from volume
bool MR::MarchingCubesParams::lessInside { false }
 should be false for dense volumes, and true for distance volume
Vector< VoxelId, FaceId > * MR::MarchingCubesParams::outVoxelPerFaceMap { nullptr }
 optional output map FaceId->VoxelId
VoxelPointPositioner MR::MarchingCubesParams::positioner = {}
int MR::MarchingCubesParams::maxVertices = INT_MAX
 if the mesh exceeds this number of vertices, an error returns
enum MR::MarchingCubesParams::CachingMode MR::MarchingCubesParams::cachingMode = CachingMode::Automatic
std::function< void()> MR::MarchingCubesParams::freeVolume
 this optional function is called when volume is no longer needed to deallocate it and reduce peak memory consumption
DistanceVolumeParams MR::MeshToDistanceVolumeParams::vol
SignedDistanceToMeshOptions MR::MeshToDistanceVolumeParams::dist
std::shared_ptr< IFastWindingNumberMR::MeshToDistanceVolumeParams::fwn
float MR::CloseToMeshVolumeParams::closeDist = 0
 a resulting voxel will get 1 if that voxel's center is not further than unsigned (closeDist) from the surface, and 0 otherwise
DistanceVolumeParams MR::CloseToMeshVolumeParams::vol
 dimensions, location, and scaling in world space of the expected volume
const AffineXf3f * MR::CloseToMeshVolumeParams::meshToWorld = nullptr
 optional transformation from mesh space to world space
DistanceVolumeParams MR::MeshToDirectionVolumeParams::vol
DistanceToMeshOptions MR::MeshToDirectionVolumeParams::dist
std::shared_ptr< IPointsToMeshProjectorMR::MeshToDirectionVolumeParams::projector
 note that signMode is ignored in this algorithm
FilterType MR::ObjectVoxels::VolumeRenderingParams::volumeFilterType { FilterType::Linear }
 volume texture smoothing
enum MR::ObjectVoxels::VolumeRenderingParams::ShadingType MR::ObjectVoxels::VolumeRenderingParams::None
enum MR::ObjectVoxels::VolumeRenderingParams::LutType MR::ObjectVoxels::VolumeRenderingParams::Rainbow
Color MR::ObjectVoxels::VolumeRenderingParams::oneColor { Color::white() }
 color that is used for OneColor mode
float MR::ObjectVoxels::VolumeRenderingParams::min { 0.0f }
 minimum colored value (voxels with lower values are transparent)
float MR::ObjectVoxels::VolumeRenderingParams::max { 0.0f }
 maximum colored value (voxels with higher values are transparent)
float MR::ObjectVoxels::VolumeRenderingParams::samplingStep { -1.0f }
enum MR::ObjectVoxels::VolumeRenderingParams::AlphaType MR::ObjectVoxels::VolumeRenderingParams::Constant
uint8_t MR::ObjectVoxels::VolumeRenderingParams::alphaLimit { 10 }
IsoSurfaceChangedSignal MR::ObjectVoxels::isoSurfaceChangedSignal
VoxelsChangedSignal MR::ObjectVoxels::voxelsChangedSignal
VoxelBitSet MR::ObjectVoxels::selectedVoxels_
VoxelBitSet MR::ObjectVoxels::volumeRenderActiveVoxels_
bool MR::ObjectVoxels::volumeRendering_ { false }
float MR::BaseShellParameters::voxelSize = 0
ProgressCallback MR::BaseShellParameters::callBack
 Progress callback.
SignDetectionMode MR::OffsetParameters::signDetectionMode = SignDetectionMode::OpenVDB
 determines the method to compute distance sign
bool MR::OffsetParameters::closeHolesInHoleWindingNumber = true
 whether to construct closed mesh in signMode = SignDetectionModeShort::HoleWindingNumber
float MR::OffsetParameters::windingNumberThreshold = 0.5f
float MR::OffsetParameters::windingNumberBeta = 2
std::shared_ptr< IFastWindingNumberMR::OffsetParameters::fwn
bool MR::OffsetParameters::memoryEfficient = true
UndirectedEdgeBitSet * MR::SharpOffsetParameters::outSharpEdges = nullptr
 if non-null then created sharp edges will be saved here
float MR::SharpOffsetParameters::minNewVertDev = 1.0f / 25
 minimal surface deviation to introduce new vertex in a voxel, measured in voxelSize
float MR::SharpOffsetParameters::maxNewRank2VertDev = 5
 maximal surface deviation to introduce new rank 2 vertex (on intersection of 2 planes), measured in voxelSize
float MR::SharpOffsetParameters::maxNewRank3VertDev = 2
 maximal surface deviation to introduce new rank 3 vertex (on intersection of 3 planes), measured in voxelSize
float MR::SharpOffsetParameters::maxOldVertPosCorrection = 0.5f
Mode MR::GeneralOffsetParameters::mode = Mode::Standard
Proc MR::RangeProcessorSingle< TreeT, Proc >::mProc
size_t MR::RangeSize::leaf = 0
size_t MR::RangeSize::tile = 0
RangeSize MR::RangeCounter< TreeT >::size
float MR::PointsToDistanceVolumeParams::sigma = 1
float MR::PointsToDistanceVolumeParams::minWeight = 1
 minimum sum of influence weights from surrounding points for a voxel to get a value, meaning that there shall be at least this number of points in close proximity
float MR::PointsToDistanceVolumeParams::invSigmaModifier = 0.5f
bool MR::PointsToDistanceVolumeParams::sqrtAngleWeight { false }
const VertNormals * MR::PointsToDistanceVolumeParams::ptNormals = nullptr
 optional input: if this pointer is set then function will use these normals instead of ones present in cloud
MR_BIND_PREFER_UNLOCK_GIL_WHEN_USED_AS_PARAM float MR::PointsToMeshParameters::sigma = 1
float MR::PointsToMeshParameters::minWeight = 1
 minimum sum of influence weights from surrounding points for a triangle to appear, meaning that there shall be at least this number of points in close proximity
float MR::PointsToMeshParameters::invSigmaModifier = 0.5f
bool MR::PointsToMeshParameters::sqrtAngleWeight { false }
float MR::PointsToMeshParameters::voxelSize = 0
const VertColors * MR::PointsToMeshParameters::ptColors = nullptr
 optional input: colors of input points
VertColors * MR::PointsToMeshParameters::vColors = nullptr
 optional output: averaged colors of mesh vertices
ProgressCallback MR::PointsToMeshParameters::progress
 Progress callback.
std::function< Expected< void >(const PointCloud &cloud, const PointsToDistanceVolumeParams &params, std::function< Expected< void >(const SimpleVolumeMinMax &volume, int zOffset)> addPart, int layerOverlap)> MR::PointsToMeshParameters::createVolumeCallbackByParts
std::function< Expected< SimpleVolumeMinMax >(const PointCloud &cloud, const PointsToDistanceVolumeParams &params)> MR::PointsToMeshParameters::createVolumeCallback
 Callback for volume creation. If both volume creation functions are null - volume will be created with memory efficient pointsToDistanceFunctionVolume function.
std::function< bool(const PointCloud &cloud, const PointsToDistanceVolumeParams &params)> MR::PointsToMeshParameters::canCreateVolume
 Callback for checking whether it's possible to use the volume creation function.
Vector3f MR::PolylineToDistanceVolumeParams::voxelSize = Vector3f::diagonal( 1.f )
float MR::PolylineToDistanceVolumeParams::offsetCount = 3
 offsetCount - the number of voxels around polyline to calculate distance in (should be positive)
AffineXf3f MR::PolylineToDistanceVolumeParams::worldXf
AffineXf3f * MR::PolylineToDistanceVolumeParams::outXf { nullptr }
 line initial transform
ProgressCallback MR::PolylineToDistanceVolumeParams::cb
 optional output: xf to original mesh (respecting worldXf)
DistanceVolumeParams MR::PolylineToVolumeParams::vol
DistanceToMeshOptions MR::PolylineToVolumeParams::dist
bool MR::RebuildMeshSettings::preSubdivide = true
float MR::RebuildMeshSettings::voxelSize = 0
SignDetectionModeShort MR::RebuildMeshSettings::signMode = SignDetectionModeShort::Auto
bool MR::RebuildMeshSettings::closeHolesInHoleWindingNumber = true
 whether to construct closed mesh in signMode = SignDetectionModeShort::HoleWindingNumber
OffsetMode MR::RebuildMeshSettings::offsetMode = OffsetMode::Standard
UndirectedEdgeBitSet * MR::RebuildMeshSettings::outSharpEdges = nullptr
 if non-null then created sharp edges (only if offsetMode = OffsetMode::Sharpening) will be saved here
float MR::RebuildMeshSettings::windingNumberThreshold = 0.5f
float MR::RebuildMeshSettings::windingNumberBeta = 2
std::shared_ptr< IFastWindingNumberMR::RebuildMeshSettings::fwn
bool MR::RebuildMeshSettings::decimate = true
 whether to decimate resulting mesh
float MR::RebuildMeshSettings::tinyEdgeLength = -1
ProgressCallback MR::RebuildMeshSettings::progress
 To report algorithm's progress and cancel it on user demand.
std::function< void(SignDetectionMode)> MR::RebuildMeshSettings::onSignDetectionModeSelected
int MR::SliceInfoBase::instanceNum = 0
 instance number
double MR::SliceInfoBase::z = 0
 layer height
int MR::SliceInfoBase::fileNum = 0
 file index
Vector3d MR::SliceInfo::imagePos
 image position
const Polyline3 & MR::ComputeSweptVolumeParameters::path
 toolpath
MeshPart MR::ComputeSweptVolumeParameters::toolMesh
 tool mesh
const EndMillToolMR::ComputeSweptVolumeParameters::toolSpec = nullptr
float MR::ComputeSweptVolumeParameters::voxelSize { 0.0f }
size_t MR::ComputeSweptVolumeParameters::memoryLimit = 0
 (distance volume) max memory amount used for the distance volume, zero for no limits
ProgressCallback MR::ComputeSweptVolumeParameters::cb
 progress callback
DirectionVolume MR::TeethMaskToDirectionVolumeConvertor::ProcessResult::volume
AffineXf3f MR::TeethMaskToDirectionVolumeConvertor::ProcessResult::xf
float MR::Nesting::TetrisDensifyOptions::voxelSize { 0.0f }
 size of block for tetris box
std::vector< OutEdgeMR::Nesting::TetrisDensifyOptions::densificationSequence = { OutEdge::MinusZ,OutEdge::MinusY,OutEdge::MinusX }
 tetris box will be densify in these directions one by one
ProgressCallback MR::Nesting::TetrisDensifyOptions::cb
Vector< ObjId, VoxelId > * MR::Nesting::TetrisDensifyOptions::nestVoxelsCache { nullptr }
 [in/out] pre-allocated voxels vector (to speedup allocation)
Vector3i * MR::Nesting::TetrisDensifyOptions::nestDimensionsCache { nullptr }
 [in/out] dimensions of the nest (complimentary to voxels data)
VoxelBitSet * MR::Nesting::TetrisDensifyOptions::occupiedVoxelsCache { nullptr }
 [in/out] voxels that blocks movement of floating (input) meshes (to provide input and output occupancy status)
NestingBaseParams MR::Nesting::TetrisDensifyParams::baseParams
TetrisDensifyOptions MR::Nesting::TetrisDensifyParams::options
float MR::ToolPathParams::millRadius = {}
 radius of the milling tool
float MR::ToolPathParams::voxelSize = {}
 size of voxel needed to offset mesh
float MR::ToolPathParams::sectionStep = {}
float MR::ToolPathParams::critTransitionLength = {}
float MR::ToolPathParams::plungeLength = {}
 when the mill is moving down, it will be slowed down in this distance from mesh
float MR::ToolPathParams::retractLength = {}
 when the mill is moving up, it will be slowed down in this distance from mesh
float MR::ToolPathParams::plungeFeed = {}
 speed of slow movement down
float MR::ToolPathParams::retractFeed = {}
 speed of slow movement up
float MR::ToolPathParams::baseFeed = {}
 speed of regular milling
float MR::ToolPathParams::safeZ = {}
 z-coordinate of plane where tool can move in any direction without touching the object
BypassDirection MR::ToolPathParams::bypassDir = BypassDirection::Clockwise
 which direction isolines or sections should be passed in
const AffineXf3f * MR::ToolPathParams::xf = nullptr
 mesh can be transformed using xf parameter
bool MR::ToolPathParams::flatTool = false
 if true then a tool path for a flat milling tool will be generated
ProgressCallback MR::ToolPathParams::cb = {}
 callback for reporting on progress
float MR::ToolPathParams::toolpathExpansion = 0.f
Contours3fMR::ToolPathParams::isolines = nullptr
 optional output, stores isolines without transits
Contours3fMR::ToolPathParams::startContours = nullptr
 optional output, polyline containing start vertices for isolines
std::vector< Vector3f > * MR::ToolPathParams::startVertices = nullptr
 start vertices on the offset mesh used for calcutating isolines
MeshPart * MR::ToolPathParams::offsetMesh = nullptr
bool MR::ConstantCuspParams::fromCenterToBoundary = true
 if true isolines will be processed from center point to the boundary (usually it means from up to down)
float MR::LineInterpolationParams::eps = {}
 maximal deviation from given line
float MR::LineInterpolationParams::maxLength = {}
 maximal length of the line
ProgressCallback MR::LineInterpolationParams::cb = {}
 callback for reporting on progress
float MR::ArcInterpolationParams::eps = {}
 maximal deviation of arc from given path
float MR::ArcInterpolationParams::maxRadius = {}
 maximal radius of the arc
ProgressCallback MR::ArcInterpolationParams::cb = {}
 callback for reporting on progress
MoveType MR::GCommand::type = MoveType::Linear
 type of command GX (G0, G1, etc). By default - G1
ArcPlane MR::GCommand::arcPlane = ArcPlane::None
 Place for comment.
float MR::GCommand::feed = std::numeric_limits<float>::quiet_NaN()
 feedrate for move
float MR::GCommand::x = std::numeric_limits<float>::quiet_NaN()
 coordinates of destination point
float MR::GCommand::y = std::numeric_limits<float>::quiet_NaN()
float MR::GCommand::z = std::numeric_limits<float>::quiet_NaN()
Vector3f MR::GCommand::arcCenter = Vector3f::diagonal( std::numeric_limits<float>::quiet_NaN() )
 if moveType is ArcCW or ArcCCW center of the arc shoult be specified
Mesh MR::ToolPathResult::modifiedMesh
 mesh after fixing undercuts and offset
FaceBitSet MR::ToolPathResult::modifiedRegion
 selected region projected from the original mesh to the offset
std::vector< GCommandMR::ToolPathResult::commands
 constains type of movement and its feed
enum MR::MeshToVolumeParams::Type MR::MeshToVolumeParams::Unsigned
float MR::MeshToVolumeParams::surfaceOffset { 3.0 }
Vector3f MR::MeshToVolumeParams::voxelSize = Vector3f::diagonal( 1.0f )
 the number of voxels around surface to calculate distance in (should be positive)
AffineXf3f MR::MeshToVolumeParams::worldXf
AffineXf3f * MR::MeshToVolumeParams::outXf { nullptr }
 mesh initial transform
ProgressCallback MR::MeshToVolumeParams::cb
 optional output: xf to original mesh (respecting worldXf)
Vector3f MR::GridToMeshSettings::voxelSize
 the size of each voxel in the grid
float MR::GridToMeshSettings::isoValue = 0
 layer of grid with this value would be converted in mesh; isoValue can be negative only in level set grids
float MR::GridToMeshSettings::adaptivity = 0
 adaptivity - [0.0;1.0] ratio of combining small triangles into bigger ones (curvature can be lost on high values)
int MR::GridToMeshSettings::maxFaces = INT_MAX
 if the mesh exceeds this number of faces, an error returns
int MR::GridToMeshSettings::maxVertices = INT_MAX
 if the mesh exceeds this number of vertices, an error returns
bool MR::GridToMeshSettings::relaxDisorientedTriangles = true
ProgressCallback MR::GridToMeshSettings::cb
 to receive progress and request cancellation
AffineXf3f MR::MakeSignedByWindingNumberSettings::meshToGridXf
 defines the mapping from mesh reference from to grid reference frame
std::shared_ptr< IFastWindingNumberMR::MakeSignedByWindingNumberSettings::fwn
 defines particular implementation of IFastWindingNumber interface that will compute windings. If it is not specified, default FastWindingNumber is used
float MR::MakeSignedByWindingNumberSettings::windingNumberThreshold = 0.5f
float MR::MakeSignedByWindingNumberSettings::windingNumberBeta = 2
 determines the precision of fast approximation: the more the better, minimum value is 1
ProgressCallback MR::MakeSignedByWindingNumberSettings::progress
 to report algorithm's progress and to cancel it
float MR::DoubleOffsetSettings::voxelSize = 0
 the size of voxel in intermediate voxel grid representation
float MR::DoubleOffsetSettings::offsetA = 0
 the amount of first offset
float MR::DoubleOffsetSettings::offsetB = 0
 the amount of second offset
float MR::DoubleOffsetSettings::adaptivity = 0
 in [0; 1] - ratio of combining small triangles into bigger ones (curvature can be lost on high values)
std::shared_ptr< IFastWindingNumberMR::DoubleOffsetSettings::fwn
 defines particular implementation of IFastWindingNumber interface that will compute windings. If it is not specified, default FastWindingNumber is used
float MR::DoubleOffsetSettings::windingNumberThreshold = 0.5f
float MR::DoubleOffsetSettings::windingNumberBeta = 2
 determines the precision of fast approximation: the more the better, minimum value is 1
ProgressCallback MR::DoubleOffsetSettings::progress
 to report algorithm's progress and to cancel it
Vector3i MR::VoxelsVolumeInterpolatedAccessor< Accessor >::IndexAndPos::index
Vector3f MR::VoxelsVolumeInterpolatedAccessor< Accessor >::IndexAndPos::pos
 Zero-based voxel index in the volume.
VdbVolume MR::TransformVdbVolumeResult::volume
bool MR::TransformVdbVolumeResult::boxFixed = false
PreCutCallback MR::MergeVolumePartSettings::preCut = nullptr
PostCutCallback MR::MergeVolumePartSettings::postCut = nullptr
PostMergeCallback MR::MergeVolumePartSettings::postMerge = nullptr
PartMapping MR::MergeVolumePartSettings::mapping = {}
 mapping with initialized maps required for the postMerge callback
Vector3f MR::MergeVolumePartSettings::origin = {}
 origin (position of the (0;0;0) voxel) of the voxel volume part, usually specified for SimpleVolume
size_t MR::VolumeToMeshByPartsSettings::maxVolumePartMemoryUsage = 2 << 28
 the upper limit of memory amount used to store a voxel volume part
size_t MR::VolumeToMeshByPartsSettings::stripeOverlap = 4
 overlap in voxels between two parts
MRVOXELS_CLASS MR::VoxelsVolumeMinMax
MRVOXELS_CLASS MR::SimpleVolumeMinMax
MRVOXELS_CLASS MR::VoxelsVolume
MRVOXELS_CLASS MR::FunctionVolume
template<typename T>
 MR::VoxelsLoad::struct
MRVOXELS_CLASS MR::VoxelsLoad::DicomVolumeT
MRVOXELS_CLASS MR::VoxelsLoad::DicomVolume
MR::VoxelsVolume< T >::data
Vector3i MR::VoxelsVolume< T >::dims
Vector3f MR::VoxelsVolume< T >::voxelSize { 1.f, 1.f, 1.f }
static constexpr bool MR::VoxelsVolumeAccessor< VdbVolume >::cacheEffective = true
 caching results of this accessor can improve performance
static constexpr bool MR::VoxelsVolumeAccessor< VoxelsVolume< Vector< T, VoxelId > > >::cacheEffective = false
 caching results of this accessor does not make any sense since it returns values from a simple container
static constexpr bool MR::VoxelsVolumeAccessor< VoxelsVolume< VoxelValueGetter< T > > >::cacheEffective = true
 caching results of this accessor can improve performance
size_t MR::VoxelsVolumeCachingAccessor< V >::Parameters::preloadedLayerCount = 1
 amount of layers to be preloaded

Friends

class MR::MeshTopology::MeshTopologyDiff
class MR::TbbThreadMutex::LockGuard::TbbThreadMutex
class MR::BoundarySelectionWidget::ChangeBoundarySelectionHistoryAction
class MR::RibbonSchemaLoadListener::RibbonSchemaLoader
constexpr AffineXf inverse() const noexcept MR_REQUIRES_IF_SUPPORTED(!std friend AffineXf< V > MR::AffineXf< V >::operator* (const AffineXf< V > &u, const AffineXf< V > &v)
 computes inverse transformation
bool MR::AffineXf< V >::operator== (const AffineXf< V > &a, const AffineXf< V > &b)
bool MR::AffineXf< V >::operator!= (const AffineXf< V > &a, const AffineXf< V > &b)
std::ostream & MR::AffineXf< V >::operator<< (std::ostream &s, const AffineXf &xf)
std::istream & MR::AffineXf< V >::operator>> (std::istream &s, AffineXf &xf)
auto MR::Buffer< V, I >::begin (const Buffer &a)
auto MR::Buffer< V, I >::begin (Buffer &a)
auto MR::Buffer< V, I >::end (const Buffer &a)
auto MR::Buffer< V, I >::end (Buffer &a)
DirectoryIterator MR::Directory::begin (const Directory &sd)
std::filesystem::directory_iterator MR::Directory::end (const Directory &)
DirectoryRecursiveIterator MR::DirectoryRecursive::begin (const DirectoryRecursive &sd)
std::filesystem::recursive_directory_iterator MR::DirectoryRecursive::end (const DirectoryRecursive &)
bool MR::EdgePathsBuilderT< MetricToPenalty >::CandidateVert::operator< (const CandidateVert &a, const CandidateVert &b)
 smaller penalty to be the first
bool MR::Features::Primitives::Plane::operator== (const Plane &, const Plane &)=default
bool MR::Features::Primitives::ConeSegment::operator== (const ConeSegment &, const ConeSegment &)=default
bool MR::ObjVertId::operator== (const ObjVertId &, const ObjVertId &)=default
bool MR::ICPPairData::operator== (const ICPPairData &, const ICPPairData &)=default
bool MR::PointPair::operator== (const PointPair &, const PointPair &)=default
NumSum MR::NumSum::operator+ (const NumSum &a, const NumSum &b)
std::ostream & MR::Line< V >::operator<< (std::ostream &s, const Line &l)
std::istream & MR::Line< V >::operator>> (std::istream &s, Line &l)
constexpr bool MR::Matrix2< T >::operator== (const Matrix2< T > &a, const Matrix2< T > &b)
constexpr bool MR::Matrix2< T >::operator!= (const Matrix2< T > &a, const Matrix2< T > &b)
constexpr auto MR::Matrix2< T >::operator+ (const Matrix2< T > &a, const Matrix2< T > &b) -> Matrix2< decltype(std::declval< T >()+std::declval< T >())>
 NOTE: We use std::declval() in the operators below because libclang 18 in our binding generator is bugged and chokes on decltyping a.x and such. TODO fix this when we update libclang.
constexpr auto MR::Matrix2< T >::operator- (const Matrix2< T > &a, const Matrix2< T > &b) -> Matrix2< decltype(std::declval< T >() - std::declval< T >())>
constexpr auto MR::Matrix2< T >::operator* (T a, const Matrix2< T > &b) -> Matrix2< decltype(std::declval< T >() *std::declval< T >())>
constexpr auto MR::Matrix2< T >::operator* (const Matrix2< T > &b, T a) -> Matrix2< decltype(std::declval< T >() *std::declval< T >())>
constexpr auto MR::Matrix2< T >::operator/ (Matrix2< T > b, T a) -> Matrix2< decltype(std::declval< T >()/std::declval< T >())>
constexpr Matrix2< T > & MR::Matrix2< T >::operator+= (Matrix2< T > &a, const Matrix2< T > &b)
constexpr Matrix2< T > & MR::Matrix2< T >::operator-= (Matrix2< T > &a, const Matrix2< T > &b)
constexpr Matrix2< T > & MR::Matrix2< T >::operator*= (Matrix2< T > &a, T b)
constexpr Matrix2< T > & MR::Matrix2< T >::operator/= (Matrix2< T > &a, T b)
constexpr auto MR::Matrix2< T >::operator* (const Matrix2< T > &a, const Vector2< T > &b) -> Vector2< decltype(dot(std::declval< Vector2< T > >(), std::declval< Vector2< T > >()))>
 x = a * b
constexpr auto MR::Matrix2< T >::operator* (const Matrix2< T > &a, const Matrix2< T > &b) -> Matrix2< decltype(dot(std::declval< Vector2< T > >(), std::declval< Vector2< T > >()))>
 product of two matrices
std::ostream & MR::Matrix2< T >::operator<< (std::ostream &s, const Matrix2 &mat)
std::istream & MR::Matrix2< T >::operator>> (std::istream &s, Matrix2 &mat)
QR qr() const noexcept MR_REQUIRES_IF_SUPPORTED(!std friend constexpr bool MR::Matrix3< T >::operator== (const Matrix3< T > &a, const Matrix3< T > &b)
 decompose this matrix on the product Q*R, where Q is orthogonal and R is upper triangular
constexpr bool MR::Matrix3< T >::operator!= (const Matrix3< T > &a, const Matrix3< T > &b)
constexpr auto MR::Matrix3< T >::operator+ (const Matrix3< T > &a, const Matrix3< T > &b) -> Matrix3< decltype(std::declval< T >()+std::declval< T >())>
 NOTE: We use std::declval() in the operators below because libclang 18 in our binding generator is bugged and chokes on decltyping a.x and such. TODO fix this when we update libclang.
constexpr auto MR::Matrix3< T >::operator- (const Matrix3< T > &a, const Matrix3< T > &b) -> Matrix3< decltype(std::declval< T >() - std::declval< T >())>
constexpr auto MR::Matrix3< T >::operator* (T a, const Matrix3< T > &b) -> Matrix3< decltype(std::declval< T >() *std::declval< T >())>
constexpr auto MR::Matrix3< T >::operator* (const Matrix3< T > &b, T a) -> Matrix3< decltype(std::declval< T >() *std::declval< T >())>
constexpr auto MR::Matrix3< T >::operator/ (Matrix3< T > b, T a) -> Matrix3< decltype(std::declval< T >()/std::declval< T >())>
constexpr Matrix3< T > & MR::Matrix3< T >::operator+= (Matrix3< T > &a, const Matrix3< T > &b)
constexpr Matrix3< T > & MR::Matrix3< T >::operator-= (Matrix3< T > &a, const Matrix3< T > &b)
constexpr Matrix3< T > & MR::Matrix3< T >::operator*= (Matrix3< T > &a, T b)
constexpr Matrix3< T > & MR::Matrix3< T >::operator/= (Matrix3< T > &a, T b)
constexpr auto MR::Matrix3< T >::operator* (const Matrix3< T > &a, const Vector3< T > &b) -> Vector3< decltype(dot(std::declval< Vector3< T > >(), std::declval< Vector3< T > >()))>
 x = a * b
constexpr auto MR::Matrix3< T >::operator* (const Matrix3< T > &a, const Matrix3< T > &b) -> Matrix3< decltype(dot(std::declval< Vector3< T > >(), std::declval< Vector3< T > >()))>
 product of two matrices
std::ostream & MR::Matrix3< T >::operator<< (std::ostream &s, const Matrix3 &mat)
std::istream & MR::Matrix3< T >::operator>> (std::istream &s, Matrix3 &mat)
Vector3< T > operator()(const Vector3< T > &b) const MR_REQUIRES_IF_SUPPORTED(!std friend constexpr bool MR::Matrix4< T >::operator== (const Matrix4< T > &a, const Matrix4< T > &b)
constexpr bool MR::Matrix4< T >::operator!= (const Matrix4< T > &a, const Matrix4< T > &b)
constexpr auto MR::Matrix4< T >::operator+ (const Matrix4< T > &a, const Matrix4< T > &b) -> Matrix4< decltype(std::declval< T >()+std::declval< T >())>
 NOTE: We use std::declval() in the operators below because libclang 18 in our binding generator is bugged and chokes on decltyping a.x and such. TODO fix this when we update libclang.
constexpr auto MR::Matrix4< T >::operator- (const Matrix4< T > &a, const Matrix4< T > &b) -> Matrix4< decltype(std::declval< T >() - std::declval< T >())>
constexpr auto MR::Matrix4< T >::operator* (T a, const Matrix4< T > &b) -> Matrix4< decltype(std::declval< T >() *std::declval< T >())>
constexpr auto MR::Matrix4< T >::operator* (const Matrix4< T > &b, T a) -> Matrix4< decltype(std::declval< T >() *std::declval< T >())>
constexpr auto MR::Matrix4< T >::operator/ (Matrix4< T > b, T a) -> Matrix4< decltype(std::declval< T >()/std::declval< T >())>
constexpr Matrix4< T > & MR::Matrix4< T >::operator+= (Matrix4< T > &a, const Matrix4< T > &b)
constexpr Matrix4< T > & MR::Matrix4< T >::operator-= (Matrix4< T > &a, const Matrix4< T > &b)
constexpr Matrix4< T > & MR::Matrix4< T >::operator*= (Matrix4< T > &a, T b)
constexpr Matrix4< T > & MR::Matrix4< T >::operator/= (Matrix4< T > &a, T b)
constexpr auto MR::Matrix4< T >::operator* (const Matrix4< T > &a, const Vector4< T > &b) -> Vector4< decltype(dot(std::declval< Vector4< T > >(), std::declval< Vector4< T > >()))>
 x = a * b
constexpr auto MR::Matrix4< T >::operator* (const Matrix4< T > &a, const Matrix4< T > &b) -> Matrix4< decltype(dot(std::declval< Vector4< T > >(), std::declval< Vector4< T > >()))>
 product of two matrices
std::ostream & MR::Matrix4< T >::operator<< (std::ostream &s, const Matrix4 &mat)
std::istream & MR::Matrix4< T >::operator>> (std::istream &s, Matrix4 &mat)
std::ostream & MR::Plane3< T >::operator<< (std::ostream &s, const Plane3 &pl)
std::istream & MR::Plane3< T >::operator>> (std::istream &s, Plane3 &pl)
std::ostream & MR::PointOnFace::operator<< (std::ostream &s, const PointOnFace &pof)
std::istream & MR::PointOnFace::operator>> (std::istream &s, PointOnFace &pof)
bool MR::RingIterator< N >::operator== (const RingIterator &a, const RingIterator &b)
bool MR::RingIterator< N >::operator!= (const RingIterator &a, const RingIterator &b)
SparsePolynomial MR::SparsePolynomial< C, D, M >::operator* (const SparsePolynomial &a, const SparsePolynomial &b)
bool MR::Sphere< V >::operator== (const Sphere &a, const Sphere &b)=default
std::ostream & MR::TriPoint< T >::operator<< (std::ostream &s, const TriPoint &tp)
std::istream & MR::TriPoint< T >::operator>> (std::istream &s, TriPoint &tp)
bool MR::UnorientedTriangle::operator== (const UnorientedTriangle &a, const UnorientedTriangle &b)=default
MR_BIND_IGNORE_PY friend auto MR::Vector< T, I >::begin (const Vector< T, I > &a)
MR_BIND_IGNORE_PY friend auto MR::Vector< T, I >::begin (Vector< T, I > &a)
MR_BIND_IGNORE_PY friend auto MR::Vector< T, I >::end (const Vector< T, I > &a)
MR_BIND_IGNORE_PY friend auto MR::Vector< T, I >::end (Vector< T, I > &a)
constexpr bool MR::Vector3< T >::operator== (const Vector3< T > &a, const Vector3< T > &b)
constexpr bool MR::Vector3< T >::operator!= (const Vector3< T > &a, const Vector3< T > &b)
constexpr const Vector3< T > & MR::Vector3< T >::operator+ (const Vector3< T > &a)
 NOTE: We use std::declval() in the operators below because libclang 18 in our binding generator is bugged and chokes on decltyping a.x and such. TODO fix this when we update libclang.
constexpr auto MR::Vector3< T >::operator- (const Vector3< T > &a) -> Vector3< decltype(-std::declval< T >())>
constexpr auto MR::Vector3< T >::operator+ (const Vector3< T > &a, const Vector3< T > &b) -> Vector3< decltype(std::declval< T >()+std::declval< T >())>
constexpr auto MR::Vector3< T >::operator- (const Vector3< T > &a, const Vector3< T > &b) -> Vector3< decltype(std::declval< T >() - std::declval< T >())>
constexpr auto MR::Vector3< T >::operator* (T a, const Vector3< T > &b) -> Vector3< decltype(std::declval< T >() *std::declval< T >())>
constexpr auto MR::Vector3< T >::operator* (const Vector3< T > &b, T a) -> Vector3< decltype(std::declval< T >() *std::declval< T >())>
constexpr auto MR::Vector3< T >::operator/ (Vector3< T > b, T a) -> Vector3< decltype(std::declval< T >()/std::declval< T >())>
constexpr Vector3< T > & MR::Vector3< T >::operator+= (Vector3< T > &a, const Vector3< T > &b)
constexpr Vector3< T > & MR::Vector3< T >::operator-= (Vector3< T > &a, const Vector3< T > &b)
constexpr Vector3< T > & MR::Vector3< T >::operator*= (Vector3< T > &a, T b)
constexpr Vector3< T > & MR::Vector3< T >::operator/= (Vector3< T > &a, T b)
std::ostream & MR::Vector3< T >::operator<< (std::ostream &s, const Vector3 &vec)
std::istream & MR::Vector3< T >::operator>> (std::istream &s, Vector3 &vec)
MR_BIND_IGNORE friend auto MR::Vector3< T >::begin (const Vector3 &v)
MR_BIND_IGNORE friend auto MR::Vector3< T >::begin (Vector3 &v)
MR_BIND_IGNORE friend auto MR::Vector3< T >::end (const Vector3 &v)
MR_BIND_IGNORE friend auto MR::Vector3< T >::end (Vector3 &v)
constexpr bool MR::Vector4< T >::operator== (const Vector4< T > &a, const Vector4< T > &b)
constexpr bool MR::Vector4< T >::operator!= (const Vector4< T > &a, const Vector4< T > &b)
constexpr const Vector4< T > & MR::Vector4< T >::operator+ (const Vector4< T > &a)
 NOTE: We use std::declval() in the operators below because libclang 18 in our binding generator is bugged and chokes on decltyping a.x and such. TODO fix this when we update libclang.
constexpr auto MR::Vector4< T >::operator- (const Vector4< T > &a) -> Vector4< decltype(-std::declval< T >())>
constexpr auto MR::Vector4< T >::operator+ (const Vector4< T > &a, const Vector4< T > &b) -> Vector4< decltype(std::declval< T >()+std::declval< T >())>
constexpr auto MR::Vector4< T >::operator- (const Vector4< T > &a, const Vector4< T > &b) -> Vector4< decltype(std::declval< T >() - std::declval< T >())>
constexpr auto MR::Vector4< T >::operator* (T a, const Vector4< T > &b) -> Vector4< decltype(std::declval< T >() *std::declval< T >())>
constexpr auto MR::Vector4< T >::operator* (const Vector4< T > &b, T a) -> Vector4< decltype(std::declval< T >() *std::declval< T >())>
constexpr auto MR::Vector4< T >::operator/ (Vector4< T > b, T a) -> Vector4< decltype(std::declval< T >()/std::declval< T >())>
constexpr Vector4< T > & MR::Vector4< T >::operator+= (Vector4< T > &a, const Vector4< T > &b)
constexpr Vector4< T > & MR::Vector4< T >::operator-= (Vector4< T > &a, const Vector4< T > &b)
constexpr Vector4< T > & MR::Vector4< T >::operator*= (Vector4< T > &a, T b)
constexpr Vector4< T > & MR::Vector4< T >::operator/= (Vector4< T > &a, T b)
std::ostream & MR::Vector4< T >::operator<< (std::ostream &s, const Vector4 &vec)
std::istream & MR::Vector4< T >::operator>> (std::istream &s, Vector4 &vec)
MR_BIND_IGNORE friend auto MR::Vector4< T >::begin (const Vector4 &v)
MR_BIND_IGNORE friend auto MR::Vector4< T >::begin (Vector4 &v)
MR_BIND_IGNORE friend auto MR::Vector4< T >::end (const Vector4 &v)
MR_BIND_IGNORE friend auto MR::Vector4< T >::end (Vector4 &v)
bool MR::UnitToStringParams< E >::operator== (const UnitToStringParams &, const UnitToStringParams &)=default
 If you add new fields there, update the initializer for defaultUnitToStringParams in MRUnits.cpp.
ViewerMR::Viewer::getViewerInstance ()
 returns global instance of Viewer class
void MR::VisualObjectTagManager::deserializeFromJson (const Json::Value &root, VisualObjectTagManager &manager)
using MR::VertPathInfoMap = HashMap<VertId, VertPathInfo>
using MR::EdgePathsBuilder = EdgePathsBuilderT<TrivialMetricToPenalty>
 MR::EdgePathsBuilderT< MetricToPenalty >::EdgePathsBuilderT (const MeshTopology &topology, const EdgeMetric &metric)
 MR::EdgePathsBuilderT< MetricToPenalty >::EdgePathsBuilderT (const MeshTopology &topology)
void MR::EdgePathsBuilderT< MetricToPenalty >::reset (const EdgeMetric &metric)
 clears everything without freeing memory, and sets new metric
bool MR::EdgePathsBuilderT< MetricToPenalty >::addStart (VertId startVert, float startMetric)
ReachedVert MR::EdgePathsBuilderT< MetricToPenalty >::reachNext ()
bool MR::EdgePathsBuilderT< MetricToPenalty >::addOrgRingSteps (const ReachedVert &rv)
ReachedVert MR::EdgePathsBuilderT< MetricToPenalty >::growOneEdge ()
 the same as reachNext() + addOrgRingSteps()
const VertPathInfoMR::EdgePathsBuilderT< MetricToPenalty >::getVertInfo (VertId v) const
 returns one element from the map (or nullptr if the element is missing)
EdgePath MR::EdgePathsBuilderT< MetricToPenalty >::getPathBack (VertId backpathStart) const
 returns the path in the forest from given vertex to one of start vertices
VertId MR::EdgePathsBuilderT< MetricToPenalty >::trackPathBack (VertId backpathStart, EdgePath *res=nullptr) const
using MR::ObjectMakerFunc = std::shared_ptr<Object>()
std::shared_ptr< ObjectMR::createObject (const std::string &className)
 the function to create new object instance by registered class name
#define MR_ADD_CLASS_FACTORY(className)
 use this macro to register a class in the factory before calling createObject
using MR::ConvertToIntVector2 = std::function<Vector2i( const Vector2f& )>
 float-to-int coordinate converter
using MR::ConvertToFloatVector2 = std::function<Vector2f( const Vector2i& )>
 int-to-float coordinate converter
bool MR::smaller (const PreciseVertCoord &l, const PreciseVertCoord &r)
bool MR::ccw (const Vector2i &a, const Vector2i &b)
bool MR::ccw (const Vector2i &a, const Vector2i &b, const Vector2i &c)
bool MR::ccw (const std::array< PreciseVertCoords2, 3 > &vs)
bool MR::ccw (const PreciseVertCoords2 *vs)
bool MR::smaller2 (const std::array< PreciseVertCoords2, 4 > &vs)
bool MR::orientParaboloid3d (const Vector2i &a, const Vector2i &b, const Vector2i &c)
bool MR::orientParaboloid3d (const Vector2i &a, const Vector2i &b, const Vector2i &c, const Vector2i &d)
bool MR::inCircle (const std::array< PreciseVertCoords2, 4 > &vs)
 return true if 4th point in array lays inside circumcircle of first 3 points based triangle
bool MR::inCircle (const PreciseVertCoords2 *vs)
SegmentSegmentIntersectResult MR::doSegmentSegmentIntersect (const std::array< PreciseVertCoords2, 4 > &vs)
bool MR::segmentIntersectionOrder (const std::array< PreciseVertCoords2, 6 > &vs)
Vector2i MR::findSegmentSegmentIntersectionPrecise (const Vector2i &a, const Vector2i &b, const Vector2i &c, const Vector2i &d)
Vector2f MR::findSegmentSegmentIntersectionPrecise (const Vector2f &a, const Vector2f &b, const Vector2f &c, const Vector2f &d, CoordinateConverters2 converters)
using MR::ConvertToIntVector = std::function<Vector3i( const Vector3f& )>
 float-to-int coordinate converter
using MR::ConvertToFloatVector = std::function<Vector3f( const Vector3i& )>
 int-to-float coordinate converter
bool MR::orient3d (const Vector3i &a, const Vector3i &b, const Vector3i &c, const Vector3i &d)
bool MR::orient3d (const std::array< PreciseVertCoords, 4 > &vs)
 first sorts the indices in ascending order, then calls the predicate for sorted points
bool MR::orient3d (const PreciseVertCoords *vs)
TriangleSegmentIntersectResult MR::doTriangleSegmentIntersect (const std::array< PreciseVertCoords, 5 > &vs)
bool MR::segmentIntersectionOrder (const std::array< PreciseVertCoords, 8 > &vs)
ConvertToIntVector MR::getToIntConverter (const Box3d &box)
 creates converter from Vector3f to Vector3i in Box range (int diapason is mapped to box range)
ConvertToFloatVector MR::getToFloatConverter (const Box3d &box)
 creates converter from Vector3i to Vector3f in Box range (int diapason is mapped to box range)
std::optional< Vector3i > MR::findTwoSegmentsIntersection (const Vector3i &ai, const Vector3i &bi, const Vector3i &ci, const Vector3i &di)
Vector3f MR::findTriangleSegmentIntersectionPrecise (const Vector3f &a, const Vector3f &b, const Vector3f &c, const Vector3f &d, const Vector3f &e, CoordinateConverters converters)
bool MR::orient3d (const Vector3i &a, const Vector3i &b, const Vector3i &c)
EdgeMetric MR::edgeLengthMetric (const Mesh &mesh)
EdgeMetric MR::edgeLengthMetric (const MeshTopology &topology, const VertCoords &points)
EdgeMetric MR::discreteAbsMeanCurvatureMetric (const Mesh &mesh)
EdgeMetric MR::discreteAbsMeanCurvatureMetric (const MeshTopology &topology, const VertCoords &points)
EdgeMetric MR::discreteMinusAbsMeanCurvatureMetric (const Mesh &mesh)
EdgeMetric MR::discreteMinusAbsMeanCurvatureMetric (const MeshTopology &topology, const VertCoords &points)
EdgeMetric MR::edgeCurvMetric (const Mesh &mesh, float angleSinFactor=2, float angleSinForBoundary=0)
EdgeMetric MR::edgeCurvMetric (const MeshTopology &topology, const VertCoords &points, float angleSinFactor=2, float angleSinForBoundary=0)
EdgeMetric MR::edgeAbsCurvMetric (const Mesh &mesh, float angleSinFactor=2, float angleSinForBoundary=0)
EdgeMetric MR::edgeAbsCurvMetric (const MeshTopology &topology, const VertCoords &points, float angleSinFactor=2, float angleSinForBoundary=0)
EdgeMetric MR::edgeTableSymMetric (const MeshTopology &topology, const EdgeMetric &metric)
bool MR::isEdgeLoop (const MeshTopology &topology, const std::vector< EdgeId > &edges)
 returns true if every next edge starts where previous edge ends, and start vertex coincides with finish vertex
std::vector< EdgeLoopMR::splitOnSimpleLoops (const MeshTopology &topology, std::vector< EdgeLoop > &&loops)
 given a number of edge loops, splits every loop that passes via a vertex more than once on smaller loops without self-intersections
void MR::reverse (EdgePath &path)
void MR::reverse (std::vector< EdgePath > &paths)
 reverse every path in the vector
double MR::calcPathMetric (const EdgePath &path, EdgeMetric metric)
 computes summed metric of all edges in the path
double MR::calcPathLength (const EdgePath &path, const Mesh &mesh)
Vector3d MR::calcOrientedArea (const EdgeLoop &loop, const Mesh &mesh)
void MR::sortPathsByMetric (std::vector< EdgePath > &paths, EdgeMetric metric)
 sorts given paths in ascending order of their metrics
void MR::sortPathsByLength (std::vector< EdgePath > &paths, const Mesh &mesh)
void MR::addLeftBand (const MeshTopology &topology, const EdgeLoop &loop, FaceBitSet &addHere)
 adds all faces incident to loop vertices and located to the left from the loop to given FaceBitSet
EdgePath MR::buildShortestPath (const Mesh &mesh, VertId start, VertId finish, float maxPathLen=FLT_MAX)
EdgePath MR::buildShortestPathBiDir (const Mesh &mesh, VertId start, VertId finish, float maxPathLen=FLT_MAX)
EdgePath MR::buildShortestPathBiDir (const Mesh &mesh, const MeshTriPoint &start, const MeshTriPoint &finish, VertId *outPathStart=nullptr, VertId *outPathFinish=nullptr, float maxPathLen=FLT_MAX)
EdgePath MR::buildShortestPathAStar (const Mesh &mesh, VertId start, VertId finish, float maxPathLen=FLT_MAX)
EdgePath MR::buildShortestPathAStar (const Mesh &mesh, const MeshTriPoint &start, const MeshTriPoint &finish, VertId *outPathStart=nullptr, VertId *outPathFinish=nullptr, float maxPathLen=FLT_MAX)
EdgePath MR::buildShortestPath (const Mesh &mesh, VertId start, const VertBitSet &finish, float maxPathLen=FLT_MAX)
 builds shortest path in euclidean metric from start to finish vertices; if no path can be found then empty path is returned
EdgePath MR::buildSmallestMetricPath (const MeshTopology &topology, const EdgeMetric &metric, VertId start, VertId finish, float maxPathMetric=FLT_MAX)
 builds shortest path in given metric from start to finish vertices; if no path can be found then empty path is returned
EdgePath MR::buildSmallestMetricPathBiDir (const MeshTopology &topology, const EdgeMetric &metric, VertId start, VertId finish, float maxPathMetric=FLT_MAX)
EdgePath MR::buildSmallestMetricPathBiDir (const MeshTopology &topology, const EdgeMetric &metric, const TerminalVertex *starts, int numStarts, const TerminalVertex *finishes, int numFinishes, VertId *outPathStart=nullptr, VertId *outPathFinish=nullptr, float maxPathMetric=FLT_MAX)
EdgePath MR::buildSmallestMetricPath (const MeshTopology &topology, const EdgeMetric &metric, VertId start, const VertBitSet &finish, float maxPathMetric=FLT_MAX)
 builds shortest path in given metric from start to finish vertices; if no path can be found then empty path is returned
std::vector< VertId > MR::getVertexOrdering (const MeshTopology &topology, VertBitSet region)
 returns all vertices from given region ordered in each connected component in breadth-first way
std::vector< EdgeLoopMR::extractClosedLoops (const MeshTopology &topology, EdgeBitSet &edges)
 finds all closed loops from given edges and removes them from edges
std::vector< EdgeLoopMR::extractClosedLoops (const MeshTopology &topology, const std::vector< EdgeId > &inEdges, EdgeBitSet *outNotLoopEdges=nullptr)
EdgeLoop MR::extractLongestClosedLoop (const Mesh &mesh, const std::vector< EdgeId > &inEdges)
bool MR::dilateRegionByMetric (const MeshTopology &topology, const EdgeMetric &metric, FaceBitSet &region, float dilation, ProgressCallback callback={})
 expands the region (of faces or vertices) on given metric value. returns false if callback also returns false
bool MR::dilateRegionByMetric (const MeshTopology &topology, const EdgeMetric &metric, VertBitSet &region, float dilation, ProgressCallback callback={})
bool MR::dilateRegionByMetric (const MeshTopology &topology, const EdgeMetric &metric, UndirectedEdgeBitSet &region, float dilation, ProgressCallback callback={})
bool MR::erodeRegionByMetric (const MeshTopology &topology, const EdgeMetric &metric, FaceBitSet &region, float dilation, ProgressCallback callback={})
 shrinks the region (of faces or vertices) on given metric value. returns false if callback also returns false
bool MR::erodeRegionByMetric (const MeshTopology &topology, const EdgeMetric &metric, VertBitSet &region, float dilation, ProgressCallback callback={})
bool MR::erodeRegionByMetric (const MeshTopology &topology, const EdgeMetric &metric, UndirectedEdgeBitSet &region, float dilation, ProgressCallback callback={})
bool MR::dilateRegion (const Mesh &mesh, FaceBitSet &region, float dilation, ProgressCallback callback={})
 expands the region (of faces or vertices) on given value (in meters). returns false if callback also returns false
bool MR::dilateRegion (const Mesh &mesh, VertBitSet &region, float dilation, ProgressCallback callback={})
bool MR::dilateRegion (const Mesh &mesh, UndirectedEdgeBitSet &region, float dilation, ProgressCallback callback={})
bool MR::dilateRegion (const MeshTopology &topology, const VertCoords &points, FaceBitSet &region, float dilation, ProgressCallback callback={})
bool MR::dilateRegion (const MeshTopology &topology, const VertCoords &points, VertBitSet &region, float dilation, ProgressCallback callback={})
bool MR::dilateRegion (const MeshTopology &topology, const VertCoords &points, UndirectedEdgeBitSet &region, float dilation, ProgressCallback callback={})
bool MR::erodeRegion (const Mesh &mesh, FaceBitSet &region, float dilation, ProgressCallback callback={})
 shrinks the region (of faces or vertices) on given value (in meters). returns false if callback also returns false
bool MR::erodeRegion (const Mesh &mesh, VertBitSet &region, float dilation, ProgressCallback callback={})
bool MR::erodeRegion (const Mesh &mesh, UndirectedEdgeBitSet &region, float dilation, ProgressCallback callback={})
bool MR::erodeRegion (const MeshTopology &topology, const VertCoords &points, FaceBitSet &region, float dilation, ProgressCallback callback={})
bool MR::erodeRegion (const MeshTopology &topology, const VertCoords &points, VertBitSet &region, float dilation, ProgressCallback callback={})
bool MR::erodeRegion (const MeshTopology &topology, const VertCoords &points, UndirectedEdgeBitSet &region, float dilation, ProgressCallback callback={})
int MR::getPathPlaneIntersections (const Mesh &mesh, const EdgePath &path, const Plane3f &plane, std::vector< MeshEdgePoint > *outIntersections=nullptr)
 finds all intersection points between given path and plane, adds them in outIntersections and returns their number
int MR::getContourPlaneIntersections (const Contour3f &path, const Plane3f &plane, std::vector< Vector3f > *outIntersections=nullptr)
 finds all intersection points between given contour and plane, adds them in outIntersections and returns their number
int MR::getPathEdgesInPlane (const Mesh &mesh, const EdgePath &path, const Plane3f &plane, float tolerance=0.0f, std::vector< EdgeId > *outInPlaneEdges=nullptr)
 finds all path edges located in given plane with given tolerance, adds them in outInPlaneEdges and returns their number
Expected< LoadedObjectMR::makeObjectFromMeshFile (const std::filesystem::path &file, const ProgressCallback &cb={}, bool returnOnlyMesh=false)
 loads data from given file and makes either ObjectMesh, ObjectLines or ObjectPoints (if the file has points or edges but not faces)
Expected< ObjectLinesMR::makeObjectLinesFromFile (const std::filesystem::path &file, ProgressCallback callback={})
 loads lines from given file in new object
Expected< ObjectPointsMR::makeObjectPointsFromFile (const std::filesystem::path &file, ProgressCallback callback={})
 loads points from given file in new object
Expected< ObjectDistanceMapMR::makeObjectDistanceMapFromFile (const std::filesystem::path &file, ProgressCallback callback={})
 loads distance map from given file in new object
Expected< ObjectGcodeMR::makeObjectGcodeFromFile (const std::filesystem::path &file, ProgressCallback callback={})
 loads gcode from given file in new object
Expected< LoadedObjectsMR::loadObjectFromFile (const std::filesystem::path &filename, const ProgressCallback &callback={})
 load all objects (or any type: mesh, lines, points, voxels or scene) from file
bool MR::isSupportedFileInSubfolders (const std::filesystem::path &folder)
 checks if there are any supported files folder and subfolders
Expected< LoadedObjectMR::loadSceneFromAnySupportedFormat (const std::filesystem::path &path, const ProgressCallback &callback={})
 tries to load scene from every format listed in SceneFormatFilters
LoadedObject MR::makeObjectMesh (std::string objName, LoadedMeshData data)
 constructs new ObjectMesh from the given data
Expected< LoadedObjectMR::deserializeObjectTree (const std::filesystem::path &path, const FolderCallback &postDecompress={}, const ProgressCallback &progressCb={})
 loads objects tree from given scene file (zip/mru)
Expected< LoadedObjectMR::deserializeObjectTreeFromFolder (const std::filesystem::path &folder, const ProgressCallback &progressCb={})
 loads objects tree from given scene folder
IOFilters MR::getAllFilters ()
 returns filters for all supported file formats for all types of objects
template<typename ObjectT = Object>
std::shared_ptr< ObjectT > MR::asSelectivityType (std::shared_ptr< Object > obj, const ObjectSelectivityType &type)
 if input object is of given type then returns another pointer on it
template<typename ObjectT = Object>
std::vector< std::shared_ptr< ObjectT > > MR::getAllObjectsInTree (Object *root, const ObjectSelectivityType &type=ObjectSelectivityType::Selectable)
template<typename ObjectT = Object>
MR_BIND_IGNORE std::vector< std::shared_ptr< ObjectT > > MR::getAllObjectsInTree (Object &root, const ObjectSelectivityType &type=ObjectSelectivityType::Selectable)
template<typename ObjectT = Object>
std::vector< std::shared_ptr< ObjectT > > MR::getTopmostVisibleObjects (Object *root, const ObjectSelectivityType &type=ObjectSelectivityType::Selectable)
 Returns all topmost visible objects of given type (if an object is returned, its children are not) excluding root.
template<typename ObjectT = Object>
MR_BIND_IGNORE std::vector< std::shared_ptr< ObjectT > > MR::getTopmostVisibleObjects (Object &root, const ObjectSelectivityType &type=ObjectSelectivityType::Selectable)
template<typename ObjectT = Object>
std::vector< std::shared_ptr< ObjectT > > MR::getTopmostObjects (Object *root, const ObjectSelectivityType &type=ObjectSelectivityType::Selectable, bool visibilityCheck=false)
 Returns all topmost objects of given type (if an object is returned, its children are not) excluding root.
template<typename ObjectT = Object>
MR_BIND_IGNORE std::vector< std::shared_ptr< ObjectT > > MR::getTopmostObjects (Object &root, const ObjectSelectivityType &type=ObjectSelectivityType::Selectable, bool visibilityCheck=false)
template<typename ObjectT = Object>
std::shared_ptr< ObjectT > MR::getDepthFirstObject (Object *root, const ObjectSelectivityType &type)
 return first object of given type in depth-first traverse order excluding root
template<typename ObjectT = Object>
MR_BIND_IGNORE std::shared_ptr< ObjectT > MR::getDepthFirstObject (Object &root, const ObjectSelectivityType &type)
template<typename T>
Eigen::Matrix< T, 2, 1 > MR::toEigen (const Vector2< T > &v)
template<typename T>
Eigen::Matrix< T, 2, 2 > MR::toEigen (const SymMatrix2< T > &m)
template<typename T>
Eigen::Matrix< T, 2, 2 > MR::toEigen (const Matrix2< T > &m)
template<typename T>
Matrix2< T > MR::fromEigen (const Eigen::Matrix< T, 2, 2 > &m)
template<typename T>
Vector3< T > MR::fromEigen (const Eigen::Matrix< T, 3, 1 > &ev)
template<typename T>
Eigen::Matrix< T, 3, 1 > MR::toEigen (const Vector3< T > &v)
template<typename T>
Eigen::Matrix< T, 3, 3 > MR::toEigen (const SymMatrix3< T > &m)
template<typename T>
Eigen::Matrix< T, 3, 3 > MR::toEigen (const Matrix3< T > &m)
template<typename T>
Matrix3< T > MR::fromEigen (const Eigen::Matrix< T, 3, 3 > &m)
template<typename T>
Eigen::Matrix< T, 4, 4 > MR::toEigen (const SymMatrix4< T > &m)
template<typename T>
Eigen::Matrix< T, 4, 4 > MR::toEigen (const Matrix4< T > &m)
template<typename T>
Matrix4< T > MR::fromEigen (const Eigen::Matrix< T, 4, 4 > &m)
template<typename T>
Vector4< T > MR::fromEigen (const Eigen::Matrix< T, 4, 1 > &ev)
template<typename T>
Eigen::Matrix< T, 4, 1 > MR::toEigen (const Vector4< T > &v)
template<typename T>
Eigen::Matrix< T, 4, 1 > MR::toEigen (const Vector3< T > &v, T w)
template<typename T>
Quaternion< T > MR::fromEigen (const Eigen::Quaternion< T > &eq)
template<typename T>
Eigen::Quaternion< T > MR::toEigen (const Quaternion< T > &q)
template<typename V>
Line< V > transformed (const Line< V > &l, const AffineXf< V > &xf)
template<typename T>
auto dot (const Matrix2< T > &a, const Matrix2< T > &b) -> decltype(dot(a.x, b.x))
 double-dot product: x = a : b
template<typename T>
Matrix2< T > outer (const Vector2< T > &a, const Vector2< T > &b)
 x = a * b^T
template<typename T>
auto dot (const Matrix3< T > &a, const Matrix3< T > &b) -> decltype(dot(a.x, b.x))
 double-dot product: x = a : b
template<typename T>
Matrix3< T > outer (const Vector3< T > &a, const Vector3< T > &b)
 x = a * b^T
template<typename T>
auto dot (const Matrix4< T > &a, const Matrix4< T > &b) -> decltype(dot(a.x, b.x))
 double-dot product: x = a : b
template<typename T>
Matrix4< T > outer (const Vector4< T > &a, const Vector4< T > &b)
 x = a * b^T
bool same (const MeshTopology &topology, const MeshTriPoint &lhs, const MeshTriPoint &rhs)
 returns true if two points are equal considering different representations
bool fromSameTriangle (const MeshTopology &topology, MeshTriPoint &a, MeshTriPoint &b)
bool fromSameTriangle (const MeshTopology &topology, MeshTriPoint &&a, MeshTriPoint &&b)
MeshTriPoint getVertexAsMeshTriPoint (const MeshTopology &topology, EdgeId e, VertId v)
 returns MeshTriPoint representation of given vertex with given edge field; or invalid MeshTriPoint if it is not possible
template<typename T>
Plane3< T > invTransformed (const Plane3< T > &pl, const AffineXf3< T > &ixf)
template<typename T>
Plane3< T > transformed (const Plane3< T > &plane, const AffineXf3< T > &xf)
 Fixes ambiguity in the old bindings on VS2019 only. TODO remove when wropping old bindings. Remove #if MR_HAS_CONCEPTS above too.
bool operator== (const PolylineUndirectedEdgeIterator &a, const PolylineUndirectedEdgeIterator &b)
template<typename T>
dot (const Quaternion< T > &a, const Quaternion< T > &b)
 dot product
template<typename T>
Quaternion< T > operator* (const Quaternion< T > &q1, const Quaternion< T > &q2)
 Hamilton product.
template<typename T>
const Quaternion< T > * getCanonicalQuaternions () noexcept
template<typename T>
Quaternion< T > getClosestCanonicalQuaternion (const Quaternion< T > &base) noexcept
 returns closest to base canonical quaternion
template<typename T>
Matrix3< T > slerp (const Matrix3< T > &m0, const Matrix3< T > &m1, T t)
 given t in [0,1] and two rotation matrices, interpolates them spherically and produces another rotation matrix
template<typename T>
AffineXf3< T > slerp (const AffineXf3< T > &xf0, const AffineXf3< T > &xf1, T t, const Vector3< T > &p={})
template<typename T>
Matrix3< T > orthonormalized (const Matrix3< T > &m)
 given any matrix, returns a close rotation matrix
template<typename T>
AffineXf3< T > orthonormalized (const AffineXf3< T > &xf, const Vector3< T > &center={})
template<typename T>
Vector2< T > operator* (const SymMatrix2< T > &a, const Vector2< T > &b)
 x = a * b
template<typename T>
SymMatrix2< T > outerSquare (const Vector2< T > &a)
 x = a * a^T
template<typename T>
SymMatrix2< T > outerSquare (T k, const Vector2< T > &a)
 x = k * a * a^T
template<typename T>
Vector3< T > operator* (const SymMatrix3< T > &a, const Vector3< T > &b)
 x = a * b
template<typename T>
SymMatrix3< T > outerSquare (const Vector3< T > &a)
 x = a * a^T
template<typename T>
SymMatrix3< T > outerSquare (T k, const Vector3< T > &a)
 x = k * a * a^T
template<typename T>
SymMatrix3< T > crossSquare (const Vector3< T > &a)
template<typename T>
Vector4< T > operator* (const SymMatrix4< T > &a, const Vector4< T > &b)
 x = a * b
template<typename T>
SymMatrix4< T > outerSquare (const Vector4< T > &a)
 x = a * a^T
template<typename T>
SymMatrix4< T > outerSquare (T k, const Vector4< T > &a)
 x = k * a * a^T
template<typename T>
distanceSq (const Vector3< T > &a, const Vector3< T > &b)
 squared distance between two points, which is faster to compute than just distance
template<typename T>
distance (const Vector3< T > &a, const Vector3< T > &b)
 distance between two points, better use distanceSq for higher performance
template<typename T>
Vector3< T > cross (const Vector3< T > &a, const Vector3< T > &b)
 cross product
template<typename T>
auto dot (const Vector3< T > &a, const Vector3< T > &b) -> decltype(a.x *b.x)
 dot product
template<typename T>
sqr (const Vector3< T > &a)
 squared length
template<typename T>
mixed (const Vector3< T > &a, const Vector3< T > &b, const Vector3< T > &c)
 mixed product
template<typename T>
Vector3< T > mult (const Vector3< T > &a, const Vector3< T > &b)
 per component multiplication
template<typename T>
Vector3< T > div (const Vector3< T > &a, const Vector3< T > &b)
 per component division
template<typename T>
angle (const Vector3< T > &a, const Vector3< T > &b)
template<typename T>
Vector3< T > unitVector3 (T azimuth, T altitude)
 returns a point on unit sphere given two angles
template<typename T>
distanceSq (const Vector4< T > &a, const Vector4< T > &b)
 squared distance between two points, which is faster to compute than just distance
template<typename T>
distance (const Vector4< T > &a, const Vector4< T > &b)
 distance between two points, better use distanceSq for higher performance
template<typename T>
auto dot (const Vector4< T > &a, const Vector4< T > &b) -> decltype(a.x *b.x)
 dot product
template<typename T>
sqr (const Vector4< T > &a)
 squared length
template<typename T>
Vector4< T > mult (const Vector4< T > &a, const Vector4< T > &b)
 per component multiplication
template<typename T>
Vector4< T > div (const Vector4< T > &a, const Vector4< T > &b)
 per component division

Detailed Description

Macro Definition Documentation

◆ DETAIL_MR_UNIT_ENUMS

#define DETAIL_MR_UNIT_ENUMS ( X)

#include <MRMesh/MRUnitInfo.h>

Value:
X(NoUnit) X(LengthUnit) X(AngleUnit) X(PixelSizeUnit) X(RatioUnit) X(TimeUnit) X(MovementSpeedUnit) X(AreaUnit) X(VolumeUnit) X(InvLengthUnit)

A list of all unit enums, for internal use.

◆ DETAIL_MR_UNIT_VALUE_TYPES

#define DETAIL_MR_UNIT_VALUE_TYPES ( X,
... )

#include <MRMesh/MRUnitInfo.h>

Value:
X(float ,__VA_ARGS__) X(double ,__VA_ARGS__) X(long double ,__VA_ARGS__) \
X(signed char ,__VA_ARGS__) X(unsigned char ,__VA_ARGS__) \
X(short ,__VA_ARGS__) X(unsigned short ,__VA_ARGS__) \
X(int ,__VA_ARGS__) X(unsigned int ,__VA_ARGS__) \
X(long ,__VA_ARGS__) X(unsigned long ,__VA_ARGS__) \
X(long long ,__VA_ARGS__) X(unsigned long long ,__VA_ARGS__)

All supported value types for valueToString(). Not using __VA_OPT__(,) here to support legacy MSVC preprocessor.

◆ MR_ADD_CLASS_FACTORY

#define MR_ADD_CLASS_FACTORY ( className)

#include <MRMesh/MRObjectFactory.h>

Value:
static MR::ObjectFactory<className> className##_Factory_{ #className };
Definition MRObjectFactory.h:38

use this macro to register a class in the factory before calling createObject

◆ MR_ADD_CTOR_DELETE_MOVE

#define MR_ADD_CTOR_DELETE_MOVE ( StaticClassName)

#include <MRViewer/MRViewerFwd.h>

Value:
StaticClassName()=default;\
StaticClassName(StaticClassName&&)noexcept = delete;\
StaticClassName& operator=(StaticClassName&&)noexcept = delete

◆ MR_DELETE_MOVE

#define MR_DELETE_MOVE ( StaticClassName)

#include <MRViewer/MRViewerFwd.h>

Value:
StaticClassName(StaticClassName&&)noexcept = delete;\
StaticClassName& operator=(StaticClassName&&)noexcept = delete

this is needed as far as MAKE_SLOT cannot be used with movable classes

◆ MR_REGISTER_RENDER_OBJECT_IMPL

#define MR_REGISTER_RENDER_OBJECT_IMPL ( objectType,
... )

#include <MRMesh/MRIRenderObject.h>

Value:
static MR::RegisterRenderObjectConstructor __objectRegistrator##objectType{typeid(objectType),makeRenderObjectConstructor<__VA_ARGS__>()};
Definition MRIRenderObject.h:208

rendObjectType

◆ MR_REGISTER_RIBBON_ITEM

#define MR_REGISTER_RIBBON_ITEM ( pluginType)

#include <MRViewer/MRRibbonRegisterItem.h>

Value:
static MR::RibbonMenuItemAdderT<pluginType> ribbonMenuItemAdder##pluginType##_;
Definition MRRibbonRegisterItem.h:28

registers plugin on module loading, and unregister plugin on module unloading

◆ MR_RETURN_IF_UNEXPECTED

#define MR_RETURN_IF_UNEXPECTED ( expr)

#include <MRMesh/MRExpected.h>

Value:
if ( auto&& res = ( expr ); !res ) \
return unexpected( std::move( res.error() ) );

Exits the current function with an error if the given expression contains an error.

◆ MR_RIBBON_ITEM_CALL

#define MR_RIBBON_ITEM_CALL ( pluginType,
f,
g )

#include <MRViewer/MRRibbonSchema.h>

Value:
static MR::RibbonMenuItemCall<pluginType> ribbonMenuItemCall##func##pluginType##_( f, g );
Definition MRRibbonSchema.h:166

calls f(const std::shared_ptr<plugin> &) on module loading, and calls g(const std::shared_ptr<plugin> &) on module unloading

◆ MR_WRITER

#define MR_WRITER ( obj)

#include <MRMesh/MRWriter.h>

Value:
MR::Writer _writer( obj );
the purpose of this struct is to invalidate object cache in its destructor
Definition MRWriter.h:12

◆ MR_X [1/10]

#define MR_X ( E)

#include <MRMesh/MRUnitInfo.h>

Value:
|| std::same_as<T, E>

ignore for bindings to prevent GCC14 error: undefined symbol: ZN2MR11getUnitInfoITkNS_8UnitEnumENS_8TimeUnitEEERKNS_8UnitInfoET

◆ MR_X [2/10]

#define MR_X ( E)

#include <MRMesh/MRUnitInfo.h>

Value:
template <> [[nodiscard]] MRMESH_API MR_BIND_IGNORE const UnitInfo& getUnitInfo( E unit );
#define MRMESH_API
Definition MRMeshFwd.h:80

ignore for bindings to prevent GCC14 error: undefined symbol: ZN2MR11getUnitInfoITkNS_8UnitEnumENS_8TimeUnitEEERKNS_8UnitInfoET

◆ MR_X [3/10]

#define MR_X ( E)

#include <MRViewer/MRUnits.h>

Value:
extern template MRVIEWER_API const UnitToStringParams<E>& getDefaultUnitParams();

◆ MR_X [4/10]

#define MR_X ( E)

#include <MRViewer/MRUnits.h>

Value:
extern template MRVIEWER_API void setDefaultUnitParams( const UnitToStringParams<E>& newParams );

◆ MR_X [5/10]

#define MR_X ( E)

#include <MRViewer/MRUnits.h>

Value:
, UnitToStringParams<E>

◆ MR_X [6/10]

#define MR_X ( E)

#include <MRViewer/MRUnits.h>

Value:
#define DETAIL_MR_UNIT_VALUE_TYPES(X,...)
Definition MRUnitInfo.h:117
#define MR_Y(T, E)
Definition MRUnits.h:136

◆ MR_X [7/10]

#define MR_X ( E)

◆ MR_X [8/10]

#define MR_X ( T,
unused )

#include <MRViewer/MRUnits.h>

Value:
extern template MRVIEWER_API std::string valueToString( T value, const VarUnitToStringParams& params );

◆ MR_X [9/10]

#define MR_X ( T,
unused )

#include <MRViewer/MRUnits.h>

Value:
extern template MRVIEWER_API int guessPrecision( T value ); \
extern template MRVIEWER_API int guessPrecision( T min, T max );

◆ MR_X [10/10]

#define MR_X ( T,
unused )

#include <MRViewer/MRUnits.h>

Value:
extern template MRVIEWER_API std::string valueToImGuiFormatString( T value, const VarUnitToStringParams& params );

◆ MR_Y [1/2]

#define MR_Y ( T,
E )

#include <MRViewer/MRUnits.h>

Value:
extern template MRVIEWER_API std::string valueToString<E, T>( T value, const UnitToStringParams<E>& params );

◆ MR_Y [2/2]

#define MR_Y ( T,
E )

#include <MRViewer/MRUnits.h>

Value:
extern template MRVIEWER_API std::string valueToImGuiFormatString( T value, const UnitToStringParams<E>& params );

◆ SCOPED_HISTORY

#define SCOPED_HISTORY ( name)

#include <MRViewer/MRAppendHistory.h>

Value:
MR::ScopeHistory __startScopedHistoryMode(name)
The purpose of this class is to combine all actions appended to global history store in one big actio...
Definition MRAppendHistory.h:76

Typedef Documentation

◆ AffineXf3

template<typename T>
using MR::AffineXf3 = AffineXf<Vector3<T>>

#include <MRMesh/MRMeshFwd.h>

◆ AllowCallBack

using MR::PickPointManager::AllowCallBack = std::function<bool( const std::shared_ptr<VisualObject>& obj, int index )>

◆ Ball1

template<typename T>
using MR::Ball1 = Ball<T>

#include <MRMesh/MRMeshFwd.h>

◆ Ball2

template<typename T>
using MR::Ball2 = Ball<Vector2<T>>

#include <MRMesh/MRMeshFwd.h>

◆ Ball3

template<typename T>
using MR::Ball3 = Ball<Vector3<T>>

#include <MRMesh/MRMeshFwd.h>

◆ BaseAction2f

◆ BaseAction3f

◆ BaseFitParams

◆ BasePickResults

◆ BaseType [1/6]

template<typename T>
using MR::VectorTraits< T >::BaseType = T

The base template handles scalars (or just non-vectors).

◆ BaseType [2/6]

using MR::VectorTraits< ImVec2 >::BaseType = float

◆ BaseType [3/6]

using MR::VectorTraits< ImVec4 >::BaseType = float

◆ BaseType [4/6]

template<typename T>
using MR::VectorTraits< Vector2< T > >::BaseType = T

◆ BaseType [5/6]

template<typename T>
using MR::VectorTraits< Vector3< T > >::BaseType = T

◆ BaseType [6/6]

template<typename T>
using MR::VectorTraits< Vector4< T > >::BaseType = T

◆ BestFitPolynomiald

template<size_t degree>
using MR::BestFitPolynomiald = BestFitPolynomial<double, degree>

◆ BestFitPolynomialf

template<size_t degree>
using MR::BestFitPolynomialf = BestFitPolynomial<float, degree>

◆ BoundarySelectionWidgetCallBack

using MR::BoundarySelectionWidget::BoundarySelectionWidgetCallBack = std::function<void( std::shared_ptr<const MR::ObjectMeshHolder> )>

◆ BoundarySelectionWidgetChecker

using MR::BoundarySelectionWidget::BoundarySelectionWidgetChecker = std::function<bool( std::shared_ptr<const MR::ObjectMeshHolder> )>

◆ Box1

template<typename T>
using MR::Box1 = Box<T>

#include <MRMesh/MRMeshFwd.h>

◆ Box2

template<typename T>
using MR::Box2 = Box<Vector2<T>>

#include <MRMesh/MRMeshFwd.h>

◆ Box3

template<typename T>
using MR::Box3 = Box<Vector3<T>>

#include <MRMesh/MRMeshFwd.h>

◆ BoxT [1/2]

template<typename T>
using MR::AABBTreeBase< T >::BoxT = typename T::BoxT

◆ BoxT [2/2]

using MR::ObjTreeTraits::BoxT = Box3f

◆ Category

◆ ChangeBaseType [1/6]

template<typename T>
template<typename U>
using MR::VectorTraits< T >::ChangeBaseType = U

Changes the vector element type. For scalars, replaces the whole type.

◆ ChangeBaseType [2/6]

template<std::same_as< float >>
using MR::VectorTraits< ImVec2 >::ChangeBaseType = ImVec2

Can't change the element type...

◆ ChangeBaseType [3/6]

template<std::same_as< float >>
using MR::VectorTraits< ImVec4 >::ChangeBaseType = ImVec4

Can't change the element type...

◆ ChangeBaseType [4/6]

template<typename T>
template<typename U>
using MR::VectorTraits< Vector2< T > >::ChangeBaseType = Vector2<U>

◆ ChangeBaseType [5/6]

template<typename T>
template<typename U>
using MR::VectorTraits< Vector3< T > >::ChangeBaseType = Vector3<U>

◆ ChangeBaseType [6/6]

template<typename T>
template<typename U>
using MR::VectorTraits< Vector4< T > >::ChangeBaseType = Vector4<U>

◆ ChangedSignal

using MR::ObjectPointsHolder::ChangedSignal = Signal<void( uint32_t mask )>

signal about points or normals changing, triggered in setDirtyFlag

◆ ChangeObjectCallBack

using MR::PickPointManager::ChangeObjectCallBack = std::function<bool( const std::shared_ptr<VisualObject>& obj )>

◆ CharPressedSignal

using MR::ViewerSignals::CharPressedSignal = boost::signals2::signal<bool( unsigned unicodeKey, int modifier ), SignalStopHandler>

Keyboard event.

◆ ColorMap

template<typename Tag>
using MR::ColorMapAggregator< Tag >::ColorMap = Vector<Color, Id<Tag>>

◆ Command

using MR::AsyncRequest::Command = std::function<void()>

◆ CommandFunc

using MR::CommandLoop::CommandFunc = std::function<void()>

◆ const_iterator [1/2]

template<typename V, typename I>
using MR::Buffer< V, I >::const_iterator = const T*

◆ const_iterator [2/2]

template<typename T, typename I>
using MR::Vector< T, I >::const_iterator = typename std::vector<T>::const_iterator

◆ const_reference [1/2]

template<typename V, typename I>
using MR::Buffer< V, I >::const_reference = const T&

◆ const_reference [2/2]

template<typename T, typename I>
using MR::Vector< T, I >::const_reference = typename std::vector<T>::const_reference

◆ ConstObjAndPick

using MR::ConstObjAndPick = std::pair<std::shared_ptr<const MR::VisualObject>, MR::PointOnObject>

◆ Container

template<typename T, typename P = std::less<T>>
using MR::PriorityQueue< T, P >::Container = std::vector<T>

◆ ContinuousContour

◆ ContinuousContours

◆ Contour2

template<typename T>
using MR::Contour2 = Contour<Vector2<T>>

#include <MRMesh/MRMeshFwd.h>

◆ Contour2d

using MR::Contour2d = Contour2<double>

#include <MRMesh/MRMeshFwd.h>

◆ Contour2f

using MR::Contour2f = Contour2<float>

#include <MRMesh/MRMeshFwd.h>

◆ Contour3

template<typename T>
using MR::Contour3 = Contour<Vector3<T>>

#include <MRMesh/MRMeshFwd.h>

◆ Contour3d

using MR::Contour3d = Contour3<double>

#include <MRMesh/MRMeshFwd.h>

◆ Contour3f

using MR::Contour3f = Contour3<float>

#include <MRMesh/MRMeshFwd.h>

◆ ContourIdMap

◆ Contours

template<typename V>
using MR::Contours = std::vector<Contour<V>>

#include <MRMesh/MRMeshFwd.h>

◆ Contours2

template<typename T>
using MR::Contours2 = Contours<Vector2<T>>

#include <MRMesh/MRMeshFwd.h>

◆ Contours2d

using MR::Contours2d = Contours2<double>

#include <MRMesh/MRMeshFwd.h>

◆ Contours2f

using MR::Contours2f = Contours2<float>

#include <MRMesh/MRMeshFwd.h>

◆ Contours3

template<typename T>
using MR::Contours3 = Contours<Vector3<T>>

#include <MRMesh/MRMeshFwd.h>

◆ Contours3d

using MR::Contours3d = Contours3<double>

#include <MRMesh/MRMeshFwd.h>

◆ Contours3f

using MR::Contours3f = Contours3<float>

#include <MRMesh/MRMeshFwd.h>

◆ ContoursIdMap

◆ ContoursVariableOffset

using MR::ContoursVariableOffset = std::function<float( int, int )>

◆ ConvertToFloatVector

using MR::ConvertToFloatVector = std::function<Vector3f( const Vector3i& )>

#include <MRMesh/MRPrecisePredicates3.h>

int-to-float coordinate converter

◆ ConvertToFloatVector2

using MR::ConvertToFloatVector2 = std::function<Vector2f( const Vector2i& )>

#include <MRMesh/MRPrecisePredicates2.h>

int-to-float coordinate converter

◆ ConvertToIntVector

using MR::ConvertToIntVector = std::function<Vector3i( const Vector3f& )>

#include <MRMesh/MRPrecisePredicates3.h>

float-to-int coordinate converter

◆ ConvertToIntVector2

using MR::ConvertToIntVector2 = std::function<Vector2i( const Vector2f& )>

#include <MRMesh/MRPrecisePredicates2.h>

float-to-int coordinate converter

◆ CubicBezierCurve2

template<typename T>
using MR::CubicBezierCurve2 = CubicBezierCurve<Vector2<T>>

#include <MRMesh/MRMeshFwd.h>

◆ CubicBezierCurve3

template<typename T>
using MR::CubicBezierCurve3 = CubicBezierCurve<Vector3<T>>

#include <MRMesh/MRMeshFwd.h>

◆ CudaComputeToolDistanceConstructor

Returns specific implementation of IComputeToolDistance interface that computes on GPU.

◆ CudaFreeMemoryFunc

using MR::CudaAccessor::CudaFreeMemoryFunc = std::function<size_t()>

Returns amount of free memory on GPU.

◆ CudaFwnConstructor

using MR::CudaAccessor::CudaFwnConstructor = std::function<std::unique_ptr<IFastWindingNumber>( const Mesh& )>

Returns specific implementation of IFastWindingNumber interface that computes windings on GPU.

◆ CudaMeshProjectorConstructor

Returns specific implementation of IPointsToMeshProjector interface projects on GPU.

◆ CudaPointsProjectorConstructor

using MR::CudaAccessor::CudaPointsProjectorConstructor = std::function<std::unique_ptr<IPointsProjector>()>

Returns specific implementation of IPointsProjector interface projects on GPU.

◆ CudaPointsToDistanceVolumeByPartsCallback

using MR::CudaAccessor::CudaPointsToDistanceVolumeByPartsCallback = std::function<Expected<void>( const PointCloud& cloud, const PointsToDistanceVolumeParams& params, std::function<Expected<void> ( const SimpleVolumeMinMax& volume, int zOffset )> addPart, int layerOverlap )>

◆ CudaPointsToDistanceVolumeCallback

◆ CursorEntranceSignal

using MR::ViewerSignals::CursorEntranceSignal = boost::signals2::signal<void(bool)>

Cursor enters/leaves.

signal is called when mouse is being dragged with button down

◆ CurvePoints

using MR::CurvePoints = std::vector<CurvePoint>

#include <MRMesh/MRCurve.h>

curve given as a number of points on it samples at arbitrary steps

◆ DashPattern

using MR::DashPattern = Vector4<uint8_t>

#include <MRMesh/MRObjectLinesHolder.h>

specify dash pattern in pixels [0] - dash [1] - space [2] - dash [3] - space

◆ DecimatePolylineSettings2

◆ DecimatePolylineSettings3

◆ Dense

template<typename K, typename V>
using MR::MapOrHashMap< K, V >::Dense = Vector<V, K>

◆ difference_type [1/2]

using MR::ChunkIterator::difference_type = std::ptrdiff_t

◆ difference_type [2/2]

template<typename N>
using MR::RingIterator< N >::difference_type = std::ptrdiff_t

◆ DirectionVolume

◆ DisabledWarnings

◆ DragDropSignal

using MR::ViewerSignals::DragDropSignal = boost::signals2::signal<bool( const std::vector<std::filesystem::path>& paths ), SignalStopHandler>

◆ DrawSceneUiSignal

using MR::ImGuiMenu::DrawSceneUiSignal = boost::signals2::signal<void( ViewportId viewportId, UiRenderParams::UiTaskList& tasks )>

◆ DrawTabConfig

using MR::RibbonMenu::DrawTabConfig = std::vector<DrawGroupConfig>
protected

◆ DropItemsList

using MR::RibbonMenuItem::DropItemsList = std::vector<std::shared_ptr<RibbonMenuItem>>

◆ EdgeBitSet

using MR::Graph::EdgeBitSet = GraphEdgeBitSet

◆ EdgeHashMap

using MR::EdgeHashMap = HashMap<EdgeId, EdgeId>

#include <MRMesh/MRMeshFwd.h>

◆ EdgeHashSet

using MR::EdgeHashSet = HashSet<EdgeId>

#include <MRMesh/MRMeshFwd.h>

◆ EdgeId

using MR::Graph::EdgeId = GraphEdgeId

◆ EdgeLoop

using MR::EdgeLoop = std::vector<EdgeId>

#include <MRMesh/MRMeshFwd.h>

◆ EdgeLoops

using MR::EdgeLoops = std::vector<EdgeLoop>

#include <MRMesh/MRMeshFwd.h>

◆ EdgeMapOrHashMap

using MR::EdgeMapOrHashMap = MapOrHashMap<EdgeId, EdgeId>

#include <MRMesh/MRMeshFwd.h>

◆ EdgeMetric

using MR::EdgeMetric = std::function<float( EdgeId )>

#include <MRMesh/MRMeshFwd.h>

◆ EdgePair

using MR::EdgePair = std::pair<EdgeId, EdgeId>

#include <MRMesh/MRMeshFwd.h>

◆ EdgePath

using MR::EdgePath = std::vector<EdgeId>

#include <MRMesh/MRMeshFwd.h>

◆ EdgePathsBuilder

◆ EdgePredicate

using MR::EdgePredicate = std::function<bool( EdgeId )>

#include <MRMesh/MRMeshFwd.h>

◆ ElementBitSet

template<typename Tag>
using MR::ColorMapAggregator< Tag >::ElementBitSet = TaggedBitSet<Tag>

◆ EndsPerEdge

◆ Enum

typedef std::vector<const char*> MR::Config::Enum

Description of a enumeration as a map between [0...N) and N strings.

◆ Expected

template<class T, class E = std::string>
using MR::Expected = tl::expected<T, E>

#include <MRMesh/MRExpected.h>

◆ FaceHashMap

using MR::FaceHashMap = HashMap<FaceId, FaceId>

#include <MRMesh/MRMeshFwd.h>

◆ FaceHashSet

using MR::FaceHashSet = HashSet<FaceId>

#include <MRMesh/MRMeshFwd.h>

No canonical typedefs because phmap::... is not under our control.

◆ FaceMapOrHashMap

using MR::FaceMapOrHashMap = MapOrHashMap<FaceId, FaceId>

#include <MRMesh/MRMeshFwd.h>

◆ FaceMetric

using MR::FaceMetric = std::function<float( FaceId )>

#include <MRMesh/MRMeshFwd.h>

◆ FacePair

using MR::FacePair = std::pair<FaceId, FaceId>

#include <MRMesh/MRMeshFwd.h>

◆ FacePredicate

using MR::FacePredicate = std::function<bool( FaceId )>

#include <MRMesh/MRMeshFwd.h>

◆ FastInt128

using MR::FastInt128 = __int128_t

◆ FeaturesPropertyTypesVariant

using MR::FeaturesPropertyTypesVariant = std::variant<float, Vector3f>

◆ FileNamesStack

typedef std::vector< std::filesystem::path > MR::FileNamesStack = std::vector<std::filesystem::path>

◆ FilesLoadedCallback

using MR::FilesLoadedCallback = std::function<void( const std::vector<std::shared_ptr<Object>>& objs, const std::string& errors, const std::string& warnings )>

◆ FitBoxParams

◆ FitDataParams

◆ FitMode

◆ FolderCallback

using MR::FolderCallback = std::function<void( const std::filesystem::path& tempFolderName )>

#include <MRMesh/MRUniqueTemporaryFolder.h>

this callback will be called before compression on serialization and after decompression on deserialization

◆ FontAndSize

using MR::FontAndSize = std::pair<ImFont*, float>

◆ FontFilePaths

using MR::RibbonFontManager::FontFilePaths = std::array<std::filesystem::path, size_t( FontFile::Count )>

◆ FoundPointCallback

typedef std::function< void(VertId, const Vector3f &)> MR::FoundPointCallback = std::function<void( VertId, const Vector3f& )>

◆ FullState

◆ GcodeChangedSignal

using MR::ObjectGcode::GcodeChangedSignal = Signal<void( uint32_t mask )>

signal about gcode changing, triggered in setDirtyFlag

◆ GcodeSource

typedef std::vector< std::string > MR::GcodeSource = std::vector<std::string>

#include <MRMesh/MRMeshFwd.h>

◆ Getter

using MR::RibbonMenu::CustomContextMenuCheckbox::Getter = std::function<bool( std::shared_ptr<Object> object, ViewportId id )>

◆ GLfloat

typedef float MR::ViewportGL::GLfloat

◆ GLuint [1/4]

typedef unsigned int MR::AlphaSortGL::GLuint

◆ GLuint [2/4]

typedef unsigned int MR::GLStaticHolder::GLuint

◆ GLuint [3/4]

typedef unsigned int MR::RenderMeshObject::GLuint
protected

◆ GLuint [4/4]

typedef unsigned int MR::ViewportGL::GLuint

◆ GridByPartsFunc

using MR::IFastWindingNumberByParts::GridByPartsFunc = std::function<Expected<void> ( std::vector<float>&& data, const Vector3i& dims, int zOffset )>

callback that gets a block of resulting winding numbers

Parameters
data- block data
dims- block dimensions
zOffset- block offset in XY dimension

◆ GroupsItemsMap

◆ Hash

template<typename K, typename V>
using MR::MapOrHashMap< K, V >::Hash = HashMap<K, V>

◆ HashMap

template<typename K, typename V, typename Hash = phmap::priv::hash_default_hash<K>, typename Eq = phmap::priv::hash_default_eq<K>>
using MR::HashMap = phmap::flat_hash_map<K, V, Hash, Eq>

#include <MRMesh/MRMeshFwd.h>

◆ HistoryActionsVector

using MR::HistoryActionsVector = std::vector<std::shared_ptr<HistoryAction>>

◆ HistoryStackFilter

using MR::HistoryStackFilter = std::function<bool( const std::shared_ptr<HistoryAction>& )>

◆ HolesOnObject

using MR::BoundarySelectionWidget::HolesOnObject = std::vector<MR::EdgeId>

◆ HolesVertIds

◆ HoleVertIds

◆ ICPElementBitSet

using MR::ICPElementBitSet = TaggedBitSet<ICPElemtTag>

◆ ICPElementId

using MR::ICPElementId = Id<ICPElemtTag>

◆ ICPGroupProjector

using MR::ICPGroupProjector = std::function<void( const Vector3f& p, MeshOrPoints::ProjectionResult& res, ObjId& resId )>

◆ ICPLayer

using MR::ICPLayer = int

◆ ICPObjects

◆ ICPPairsGrid

◆ ImGuiTreeNodeFlags

◆ InputType

template<typename T>
using MR::ConeFittingFunctor< T >::InputType = Eigen::Matrix<T, Eigen::Dynamic, 1>

◆ Int64

using MR::Int64 = std::int64_t

#include <MRMesh/MRMeshFwd.h>

Must use our Int64 and Uint64 everywhere in the public API instead of long, long long, int64_t, uint64_t, etc. But size_t and ptrdiff_t are allowed as is. This is required to generate consistent C bindings on all platforms, and this is checked during binding generation.

Those standard typedefs are a mess across platforms. On Windows, they all expand to long long, because long is not wide enough. On Linux, they all expand to long, which again makes sense, because it's wide enough, and it's natural to use it instead of long long if it's wide enough. This difference alone causes issues, but what's worse is that on Mac, the typedefs use both long and long long, despite them having the same size (anything with digits in the name is long long, everything else is long, for some reason). The only way around that is to only use long or long long in the interface per platform, but not both. Then during binding generation, replace that type with int64_t, and complain if we got another one. This only makes sense on 64-bit platforms, but we only generate bindings on those. Since size_t and ptrdiff_t are so important, we allow those, and anything that expands to the same type. Sadly [u]int64_t doesn't on Mac, so we can't use it directly, and have to instead use our own typedefs defined below. The untypedefed long and long long can't be used either, for the same reasons (whether they match size_t depends on the platform, and we can't allow that).

◆ InterruptCloseSignal

using MR::ViewerSignals::InterruptCloseSignal = boost::signals2::signal<bool(), SignalStopHandler>

◆ InterruptFunc [1/2]

template<class TreeT, typename Transformer>
using MR::RangeProcessor< TreeT, Transformer >::InterruptFunc = std::function<bool( void )>

◆ InterruptFunc [2/2]

template<typename TreeT, typename Proc>
using MR::RangeProcessorSingle< TreeT, Proc >::InterruptFunc = std::function<bool( void )>

◆ InTreeAccessor [1/2]

template<class TreeT, typename Transformer>
using MR::RangeProcessor< TreeT, Transformer >::InTreeAccessor = typename openvdb::tree::ValueAccessor<const TreeT>

◆ InTreeAccessor [2/2]

template<typename TreeT>
using MR::ShiftTransformer< TreeT >::InTreeAccessor = typename openvdb::tree::ValueAccessor<const TreeT>

◆ IRenderObjectConstructorLambda

using MR::IRenderObjectConstructorLambda = std::function<std::unique_ptr<IRenderObject>( const VisualObject& )>

◆ IsoLine

◆ IsoLines

◆ IsoSurfaceChangedSignal

signal about Iso-surface changes (from updateIsoSurface)

◆ ItemMap

using MR::ItemMap = HashMap<std::string, MenuItemInfo>

◆ iterator [1/2]

template<typename V, typename I>
using MR::Buffer< V, I >::iterator = T*

◆ iterator [2/2]

template<typename T, typename I>
using MR::Vector< T, I >::iterator = typename std::vector<T>::iterator

◆ iterator_category [1/4]

using MR::ChunkIterator::iterator_category = std::input_iterator_tag

◆ iterator_category [2/4]

using MR::PolylineUndirectedEdgeIterator::iterator_category = std::forward_iterator_tag

◆ iterator_category [3/4]

template<typename N>
using MR::RingIterator< N >::iterator_category = std::forward_iterator_tag

◆ iterator_category [4/4]

using MR::UndirectedEdgeIterator::iterator_category = std::forward_iterator_tag

◆ JacobianType

template<typename T>
using MR::ConeFittingFunctor< T >::JacobianType = Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>

◆ KeySignal

using MR::ViewerSignals::KeySignal = boost::signals2::signal<bool( int key, int modifier ), SignalStopHandler>

◆ LaunchParams

◆ LeafBitSet

template<typename T>
using MR::AABBTreeBase< T >::LeafBitSet = TaggedBitSet<LeafTag>

◆ LeafBMap

template<typename T>
using MR::AABBTreeBase< T >::LeafBMap = BMap<LeafId, LeafId>

◆ LeafId [1/2]

template<typename T>
using MR::AABBTreeBase< T >::LeafId = typename T::LeafId

◆ LeafId [2/2]

◆ LeafIterT [1/3]

template<typename TreeT>
using MR::RangeCounter< TreeT >::LeafIterT = typename TreeT::LeafCIter

◆ LeafIterT [2/3]

template<class TreeT, typename Transformer>
using MR::RangeProcessor< TreeT, Transformer >::LeafIterT = typename TreeT::LeafCIter

◆ LeafIterT [3/3]

template<typename TreeT, typename Proc>
using MR::RangeProcessorSingle< TreeT, Proc >::LeafIterT = typename TreeT::LeafCIter

◆ LeafRange [1/2]

template<class TreeT, typename Transformer>
using MR::RangeProcessor< TreeT, Transformer >::LeafRange = typename openvdb::tree::IteratorRange<LeafIterT>

◆ LeafRange [2/2]

template<typename TreeT, typename Proc>
using MR::RangeProcessorSingle< TreeT, Proc >::LeafRange = typename openvdb::tree::IteratorRange<LeafIterT>

◆ LeafTag [1/2]

template<typename T>
using MR::AABBTreeBase< T >::LeafTag = typename T::LeafTag

◆ LeafTag [2/2]

◆ LeftRingIterator

◆ LimitedProjectorFunc

using MR::MeshOrPoints::LimitedProjectorFunc = std::function<bool( const Vector3f& p, ProjectionResult& res )>

◆ Line3

template<typename T>
using MR::Line3 = Line<Vector3<T>>

#include <MRMesh/MRMeshFwd.h>

◆ LinesChangedSignal

using MR::ObjectLinesHolder::LinesChangedSignal = Signal<void( uint32_t mask )>

signal about lines changing, triggered in setDirtyFlag

◆ LineSegm3

template<typename T>
using MR::LineSegm3 = LineSegm<Vector3<T>>

#include <MRMesh/MRMeshFwd.h>

◆ LoadedObject

◆ LoadedObjectLines

◆ LoadedObjectMesh

◆ LoadedObjectPoints

◆ LoadedObjectVoxels

◆ M

template<typename V>
using MR::AffineXf< V >::M = typename V::MatrixType

◆ MakeFloatingPoint

template<typename T>
using MR::detail::Units::MakeFloatingPoint = std::conditional_t<std::is_integral_v<typename VectorTraits<T>::BaseType>, typename VectorTraits<T>::template ChangeBaseType<float>, T>

#include <MRMesh/MRUnitInfo.h>

◆ MatrixType [1/2]

template<typename T>
using MR::Vector3< T >::MatrixType = Matrix3<T>

◆ MatrixType [2/2]

template<typename T>
using MR::Vector4< T >::MatrixType = Matrix4<T>

◆ MenuItemsList

typedef std::vector< std::string > MR::MenuItemsList = std::vector<std::string>

◆ MenuItemsListMigration

using MR::MenuItemsListMigration = std::function<void ( MenuItemsList& )>

◆ MenuItemsListMigrations

◆ MeshChangedSignal

using MR::ObjectMeshHolder::MeshChangedSignal = Signal<void( uint32_t mask )>

signal about mesh changing, triggered in setDirtyFlag

◆ MeshEdgePoint

◆ MeshTriPointsConnector

using MR::MeshTriPointsConnector = std::function<Expected<SurfacePath>( const MeshTriPoint& start, const MeshTriPoint& end, int startIndex, int endIndex )>

◆ MinMax

template<typename T>
using MR::MinMax = Box<T>

#include <MRMesh/MRMeshFwd.h>

◆ MinMaxd

using MR::MinMaxd = MinMax<double>

#include <MRMesh/MRMeshFwd.h>

◆ MinMaxf

using MR::MinMaxf = MinMax<float>

#include <MRMesh/MRMeshFwd.h>

◆ MinMaxi

using MR::MinMaxi = MinMax<int>

#include <MRMesh/MRMeshFwd.h>

◆ Mode

◆ MouseButton

◆ MouseMode

◆ MouseMoveSignal

using MR::ViewerSignals::MouseMoveSignal = boost::signals2::signal<bool( int x, int y ), SignalStopHandler>

◆ MouseScrollSignal

using MR::ViewerSignals::MouseScrollSignal = boost::signals2::signal<bool( float delta ), SignalStopHandler>

◆ MouseUpDownSignal

using MR::ViewerSignals::MouseUpDownSignal = boost::signals2::signal<bool( MouseButton btn, int modifier ), SignalStopHandler>

Mouse events.

◆ MR_BIND_IGNORE

typedef PositionedText MR::MR_BIND_IGNORE = std::array<Vector3f, 3>

◆ MultiListenerBase

template<typename ... Connectables>
using MR::StateListenerPlugin< Connectables >::MultiListenerBase = MultiListener<Connectables...>

◆ MultiObjsSamples

using MR::MultiObjsSamples = std::vector<ObjVertId>

◆ NameTagClickSignal

using MR::ImGuiMenu::NameTagClickSignal = boost::signals2::signal<bool( Object& object, NameTagSelectionMode mode ), StopOnTrueCombiner>

◆ Neighbours

using MR::Graph::Neighbours = std::vector<EdgeId>

◆ NeighboursPerVertex

◆ Node

template<typename T>
using MR::AABBTreeBase< T >::Node = AABBTreeNode<Traits>

◆ NodeVec

template<typename T>
using MR::AABBTreeBase< T >::NodeVec = Vector<Node, NodeId>

◆ NotificationTagMask

◆ Obj [1/15]

◆ Obj [2/15]

◆ Obj [3/15]

◆ Obj [4/15]

◆ Obj [5/15]

◆ Obj [6/15]

◆ Obj [7/15]

◆ Obj [8/15]

◆ Obj [9/15]

◆ Obj [10/15]

◆ Obj [11/15]

◆ Obj [12/15]

template<typename T>
using MR::ChangeVertsColorMapAction< T >::Obj = T

◆ Obj [13/15]

◆ Obj [14/15]

template<class HistoryActionType>
using MR::Historian< HistoryActionType >::Obj = typename HistoryActionType::Obj

◆ Obj [15/15]

◆ ObjAndPick

using MR::ObjAndPick = std::pair<std::shared_ptr<MR::VisualObject>, MR::PointOnObject>

◆ ObjectList

template<typename ObjectType>
using MR::SceneCache::ObjectList = std::vector<std::shared_ptr<ObjectType>>

◆ ObjectMakerFunc

using MR::ObjectMakerFunc = std::shared_ptr<Object>()

◆ ObjectPtr

using MR::ObjectPtr = std::shared_ptr<Object>

◆ ObjectsLoadedSignal

using MR::ViewerSignals::ObjectsLoadedSignal = boost::signals2::signal<void( const std::vector<std::shared_ptr<Object>>& objs, const std::string& errors, const std::string& warnings )>

Scene events.

signal is called after scene draw

◆ OffsetContoursVertMap

◆ OffsetContoursVertMaps

◆ OnButtonClick

using MR::RibbonNotification::OnButtonClick = std::function<void()>

Callback for notification if it is not null, a button will be drawn, and callback will be invoked on button click

◆ OnDirectionChangedCallback

using MR::DirectionWidget::OnDirectionChangedCallback = std::function<void( const Vector3f&, bool )>

This callback is invoked every time when the direction is changed by mouse.

◆ OnEdgeSplit

using MR::OnEdgeSplit = std::function<void( EdgeId e1, EdgeId e )>

#include <MRMesh/MRMeshFwd.h>

◆ OnPointInBallFound

using MR::OnPointInBallFound = std::function<Processing( const PointsProjectionResult & found, const Vector3f & foundXfPos, Ball3f & ball )>

#include <MRMesh/MRPointsInBall.h>

this callback is invoked on every point located within the ball, and allows changing the ball for search continuation

◆ OrgRingIterator

◆ OriginZCallback

using MR::OffsetContoursRestoreZParams::OriginZCallback = std::function<float( const Contours2f& offsetCont, const OffsetContourIndex& offsetIndex, const OffsetContoursOrigins& origingContourMapoing)>

if callback is set it is called to restore Z value please note that this callback may be called in parallel

◆ OutTreeAccessor [1/2]

template<class TreeT, typename Transformer>
using MR::RangeProcessor< TreeT, Transformer >::OutTreeAccessor = typename openvdb::tree::ValueAccessor<TreeT>

◆ OutTreeAccessor [2/2]

template<typename TreeT>
using MR::ShiftTransformer< TreeT >::OutTreeAccessor = typename openvdb::tree::ValueAccessor<TreeT>

◆ PairsPerLayer

◆ ParallelHashMap

template<typename K, typename V, typename Hash = phmap::priv::hash_default_hash<K>, typename Eq = phmap::priv::hash_default_eq<K>>
using MR::ParallelHashMap = phmap::parallel_flat_hash_map<K, V, Hash, Eq>

#include <MRMesh/MRMeshFwd.h>

◆ ParallelHashSet

template<typename T, typename Hash = phmap::priv::hash_default_hash<T>, typename Eq = phmap::priv::hash_default_eq<T>>
using MR::ParallelHashSet = phmap::parallel_flat_hash_set<T, Hash, Eq>

#include <MRMesh/MRMeshFwd.h>

◆ PathMeshEdgePointCallback

using MR::PathMeshEdgePointCallback = std::function<void( const MeshEdgePoint& mep )>

#include <MRMesh/MRContoursSeparation.h>

Callback for each MeshEdgePoint in path.

◆ PdfGeneralFont

using MR::PdfGeneralFont = std::variant<PdfBuildinFont, std::filesystem::path>

#include <MRIOExtras/MRPdf.h>

◆ PerObjectHoles

using MR::BoundarySelectionWidget::PerObjectHoles = std::unordered_map <std::shared_ptr<MR::ObjectMeshHolder>, HolesOnObject>

◆ PerObjectHolesPolylines

using MR::BoundarySelectionWidget::PerObjectHolesPolylines = std::unordered_map <std::shared_ptr<MR::ObjectMeshHolder>, std::vector<AncillaryLines>>

◆ PerObjectMeshChangedSignals

using MR::BoundarySelectionWidget::PerObjectMeshChangedSignals = std::unordered_map < std::shared_ptr<MR::ObjectMeshHolder>, boost::signals2::scoped_connection>

◆ PickedPoint

using MR::PickedPoint = std::variant<std::monostate, MeshTriPoint, EdgePoint, VertId>

#include <MRMesh/MRPointOnObject.h>

For long-term storage of picked points on an object, such as point and contour widgets, it is more convenient to use the local coordinates of the object rather than 3D coordinates, which can change depending on the xf of the object. — MeshTriPoint for ObjectMeshHolderEdgePoint for ObjectLinesHolder (polylines) — VertId for ObjectPointsHolder — std::monostate means not valid pick (pick in empty space).

◆ PickerPointCallBack

using MR::PickPointManager::PickerPointCallBack = std::function<void( std::shared_ptr<VisualObject> obj, int index )>

◆ PickRenderObjectPredicate

using MR::Viewport::PickRenderObjectPredicate = std::function<bool ( const VisualObject*, ViewportMask )>

Predicate to additionally filter objects that should be treated as pickable.

◆ PickResults

◆ PlaneSection

◆ PlaneSections

◆ PluginParent

template<typename ... Connectables>
using MR::StateListenerPlugin< Connectables >::PluginParent = StateListenerPlugin<Connectables...>

◆ pointer

◆ PointInAllSpaces

◆ Polynomiald

template<size_t degree>
using MR::Polynomiald = Polynomial<double, degree>

◆ Polynomialf

template<size_t degree>
using MR::Polynomialf = Polynomial<float, degree>

◆ PolynomialWrapperd

◆ PolynomialWrapperf

◆ Polynomialx

template<typename T>
using MR::Polynomialx

◆ PostCutCallback

using MR::MergeVolumePartSettings::PostCutCallback = std::function<void( Mesh& )>

callback to process the generated mesh after the side cutting, e.g. decimating

◆ PostFocusSignal

using MR::ViewerSignals::PostFocusSignal = boost::signals2::signal<void( bool )>

Window focus signal.

signal is called on touchpad zoom gesture end

◆ PostMergeCallback

using MR::MergeVolumePartSettings::PostMergeCallback = std::function<void( Mesh&, const PartMapping& )>

callback to process the destination mesh after merging, usually to map the generated mesh's faces/edges/vertices the second parameter is identical to the mapping field, except for one case: if the mapping is not initialized, only src2tgtEdges map will be provided (since it's used during processing)

◆ PostRescaleSignal

using MR::ViewerSignals::PostRescaleSignal = boost::signals2::signal<void( float xscale, float yscale )>

◆ PostResizeSignal

using MR::ViewerSignals::PostResizeSignal = boost::signals2::signal<void( int x, int y )>

◆ PreCollapseCallback

using MR::PreCollapseCallback = std::function<bool( EdgeId edgeToCollapse, const Vector3f& newEdgeOrgPos )>

#include <MRMesh/MRMeshFwd.h>

◆ PreCutCallback

using MR::MergeVolumePartSettings::PreCutCallback = std::function<void( Mesh& mesh, float leftCutPosition, float rightCutPosition )>

callback to process the generated mesh before the side cutting, e.g. fixing specific generation artifacts

◆ PreShutdownSignal

using MR::ViewerSignals::PreShutdownSignal = boost::signals2::signal<void()>

Before shutdown signal.

◆ ProgressHolder

template<typename TreeT, typename Proc>
using MR::RangeProcessorSingle< TreeT, Proc >::ProgressHolder = std::shared_ptr<RangeProgress>

◆ ProjectOnAllCallback

using MR::ProjectOnAllCallback = std::function<void( ObjId, MeshOrPoints::ProjectionResult )>

#include <MRMesh/MRMeshOrPoints.h>

to receive object id + projection result on it

◆ PythonRegisterFuncton

using MR::PythonExport::PythonRegisterFuncton = std::function<void( pybind11::module_& m )>

◆ QuadraticForm3

template<typename T>
using MR::QuadraticForm3 = QuadraticForm<Vector3<T>>

#include <MRMesh/MRMeshFwd.h>

◆ reference [1/3]

template<typename V, typename I>
using MR::Buffer< V, I >::reference = T&

◆ reference [2/3]

◆ reference [3/3]

template<typename T, typename I>
using MR::Vector< T, I >::reference = typename std::vector<T>::reference

◆ RegularGridLatticePositioner

using MR::RegularGridLatticePositioner = std::function<Vector3f( size_t x, size_t y )>

#include <MRMesh/MRRegularGridMesh.h>

Lambda for getting lattice position.

◆ RegularGridLatticeValidator

using MR::RegularGridLatticeValidator = std::function<bool( size_t x, size_t y )>

#include <MRMesh/MRRegularGridMesh.h>

Lambda for validating grid lattice.

◆ RegularGridMeshFaceValidator

#include <MRMesh/MRRegularGridMesh.h>

Initial value:
std::function<bool( size_t x0, size_t y0, size_t x1, size_t y1, size_t x2, size_t y2 )>

Lambda for validating mesh face.

◆ RenderDefaultUiObject

#include <MRViewer/MRRenderDefaultObjects.h>

Combines all the default UI IRenderObjects.

◆ RenderDimensionObject

◆ RenderSignal

using MR::ViewerSignals::RenderSignal = boost::signals2::signal<void()>

Render events.

signal is called when spacemouse key is pressed for some time

◆ RequirementsFunction

using MR::RequirementsFunction = std::function<std::string( const std::shared_ptr<RibbonMenuItem>& )>

◆ ResponseCallback

◆ result_type

◆ RotationAxesOrder

◆ RotationLimits

using MR::CNCMachineSettings::RotationLimits = std::optional<Vector2f>

◆ Scalar

template<typename T>
using MR::ConeFittingFunctor< T >::Scalar = T

◆ SelectFileSignal

using MR::FileDialogSignals::SelectFileSignal = Signal<void( const std::filesystem::path& path )>

◆ SelectFilesSignal

using MR::FileDialogSignals::SelectFilesSignal = Signal<void( const std::vector<std::filesystem::path>& )>

◆ SelectFolderSignal

◆ SelectFoldersSignal

◆ SelectionChangedSignal [1/2]

signal about face selection changing, triggered in selectFaces

◆ SelectionChangedSignal [2/2]

signal about points selection changing, triggered in selectPoints

◆ SeparationPointMap

◆ SeparationPointSet

using MR::SeparationPointSet = std::array<VertId, size_t( NeighborDir::Count )>

◆ Setter

using MR::RibbonMenu::CustomContextMenuCheckbox::Setter = std::function<void( std::shared_ptr<Object> object, ViewportId id, bool checked )>

◆ ShortcutKey

◆ ShortcutList

using MR::ShortcutManager::ShortcutList = std::vector<std::tuple<ShortcutKey, Category, std::string>>

◆ ShourtcutsBackMap

using MR::ShortcutManager::ShourtcutsBackMap = HashMap<std::string, int>
protected

◆ ShourtcutsMap

◆ SignalStopHandler

◆ SimpleLambda

using MR::LambdaRibbonItem::SimpleLambda = std::function<void()>

◆ size_type

template<typename T, typename P = std::less<T>>
using MR::PriorityQueue< T, P >::size_type = typename Container::size_type

◆ SizeType

template<typename I>
using MR::UnionFind< I >::SizeType = typename I::ValueType

the type that can hold the number of elements of the maximal set (e.g. int for FaceId and size_t for VoxelId)

◆ SM

template<typename V>
using MR::QuadraticForm< V >::SM = typename V::SymMatrixType

◆ SpaceMouseKeySignal

using MR::ViewerSignals::SpaceMouseKeySignal = boost::signals2::signal<bool( int ), SignalStopHandler>

◆ SpaceMouseMoveSignal

using MR::ViewerSignals::SpaceMouseMoveSignal = boost::signals2::signal<bool( const Vector3f& translate, const Vector3f& rotate ), SignalStopHandler>

SpaceMouseEvents.

signal is called when key is pressed for some time

◆ Sphere

#include <MRMesh/MRFeatures.h>

Doubles as a point when the radius is zero.


◆ Sphere3

template<typename T>
using MR::Sphere3 = Sphere<Vector3<T>>

#include <MRMesh/MRMeshFwd.h>

◆ SplitCaptionInfo

using MR::SplitCaptionInfo = std::vector<std::pair<size_t, float>>

#include <MRViewer/MRRibbonSchema.h>

needed for big buttons text aligning

◆ StatePlugin

◆ SurfaceContour

using MR::PickPointManager::SurfaceContour = std::vector<std::shared_ptr<SurfacePointWidget>>

◆ SurfaceContours

using MR::PickPointManager::SurfaceContours = std::unordered_map <std::shared_ptr<VisualObject>, SurfaceContour>

◆ SurfacePath

using MR::SurfacePath = std::vector<MeshEdgePoint>

#include <MRMesh/MRMeshFwd.h>

◆ SurfacePaths

using MR::SurfacePaths = std::vector<SurfacePath>

#include <MRMesh/MRMeshFwd.h>

◆ SymMatrixType [1/2]

template<typename T>
using MR::Vector3< T >::SymMatrixType = SymMatrix3<T>

◆ SymMatrixType [2/2]

template<typename T>
using MR::Vector4< T >::SymMatrixType = SymMatrix4<T>

◆ SystemFontPaths

using MR::SystemPath::SystemFontPaths = std::array<std::filesystem::path, size_t( SystemFontType::Count )>

◆ T [1/8]

template<typename V>
using MR::AffineXf< V >::T = typename V::ValueType

◆ T [2/8]

template<typename V>
using MR::Ball< V >::T = typename VTraits::BaseType

◆ T [3/8]

template<typename V, typename I>
using MR::Buffer< V, I >::T = typename NoCtor<V>::type

◆ T [4/8]

template<typename V>
using MR::CubicBezierCurve< V >::T = typename VTraits::BaseType

◆ T [5/8]

template<typename V>
using MR::Line< V >::T = typename V::ValueType

◆ T [6/8]

template<typename V>
using MR::LineSegm< V >::T = typename V::ValueType

◆ T [7/8]

template<typename V>
using MR::QuadraticForm< V >::T = typename V::ValueType

◆ T [8/8]

template<typename V>
using MR::Sphere< V >::T = typename V::ValueType

◆ TabChangedSignal

using MR::RibbonMenu::TabChangedSignal = boost::signals2::signal<void( int prevTabId, int newTabId )>

◆ TableCustomRule

using MR::Pdf::TableCustomRule = std::function<CellCustomParams( int row, int column, const std::string& cellValueText)>

◆ TabsGroupsMap

using MR::TabsGroupsMap = HashMap<std::string, std::vector<std::string>>

◆ TagAddedSignal

using MR::ObjectTagEventDispatcher::TagAddedSignal = Signal<void ( Object* obj, const std::string& tag )>

◆ TaggedBitSet

template<typename T>
using MR::TaggedBitSet = TypedBitSet<Id<T>>

#include <MRMesh/MRMeshFwd.h>

◆ TagRemovedSignal

using MR::ObjectTagEventDispatcher::TagRemovedSignal = Signal<void ( Object* obj, const std::string& tag )>

◆ TaskWithMainThreadPostProcessing

using MR::ProgressBar::TaskWithMainThreadPostProcessing = std::function< std::function<void()>() >

#include <MRViewer/MRProgressBar.h>

function that returns post-processing function to be called in main UI thread

◆ ThreeUVCoords

using MR::ThreeUVCoords = std::array<UVCoord, 3>

#include <MRMesh/MRMeshFwd.h>

three UV-coordinates describing texturing of a triangle

◆ ThreeVertIds

using MR::ThreeVertIds = std::array<VertId, 3>

#include <MRMesh/MRMeshFwd.h>

three vertex ids describing a triangle with the corners in vertices given by their ids

◆ TileIterT [1/3]

template<typename TreeT>
using MR::RangeCounter< TreeT >::TileIterT = typename TreeT::ValueAllCIter

◆ TileIterT [2/3]

template<class TreeT, typename Transformer>
using MR::RangeProcessor< TreeT, Transformer >::TileIterT = typename TreeT::ValueAllCIter

◆ TileIterT [3/3]

template<typename TreeT, typename Proc>
using MR::RangeProcessorSingle< TreeT, Proc >::TileIterT = typename TreeT::ValueAllCIter

◆ TileRange [1/2]

template<class TreeT, typename Transformer>
using MR::RangeProcessor< TreeT, Transformer >::TileRange = typename openvdb::tree::IteratorRange<TileIterT>

◆ TileRange [2/2]

template<typename TreeT, typename Proc>
using MR::RangeProcessorSingle< TreeT, Proc >::TileRange = typename openvdb::tree::IteratorRange<TileIterT>

◆ Time

using MR::Time = std::chrono::time_point<std::chrono::system_clock>

◆ TouchpadGestureBeginSignal

using MR::ViewerSignals::TouchpadGestureBeginSignal = boost::signals2::signal<bool(), SignalStopHandler>

Touchpad gesture events.

signal is called when touch stops

◆ TouchpadGestureEndSignal

using MR::ViewerSignals::TouchpadGestureEndSignal = boost::signals2::signal<bool(), SignalStopHandler>

◆ TouchpadRotateGestureUpdateSignal

using MR::ViewerSignals::TouchpadRotateGestureUpdateSignal = boost::signals2::signal<bool( float angle ), SignalStopHandler>

◆ TouchpadSwipeGestureUpdateSignal

using MR::ViewerSignals::TouchpadSwipeGestureUpdateSignal = boost::signals2::signal<bool( float deltaX, float deltaY, bool kinetic ), SignalStopHandler>

◆ TouchpadZoomGestureUpdateSignal

using MR::ViewerSignals::TouchpadZoomGestureUpdateSignal = boost::signals2::signal<bool( float scale, bool kinetic ), SignalStopHandler>

◆ TouchSignal

using MR::ViewerSignals::TouchSignal = boost::signals2::signal<bool(int,int,int), SignalStopHandler>

Touch signals.

signal is called before close window (return true will prevent closing)

◆ Traits

template<typename T>
using MR::AABBTreeBase< T >::Traits = T

◆ TransformModesValidator

using MR::TransformModesValidator = std::function<ControlBit( const Vector3f& center, const AffineXf3f& xf, ViewportId )>

#include <MRViewer/MRObjectTransformWidget.h>

This lambda is called in each frame, and returns transform mode mask for this frame in given viewport if not set, full mask is return

◆ TreeAccessor [1/2]

template<typename TreeT>
using MR::RangeCounter< TreeT >::TreeAccessor = openvdb::tree::ValueAccessor<const TreeT>

◆ TreeAccessor [2/2]

template<typename TreeT, typename Proc>
using MR::RangeProcessorSingle< TreeT, Proc >::TreeAccessor = typename openvdb::tree::ValueAccessor<const TreeT>

◆ Triangle3d

using MR::Triangle3d = Triangle3<double>

#include <MRMesh/MRMeshFwd.h>

◆ Triangle3f

using MR::Triangle3f = Triangle3<float>

#include <MRMesh/MRMeshFwd.h>

◆ Triangle3i

using MR::Triangle3i = Triangle3<int>

#include <MRMesh/MRMeshFwd.h>

◆ TrianglesRepetitions

using MR::TrianglesRepetitions = std::array<int, 4>

#include <MRMesh/MRLocalTriangulations.h>

TrianglesRepetitions[0] contains the number of triangles that appear in different local triangulations with opposite orientations TrianglesRepetitions[1] contains the number of unoriented triangles that appear in one local triangulation only TrianglesRepetitions[2] contains the number of unoriented triangles that appear in exactly two local triangulations TrianglesRepetitions[3] contains the number of unoriented triangles that appear in three local triangulations

◆ TriTriDistanceParamsd

◆ TriTriDistanceParamsf

◆ TriTriDistanceResultd

◆ TriTriDistanceResultf

◆ TwoLineSegmClosestPointsd

◆ TwoLineSegmClosestPointsf

◆ TwoVertIds

using MR::TwoVertIds = std::array<VertId, 2>

#include <MRMesh/MRMeshFwd.h>

two vertex ids describing an edge with the ends in vertices given by their ids

◆ type [1/9]

template<Trivial T>
using MR::NoCtor< T >::type = T

◆ type [2/9]

template<Trivial T>
using MR::NoCtor< T >::type = NoDefInit<T>

◆ type [3/9]

◆ type [4/9]

◆ type [5/9]

◆ type [6/9]

◆ type [7/9]

◆ type [8/9]

◆ type [9/9]

◆ Uint64

using MR::Uint64 = std::uint64_t

#include <MRMesh/MRMeshFwd.h>

◆ UiTaskList

using MR::UiRenderParams::UiTaskList = std::vector<std::shared_ptr<BasicUiRenderTask>>

◆ UndercutMetric

using MR::FixUndercuts::UndercutMetric = std::function<double( const FaceBitSet&, const FindParams& params )>

#include <MRVoxels/MRFixUndercuts.h>

Input - undercut faces, insertion direction Output - metric value

◆ UndirectedEdgeHashMap

using MR::UndirectedEdgeHashMap = HashMap<UndirectedEdgeId, UndirectedEdgeId>

#include <MRMesh/MRMeshFwd.h>

◆ UndirectedEdgeMapOrHashMap

using MR::UndirectedEdgeMapOrHashMap = MapOrHashMap<UndirectedEdgeId, UndirectedEdgeId>

#include <MRMesh/MRMeshFwd.h>

◆ UndirectedEdgeMetric

using MR::UndirectedEdgeMetric = std::function<float( UndirectedEdgeId )>

#include <MRMesh/MRMeshFwd.h>

◆ UndirectedEdgePair

using MR::UndirectedEdgePair = std::pair<UndirectedEdgeId, UndirectedEdgeId>

#include <MRMesh/MRMeshFwd.h>

◆ UndirectedEdgePredicate

using MR::UndirectedEdgePredicate = std::function<bool( UndirectedEdgeId )>

#include <MRMesh/MRMeshFwd.h>

◆ Unexpected

template<class E = std::string>
using MR::Unexpected = tl::unexpected<E>

#include <MRMesh/MRExpected.h>

◆ UpdateFunc

using MR::PluginUpdateOnChangeMeshPart::UpdateFunc = std::function<void()>

◆ UVCoord

using MR::UVCoord = Vector2f

#include <MRMesh/MRMeshFwd.h>

Coordinates on texture

Parameters
x,yshould be in range [0..1], otherwise result depends on wrap type of texture (no need to clamp it, it is done on GPU if wrap type is "Clamp" )

◆ V [1/2]

template<typename T>
using MR::RigidScaleXf3< T >::V = Vector3<T>

◆ V [2/2]

template<typename T>
using MR::RigidXf3< T >::V = Vector3<T>

◆ Value

using MR::Pdf::Cell::Value = std::variant<int, float, bool, std::string, Empty>

◆ value_type [1/6]

◆ value_type [2/6]

◆ value_type [3/6]

template<typename T, typename P = std::less<T>>
using MR::PriorityQueue< T, P >::value_type = T

◆ value_type [4/6]

template<typename N>
using MR::RingIterator< N >::value_type = EdgeId

◆ value_type [5/6]

using MR::UndirectedEdgeIterator::value_type = UndirectedEdgeId

◆ value_type [6/6]

template<typename T, typename I>
using MR::Vector< T, I >::value_type = typename std::vector<T>::value_type

◆ ValueT [1/4]

template<typename TreeT>
using MR::RangeCounter< TreeT >::ValueT = typename TreeT::ValueType

◆ ValueT [2/4]

template<class TreeT, typename Transformer>
using MR::RangeProcessor< TreeT, Transformer >::ValueT = typename TreeT::ValueType

◆ ValueT [3/4]

template<typename TreeT, typename Proc>
using MR::RangeProcessorSingle< TreeT, Proc >::ValueT = typename TreeT::ValueType

◆ ValueT [4/4]

template<typename TreeT>
using MR::ShiftTransformer< TreeT >::ValueT = typename TreeT::ValueType

◆ ValueType [1/23]

template<typename T>
using MR::ConeFittingFunctor< T >::ValueType = Eigen::Matrix<T, Eigen::Dynamic, 1>

◆ ValueType [2/23]

template<typename T>
using MR::Id< T >::ValueType = int

◆ ValueType [3/23]

using MR::Id< EdgeTag >::ValueType = int

◆ ValueType [4/23]

using MR::Id< VoxelTag >::ValueType = size_t

◆ ValueType [5/23]

template<typename T>
using MR::Matrix2< T >::ValueType = T

◆ ValueType [6/23]

template<typename T>
using MR::Matrix3< T >::ValueType = T

◆ ValueType [7/23]

template<typename T>
using MR::Matrix4< T >::ValueType = T

◆ ValueType [8/23]

template<typename T>
using MR::SymMatrix2< T >::ValueType = T

◆ ValueType [9/23]

template<typename T>
using MR::SymMatrix3< T >::ValueType = T

◆ ValueType [10/23]

template<typename T>
using MR::SymMatrix4< T >::ValueType = T

◆ ValueType [11/23]

template<typename T>
using MR::Vector3< T >::ValueType = T

◆ ValueType [12/23]

template<typename T>
using MR::Vector4< T >::ValueType = T

◆ ValueType [13/23]

template<typename T>
using MR::VoxelsVolume< T >::ValueType = typename VoxelTraits<T>::ValueType

◆ ValueType [14/23]

using MR::VoxelsVolumeAccessor< VdbVolume >::ValueType = typename VolumeType::ValueType

◆ ValueType [15/23]

template<typename T>
using MR::VoxelsVolumeAccessor< VoxelsVolume< Vector< T, VoxelId > > >::ValueType = typename VolumeType::ValueType

◆ ValueType [16/23]

template<typename T>
using MR::VoxelsVolumeAccessor< VoxelsVolume< VoxelValueGetter< T > > >::ValueType = typename VolumeType::ValueType

◆ ValueType [17/23]

template<typename T>
using MR::VoxelsVolumeAccessor< VoxelsVolumeMinMax< Vector< T, VoxelId > > >::ValueType = typename VolumeType::ValueType

◆ ValueType [18/23]

template<typename V>
using MR::VoxelsVolumeCachingAccessor< V >::ValueType = typename V::ValueType

◆ ValueType [19/23]

template<typename Accessor>
using MR::VoxelsVolumeInterpolatedAccessor< Accessor >::ValueType = typename Accessor::ValueType

◆ ValueType [20/23]

using MR::VoxelTraits< FloatGrid >::ValueType = float

◆ ValueType [21/23]

template<typename T>
using MR::VoxelTraits< Vector< T, VoxelId > >::ValueType = T

◆ ValueType [22/23]

using MR::VoxelTraits< VoxelBitSet >::ValueType = bool

◆ ValueType [23/23]

template<typename T>
using MR::VoxelTraits< VoxelValueGetter< T > >::ValueType = T

◆ Var

◆ Variant

◆ VarUnitToStringParams

#include <MRViewer/MRUnits.h>

Initial value:
std::variant<
>

The std::variant of UnitToStringParams<E> for all known Es (unit kinds).

◆ VdbVolumes

using MR::VdbVolumes = std::vector<VdbVolume>

◆ VectorType [1/3]

template<typename T>
using MR::Matrix2< T >::VectorType = Vector2<T>

◆ VectorType [2/3]

template<typename T>
using MR::Matrix3< T >::VectorType = Vector3<T>

◆ VectorType [3/3]

template<typename T>
using MR::Matrix4< T >::VectorType = Vector4<T>

◆ VertBitSet

using MR::Graph::VertBitSet = GraphVertBitSet

◆ VertHashMap

using MR::VertHashMap = HashMap<VertId, VertId>

#include <MRMesh/MRMeshFwd.h>

◆ VertHashSet

using MR::VertHashSet = HashSet<VertId>

#include <MRMesh/MRMeshFwd.h>

◆ VertId

using MR::Graph::VertId = GraphVertId

◆ VertMapOrHashMap

using MR::VertMapOrHashMap = MapOrHashMap<VertId, VertId>

#include <MRMesh/MRMeshFwd.h>

◆ VertMetric

using MR::VertMetric = std::function<float( VertId )>

#include <MRMesh/MRMeshFwd.h>

◆ VertPair

using MR::VertPair = std::pair<VertId, VertId>

#include <MRMesh/MRMeshFwd.h>

◆ VertPathInfoMap

#include <MRMesh/MREdgePathsBuilder.h>

ParallelHashMap here was significantly slower (especially in debug version of tunnel detection), probably because of more allocations

◆ ViewerEventCallback

using MR::ViewerEventCallback = std::function<void()>

◆ ViewportRectangle [1/2]

◆ ViewportRectangle [2/2]

using MR::ViewportRectangle = Box2f

#include <MRViewer/MRViewerFwd.h>

Viewport size.

◆ VolumePartBuilder

template<typename Volume>
using MR::VolumePartBuilder = std::function<Expected<Volume> ( int begin, int end, std::optional<Vector3i>& offset )>

#include <MRVoxels/MRVoxelsConversionsByParts.h>

functor returning a voxel volume part within the specified range, or an error string on failure the offset parameter is also required for SimpleVolume parts

◆ VolumeType [1/6]

using MR::VoxelsVolumeAccessor< VdbVolume >::VolumeType = VdbVolume

◆ VolumeType [2/6]

template<typename T>
using MR::VoxelsVolumeAccessor< VoxelsVolume< Vector< T, VoxelId > > >::VolumeType = VoxelsVolume<Vector<T,VoxelId>>

◆ VolumeType [3/6]

template<typename T>
using MR::VoxelsVolumeAccessor< VoxelsVolume< VoxelValueGetter< T > > >::VolumeType = VoxelsVolume<VoxelValueGetter<T>>

◆ VolumeType [4/6]

template<typename T>
using MR::VoxelsVolumeAccessor< VoxelsVolumeMinMax< Vector< T, VoxelId > > >::VolumeType = VoxelsVolumeMinMax<Vector<T,VoxelId>>

◆ VolumeType [5/6]

template<typename V>
using MR::VoxelsVolumeCachingAccessor< V >::VolumeType = V

◆ VolumeType [6/6]

template<typename Accessor>
using MR::VoxelsVolumeInterpolatedAccessor< Accessor >::VolumeType = typename Accessor::VolumeType

◆ VoxelPointPositioner

using MR::VoxelPointPositioner = std::function<Vector3f( const Vector3f&, const Vector3f&, float, float, float )>

#include <MRVoxels/MRMarchingCubes.h>

Callback type for positioning marching cubes vertices args: position0, position1, value0, value1, iso

◆ VoxelsChangedSignal

triggered by changes to voxels data

◆ VoxelValueGetter

template<typename T>
using MR::VoxelValueGetter = std::function<T ( const Vector3i& )>

◆ VTraits [1/2]

template<typename V>
using MR::Ball< V >::VTraits = VectorTraits<V>

◆ VTraits [2/2]

template<typename V>
using MR::CubicBezierCurve< V >::VTraits = VectorTraits<V>

◆ WebResponseCallback

using MR::WebResponseCallback = std::function<void( const Json::Value& response )>

◆ WholeEdgeHashMap

using MR::WholeEdgeHashMap = HashMap<UndirectedEdgeId, EdgeId>

#include <MRMesh/MRMeshFwd.h>

mapping of whole edges: map[e]->f, map[e.sym()]->f.sym(), where only map[e] for even edges is stored

◆ WholeEdgeMapOrHashMap

using MR::WholeEdgeMapOrHashMap = MapOrHashMap<UndirectedEdgeId, EdgeId>

#include <MRMesh/MRMeshFwd.h>

mapping of whole edges: map[e]->f, map[e.sym()]->f.sym(), where only map[e] for even edges is stored

Enumeration Type Documentation

◆ AggregateMode

template<typename Tag>
enum class MR::ColorMapAggregator::AggregateMode
strong

color map aggregating mode

Enumerator
Overlay 
Blending 

result element color is element color of more priority color map (or default color, if there isn't color map for this element)

result element color is blending colors of all color map in this element and default color (https:/// en.wikipedia.org/wiki/Alpha_compositing)

◆ AlignmentHorizontal

enum class MR::Pdf::AlignmentHorizontal
strong
Enumerator
Left 
Center 
Right 

◆ AlignmentVertical

Enumerator
Top 
Center 
Bottom 

◆ AlignType

#include <MRSymbolMesh/MRSymbolMesh.h>

Enumerator
Left 
Center 
Right 

◆ AlphaType

type of alpha function on texture

Enumerator
Constant 
LinearIncreasing 
LinearDecreasing 

◆ AngleUnit

enum class MR::AngleUnit
strong

#include <MRMesh/MRUnitInfo.h>

Measurement units of angle.

Enumerator
radians 
degrees 
_count 

◆ ArcPlane

enum class MR::ArcPlane
strong

#include <MRVoxels/MRToolPath.h>

Enumerator
None 
XY 
XZ 
YZ 

◆ AreaUnit

enum class MR::AreaUnit
strong

#include <MRMesh/MRUnitInfo.h>

Measurement units for surface area.

Enumerator
microns2 
millimeters2 
centimeters2 
meters2 
inches2 
feet2 
_count 

◆ AvailableColor

Enumerator
White 
Colored 

◆ Axis

enum class MR::Axis
strong

#include <MRMesh/MRAxis.h>

Enumerator
Count 

◆ AxisTransformMode

Transform operation applying to object while dragging an axis. This parameter does not apply to active operation.

Enumerator
AxisTranslation 

object moves along an axis

AxisScaling 

object inflates or deflates along an axis depending on drag direction (away from center or toward center respectively)

UniformScaling 

object inflates or deflates along all axes depending on drag direction (away from center or toward center respectively)

◆ BoolType

enum class MR::SceneSettings::BoolType
strong
Enumerator
UseDefaultScenePropertiesOnDeserialization 

on deserialization replace object properties with default values from SceneSettings and SceneColors

Count 

total count

◆ BypassDirection

enum class MR::BypassDirection
strong

#include <MRVoxels/MRToolPath.h>

Enumerator
Clockwise 
CounterClockwise 

◆ CachingMode

caching mode to reduce the number of accesses to voxel volume data on the first pass of the algorithm by consuming more memory on cache; note: the cache for the second pass of the algorithm (bit sets of invalid and lower-than-iso voxels are always allocated)

Enumerator
Automatic 

choose caching mode automatically depending on volume type (current defaults: Normal for FunctionVolume and VdbVolume, None for others)

None 

don't cache any data

Normal 

allocates 2 full slices per parallel thread

◆ CascadeMode

Enumerator
Sequential 
AABBTreeBased 

separates objects on groups based on their index in ICPObjects (good if all objects about the size of all objects together)

builds AABB tree based on each object bounding box and separates subtrees (good if each object much smaller then all objects together)

◆ ColoringType

enum class MR::ColoringType
strong

#include <MRMesh/MREnums.h>

Type of object coloring,

Note
that texture are applied over main coloring
Enumerator
SolidColor 

Use one color for whole object.

PrimitivesColorMap 

Use different color (taken from faces colormap) for each primitive.

FacesColorMap 

Use different color (taken from faces colormap) for each face (primitive for object mesh)

LinesColorMap 

Use different color (taken from faces colormap) for each line (primitive for object lines)

VertsColorMap 

Use different color (taken from verts colormap) for each vertex.

◆ ColorType

enum class MR::RibbonIcons::ColorType
strong
Enumerator
Colored 
White 

◆ ConeFitterType

enum class MR::ConeFitterType
strong

#include <MRMesh/MRConeApproximator.h>

Enumerator
ApproximationPCM 
HemisphereSearchFit 

approximation of cone axis by principal component method

SpecificAxisFit 

◆ ControlBit

enum class MR::ControlBit
strong

#include <MRViewer/MRObjectTransformWidget.h>

Enumerator
None 
RotX 
RotY 
RotZ 
RotMask 
MoveX 
MoveY 
MoveZ 
MoveMask 
FullMask 

◆ CoordType

enum class MR::ImGuiMenu::CoordType : int
strongprotected
Enumerator
Local 
World 

◆ CornerType

type of positive offset curve in corners

Enumerator
Round 

creates round corners (use minAnglePrecision)

Sharp 

creates sharp connected corner (use maxSharpAngle as limit)

◆ DegreesMode

enum class MR::DegreesMode
strong

#include <MRViewer/MRUnits.h>

This controls how the degrees are printed.

Enumerator
degrees 
degreesMinutes 

Fractional degrees.

degreesMinutesSeconds 

Integral degrees, fractional arcminutes.

_count 

Integral degrees and minutes, fractional arcseconds.

◆ DepthFunction

enum class MR::DepthFunction
strong

#include <MRMesh/MRIRenderObject.h>

Enumerator
Never 
Less 
Equal 
Greater 
LessOrEqual 
GreaterOrEqual 
NotEqual 
Always 
Default 

◆ DeviationCalculationMethod

Method for calculating mesh changes.

Enumerator
PointToPoint 

distance between the start and end points

PointToPlane 

distance between the initial plane (starting point and normal to it) and the end point

ExactDistance 

distance between the start and end meshes

◆ DicomStatusEnum

enum class MR::VoxelsLoad::DicomStatusEnum : int
strong

#include <MRVoxels/MRDicom.h>

Enumerator
Ok 
Invalid 

valid DICOM and we can open it

Unsupported 

not a valid DICOM

◆ Directory

enum class MR::SystemPath::Directory
strong

directory category

Enumerator
Resources 

resources (.json, .png)

Fonts 

fonts (.ttf, .otf)

Plugins 

plugins (.dll, .so, .dylib)

PythonModules 

Python modules (.pyd, .so, .dylib, .pyi)

Count 

◆ DistanceMode

Enumerator
euclidean 
euclideanWithSignedDeltasPerAxis 

Euclidean distance.

euclideanWithAbsoluteDeltasPerAxis 

Euclidean distance, but also display per-axis deltas with signs.

xAbsolute 

Euclidean distance, but also display per-axis deltas without signs. Absolute distance in one axis. This can still be made negative by setIsNegative(true). The point is that the real sign is ignored.

yAbsolute 
zAbsolute 

◆ EdgeType

enum class MR::GridSettings::EdgeType
strong
Enumerator
Horizontal 
Vertical 

(x,y) - (x+1,y)

DiagonalA 

(x,y) - (x,y+1)

DiagonalB 

(x,y) - (x+1,y+1)

(x+1,y) - (x,y+1) both DiagonalA and DiagonalB cannot return valid edges

◆ EdgeWeights

enum class MR::EdgeWeights
strong

#include <MRMesh/MREnums.h>

determines the weight of each edge in applications like Laplacian

Enumerator
Unit 

all edges have same weight=1

Cotan 

edge weight depends on local geometry and uses cotangent values

cotangent edge weights and equation weights inversely proportional to square root of local area CotanWithAreaEqWeight => use EdgeWeights::Cotan and VertexMass::NeiArea instead

◆ EndType

type of offsetting on ends of non-closed contours

Enumerator
Round 

creates round ends (use minAnglePrecision)

Cut 

creates sharp end (same as Round with minAnglePrecision < 180 deg)

◆ Event [1/2]

enum class MR::AsyncTimer::Event
strong

to call from waiter thread

Enumerator
AlertTimeReached 
Terminate 

◆ Event [2/2]

Enumerator
Finish 

all basins are full and water goes outside

BasinFull 

one basin just became full

Merge 

two basins just merged

◆ EventType

enum class MR::Viewer::EventType
strong

types of counted events

Enumerator
MouseDown 
MouseUp 
MouseMove 
MouseScroll 
KeyDown 
KeyUp 
KeyRepeat 
CharPressed 
Count 

◆ FeaturePropertyKind

enum class MR::FeaturePropertyKind
strong

#include <MRMesh/MRFeatureObject.h>

Classifies FeatureObjectSharedProperty, mostly for informational purposes.

Enumerator
position 
linearDimension 

Position, normally Vector3f.

direction 

Length or size.

angle 

Direction, normally Vector3f.

other 

Angle, normally float. Measure in radians.

◆ FeaturesObjectKind

enum class MR::FeaturesObjectKind
strong

#include <MRMesh/MRFeatureHelpers.h>

Which object type we're adding. Update ObjKindTraits if you change this enum.

Enumerator
Point 
Line 
Plane 
Circle 
Sphere 
Cylinder 
Cone 
_count 

◆ FilterType

enum class MR::FilterType : char
strong

#include <MRMesh/MREnums.h>

Enumerator
Linear 
Discrete 

◆ Finger

Enumerator
First 
Second 

◆ FitMode

enum class MR::FitMode
strong

#include <MRViewer/MRFitData.h>

Fit mode ( types of objects for which the fit is applied )

Enumerator
Visible 
SelectedPrimitives 

fit all visible objects

SelectedObjects 

fit only selected primitives

SelectableObjects 

fit only selected objects

CustomObjectsList 

fit only selectable objects (exclude ancillary objects)

fit only given objects (need additional objects list)

◆ FloatType

enum class MR::SceneSettings::FloatType
strong
Enumerator
FeaturePointsAlpha 
FeatureLinesAlpha 
FeatureMeshAlpha 
FeatureSubPointsAlpha 
FeatureSubLinesAlpha 
FeatureSubMeshAlpha 
FeatureLineWidth 

Line width of line features (line, circle, ...).

FeatureSubLineWidth 

Line width of line subfeatures (axes, base circles, ...).

FeaturePointSize 

Size of the point feature.

FeatureSubPointSize 

Size of point subfeatures (various centers).

AmbientCoefSelectedObj 

Ambient multiplication coefficient for ambientStrength for selected objects.

Count 

◆ FontFile

Unique fonts that are used for different FontTypes.

Enumerator
Regular 
RegularSC 
SemiBold 

Regular with Simple Chinese.

Monospace 
Icons 
Count 

◆ FontType

Font types used in current design.

Enumerator
Default 
Small 
Middle 
SemiBold 
Icons 
Big 
BigSemiBold 
Headline 
Monospace 
Count 

◆ ForceFill

This enum defines the MR::cutMesh behaviour in case of bad faces acure basicaly MR::cutMesh removes all faces which contours pass through, adds new edges to topology and fills all removed parts

Note
Bad faces here mean faces where contours have intersections and cannot be cut and filled in an good way
Enumerator
None 
Good 

< if bad faces occur does not fill anything

All 

< fills all faces except bad ones

< fills all faces with bad ones, but on bad faces triangulation can also be bad (may have self-intersections or tunnels)

◆ GeodesicPathApprox

enum class MR::GeodesicPathApprox : char
strong

#include <MRMesh/MREnums.h>

the algorithm to compute approximately geodesic path

Enumerator
DijkstraBiDir 

compute edge-only path by building it from start and end simultaneously

DijkstraAStar 

compute edge-only path using A*-search algorithm

FastMarching 

use Fast Marching algorithm

◆ GestureState

gesture state

Enumerator
Begin 

gesture has started

Update 

gesture data has updated

End 

gesture has ended

◆ GlobalBasisScaleMode

Enumerator
Auto 
Fixed 

uses current scene size

uses global basis object internal size (one can change it with globalBasisAxes->setXf( AffineXf3f::linear( Matrix3f::scale( size ) ) ) )

◆ GLPrimitivesType

enum class MR::Viewer::GLPrimitivesType
strong

types of gl primitives counters

Enumerator
PointArraySize 

arrays and elements are different gl calls

LineArraySize 
TriangleArraySize 
PointElementsNum 
LineElementsNum 
TriangleElementsNum 
Count 

◆ IconType

enum class MR::RibbonIcons::IconType
strong
Enumerator
RibbonItemIcon 
ObjectTypeIcon 

have four sizes

IndependentIcons 

have two sizes

Logos 

have two sizes

Count 

have two sizes

◆ ICPExitType

enum class MR::ICPExitType
strong

#include <MRMesh/MRICPEnums.h>

types of exit conditions in calculation

Enumerator
NotStarted 
NotFoundSolution 

calculation is not started yet

MaxIterations 

solution not found in some iteration

MaxBadIterations 

iteration limit reached

StopMsdReached 

limit of non-improvement iterations in a row reached

stop mean square deviation reached

◆ ICPMethod

enum class MR::ICPMethod
strong

#include <MRMesh/MRICPEnums.h>

The method how to update transformation from point pairs.

Enumerator
Combined 

PointToPoint for the first 2 iterations, and PointToPlane for the remaining iterations.

PointToPoint 

it is the safest approach but can converge slowly

select transformation that minimizes mean squared distance between two points in each pair,

PointToPlane 

select transformation that minimizes mean squared distance between a point and a plane via the other point in each pair, converge much faster than PointToPoint in case of many good (with not all points/normals in one plane) pairs This mode only works correctly if the object that points are being projected onto has normals information (is not a point clouds without normals). By default both objects are projected onto each other, so at least one of them must have normals, unless you change the settings to only project one way (using MR::ICP::setFltSamples() or MR::ICP::setRefSamples()), in which case the object being projected onto must have normals.

◆ ICPMode

enum class MR::ICPMode
strong

#include <MRMesh/MRICPEnums.h>

The group of transformations, each with its own degrees of freedom.

Enumerator
RigidScale 

rigid body transformation with uniform scaling (7 degrees of freedom)

AnyRigidXf 

rigid body transformation (6 degrees of freedom)

OrthogonalAxis 

rigid body transformation with rotation except argument axis (5 degrees of freedom)

FixedAxis 

rigid body transformation with rotation around given axis only (4 degrees of freedom)

TranslationOnly 

only translation (3 degrees of freedom)

◆ InteractionMask

Enumerator
mouseHover 
mouseScroll 

◆ InvLengthUnit

enum class MR::InvLengthUnit
strong

#include <MRMesh/MRUnitInfo.h>

Measurement units for 1/length.

Enumerator
inv_microns 
inv_millimeters 
inv_centimeters 
inv_meters 
inv_inches 
inv_feet 
_count 

◆ LengthUnit

enum class MR::LengthUnit
strong

#include <MRMesh/MRUnitInfo.h>

Measurement units of length.

Enumerator
microns 
millimeters 
centimeters 
meters 
inches 
feet 
_count 

◆ LutType

coloring type

Enumerator
GrayShades 
Rainbow 
OneColor 

◆ MaskType

Enumerator
Inside 
Outside 
Segment 
Count 

◆ MeshCompression

Enumerator
None 

no compression at all, fast but not effective

Lossless 

compression without any loss in vertex coordinates

Lossy 

compression with loss in vertex coordinates

◆ MeshFormat

Enumerator
Ctm 
Ply 
Mrmesh 

◆ Method [1/2]

Fix method.

Enumerator
Relax 

Relax mesh around self-intersections.

CutAndFill 

Cut and re-fill regions around self-intersections (may fall back to Relax)

◆ Method [2/2]

enum class MR::WebRequest::Method
strong
Enumerator
Get 
Post 
Patch 
Put 
Delete 

◆ Mode

enum class MR::RangeProgress::Mode
strong

Mode of parallel_reduce.

Enumerator
Leaves 
Tiles 

◆ ModeBit

enum class MR::TouchesController::ModeBit : unsigned char
strong

bit meaning for mode mask

Enumerator
Translate 
Rotate 
Zoom 
All 
Any 

◆ MouseButton

enum class MR::MouseButton
strong

#include <MRViewer/MRMouse.h>

Enumerator
Left 
Right 

GLFW_MOUSE_BUTTON_1.

Middle 

GLFW_MOUSE_BUTTON_2.

Count 

GLFW_MOUSE_BUTTON_3.

NoButton 

◆ MouseMode

enum class MR::MouseMode
strong

#include <MRViewer/MRMouse.h>

Standard mouse functions for camera control.

Enumerator
None 
Rotation 
Translation 

Rotate camera around selected point.

Roll 

Translate camera preserving its direction.

Count 

Rotate camera around axis orthogonal to screen.

◆ MovementSpeedUnit

enum class MR::MovementSpeedUnit
strong

#include <MRMesh/MRUnitInfo.h>

Measurement units for movement speed.

Enumerator
micronsPerSecond 
millimetersPerSecond 
centimetersPerSecond 
metersPerSecond 
inchesPerSecond 
feetPerSecond 
_count 

◆ MoveType

enum class MR::MoveType
strong

#include <MRVoxels/MRToolPath.h>

Enumerator
None 
FastLinear 
Linear 
ArcCW 
ArcCCW 

◆ NameTagSelectionMode

Enumerator
selectOne 

Click without modifiers, selects one object and unselects all others.

toggle 

Ctrl+Click, toggles the selection of one object.

◆ NeighborDir

enum class MR::NeighborDir
strong

#include <MRMesh/MRSeparationPoint.h>

Enumerator
Count 

◆ NestedComponenetsMode

enum class MR::NestedComponenetsMode
strong

#include <MRMesh/MRUniteManyMeshes.h>

Mode of processing components.

Enumerator
Remove 

Default: separate nested meshes and remove them, just like union operation should do, use this if input meshes are single component.

Merge 

merge nested meshes, useful if input meshes are components of single object

Union 

does not separate components and call union for all input meshes, works slower than Remove and Merge method but returns valid result if input meshes has multiple components

◆ NotificationType

enum class MR::NotificationType
strong

#include <MRViewer/MRNotificationType.h>

Enumerator
Error 
Warning 
Info 
Time 
Count 

◆ NoUnit

enum class MR::NoUnit
strong

#include <MRMesh/MRUnitInfo.h>

A stub measurement unit representing no unit.

Enumerator
_count 

◆ NumberStyle

enum class MR::NumberStyle
strong

#include <MRViewer/MRUnits.h>

Enumerator
normal 
distributePrecision 

Like f.

exponential 

Like f, but the precision digits are spread across both decimal and integral parts.

maybeExponential 

Like e.

◆ ObjType

Enumerator
Mesh 
Lines 
Points 
Voxels 
DistanceMap 
Count 

◆ OffsetMode

enum class MR::OffsetMode : int
strong

#include <MRMesh/MREnums.h>

Enumerator
Smooth 

create mesh using dual marching cubes from OpenVDB library

Standard 

create mesh using standard marching cubes implemented in MeshLib

Sharpening 

create mesh using standard marching cubes with additional sharpening implemented in MeshLib

◆ OrientNormals

enum class MR::OrientNormals
strong

#include <MRMesh/MREnums.h>

the method how to choose between two opposite normal orientations

Enumerator
TowardOrigin 
AwayFromOrigin 
Smart 

◆ OutlierTypeMask

enum class MR::OutlierTypeMask
strong

#include <MRMesh/MROutlierPoints.h>

Types of outlier points.

Enumerator
SmallComponents 

Small groups of points that are far from the rest.

WeaklyConnected 

Points that have too few neighbors within the radius.

FarSurface 

Points far from the surface approximating the nearest points.

AwayNormal 

Points whose normals differ from the average norm of their nearest neighbors.

All 

◆ OutputFaceValues

Enumerator
Distances 

each face will get its distance from start in the result

SeqOrder 

each face will get its sequential order (1,2,...) from start in the result

◆ PathPreference

enum class MR::PathPreference
strong

#include <MRViewer/MRSelectCurvaturePreference.h>

Enumerator
Geodesic 
Convex 
Concave 

◆ PdfBuildinFont

enum class MR::PdfBuildinFont
strong

#include <MRIOExtras/MRPdf.h>

Fonts included in libharu please note that using default font does not allow UTF-8 encoding

Enumerator
Courier 
CourierBold 
CourierOblique 
CourierBoldOblique 
Helvetica 
HelveticaBold 
HelveticaOblique 
HelveticaBoldOblique 
TimesRoman 
TimesBold 
TimesItalic 
TimesBoldItalic 
Symbol 
ZapfDingbats 
Count 

◆ PixelSizeUnit

enum class MR::PixelSizeUnit
strong

#include <MRMesh/MRUnitInfo.h>

Measurement units of screen sizes.

Enumerator
pixels 
_count 

◆ PointsFormat

Enumerator
Ctm 
Ply 

◆ PointSizeType

Enumerator
Metrical 
Pixel 

point size in mm

point size in pixels (will automatically be multipled by the UI scale)

◆ PositionType

Enumerator
Faces 
FaceCenters 

point can be in any place of surface

Edges 

point can be only in face center

EdgeCenters 

point can be only on edges

Verts 

point can be only in edge center

point can be only in vertex

◆ Preset

enum class MR::ColorTheme::Preset
strong
Enumerator
Dark 
Default 
Light 
Count 

◆ Priority

enum class MR::PythonExport::Priority
strong
Enumerator
Declaration 
Implementation 
Count 

◆ Processing

enum class MR::Processing : bool
strong

#include <MRMesh/MREnums.h>

typically returned from callbacks to control the behavior of main algorithm

Enumerator
Continue 
Stop 

◆ RatioUnit

enum class MR::RatioUnit
strong

#include <MRMesh/MRUnitInfo.h>

Measurement units for factors / ratios.

Enumerator
factor 
percents 

0..1 x

_count 

0..100 %

◆ Reason

enum class MR::ShortcutManager::Reason
strong
Enumerator
KeyDown 
KeyRepeat 

the user just pressed the keys

the user holds the keys for a long time

◆ RelaxApproxType

enum class MR::RelaxApproxType
strong

#include <MRMesh/MRRelaxParams.h>

Enumerator
Planar 
Quadric 

◆ RememberShape

enum class MR::RememberShape
strong

#include <MRMesh/MREnums.h>

Enumerator
Yes 

true Laplacian mode when initial mesh shape is remembered and copied in apply

No 

ignore initial mesh shape in the region and just position vertices smoothly in the region

◆ RenderModelPassMask

enum class MR::RenderModelPassMask
strong

#include <MRMesh/MRRenderModelParameters.h>

Various passes of the 3D rendering.

Enumerator
Opaque 
Transparent 
VolumeRendering 
NoDepthTest 
All 

◆ Reorder

enum class MR::Reorder : char
strong

#include <MRMesh/MREnums.h>

determines how points to be ordered

Enumerator
None 

the order is not changed

Lexicographically 

the order is determined by lexicographical sorting by coordinates (optimal for uniform sampling)

AABBTree 

the order is determined so to put close in space points in close indices (optimal for compression)

◆ ReplaceMode

Enumerator
ContructionBased 

replace current scene if new one was loaded from single scene file

ForceReplace 
ForceAdd 

◆ RibbonColorsType

Color types used in ribbon.

Enumerator
Background 
BackgroundSecStyle 
HeaderBackground 
HeaderSeparator 
TopPanelBackground 
TopPanelSearchBackground 
QuickAccessBackground 
Borders 
TabHovered 
TabClicked 
TabActive 
TabActiveHovered 
TabActiveClicked 
TabText 
TabActiveText 
DialogTab 
DialogTabHovered 
DialogTabActive 
DialogTabActiveHovered 
DialogTabText 
DialogTabActiveText 
ToolbarHovered 
ToolbarClicked 
ModalBackground 
Text 
TextEnabled 
TextDisabled 
TextSelectedBg 
RibbonButtonHovered 
RibbonButtonClicked 
RibbonButtonActive 
RibbonButtonActiveHovered 
RibbonButtonActiveClicked 
ThirdpartyBackground 
ProgressBarBackground 
FrameBackground 
CollapseHeaderBackground 
SelectedObjectText 
SelectedObjectFrame 
GradientStart 
GradientEnd 
TextContrastBackground 
GradBtnStart 
GradBtnHoverStart 
GradBtnActiveStart 
GradBtnDisableStart 
GradBtnEnd 
GradBtnHoverEnd 
GradBtnActiveEnd 
GradBtnDisableEnd 
GradBtnText 
GradBtnSecStyleStart 
GradBtnSecStyleHoverStart 
GradBtnSecStyleActiveStart 
GradBtnSecStyleEnd 
GradBtnSecStyleHoverEnd 
GradBtnSecStyleActiveEnd 
Grid 
Count 

◆ RibbonItemType

enum class MR::RibbonItemType
strong

#include <MRViewer/MRRibbonMenuItem.h>

Enumerator
Button 
ButtonWithDrop 

◆ RibbonNotificationCorner

enum class MR::RibbonNotificationCorner
strong

#include <MRViewer/MRRibbonNotification.h>

corner where notifications will appear

Enumerator
LowerLeft 
LowerRight 

◆ RibbonTopPanelLayoutMode

enum class MR::RibbonTopPanelLayoutMode
strong

#include <MRViewer/MRRibbonMenuUIConfig.h>

Enumerator
None 

no top panel at all (toolbar is also forced hidden in this mode)

RibbonNoTabs 

show only icons from the first tab, without tabs panel

RibbonWithTabs 

both ribbon toolbar and tabs

◆ RootType

icon size ( = 0 - use preset according to button type), this is scale factor of cBigIcon size (should not respect system scaling)

Enumerator
Ribbon 
Toolbar 

button is on main ribbon bar

Header 

button is on toolbar

button is on header quick access bar

◆ RotationAxisName

enumeration of axes of rotation

Enumerator

◆ RotationCenterMode

Enumerator
Static 
DynamicStatic 

scene is always rotated around its center or another manually set point

Dynamic 

scene is rotated around picked point on object, or around center, if miss pick

scene is rotated around picked point on object, or around last rotation pivot, if miss pick

◆ SampleType

Enumerator
Unknown 
Uint 
Int 
Float 

◆ ScalarType

enum class MR::ScalarType
strong

#include <MRVoxels/MRScalarConvert.h>

scalar value's binary format type

Enumerator
UInt8 
Int8 
UInt16 
Int16 
UInt32 
Int32 
UInt64 
Int64 
Float32 
Float64 
Float32_4 

the last value from float[4]

Unknown 
Count 

◆ SelectedTypesMask