@@ -68,6 +68,17 @@ std::pair<const mv::LinkedData*, unsigned int> getSelectionMappingPositionsToCol
6868
6969 return { mapping, numTargetPoints };
7070}
71+
72+ std::pair<const mv::LinkedData*, unsigned int > getSelectionMappingPositionSourceToColors (const mv::Dataset<Points>& positions, const mv::Dataset<Points>& colors) {
73+ if (!positions->isDerivedData ())
74+ return { nullptr , 0 };
75+
76+ const auto fullSourceData = positions->getSourceDataset <Points>()->getFullDataset <Points>();
77+
78+ if (!fullSourceData.isValid ())
79+ return { nullptr , 0 };
80+
81+ return getSelectionMappingPositionsToColors (fullSourceData, colors);
7182}
7283
7384bool checkSurjectiveMapping (const mv::LinkedData& linkedData, const std::uint32_t numPointsInTarget) {
@@ -93,16 +104,17 @@ bool checkSurjectiveMapping(const mv::LinkedData& linkedData, const std::uint32_
93104
94105bool checkSelectionMapping (const mv::Dataset<Points>& colors, const mv::Dataset<Points>& positions) {
95106
96- // Check if there is a mapping
97- auto mapping = getSelectionMappingColorsToPositions (colors, positions);
98- auto numTargetPoints = positions->getNumPoints ();
107+ printLinkedDataNames (colors);
108+ printLinkedDataNames (positions);
99109
100110 // Check if there is a mapping
101111 auto [mapping, numTargetPoints] = getSelectionMappingColorsToPositions (colors, positions);
102112
103113 if (!mapping)
104114 std::tie (mapping, numTargetPoints) = getSelectionMappingPositionsToColors (positions, colors);
105115
116+ if (!mapping)
117+ std::tie (mapping, numTargetPoints) = getSelectionMappingPositionSourceToColors (positions, colors);
106118
107119 if (!mapping)
108120 return false ;
0 commit comments