[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] veeki-gsoc-experimental 1f0fdfb 5/7: Added variable fu
From: |
Veeki Yadav |
Subject: |
[freetype2-demos] veeki-gsoc-experimental 1f0fdfb 5/7: Added variable functionalities |
Date: |
Wed, 17 Jul 2019 01:12:12 -0400 (EDT) |
branch: veeki-gsoc-experimental
commit 1f0fdfb6a5df802adaccb0a5bafb164254762c95
Author: gevic <address@hidden>
Commit: gevic <address@hidden>
Added variable functionalities
---
src/ftinspect/engine/engine.cpp | 21 ++++++
src/ftinspect/engine/engine.hpp | 13 +++-
src/ftinspect/maingui.cpp | 163 ++++++++++++++++++++++++++++++++--------
src/ftinspect/maingui.hpp | 34 +++++++--
4 files changed, 190 insertions(+), 41 deletions(-)
diff --git a/src/ftinspect/engine/engine.cpp b/src/ftinspect/engine/engine.cpp
index f721703..b8c751d 100644
--- a/src/ftinspect/engine/engine.cpp
+++ b/src/ftinspect/engine/engine.cpp
@@ -595,6 +595,27 @@ Engine::getFtSize()
}
+double
+Engine::getPtSize()
+{
+ return pointSize;
+}
+
+
+double
+Engine::getPixelSize()
+{
+ return pixelSize;
+}
+
+
+int
+Engine::getResolution()
+{
+ return dpi;
+}
+
+
void
Engine::setTTInterpreterVersion(int mode)
{
diff --git a/src/ftinspect/engine/engine.hpp b/src/ftinspect/engine/engine.hpp
index 97d8b79..adf28b9 100644
--- a/src/ftinspect/engine/engine.hpp
+++ b/src/ftinspect/engine/engine.hpp
@@ -62,6 +62,9 @@ public:
void setCFFHintingMode(int mode);
void setWarping();
FT_Size getFtSize();
+ double getPtSize();
+ double getPixelSize();
+ int getResolution();
void setTTInterpreterVersion(int version);
void update();
@@ -79,6 +82,10 @@ public:
FontType_Other
};
+ FTC_ScalerRec scaler;
+ FTC_ImageCache imageCache;
+ unsigned long loadFlags;
+
private:
MainGUI* gui;
@@ -93,10 +100,10 @@ private:
FT_Library library;
FTC_Manager cacheManager;
- FTC_ImageCache imageCache;
+ //FTC_ImageCache imageCache;
FTC_SBitCache sbitsCache;
- FTC_ScalerRec scaler;
+ //FTC_ScalerRec scaler;
FT_Size ftSize;
int cffHintingEngineDefault;
@@ -124,7 +131,7 @@ private:
double gamma;
- unsigned long loadFlags;
+ //unsigned long loadFlags;
};
diff --git a/src/ftinspect/maingui.cpp b/src/ftinspect/maingui.cpp
index 8c88521..d115be3 100644
--- a/src/ftinspect/maingui.cpp
+++ b/src/ftinspect/maingui.cpp
@@ -424,6 +424,35 @@ MainGUI::checkHinting()
void
+MainGUI::checkRenderingMode()
+{
+ int index = renderingModeComboBoxx->currentIndex();
+
+ renderingModeComboBoxx->setItemEnabled(index, true);
+
+ if (!(renderingModeComboBoxx->itemText(index).compare("Normal")))
+ {
+ render_mode = 1;
+ } else if (!(renderingModeComboBoxx->itemText(index).compare("Fancy")))
+ {
+ render_mode = 2;
+ } else if (!(renderingModeComboBoxx->itemText(index).compare("Stroked")))
+ {
+ render_mode = 3;
+ } else if (!(renderingModeComboBoxx->itemText(index).compare("Text String")))
+ {
+ render_mode = 4;
+ } else
+ {
+ render_mode = 5;
+ glyphView->setDragMode(QGraphicsView::NoDrag);
+ }
+
+ renderAll();
+}
+
+
+void
MainGUI::checkHintingMode()
{
int index = hintingModeComboBoxx->currentIndex();
@@ -511,6 +540,13 @@ MainGUI::gridViewRender()
void
MainGUI::renderAll()
{
+ // Embolden factors
+ double x_factor = embolden_x_Slider->value()/1000.0;
+ double y_factor = embolden_y_Slider->value()/1000.0;
+
+ double slant_factor = slant_Slider->value()/100.0;
+ double stroke_factor = stroke_Slider->value()/1000.0;
+
// Basic definition
FT_Size size;
FT_Face face;
@@ -527,15 +563,6 @@ MainGUI::renderAll()
FTC_Manager cacheManager = engine->cacheManager;
FTC_FaceID face_id = engine->scaler.face_id;
//face = size->face;
- // Render glyphs normally
- if (allGlyphs->isChecked())
- {
- render_mode = 1;
- }
- if (fancyCheckbox->isChecked())
- {
- render_mode = 2;
- }
error = FTC_CMapCache_New(cacheManager, &cmap_cache );
@@ -562,7 +589,13 @@ MainGUI::renderAll()
face_id,
cmap_cache,
engine->library,
- render_mode);
+ render_mode,
+ engine->scaler,
+ engine->imageCache,
+ x_factor,
+ y_factor,
+ slant_factor,
+ stroke_factor);
glyphScene->addItem(currentRenderAllItem);
zoomSpinBox->setValue(1);
}
@@ -1022,23 +1055,42 @@ MainGUI::createLayout()
lcdFilterComboBox->insertItem(LCDFilter_Legacy, tr("Legacy"));
lcdFilterLabel->setBuddy(lcdFilterComboBox);
+ renderingModeLabel = new QLabel(tr("Render Mode"));
+ renderingModeLabel->setAlignment(Qt::AlignTop);
+ renderingModeComboBoxx = new QComboBoxx;
+ renderingModeComboBoxx->insertItem(Normal,
+ tr("Normal"));
+ renderingModeComboBoxx->insertItem(Fancy,
+ tr("Fancy"));
+ renderingModeComboBoxx->insertItem(Stroked,
+ tr("Stroked"));
+ renderingModeComboBoxx->insertItem(Text_String,
+ tr("Text String"));
+ renderingModeComboBoxx->insertItem(Waterfall,
+ tr("Waterfall"));
+ renderingModeLabel->setBuddy(renderingModeComboBoxx);
+
int width;
// make all labels have the same width
width = hintingModeLabel->minimumSizeHint().width();
width = qMax(antiAliasingLabel->minimumSizeHint().width(), width);
width = qMax(lcdFilterLabel->minimumSizeHint().width(), width);
+ width = qMax(renderingModeLabel->minimumSizeHint().width(), width);
hintingModeLabel->setMinimumWidth(width);
antiAliasingLabel->setMinimumWidth(width);
lcdFilterLabel->setMinimumWidth(width);
+ renderingModeLabel->setMinimumWidth(width);
// ensure that all items in combo boxes fit completely;
// also make all combo boxes have the same width
width = hintingModeComboBoxx->minimumSizeHint().width();
width = qMax(antiAliasingComboBoxx->minimumSizeHint().width(), width);
width = qMax(lcdFilterComboBox->minimumSizeHint().width(), width);
+ width = qMax(renderingModeComboBoxx->minimumSizeHint().width(), width);
hintingModeComboBoxx->setMinimumWidth(width);
antiAliasingComboBoxx->setMinimumWidth(width);
lcdFilterComboBox->setMinimumWidth(width);
+ renderingModeComboBoxx->setMinimumWidth(width);
gammaLabel = new QLabel(tr("Gamma"));
gammaLabel->setAlignment(Qt::AlignRight);
@@ -1048,6 +1100,37 @@ MainGUI::createLayout()
gammaSlider->setTickInterval(5);
gammaLabel->setBuddy(gammaSlider);
+ xLabel = new QLabel(tr("Embolden X"));
+ yLabel = new QLabel(tr("Embolden Y"));
+ xLabel->setAlignment(Qt::AlignRight);
+ yLabel->setAlignment(Qt::AlignRight);
+ embolden_x_Slider = new QSlider(Qt::Horizontal);
+ embolden_y_Slider = new QSlider(Qt::Horizontal);
+ embolden_x_Slider->setRange(0, 100); // 5 = 0.005
+ embolden_y_Slider->setRange(0, 100);
+ embolden_x_Slider->setTickPosition(QSlider::TicksBelow);
+ embolden_x_Slider->setTickInterval(5);
+ embolden_y_Slider->setTickPosition(QSlider::TicksBelow);
+ embolden_y_Slider->setTickInterval(5);
+ xLabel->setBuddy(embolden_x_Slider);
+ yLabel->setBuddy(embolden_y_Slider);
+
+
+ slantLabel = new QLabel(tr("Slant"));
+ strokeLabel = new QLabel(tr("Stroke"));
+ slantLabel->setAlignment(Qt::AlignRight);
+ strokeLabel->setAlignment(Qt::AlignRight);
+ slant_Slider = new QSlider(Qt::Horizontal);
+ stroke_Slider = new QSlider(Qt::Horizontal);
+ slant_Slider->setRange(0, 100); // 5 = 0.05
+ stroke_Slider->setRange(0, 100);
+ slant_Slider->setTickPosition(QSlider::TicksBelow);
+ slant_Slider->setTickInterval(2);
+ stroke_Slider->setTickPosition(QSlider::TicksBelow);
+ stroke_Slider->setTickInterval(5);
+ slantLabel->setBuddy(slant_Slider);
+ strokeLabel->setBuddy(stroke_Slider);
+
showBitmapCheckBox = new QCheckBox(tr("Show Bitmap"));
showPointsCheckBox = new QCheckBox(tr("Show Points"));
showPointNumbersCheckBox = new QCheckBox(tr("Show Point Numbers"));
@@ -1092,6 +1175,22 @@ MainGUI::createLayout()
gammaLayout->addWidget(gammaLabel);
gammaLayout->addWidget(gammaSlider);
+ emboldenVertLayout = new QHBoxLayout;
+ emboldenVertLayout->addWidget(yLabel);
+ emboldenVertLayout->addWidget(embolden_y_Slider);
+
+ emboldenHorzLayout = new QHBoxLayout;
+ emboldenHorzLayout->addWidget(xLabel);
+ emboldenHorzLayout->addWidget(embolden_x_Slider);
+
+ slantLayout = new QHBoxLayout;
+ slantLayout->addWidget(slantLabel);
+ slantLayout->addWidget(slant_Slider);
+
+ strokeLayout = new QHBoxLayout;
+ strokeLayout->addWidget(strokeLabel);
+ strokeLayout->addWidget(stroke_Slider);
+
pointNumbersLayout = new QHBoxLayout;
pointNumbersLayout->addSpacing(20); // XXX px
pointNumbersLayout->addWidget(showPointNumbersCheckBox);
@@ -1119,18 +1218,16 @@ MainGUI::createLayout()
generalTabLayout->addLayout(pointNumbersLayout);
generalTabLayout->addWidget(showOutlinesCheckBox);
- normalCheckbox = new QCheckBox(tr("Normal"));
- fancyCheckbox = new QCheckBox(tr("Fancy"));
- strokedCheckbox = new QCheckBox(tr("Stroked"));
- textStringCheckbox = new QCheckBox(tr("Text String"));
- waterFallCheckbox = new QCheckBox(tr("Waterfall"));
+ renderLayout = new QHBoxLayout;
+ renderLayout->addWidget(renderingModeLabel);
+ renderLayout->addWidget(renderingModeComboBoxx);
- viewlayout = new QVBoxLayout;
- viewlayout->addWidget(normalCheckbox);
- viewlayout->addWidget(fancyCheckbox);
- viewlayout->addWidget(strokedCheckbox);
- viewlayout->addWidget(textStringCheckbox);
- viewlayout->addWidget(waterFallCheckbox);
+ viewTabLayout = new QVBoxLayout;
+ viewTabLayout->addLayout(renderLayout);
+ viewTabLayout->addLayout(emboldenVertLayout);
+ viewTabLayout->addLayout(emboldenHorzLayout);
+ viewTabLayout->addLayout(slantLayout);
+ viewTabLayout->addLayout(strokeLayout);
generalTabWidget = new QWidget;
generalTabWidget->setLayout(generalTabLayout);
@@ -1139,7 +1236,8 @@ MainGUI::createLayout()
// set layout ftview
viewTabWidget = new QWidget;
- viewTabWidget->setLayout(viewlayout);
+ viewTabWidget->setLayout(viewTabLayout);
+
tabWidget = new QTabWidget;
tabWidget->addTab(generalTabWidget, tr("General"));
@@ -1326,17 +1424,11 @@ MainGUI::createConnections()
SLOT(checkAntiAliasing()));
connect(lcdFilterComboBox, SIGNAL(currentIndexChanged(int)),
SLOT(checkLcdFilter()));
+ connect(renderingModeComboBoxx, SIGNAL(currentIndexChanged(int)),
+ SLOT(checkRenderingMode()));
connect(allGlyphs, SIGNAL(clicked()),
SLOT(renderAll()));
- connect(fancyCheckbox, SIGNAL(clicked()),
- SLOT(renderAll()));
- connect(strokedCheckbox, SIGNAL(clicked()),
- SLOT(renderAll()));
- connect(textStringCheckbox, SIGNAL(clicked()),
- SLOT(renderAll()));
- connect(waterFallCheckbox, SIGNAL(clicked()),
- SLOT(renderAll()));
connect(gridView, SIGNAL(clicked()),
SLOT(gridViewRender()));
@@ -1362,6 +1454,14 @@ MainGUI::createConnections()
SLOT(drawGlyph()));
connect(gammaSlider, SIGNAL(valueChanged(int)),
SLOT(drawGlyph()));
+ connect(embolden_x_Slider, SIGNAL(valueChanged(int)),
+ SLOT(renderAll()));
+ connect(embolden_y_Slider, SIGNAL(valueChanged(int)),
+ SLOT(renderAll()));
+ connect(slant_Slider, SIGNAL(valueChanged(int)),
+ SLOT(renderAll()));
+ connect(stroke_Slider, SIGNAL(valueChanged(int)),
+ SLOT(renderAll()));
connect(sizeDoubleSpinBox, SIGNAL(valueChanged(double)),
SLOT(drawGlyph()));
@@ -1554,6 +1654,7 @@ MainGUI::setDefaults()
antiAliasingComboBoxx->setCurrentIndex(AntiAliasing_Normal);
lcdFilterComboBox->setCurrentIndex(LCDFilter_Light);
+ renderingModeComboBoxx->setCurrentIndex(0);
horizontalHintingCheckBox->setChecked(true);
verticalHintingCheckBox->setChecked(true);
@@ -1563,6 +1664,8 @@ MainGUI::setDefaults()
showOutlinesCheckBox->setChecked(true);
gammaSlider->setValue(18); // 1.8
+ //embolden_x_Slider->setValue(40);
+ //embolden_y_Slider->setValue(40);
sizeDoubleSpinBox->setValue(20);
dpiSpinBox->setValue(96);
zoomSpinBox->setValue(20);
diff --git a/src/ftinspect/maingui.hpp b/src/ftinspect/maingui.hpp
index 0323c26..a3cc19a 100644
--- a/src/ftinspect/maingui.hpp
+++ b/src/ftinspect/maingui.hpp
@@ -86,6 +86,7 @@ private slots:
void checkCurrentNamedInstanceIndex();
void checkHinting();
void checkHintingMode();
+ void checkRenderingMode();
void checkLcdFilter();
void checkShowPoints();
void checkUnits();
@@ -121,7 +122,7 @@ private:
int currentCFFHintingMode;
int currentTTInterpreterVersion;
- int render_mode;
+ int render_mode = 1;
// layout related stuff
GlyphOutline *currentGlyphOutlineItem;
@@ -152,16 +153,11 @@ private:
QCheckBox *showPointsCheckBox;
QCheckBox *verticalHintingCheckBox;
QCheckBox *warpingCheckBox;
- // ftview options
- QCheckBox *normalCheckbox;
- QCheckBox *fancyCheckbox;
- QCheckBox *strokedCheckbox;
- QCheckBox *textStringCheckbox;
- QCheckBox *waterFallCheckbox;
QComboBoxx *antiAliasingComboBoxx;
QComboBoxx *hintingModeComboBoxx;
+ QComboBoxx *renderingModeComboBoxx;
QComboBox *lcdFilterComboBox;
QComboBox *unitsComboBox;
@@ -194,6 +190,11 @@ private:
QHBoxLayout *verticalHintingLayout;
QHBoxLayout *warpingLayout;
QHBoxLayout *programNavigationLayout;
+ QHBoxLayout *renderLayout;
+ QHBoxLayout *emboldenVertLayout;
+ QHBoxLayout *emboldenHorzLayout;
+ QHBoxLayout *slantLayout;
+ QHBoxLayout *strokeLayout;
QLabel *antiAliasingLabel;
QLabel *dpiLabel;
@@ -203,9 +204,14 @@ private:
QLabel *glyphIndexLabel;
QLabel *glyphNameLabel;
QLabel *hintingModeLabel;
+ QLabel *renderingModeLabel;
QLabel *lcdFilterLabel;
QLabel *sizeLabel;
QLabel *zoomLabel;
+ QLabel *xLabel;
+ QLabel *yLabel;
+ QLabel *slantLabel;
+ QLabel *strokeLabel;
QRadioButton *gridView = new QRadioButton(tr("Grid View"));
QRadioButton *allGlyphs = new QRadioButton(tr("All Glyphs"));
@@ -249,6 +255,10 @@ private:
QSignalMapper *glyphNavigationMapper;
QSlider *gammaSlider;
+ QSlider *embolden_x_Slider;
+ QSlider *embolden_y_Slider;
+ QSlider *stroke_Slider;
+ QSlider *slant_Slider;
QSpinBox *dpiSpinBox;
QSpinBoxx *zoomSpinBox;
@@ -260,7 +270,7 @@ private:
QVBoxLayout *generalTabLayout;
QVBoxLayout *leftLayout;
QVBoxLayout *rightLayout;
- QVBoxLayout *viewlayout;
+ QVBoxLayout *viewTabLayout;
QVector<QRgb> grayColorTable;
QVector<QRgb> monoColorTable;
@@ -302,6 +312,14 @@ private:
Units_px,
Units_pt
};
+ enum RenderingMode
+ {
+ Normal,
+ Fancy,
+ Stroked,
+ Text_String,
+ Waterfall
+ };
void createActions();
void createConnections();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] veeki-gsoc-experimental 1f0fdfb 5/7: Added variable functionalities,
Veeki Yadav <=