Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

gfx: no image blit, no additive blend, no polygon/gradient, no font API — the 15-primitive surface caps every consumer at a 1982 look (Tidepool forcing-function)

Abierto
#1,216 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
c

Línea de trabajo

Start in src/ext_gfx.c, focusing on the existing SDL loader, framebuffer texture path, and current gfx primitives. Review src/draw.eigs and the lib/ui consumers, then inspect how headless draw-list entries and gfx_read pixel tests are structured under xvfb. Done means the requested image, blend, geometry, alpha, and font capabilities are implemented with dependency-free loading and coverage for each builtin.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

area:gfx enhancement found-by:consumer

Forcing-function report from Tidepool (maintainer's call, 2026-09-20: the gfx fleet "looks like it was from the early 80s — necessary to have started there, for the language, but not modern"). Measured against src/ext_gfx.c on main a22f8dd, the runtime's drawing surface is 15 builtins: gfx_open close title clear present poll delay ticks clip read fb point line rect rrect circle text text_width text_height. What a modern-looking 2D game needs and cannot get from that set:

Already there (so the ask is smaller than it looks): a global SDL_BLENDMODE_BLEND (line 486); gfx_rect/gfx_circle take an optional alpha (538–612); textures exist internally (SDL_CreateTexture/UpdateTexture/RenderCopy are loaded for gfx_fb); SDL2_ttf is probed for gfx_text; inflate/deflate builtins exist (make zlib).

Missing:

  1. No image path. Nothing loads a raster or blits one. Every consumer draws with circles and lines; a background plate, a sprite, a particle texture, a generated concept art (Tidepool docs/concept-2026-09-20.png, made in one minute) cannot reach the screen. Ask: gfx_image_load of path → handle (PNG decode in C on top of the existing inflate — no SDL2_image dependency, which is not on the dev box anyway; RGBA with real alpha), gfx_image_draw of [img, x, y, w, h, alpha, angle_deg], gfx_image_size, and a framebuffer-backed gfx_image_from_fb so procedural art can be cached once and blitted many times.
  2. No additive blend. Glow is BLENDMODE_ADD; a bioluminescent look is impossible with alpha-blend only. Ask: gfx_blend of mode ("blend" | "add" | "none"), state held per subsequent draw.
  3. gfx_line/gfx_point have no alpha (rect/circle do). Ask: same optional trailing alpha on all four.
  4. No filled polygon / gradient / soft circle. A cell body is a smooth blob, a water background is a gradient, a glow is a radial falloff. Ask: gfx_polygon of [[x,y]…, r, g, b, a] (SDL_RenderGeometry, already in SDL2 ≥ 2.0.18) and gfx_circle_soft of [cx, cy, radius, r, g, b, a, feather] — or just gfx_polygon plus item 1 and let lib/ build the rest.
  5. Text is a bitmap font unless a system TTF happens to be found, with no size/weight API beyond scale. Ask: gfx_font of [path, size] → handle, gfx_text accepting a font handle.

Consumer evidence: Tidepool's renderer uses exactly gfx_circle/line/rect/rrect/point/text/clear/present (src/draw.eigs), DMG uses gfx_fb, DeslanStudio uses lib/ui on the same primitives. All three are capped by the same five gaps. The identity of the Tidepool look (translucent, glowing, dark pool) survives — it needs items 1, 2 and 4 to render the way the concept frame shows it.

Keep it dependency-free (EigenScript has none): PNG via inflate, geometry via SDL_RenderGeometry through the existing dlsym loader, nothing new to link. Each builtin lands with a headless draw-list entry (the renderer is headless-inspectable and consumers' tests assert on it) and a gfx_read pixel test under xvfb.

Lenguaje dominante
C
Estrellas
3
Forks
7
Merge medio
3 h 58 min
PR fusionados (30 d)
105

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de InauguralSystems/EigenScript

Todos los issues de InauguralSystems/EigenScript

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.