cutan.carve.prop¶
Write a carving (or a carving split into parts) as a library-ready prop folder.
The folder is the layout every an project store and the library read:
prop.json (a PropDescriptor) and parts/*.png.
The descriptor’s source is the carving’s provenance, recipe and quality
included, so publishing it records the rights without a single flag:
from an.library import open_library, publish_dir
publish_dir(open_library("cutan"), folder, "prop.wall-clock", origin="carved")
(an library publish <folder> prop.wall-clock --package cutan --origin carved
from a shell.) One pixel of the carving is one view_box unit times unit,
and each part declares its size, so the prop draws the same whatever the
resolution the art was carved at.
Rights are never loosened by accident. A descriptor with no source
means “we made this” to an, so a carving with no provenance is refused
unless the caller says the art is its own (ours=True). A source= that
would loosen the carving’s licence class is refused unless relicense=
says who decided and why (an’s own rule for relaxing rights); the
carving’s source is kept beside it as extra.carved_from either way.
Module Attributes
The bone every carved prop hangs from, at the carving's anchor. |
|
The slot of the base art (a single-part prop's only slot). |
Functions
|
Write |
- cutan.carve.prop.BASE_SLOT: str = 'body'¶
The slot of the base art (a single-part prop’s only slot).
- cutan.carve.prop.ROOT_BONE: str = 'root'¶
The bone every carved prop hangs from, at the carving’s anchor.
- cutan.carve.prop.write_prop(carved, folder, *, name=None, unit=None, max_side=None, display_name=None, source=None, ours=False, relicense=None, overwrite=False)[source]¶
Write
carvedtofolderasprop.json+parts/*.png; return the descriptor.name: the prop’s name (default: the folder’s name) unit: view_box units per carved pixel (default 1); or
max_side: theunit that makes the longer side that many units (never above 1)
- source: overrides the carving’s provenance (its recipe and quality are
still recorded in
extra.carve, its source inextra.carved_from)
ours: the pixels are the caller’s own art (a carving with no source) relicense:
{"by": who, "reason": why}(both non-empty), required for asourcethat loosens the carving’s licence class. Recorded in the descriptor’ssource.extra.relicensed;an library publishdoes not read it, so say it again there (relicense=) when publishing.A
PartSetis written with its carving’s provenance: build one withsplit_parts()(its parts are cut from that carving), never by hand from other carvings’ parts.The root bone sits at the carving’s anchor. A split prop gets one bone per part, at its pivot, parented to the root, and one slot per part above the base, in the order the parts were listed. Nothing is written unless the whole descriptor is valid.
- Return type:
PropDescriptor