Skip to content

Commit c91e739

Browse files
committed
Color sample works
1 parent 1d9dab9 commit c91e739

File tree

2 files changed

+49
-32
lines changed

2 files changed

+49
-32
lines changed

src/ScatterplotPlugin.cpp

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,8 +384,21 @@ void ScatterplotPlugin::selectPoints()
384384
QPointF uvNormalized = {};
385385
QPoint uv = {};
386386

387+
auto& navigator = _scatterPlotWidget->_pointRenderer.getNavigator();
388+
389+
auto zoomRectangleWorld = navigator.getZoomRectangleWorld();
390+
391+
const auto margin = _scatterPlotWidget->_pointRenderer.getNavigator().getZoomRectangleMargin();
392+
393+
//zoomRectangleWorld.setSize(zoomRectangleWorld.size() - QSize(2 * margin, 2 * margin));
394+
395+
qDebug() << zoomRectangleWorld;
396+
387397
for (std::uint32_t localPointIndex = 0; localPointIndex < _positions.size(); localPointIndex++) {
388-
uvNormalized = QPointF((_positions[localPointIndex].x - zoomRectangleAction.getLeft()) / zoomRectangleAction.getWidth(), (zoomRectangleAction.getTop() - _positions[localPointIndex].y) / zoomRectangleAction.getHeight());
398+
//const auto screenPoint = _scatterPlotWidget->getPointRenderer().getWorldPositionToScreenPoint(QVector3D(_positions[localPointIndex].x, _positions[localPointIndex].y, 0.f));
399+
400+
uvNormalized = QPointF((_positions[localPointIndex].x - zoomRectangleWorld.left()) / zoomRectangleWorld.width(), (zoomRectangleWorld.bottom() - _positions[localPointIndex].y) / zoomRectangleWorld.height());
401+
//uvNormalized = QPointF(static_cast<float>(screenPoint.x()) / static_cast<float>(_scatterPlotWidget->width()), static_cast<float>(screenPoint.y()) / static_cast<float>(_scatterPlotWidget->height()));
389402
uv = uvOffset + QPoint(uvNormalized.x() * size, uvNormalized.y() * size);
390403

391404
if (uv.x() >= selectionAreaImage.width() || uv.x() < 0 || uv.y() >= selectionAreaImage.height() || uv.y() < 0)

src/ScatterplotWidget.cpp

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -128,19 +128,6 @@ ScatterplotWidget::ScatterplotWidget(mv::plugin::ViewPlugin* parentPlugin) :
128128
QObject::connect(winHandle, &QWindow::screenChanged, this, &ScatterplotWidget::updatePixelRatio, Qt::UniqueConnection);
129129
});
130130

131-
connect(&_navigationAction.getZoomRectangleAction(), &DecimalRectangleAction::rectangleChanged, this, [this]() -> void {
132-
auto& zoomRectangleAction = _navigationAction.getZoomRectangleAction();
133-
134-
const auto zoomBounds = zoomRectangleAction.getBounds();
135-
136-
_pointRenderer.setViewBounds(zoomBounds);
137-
_densityRenderer.setBounds(zoomBounds);
138-
139-
_navigationAction.getZoomDataExtentsAction().setEnabled(zoomBounds != _dataRectangleAction.getBounds());
140-
141-
update();
142-
});
143-
144131
connect(&_navigationAction.getZoomDataExtentsAction(), &TriggerAction::triggered, this, [this]() -> void {
145132
_pointRenderer.getNavigator().resetView();
146133
});
@@ -156,7 +143,29 @@ ScatterplotWidget::ScatterplotWidget(mv::plugin::ViewPlugin* parentPlugin) :
156143
}
157144
});
158145

159-
connect(&_pointRenderer, &Renderer2D::zoomRectangleChanged, this, [this]() -> void { update(); });
146+
const auto zoomRectangleChanged = [this]() -> void {
147+
_pointRenderer.getNavigator().setZoomRectangleWorld(_navigationAction.getZoomRectangleAction().toRectF());
148+
update();
149+
};
150+
151+
zoomRectangleChanged();
152+
153+
connect(&_navigationAction.getZoomRectangleAction(), &DecimalRectangleAction::rectangleChanged, this, zoomRectangleChanged);
154+
155+
connect(&_pointRenderer.getNavigator(), &Navigator2D::zoomRectangleWorldChanged, this, [this, zoomRectangleChanged](const QRectF& previousZoomRectangleWorld, const QRectF& currentZoomRectangleWorld) -> void {
156+
disconnect(&_navigationAction.getZoomRectangleAction(), &DecimalRectangleAction::rectangleChanged, this, nullptr);
157+
{
158+
_navigationAction.getZoomDataExtentsAction().setEnabled(_pointRenderer.getNavigator().hasUserNavigated());
159+
160+
_navigationAction.getZoomRectangleAction().setLeft(currentZoomRectangleWorld.left());
161+
_navigationAction.getZoomRectangleAction().setRight(currentZoomRectangleWorld.right());
162+
_navigationAction.getZoomRectangleAction().setTop(currentZoomRectangleWorld.bottom());
163+
_navigationAction.getZoomRectangleAction().setBottom(currentZoomRectangleWorld.top());
164+
}
165+
connect(&_navigationAction.getZoomRectangleAction(), &DecimalRectangleAction::rectangleChanged, this, zoomRectangleChanged);
166+
167+
update();
168+
});
160169

161170
//auto setIsNavigating = [this](bool isNavigating) -> void {
162171
// _isNavigating = isNavigating;
@@ -171,6 +180,7 @@ ScatterplotWidget::ScatterplotWidget(mv::plugin::ViewPlugin* parentPlugin) :
171180
// };
172181

173182
_pointRenderer.getNavigator().initialize(this);
183+
_densityRenderer.getNavigator().initialize(this);
174184
}
175185

176186
bool ScatterplotWidget::event(QEvent* event)
@@ -211,6 +221,9 @@ void ScatterplotWidget::setRenderMode(const RenderMode& renderMode)
211221

212222
emit renderModeChanged(_renderMode);
213223

224+
_pointRenderer.getNavigator().setEnabled(_renderMode == SCATTERPLOT);
225+
_densityRenderer.getNavigator().setEnabled(_renderMode == DENSITY || _renderMode == LANDSCAPE);
226+
214227
switch (_renderMode)
215228
{
216229
case ScatterplotWidget::SCATTERPLOT:
@@ -275,42 +288,33 @@ void ScatterplotWidget::setData(const std::vector<Vector2f>* points)
275288
auto dataBounds = getDataBounds(*points);
276289

277290
// pass un-adjusted data bounds to renderer for 2D colormapping
278-
_pointRenderer.setDataBounds(dataBounds);
279-
280-
// Adjust data points for projection matrix creation (add a little white space around data)
281-
dataBounds.ensureMinimumSize(1e-07f, 1e-07f);
282-
dataBounds.makeSquare();
283-
dataBounds.expand(0.1f);
291+
_pointRenderer.setDataBounds(QRectF(dataBounds.getLeft(), dataBounds.getTop(), dataBounds.getWidth(), dataBounds.getHeight()));
284292

285293
const auto shouldSetBounds = (mv::projects().isOpeningProject() || mv::projects().isImportingProject()) ? false : !_navigationAction.getFreezeZoomAction().isChecked();
286294

287-
if (shouldSetBounds)
288-
_pointRenderer.setViewBounds(dataBounds);
295+
//if (shouldSetBounds)
296+
// _pointRenderer.setViewBounds(dataBounds);
289297

290298
_densityRenderer.setBounds(dataBounds);
291-
292299
_dataRectangleAction.setBounds(dataBounds);
293300

294-
if (shouldSetBounds)
295-
_navigationAction.getZoomRectangleAction().setBounds(dataBounds);
296-
297301
_pointRenderer.setData(*points);
298302
_densityRenderer.setData(points);
299303

300304
switch (_renderMode)
301305
{
302306
case ScatterplotWidget::SCATTERPLOT:
307+
{
308+
_pointRenderer.getNavigator().resetView();
303309
break;
310+
}
304311

305312
case ScatterplotWidget::DENSITY:
306313
case ScatterplotWidget::LANDSCAPE:
307314
{
308315
_densityRenderer.computeDensity();
309316
break;
310317
}
311-
312-
default:
313-
break;
314318
}
315319
// _pointRenderer.setSelectionOutlineColor(Vector3f(1, 0, 0));
316320

@@ -661,8 +665,8 @@ void ScatterplotWidget::resizeGL(int w, int h)
661665
// Pixel ratio tells us how many pixels map to a point
662666
// That is needed as macOS calculates in points and we do in pixels
663667
// On macOS high dpi displays pixel ration is 2
664-
w *= _pixelRatio;
665-
h *= _pixelRatio;
668+
//w *= _pixelRatio;
669+
//h *= _pixelRatio;
666670

667671
_pointRenderer.resize(QSize(w, h));
668672
_densityRenderer.resize(QSize(w, h));

0 commit comments

Comments
 (0)