[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master f72993a 3/4: [ftinspect] Add methods to get num
From: |
Werner LEMBERG |
Subject: |
[freetype2-demos] master f72993a 3/4: [ftinspect] Add methods to get number of faces and instances. |
Date: |
Thu, 05 May 2016 08:29:35 +0000 |
branch: master
commit f72993a7a3f6561f14f26e5c7afc37538041e4ea
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>
[ftinspect] Add methods to get number of faces and instances.
* src/ftinspect.cpp (Engine::numFaces, Engine::numInstances): New
methods.
* src/ftinspect.h (Engine): Updated.
---
ChangeLog | 9 +++++++
src/ftinspect.cpp | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++
src/ftinspect.h | 2 ++
3 files changed, 83 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index 647345a..efb8238 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2016-05-05 Werner Lemberg <address@hidden>
+ [ftinspect] Add methods to get number of faces and instances.
+
+ * src/ftinspect.cpp (Engine::numFaces, Engine::numInstances): New
+ methods.
+
+ * src/ftinspect.h (Engine): Updated.
+
+2016-05-05 Werner Lemberg <address@hidden>
+
[ftinspect] Minor.
* src/ftinspect.cpp (faceRequester): Use reference.
diff --git a/src/ftinspect.cpp b/src/ftinspect.cpp
index 22ffb82..ec2b157 100644
--- a/src/ftinspect.cpp
+++ b/src/ftinspect.cpp
@@ -78,6 +78,78 @@ Engine::~Engine()
}
+int
+Engine::numFaces(int fontIndex)
+{
+ if (fontIndex >= gui->fonts.size())
+ return -1;
+
+ Font& font = gui->fonts[fontIndex];
+
+ // value already available?
+ if (!font.numInstancesList.isEmpty())
+ return font.numInstancesList.size();
+
+ FT_Error error;
+ FT_Face face;
+
+ error = FT_New_Face(library,
+ qPrintable(font.filePathname),
+ -1,
+ &face);
+ if (error)
+ {
+ // XXX error handling
+ return -1;
+ }
+
+ int result = face->num_faces;
+
+ FT_Done_Face(face);
+
+ return result;
+}
+
+
+int
+Engine::numInstances(int fontIndex,
+ int faceIndex)
+{
+ if (fontIndex >= gui->fonts.size())
+ return -1;
+
+ Font& font = gui->fonts[fontIndex];
+
+ if (faceIndex >= font.numInstancesList.size())
+ return -1;
+
+ // value already available?
+ if (font.numInstancesList[faceIndex] >= 0)
+ return font.numInstancesList[faceIndex];
+
+ FT_Error error;
+ FT_Face face;
+
+ error = FT_New_Face(library,
+ qPrintable(font.filePathname),
+ -(faceIndex + 1),
+ &face);
+ if (error)
+ {
+ // XXX error handling
+ return -1;
+ }
+
+ // we return `n' instances plus one,
+ // the latter representing a face without an instance selected
+ int result = (face->style_flags >> 16) + 1;
+
+ FT_Done_Face(face);
+
+ return result;
+}
+
+
void
Engine::update()
{
diff --git a/src/ftinspect.h b/src/ftinspect.h
index 216b0bb..eacc196 100644
--- a/src/ftinspect.h
+++ b/src/ftinspect.h
@@ -66,6 +66,8 @@ public:
~Engine();
void update();
+ int numFaces(int);
+ int numInstances(int, int);
friend class MainGUI;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master f72993a 3/4: [ftinspect] Add methods to get number of faces and instances.,
Werner LEMBERG <=