颜色映射图例,规格尺寸修改
This commit is contained in:
@@ -41,6 +41,10 @@ static void matIdentity(float m[16]) {
|
||||
m[0] = m[5] = m[10] = m[15] = 1;
|
||||
}
|
||||
|
||||
static QVector3D toColorVec(const QColor& color) {
|
||||
return QVector3D(color.redF(), color.greenF(), color.blueF());
|
||||
}
|
||||
|
||||
GLWidget::GLWidget(QWidget *parent)
|
||||
: QOpenGLWidget(parent) {
|
||||
setMinimumSize(640, 480);
|
||||
@@ -191,6 +195,30 @@ void GLWidget::setShowBg(bool on = true) {
|
||||
update();
|
||||
}
|
||||
|
||||
void GLWidget::setColorLow(const QColor& color) {
|
||||
const QVector3D next = toColorVec(color);
|
||||
if (m_colorLow == next)
|
||||
return;
|
||||
m_colorLow = next;
|
||||
update();
|
||||
}
|
||||
|
||||
void GLWidget::setColorMid(const QColor& color) {
|
||||
const QVector3D next = toColorVec(color);
|
||||
if (m_colorMid == next)
|
||||
return;
|
||||
m_colorMid = next;
|
||||
update();
|
||||
}
|
||||
|
||||
void GLWidget::setColorHigh(const QColor& color) {
|
||||
const QVector3D next = toColorVec(color);
|
||||
if (m_colorHigh == next)
|
||||
return;
|
||||
m_colorHigh = next;
|
||||
update();
|
||||
}
|
||||
|
||||
void GLWidget::initializeGL() {
|
||||
initializeOpenGLFunctions();
|
||||
|
||||
@@ -211,6 +239,14 @@ void GLWidget::initializeGL() {
|
||||
matIdentity(m_proj);
|
||||
}
|
||||
|
||||
void GLWidget::initGeometry_() {
|
||||
initDotTexture_();
|
||||
initBackgroundGeometry_();
|
||||
initPanelGeometry_();
|
||||
initDotGeometry_();
|
||||
initRoomGeometry_();
|
||||
}
|
||||
|
||||
void GLWidget::resizeGL(int w, int h) {
|
||||
glViewport(0, 0, w, h);
|
||||
}
|
||||
@@ -293,8 +329,11 @@ void GLWidget::paintGL() {
|
||||
// uMinV/uMaxV: 传感值范围,用于 fragment shader 把 value 映射成颜色
|
||||
m_dotsProg->setUniformValue("uMinV", float(m_min));
|
||||
m_dotsProg->setUniformValue("uMaxV", float(m_max));
|
||||
m_dotsProg->setUniformValue("uColorLow", m_colorLow);
|
||||
m_dotsProg->setUniformValue("uColorMid", m_colorMid);
|
||||
m_dotsProg->setUniformValue("uColorHigh", m_colorHigh);
|
||||
const int hasData = (m_hasData.load() || m_dotTex == 0) ? 1 : 0;
|
||||
m_dotsProg->setUniformValue("uHasData", 0);
|
||||
m_dotsProg->setUniformValue("uHasData", hasData);
|
||||
m_dotsProg->setUniformValue("uCameraPos", m_cameraPos);
|
||||
m_dotsProg->setUniformValue("uDotTex", 0);
|
||||
if (m_dotTex) {
|
||||
@@ -427,6 +466,7 @@ void GLWidget::mousePressEvent(QMouseEvent *event) {
|
||||
if (event->button() == Qt::LeftButton) {
|
||||
QVector3D world;
|
||||
const int index = pickDotIndex_(event->pos(), &world);
|
||||
qInfo() << "clicked index: " << index;
|
||||
if (index >= 0) {
|
||||
float value = 0.0f;
|
||||
int row = 0;
|
||||
@@ -1098,3 +1138,17 @@ void GLWidget::setShowGrid(bool on) {
|
||||
m_showGrid = on;
|
||||
update();
|
||||
}
|
||||
|
||||
void GLWidget::setRow(int row) {
|
||||
row = qMax(0, row);
|
||||
if (m_rows == row)
|
||||
return;
|
||||
setSpec(row, m_cols, m_pitch, m_dotRadius);
|
||||
}
|
||||
|
||||
void GLWidget::setCol(int col) {
|
||||
col = qMax(0, col);
|
||||
if (m_cols == col)
|
||||
return;
|
||||
setSpec(m_rows, col, m_pitch, m_dotRadius);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user