int QNCLContourLine::loadColormap(QString definedColorMapName, float *colomaps, int max) { QDir colormapdir(colormapPath); QFileInfoList fileList; int i; fileList = colormapdir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries); for(i = 0; i < fileList.size(); i++) { if ((fileList.at(i)).completeBaseName() == definedColorMapName) { break; } } if (i >= fileList.size()) return 0; QString colormapFileName = fileList.at(i).absoluteFilePath(); char buffer[256] = {0}; QString lineText; QString rgbv; int r, g, b; int idx = 0; int count = 0; QFile colorFile(colormapFileName); colorFile.open(QIODevice::ReadOnly); while(!colorFile.atEnd()) { memset(buffer, 0, sizeof(buffer)); colorFile.readLine(buffer, 256); lineText = buffer; lineText = lineText.trimmed(); if (lineText.isNull() || lineText.isEmpty()) continue; if ((lineText.at(0) == '#') || (lineText.at(0) == ';')) continue; if ((lineText.left(7) == "ncolors") || (lineText.left(4) == "ntsc")) continue; idx = lineText.indexOf(' '); rgbv = lineText.left(idx); r = rgbv.toInt(); lineText = lineText.mid(idx + 1).trimmed(); idx = lineText.indexOf(' '); rgbv = lineText.left(idx); g = rgbv.toInt(); lineText = lineText.mid(idx + 1).trimmed(); b = lineText.toInt(); colomaps[3*count] = ((float)r)/255.; colomaps[3*count+1] = ((float)g)/255.; colomaps[3*count+2] = ((float)b)/255.; count++; if (count >= max) break; } colorFile.close(); return count; }
bool AssemblyPlugin::parseBinvox(const std::string& filename, LegoCloudNode* legoCloudNode) { //Credit: http://www.google.com/search?q=binvox typedef unsigned char byte; int version; int size; float tx, ty, tz; float scale; int depth, width, height; QFile colorFile(QString::fromStdString(filename)+".color"); QHash<int, int> colors; std::ifstream input; input.open(filename.c_str(),std::ios::binary); if (!input.is_open()) return false; // read header std::string line; input >> line; // #binvox if (line.compare("#binvox") != 0) { std::cerr << "Error: first line reads [" << line.c_str() << "] instead of [#binvox]" << std::endl; return false; } input >> version; //cout << "reading binvox version " << version << endl; depth = -1; int done = 0; while(input.good() && !done) { input >> line; if (line.compare("data") == 0) done = 1; else if (line.compare("dim") == 0) { input >> depth >> height >> width; } else if (line.compare("translate") == 0) {
FileManager::FileManager(IPEMain *parent) { this->parent = parent; this->imgType = 0; this->name = ""; qint32 cache32 = 0; quint8 *colorp = NULL; QFile colorFile(":/IPEMain/Resources/Bins/256.bin"); if(!colorFile.open(QFile::ReadOnly)) { QMessageBox::critical(parent, QObject::tr("ERROR"), QObject::tr("[0x104] Cannot read color table.")); return; } QDataStream colorIn(&colorFile); colorIn.setVersion(QDataStream::Qt_5_1); colorIn.setByteOrder(QDataStream::LittleEndian); for(int i = 0; i < 256; i++) { colorIn >> cache32; colorp = (quint8 *)&cache32; colorTable256[i][0] = colorp[2];//R colorTable256[i][1] = colorp[1];//G colorTable256[i][2] = colorp[0];//B } if(!colorIn.atEnd()) { QMessageBox::critical(parent, QObject::tr("ERROR"), QObject::tr("[0x105] Illegal color table.")); return; } colorFile.close(); QFile colorFile16(":/IPEMain/Resources/Bins/16.bin"); if(!colorFile16.open(QFile::ReadOnly)) { QMessageBox::critical(parent, QObject::tr("ERROR"), QObject::tr("[0x104] Cannot read color table.")); return; } QDataStream colorIn16(&colorFile16); colorIn16.setVersion(QDataStream::Qt_5_1); colorIn16.setByteOrder(QDataStream::LittleEndian); for(int i = 0; i < 16; i++) { colorIn16 >> cache32; colorp = (quint8 *)&cache32; colorTable16[i][0] = colorp[2];//R colorTable16[i][1] = colorp[1];//G colorTable16[i][2] = colorp[0];//B } if(!colorIn16.atEnd()) { QMessageBox::critical(parent, QObject::tr("ERROR"), QObject::tr("[0x105] Illegal color table.")); return; } colorFile16.close(); colorTable2[0][0] = 0; colorTable2[0][1] = 0; colorTable2[0][2] = 0; colorTable2[1][0] = 0xff; colorTable2[1][1] = 0xff; colorTable2[1][2] = 0xff; }