99 vector<QString> result;
101 QString str =
toString().remove(QRegExp(
"^\\+"));
103 QStringList strSplit = str.split(
",", QString::SkipEmptyParts);
104 foreach (QString commaTok, strSplit) {
106 if(commaTok.contains(
'-')) {
108 int start =
toInt(commaTok.mid(0, commaTok.indexOf(
"-")));
109 int end =
toInt(commaTok.mid(commaTok.indexOf(
"-") + 1));
111 direction = (start <= end) ? 1 : -1;
113 for(
int band = start; band != end; band += direction) {
120 result.push_back(commaTok);
138 bool CubeAttributeInput::isBandRange(QString attribute)
const {
139 return QRegExp(
"[0-9,\\-]+").exactMatch(attribute);
145 for(
unsigned int i = 0; i < bands.size(); i++) {
159 result.append(&CubeAttributeInput::isBandRange);
186 if (pixelTypeAtts.isEmpty() || pixelTypeAtts.last() ==
"PROPAGATE")
194 return attributeList(&CubeAttributeOutput::isRange).isEmpty();
288 if (!formatList.isEmpty()) {
289 QString formatString = formatList.last();
291 if (formatString ==
"BSQ" || formatString ==
"BANDSEQUENTIAL")
306 &CubeAttributeOutput::isFileFormat);
311 double result =
Null;
314 QString range =
attributeList(&CubeAttributeOutput::isRange).last();
317 if (rangeList.count() == 2 && rangeList.first() !=
"")
318 result =
toDouble(rangeList.first());
326 double result =
Null;
329 QString range =
attributeList(&CubeAttributeOutput::isRange).last();
332 if (rangeList.count() == 2 && rangeList.last() !=
"")
333 result =
toDouble(rangeList.last());
380 QString pixelTypeAtt =
attributeList(&CubeAttributeOutput::isPixelType).last();
382 if(pixelTypeAtt ==
"8BIT" || pixelTypeAtt ==
"8-BIT" || pixelTypeAtt ==
"UNSIGNEDBYTE") {
383 result = UnsignedByte;
385 else if(pixelTypeAtt ==
"16BIT" || pixelTypeAtt ==
"16-BIT" || pixelTypeAtt ==
"SIGNEDWORD") {
388 else if(pixelTypeAtt ==
"16UBIT" || pixelTypeAtt ==
"16-UBIT" || pixelTypeAtt ==
"UNSIGNEDWORD") {
389 result = UnsignedWord;
391 else if(pixelTypeAtt ==
"32BIT" || pixelTypeAtt ==
"32-BIT" || pixelTypeAtt ==
"REAL") {
414 if (!labelAttachmentAtts.isEmpty()) {
415 QString labelAttachmentAtt = labelAttachmentAtts.last();
417 if (labelAttachmentAtt ==
"DETACHED")
419 else if (labelAttachmentAtt ==
"EXTERNAL")
427 bool CubeAttributeOutput::isByteOrder(QString attribute)
const {
428 return QRegExp(
"(M|L)SB").exactMatch(attribute);
432 bool CubeAttributeOutput::isFileFormat(QString attribute)
const {
433 return QRegExp(
"(BANDSEQUENTIAL|BSQ|TILE)").exactMatch(attribute);
437 bool CubeAttributeOutput::isLabelAttachment(QString attribute)
const {
438 return QRegExp(
"(ATTACHED|DETACHED|EXTERNAL)").exactMatch(attribute);
442 bool CubeAttributeOutput::isPixelType(QString attribute)
const {
443 return QRegExp(
"(8-?BIT|16-?BIT|32-?BIT|UNSIGNEDBYTE|SIGNEDWORD|UNSIGNEDWORD|REAL)").exactMatch(attribute);
448 bool CubeAttributeOutput::isRange(QString attribute)
const {
449 return QRegExp(
"[\\-+E0-9.]*:[\\-+E0-9.]*").exactMatch(attribute);
454 QString result =
"Tile";
457 result =
"BandSequential";
468 if (!byteOrderAtts.isEmpty()) {
469 QString byteOrderAtt = byteOrderAtts.last();
470 result = (byteOrderAtt ==
"LSB")? Lsb : Msb;
484 &CubeAttributeOutput::isByteOrder);
491 result.append(&CubeAttributeOutput::isByteOrder);
492 result.append(&CubeAttributeOutput::isFileFormat);
493 result.append(&CubeAttributeOutput::isLabelAttachment);
494 result.append(&CubeAttributeOutput::isPixelType);
495 result.append(&CubeAttributeOutput::isRange);
The label is pointing to an external DN file - the label is also external to the data.
const double Null
Value for an Isis Null pixel.
QString byteOrderString() const
Return the byte order as a string.
bool propagateMinimumMaximum() const
Return true if the min/max are to be propagated from an input cube.
double maximum() const
Return the output cube attribute maximum.
bool propagatePixelType() const
Return true if the pixel type is to be propagated from an input cube.
File name manipulation and expansion.
int toInt(const QString &string)
Global function to convert from a string to an integer.
QString PixelTypeName(Isis::PixelType pixelType)
Returns string name of PixelType enumeration entered as input parameter.
QStringList attributeList(bool(CubeAttributeOutput::*tester)(QString) const) const
Get a list of attributes that the tester returns true on.
ByteOrder
Tests the current architecture for byte order.
void setAttributes(const FileName &fileName)
Replaces the current attributes with the attributes in the given file name.
void setLabelAttachment(LabelAttachment attachment)
Set the label attachment type to the parameter value.
void setFileFormat(Cube::Format fmt)
Set the format to the fmt parameter.
QString toString(bool boolToConvert)
Global function to convert a boolean to a string.
double toDouble(const QString &string)
Global function to convert from a string to a double.
PixelType
Enumerations for Isis Pixel Types.
CubeAttributeOutput()
Constructs an empty CubeAttributeOutput.
The input label is in a separate data file from the image.
Cubes are stored in tile format, that is the order of the pixels in the file (on disk) is BSQ within ...
void setAttribute(QString newValue, bool(CubeAttributeOutput::*tester)(QString) const)
Set the attribute(s) for which tester returns true to newValue.
Manipulate and parse attributes of output cube filenames.
bool IsLsb()
Return true if this host is an LSB first machine and false if it is not.
QString LabelAttachmentName(LabelAttachment labelType)
Return the string representation of the contents of a variable of type LabelAttachment.
Cube::Format fileFormat() const
Return the file format an Cube::Format.
bool IsSpecial(const double d)
Returns if the input pixel is special.
The input label is embedded in the image file.
double minimum() const
Return the output cube attribute minimum.
void setPixelType(PixelType type)
Set the pixel type to that given by the parameter.
void setMinimum(double min)
Set the output cube attribute minimum.
Cubes are stored in band-sequential format, that is the order of the pixels in the file (on disk) is:...
QString fileFormatString() const
Return the file format as a string.
~CubeAttributeOutput()
Destroys the object.
ByteOrder byteOrder() const
Return the byte order as an Isis::ByteOrder.
Parent class for CubeAttributeInput and CubeAttributeOutput.
QString toString() const
Return a string-representation of this cube attributes.
LabelAttachment
Input cube label type tracker.
Format
These are the possible storage formats of Isis3 cubes.
void setByteOrder(ByteOrder order)
Set the order according to the parameter order.
void setMaximum(double max)
Set the output cube attribute maximum.
PixelType pixelType() const
Return the pixel type as an Isis::PixelType.