wolfhece.opengl.toolbar_icons

Procedural icon texture atlas for the on-canvas ToolbarOverlay.

Each icon is rasterised with Pillow ImageDraw into a 64 × 64 RGBA cell. All cells are packed into a single OpenGL texture uploaded once on first use. Icons are drawn as textured quads tinted by glColor4f.

Module Contents

wolfhece.opengl.toolbar_icons._CELL = 64[source]
wolfhece.opengl.toolbar_icons._PAD = 12[source]
wolfhece.opengl.toolbar_icons._LW = 3[source]
wolfhece.opengl.toolbar_icons._W = (235, 235, 240, 255)[source]
wolfhece.opengl.toolbar_icons._G = (160, 160, 170, 180)[source]
wolfhece.opengl.toolbar_icons._plus(d: PIL.ImageDraw.ImageDraw, cx, cy, r=8, w=_LW, fill=_W)[source]
wolfhece.opengl.toolbar_icons._cross(d: PIL.ImageDraw.ImageDraw, cx, cy, r=8, w=_LW, fill=_W)[source]
wolfhece.opengl.toolbar_icons._dot(d: PIL.ImageDraw.ImageDraw, x, y, r=3, fill=_W)[source]
wolfhece.opengl.toolbar_icons._arrowhead(d: PIL.ImageDraw.ImageDraw, x1, y1, x2, y2, size=7, fill=_W)[source]

Arrowhead at (x2, y2) coming from (x1, y1).

wolfhece.opengl.toolbar_icons._arrow(d: PIL.ImageDraw.ImageDraw, x1, y1, x2, y2, head=7, w=_LW, fill=_W)[source]

Line with arrowhead.

wolfhece.opengl.toolbar_icons._icon_add_zone(d, s, p)[source]

Rectangle with centred + sign.

wolfhece.opengl.toolbar_icons._icon_add_vec(d, s, p)[source]

Polyline with vertex dots and + badge.

wolfhece.opengl.toolbar_icons._icon_capture(d, s, p)[source]

Pen / pencil diagonal.

wolfhece.opengl.toolbar_icons._icon_modify(d, s, p)[source]

Vertex dot with 4-way move arrows.

wolfhece.opengl.toolbar_icons._icon_insert(d, s, p)[source]

Line with new vertex inserted in the middle.

wolfhece.opengl.toolbar_icons._icon_move_vec(d, s, p)[source]

Four-way arrow cross (standard move icon).

wolfhece.opengl.toolbar_icons._icon_rotate(d, s, p)[source]

Circular arrow (arc + arrowhead).

wolfhece.opengl.toolbar_icons._icon_parallel(d, s, p)[source]

Two parallel horizontal lines.

wolfhece.opengl.toolbar_icons._icon_sel_poly(d, s, p)[source]

Selection polygon (pentagon outline).

wolfhece.opengl.toolbar_icons._icon_sel_line(d, s, p)[source]

Zigzag polyline (select along path).

wolfhece.opengl.toolbar_icons._icon_sel_all(d, s, p)[source]

Filled square = select all.

wolfhece.opengl.toolbar_icons._icon_reset_sel(d, s, p)[source]

Bold X cross = reset / clear.

wolfhece.opengl.toolbar_icons._icon_dilate(d, s, p)[source]

Small square with outward arrows at corners.

wolfhece.opengl.toolbar_icons._icon_erode(d, s, p)[source]

Inward arrows converging to small square.

wolfhece.opengl.toolbar_icons._icon_mask_in(d, s, p)[source]

Filled triangle = mask inside.

wolfhece.opengl.toolbar_icons._icon_mask_out(d, s, p)[source]

Rectangle with triangular hole = mask outside.

wolfhece.opengl.toolbar_icons._icon_add_pts(d, s, p)[source]

Scattered dots with + badge.

wolfhece.opengl.toolbar_icons._icon_move_pt(d, s, p)[source]

Single dot with arrow showing movement.

wolfhece.opengl.toolbar_icons._icon_profile(d, s, p)[source]

Crosshair / target (select profile).

wolfhece.opengl.toolbar_icons._icon_plot_cs(d, s, p)[source]

Mini axes with curve (plot cross section).

wolfhece.opengl.toolbar_icons._icon_pick_tile(d, s, p)[source]

2×2 grid (pick tile).

wolfhece.opengl.toolbar_icons._icon_sculpt(d, s, p)[source]

Brush circle with terrain hill inside (open sculpt panel).

wolfhece.opengl.toolbar_icons._icon_sculpt_smooth(d, s, p)[source]

Jagged line (gray) → smooth curve (white): smooth mode.

wolfhece.opengl.toolbar_icons._icon_sculpt_raise(d, s, p)[source]

Baseline + bump with upward arrow: raise mode.

wolfhece.opengl.toolbar_icons._icon_sculpt_lower(d, s, p)[source]

Baseline + hollow with downward arrow: lower/dig mode.

wolfhece.opengl.toolbar_icons._icon_sculpt_flatten(d, s, p)[source]

Irregular terrain + horizontal target line: flatten mode.

wolfhece.opengl.toolbar_icons._icon_sculpt_noise(d, s, p)[source]

Jagged random terrain + sparkle: noise mode.

wolfhece.opengl.toolbar_icons._icon_profile_brush(d, s, p)[source]

Profile brush: plan-view corridor+arrow (left) | cross-section slope (right).

wolfhece.opengl.toolbar_icons._DRAW_FNS: dict[str, object][source]
wolfhece.opengl.toolbar_icons.ALL_ICONS: list[str] = ['add_zone', 'add_vec', 'capture', 'modify', 'insert', 'move_vec', 'rotate', 'parallel',...[source]
class wolfhece.opengl.toolbar_icons.IconAtlas[source]

Singleton that builds and manages a GL texture atlas of toolbar icons.

_instance: IconAtlas | None = None[source]
_tex_id: int = 0[source]
_uvs: dict[str, tuple[float, float, float, float]][source]
_ready: bool = False[source]
classmethod get_instance() IconAtlas[source]
ensure_ready()[source]
_build()[source]
draw_icon(name: str, x0: float, y0: float, x1: float, y1: float, color: tuple = (1.0, 1.0, 1.0, 1.0))[source]

Render name as a textured quad at GL pixel coords.