Esempio n. 1
0
void irtkQtBaseViewer::AddToDisplayedImages(irtkQtImageObject *imageObject, int index) {
    irtkImage* newImage = imageObject->GetImage();

    currentIndex = index;
    // If first image to be displayed make it target
    if (_image.size() == 0) {
        SetTarget(newImage);
        InitializeOrigin();
        InitializeDimensions();
        InitializeOrientation();
    }
    else if (index < _image.begin()->first) {
        SetTarget(newImage);
        UpdateCurrentSlice();

        InitializeDimensions();
        InitializeOrientation();
        CalculateOutputImages();
        /// check whether image dimensions agree
    }

    // If everything is fine add to maps
    AddToMaps(newImage, index);
    _lookupTable.insert(pair<int, irtkQtLookupTable*> ( index, imageObject->GetLookupTable() ));
}
Esempio n. 2
0
inline bool TableReader::parseentry(string line)
{
	size_t pos = line.find_first_not_of(HexAlphaNum, 0);

	if(pos == string::npos)
	{
		err.LineNumber = LineNumber;
		err.Description = "Entry only contains hex values";
		TableErrors.push_back(err);
		return false;
	}

	string hexstr = line.substr(0, pos);

	if((hexstr.length() % 2) != 0)
	{
		err.LineNumber = LineNumber;
		err.Description = "Hex token length is not a multiple of 2";
		TableErrors.push_back(err);
		return false;
	}

	string textstr;
	pos = line.find_first_of("=", 0);
	if(pos == line.length() - 1) // End of the line, blank entry means it's an error
	{
		err.LineNumber = LineNumber;
		err.Description = "Contains a blank entry";
		TableErrors.push_back(err);
		return false;
	}
	line.erase(0, pos+1);
	
	pos = line.find_first_of(":",0);
	if(pos == string::npos)
	{
		textstr = line;
	}
	else
	{
		int lpos = line.find_first_of("{",0);
		int rpos = line.find_first_not_of("0123456789}", pos+1);
		if(lpos!=string::npos && rpos==string::npos){
			line.replace(pos, 1, "}");
			textstr = line.substr(0, pos+1);
			if(ReaderType == ReadTypeDump){
				line.erase(0, pos+1);
				LINKED_ENTRY l;
				l.Text = textstr;
				l.Number = strtoul(line.c_str(), NULL, 10);
				transform(hexstr.begin(), hexstr.end(), hexstr.begin(), (int(*)(int))toupper);
				LinkedEntryMapIt it = LinkedEntries.lower_bound(hexstr);
				if(it != LinkedEntries.end() && !(LinkedEntries.key_comp()(hexstr, it->first))) // Multiple entries
				{
					err.LineNumber = LineNumber;
					err.Description = "Hex token part of the linked entry is already in the table.";
					TableErrors.push_back(err);
					return false;
				}
				else // Inserters only need to look up hex values
					LinkedEntries.insert(it, LinkedEntryMap::value_type(hexstr, l));
					
				if(LongestHex < (int)hexstr.length())
					LongestHex = (int)hexstr.length();					
				return true;
			}
		}
		else{
			err.LineNumber = LineNumber;
			err.Description = "Link CtrlCode format error";
			TableErrors.push_back(err);
			return false;		
		}
	}

	return AddToMaps(hexstr, textstr);
}