summary refs log tree commit diff
path: root/Text TV Pixelflut BornHack 2024/index.md
diff options
context:
space:
mode:
authoruser@node5.net <user@node5.net>2025-07-19 17:02:57 +0200
committeruser@node5.net <user@node5.net>2025-07-19 17:02:57 +0200
commitf5bbe606770a4327535e459f106bd4a7158eb6e0 (patch)
treefcad03f4ea9b49460f0387f2b62ef5172aba626c /Text TV Pixelflut BornHack 2024/index.md
parentf8bd8fbf79c95ed99bea24af3d7d47c1bd0deb57 (diff)
Text TV BornHack renamed, 2024 & 2025 picture, change of plans
Diffstat (limited to 'Text TV Pixelflut BornHack 2024/index.md')
-rw-r--r--Text TV Pixelflut BornHack 2024/index.md126
1 files changed, 0 insertions, 126 deletions
diff --git a/Text TV Pixelflut BornHack 2024/index.md b/Text TV Pixelflut BornHack 2024/index.md
deleted file mode 100644
index 6c74b6e..0000000
--- a/Text TV Pixelflut BornHack 2024/index.md
+++ /dev/null
@@ -1,126 +0,0 @@
----
-description: Pixelflut emulating teletext aka *Tekst-TV* featuring schedule, and user content *news* section
-created: 2024-07-07
----
-
-![Text TV CRT](Text&#32;TV&#32;CRT.png)
-
-## Idea
-
-This years BornHack will feature an even cooler Pixelflut setup, which inspired me to make something for it.
-An important goal was to have something with a low barrier of entry to interact with it.
-My first idea involved a keyboard presented at the Pixelflut setup,
-allowing one to type messages to be displayed on screen.
-Then later i got the idea to make it Text TV themed, this works well with the nerdy culture, and allows me to add a
-schedule, and get user interaction through a "news" section.
-
-### Mock up
-
-![Mock up](Mock&#32;up.png)
-
-### Inspiration
- <iframe src="https://www.dr.dk/cgi-bin/fttv1.exe/100" style="border:none;height:490px;width:320px" title="Tekst TV - dr.dk"></iframe>
-
----
-
-## Renderer coding
-
-### Text rendering in C using pango & cairo
-
-Based on a cairo pixel flut code sample from a fellow hacker, which i could expand to import and image, rather easily, 
-and render text, which worked, but it was anti aliased, making it look horible in the small format.
-
-![Anti aliased text](Anti&#32;aliased&#32;text.png)
-
-Top is gimp mock up text,
-bottom is pango cairo rendered text
-
-### Turning off anti aliasing
-
-This was annoying, because `cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);` didn't work,
-it had to be done in pango context.
-
-[Change font rendering (non-antialiased) with pango - stackoverflow.com](https://stackoverflow.com/questions/16106659/change-font-rendering-non-antialiased-with-pango#answer-73221211)
-
-An answer in this stack overflow question, mentions that:
-*"In C you can turn off anti-aliasing when drawing with Pangocairo like this:"*
-```c
-cairo_font_options_t *options = cairo_font_options_create();
-cairo_font_options_set_antialias(options, CAIRO_ANTIALIAS_NONE);
-pango_cairo_context_set_font_options(context, options);
-cairo_font_options_destroy(options);
-```
-
-Next problem then, is getting the context.
-
-I found out how to do this in: [pango examples cairoshape.c - gitlab.com](https://gitlab.gnome.org/GNOME/pango/-/blob/239e030e4f38f0b7b899a8a405437601daf2860d/examples/cairoshape.c#L137)
-
-Using `layout = pango_cairo_create_layout (cr);` and `pango_layout_get_context (layout);`
-
-This means i can now turn off, anti aliasing
-
-Here's a code sample:
-
-```c
-  cairo_surface_t *surface;
-  cairo_t *cr;
-
-  surface = cairo_image_surface_create_for_data(
-    f->image, f->format,
-    f->width, f->height, f->stride);
-  cr = cairo_create(surface);
-
-  //cairo_scale (cr, 2, 2);
-  //cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
-
-  int              w, h;
-  cairo_surface_t *image;
-
-  image = cairo_image_surface_create_from_png ("../base.png");
-  w = cairo_image_surface_get_width (image);
-  h = cairo_image_surface_get_height (image);
-  //cairo_translate (cr, 0, 1080 - h);
-
-  cairo_set_source_surface (cr, image, 0, 0);
-  cairo_paint (cr);
-
-  // Set up the Pango Cairo context
-  PangoLayout *layout = pango_cairo_create_layout(cr);
-  PangoFontDescription *font_desc = pango_font_description_from_string("Monospace 7");
-  //pango_font_description_set_size(font_desc, 8 * PANGO_SCALE);
-  pango_layout_set_font_description(layout, font_desc);
-  pango_font_description_free(font_desc);
-
-  // Turn off antialias
-  PangoContext *pango_context = pango_layout_get_context (layout);
-  cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE);
-  cairo_font_options_t *options = cairo_font_options_create();
-  cairo_font_options_set_antialias(options, CAIRO_ANTIALIAS_NONE);
-  pango_cairo_context_set_font_options(pango_context, options);
-  cairo_font_options_destroy(options);
-
-  // Move
-  cairo_translate (cr, 6, 115);
-
-  // Set the text to display
-  pango_layout_set_text(layout, "Hello World!", -1);
-
-  // Render the layout
-  cairo_set_source_rgb(cr, 1, 1, 1); // Set color to white
-  pango_cairo_show_layout(cr, layout);
-
-  // Clean up
-  g_object_unref(layout);
-
-
-  cairo_destroy (cr);
-  cairo_surface_destroy(surface);
-```
-
-Which renderes non-anti-aliased text
-
-![Anti aliasing turned off](Anti aliasing turned off.png)
-
-Again, top is gimp mock up text,
-bottom is pango cairo rendered text
-