[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] gsoc-2022-chariri-2 6421208 06/30: [ftinspect] Move se
From: |
Werner Lemberg |
Subject: |
[freetype2-demos] gsoc-2022-chariri-2 6421208 06/30: [ftinspect] Move settings panel to a separate class. |
Date: |
Mon, 11 Jul 2022 07:17:37 -0400 (EDT) |
branch: gsoc-2022-chariri-2
commit 6421208438b500793d41322f8b7154b67e9f1ff9
Author: Charlie Jiang <w@chariri.moe>
Commit: Charlie Jiang <w@chariri.moe>
[ftinspect] Move settings panel to a separate class.
This commit moves the settings on the left to a new `SettingPanel` class.
`check*` functions were re-organized so all manipulations against `Engine`
was grouped together (in `syncSettings` and `setDefaults`) and made clear.
Also, the glyph repaint/font reload events were more explicitly emitted,
which
is beneficial to demonstrating.
TODO: More test are needed to ensure that the behaviors aren't changed.
* src/ftinspect/engine/engine.cpp: Fix: when resetting the cache manager,
the
current `ftSize_` must be invalidated.
* src/ftinspect/maingui.cpp: Move out all settings on the left. When
settings
in the panel were changed, `MainGUI` will be notified via the
`SettingPanel::fontReloadNeeded` and `SettingPanel::repaintNeeded` signals.
src/ftinspect/panels/settingpanel.cpp,
src/ftinspect/panels/settingpanel.hpp:
New file.
* src/ftinspect/CMakeLists.txt, src/ftinspect/meson.build: Updated.
---
src/ftinspect/CMakeLists.txt | 2 +
src/ftinspect/engine/engine.cpp | 2 +
src/ftinspect/maingui.cpp | 377 ++---------------------------
src/ftinspect/maingui.hpp | 54 +----
src/ftinspect/meson.build | 3 +
src/ftinspect/panels/settingpanel.cpp | 443 ++++++++++++++++++++++++++++++++++
src/ftinspect/panels/settingpanel.hpp | 110 +++++++++
7 files changed, 580 insertions(+), 411 deletions(-)
diff --git a/src/ftinspect/CMakeLists.txt b/src/ftinspect/CMakeLists.txt
index 2d8096e..9e99593 100644
--- a/src/ftinspect/CMakeLists.txt
+++ b/src/ftinspect/CMakeLists.txt
@@ -34,6 +34,8 @@ add_executable(ftinspect
"widgets/qspinboxx.cpp"
"models/ttsettingscomboboxmodel.cpp"
+
+ "panels/settingpanel.cpp"
)
target_link_libraries(ftinspect
Qt5::Core Qt5::Widgets
diff --git a/src/ftinspect/engine/engine.cpp b/src/ftinspect/engine/engine.cpp
index 8084d72..a635d2c 100644
--- a/src/ftinspect/engine/engine.cpp
+++ b/src/ftinspect/engine/engine.cpp
@@ -435,6 +435,7 @@ Engine::setCFFHintingMode(int mode)
{
// reset the cache
FTC_Manager_Reset(cacheManager_);
+ ftSize_ = NULL;
}
}
@@ -450,6 +451,7 @@ Engine::setTTInterpreterVersion(int version)
{
// reset the cache
FTC_Manager_Reset(cacheManager_);
+ ftSize_ = NULL;
}
}
diff --git a/src/ftinspect/maingui.cpp b/src/ftinspect/maingui.cpp
index bf8de0e..74b6b6c 100644
--- a/src/ftinspect/maingui.cpp
+++ b/src/ftinspect/maingui.cpp
@@ -189,10 +189,10 @@ MainGUI::showFont()
checkCurrentFontIndex();
checkCurrentFaceIndex();
checkCurrentNamedInstanceIndex();
- checkHinting();
+ auto state = settingPanel_->blockSignals(true);
+ settingPanel_->checkHinting();
+ settingPanel_->blockSignals(state);
adjustGlyphIndex(0);
-
- drawGlyph();
}
@@ -207,17 +207,7 @@ MainGUI::syncSettings()
else
engine_->setSizeByPoint(sizeDoubleSpinBox_->value());
- engine_->setHinting(hintingCheckBox_->isChecked());
- engine_->setAutoHinting(autoHintingCheckBox_->isChecked());
- engine_->setHorizontalHinting(horizontalHintingCheckBox_->isChecked());
- engine_->setVerticalHinting(verticalHintingCheckBox_->isChecked());
- engine_->setBlueZoneHinting(blueZoneHintingCheckBox_->isChecked());
- engine_->setShowSegments(segmentDrawingCheckBox_->isChecked());
-
- engine_->setGamma(gammaSlider_->value());
-
- engine_->setAntiAliasingTarget(antiAliasingComboBoxModel_->indexToValue(
- antiAliasingComboBox_->currentIndex()));
+ settingPanel_->syncSettings();
}
@@ -229,161 +219,6 @@ MainGUI::clearStatusBar()
}
-void
-MainGUI::checkHinting()
-{
- if (hintingCheckBox_->isChecked())
- {
- if (engine_->currentFontType() == Engine::FontType_CFF)
- {
- hintingModeComboBoxModel_->setCurrentEngineType(
- HintingModeComboBoxModel::HintingEngineType_CFF);
- hintingModeComboBox_->setCurrentIndex(currentCFFHintingMode_);
- }
- else if (engine_->currentFontType() == Engine::FontType_TrueType)
- {
- hintingModeComboBoxModel_->setCurrentEngineType(
- HintingModeComboBoxModel::HintingEngineType_TrueType);
- hintingModeComboBox_->setCurrentIndex(currentTTInterpreterVersion_);
- }
- else
- {
- hintingModeLabel_->setEnabled(false);
- hintingModeComboBox_->setEnabled(false);
- }
-
- autoHintingCheckBox_->setEnabled(true);
- checkAutoHinting();
- }
- else
- {
- hintingModeLabel_->setEnabled(false);
- hintingModeComboBox_->setEnabled(false);
-
- autoHintingCheckBox_->setEnabled(false);
- horizontalHintingCheckBox_->setEnabled(false);
- verticalHintingCheckBox_->setEnabled(false);
- blueZoneHintingCheckBox_->setEnabled(false);
- segmentDrawingCheckBox_->setEnabled(false);
-
- antiAliasingComboBoxModel_->setLightAntiAliasingEnabled(false);
- if (antiAliasingComboBox_->currentIndex()
- == AntiAliasingComboBoxModel::AntiAliasing_Light)
- antiAliasingComboBox_->setCurrentIndex(
- AntiAliasingComboBoxModel::AntiAliasing_Normal);
- }
-
- drawGlyph();
-}
-
-
-void
-MainGUI::checkHintingMode()
-{
- int index = hintingModeComboBox_->currentIndex();
-
- if (engine_->currentFontType() == Engine::FontType_CFF)
- {
- engine_->setCFFHintingMode(
- hintingModeComboBoxModel_->indexToCFFMode(index));
- currentCFFHintingMode_ = index;
- }
- else if (engine_->currentFontType() == Engine::FontType_TrueType)
- {
- engine_->setTTInterpreterVersion(
- hintingModeComboBoxModel_->indexToTTInterpreterVersion(index));
- currentTTInterpreterVersion_ = index;
- }
-
- // this enforces reloading of the font
- showFont();
-}
-
-
-void
-MainGUI::checkAutoHinting()
-{
- if (autoHintingCheckBox_->isChecked())
- {
- hintingModeLabel_->setEnabled(false);
- hintingModeComboBox_->setEnabled(false);
-
- horizontalHintingCheckBox_->setEnabled(true);
- verticalHintingCheckBox_->setEnabled(true);
- blueZoneHintingCheckBox_->setEnabled(true);
- segmentDrawingCheckBox_->setEnabled(true);
-
- antiAliasingComboBoxModel_->setLightAntiAliasingEnabled(true);
- }
- else
- {
- if (engine_->currentFontType() == Engine::FontType_CFF
- || engine_->currentFontType() == Engine::FontType_TrueType)
- {
- hintingModeLabel_->setEnabled(true);
- hintingModeComboBox_->setEnabled(true);
- }
-
- horizontalHintingCheckBox_->setEnabled(false);
- verticalHintingCheckBox_->setEnabled(false);
- blueZoneHintingCheckBox_->setEnabled(false);
- segmentDrawingCheckBox_->setEnabled(false);
-
- antiAliasingComboBoxModel_->setLightAntiAliasingEnabled(false);
-
- if (antiAliasingComboBox_->currentIndex()
- == AntiAliasingComboBoxModel::AntiAliasing_Light)
- antiAliasingComboBox_->setCurrentIndex(
- AntiAliasingComboBoxModel::AntiAliasing_Normal);
- }
-
- drawGlyph();
-}
-
-
-void
-MainGUI::checkAntiAliasing()
-{
- int index = antiAliasingComboBox_->currentIndex();
-
- if (index == AntiAliasingComboBoxModel::AntiAliasing_None
- || index == AntiAliasingComboBoxModel::AntiAliasing::AntiAliasing_Normal
- || index == AntiAliasingComboBoxModel::AntiAliasing_Light)
- {
- lcdFilterLabel_->setEnabled(false);
- lcdFilterComboBox_->setEnabled(false);
- }
- else
- {
- lcdFilterLabel_->setEnabled(true);
- lcdFilterComboBox_->setEnabled(true);
- }
-
- drawGlyph();
-}
-
-
-void
-MainGUI::checkLcdFilter()
-{
- int index = lcdFilterComboBox_->currentIndex();
- engine_->setLcdFilter(static_cast<FT_LcdFilter>(
- lcdFilterComboboxModel_->indexToValue(index)));
-}
-
-
-void
-MainGUI::checkShowPoints()
-{
- if (showPointsCheckBox_->isChecked())
- showPointNumbersCheckBox_->setEnabled(true);
- else
- showPointNumbersCheckBox_->setEnabled(false);
-
- drawGlyph();
-}
-
-
void
MainGUI::checkUnits()
{
@@ -671,11 +506,11 @@ MainGUI::drawGlyph()
FT_Outline* outline = engine_->loadOutline(currentGlyphIndex_);
if (outline)
{
- if (showBitmapCheckBox_->isChecked())
+ if (settingPanel_->showBitmapChecked())
{
// XXX support LCD
FT_Pixel_Mode pixelMode = FT_PIXEL_MODE_GRAY;
- if (antiAliasingComboBox_->currentIndex()
+ if (settingPanel_->antiAliasingModeIndex()
== AntiAliasingComboBoxModel::AntiAliasing_None)
pixelMode = FT_PIXEL_MODE_MONO;
@@ -687,18 +522,18 @@ MainGUI::drawGlyph()
glyphScene_->addItem(currentGlyphBitmapItem_);
}
- if (showOutlinesCheckBox_->isChecked())
+ if (settingPanel_->showOutLinesChecked())
{
currentGlyphOutlineItem_ = new GlyphOutline(outlinePen_, outline);
glyphScene_->addItem(currentGlyphOutlineItem_);
}
- if (showPointsCheckBox_->isChecked())
+ if (settingPanel_->showPointsChecked())
{
currentGlyphPointsItem_ = new GlyphPoints(onPen_, offPen_, outline);
glyphScene_->addItem(currentGlyphPointsItem_);
- if (showPointNumbersCheckBox_->isChecked())
+ if (settingPanel_->showPointNumbersChecked())
{
currentGlyphPointNumbersItem_ = new GlyphPointNumbers(onPen_,
offPen_,
@@ -720,142 +555,14 @@ MainGUI::createLayout()
// left side
fontFilenameLabel_ = new QLabel;
- hintingCheckBox_ = new QCheckBox(tr("Hinting"));
-
- hintingModeLabel_ = new QLabel(tr("Hinting Mode"));
- hintingModeLabel_->setAlignment(Qt::AlignRight);
-
- hintingModeComboBoxModel_ = new HintingModeComboBoxModel;
- hintingModeComboBox_ = new QComboBox;
- hintingModeComboBox_->setModel(hintingModeComboBoxModel_);
- hintingModeLabel_->setBuddy(hintingModeComboBox_);
-
- autoHintingCheckBox_ = new QCheckBox(tr("Auto-Hinting"));
- horizontalHintingCheckBox_ = new QCheckBox(tr("Horizontal Hinting"));
- verticalHintingCheckBox_ = new QCheckBox(tr("Vertical Hinting"));
- blueZoneHintingCheckBox_ = new QCheckBox(tr("Blue-Zone Hinting"));
- segmentDrawingCheckBox_ = new QCheckBox(tr("Segment Drawing"));
-
- antiAliasingLabel_ = new QLabel(tr("Anti-Aliasing"));
- antiAliasingLabel_->setAlignment(Qt::AlignRight);
-
- antiAliasingComboBoxModel_ = new AntiAliasingComboBoxModel;
- antiAliasingComboBox_ = new QComboBox;
- antiAliasingComboBox_->setModel(antiAliasingComboBoxModel_);
- antiAliasingLabel_->setBuddy(antiAliasingComboBox_);
-
- lcdFilterLabel_ = new QLabel(tr("LCD Filter"));
- lcdFilterLabel_->setAlignment(Qt::AlignRight);
-
- lcdFilterComboboxModel_ = new LCDFilterComboBoxModel;
- lcdFilterComboBox_ = new QComboBox;
- lcdFilterComboBox_->setModel(lcdFilterComboboxModel_);
- lcdFilterLabel_->setBuddy(lcdFilterComboBox_);
-
- 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);
- hintingModeLabel_->setMinimumWidth(width);
- antiAliasingLabel_->setMinimumWidth(width);
- lcdFilterLabel_->setMinimumWidth(width);
-
- // ensure that all items in combo boxes fit completely;
- // also make all combo boxes have the same width
- width = hintingModeComboBox_->minimumSizeHint().width();
- width = qMax(antiAliasingComboBox_->minimumSizeHint().width(), width);
- width = qMax(lcdFilterComboBox_->minimumSizeHint().width(), width);
- hintingModeComboBox_->setMinimumWidth(width);
- antiAliasingComboBox_->setMinimumWidth(width);
- lcdFilterComboBox_->setMinimumWidth(width);
-
- gammaLabel_ = new QLabel(tr("Gamma"));
- gammaLabel_->setAlignment(Qt::AlignRight);
- gammaSlider_ = new QSlider(Qt::Horizontal);
- gammaSlider_->setRange(0, 30); // in 1/10th
- gammaSlider_->setTickPosition(QSlider::TicksBelow);
- gammaSlider_->setTickInterval(5);
- gammaLabel_->setBuddy(gammaSlider_);
-
- showBitmapCheckBox_ = new QCheckBox(tr("Show Bitmap"));
- showPointsCheckBox_ = new QCheckBox(tr("Show Points"));
- showPointNumbersCheckBox_ = new QCheckBox(tr("Show Point Numbers"));
- showOutlinesCheckBox_ = new QCheckBox(tr("Show Outlines"));
-
infoLeftLayout_ = new QHBoxLayout;
infoLeftLayout_->addWidget(fontFilenameLabel_);
- hintingModeLayout_ = new QHBoxLayout;
- hintingModeLayout_->addWidget(hintingModeLabel_);
- hintingModeLayout_->addWidget(hintingModeComboBox_);
-
- horizontalHintingLayout_ = new QHBoxLayout;
- horizontalHintingLayout_->addSpacing(20); // XXX px
- horizontalHintingLayout_->addWidget(horizontalHintingCheckBox_);
-
- verticalHintingLayout_ = new QHBoxLayout;
- verticalHintingLayout_->addSpacing(20); // XXX px
- verticalHintingLayout_->addWidget(verticalHintingCheckBox_);
-
- blueZoneHintingLayout_ = new QHBoxLayout;
- blueZoneHintingLayout_->addSpacing(20); // XXX px
- blueZoneHintingLayout_->addWidget(blueZoneHintingCheckBox_);
-
- segmentDrawingLayout_ = new QHBoxLayout;
- segmentDrawingLayout_->addSpacing(20); // XXX px
- segmentDrawingLayout_->addWidget(segmentDrawingCheckBox_);
-
- antiAliasingLayout_ = new QHBoxLayout;
- antiAliasingLayout_->addWidget(antiAliasingLabel_);
- antiAliasingLayout_->addWidget(antiAliasingComboBox_);
-
- lcdFilterLayout_ = new QHBoxLayout;
- lcdFilterLayout_->addWidget(lcdFilterLabel_);
- lcdFilterLayout_->addWidget(lcdFilterComboBox_);
-
- gammaLayout_ = new QHBoxLayout;
- gammaLayout_->addWidget(gammaLabel_);
- gammaLayout_->addWidget(gammaSlider_);
-
- pointNumbersLayout_ = new QHBoxLayout;
- pointNumbersLayout_->addSpacing(20); // XXX px
- pointNumbersLayout_->addWidget(showPointNumbersCheckBox_);
-
- generalTabLayout_ = new QVBoxLayout;
- generalTabLayout_->addWidget(hintingCheckBox_);
- generalTabLayout_->addLayout(hintingModeLayout_);
- generalTabLayout_->addWidget(autoHintingCheckBox_);
- generalTabLayout_->addLayout(horizontalHintingLayout_);
- generalTabLayout_->addLayout(verticalHintingLayout_);
- generalTabLayout_->addLayout(blueZoneHintingLayout_);
- generalTabLayout_->addLayout(segmentDrawingLayout_);
- generalTabLayout_->addSpacing(20); // XXX px
- generalTabLayout_->addStretch(1);
- generalTabLayout_->addLayout(antiAliasingLayout_);
- generalTabLayout_->addLayout(lcdFilterLayout_);
- generalTabLayout_->addSpacing(20); // XXX px
- generalTabLayout_->addStretch(1);
- generalTabLayout_->addLayout(gammaLayout_);
- generalTabLayout_->addSpacing(20); // XXX px
- generalTabLayout_->addStretch(1);
- generalTabLayout_->addWidget(showBitmapCheckBox_);
- generalTabLayout_->addWidget(showPointsCheckBox_);
- generalTabLayout_->addLayout(pointNumbersLayout_);
- generalTabLayout_->addWidget(showOutlinesCheckBox_);
-
- generalTabWidget_ = new QWidget;
- generalTabWidget_->setLayout(generalTabLayout_);
-
- mmgxTabWidget_ = new QWidget;
-
- tabWidget_ = new QTabWidget;
- tabWidget_->addTab(generalTabWidget_, tr("General"));
- tabWidget_->addTab(mmgxTabWidget_, tr("MM/GX"));
+ settingPanel_ = new SettingPanel(engine_);
leftLayout_ = new QVBoxLayout;
leftLayout_->addLayout(infoLeftLayout_);
- leftLayout_->addWidget(tabWidget_);
+ leftLayout_->addWidget(settingPanel_);
// we don't want to expand the left side horizontally;
// to change the policy we have to use a widget wrapper
@@ -881,7 +588,6 @@ MainGUI::createLayout()
currentGlyphOutlineItem_ = NULL;
currentGlyphPointsItem_ = NULL;
currentGlyphPointNumbersItem_ = NULL;
- drawGlyph();
glyphView_ = new QGraphicsViewx;
glyphView_->setRenderHint(QPainter::Antialiasing, true);
@@ -1009,27 +715,10 @@ MainGUI::createLayout()
void
MainGUI::createConnections()
{
- connect(hintingCheckBox_, SIGNAL(clicked()),
- SLOT(checkHinting()));
-
- connect(hintingModeComboBox_, SIGNAL(currentIndexChanged(int)),
- SLOT(checkHintingMode()));
- connect(antiAliasingComboBox_, SIGNAL(currentIndexChanged(int)),
- SLOT(checkAntiAliasing()));
- connect(lcdFilterComboBox_, SIGNAL(currentIndexChanged(int)),
- SLOT(checkLcdFilter()));
-
- connect(autoHintingCheckBox_, SIGNAL(clicked()),
- SLOT(checkAutoHinting()));
- connect(showBitmapCheckBox_, SIGNAL(clicked()),
- SLOT(drawGlyph()));
- connect(showPointsCheckBox_, SIGNAL(clicked()),
- SLOT(checkShowPoints()));
- connect(showPointNumbersCheckBox_, SIGNAL(clicked()),
- SLOT(drawGlyph()));
- connect(showOutlinesCheckBox_, SIGNAL(clicked()),
+ connect(settingPanel_, SIGNAL(fontReloadNeeded()),
+ SLOT(showFont()));
+ connect(settingPanel_, SIGNAL(repaintNeeded()),
SLOT(drawGlyph()));
-
connect(sizeDoubleSpinBox_, SIGNAL(valueChanged(double)),
SLOT(drawGlyph()));
connect(unitsComboBox_, SIGNAL(currentIndexChanged(int)),
@@ -1141,53 +830,17 @@ MainGUI::createStatusBar()
void
MainGUI::setDefaults()
{
- Engine::EngineDefaultValues& defaults = engine_->engineDefaults();
-
- hintingModeComboBoxModel_->setSupportedModes(
- { defaults.ttInterpreterVersionDefault,
- defaults.ttInterpreterVersionOther,
- defaults.ttInterpreterVersionOther1 },
- { defaults.cffHintingEngineDefault,
- defaults.cffHintingEngineOther });
-
// the next four values always non-negative
currentFontIndex_ = 0;
currentFaceIndex_ = 0;
currentNamedInstanceIndex_ = 0;
currentGlyphIndex_ = 0;
- currentCFFHintingMode_
- = hintingModeComboBoxModel_->cffModeToIndex(
- defaults.cffHintingEngineDefault);
- currentTTInterpreterVersion_
- = hintingModeComboBoxModel_->ttInterpreterVersionToIndex(
- defaults.ttInterpreterVersionDefault);
-
- hintingCheckBox_->setChecked(true);
-
- antiAliasingComboBox_->setCurrentIndex(
- AntiAliasingComboBoxModel::AntiAliasing_Normal);
- lcdFilterComboBox_->setCurrentIndex(
- LCDFilterComboBoxModel::LCDFilter_Light);
-
- horizontalHintingCheckBox_->setChecked(true);
- verticalHintingCheckBox_->setChecked(true);
- blueZoneHintingCheckBox_->setChecked(true);
-
- showBitmapCheckBox_->setChecked(true);
- showOutlinesCheckBox_->setChecked(true);
-
- gammaSlider_->setValue(18); // 1.8
sizeDoubleSpinBox_->setValue(20);
dpiSpinBox_->setValue(96);
zoomSpinBox_->setValue(20);
- checkHinting();
- checkHintingMode();
- checkAutoHinting();
- checkAntiAliasing();
- checkLcdFilter();
- checkShowPoints();
+ // todo run check for settingpanel
checkUnits();
checkCurrentFontIndex();
checkCurrentFaceIndex();
diff --git a/src/ftinspect/maingui.hpp b/src/ftinspect/maingui.hpp
index 911bb81..dc80be8 100644
--- a/src/ftinspect/maingui.hpp
+++ b/src/ftinspect/maingui.hpp
@@ -15,6 +15,7 @@
#include "widgets/qpushbuttonx.hpp"
#include "widgets/qspinboxx.hpp"
#include "models/ttsettingscomboboxmodel.hpp"
+#include "panels/settingpanel.hpp"
#include <QAction>
#include <QCheckBox>
@@ -71,17 +72,12 @@ private slots:
void about();
void aboutQt();
void adjustGlyphIndex(int);
- void checkAntiAliasing();
- void checkAutoHinting();
void checkCurrentFaceIndex();
void checkCurrentFontIndex();
void checkCurrentNamedInstanceIndex();
- void checkHinting();
- void checkHintingMode();
- void checkLcdFilter();
- void checkShowPoints();
void checkUnits();
void closeFont();
+ void showFont();
void drawGlyph();
void loadFonts();
void nextFace();
@@ -107,9 +103,6 @@ private:
int currentNumberOfGlyphs_;
int currentGlyphIndex_;
- int currentCFFHintingMode_;
- int currentTTInterpreterVersion_;
-
// layout related stuff
GlyphOutline *currentGlyphOutlineItem_;
GlyphPoints *currentGlyphPointsItem_;
@@ -122,24 +115,6 @@ private:
QAction *exitAct_;
QAction *loadFontsAct_;
- QCheckBox *autoHintingCheckBox_;
- QCheckBox *blueZoneHintingCheckBox_;
- QCheckBox *hintingCheckBox_;
- QCheckBox *horizontalHintingCheckBox_;
- QCheckBox *segmentDrawingCheckBox_;
- QCheckBox *showBitmapCheckBox_;
- QCheckBox *showOutlinesCheckBox_;
- QCheckBox *showPointNumbersCheckBox_;
- QCheckBox *showPointsCheckBox_;
- QCheckBox *verticalHintingCheckBox_;
-
- AntiAliasingComboBoxModel* antiAliasingComboBoxModel_;
- HintingModeComboBoxModel* hintingModeComboBoxModel_;
- LCDFilterComboBoxModel* lcdFilterComboboxModel_;
-
- QComboBox *antiAliasingComboBox_;
- QComboBox *hintingModeComboBox_;
- QComboBox *lcdFilterComboBox_;
QComboBox *unitsComboBox_;
QDoubleSpinBox *sizeDoubleSpinBox_;
@@ -150,29 +125,16 @@ private:
QGridLayout *fontLayout;
QGridLayout *infoRightLayout;
- QHBoxLayout *antiAliasingLayout_;
- QHBoxLayout *blueZoneHintingLayout_;
QHBoxLayout *ftinspectLayout_;
- QHBoxLayout *gammaLayout_;
- QHBoxLayout *hintingModeLayout_;
- QHBoxLayout *horizontalHintingLayout_;
QHBoxLayout *infoLeftLayout_;
- QHBoxLayout *lcdFilterLayout_;
QHBoxLayout *navigationLayout_;
- QHBoxLayout *pointNumbersLayout_;
- QHBoxLayout *segmentDrawingLayout_;
QHBoxLayout *sizeLayout_;
- QHBoxLayout *verticalHintingLayout_;
- QLabel *antiAliasingLabel_;
QLabel *dpiLabel_;
QLabel *fontFilenameLabel_;
QLabel *fontNameLabel_;
- QLabel *gammaLabel_;
QLabel *glyphIndexLabel_;
QLabel *glyphNameLabel_;
- QLabel *hintingModeLabel_;
- QLabel *lcdFilterLabel_;
QLabel *sizeLabel_;
QLabel *zoomLabel_;
@@ -209,14 +171,9 @@ private:
QSignalMapper *glyphNavigationMapper_;
- QSlider *gammaSlider_;
-
QSpinBox *dpiSpinBox_;
QSpinBoxx *zoomSpinBox_;
-
- QTabWidget *tabWidget_;
-
- QVBoxLayout *generalTabLayout_;
+
QVBoxLayout *leftLayout_;
QVBoxLayout *rightLayout_;
@@ -224,10 +181,10 @@ private:
QVector<QRgb> monoColorTable_;
QWidget *ftinspectWidget_;
- QWidget *generalTabWidget_;
QWidget *leftWidget_;
QWidget *rightWidget_;
- QWidget *mmgxTabWidget_;
+
+ SettingPanel* settingPanel_;
enum Units
{
@@ -235,7 +192,6 @@ private:
Units_pt
};
- void showFont();
void syncSettings();
void clearStatusBar();
diff --git a/src/ftinspect/meson.build b/src/ftinspect/meson.build
index f02d104..64a2aec 100644
--- a/src/ftinspect/meson.build
+++ b/src/ftinspect/meson.build
@@ -36,6 +36,8 @@ if qt5_dep.found()
'models/ttsettingscomboboxmodel.cpp',
+ 'panels/settingpanel.cpp'
+
'ftinspect.cpp',
'maingui.cpp',
])
@@ -48,6 +50,7 @@ if qt5_dep.found()
'widgets/qspinboxx.hpp',
'maingui.hpp',
'models/ttsettingscomboboxmodel.cpp',
+ 'panels/settingpanel.cpp',
],
dependencies: qt5_dep)
diff --git a/src/ftinspect/panels/settingpanel.cpp
b/src/ftinspect/panels/settingpanel.cpp
new file mode 100644
index 0000000..6a6a59e
--- /dev/null
+++ b/src/ftinspect/panels/settingpanel.cpp
@@ -0,0 +1,443 @@
+// settingpanel.cpp
+
+// Copyright (C) 2022 by Charlie Jiang.
+
+
+#include "settingpanel.hpp"
+
+SettingPanel::SettingPanel(Engine* engine)
+: engine_(engine)
+{
+ createLayout();
+ setDefaults();
+ createConnections();
+ checkAllSettings();
+}
+
+
+int
+SettingPanel::antiAliasingModeIndex()
+{
+ return antiAliasingComboBox_->currentIndex();
+}
+
+
+bool
+SettingPanel::showBitmapChecked()
+{
+ return showBitmapCheckBox_->isChecked();
+}
+
+
+bool
+SettingPanel::showOutLinesChecked()
+{
+ return showOutlinesCheckBox_->isChecked();
+}
+
+
+bool
+SettingPanel::showPointNumbersChecked()
+{
+ return showPointNumbersCheckBox_->isChecked();
+}
+
+
+bool
+SettingPanel::showPointsChecked()
+{
+ return showPointsCheckBox_->isChecked();
+}
+
+
+void
+SettingPanel::checkAllSettings()
+{
+ checkHinting();
+ checkAutoHinting();
+ checkAntiAliasing();
+ checkLCDFilter();
+ checkShowPoints();
+}
+
+
+void
+SettingPanel::checkHinting()
+{
+ if (hintingCheckBox_->isChecked())
+ {
+ if (engine_->currentFontType() == Engine::FontType_CFF)
+ {
+ hintingModeComboBoxModel_->setCurrentEngineType(
+ HintingModeComboBoxModel::HintingEngineType_CFF);
+ hintingModeComboBox_->setCurrentIndex(currentCFFHintingMode_);
+ }
+ else if (engine_->currentFontType() == Engine::FontType_TrueType)
+ {
+ hintingModeComboBoxModel_->setCurrentEngineType(
+ HintingModeComboBoxModel::HintingEngineType_TrueType);
+ hintingModeComboBox_->setCurrentIndex(currentTTInterpreterVersion_);
+ }
+ else
+ {
+ hintingModeLabel_->setEnabled(false);
+ hintingModeComboBox_->setEnabled(false);
+ }
+
+ autoHintingCheckBox_->setEnabled(true);
+ checkAutoHinting();
+ }
+ else
+ {
+ hintingModeLabel_->setEnabled(false);
+ hintingModeComboBox_->setEnabled(false);
+
+ autoHintingCheckBox_->setEnabled(false);
+ horizontalHintingCheckBox_->setEnabled(false);
+ verticalHintingCheckBox_->setEnabled(false);
+ blueZoneHintingCheckBox_->setEnabled(false);
+ segmentDrawingCheckBox_->setEnabled(false);
+
+ antiAliasingComboBoxModel_->setLightAntiAliasingEnabled(false);
+ if (antiAliasingComboBox_->currentIndex()
+ == AntiAliasingComboBoxModel::AntiAliasing_Light)
+ antiAliasingComboBox_->setCurrentIndex(
+ AntiAliasingComboBoxModel::AntiAliasing_Normal);
+ }
+
+ emit repaintNeeded();
+}
+
+
+void
+SettingPanel::checkHintingMode()
+{
+ // This must not be combined into `syncSettings`:
+ // those engine manipulations will reset the whole cache!!
+ // Therefore must only be called when the selection of the combo box actually
+ // changes a.k.a. QComboBox::activate.
+ int index = hintingModeComboBox_->currentIndex();
+
+ if (engine_->currentFontType() == Engine::FontType_CFF)
+ {
+ engine_->setCFFHintingMode(
+ hintingModeComboBoxModel_->indexToCFFMode(index));
+ currentCFFHintingMode_ = index;
+ }
+ else if (engine_->currentFontType() == Engine::FontType_TrueType)
+ {
+ engine_->setTTInterpreterVersion(
+ hintingModeComboBoxModel_->indexToTTInterpreterVersion(index));
+ currentTTInterpreterVersion_ = index;
+ }
+
+ emit fontReloadNeeded();
+}
+
+
+void
+SettingPanel::checkAutoHinting()
+{
+ if (autoHintingCheckBox_->isChecked())
+ {
+ hintingModeLabel_->setEnabled(false);
+ hintingModeComboBox_->setEnabled(false);
+
+ horizontalHintingCheckBox_->setEnabled(true);
+ verticalHintingCheckBox_->setEnabled(true);
+ blueZoneHintingCheckBox_->setEnabled(true);
+ segmentDrawingCheckBox_->setEnabled(true);
+
+ antiAliasingComboBoxModel_->setLightAntiAliasingEnabled(true);
+ }
+ else
+ {
+ if (engine_->currentFontType() == Engine::FontType_CFF
+ || engine_->currentFontType() == Engine::FontType_TrueType)
+ {
+ hintingModeLabel_->setEnabled(true);
+ hintingModeComboBox_->setEnabled(true);
+ }
+
+ horizontalHintingCheckBox_->setEnabled(false);
+ verticalHintingCheckBox_->setEnabled(false);
+ blueZoneHintingCheckBox_->setEnabled(false);
+ segmentDrawingCheckBox_->setEnabled(false);
+
+ antiAliasingComboBoxModel_->setLightAntiAliasingEnabled(false);
+
+ if (antiAliasingComboBox_->currentIndex()
+ == AntiAliasingComboBoxModel::AntiAliasing_Light)
+ antiAliasingComboBox_->setCurrentIndex(
+ AntiAliasingComboBoxModel::AntiAliasing_Normal);
+ }
+ emit repaintNeeded();
+}
+
+
+void
+SettingPanel::checkAntiAliasing()
+{
+ int index = antiAliasingComboBox_->currentIndex();
+
+ if (index == AntiAliasingComboBoxModel::AntiAliasing_None
+ || index == AntiAliasingComboBoxModel::AntiAliasing::AntiAliasing_Normal
+ || index == AntiAliasingComboBoxModel::AntiAliasing_Light)
+ {
+ lcdFilterLabel_->setEnabled(false);
+ lcdFilterComboBox_->setEnabled(false);
+ }
+ else
+ {
+ lcdFilterLabel_->setEnabled(true);
+ lcdFilterComboBox_->setEnabled(true);
+ }
+ emit repaintNeeded();
+}
+
+
+void
+SettingPanel::checkShowPoints()
+{
+ if (showPointsCheckBox_->isChecked())
+ showPointNumbersCheckBox_->setEnabled(true);
+ else
+ showPointNumbersCheckBox_->setEnabled(false);
+ emit repaintNeeded();
+}
+
+
+void
+SettingPanel::checkLCDFilter()
+{
+ emit repaintNeeded();
+}
+
+
+void
+SettingPanel::syncSettings()
+{
+ engine_->setLcdFilter(
+ static_cast<FT_LcdFilter>(lcdFilterComboboxModel_->indexToValue(
+ lcdFilterComboBox_->currentIndex())));
+ engine_->setAntiAliasingTarget(antiAliasingComboBoxModel_->indexToValue(
+ antiAliasingComboBox_->currentIndex()));
+ engine_->setHinting(hintingCheckBox_->isChecked());
+ engine_->setAutoHinting(autoHintingCheckBox_->isChecked());
+ engine_->setHorizontalHinting(horizontalHintingCheckBox_->isChecked());
+ engine_->setVerticalHinting(verticalHintingCheckBox_->isChecked());
+ engine_->setBlueZoneHinting(blueZoneHintingCheckBox_->isChecked());
+ engine_->setShowSegments(segmentDrawingCheckBox_->isChecked());
+
+ engine_->setGamma(gammaSlider_->value());
+}
+
+
+void
+SettingPanel::createConnections()
+{
+ connect(hintingCheckBox_, &QCheckBox::clicked,
+ this, &SettingPanel::checkHinting);
+
+ // use `qOverload` here to prevent ambiguity.
+ connect(hintingModeComboBox_,
+ qOverload<int>(&QComboBox::currentIndexChanged),
+ this, &SettingPanel::checkHintingMode);
+ connect(antiAliasingComboBox_,
+ qOverload<int>(&QComboBox::currentIndexChanged),
+ this, &SettingPanel::checkAntiAliasing);
+ connect(lcdFilterComboBox_,
+ qOverload<int>(&QComboBox::currentIndexChanged),
+ this, &SettingPanel::checkLCDFilter);
+
+ // TODO: some connections are missing
+ connect(autoHintingCheckBox_, &QCheckBox::clicked,
+ this, &SettingPanel::checkAutoHinting);
+ connect(showBitmapCheckBox_, &QCheckBox::clicked,
+ this, &SettingPanel::repaintNeeded);
+ connect(showPointsCheckBox_, &QCheckBox::clicked,
+ this, &SettingPanel::repaintNeeded);
+ connect(showPointNumbersCheckBox_, &QCheckBox::clicked,
+ this, &SettingPanel::repaintNeeded);
+ connect(showOutlinesCheckBox_, &QCheckBox::clicked,
+ this, &SettingPanel::repaintNeeded);
+}
+
+
+void
+SettingPanel::createLayout()
+{
+ hintingCheckBox_ = new QCheckBox(tr("Hinting"));
+
+ hintingModeLabel_ = new QLabel(tr("Hinting Mode"));
+ hintingModeLabel_->setAlignment(Qt::AlignRight);
+
+ hintingModeComboBoxModel_ = new HintingModeComboBoxModel;
+ hintingModeComboBox_ = new QComboBox;
+ hintingModeComboBox_->setModel(hintingModeComboBoxModel_);
+ hintingModeLabel_->setBuddy(hintingModeComboBox_);
+
+ autoHintingCheckBox_ = new QCheckBox(tr("Auto-Hinting"));
+ horizontalHintingCheckBox_ = new QCheckBox(tr("Horizontal Hinting"));
+ verticalHintingCheckBox_ = new QCheckBox(tr("Vertical Hinting"));
+ blueZoneHintingCheckBox_ = new QCheckBox(tr("Blue-Zone Hinting"));
+ segmentDrawingCheckBox_ = new QCheckBox(tr("Segment Drawing"));
+
+ antiAliasingLabel_ = new QLabel(tr("Anti-Aliasing"));
+ antiAliasingLabel_->setAlignment(Qt::AlignRight);
+
+ antiAliasingComboBoxModel_ = new AntiAliasingComboBoxModel;
+ antiAliasingComboBox_ = new QComboBox;
+ antiAliasingComboBox_->setModel(antiAliasingComboBoxModel_);
+ antiAliasingLabel_->setBuddy(antiAliasingComboBox_);
+
+ lcdFilterLabel_ = new QLabel(tr("LCD Filter"));
+ lcdFilterLabel_->setAlignment(Qt::AlignRight);
+
+ lcdFilterComboboxModel_ = new LCDFilterComboBoxModel;
+ lcdFilterComboBox_ = new QComboBox;
+ lcdFilterComboBox_->setModel(lcdFilterComboboxModel_);
+ lcdFilterLabel_->setBuddy(lcdFilterComboBox_);
+
+ 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);
+ hintingModeLabel_->setMinimumWidth(width);
+ antiAliasingLabel_->setMinimumWidth(width);
+ lcdFilterLabel_->setMinimumWidth(width);
+
+ // ensure that all items in combo boxes fit completely;
+ // also make all combo boxes have the same width
+ width = hintingModeComboBox_->minimumSizeHint().width();
+ width = qMax(antiAliasingComboBox_->minimumSizeHint().width(), width);
+ width = qMax(lcdFilterComboBox_->minimumSizeHint().width(), width);
+ hintingModeComboBox_->setMinimumWidth(width);
+ antiAliasingComboBox_->setMinimumWidth(width);
+ lcdFilterComboBox_->setMinimumWidth(width);
+
+ gammaLabel_ = new QLabel(tr("Gamma"));
+ gammaLabel_->setAlignment(Qt::AlignRight);
+ gammaSlider_ = new QSlider(Qt::Horizontal);
+ gammaSlider_->setRange(0, 30); // in 1/10th
+ gammaSlider_->setTickPosition(QSlider::TicksBelow);
+ gammaSlider_->setTickInterval(5);
+ gammaLabel_->setBuddy(gammaSlider_);
+
+ showBitmapCheckBox_ = new QCheckBox(tr("Show Bitmap"));
+ showPointsCheckBox_ = new QCheckBox(tr("Show Points"));
+ showPointNumbersCheckBox_ = new QCheckBox(tr("Show Point Numbers"));
+ showOutlinesCheckBox_ = new QCheckBox(tr("Show Outlines"));
+
+ hintingModeLayout_ = new QHBoxLayout;
+ hintingModeLayout_->addWidget(hintingModeLabel_);
+ hintingModeLayout_->addWidget(hintingModeComboBox_);
+
+ horizontalHintingLayout_ = new QHBoxLayout;
+ horizontalHintingLayout_->addSpacing(20); // XXX px
+ horizontalHintingLayout_->addWidget(horizontalHintingCheckBox_);
+
+ verticalHintingLayout_ = new QHBoxLayout;
+ verticalHintingLayout_->addSpacing(20); // XXX px
+ verticalHintingLayout_->addWidget(verticalHintingCheckBox_);
+
+ blueZoneHintingLayout_ = new QHBoxLayout;
+ blueZoneHintingLayout_->addSpacing(20); // XXX px
+ blueZoneHintingLayout_->addWidget(blueZoneHintingCheckBox_);
+
+ segmentDrawingLayout_ = new QHBoxLayout;
+ segmentDrawingLayout_->addSpacing(20); // XXX px
+ segmentDrawingLayout_->addWidget(segmentDrawingCheckBox_);
+
+ antiAliasingLayout_ = new QHBoxLayout;
+ antiAliasingLayout_->addWidget(antiAliasingLabel_);
+ antiAliasingLayout_->addWidget(antiAliasingComboBox_);
+
+ lcdFilterLayout_ = new QHBoxLayout;
+ lcdFilterLayout_->addWidget(lcdFilterLabel_);
+ lcdFilterLayout_->addWidget(lcdFilterComboBox_);
+
+ gammaLayout_ = new QHBoxLayout;
+ gammaLayout_->addWidget(gammaLabel_);
+ gammaLayout_->addWidget(gammaSlider_);
+
+ pointNumbersLayout_ = new QHBoxLayout;
+ pointNumbersLayout_->addSpacing(20); // XXX px
+ pointNumbersLayout_->addWidget(showPointNumbersCheckBox_);
+
+ generalTabLayout_ = new QVBoxLayout;
+ generalTabLayout_->addWidget(hintingCheckBox_);
+ generalTabLayout_->addLayout(hintingModeLayout_);
+ generalTabLayout_->addWidget(autoHintingCheckBox_);
+ generalTabLayout_->addLayout(horizontalHintingLayout_);
+ generalTabLayout_->addLayout(verticalHintingLayout_);
+ generalTabLayout_->addLayout(blueZoneHintingLayout_);
+ generalTabLayout_->addLayout(segmentDrawingLayout_);
+ generalTabLayout_->addSpacing(20); // XXX px
+ generalTabLayout_->addStretch(1);
+ generalTabLayout_->addLayout(antiAliasingLayout_);
+ generalTabLayout_->addLayout(lcdFilterLayout_);
+ generalTabLayout_->addSpacing(20); // XXX px
+ generalTabLayout_->addStretch(1);
+ generalTabLayout_->addLayout(gammaLayout_);
+ generalTabLayout_->addSpacing(20); // XXX px
+ generalTabLayout_->addStretch(1);
+ generalTabLayout_->addWidget(showBitmapCheckBox_);
+ generalTabLayout_->addWidget(showPointsCheckBox_);
+ generalTabLayout_->addLayout(pointNumbersLayout_);
+ generalTabLayout_->addWidget(showOutlinesCheckBox_);
+
+ generalTab_ = new QWidget;
+ generalTab_->setLayout(generalTabLayout_);
+
+ mmgxTab_ = new QWidget;
+
+ tab_ = new QTabWidget;
+ tab_->addTab(generalTab_, tr("General"));
+ tab_->addTab(mmgxTab_, tr("MM/GX"));
+
+ mainLayout_ = new QVBoxLayout;
+ mainLayout_->addWidget(tab_);
+ setLayout(mainLayout_);
+}
+
+
+void
+SettingPanel::setDefaults()
+{
+ Engine::EngineDefaultValues& defaults = engine_->engineDefaults();
+
+ hintingModeComboBoxModel_->setSupportedModes(
+ { defaults.ttInterpreterVersionDefault,
+ defaults.ttInterpreterVersionOther,
+ defaults.ttInterpreterVersionOther1 },
+ { defaults.cffHintingEngineDefault,
+ defaults.cffHintingEngineOther });
+
+ currentCFFHintingMode_
+ = hintingModeComboBoxModel_->cffModeToIndex(
+ defaults.cffHintingEngineDefault);
+ currentTTInterpreterVersion_
+ = hintingModeComboBoxModel_->ttInterpreterVersionToIndex(
+ defaults.ttInterpreterVersionDefault);
+
+ hintingCheckBox_->setChecked(true);
+
+ antiAliasingComboBox_->setCurrentIndex(
+ AntiAliasingComboBoxModel::AntiAliasing_Normal);
+ lcdFilterComboBox_->setCurrentIndex(
+ LCDFilterComboBoxModel::LCDFilter_Light);
+
+ horizontalHintingCheckBox_->setChecked(true);
+ verticalHintingCheckBox_->setChecked(true);
+ blueZoneHintingCheckBox_->setChecked(true);
+
+ showBitmapCheckBox_->setChecked(true);
+ showOutlinesCheckBox_->setChecked(true);
+
+ gammaSlider_->setValue(18); // 1.8
+}
+
+
+// end of settingpanel.cpp
diff --git a/src/ftinspect/panels/settingpanel.hpp
b/src/ftinspect/panels/settingpanel.hpp
new file mode 100644
index 0000000..d917f14
--- /dev/null
+++ b/src/ftinspect/panels/settingpanel.hpp
@@ -0,0 +1,110 @@
+// settingpanel.hpp
+
+// Copyright (C) 2022 by Charlie Jiang.
+
+#pragma once
+
+#include "../engine/engine.hpp"
+#include "../models/ttsettingscomboboxmodel.hpp"
+
+#include <QWidget>
+#include <QTabWidget>
+#include <QLabel>
+#include <QComboBox>
+#include <QCheckBox>
+#include <QBoxLayout>
+
+class SettingPanel
+: public QWidget
+{
+ Q_OBJECT
+public:
+ SettingPanel(Engine* engine);
+ ~SettingPanel() = default;
+
+ void syncSettings();
+
+ //////// Getters/Setters
+
+ int antiAliasingModeIndex();
+
+ // TODO This would eventually go to separate panel for ftglyph (Singular
View)
+ bool showBitmapChecked();
+ bool showOutLinesChecked();
+ bool showPointNumbersChecked();
+ bool showPointsChecked();
+
+signals:
+ void fontReloadNeeded();
+ void repaintNeeded();
+
+ //////// `checkXXX` funcs
+
+public slots:
+ void checkAllSettings();
+ void checkHinting();
+ void checkHintingMode();
+ void checkAutoHinting();
+ void checkAntiAliasing();
+ void checkShowPoints();
+ void checkLCDFilter();
+
+private:
+ Engine* engine_;
+
+ int currentCFFHintingMode_;
+ int currentTTInterpreterVersion_;
+
+ QTabWidget* tab_;
+
+ QWidget* generalTab_;
+ QWidget* mmgxTab_;
+
+ QLabel* gammaLabel_;
+ QLabel* antiAliasingLabel_;
+ QLabel* hintingModeLabel_;
+ QLabel* lcdFilterLabel_;
+
+ QCheckBox* hintingCheckBox_;
+ QCheckBox* horizontalHintingCheckBox_;
+ QCheckBox* verticalHintingCheckBox_;
+ QCheckBox* blueZoneHintingCheckBox_;
+ QCheckBox* segmentDrawingCheckBox_;
+ QCheckBox* autoHintingCheckBox_;
+ QCheckBox* showBitmapCheckBox_;
+ QCheckBox* showOutlinesCheckBox_;
+ QCheckBox* showPointNumbersCheckBox_;
+ QCheckBox* showPointsCheckBox_;
+
+ AntiAliasingComboBoxModel* antiAliasingComboBoxModel_;
+ HintingModeComboBoxModel* hintingModeComboBoxModel_;
+ LCDFilterComboBoxModel* lcdFilterComboboxModel_;
+
+ QComboBox* hintingModeComboBox_;
+ QComboBox* antiAliasingComboBox_;
+ QComboBox* lcdFilterComboBox_;
+
+ QSlider* gammaSlider_;
+
+ QVBoxLayout* mainLayout_;
+ QHBoxLayout* hintingModeLayout_;
+ QHBoxLayout* horizontalHintingLayout_;
+ QHBoxLayout* verticalHintingLayout_;
+ QHBoxLayout* blueZoneHintingLayout_;
+ QHBoxLayout* segmentDrawingLayout_;
+ QHBoxLayout* antiAliasingLayout_;
+ QHBoxLayout* lcdFilterLayout_;
+ QHBoxLayout* gammaLayout_;
+ QHBoxLayout* pointNumbersLayout_;
+
+ QVBoxLayout* generalTabLayout_;
+
+ //////// Initializing funcs
+
+ void createConnections();
+ void createLayout();
+ void setDefaults();
+};
+
+
+// end of settingpanel.hpp
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] gsoc-2022-chariri-2 6421208 06/30: [ftinspect] Move settings panel to a separate class.,
Werner Lemberg <=