freetype-commit
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]