Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem 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)

Đang mở
#1,216 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
c

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
C
Star
3
Fork
7
Merge trung bình
3 giờ 58 phút
Pull request đã merge (30 ngày)
105

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của InauguralSystems/EigenScript

Tất cả issue của InauguralSystems/EigenScript

Issue tương tự

Thêm issue về C

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.