Draw fpga model
This commit is contained in:
parent
4bcbe977ab
commit
d8d38cd107
@ -123,3 +123,27 @@ const vector<PipId> &Chip::getWireAliases(WireId wire) const
|
|||||||
static vector<PipId> ret;
|
static vector<PipId> ret;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vector<GraphicElement> Chip::getBelGraphics(BelId bel) const
|
||||||
|
{
|
||||||
|
static vector<GraphicElement> ret;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
vector<GraphicElement> Chip::getWireGraphics(WireId wire) const
|
||||||
|
{
|
||||||
|
static vector<GraphicElement> ret;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
vector<GraphicElement> Chip::getPipGraphics(PipId pip) const
|
||||||
|
{
|
||||||
|
static vector<GraphicElement> ret;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
vector<GraphicElement> Chip::getFrameGraphics() const
|
||||||
|
{
|
||||||
|
static vector<GraphicElement> ret;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
FPGAViewWidget::FPGAViewWidget(QWidget *parent)
|
FPGAViewWidget::FPGAViewWidget(QWidget *parent)
|
||||||
: QOpenGLWidget(parent), m_xMove(0), m_yMove(0), m_zDistance(1.0)
|
: QOpenGLWidget(parent), m_xMove(0), m_yMove(0), m_zDistance(1.0)
|
||||||
{
|
{
|
||||||
design = static_cast<MainWindow *>(parent)->getDesign();
|
design = qobject_cast<MainWindow*>(parentWidget()->parentWidget()->parentWidget()->parentWidget())->getDesign();
|
||||||
}
|
}
|
||||||
|
|
||||||
FPGAViewWidget::~FPGAViewWidget() {}
|
FPGAViewWidget::~FPGAViewWidget() {}
|
||||||
@ -51,6 +51,34 @@ void FPGAViewWidget::initializeGL()
|
|||||||
glClearColor(1.0, 1.0, 1.0, 0.0);
|
glClearColor(1.0, 1.0, 1.0, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FPGAViewWidget::drawElement(const GraphicElement &el)
|
||||||
|
{
|
||||||
|
float scale = 1.0, offset = 0.0;
|
||||||
|
if (el.type == GraphicElement::G_BOX) {
|
||||||
|
glBegin(GL_LINES);
|
||||||
|
glVertex3f((offset + scale * el.x1), (offset + scale * el.y1), 0.0f);
|
||||||
|
glVertex3f((offset + scale * el.x2), (offset + scale * el.y1), 0.0f);
|
||||||
|
|
||||||
|
glVertex3f((offset + scale * el.x2), (offset + scale * el.y1), 0.0f);
|
||||||
|
glVertex3f((offset + scale * el.x2), (offset + scale * el.y2), 0.0f);
|
||||||
|
|
||||||
|
glVertex3f((offset + scale * el.x2), (offset + scale * el.y2), 0.0f);
|
||||||
|
glVertex3f((offset + scale * el.x1), (offset + scale * el.y2), 0.0f);
|
||||||
|
|
||||||
|
glVertex3f((offset + scale * el.x1), (offset + scale * el.y2), 0.0f);
|
||||||
|
glVertex3f((offset + scale * el.x1), (offset + scale * el.y1), 0.0f);
|
||||||
|
glEnd();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (el.type == GraphicElement::G_LINE) {
|
||||||
|
glBegin(GL_LINES);
|
||||||
|
glVertex3f((offset + scale * el.x1), (offset + scale * el.y1), 0.0f);
|
||||||
|
glVertex3f((offset + scale * el.x2), (offset + scale * el.y2), 0.0f);
|
||||||
|
glEnd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void FPGAViewWidget::paintGL()
|
void FPGAViewWidget::paintGL()
|
||||||
{
|
{
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
@ -59,8 +87,8 @@ void FPGAViewWidget::paintGL()
|
|||||||
glTranslatef(m_xMove, m_yMove, -10.0);
|
glTranslatef(m_xMove, m_yMove, -10.0);
|
||||||
glScalef(m_zDistance, m_zDistance, 0.0f);
|
glScalef(m_zDistance, m_zDistance, 0.0f);
|
||||||
|
|
||||||
// Example grid
|
// Grid
|
||||||
glColor3f(0.8, 0.8, 0.8);
|
glColor3f(0.9, 0.9, 0.9);
|
||||||
glBegin(GL_LINES);
|
glBegin(GL_LINES);
|
||||||
for (float i = -100; i <= 100; i += 0.1) {
|
for (float i = -100; i <= 100; i += 0.1) {
|
||||||
glVertex3f((float)i, -100.0f, 0.0f);
|
glVertex3f((float)i, -100.0f, 0.0f);
|
||||||
@ -68,7 +96,7 @@ void FPGAViewWidget::paintGL()
|
|||||||
glVertex3f(-100.0f, (float)i, 0.0f);
|
glVertex3f(-100.0f, (float)i, 0.0f);
|
||||||
glVertex3f(100.0f, (float)i, 0.0f);
|
glVertex3f(100.0f, (float)i, 0.0f);
|
||||||
}
|
}
|
||||||
glColor3f(0.5, 0.5, 0.5);
|
glColor3f(0.7, 0.7, 0.7);
|
||||||
for (int i = -100; i <= 100; i += 1) {
|
for (int i = -100; i <= 100; i += 1) {
|
||||||
glVertex3f((float)i, -100.0f, 0.0f);
|
glVertex3f((float)i, -100.0f, 0.0f);
|
||||||
glVertex3f((float)i, 100.0f, 0.0f);
|
glVertex3f((float)i, 100.0f, 0.0f);
|
||||||
@ -77,15 +105,16 @@ void FPGAViewWidget::paintGL()
|
|||||||
}
|
}
|
||||||
glEnd();
|
glEnd();
|
||||||
|
|
||||||
// Example triangle
|
glColor3f(0.1, 0.1, 0.1);
|
||||||
glBegin(GL_TRIANGLES);
|
glLineWidth(0.1);
|
||||||
glColor3f(1.0, 0.0, 0.0);
|
// Draw Bels
|
||||||
glVertex3f(-0.5, -0.5, 0);
|
for (auto bel : design->chip.getBels()) {
|
||||||
glColor3f(0.0, 1.0, 0.0);
|
for (auto &el : design->chip.getBelGraphics(bel))
|
||||||
glVertex3f(0.5, -0.5, 0);
|
drawElement(el);
|
||||||
glColor3f(0.0, 0.0, 1.0);
|
}
|
||||||
glVertex3f(0, 0.5, 0);
|
// Draw Frame Graphics
|
||||||
glEnd();
|
for (auto &el : design->chip.getFrameGraphics())
|
||||||
|
drawElement(el);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FPGAViewWidget::resizeGL(int width, int height)
|
void FPGAViewWidget::resizeGL(int width, int height)
|
||||||
|
@ -32,6 +32,7 @@ class FPGAViewWidget : public QOpenGLWidget, protected QOpenGLFunctions
|
|||||||
void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
|
void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
|
||||||
void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
|
void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
|
||||||
void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE;
|
void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE;
|
||||||
|
void drawElement(const GraphicElement &el);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_windowWidth;
|
int m_windowWidth;
|
||||||
|
Loading…
Reference in New Issue
Block a user