コード例 #1
0
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);
}
コード例 #2
0
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;
    }
}
コード例 #3
0
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;
		}
	}
}
コード例 #4
0
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;
		}
	}
}
コード例 #5
0
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;
}
コード例 #6
0
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);
}
コード例 #7
0
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();
}