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"); }
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; }
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); }
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(); }
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(); }
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"); }
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++; }
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"); }
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"); }
void Audio::init(QGLWidget *parent) { switchToResourcesParentIfRequired(); _micTextureId = parent->bindTexture(QImage("./resources/images/mic.svg")); _muteTextureId = parent->bindTexture(QImage("./resources/images/mute.svg")); }
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()); } }