Skip to content

Commit

Permalink
Remove append_metadata inline and spell it out where needed
Browse files Browse the repository at this point in the history
  • Loading branch information
aaaaaa123456789 committed Jan 22, 2022
1 parent ebcbfdf commit 492c785
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 21 deletions.
5 changes: 0 additions & 5 deletions src/inline.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,6 @@ static inline uint16_t bitextend (uint16_t value, unsigned width) {
return result >> (width - 16);
}

static inline void append_metadata (struct plum_image * image, struct plum_metadata * metadata) {
metadata -> next = image -> metadata;
image -> metadata = metadata;
}

static inline void * append_output_node (struct context * context, size_t size) {
struct data_node * node = ctxmalloc(context, sizeof *node + size);
*node = (struct data_node) {.size = size, .previous = context -> output, .next = NULL};
Expand Down
30 changes: 15 additions & 15 deletions src/metadata.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ unsigned plum_append_metadata (struct plum_image * image, int type, const void *
if (!metadata) return PLUM_ERR_OUT_OF_MEMORY;
metadata -> type = type;
if (size) memcpy(metadata -> data, data, size);
append_metadata(image, metadata);
metadata -> next = image -> metadata;
image -> metadata = metadata;
return 0;
}

Expand Down Expand Up @@ -50,27 +51,26 @@ void add_background_color_metadata (struct context * context, uint64_t color, un
*(uint16_t *) (metadata -> data) = color;
else
*(uint32_t *) (metadata -> data) = color;
append_metadata(context -> image, metadata);
metadata -> next = context -> image -> metadata;
context -> image -> metadata = metadata;
}

void add_loop_count_metadata (struct context * context, uint32_t count) {
unsigned result = plum_append_metadata(context -> image, PLUM_METADATA_LOOP_COUNT, &count, sizeof count);
if (result) throw(context, result);
}

void add_animation_metadata (struct context * context, uint64_t ** durations, uint8_t ** disposals) {
struct plum_metadata * metadata = plum_allocate_metadata(context -> image, sizeof **disposals * context -> image -> frames);
if (!metadata) throw(context, PLUM_ERR_OUT_OF_MEMORY);
metadata -> type = PLUM_METADATA_FRAME_DISPOSAL;
memset(metadata -> data, 0, metadata -> size);
append_metadata(context -> image, metadata);
*disposals = metadata -> data;
metadata = plum_allocate_metadata(context -> image, sizeof **durations * context -> image -> frames);
if (!metadata) throw(context, PLUM_ERR_OUT_OF_MEMORY);
metadata -> type = PLUM_METADATA_FRAME_DURATION;
memset(metadata -> data, 0, metadata -> size);
append_metadata(context -> image, metadata);
*durations = metadata -> data;
void add_animation_metadata (struct context * context, uint64_t ** restrict durations, uint8_t ** restrict disposals) {
struct plum_metadata * durations_metadata = plum_allocate_metadata(context -> image, sizeof **durations * context -> image -> frames);
struct plum_metadata * disposals_metadata = plum_allocate_metadata(context -> image, sizeof **disposals * context -> image -> frames);
if (!(durations_metadata && disposals_metadata)) throw(context, PLUM_ERR_OUT_OF_MEMORY);
memset(*durations = durations_metadata -> data, 0, durations_metadata -> size);
memset(*disposals = disposals_metadata -> data, 0, disposals_metadata -> size);
durations_metadata -> type = PLUM_METADATA_FRAME_DURATION;
disposals_metadata -> type = PLUM_METADATA_FRAME_DISPOSAL;
durations_metadata -> next = disposals_metadata;
disposals_metadata -> next = context -> image -> metadata;
context -> image -> metadata = durations_metadata;
}

uint64_t get_background_color (const struct plum_image * image, uint64_t fallback) {
Expand Down
2 changes: 1 addition & 1 deletion src/proto.h
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ internal void update_loaded_palette(struct context *, unsigned);
internal void add_color_depth_metadata(struct context *, unsigned, unsigned, unsigned, unsigned, unsigned);
internal void add_background_color_metadata(struct context *, uint64_t, unsigned);
internal void add_loop_count_metadata(struct context *, uint32_t);
internal void add_animation_metadata(struct context *, uint64_t **, uint8_t **);
internal void add_animation_metadata(struct context *, uint64_t ** restrict, uint8_t ** restrict);
internal uint64_t get_background_color(const struct plum_image *, uint64_t);

// misc.c
Expand Down

0 comments on commit 492c785

Please sign in to comment.