Sprite API Reference
The sprite module provides Python bindings to the Go sprite generator.
Classes
SpriteGenerator
map_style.generator.sprite.SpriteGenerator
SpriteGenerator(verbose=False)
Manages sprite generation from icon libraries using native bindings.
Initialize the sprite generator.
| PARAMETER | DESCRIPTION |
|---|---|
verbose
|
Enable verbose output from sprite tool
TYPE:
|
Source code in map_style/generator/sprite.py
159 160 161 162 163 164 165 166 | |
create_icon_library
create_icon_library(
icon_library_path,
required_icons,
icons_source_dir=None,
raster_source_dir=None,
)
Create an icon library directory structure with manifest.
| PARAMETER | DESCRIPTION |
|---|---|
icon_library_path
|
Output path for the icon library
TYPE:
|
required_icons
|
List of required icon definitions
TYPE:
|
icons_source_dir
|
Source directory containing SVG icons
TYPE:
|
raster_source_dir
|
Source directory containing raster/PNG icons
TYPE:
|
Source code in map_style/generator/sprite.py
168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 | |
generate_sprite
generate_sprite(icon_library_path, output_dir)
Generate sprite images and metadata from icon library.
| PARAMETER | DESCRIPTION |
|---|---|
icon_library_path
|
Path to the icon library directory
TYPE:
|
output_dir
|
Directory where sprite files will be generated
TYPE:
|
| RAISES | DESCRIPTION |
|---|---|
SpriteGenerationError
|
If sprite generation fails |
Source code in map_style/generator/sprite.py
198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 | |
validate_sprite_output
validate_sprite_output(output_dir)
Validate that sprite generation produced expected outputs.
| PARAMETER | DESCRIPTION |
|---|---|
output_dir
|
Directory to check for sprite files
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
bool
|
True if all expected files exist |
Source code in map_style/generator/sprite.py
218 219 220 221 222 223 224 225 226 227 | |
slice_sprite
slice_sprite(sprite_path, output_dir)
Slice an existing sprite into individual PNG files.
| PARAMETER | DESCRIPTION |
|---|---|
sprite_path
|
Path to the sprite PNG file
TYPE:
|
output_dir
|
Directory where individual icons will be saved
TYPE:
|
Source code in map_style/generator/sprite.py
229 230 231 232 233 234 235 236 | |
SpriteGenerationError
map_style.generator.sprite.SpriteGenerationError
Bases: Exception
Raised when sprite generation fails.
Functions
build_required_icons
map_style.generator.sprite.build_required_icons
build_required_icons(
icon_names,
raster_icons=None,
stretchable_icons=None,
casing_overrides=None,
)
Build required icons list for sprite manifest.
| PARAMETER | DESCRIPTION |
|---|---|
icon_names
|
Set of icon names to include
TYPE:
|
raster_icons
|
Set of icon names that should be raster (not SDF)
TYPE:
|
stretchable_icons
|
Map of icon name to corner inset for stretchable SDF icons
TYPE:
|
casing_overrides
|
Map of icon name to casing kind ("square", "circle", or "none")
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
list[dict[str, Any]]
|
List of icon definitions for manifest.json |
Source code in map_style/generator/sprite.py
239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 | |
Usage Examples
Basic Sprite Generation
"""Basic sprite generation from an existing icon library."""
from pathlib import Path
from map_style.generator.sprite import SpriteGenerator
gen = SpriteGenerator(verbose=True)
# Generate from existing icon library
gen.generate_sprite(
icon_library_path=Path("icons.iconLibrary"),
output_dir=Path("dist/sprites"),
)
Creating an Icon Library
"""Full icon library workflow: define icons, create library, generate sprites."""
from pathlib import Path
from map_style.generator.sprite import SpriteGenerator, build_required_icons
gen = SpriteGenerator()
# Define required icons
icons = {"restaurant", "hospital", "school"}
required = build_required_icons(icons)
# Create icon library structure
gen.create_icon_library(
icon_library_path=Path("build/icons.iconLibrary"),
required_icons=required,
icons_source_dir=Path("assets/icons"),
)
# Generate sprites
gen.generate_sprite(
icon_library_path=Path("build/icons.iconLibrary"),
output_dir=Path("dist/sprites"),
)
Validating Output
"""Validating sprite generation output."""
from pathlib import Path
from map_style.generator.sprite import SpriteGenerator
gen = SpriteGenerator()
output_dir = Path("dist/sprites")
gen.generate_sprite(
icon_library_path=Path("icons.iconLibrary"),
output_dir=output_dir,
)
if gen.validate_sprite_output(output_dir):
print("All sprite files generated successfully")
else:
print("Warning: Some sprite files may be missing")
Slicing Existing Sprites
"""Slicing an existing sprite sheet into individual PNG files."""
from pathlib import Path
from map_style.generator.sprite import SpriteGenerator
gen = SpriteGenerator()
# Extract individual icons from sprite sheet
gen.slice_sprite(
sprite_path=Path("sprites/[email protected]"),
output_dir=Path("extracted_icons"),
)
Environment Variables
| Variable | Description |
|---|---|
PYSPRITE_LIB |
Override path to native sprite library |
Native Library
The sprite generator uses a Go library compiled as a C-shared library. The library is automatically located in:
- Path specified by
PYSPRITE_LIBenvironment variable sprite/dist/libpysprite.{so,dylib,dll}generator/lib/libpysprite.{so,dylib,dll}
If the native library is not found, a FileNotFoundError is raised with build instructions.