Changeset 2147 for libcaca/trunk/cucul/export.c
- Timestamp:
- Dec 20, 2007, 4:26:12 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/cucul/export.c
r2102 r2147 163 163 static void *export_caca(cucul_canvas_t const *cv, unsigned long int *bytes) 164 164 { 165 uint32_t *attrs = cv->attrs;166 uint32_t *chars = cv->chars;167 165 char *data, *cur; 168 unsigned int n;166 unsigned int f, n; 169 167 170 168 /* 52 bytes for the header: … … 173 171 * - 32 bytes for the frame info 174 172 * 8 bytes for each character cell */ 175 *bytes = 52 + 8 * cv->width * cv->height;173 *bytes = 20 + (32 + 8 * cv->width * cv->height) * cv->framecount; 176 174 cur = data = malloc(*bytes); 177 175 … … 180 178 181 179 /* canvas_header */ 182 cur += sprintu32(cur, 16 + 32 * 1);183 cur += sprintu32(cur, cv->width * cv->height * 8 );180 cur += sprintu32(cur, 16 + 32 * cv->framecount); 181 cur += sprintu32(cur, cv->width * cv->height * 8 * cv->framecount); 184 182 cur += sprintu16(cur, 0x0001); 185 cur += sprintu32(cur, 1);183 cur += sprintu32(cur, cv->framecount); 186 184 cur += sprintu16(cur, 0x0000); 187 185 188 186 /* frame_info */ 189 cur += sprintu32(cur, cv->width); 190 cur += sprintu32(cur, cv->height); 191 cur += sprintu32(cur, 0); 192 cur += sprintu32(cur, cv->curattr); 193 cur += sprintu32(cur, cv->frames[0].x); 194 cur += sprintu32(cur, cv->frames[0].y); 195 cur += sprintu32(cur, cv->frames[0].handlex); 196 cur += sprintu32(cur, cv->frames[0].handley); 187 for(f = 0; f < cv->framecount; f++) 188 { 189 cur += sprintu32(cur, cv->width); 190 cur += sprintu32(cur, cv->height); 191 cur += sprintu32(cur, 0); 192 cur += sprintu32(cur, cv->curattr); 193 cur += sprintu32(cur, cv->frames[f].x); 194 cur += sprintu32(cur, cv->frames[f].y); 195 cur += sprintu32(cur, cv->frames[f].handlex); 196 cur += sprintu32(cur, cv->frames[f].handley); 197 } 197 198 198 199 /* canvas_data */ 199 for(n = cv->height * cv->width; n--; ) 200 { 201 cur += sprintu32(cur, *chars++); 202 cur += sprintu32(cur, *attrs++); 200 for(f = 0; f < cv->framecount; f++) 201 { 202 uint32_t *attrs = cv->frames[f].attrs; 203 uint32_t *chars = cv->frames[f].chars; 204 205 for(n = cv->height * cv->width; n--; ) 206 { 207 cur += sprintu32(cur, *chars++); 208 cur += sprintu32(cur, *attrs++); 209 } 203 210 } 204 211
Note: See TracChangeset
for help on using the changeset viewer.