Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue 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)

Aperta
#1,216 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
c

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
C
Stelle
3
Fork
7
Merge medio
3h 58m
PR unite (30g)
105

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di InauguralSystems/EigenScript

Tutte le issue di InauguralSystems/EigenScript

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.