예제 #1
0
void read_error_image(const char *file) {
	ifstream iF(file);
	if (!iF) return;
	int w, h;
	iF >> w >> h;
	int s = w*h * 3;
	vector<float> data(s);
	float err, max_error = 0;
	for (int i = 0; i < s; i++) {
		iF >> err; data[i] = err;
		if (err > max_error) max_error = err;
	}
	for (int i = 0; i < s; i++) {
		data[i] /= max_error;
		data[i] *= 255.;
	}
	error_image.resize(w*h * 3);
	for(int y = 0 ; y<h;y++)
		for (int x = 0; x < w; x++) {
			int idx = y*w + x;
			error_image[idx * 3] = data[idx];
			error_image[idx * 3+1] = data[idx];
			error_image[idx * 3+1] = data[idx];
		}	
	int sss = 0;
}
예제 #2
0
bool readHashTable(HashTable &hT,const char *file) {
//	std::ofstream oF("sss.txt");	oF.close();

	std::ifstream iF(file);
	if (!iF) return false;
	int size;
	iF >> size;
	table_size = size;
	InitHashTable(hT);

	ElemType data; //student
	
	while (iF >> data.id) {
		iF >> data.score;
		InsertHashTable(hT, data);
	}

	return true;
}
예제 #3
0
파일: yarrgui.cpp 프로젝트: Yarr/Yarr
bool YarrGui::addFE(std::string fN){
    nlohmann::json j;
    std::ifstream iF(fN);
    if(!iF.is_open()){
        std::cerr << "Config file " << fN << " does not exist. Aborting... " << std::endl;
        return false;
    }
    try{
        iF >> j;
    }
    catch(std::invalid_argument){
        std::cerr << "File " << fN << " does not contain a valid configuration. Aborting... " << std::endl;
        iF.close();
        return false;
    }
    try{
        if(bk->isChannelUsed((unsigned int)j["FE-I4B"]["rxChannel"])){
            std::cerr << "Channel " << (unsigned int)j["FE-I4B"]["rxChannel"]
                      << " in config file " << fN
                      << " already used. Aborting... " << std::endl;
            iF.close();
            return false;
        }
    }
    catch(std::domain_error){
        std::cerr << "Missing txChannel/rxChannel field in config file " << fN
                  << ". Aborting... " << std::endl;
        iF.close();
        return false;
    }
    iF.close();
    bk->addFe(new Fei4(bk->tx,
                       (unsigned int)j["FE-I4B"]["txChannel"],
                       (unsigned int)j["FE-I4B"]["rxChannel"]),
              (unsigned int)j["FE-I4B"]["txChannel"],
              (unsigned int)j["FE-I4B"]["rxChannel"]);
    try{
        dynamic_cast<Fei4*>(bk->getLastFe())->fromFileJson(j);
    }
    catch(std::domain_error){
        std::cerr << "Config file " << fN
                  << " does not contain a valid configuration. Aborting... " << std::endl;
        return false;
    }

    tx->setCmdEnable(0x1 << (unsigned int)j["FE-I4B"]["rxChannel"]);
    dynamic_cast<Fei4*>(bk->getFe((unsigned int)j["FE-I4B"]["rxChannel"]))->configure();
    dynamic_cast<Fei4*>(bk->getFe((unsigned int)j["FE-I4B"]["rxChannel"]))->configurePixels();
    while(!(tx->isCmdEmpty())) {
        ;
    }

    std::this_thread::sleep_for(std::chrono::microseconds(1000));
    tx->setCmdEnable(bk->getTxMask());
    rx->setRxEnable(bk->getRxMask());

    QTreeWidgetItem * feTreeItem = new QTreeWidgetItem(ui->feTree);
    QTreeWidgetItem * feTreeItemId = new QTreeWidgetItem(feTreeItem);
    QTreeWidgetItem * feTreeItemTx = new QTreeWidgetItem(feTreeItem);
    QTreeWidgetItem * feTreeItemRx = new QTreeWidgetItem(feTreeItem);
    QTreeWidgetItem * feTreeItemCf = new QTreeWidgetItem(feTreeItem);
    QTreeWidgetItem * feTreeItemCk = new QTreeWidgetItem(feTreeItem);

    {
        std::string chipNameTmp;
        unsigned int chipIdTmp;
        unsigned int txChannelTmp;
        unsigned int rxChannelTmp;
        try{
            chipNameTmp = j["FE-I4B"]["name"];
        }
        catch(std::domain_error){
            std::cerr << "Config file " << fN << " has no \"name\" field. "
                      << "Defaulting to \"myChip\". " << std::endl;
            chipNameTmp = "myChip";
        }
        try{
            chipIdTmp = j["FE-I4B"]["Parameter"]["chipId"];
        }
        catch(std::domain_error){
            std::cerr << "Config file " << fN << " has no \"chipId\" field. "
                      << "Defaulting to 6. " << std::endl;
            chipIdTmp = 6;
        }
        txChannelTmp = j["FE-I4B"]["txChannel"];
        rxChannelTmp = j["FE-I4B"]["rxChannel"];

        feTreeItem->setText(0, QString::fromStdString(chipNameTmp));
        feTreeItemId->setText(0, "Chip ID");
        feTreeItemId->setText(1, QString::number(chipIdTmp));
        feTreeItemTx->setText(0, "TX Channel");
        feTreeItemTx->setText(1, QString::number(txChannelTmp));
        feTreeItemRx->setText(0, "RX Channel");
        feTreeItemRx->setText(1, QString::number(rxChannelTmp));
        feTreeItemCf->setText(0, "Config file");
        feTreeItemCf->setText(1, QString::fromStdString(fN));
    }

    QPushButton * b = new QPushButton("Edit config", this);
    ui->feTree->setItemWidget(feTreeItemCf, 2, b);
    QObject::connect(b, &QPushButton::clicked, this, [=](){
        EditCfgDialog d(dynamic_cast<Fei4*>(bk->getFe((unsigned int)j["FE-I4B"]["rxChannel"])),
                        QString::fromStdString(fN), this);
        d.exec();
    });

    feTreeItemCk->setText(0, "Scan");
    feTreeItemCk->setFlags(feTreeItemCk->flags() | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable);
    feTreeItemCk->setCheckState(1, Qt::Checked);

    feTreeItem->addChild(feTreeItemId);
    feTreeItem->addChild(feTreeItemTx);
    feTreeItem->addChild(feTreeItemRx);
    feTreeItem->addChild(feTreeItemCf);
    feTreeItem->addChild(feTreeItemCk);

    feTreeItem->setExpanded(true);

    return true;
}