コード例 #1
0
ファイル: ScatteringAngle.cpp プロジェクト: tomosu/TinyPT
MaterialDataFiles_t SetMaterialFiles()
{
    MaterialDataFiles_t material_files;
    std::string elementDir("../../Data/MaterialData/PhotonCrossSection");
    std::string coh("../../Data/MaterialData/XrayFormFactor/pgs5form_X100_Z100.dat");
    std::string incoh("../../Data/MaterialData/XrayFormFactor/incoh_X45_Z100.dat");
    std::string k_alpha("../../Data/MaterialData/CharacteristicXray/CharacteristicXrayK_alpha_Z100.dat");

    material_files.PhotonCrossSectionDir = elementDir;
    material_files.CoherentFilepath = coh;
    material_files.IncoherentFilepath = incoh;
    material_files.K_alphaFilepath = k_alpha;

    return material_files;
}
コード例 #2
0
ファイル: mainwindow.cpp プロジェクト: hrace009/pw-patcher
void MainWindow::applyPatch(const QString &fileName)
{
    ui->btnPatch->setEnabled(false);
    ui->btnStart->setEnabled(false);

    ui->animation->start();

    QFutureWatcher<void> *future = new QFutureWatcher<void>();
    connect(future, &QFutureWatcher<void>::finished, [this,future]() {
        ui->animation->stop();

        ui->btnStart->setEnabled(true);
        ui->btnPatch->setEnabled(true);

        refTask = NULL;

        future->deleteLater();
    });

    future->setFuture(QtConcurrent::run([=](const QString &fileName) {
        QStringList args;
        QProcess task; refTask = &task;

        args << "x" << fileName << "-y" << "-o..\\";
        task.start("bin\\7za.exe", args);
        task.waitForFinished(-1);

        args.clear(); args << "*.pck.b64.files";
        QDir elementDir("..\\element");
        QStringList packs = elementDir.entryList(args, QDir::Dirs);

        for (int i = 0; i < packs.size(); i++)
        {
            QString source = packs.at(i).toLocal8Bit().constData();
            QString dest = source.left(source.indexOf('.'));
            QString pck = dest + ".pck";
            QString pkx = dest + ".pkx";

            QString originalWorkingDir = QDir::current().dirName();
            QDir::setCurrent("..\\element");

            if (QFile::exists(pkx))
            {
                // TODO: merge *.pck and *.pkx
                args.clear(); args << "/c" << "copy" << "/b" << pck+"+"+pkx << pck;
                task.start("cmd.exe", args);
                task.waitForFinished(-1);
                QFile::remove(pkx);
            }

            // TODO: merge source folder into *.pck
            args.clear(); args << "-pw" << "-ap" << source;
            task.start("bin\\sPCK.exe", args);
            task.waitForFinished(-1);

            // TODO: split *.pck into *.pkx
            if (QFile(pck).size() > 2147483392)
            {
                args.clear(); args << pck << "2147483392";
                task.start("bin\\split.exe", args);
                task.waitForFinished(-1);

                QFile::remove(pck);
                QFile::rename(pck + ".1", pck);
                QFile::rename(pck + ".2", pkx);
            }

            // TODO: delete source folder recursive
            QDir(source).removeRecursively();


            QDir::setCurrent(originalWorkingDir);
        }

    }, fileName));
}