freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2-demos] master 970446f 19/41: [ftinspect] Add auxiliary lines


From: Werner Lemberg
Subject: [freetype2-demos] master 970446f 19/41: [ftinspect] Add auxiliary lines for the grid view.
Date: Mon, 3 Oct 2022 11:27:02 -0400 (EDT)

branch: master
commit 970446fe9b2a8610fedec6753d33a6a643437a25
Author: Charlie Jiang <w@chariri.moe>
Commit: Werner Lemberg <wl@gnu.org>

    [ftinspect] Add auxiliary lines for the grid view.
    
    The aux lines will show advance and asc/descender.
    
    * src/ftinspect/glyphcomponents/grid.cpp,
      src/ftinspect/glyphcomponents/grid.hpp: Implement aux lines.
    
    * src/ftinspect/engine/engine.cpp, src/ftinspect/engine/engine.hpp:
      Add `currentSizeAscDescPx`.
    
    * src/ftinspect/panels/singular.cpp, src/ftinspect/panels/singular.hpp:
      Pass parameters to the `Grid` graphics item.
---
 src/ftinspect/engine/engine.cpp        |  8 ++++++++
 src/ftinspect/engine/engine.hpp        |  2 ++
 src/ftinspect/glyphcomponents/grid.cpp | 25 ++++++++++++++++++++++++-
 src/ftinspect/glyphcomponents/grid.hpp |  4 ++++
 src/ftinspect/panels/singular.cpp      |  7 +++++++
 5 files changed, 45 insertions(+), 1 deletion(-)

diff --git a/src/ftinspect/engine/engine.cpp b/src/ftinspect/engine/engine.cpp
index f46b075..9f96109 100644
--- a/src/ftinspect/engine/engine.cpp
+++ b/src/ftinspect/engine/engine.cpp
@@ -459,6 +459,14 @@ Engine::currentFontFixedSizes()
 }
 
 
+std::pair<int, int>
+Engine::currentSizeAscDescPx()
+{
+  return { ftSize_->metrics.ascender >> 6,
+           ftSize_->metrics.descender >> 6 };
+}
+
+
 QString
 Engine::glyphName(int index)
 {
diff --git a/src/ftinspect/engine/engine.hpp b/src/ftinspect/engine/engine.hpp
index 333bfa0..935a06b 100644
--- a/src/ftinspect/engine/engine.hpp
+++ b/src/ftinspect/engine/engine.hpp
@@ -132,6 +132,8 @@ public:
   bool currentFontHasColorLayers();
   std::vector<int> currentFontFixedSizes();
 
+  std::pair<int, int> currentSizeAscDescPx();
+
   // (settings)
   int dpi() { return dpi_; }
   FTC_ImageType imageType() { return &imageType_; }
diff --git a/src/ftinspect/glyphcomponents/grid.cpp 
b/src/ftinspect/glyphcomponents/grid.cpp
index 1ab37bb..29740ed 100644
--- a/src/ftinspect/glyphcomponents/grid.cpp
+++ b/src/ftinspect/glyphcomponents/grid.cpp
@@ -119,7 +119,15 @@ Grid::paint(QPainter* painter,
 
   if (showAuxLines_)
   {
-    // TODO: impl
+    painter->setPen(gb->ascDescAuxPen);
+    painter->drawLine(minX, ascender_,
+                      maxX, ascender_);
+    painter->drawLine(minX, descender_,
+                      maxX, descender_);
+
+    painter->setPen(gb->advanceAuxPen);
+    painter->drawLine(advance_, minY,
+                      advance_, maxY);
   }
 }
 
@@ -133,4 +141,19 @@ Grid::setShowGrid(bool showGrid, bool showAuxLines)
 }
 
 
+void
+Grid::updateParameters(int ascenderPx,
+                       int descenderPx,
+                       int advancePx)
+{
+  // Need to flip the Y coord (originally Cartesian)
+  ascender_ = -ascenderPx;
+  descender_ = -descenderPx;
+  advance_ = advancePx;
+
+  if (showAuxLines_)
+    update();
+}
+
+
 // end of grid.cpp
diff --git a/src/ftinspect/glyphcomponents/grid.hpp 
b/src/ftinspect/glyphcomponents/grid.hpp
index 529d041..92008d7 100644
--- a/src/ftinspect/glyphcomponents/grid.hpp
+++ b/src/ftinspect/glyphcomponents/grid.hpp
@@ -20,6 +20,7 @@ public:
              QWidget* widget) override;
 
   void setShowGrid(bool showGrid, bool showAuxLines);
+  void updateParameters(int ascenderPx, int descenderPx, int advancePx);
 
   void updateRect(); // there's no signal/slots for QGraphicsItem.
 
@@ -30,6 +31,9 @@ private:
 
   bool showGrid_ = true;
   bool showAuxLines_ = false;
+
+  int ascender_ = 0, descender_ = 0;
+  int advance_ = 0;
 };
 
 
diff --git a/src/ftinspect/panels/singular.cpp 
b/src/ftinspect/panels/singular.cpp
index 14dbae5..a2f327c 100644
--- a/src/ftinspect/panels/singular.cpp
+++ b/src/ftinspect/panels/singular.cpp
@@ -131,7 +131,14 @@ SingularTab::drawGlyph()
         glyphScene_->addItem(currentGlyphPointNumbersItem_);
       }
     }
+
+    engine_->reloadFont();
+    auto ascDesc = engine_->currentSizeAscDescPx();
+    gridItem_->updateParameters(ascDesc.first, ascDesc.second,
+                                glyph->advance.x >> 16);
   }
+  else
+    gridItem_->updateParameters(0, 0, 0);
 
   glyphScene_->update();
 }



reply via email to

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