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() )); }
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); }