コード例 #1
0
ファイル: ImportDialog.cpp プロジェクト: BogusCurry/hifi
QIcon HiFiIconProvider::icon(QFileIconProvider::IconType type) const {

    switchToResourcesParentIfRequired();

    // types
    // Computer, Desktop, Trashcan, Network, Drive, Folder, File
    QString typeString;

    switch (type) {
        case QFileIconProvider::Computer:
            typeString = "computer";
            break;

        case QFileIconProvider::Desktop:
            typeString = "desktop";
            break;

        case QFileIconProvider::Trashcan:
        case QFileIconProvider::Network:
        case QFileIconProvider::Drive:
        case QFileIconProvider::Folder:
            typeString = "folder";
            break;

        default:
            typeString = "file";
            break;
    }

    return QIcon("resources/icons/" + typeString + ".svg");
}
コード例 #2
0
ファイル: GlowEffect.cpp プロジェクト: BogusCurry/hifi
void GlowEffect::init() {
    if (_initialized) {
        qDebug("[ERROR] GlowEffeect is already initialized.");
        return;
    }

    switchToResourcesParentIfRequired();
    
    _addProgram = createProgram("glow_add");
    _horizontalBlurProgram = createProgram("horizontal_blur");
    _verticalBlurAddProgram = createProgram("vertical_blur_add");
    _verticalBlurProgram = createProgram("vertical_blur");
    _addSeparateProgram = createProgram("glow_add_separate");
    _diffuseProgram = createProgram("diffuse");
    
    _verticalBlurAddProgram->bind();
    _verticalBlurAddProgram->setUniformValue("horizontallyBlurredTexture", 1);
    _verticalBlurAddProgram->release();
    
    _addSeparateProgram->bind();
    _addSeparateProgram->setUniformValue("blurredTexture", 1);
    _addSeparateProgram->release();
    
    _diffuseProgram->bind();
    _diffuseProgram->setUniformValue("diffusedTexture", 1);
    _diffuseProgram->release();
    
    _diffusionScaleLocation = _diffuseProgram->uniformLocation("diffusionScale");

    _initialized = true;
}
コード例 #3
0
ファイル: PieMenu.cpp プロジェクト: BogusCurry/hifi
void PieMenu::init(const char *fileName, int screenWidth, int screenHeight) {
    // Load SVG
    switchToResourcesParentIfRequired();
    QSvgRenderer renderer((QString) QString(fileName));

    // Prepare a QImage with desired characteritisc
    QImage image(2 * _radiusExtern, 2 * _radiusExtern, QImage::Format_ARGB32);
    image.fill(0x0);

    // Get QPainter that paints to the image
    QPainter painter(&image);
    renderer.render(&painter);

    //get the OpenGL-friendly image
    _textureImage = QGLWidget::convertToGLFormat(image);

    glGenTextures(1, &_textureID);
    glBindTexture(GL_TEXTURE_2D, _textureID);

    //generate the texture
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
                  _textureImage.width(),
                  _textureImage.height(),
                  0, GL_RGBA, GL_UNSIGNED_BYTE,
                  _textureImage.bits());

    //texture parameters
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
}
コード例 #4
0
ファイル: MetavoxelSystem.cpp プロジェクト: BogusCurry/hifi
void MetavoxelSystem::init() {
    if (!_program.isLinked()) {
        switchToResourcesParentIfRequired();
        _program.addShaderFromSourceFile(QGLShader::Vertex, "resources/shaders/metavoxel_point.vert");
        _program.link();
       
        _pointScaleLocation = _program.uniformLocation("pointScale");
    }
    
    NodeList* nodeList = NodeList::getInstance();
    
    connect(nodeList, SIGNAL(nodeAdded(SharedNodePointer)), SLOT(nodeAdded(SharedNodePointer)));
    connect(nodeList, SIGNAL(nodeKilled(SharedNodePointer)), SLOT(nodeKilled(SharedNodePointer)));
    
    _buffer.setUsagePattern(QOpenGLBuffer::DynamicDraw);
    _buffer.create();
}
コード例 #5
0
void MetavoxelSystem::init() {
    if (!_program.isLinked()) {
        switchToResourcesParentIfRequired();
        _program.addShaderFromSourceFile(QGLShader::Vertex, "resources/shaders/metavoxel_point.vert");
        _program.link();
       
        _pointScaleLocation = _program.uniformLocation("pointScale");
    }
    
    AttributeRegistry::getInstance()->configureScriptEngine(&_scriptEngine);
    
    QFile scriptFile("resources/scripts/sphere.js");
    scriptFile.open(QIODevice::ReadOnly);
    QScriptValue guideFunction = _scriptEngine.evaluate(QTextStream(&scriptFile).readAll());
    _data.setAttributeValue(MetavoxelPath(), AttributeValue(AttributeRegistry::getInstance()->getGuideAttribute(),
        encodeInline(PolymorphicDataPointer(new ScriptedMetavoxelGuide(guideFunction)))));
    
    _buffer.setUsagePattern(QOpenGLBuffer::DynamicDraw);
    _buffer.create();
}
コード例 #6
0
ファイル: ImportDialog.cpp プロジェクト: BogusCurry/hifi
QIcon HiFiIconProvider::icon(const QFileInfo &info) const {
    switchToResourcesParentIfRequired();
    const QString ext = info.suffix().toLower();

    if (info.isDir()) {
        if (info.absoluteFilePath() == QDir::homePath()) {
            return QIcon("resources/icons/home.svg");
        } else if (info.absoluteFilePath() == DESKTOP_LOCATION) {
            return QIcon("resources/icons/desktop.svg");
        } else if (info.absoluteFilePath() == QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)) {
            return QIcon("resources/icons/documents.svg");
        }
        return QIcon("resources/icons/folder.svg");
    }

    QFileInfo iconFile("resources/icons/" + iconsMap[ext]);
    if (iconFile.exists() && iconFile.isFile()) {
        return QIcon(iconFile.filePath());
    }

    return QIcon("resources/icons/file.svg");
}
コード例 #7
0
ファイル: ImportDialog.cpp プロジェクト: BogusCurry/hifi
void ImportDialog::setImportTypes() {

    switchToResourcesParentIfRequired();
    QFile config("resources/config/config.json");
    config.open(QFile::ReadOnly | QFile::Text);
    QJsonDocument document = QJsonDocument::fromJson(config.readAll());
    if (!document.isNull() && !document.isEmpty()) {

        QString importFormatsInfo;
        QString importFormatsFilterList;
        QHash<QString, QString> iconsMap;

        QJsonObject configObject = document.object();
        if (!configObject.isEmpty()) {
            QJsonArray fileFormats = configObject["importFormats"].toArray();
            int formatsCounter = 0;
            foreach (const QJsonValue& fileFormat, fileFormats) {
                QJsonObject fileFormatObject = fileFormat.toObject();

                QString ext(fileFormatObject["extension"].toString());
                QString icon(fileFormatObject.value("icon").toString());

                if (formatsCounter > 0) {
                    importFormatsInfo.append(",");
                }

                // set ' or' on last import type text
                if (formatsCounter == fileFormats.count() - 1) {
                    importFormatsInfo.append(" or");
                }

                importFormatsFilterList.append(QString("*.%1 ").arg(ext));
                importFormatsInfo.append(" .").append(ext);
                iconsMap[ext] = icon;
                formatsCounter++;
            }
コード例 #8
0
ファイル: GlowEffect.cpp プロジェクト: rgegriff/hifi
void GlowEffect::init() {
    switchToResourcesParentIfRequired();
    
    _addProgram = createProgram("glow_add");
    _horizontalBlurProgram = createProgram("horizontal_blur");
    _verticalBlurAddProgram = createProgram("vertical_blur_add");
    _verticalBlurProgram = createProgram("vertical_blur");
    _addSeparateProgram = createProgram("glow_add_separate");
    _diffuseProgram = createProgram("diffuse");
    
    _verticalBlurAddProgram->bind();
    _verticalBlurAddProgram->setUniformValue("horizontallyBlurredTexture", 1);
    _verticalBlurAddProgram->release();
    
    _addSeparateProgram->bind();
    _addSeparateProgram->setUniformValue("blurredTexture", 1);
    _addSeparateProgram->release();
    
    _diffuseProgram->bind();
    _diffuseProgram->setUniformValue("diffusedTexture", 1);
    _diffuseProgram->release();
    
    _diffusionScaleLocation = _diffuseProgram->uniformLocation("diffusionScale");
}
コード例 #9
0
void AmbientOcclusionEffect::init() {
    switchToResourcesParentIfRequired();
    
    _occlusionProgram = new ProgramObject();
    _occlusionProgram->addShaderFromSourceFile(QGLShader::Vertex, "resources/shaders/ambient_occlusion.vert");
    _occlusionProgram->addShaderFromSourceFile(QGLShader::Fragment, "resources/shaders/ambient_occlusion.frag");
    _occlusionProgram->link();
    
    // create the sample kernel: an array of spherically distributed offset vectors
    const int SAMPLE_KERNEL_SIZE = 16;
    QVector3D sampleKernel[SAMPLE_KERNEL_SIZE];
    for (int i = 0; i < SAMPLE_KERNEL_SIZE; i++) {
        // square the length in order to increase density towards the center
        glm::vec3 vector = glm::sphericalRand(1.0f);
        float scale = randFloat();
        const float MIN_VECTOR_LENGTH = 0.01f;
        const float MAX_VECTOR_LENGTH = 1.0f;
        vector *= glm::mix(MIN_VECTOR_LENGTH, MAX_VECTOR_LENGTH, scale * scale);
        sampleKernel[i] = QVector3D(vector.x, vector.y, vector.z);
    }
    
    _occlusionProgram->bind();
    _occlusionProgram->setUniformValue("depthTexture", 0);
    _occlusionProgram->setUniformValue("rotationTexture", 1);
    _occlusionProgram->setUniformValueArray("sampleKernel", sampleKernel, SAMPLE_KERNEL_SIZE);
    _occlusionProgram->setUniformValue("radius", 0.1f);
    _occlusionProgram->release();
    
    _nearLocation = _occlusionProgram->uniformLocation("near");
    _farLocation = _occlusionProgram->uniformLocation("far");
    _leftBottomLocation = _occlusionProgram->uniformLocation("leftBottom");
    _rightTopLocation = _occlusionProgram->uniformLocation("rightTop");
    _noiseScaleLocation = _occlusionProgram->uniformLocation("noiseScale");
    
    // generate the random rotation texture
    glGenTextures(1, &_rotationTextureID);
    glBindTexture(GL_TEXTURE_2D, _rotationTextureID);
    const int ELEMENTS_PER_PIXEL = 3;
    unsigned char rotationData[ROTATION_WIDTH * ROTATION_HEIGHT * ELEMENTS_PER_PIXEL];
    unsigned char* rotation = rotationData;
    for (int i = 0; i < ROTATION_WIDTH * ROTATION_HEIGHT; i++) {
        glm::vec3 randvec = glm::sphericalRand(1.0f);
        *rotation++ = ((randvec.x + 1.0f) / 2.0f) * 255.0f;
        *rotation++ = ((randvec.y + 1.0f) / 2.0f) * 255.0f;
        *rotation++ = ((randvec.z + 1.0f) / 2.0f) * 255.0f;
    }
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, ROTATION_WIDTH, ROTATION_HEIGHT, 0, GL_RGB, GL_UNSIGNED_BYTE, rotationData);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glBindTexture(GL_TEXTURE_2D, 0);
    
    _blurProgram = new ProgramObject();
    _blurProgram->addShaderFromSourceFile(QGLShader::Vertex, "resources/shaders/ambient_occlusion.vert");
    _blurProgram->addShaderFromSourceFile(QGLShader::Fragment, "resources/shaders/occlusion_blur.frag");
    _blurProgram->link();
    
    _blurProgram->bind();
    _blurProgram->setUniformValue("originalTexture", 0);
    _blurProgram->release();
    
    _blurScaleLocation = _blurProgram->uniformLocation("blurScale");
}
コード例 #10
0
ファイル: Audio.cpp プロジェクト: Issacchaos/hifi
void Audio::init(QGLWidget *parent) {
    switchToResourcesParentIfRequired();
    _micTextureId = parent->bindTexture(QImage("./resources/images/mic.svg"));
    _muteTextureId = parent->bindTexture(QImage("./resources/images/mute.svg"));
}
コード例 #11
0
ファイル: ImportDialog.cpp プロジェクト: BogusCurry/hifi
void ImportDialog::setLayout() {

    // set ObjectName used in qss for styling
    _importButton.setObjectName("importButton");
    _cancelButton.setObjectName("cancelButton");

    // set fixed size
    _importButton.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    _cancelButton.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);

    // hide unused embedded widgets in QFileDialog
    QWidget* widget = findChild<QWidget*>("lookInCombo");
    widget->hide();

    widget = findChild<QWidget*>("backButton");
    widget->hide();

    widget = findChild<QWidget*>("forwardButton");
    widget->hide();

    widget = findChild<QWidget*>("toParentButton");
    widget->hide();

    widget = findChild<QWidget*>("newFolderButton");
    widget->hide();

    widget = findChild<QWidget*>("listModeButton");
    widget->hide();

    widget = findChild<QWidget*>("detailModeButton");
    widget->hide();

    widget = findChild<QWidget*>("fileNameEdit");
    widget->hide();

    widget = findChild<QWidget*>("fileTypeCombo");
    widget->hide();

    widget = findChild<QWidget*>("fileTypeLabel");
    widget->hide();

    widget = findChild<QWidget*>("fileNameLabel");
    widget->hide();

    widget = findChild<QWidget*>("buttonBox");
    widget->hide();

    QSplitter* splitter = findChild<QSplitter*>("splitter");
    splitter->setHandleWidth(0);

    // remove blue outline on Mac
    widget = findChild<QWidget*>("sidebar");
    widget->setAttribute(Qt::WA_MacShowFocusRect, false);

    widget = findChild<QWidget*>("treeView");
    widget->setAttribute(Qt::WA_MacShowFocusRect, false);

    switchToResourcesParentIfRequired();
    QFile styleSheet("resources/styles/import_dialog.qss");
    if (styleSheet.open(QIODevice::ReadOnly)) {
        setStyleSheet(styleSheet.readAll());
    }

}