[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();
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master 970446f 19/41: [ftinspect] Add auxiliary lines for the grid view.,
Werner Lemberg <=