void FontManager::readFontMap(std::string path) { clearFonts(); if (path.length()==0) path=path_font_cfg; auto doc = resourceHandler->xml.getResource(path_font_cfg); auto cfg = doc->doc->first_node(); assert(!strcmp(to_lowercase(cfg->name()).c_str(),"fontset")); auto children = xop.getChildren(cfg); for (auto iter : children) { if (!strcmp(to_lowercase(iter->name()).c_str(),"font")){ auto attributes = xop.getAttributes(iter); fkey key; fpath path; for (auto attr : attributes) { std::string field = to_lowercase(attr->name()).c_str(); std::string val = attr->value(); if (streq(field,"use")) { key = std::string(val); continue; } if (streq(field, "path")) { path = std::string(val); continue; } } setFontPath(key,path); } } }
void MenuView::addOption(std::string optionText, const std::function<void(SDL_Event)> &callBack) { SDL_Rect rect = {0, 0, 0, 0}; auto button = new ButtonView(nullptr, rect); button->setText(optionText); button->setFontPath(FONT_CELTIC_HAND); button->setFontSize(0); button->setOnMouseUpCallback(callBack); button->setColor(getOptionBackgroundColor()); button->setTextColor(getOptionTextColor()); button->setFontSize(getOptionFontSize()); buttons.push_back(button); sizeButtons(); setCursorIndex(getCursorIndex()); }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), mGraphicsScene(0), mFontPath("fonts/"), mFreeTypeInitialized(false), mRendering(false), mLibrary(0), mFace(0), mResourceFace(0), mRawGlyphString(0), mShapedGlyphString(0), mRawVisualizer(0), mShapedVisualizer(0), mShapedRenderer(0), ui(new Ui::MainWindow) { ui->setupUi(this); setWindowTitle("BidiRenderer"); statusBar(); loadSamples(); ui->fontPathLE->setText(mFontPath); listFonts(); ui->levelsColorPickerLabel->setColor(Qt::blue); mFontSize = ui->fontSizeSB->value(); mPenWidth = ui->penWidthSB->value(); ui->lineWidthSlider->setRange(mFontSize * 4, mFontSize * 40); ui->lineWidthSlider->setValue(mFontSize * 40); if (FT_Init_FreeType(&mLibrary)) { statusBar()->showMessage("Error initializing FreeType", messageTimeout); return; } mFreeTypeInitialized = true; QFile fontFile(":/files/fonts/DejaVuSans.ttf"); if (fontFile.open(QIODevice::ReadOnly)) mResourceFaceData = fontFile.readAll(); if (FT_New_Memory_Face(mLibrary, reinterpret_cast<const FT_Byte*>(mResourceFaceData.constData()), fontFile.size(), 0, &mResourceFace)) { statusBar()->showMessage("Error loading DejaVuSans.ttf", messageTimeout); } else { if (FT_Set_Pixel_Sizes(mResourceFace, 0, mFontSize)) { statusBar()->showMessage("Error setting font pixel size", messageTimeout); FT_Done_Face(mResourceFace); mResourceFace = 0; } else { mFace = mResourceFace; } } mGraphicsScene = new QGraphicsScene(this); ui->graphicsView->setScene(mGraphicsScene); connect(ui->actionE_xit, SIGNAL(triggered()), this, SLOT(close())); connect(ui->action_Panel, SIGNAL(toggled(bool)), ui->dockWidget, SLOT(setVisible(bool))); connect(ui->dockWidget, SIGNAL(visibilityChanged(bool)), ui->action_Panel, SLOT(setChecked(bool))); connect(ui->textCombo->lineEdit(), SIGNAL(returnPressed()), ui->renderButton, SLOT(animateClick())); connect(ui->renderButton, SIGNAL(clicked()), this, SLOT(render())); connect(ui->rtlRB, SIGNAL(clicked()), this, SLOT(render())); connect(ui->ltrRB, SIGNAL(clicked()), this, SLOT(render())); connect(ui->autoRB, SIGNAL(clicked()), this, SLOT(render())); connect(ui->resolveScriptsCB, SIGNAL(clicked()), this, SLOT(render())); connect(ui->breakRunsCB, SIGNAL(clicked()), this, SLOT(render())); connect(ui->linesCB, SIGNAL(clicked()), this, SLOT(setVisualizerFlags())); connect(ui->levelsCB, SIGNAL(clicked()), this, SLOT(setVisualizerFlags())); connect(ui->runsCB, SIGNAL(clicked()), this, SLOT(setVisualizerFlags())); connect(ui->codePointsCB, SIGNAL(clicked()), this, SLOT(setVisualizerFlags())); connect(ui->glyphIndicesCB, SIGNAL(clicked()), this, SLOT(setVisualizerFlags())); connect(ui->charTypesCB, SIGNAL(clicked()), this, SLOT(setVisualizerFlags())); connect(ui->scriptsCB, SIGNAL(clicked()), this, SLOT(setVisualizerFlags())); connect(ui->geometriesCB, SIGNAL(clicked()), this, SLOT(setVisualizerFlags())); connect(ui->indicesCB, SIGNAL(clicked()), this, SLOT(setVisualizerFlags())); connect(ui->reorderedIndicesCB, SIGNAL(clicked()), this, SLOT(setVisualizerFlags())); connect(ui->paragraphCB, SIGNAL(clicked()), this, SLOT(setRendererFlags())); connect(ui->levelsGB, SIGNAL(clicked()), this, SLOT(setRendererFlags())); connect(ui->runsGB, SIGNAL(clicked()), this, SLOT(setRendererFlags())); connect(ui->levelsColorPickerLabel, SIGNAL(colorChanged(QColor)), this, SLOT(setRendererLevelColor(QColor))); connect(ui->runsColorPickerLabel, SIGNAL(colorChanged(QColor)), this, SLOT(setRendererRunColor(QColor))); connect(ui->shapeHarfBuzzRB, SIGNAL(clicked()), this, SLOT(render())); connect(ui->shapeFriBidiRB, SIGNAL(clicked()), this, SLOT(render())); connect(ui->removeZeroWidthCB, SIGNAL(clicked()), this, SLOT(render())); connect(ui->shapeFriBidiRB, SIGNAL(toggled(bool)), ui->removeZeroWidthCB, SLOT(setEnabled(bool))); connect(ui->fontPathButton, SIGNAL(clicked()), this, SLOT(setFontPath())); connect(ui->fontsCombo, SIGNAL(currentIndexChanged(QString)), this, SLOT(setFontFile(QString))); connect(ui->zoomSlider, SIGNAL(valueChanged(int)), ui->graphicsView, SLOT(setScale(int))); connect(ui->graphicsView, SIGNAL(scaleChanged(int)), ui->zoomSlider, SLOT(setValue(int))); connect(ui->lineWidthSlider, SIGNAL(valueChanged(int)), this, SLOT(setMaxLineWidth(int))); connect(ui->fontSizeSB, SIGNAL(valueChanged(int)), this, SLOT(setFontSize(int))); connect(ui->fontColorPickerLabel, SIGNAL(colorChanged(QColor)), this, SLOT(render())); connect(ui->penWidthSB, SIGNAL(valueChanged(int)), this, SLOT(setPenWidth(int))); }