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_->changed = false;
|
||||||
rendererArgs_->gridChanged = false;
|
rendererArgs_->gridChanged = false;
|
||||||
rendererArgs_->flags.zoomOutbound = true;
|
rendererArgs_->zoomOutbound = true;
|
||||||
|
|
||||||
auto fmt = format();
|
auto fmt = format();
|
||||||
fmt.setMajorVersion(3);
|
fmt.setMajorVersion(3);
|
||||||
@ -97,7 +97,7 @@ void FPGAViewWidget::newContext(Context *ctx)
|
|||||||
onHighlightGroupChanged(std::vector<DecalXY>(), i);
|
onHighlightGroupChanged(std::vector<DecalXY>(), i);
|
||||||
{
|
{
|
||||||
QMutexLocker lock(&rendererArgsLock_);
|
QMutexLocker lock(&rendererArgsLock_);
|
||||||
rendererArgs_->flags.zoomOutbound = true;
|
rendererArgs_->zoomOutbound = true;
|
||||||
}
|
}
|
||||||
pokeRenderer();
|
pokeRenderer();
|
||||||
}
|
}
|
||||||
@ -339,22 +339,7 @@ void FPGAViewWidget::paintGL()
|
|||||||
lineShader_.draw(GraphicElement::STYLE_HOVER, colors_.hovered,
|
lineShader_.draw(GraphicElement::STYLE_HOVER, colors_.hovered,
|
||||||
thick2Px, matrix);
|
thick2Px, matrix);
|
||||||
|
|
||||||
// Flags from pipeline.
|
// Render ImGui
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
QtImGui::newFrame();
|
QtImGui::newFrame();
|
||||||
QMutexLocker lock(&rendererArgsLock_);
|
QMutexLocker lock(&rendererArgsLock_);
|
||||||
if (!(rendererArgs_->hoveredDecal == DecalXY()) && rendererArgs_->hintText.size() > 0)
|
if (!(rendererArgs_->hoveredDecal == DecalXY()) && rendererArgs_->hintText.size() > 0)
|
||||||
@ -438,7 +423,6 @@ void FPGAViewWidget::renderLines(void)
|
|||||||
std::vector<DecalXY> highlightedDecals[8];
|
std::vector<DecalXY> highlightedDecals[8];
|
||||||
bool highlightedOrSelectedChanged;
|
bool highlightedOrSelectedChanged;
|
||||||
bool gridChanged;
|
bool gridChanged;
|
||||||
PassthroughFlags flags;
|
|
||||||
{
|
{
|
||||||
// Take the renderer arguments lock, copy over all we need.
|
// Take the renderer arguments lock, copy over all we need.
|
||||||
QMutexLocker lock(&rendererArgsLock_);
|
QMutexLocker lock(&rendererArgsLock_);
|
||||||
@ -453,7 +437,6 @@ void FPGAViewWidget::renderLines(void)
|
|||||||
gridChanged = rendererArgs_->gridChanged;
|
gridChanged = rendererArgs_->gridChanged;
|
||||||
rendererArgs_->changed = false;
|
rendererArgs_->changed = false;
|
||||||
rendererArgs_->gridChanged = false;
|
rendererArgs_->gridChanged = false;
|
||||||
flags = rendererArgs_->flags;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Render decals if necessary.
|
// Render decals if necessary.
|
||||||
@ -582,8 +565,12 @@ void FPGAViewWidget::renderLines(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
QMutexLocker locker(&rendererDataLock_);
|
QMutexLocker lock(&rendererArgsLock_);
|
||||||
rendererData_->flags = flags;
|
|
||||||
|
if (rendererArgs_->zoomOutbound) {
|
||||||
|
zoomOutbound();
|
||||||
|
rendererArgs_->zoomOutbound = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,21 +240,6 @@ class FPGAViewWidget : public QOpenGLWidget, protected QOpenGLFunctions
|
|||||||
QColor highlight[8];
|
QColor highlight[8];
|
||||||
} colors_;
|
} 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
|
struct RendererArgs
|
||||||
{
|
{
|
||||||
// Decals that he user selected.
|
// Decals that he user selected.
|
||||||
@ -268,12 +253,12 @@ class FPGAViewWidget : public QOpenGLWidget, protected QOpenGLFunctions
|
|||||||
// Whether to render grid or skip it.
|
// Whether to render grid or skip it.
|
||||||
bool gridChanged;
|
bool gridChanged;
|
||||||
|
|
||||||
// Flags to pass back into the RendererData.
|
// Flags for rendering.
|
||||||
PassthroughFlags flags;
|
bool zoomOutbound;
|
||||||
// Hint text
|
// Hint text
|
||||||
std::string hintText;
|
std::string hintText;
|
||||||
// cursor pos
|
// cursor pos
|
||||||
int x,y;
|
int x, y;
|
||||||
};
|
};
|
||||||
std::unique_ptr<RendererArgs> rendererArgs_;
|
std::unique_ptr<RendererArgs> rendererArgs_;
|
||||||
QMutex rendererArgsLock_;
|
QMutex rendererArgsLock_;
|
||||||
@ -291,8 +276,6 @@ class FPGAViewWidget : public QOpenGLWidget, protected QOpenGLFunctions
|
|||||||
PickQuadTree::BoundingBox bbSelected;
|
PickQuadTree::BoundingBox bbSelected;
|
||||||
// Quadtree for picking objects.
|
// Quadtree for picking objects.
|
||||||
std::unique_ptr<PickQuadTree> qt;
|
std::unique_ptr<PickQuadTree> qt;
|
||||||
// Flags from args.
|
|
||||||
PassthroughFlags flags;
|
|
||||||
};
|
};
|
||||||
std::unique_ptr<RendererData> rendererData_;
|
std::unique_ptr<RendererData> rendererData_;
|
||||||
QMutex rendererDataLock_;
|
QMutex rendererDataLock_;
|
||||||
|
Loading…
Reference in New Issue
Block a user