gui: allow building for ECP5 and on Windows
This commit is contained in:
parent
96608c8d07
commit
dc46eea24d
@ -143,12 +143,32 @@ class FPGAViewWidget : public QOpenGLWidget, protected QOpenGLFunctions
|
||||
Inner(WireId _wire) : wire(_wire) {}
|
||||
Inner(PipId _pip) : pip(_pip) {}
|
||||
Inner(GroupId _group) : group(_group) {}
|
||||
Inner() {}
|
||||
} element;
|
||||
float x, y; // Decal X and Y
|
||||
PickedElement(BelId bel, float x, float y) : type(ElementType::BEL), element(bel), x(x), y(y) {}
|
||||
PickedElement(WireId wire, float x, float y) : type(ElementType::WIRE), element(wire), x(x), y(y) {}
|
||||
PickedElement(PipId pip, float x, float y) : type(ElementType::PIP), element(pip), x(x), y(y) {}
|
||||
PickedElement(GroupId group, float x, float y) : type(ElementType::GROUP), element(group), x(x), y(y) {}
|
||||
PickedElement(const PickedElement &other) : type(other.type)
|
||||
{
|
||||
switch (type) {
|
||||
case ElementType::BEL:
|
||||
element.bel = other.element.bel;
|
||||
break;
|
||||
case ElementType::WIRE:
|
||||
element.wire = other.element.wire;
|
||||
break;
|
||||
case ElementType::PIP:
|
||||
element.pip = other.element.pip;
|
||||
break;
|
||||
case ElementType::GROUP:
|
||||
element.group = other.element.group;
|
||||
break;
|
||||
default:
|
||||
NPNR_ASSERT_FALSE("Invalid ElementType");
|
||||
}
|
||||
}
|
||||
|
||||
DecalXY decal(Context *ctx) const
|
||||
{
|
||||
|
@ -157,7 +157,7 @@ template <typename CoordinateT, typename ElementT> class QuadTreeNode
|
||||
// - any of the 4 children nodes.
|
||||
enum Quadrant
|
||||
{
|
||||
THIS = -1,
|
||||
THIS_NODE = -1,
|
||||
NW = 0,
|
||||
NE = 1,
|
||||
SW = 2,
|
||||
@ -171,7 +171,7 @@ template <typename CoordinateT, typename ElementT> class QuadTreeNode
|
||||
Quadrant quadrant(const BoundingBox &b) const
|
||||
{
|
||||
if (children_ == nullptr) {
|
||||
return THIS;
|
||||
return THIS_NODE;
|
||||
}
|
||||
|
||||
bool west0 = b.x0_ < splitx_;
|
||||
@ -187,7 +187,7 @@ template <typename CoordinateT, typename ElementT> class QuadTreeNode
|
||||
return SW;
|
||||
if (!west0 && !west1 && !north0 && !north1)
|
||||
return SE;
|
||||
return THIS;
|
||||
return THIS_NODE;
|
||||
}
|
||||
|
||||
// Checks whether this node should split.
|
||||
@ -252,7 +252,7 @@ template <typename CoordinateT, typename ElementT> class QuadTreeNode
|
||||
// Put the element either recursively into a child if it fits
|
||||
// entirely or keep it for ourselves if not.
|
||||
auto quad = quadrant(k);
|
||||
if (quad == THIS) {
|
||||
if (quad == THIS_NODE) {
|
||||
elems_.push_back(BoundElement(k, std::move(v)));
|
||||
} else {
|
||||
return children_[quad].insert(k, std::move(v));
|
||||
@ -286,7 +286,7 @@ template <typename CoordinateT, typename ElementT> class QuadTreeNode
|
||||
auto it = elems_.begin();
|
||||
while (it != elems_.end()) {
|
||||
auto quad = quadrant(it->bb_);
|
||||
if (quad != THIS) {
|
||||
if (quad != THIS_NODE) {
|
||||
// Move to one of the children.
|
||||
if (!children_[quad].insert(it->bb_, std::move(it->elem_)))
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user