1115 Commits

Author SHA1 Message Date
David Herrmann
607a5eed54 Set console resolution to 800x600 by default
This sets the console resolution to 800x600 on startup. We no longer have a
console with an invalid resolution after startup so we now can start calculating
font sizes properly.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-26 17:04:52 +01:00
David Herrmann
7149b5dd37 Draw console
Properly draw all cells of a console on redraw.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-26 16:54:40 +01:00
David Herrmann
c8855d47b2 Reset cairo surface when drawing console
We must use SOURCE operator to reset the surface. Otherwise, we end up doing
nothing here because our alpha value is 0.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-26 16:48:59 +01:00
David Herrmann
c455d8f9f0 Set each cell to '?' for testing purposes
Each cell of a console is initialized to '?' to allow testing the glyph
operations.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-26 16:47:50 +01:00
David Herrmann
8b93b07db3 Refresh texture when redrawing console
We need to refresh the GL texture data when redrawing the console. Otherwise, we
always end up with the first frame mapped onto the GL quad object.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-26 16:46:44 +01:00
David Herrmann
27047fddbf Create font when resizing console
When resizing a kmscon_console object we automatically create a new font because
all cached objects get invalid now.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-26 16:43:17 +01:00
David Herrmann
27807e913e Add kmscon_font type
A kmscon_font object is used to store the current font information. It allows to
draw any kind of UTF-8 string to the screen. Internally, it uses kmscon_glyph to
store glyph information for every character that has been drawn so redrawing it
is much faster.

Currently, we only support GLYPH_LAYOUT as caching method which is quite slow.
However, it supports any kind of input and always works. Better and faster
caching algorithms like cairo_scaled_font_t will be added later.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-26 16:33:06 +01:00
David Herrmann
a12cf0aa7f Add kmscon_char_dup()
Add helper function to duplicate a kmscon_char object.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-26 15:27:10 +01:00
David Herrmann
bab0068bed Set default console size to 80x24
Create for every new console a default cell-size of 80x24.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-20 18:25:59 +01:00
David Herrmann
9a853a796f Add cells to console objects
A console has a fixed line and column count. Each entry is represented by a
kmscon_cell object. The console can be resized on the fly.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-20 18:21:41 +01:00
David Herrmann
173d38c0f5 Add console drawing-logic
A console may be displayed on multiple outputs. We allow different screen
resolutions on these outputs so we need a way to map the console image onto
different outputs.

We simply render the console image into a cairo surface with a user-given
resolution. This should be set to the highest resultion of the used outputs. The
application can now map this image onto the different framebuffers. This will
scale the image if the target framebuffer is smaller than the cairo surface.

We also do not clear the framebuffer. This should be done by the user. This
allows us to draw with alpha values and blend the console on top of the current
framebuffer. We do not have to care for background images and the application
has full control of where the console is shown.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-20 17:49:21 +01:00
David Herrmann
cfdbaeb50e Fix kmscon_console_unref name
The name of the unref function was wrong. Fix this from kmscon_con_unref to
kmscon_console_unref.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-20 15:47:23 +01:00
David Herrmann
731091a70a Add kmscon_char type
Every cell of the console contains one single printable character. We want to be
Unicode compatible so we must support combined characters. Hence, each cell
consists of a UTF-8 string that can be drawn by pango as a single glyph.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-20 14:44:39 +01:00
David Herrmann
f85eb100f9 Add console subsystem dummy
Add dummy files for the console subsystem. This subsystem will be used to draw a
console to a framebuffer. It uses pango and cairo for text-rendering and will
provide all required modification functions that the terminal emulation will
require.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-20 00:41:15 +01:00
David Herrmann
85d7391cda Add output subsystem
The output subsystem manages the connected monitors, provides framebuffers and
OpenGL contexts and handles all DRM/DRI/KMS related functionality.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
2011-11-20 00:09:39 +01:00