76Variable *
images_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 ) {
95 lastImage = firstImage;
97 lastImage->
next = partial;
98 lastImage = lastImage->
next;
100 bufferSize += partial->
size;
106 char * buffer =
malloc( bufferSize );
108 ptr[0] = atlasDescriptor->
count;
109 ptr[1] = ( _frame_width & 0xff );
110 ptr[2] = ( _frame_width >> 8 ) & 0xff;
112 if ( ( firstImage->
size * atlasDescriptor->
count ) > 0xffff ) {
120 lastImage = firstImage;
121 for(
int i=0; i<atlasDescriptor->
count; ++i ) {
123 ptr += lastImage->
size;
124 lastImage = lastImage->
next;
128 lastImage = firstImage;
129 for(
int i=0; i<atlasDescriptor->
count; ++i ) {
131 lastImage = lastImage->
next;
145 final->uncompressedSize =
final->size;
150 if ( memcmp( outputCheck, final->valueBuffer, final->uncompressedSize ) != 0 ) {
158 if ( final->uncompressedSize < final->size ) {
159 final->size =
final->uncompressedSize;
160 final->uncompressedSize = 0;
166 free( final->valueBuffer );
167 final->valueBuffer = output;
169 final->residentAssigned = 1;
174 lastImage = firstImage;
175 for(
int i=0; i<atlasDescriptor->
count; ++i ) {
177 lastImage = lastImage->
next;
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 ....
Variable * images_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 ....
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
struct _ImageDescriptor * frames
int maxExpansionBankSize[MAX_RESIDENT_SHAREDS]
FileStorage * currentFileStorage
struct _ImageDescriptor * next
unsigned char * valueBuffer
struct _ImageDescriptor ImageDescriptor
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.
#define CRITICAL_IMAGES_LOAD_IMAGE_TOO_BIG(v)
struct _AtlasDescriptor AtlasDescriptor
#define CRITICAL_COMPRESSION_FAILED(v)