10 #ifndef SPRITE_COMPOSER_H
11 #define SPRITE_COMPOSER_H
291 int map_a_frame_count,
293 int map_b_frame_count,
328 int idle_repetitions,
332 int *out_frame_count,
369 int idle_animation_index,
370 int break_animation_index,
373 int idle_repetitions,
377 int *out_frame_count,
Common types, macros, and standard library includes used throughout AnimaEngine.
unsigned char u8
Definition: common.h:14
Coordinates file parsing structures and functions for character offset rendering.
Nintendo Animation Resource (.NANR) structure parsing.
Nintendo Cell Resource (.NCER) parser representing individual 2D sprite composite elements.
Nintendo Character Graphic Resource (.NCGR) 2D tile character graphics structures.
Nintendo Color Resource (.NCLR) palette parser.
Nintendo Multi-Animation Resource (.NMAR) file parser.
Nintendo Multi-Cell Resource (.NMCR) layout mapping parser.
Portable Pixmap (PPM) format writer utilities and color structures.
struct ComposerTransform ComposerTransform
Affine transformation parameters passed down during scene orchestration.
void Composer_ClearPixels(RgbaColor *pixels, int width, int height)
Fills the RGBA canvas with transparent pixels.
Definition: sprite_composer.c:690
int Composer_CropIndexedFrames(const u8 *frames, int frame_count, int width, int height, u8 **out_frames, int *out_width, int *out_height)
Crops transparent margins from index-compiled spritesheet animation loops.
Definition: sprite_composer.c:1076
void Composer_ComputeBoundsWithTransform(const NcerFile *ncer, const NanrFile *nanr, const NmcrMap *map, int tick, int *out_min_x, int *out_min_y, int *out_max_x, int *out_max_y, const CoordFile *coords, const ComposerTransform *parent_transform)
Bounding box calculator with parent timeline transformations.
Definition: sprite_composer.c:702
int Composer_RenderComposedAnimation(const NcerFile *ncer, const NanrFile *nanr, const NmcrMap *idle_map, const NmcrMap *break_map, const NcgrImage *ncgr, const NclrPalette *palette, int idle_repetitions, int tile_stride, int margin, u8 **out_frames, int *out_frame_count, int *out_width, int *out_height, const CoordFile *coords, int delay_cs)
Renders a complete loop merging a base idle animation and a break sequence.
Definition: sprite_composer.c:1486
int Composer_ComputeIdleRepetitions(const NanrFile *nanr, const NmcrMap *idle_map)
Computes optimal number of idle loops before transition so loop length is ~3 seconds.
Definition: sprite_composer.c:1741
int Composer_RenderFrameRgba(const NcerFile *ncer, const NanrFile *nanr, const NmcrMap *map, const NcgrImage *ncgr, const NclrPalette *palette, int tick, int tile_stride, const char *label, RgbaColor **out_pixels, int *out_width, int *out_height, const CoordFile *coords)
Renders a composite frame directly into a 32-bit RGBA pixel array.
Definition: sprite_composer.c:982
int Composer_ComputeNmarIdleRepetitions(const NmarFile *nmar, int animation_index)
Timeline-driven optimal idle loops counter before playing break sequence.
Definition: sprite_composer.c:1781
void Composer_ComputeBounds(const NcerFile *ncer, const NanrFile *nanr, const NmcrMap *map, int tick, int *out_min_x, int *out_min_y, int *out_max_x, int *out_max_y, const CoordFile *coords)
Calculates the extreme bounding box coordinates for a specific animation frame tick.
Definition: sprite_composer.c:798
int Composer_RenderFrameIndexed(const NcerFile *ncer, const NanrFile *nanr, const NmcrMap *map, const NcgrImage *ncgr, const NclrPalette *palette, int tick, int tile_stride, int min_x, int min_y, int width, int height, int margin, u8 *out_indices, const CoordFile *coords)
Composites a frame into an indexed 8-bit color-indexed layout canvas.
Definition: sprite_composer.c:946
void Composer_ComputeBoundsRange(const NcerFile *ncer, const NanrFile *nanr, const NmcrMap *map, int start_frame, int frame_count, int *out_min_x, int *out_min_y, int *out_max_x, int *out_max_y, const CoordFile *coords, int delay_cs)
Calculates bounding box encapsulating a full range of animation frames.
Definition: sprite_composer.c:824
void Composer_ComputeUnionBounds(const NcerFile *ncer, const NanrFile *nanr, const NmcrMap *map_a, int map_a_frame_count, const NmcrMap *map_b, int map_b_frame_count, int *out_min_x, int *out_min_y, int *out_max_x, int *out_max_y, const CoordFile *coords, int delay_cs)
Computes combined bounding box that fits two animation sets sharing a unified canvas space.
Definition: sprite_composer.c:1167
int Composer_RenderFrameIndexedWithTransform(const NcerFile *ncer, const NanrFile *nanr, const NmcrMap *map, const NcgrImage *ncgr, const NclrPalette *palette, int tick, int tile_stride, int min_x, int min_y, int width, int height, int margin, u8 *out_indices, const CoordFile *coords, const ComposerTransform *parent_transform)
Composites a transformed frame into an 8bpp color-indexed layout canvas.
Definition: sprite_composer.c:887
int Composer_RenderComposedAnimationTimeline(const NcerFile *ncer, const NanrFile *nanr, const NmcrFile *nmcr, const NmarFile *nmar, const NmcrMap *idle_map, const NmcrMap *break_map, int idle_animation_index, int break_animation_index, const NcgrImage *ncgr, const NclrPalette *palette, int idle_repetitions, int tile_stride, int margin, u8 **out_frames, int *out_frame_count, int *out_width, int *out_height, const CoordFile *coords, int delay_cs)
Timeline-driven composed loop renderer that applies full parent translation transforms.
Definition: sprite_composer.c:1588
struct GlobalOam GlobalOam
Assembled global OAM record with complete transformations applied.
Collection of coordinate records parsed from a coordinates file.
Definition: coords.h:29
Assembled global OAM record with complete transformations applied.
Definition: sprite_composer.h:26
int draw_y
Definition: sprite_composer.h:30
int parent_scale_y
Definition: sprite_composer.h:46
int flip_v
Definition: sprite_composer.h:36
int rotation
Definition: sprite_composer.h:39
int original_index
Definition: sprite_composer.h:38
int scale_y
Definition: sprite_composer.h:41
int translate_x
Definition: sprite_composer.h:42
int parent_translate_x
Definition: sprite_composer.h:47
int flip_h
Definition: sprite_composer.h:35
int record_y
Definition: sprite_composer.h:28
int draw_x
Definition: sprite_composer.h:29
int parent_scale_x
Definition: sprite_composer.h:45
int height
Definition: sprite_composer.h:33
int tile_index
Definition: sprite_composer.h:31
int width
Definition: sprite_composer.h:32
int translate_y
Definition: sprite_composer.h:43
int parent_translate_y
Definition: sprite_composer.h:48
int palette_bank
Definition: sprite_composer.h:34
int scale_x
Definition: sprite_composer.h:40
int parent_rotation
Definition: sprite_composer.h:44
int record_x
Definition: sprite_composer.h:27
int priority
Definition: sprite_composer.h:37
Unpacked representation of a complete .NANR resource file.
Definition: nanr.h:45
Unpacked representation of a complete .NCER resource.
Definition: ncer.h:56
Container representing parsed NCGR image tile graphics.
Definition: ncgr.h:15
Container representing parsed NCLR color palette data.
Definition: nclr.h:17
Unpacked representation of a complete .NMAR resource.
Definition: nmar.h:52
Unpacked representation of a complete .NMCR resource.
Definition: nmcr.h:35
Multi-cell layout composition group containing multiple records.
Definition: nmcr.h:26
32-bit RGBA color representation struct.
Definition: ppm.h:14