This adds an OpenGL text renderer. It uses textures to store glyph
information and renders the characters by assembling a vertex-list first.
To improve performance, we use texture-atlases.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This reworks the text renderer system to make it easier to write backends.
We also allow returning errors during rendering now.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This allows configuring the bblit backend during kmscon-build. If other
rendering backends are preferred, you can now compile kmscon without the
bblit backend.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The freetype2 renderer uses ft2 and fontconfig to provide a very
simplistic renderer. We also simplify the logic of the whole subsystem a
lot and guarantee that each glyph will have the same size now.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The bblit text-renderer is the most basic renderer which simply blits or
blends the glyphs into the framebuffer memory. It cannot be used with
displays that do not provide framebuffer access but only 3D access.
However, 3D rendering is currently broken, anyway, so we can ignore it.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The text-renderer subsystem provides a way to register arbitrary
text-rendering backends. These backends use the font-objects to draw the
console into a framebuffer.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The pango font backend is similar to the currently used older backend but
provides the new API. It is modular so we can disable it if not needed.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
When rendering underlines we need the baseline attribute. Therefore,
replace the unused x/y offsets with a baseline attribute.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
The 8x16 font is a static in-memory font that can be used as safe
fallback. It does not allow scaling or other font decorations so it's
really just for very basic text-layouts.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
A single glyph might be bigger/smaller than the other glyphs so allow them
to be positioned. As we are not interested in details like baselines, we
simply use an x/y offset.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
When running as emergency console, we must correctly deal with missing
libraries. Therefore, our font renderers must be modular so if freetype2
is not found we must be able to load another font. Therefore, this
introduces a new font-subsystem which can add/remove font-renderers
on-the-fly.
The real font-renderer backends will follow. This only provides the
modular infrastructure.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>