void WatchVector::delMappingOptions(int idx) { /* Check if it's in use right now */ QVariant data; Mapping m; data = cbRed->itemData(cbRed->currentIndex()); m = getMappingFromInt(data.toInt()); if (m.index == idx) { cbRed->setCurrentIndex(0); } data = cbGreen->itemData(cbGreen->currentIndex()); m = getMappingFromInt(data.toInt()); if (m.index == idx) { cbGreen->setCurrentIndex(0); } data = cbBlue->itemData(cbBlue->currentIndex()); m = getMappingFromInt(data.toInt()); if (m.index == idx) { cbBlue->setCurrentIndex(0); } /* Delete options in comboboxes */ int map; m.index = idx; m.type = MAP_TYPE_VAR; map = getIntFromMapping(m); idx = cbRed->findData(QVariant(map)); cbRed->removeItem(idx); cbGreen->removeItem(idx); cbBlue->removeItem(idx); }
void WatchVector::addMappingOptions(int idx) { Mapping m; m.type = MAP_TYPE_VAR; m.index = idx; cbRed->addItem(m_qName[idx], QVariant(getIntFromMapping(m))); cbGreen->addItem(m_qName[idx], QVariant(getIntFromMapping(m))); cbBlue->addItem(m_qName[idx], QVariant(getIntFromMapping(m))); /* Check if this new mapping could be used */ int itemIndex; QVariant itemData; Mapping itemMapping; /* Red */ itemIndex = cbRed->currentIndex(); itemData = cbRed->itemData(itemIndex); itemMapping = getMappingFromInt(itemData.toInt()); if (itemMapping.type == MAP_TYPE_BLACK) { itemMapping.type = MAP_TYPE_VAR; itemMapping.index = idx; itemIndex = cbRed->findData(QVariant(getIntFromMapping(itemMapping))); cbRed->setCurrentIndex(itemIndex); on_tbMinRed_clicked(); on_tbMaxRed_clicked(); return; } /* Green */ itemIndex = cbGreen->currentIndex(); itemData = cbGreen->itemData(itemIndex); itemMapping = getMappingFromInt(itemData.toInt()); if (itemMapping.type == MAP_TYPE_BLACK) { itemMapping.type = MAP_TYPE_VAR; itemMapping.index = idx; itemIndex = cbGreen->findData(QVariant(getIntFromMapping(itemMapping))); cbGreen->setCurrentIndex(itemIndex); on_tbMinGreen_clicked(); on_tbMaxGreen_clicked(); return; } /* Blue */ itemIndex = cbBlue->currentIndex(); itemData = cbBlue->itemData(itemIndex); itemMapping = getMappingFromInt(itemData.toInt()); if (itemMapping.type == MAP_TYPE_BLACK) { itemMapping.type = MAP_TYPE_VAR; itemMapping.index = idx; itemIndex = cbBlue->findData(QVariant(getIntFromMapping(itemMapping))); cbBlue->setCurrentIndex(itemIndex); on_tbMinBlue_clicked(); on_tbMaxBlue_clicked(); return; } }
void WatchVector::getActiveChannels(PixelBox *channels[3]) { Mapping mappings[3]; mappings[0] = getMappingFromInt(cbRed->itemData(cbRed->currentIndex()).toInt()); mappings[1] = getMappingFromInt(cbGreen->itemData(cbGreen->currentIndex()).toInt()); mappings[2] = getMappingFromInt(cbBlue->itemData(cbBlue->currentIndex()).toInt()); for(int i=0; i<3;i++) { if (mappings[i].type != MAP_TYPE_BLACK && mappings[i].type != MAP_TYPE_WHITE) { channels[i] = m_pData[mappings[i].index]; } else { channels[i] = NULL; } } }
void WatchVector::on_tbMaxBlue_clicked() { Mapping m = getMappingFromInt(cbBlue->itemData(cbBlue->currentIndex()).toInt()); RangeMapping rm = getRangeMappingFromInt(cbMapBlue->itemData(cbMapBlue->currentIndex()).toInt()); if (m.type == MAP_TYPE_VAR) { switch (rm.range) { case RANGE_MAP_DEFAULT: dsMaxBlue->setValue(m_pData[m.index]->getMax()); break; case RANGE_MAP_POSITIVE: dsMaxBlue->setValue(MAX(m_pData[m.index]->getMax(), 0.0)); break; case RANGE_MAP_NEGATIVE: dsMaxBlue->setValue(MIN(m_pData[m.index]->getMax(), 0.0)); break; case RANGE_MAP_ABSOLUTE: dsMaxBlue->setValue(m_pData[m.index]->getAbsMax()); break; } } }
QImage* WatchVector::drawNewImage(bool useAlpha) { Mapping mappings[3]; RangeMapping rangemappings[3]; float minmax[3][2]; int x, y, i; int width, height; bool *pCover = NULL; //bool *pValid[3] = {NULL, NULL, NULL}; //float *pData[3] = {NULL, NULL, NULL}; /* Search for covermap */ for (i = 0; i < MAX_ATTACHMENTS; i++) { if (m_pData[i]) { pCover = m_pData[i]->getCoveragePointer(); } } /* Check if attached data is valid */ width = 0; height = 0; for (i = 0; i < MAX_ATTACHMENTS; i++) { if (m_pData[i]) { if (width == 0) { width = m_pData[i]->getWidth(); } else { if (width != m_pData[i]->getWidth()) { QMessageBox::critical(this, "Internal Error", "WatchVector is composed of differently sized float " "boxes.<BR>Please report this probem to " "<A HREF=\"mailto:[email protected]\">" "[email protected]</A>.", QMessageBox::Ok); } } if (height == 0) { height = m_pData[i]->getHeight(); } else { if (height != m_pData[i]->getHeight()) { QMessageBox::critical(this, "Internal Error", "WatchVector is composed of differently sized float " "boxes.<BR>Please report this probem to " "<A HREF=\"mailto:[email protected]\">" "[email protected]</A>.", QMessageBox::Ok); } } } } /* Apply mapping */ mappings[0] = getMappingFromInt(cbRed->itemData(cbRed->currentIndex()).toInt()); mappings[1] = getMappingFromInt(cbGreen->itemData(cbGreen->currentIndex()).toInt()); mappings[2] = getMappingFromInt(cbBlue->itemData(cbBlue->currentIndex()).toInt()); rangemappings[0] = getRangeMappingFromInt( cbMapRed->itemData(cbMapRed->currentIndex()).toInt()); rangemappings[1] = getRangeMappingFromInt( cbMapGreen->itemData(cbMapGreen->currentIndex()).toInt()); rangemappings[2] = getRangeMappingFromInt( cbMapBlue->itemData(cbMapBlue->currentIndex()).toInt()); minmax[0][0] = dsMinRed->value(); minmax[0][1] = fabs(dsMaxRed->value()- minmax[0][0]) > FLT_EPSILON ? dsMaxRed->value() : 1.0f + minmax[0][0]; minmax[1][0] = dsMinGreen->value(); minmax[1][1] = fabs(dsMaxGreen->value()- minmax[1][0]) > FLT_EPSILON ? dsMaxGreen->value() : 1.0f + minmax[1][0]; minmax[2][0] = dsMinBlue->value(); minmax[2][1] = fabs(dsMaxBlue->value()- minmax[2][0]) > FLT_EPSILON ? dsMaxBlue->value() : 1.0f + minmax[2][0]; //for(i = 0; i < 3; i++) { // if (mappings[i].type != MAP_TYPE_BLACK && // mappings[i].type != MAP_TYPE_WHITE) { // pData[i] = m_pData[mappings[i].index]->getDataPointer(); // pValid[i] = m_pData[mappings[i].index]->getDataMapPointer(); // } //} QImage *image = new QImage(width, height, useAlpha ? QImage::Format_ARGB32 : QImage::Format_RGB32); #if 1 if (mappings[0].type == MAP_TYPE_VAR && m_pData[mappings[0].index]) { m_pData[mappings[0].index]->setByteImageRedChannel(image, &mappings[0], &rangemappings[0], minmax[0], useAlpha); } else if (mappings[0].type == MAP_TYPE_WHITE) { setImageRedChannel(image, pCover, 255); } else { setImageRedChannel(image, pCover, 0); } if (mappings[1].type == MAP_TYPE_VAR && m_pData[mappings[1].index]) { m_pData[mappings[1].index]->setByteImageGreenChannel(image, &mappings[1], &rangemappings[1], minmax[1], useAlpha); } else if (mappings[1].type == MAP_TYPE_WHITE) { setImageGreenChannel(image, pCover, 255); } else { setImageGreenChannel(image, pCover, 0); } if (mappings[2].type == MAP_TYPE_VAR && m_pData[mappings[2].index]) { m_pData[mappings[2].index]->setByteImageBlueChannel(image, &mappings[2], &rangemappings[2], minmax[2], useAlpha); } else if (mappings[2].type == MAP_TYPE_WHITE) { setImageBlueChannel(image, pCover, 255); } else { setImageBlueChannel(image, pCover, 0); } #else for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { if (*pCover && ((pData[0] && *pValid[0]) || (pData[1] && *pValid[1]) || (pData[2] && *pValid[2]) || mappings[0].type != MAP_TYPE_VAR || mappings[1].type != MAP_TYPE_VAR || mappings[2].type != MAP_TYPE_VAR)) { QColor color; if (pData[0] && *pValid[0]++ && mappings[0].type == MAP_TYPE_VAR) { color.setRed(getMappedValueI(*pData[0]++, &mappings[0], &rangemappings[0], minmax[0])); } else if (mappings[0].type == MAP_TYPE_WHITE) { color.setRed(255); } else { color.setRed(0); } if (pData[1] && *pValid[1]++ && mappings[1].type == MAP_TYPE_VAR) { color.setGreen(getMappedValueI(*pData[1]++, &mappings[1], &rangemappings[1], minmax[1])); } else if (mappings[1].type == MAP_TYPE_WHITE) { color.setGreen(255); } else { color.setGreen(0); } if (pData[2] && *pValid[2]++ && mappings[2].type == MAP_TYPE_VAR) { color.setBlue(getMappedValueI(*pData[2]++, &mappings[2], &rangemappings[2], minmax[2])); } else if (mappings[2].type == MAP_TYPE_WHITE) { color.setBlue(255); } else { color.setBlue(0); } if (useAlpha) { image->setPixel(x, y, color.rgb()); } else { image->setPixel(x, y, color.rgb()); } } else { if (useAlpha) { image->setPixel(x, y, QColor(0, 0, 0).rgb()); } else { if ( ((x/8)%2) == ((y/8)%2)) { image->setPixel(x, y, QColor(255,255,255).rgb()); } else { image->setPixel(x, y, QColor(204,204,204).rgb()); } for (i = 0; i < 3; i++) { if (pData[i]) { pData[i]++; pValid[i]++; } } } } pCover++; } } #endif return image; }
void WatchVector::updateGUI() { int i; Mapping m[3]; RangeMapping rm[3]; m[0] = getMappingFromInt(cbRed->itemData(cbRed->currentIndex()).toInt()); m[1] = getMappingFromInt(cbGreen->itemData(cbGreen->currentIndex()).toInt()); m[2] = getMappingFromInt(cbBlue->itemData(cbBlue->currentIndex()).toInt()); rm[0] = getRangeMappingFromInt(cbMapRed->itemData(cbMapRed->currentIndex()).toInt()); rm[1] = getRangeMappingFromInt(cbMapGreen->itemData(cbMapGreen->currentIndex()).toInt()); rm[2] = getRangeMappingFromInt(cbMapBlue->itemData(cbMapBlue->currentIndex()).toInt()); QString title; for (i=0; i<3; i++) { switch (m[i].type) { case MAP_TYPE_BLACK: case MAP_TYPE_OFF: title += QString("black"); if (i == 0) { tbMinRed->setEnabled(false); tbMaxRed->setEnabled(false); dsMinRed->setEnabled(false); dsMaxRed->setEnabled(false); cbSyncRed->setEnabled(false); cbMapRed->setEnabled(false); } else if (i == 1) { tbMinGreen->setEnabled(false); tbMaxGreen->setEnabled(false); dsMinGreen->setEnabled(false); dsMaxGreen->setEnabled(false); cbSyncGreen->setEnabled(false); cbMapGreen->setEnabled(false); } else { tbMinBlue->setEnabled(false); tbMaxBlue->setEnabled(false); dsMinBlue->setEnabled(false); dsMaxBlue->setEnabled(false); cbSyncBlue->setEnabled(false); cbMapBlue->setEnabled(false); } break; case MAP_TYPE_WHITE: if (i==0) { title += QString("red"); tbMinRed->setEnabled(false); tbMaxRed->setEnabled(false); dsMinRed->setEnabled(false); dsMaxRed->setEnabled(false); cbSyncRed->setEnabled(false); cbMapRed->setEnabled(false); } else if (i == 1) { title += QString("green"); tbMinGreen->setEnabled(false); tbMaxGreen->setEnabled(false); dsMinGreen->setEnabled(false); dsMaxGreen->setEnabled(false); cbSyncGreen->setEnabled(false); cbMapGreen->setEnabled(false); } else { title += QString("blue"); tbMinBlue->setEnabled(false); tbMaxBlue->setEnabled(false); dsMinBlue->setEnabled(false); dsMaxBlue->setEnabled(false); cbSyncBlue->setEnabled(false); cbMapBlue->setEnabled(false); } break; case MAP_TYPE_VAR: switch (rm[i].range) { case RANGE_MAP_DEFAULT: if (i==0) { title += cbRed->itemText(cbRed->currentIndex()); } else if (i==1) { title += cbGreen->itemText(cbGreen->currentIndex()); } else { title += cbBlue->itemText(cbBlue->currentIndex()); } break; case RANGE_MAP_POSITIVE: title += QString("+("); if (i==0) { title += cbRed->itemText(cbRed->currentIndex()); } else if (i==1) { title += cbGreen->itemText(cbGreen->currentIndex()); } else { title += cbBlue->itemText(cbBlue->currentIndex()); } title += QString(")"); break; case RANGE_MAP_NEGATIVE: title += QString("-("); if (i==0) { title += cbRed->itemText(cbRed->currentIndex()); } else if (i==1) { title += cbGreen->itemText(cbGreen->currentIndex()); } else { title += cbBlue->itemText(cbBlue->currentIndex()); } title += QString(")"); break; case RANGE_MAP_ABSOLUTE: title += QString("|"); if (i==0) { title += cbRed->itemText(cbRed->currentIndex()); } else if (i==1) { title += cbGreen->itemText(cbGreen->currentIndex()); } else { title += cbBlue->itemText(cbBlue->currentIndex()); } title += QString("|"); break; } if (i == 0) { tbMinRed->setEnabled(true); tbMaxRed->setEnabled(true); dsMinRed->setEnabled(true); dsMaxRed->setEnabled(true); cbSyncRed->setEnabled(true); cbMapRed->setEnabled(true); switch (rm[0].range) { case RANGE_MAP_DEFAULT: tbMinRed->setText(QString::number(m_pData[m[0].index]->getMin())); tbMaxRed->setText(QString::number(m_pData[m[0].index]->getMax())); break; case RANGE_MAP_POSITIVE: tbMinRed->setText(QString::number(MAX(m_pData[m[0].index]->getMin(), 0.0))); tbMaxRed->setText(QString::number(MAX(m_pData[m[0].index]->getMax(), 0.0))); break; case RANGE_MAP_NEGATIVE: tbMinRed->setText(QString::number(MIN(m_pData[m[0].index]->getMin(), 0.0))); tbMaxRed->setText(QString::number(MIN(m_pData[m[0].index]->getMax(), 0.0))); break; case RANGE_MAP_ABSOLUTE: tbMinRed->setText(QString::number(m_pData[m[0].index]->getAbsMin())); tbMaxRed->setText(QString::number(m_pData[m[0].index]->getAbsMax())); break; } } else if (i == 1) { tbMinGreen->setEnabled(true); tbMaxGreen->setEnabled(true); dsMinGreen->setEnabled(true); dsMaxGreen->setEnabled(true); cbSyncGreen->setEnabled(true); cbMapGreen->setEnabled(true); switch (rm[1].range) { case RANGE_MAP_DEFAULT: tbMinGreen->setText(QString::number(m_pData[m[1].index]->getMin())); tbMaxGreen->setText(QString::number(m_pData[m[1].index]->getMax())); break; case RANGE_MAP_POSITIVE: tbMinGreen->setText(QString::number(MAX(m_pData[m[1].index]->getMin(), 0.0))); tbMaxGreen->setText(QString::number(MAX(m_pData[m[1].index]->getMax(), 0.0))); break; case RANGE_MAP_NEGATIVE: tbMinGreen->setText(QString::number(MIN(m_pData[m[1].index]->getMin(), 0.0))); tbMaxGreen->setText(QString::number(MIN(m_pData[m[1].index]->getMax(), 0.0))); break; case RANGE_MAP_ABSOLUTE: tbMinGreen->setText(QString::number(m_pData[m[1].index]->getAbsMin())); tbMaxGreen->setText(QString::number(m_pData[m[1].index]->getAbsMax())); break; } } else { tbMinBlue->setEnabled(true); tbMaxBlue->setEnabled(true); dsMinBlue->setEnabled(true); dsMaxBlue->setEnabled(true); cbSyncBlue->setEnabled(true); cbMapBlue->setEnabled(true); switch (rm[2].range) { case RANGE_MAP_DEFAULT: tbMinBlue->setText(QString::number(m_pData[m[2].index]->getMin())); tbMaxBlue->setText(QString::number(m_pData[m[2].index]->getMax())); break; case RANGE_MAP_POSITIVE: tbMinBlue->setText(QString::number(MAX(m_pData[m[2].index]->getMin(), 0.0))); tbMaxBlue->setText(QString::number(MAX(m_pData[m[2].index]->getMax(), 0.0))); break; case RANGE_MAP_NEGATIVE: tbMinBlue->setText(QString::number(MIN(m_pData[m[2].index]->getMin(), 0.0))); tbMaxBlue->setText(QString::number(MIN(m_pData[m[2].index]->getMax(), 0.0))); break; case RANGE_MAP_ABSOLUTE: tbMinBlue->setText(QString::number(m_pData[m[2].index]->getAbsMin())); tbMaxBlue->setText(QString::number(m_pData[m[2].index]->getAbsMax())); break; } } break; } if (i < 2) { title += QString(", "); } } setWindowTitle(title); }
void WatchGeoDataTree::delMappingOptions(int idx) { /* Check if it's in use right now */ QVariant data; Mapping m; data = cbRed->itemData(cbRed->currentIndex()); m = getMappingFromInt(data.toInt()); if (m.index == idx) { cbRed->setCurrentIndex(0); on_cbRed_activated(0); } data = cbGreen->itemData(cbGreen->currentIndex()); m = getMappingFromInt(data.toInt()); if (m.index == idx) { cbGreen->setCurrentIndex(0); on_cbGreen_activated(0); } data = cbBlue->itemData(cbBlue->currentIndex()); m = getMappingFromInt(data.toInt()); if (m.index == idx) { cbBlue->setCurrentIndex(0); on_cbBlue_activated(0); } data = cbX->itemData(cbX->currentIndex()); m = getMappingFromInt(data.toInt()); if (m.index == idx) { cbX->setCurrentIndex(0); on_cbX_activated(0); } data = cbY->itemData(cbY->currentIndex()); m = getMappingFromInt(data.toInt()); if (m.index == idx) { cbY->setCurrentIndex(0); on_cbY_activated(0); } data = cbZ->itemData(cbZ->currentIndex()); m = getMappingFromInt(data.toInt()); if (m.index == idx) { cbZ->setCurrentIndex(0); on_cbZ_activated(0); } /* Delete options in comboboxes */ int map; m.index = idx; m.type = MAP_TYPE_VAR; map = getIntFromMapping(m); idx = cbRed->findData(QVariant(map)); cbRed->removeItem(idx); for (int i = idx; i < cbRed->count(); i++) { m = getMappingFromInt(cbRed->itemData(i).toInt()); m.index--; cbRed->setItemData(i, getIntFromMapping(m)); } idx = cbGreen->findData(QVariant(map)); cbGreen->removeItem(idx); for (int i = idx; i < cbGreen->count(); i++) { m = getMappingFromInt(cbGreen->itemData(i).toInt()); m.index--; cbGreen->setItemData(i, getIntFromMapping(m)); } idx = cbBlue->findData(QVariant(map)); cbBlue->removeItem(idx); for (int i = idx; i < cbBlue->count(); i++) { m = getMappingFromInt(cbBlue->itemData(i).toInt()); m.index--; cbBlue->setItemData(i, getIntFromMapping(m)); } idx = cbX->findData(QVariant(map)); cbX->removeItem(idx); for (int i = idx; i < cbX->count(); i++) { m = getMappingFromInt(cbX->itemData(i).toInt()); m.index--; cbX->setItemData(i, getIntFromMapping(m)); } idx = cbY->findData(QVariant(map)); cbY->removeItem(idx); for (int i = idx; i < cbY->count(); i++) { m = getMappingFromInt(cbY->itemData(i).toInt()); m.index--; cbY->setItemData(i, getIntFromMapping(m)); } idx = cbZ->findData(QVariant(map)); cbZ->removeItem(idx); for (int i = idx; i < cbZ->count(); i++) { m = getMappingFromInt(cbZ->itemData(i).toInt()); m.index--; cbZ->setItemData(i, getIntFromMapping(m)); } m_qGLscatter->updateGL(); }