76Variable *
sequence_storage(
Environment * _environment,
char * _source_name,
char * _target_name,
int _mode,
int _frame_width,
int _frame_height,
int _flags,
int _transparent_color,
int _background_color,
int _bank_expansion,
int _origin_x,
int _origin_y,
int _offset_x,
int _offset_y ) {
91 for(
int i=0; i<atlasDescriptor->
count; ++i) {
92 Variable * partial =
image_converter( _environment, frame->
data, frame->
width, frame->
height, frame->
depth, 0, 0, frame->
width, frame->
height, _mode, _transparent_color, _flags );
93 if ( ! firstImage && ! lastImage ) {
97 lastImage->
next = partial;
98 lastImage = lastImage->
next;
100 bufferSize += partial->
size;
106 char * buffer =
malloc( bufferSize );
109 ptr[1] = _frame_width;
112 if ( ( firstImage->
size * atlasDescriptor->
count ) > 0xffff ) {
123 lastImage = firstImage;
124 for(
int i=0; i<atlasDescriptor->
count; ++i ) {
126 ptr += lastImage->
size;
127 lastImage = lastImage->
next;
130 final->originalBitmap = atlasDescriptor->
image->
data;
131 final->originalWidth = atlasDescriptor->
image->
width;
132 final->originalHeight = atlasDescriptor->
image->
height;
133 final->originalDepth = atlasDescriptor->
image->
depth;
136 final->frameSize = firstImage->
size;
137 final->frameCount = atlasDescriptor->
horizontal;
139 lastImage = firstImage;
140 for(
int i=0; i<atlasDescriptor->
count; ++i ) {
142 lastImage = lastImage->
next;
156 final->uncompressedSize =
final->size;
161 if ( memcmp( outputCheck, final->valueBuffer, final->uncompressedSize ) != 0 ) {
169 if ( final->uncompressedSize < final->size ) {
170 final->size =
final->uncompressedSize;
171 final->uncompressedSize = 0;
177 free( final->valueBuffer );
178 final->valueBuffer = output;
180 final->residentAssigned = 1;
void variable_temporary_remove(Environment *_environment, char *_name)
void offsetting_add_variable_reference(Environment *_environment, Offsetting *_first, Variable *_var, int _sequence)
Variable * variable_temporary(Environment *_environment, VariableType _type, char *_meaning)
Define a temporary variable.
Offsetting * offsetting_size_count(Environment *_environment, int _size, int _count)
Variable * variable_store_buffer(Environment *_environment, char *_destination, unsigned char *_buffer, int _size, int _at)
Variable * image_converter(Environment *_environment, char *_data, int _width, int _height, int _depth, int _offset_x, int _offset_y, int _frame_width, int _frame_height, int _mode, int _transparent_color, int _flags)
AtlasDescriptor * atlas_descriptor_create(Environment *_environment, char *_filename, int _flags, int _image_origin_x, int _image_origin_y, int _frame_width, int _frame_height, int _frame_offset_x, int _frame_offset_y)
void file_storage(Environment *_environment, char *_source_name, char *_target_name, FileStorageFormat _format, VariableType _type)
Emit code for FILE ... AS ....
MSC1Compressor * msc1_create(int _maximum_repeated_sequences)
void msc1_free(MSC1Compressor *_msc1)
MemoryBlock * msc1_uncompress(MSC1Compressor *_msc1, MemoryBlock *_input, int _size, int *_output_size)
MemoryBlock * msc1_compress(MSC1Compressor *_msc1, MemoryBlock *_input, int _size, int *_output_size)
unsigned char MemoryBlock
struct _MSC1Compressor MSC1Compressor
Variable * sequence_storage(Environment *_environment, char *_source_name, char *_target_name, int _mode, int _frame_width, int _frame_height, int _flags, int _transparent_color, int _background_color, int _bank_expansion, int _origin_x, int _origin_y, int _offset_x, int _offset_y)
Emit code for IMAGE ... AS ....
struct _ImageDescriptor * frames
struct _ImageDescriptor * image
int maxExpansionBankSize[MAX_RESIDENT_SHAREDS]
FileStorage * currentFileStorage
struct _ImageDescriptor * next
unsigned char * valueBuffer
struct _ImageDescriptor ImageDescriptor
struct _RGBi RGBi
Structure to store color components (red, green and blue).
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.
struct _AtlasDescriptor AtlasDescriptor
#define CRITICAL_SEQUENCE_LOAD_IMAGE_TOO_BIG(v)
#define CRITICAL_COMPRESSION_FAILED(v)