mirror of
https://github.com/mapbox/node-fontnik.git
synced 2026-01-25 16:02:44 +00:00
64 lines
1.8 KiB
C++
64 lines
1.8 KiB
C++
#include <pango/pangoft2.h>
|
|
#include "sdf_renderer.hpp"
|
|
|
|
struct _PangoSDFRenderer {
|
|
PangoRenderer parent_instance;
|
|
PangoSDFGlyphs glyphs;
|
|
};
|
|
|
|
typedef struct _PangoRendererClass PangoSDFRendererClass;
|
|
|
|
|
|
G_DEFINE_TYPE(PangoSDFRenderer, pango_sdf_renderer, PANGO_TYPE_RENDERER);
|
|
|
|
PangoRenderer *pango_sdf_get_renderer()
|
|
{
|
|
return (PangoRenderer *)g_object_new(PANGO_TYPE_SDF_RENDERER, NULL);
|
|
}
|
|
|
|
void pango_sdf_renderer_reset(PangoSDFRenderer *renderer)
|
|
{
|
|
renderer->glyphs.clear();
|
|
}
|
|
|
|
const PangoSDFGlyphs& pango_sdf_renderer_get_glyphs(PangoSDFRenderer *renderer)
|
|
{
|
|
return renderer->glyphs;
|
|
}
|
|
|
|
|
|
static void pango_sdf_renderer_draw_glyph(PangoRenderer *renderer, PangoFont *font, PangoGlyph glyph, double x, double y)
|
|
{
|
|
// TODO: store size
|
|
// PangoFcFont *fc_font = PANGO_FC_FONT(font);
|
|
// FT_Face face = pango_fc_font_lock_face(fc_font);
|
|
// fprintf(stderr, "%ld\n", face->size->metrics.x_scale / 2048);
|
|
// pango_fc_font_unlock_face(fc_font);
|
|
|
|
PangoSDFGlyphs& glyphs = PANGO_SDF_RENDERER(renderer)->glyphs;
|
|
PangoSDFGlyph g;
|
|
g.font = font;
|
|
g.glyph = glyph;
|
|
g.x = x;
|
|
g.y = y;
|
|
glyphs.push_back(g);
|
|
}
|
|
|
|
|
|
static void pango_sdf_renderer_draw_trapezoid(PangoRenderer *renderer, PangoRenderPart part G_GNUC_UNUSED, double y1, double x11, double x21, double y2, double x12, double x22)
|
|
{
|
|
// TODO: store underlines
|
|
// fprintf(stderr, "trapezoid: y1:%f\tx11:%f\tx21:%f\ty2:%f\tx12:%f\tx22:%f\n", y1, x11, x21, y2, x12, x22);
|
|
}
|
|
|
|
static void pango_sdf_renderer_class_init(PangoSDFRendererClass *klass)
|
|
{
|
|
PangoRendererClass *renderer_class = PANGO_RENDERER_CLASS(klass);
|
|
renderer_class->draw_glyph = pango_sdf_renderer_draw_glyph;
|
|
renderer_class->draw_trapezoid = pango_sdf_renderer_draw_trapezoid;
|
|
}
|
|
|
|
static void pango_sdf_renderer_init(PangoSDFRenderer *renderer G_GNUC_UNUSED)
|
|
{
|
|
}
|