Sorted out zoomout, works for all now
This commit is contained in:
parent
0ad5197ff4
commit
3cfdb4e0c1
@ -57,7 +57,7 @@ FPGAViewWidget::FPGAViewWidget(QWidget *parent)
|
||||
|
||||
rendererArgs_->changed = false;
|
||||
rendererArgs_->gridChanged = false;
|
||||
rendererArgs_->flags.zoomOutbound = true;
|
||||
rendererArgs_->zoomOutbound = true;
|
||||
|
||||
auto fmt = format();
|
||||
fmt.setMajorVersion(3);
|
||||
@ -97,7 +97,7 @@ void FPGAViewWidget::newContext(Context *ctx)
|
||||
onHighlightGroupChanged(std::vector<DecalXY>(), i);
|
||||
{
|
||||
QMutexLocker lock(&rendererArgsLock_);
|
||||
rendererArgs_->flags.zoomOutbound = true;
|
||||
rendererArgs_->zoomOutbound = true;
|
||||
}
|
||||
pokeRenderer();
|
||||
}
|
||||
@ -339,22 +339,7 @@ void FPGAViewWidget::paintGL()
|
||||
lineShader_.draw(GraphicElement::STYLE_HOVER, colors_.hovered,
|
||||
thick2Px, matrix);
|
||||
|
||||
// Flags from pipeline.
|
||||
PassthroughFlags flags = rendererData_->flags;
|
||||
|
||||
// Check flags passed through pipeline.
|
||||
if (flags.zoomOutbound) {
|
||||
// If we're doing init zoomOutbound, make sure we're actually drawing
|
||||
// something already.
|
||||
if (rendererData_->gfxByStyle[GraphicElement::STYLE_FRAME].vertices.size() != 0) {
|
||||
zoomOutbound();
|
||||
flags.zoomOutbound = false;
|
||||
{
|
||||
QMutexLocker lock(&rendererArgsLock_);
|
||||
rendererArgs_->flags.zoomOutbound = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Render ImGui
|
||||
QtImGui::newFrame();
|
||||
QMutexLocker lock(&rendererArgsLock_);
|
||||
if (!(rendererArgs_->hoveredDecal == DecalXY()) && rendererArgs_->hintText.size() > 0)
|
||||
@ -438,7 +423,6 @@ void FPGAViewWidget::renderLines(void)
|
||||
std::vector<DecalXY> highlightedDecals[8];
|
||||
bool highlightedOrSelectedChanged;
|
||||
bool gridChanged;
|
||||
PassthroughFlags flags;
|
||||
{
|
||||
// Take the renderer arguments lock, copy over all we need.
|
||||
QMutexLocker lock(&rendererArgsLock_);
|
||||
@ -453,7 +437,6 @@ void FPGAViewWidget::renderLines(void)
|
||||
gridChanged = rendererArgs_->gridChanged;
|
||||
rendererArgs_->changed = false;
|
||||
rendererArgs_->gridChanged = false;
|
||||
flags = rendererArgs_->flags;
|
||||
}
|
||||
|
||||
// Render decals if necessary.
|
||||
@ -582,8 +565,12 @@ void FPGAViewWidget::renderLines(void)
|
||||
}
|
||||
|
||||
{
|
||||
QMutexLocker locker(&rendererDataLock_);
|
||||
rendererData_->flags = flags;
|
||||
QMutexLocker lock(&rendererArgsLock_);
|
||||
|
||||
if (rendererArgs_->zoomOutbound) {
|
||||
zoomOutbound();
|
||||
rendererArgs_->zoomOutbound = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -240,21 +240,6 @@ class FPGAViewWidget : public QOpenGLWidget, protected QOpenGLFunctions
|
||||
QColor highlight[8];
|
||||
} colors_;
|
||||
|
||||
// Flags that are passed through from renderer arguments to renderer data.
|
||||
// These are used by the UI code to signal events that will only fire when
|
||||
// the next frame gets rendered.
|
||||
struct PassthroughFlags
|
||||
{
|
||||
bool zoomOutbound;
|
||||
|
||||
PassthroughFlags() : zoomOutbound(false) {}
|
||||
PassthroughFlags &operator=(const PassthroughFlags &other) noexcept
|
||||
{
|
||||
zoomOutbound = other.zoomOutbound;
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
struct RendererArgs
|
||||
{
|
||||
// Decals that he user selected.
|
||||
@ -268,12 +253,12 @@ class FPGAViewWidget : public QOpenGLWidget, protected QOpenGLFunctions
|
||||
// Whether to render grid or skip it.
|
||||
bool gridChanged;
|
||||
|
||||
// Flags to pass back into the RendererData.
|
||||
PassthroughFlags flags;
|
||||
// Flags for rendering.
|
||||
bool zoomOutbound;
|
||||
// Hint text
|
||||
std::string hintText;
|
||||
// cursor pos
|
||||
int x,y;
|
||||
int x, y;
|
||||
};
|
||||
std::unique_ptr<RendererArgs> rendererArgs_;
|
||||
QMutex rendererArgsLock_;
|
||||
@ -291,8 +276,6 @@ class FPGAViewWidget : public QOpenGLWidget, protected QOpenGLFunctions
|
||||
PickQuadTree::BoundingBox bbSelected;
|
||||
// Quadtree for picking objects.
|
||||
std::unique_ptr<PickQuadTree> qt;
|
||||
// Flags from args.
|
||||
PassthroughFlags flags;
|
||||
};
|
||||
std::unique_ptr<RendererData> rendererData_;
|
||||
QMutex rendererDataLock_;
|
||||
|
Loading…
Reference in New Issue
Block a user