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;
}
Example #2
0
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) {
Example #3
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;
}