… | |
… | |
2292 | else |
2292 | else |
2293 | *data++ = 0; |
2293 | *data++ = 0; |
2294 | } |
2294 | } |
2295 | } |
2295 | } |
2296 | |
2296 | |
|
|
2297 | /* if size is w*h + 5 then no data has been found */ |
2297 | if (data - (uint8_t *)SvPVX (data_sv) == w * h + 5) |
2298 | if (data - (uint8_t *)SvPVX (data_sv) != w * h + 5) |
2298 | { |
|
|
2299 | SvREFCNT_dec (data_sv); |
|
|
2300 | RETVAL = &PL_sv_undef; |
|
|
2301 | } |
|
|
2302 | else |
|
|
2303 | { |
2299 | { |
2304 | SvPOK_only (data_sv); |
2300 | SvPOK_only (data_sv); |
2305 | SvCUR_set (data_sv, data - (uint8_t *)SvPVX (data_sv)); |
2301 | SvCUR_set (data_sv, data - (uint8_t *)SvPVX (data_sv)); |
2306 | RETVAL = data_sv; |
|
|
2307 | } |
2302 | } |
|
|
2303 | |
|
|
2304 | RETVAL = data_sv; |
2308 | } |
2305 | } |
2309 | OUTPUT: |
2306 | OUTPUT: |
2310 | RETVAL |
2307 | RETVAL |
2311 | |
2308 | |
2312 | void |
2309 | void |
… | |
… | |
2318 | int x1, y1; |
2315 | int x1, y1; |
2319 | STRLEN len; |
2316 | STRLEN len; |
2320 | uint8_t *data, *end; |
2317 | uint8_t *data, *end; |
2321 | |
2318 | |
2322 | len = SvLEN (data_sv); |
2319 | len = SvLEN (data_sv); |
2323 | SvGROW (data_sv, len + 7); // reserve at least 7+ bytes more |
2320 | SvGROW (data_sv, len + 8); // reserve at least 7+ bytes more |
2324 | data = SvPVbyte_nolen (data_sv); |
2321 | data = SvPVbyte_nolen (data_sv); |
2325 | end = data + len + 7; |
2322 | end = data + len + 8; |
2326 | |
2323 | |
2327 | if (len < 5) |
2324 | if (len < 5) |
2328 | XSRETURN_EMPTY; |
2325 | XSRETURN_EMPTY; |
2329 | |
2326 | |
2330 | if (*data++ != 0) |
2327 | if (*data++ != 0) |
… | |
… | |
2366 | if (flags & 2) { tile[1] = *data++ << 8; tile[1] |= *data++; } |
2363 | if (flags & 2) { tile[1] = *data++ << 8; tile[1] |= *data++; } |
2367 | if (flags & 4) { tile[2] = *data++ << 8; tile[2] |= *data++; } |
2364 | if (flags & 4) { tile[2] = *data++ << 8; tile[2] |= *data++; } |
2368 | |
2365 | |
2369 | if (cell->darkness == 0) |
2366 | if (cell->darkness == 0) |
2370 | { |
2367 | { |
2371 | cell->darkness = 0; |
2368 | /*cell->darkness = 0;*/ |
|
|
2369 | EXTEND (SP, 3); |
2372 | |
2370 | |
2373 | for (z = 0; z <= 2; z++) |
2371 | for (z = 0; z <= 2; z++) |
2374 | { |
2372 | { |
2375 | tileid t = tile [z]; |
2373 | tileid t = tile [z]; |
2376 | |
2374 | |
2377 | if (t >= self->texs || (t && !self->tex [t].name)) |
2375 | if (t >= self->texs || (t && !self->tex [t].name)) |
2378 | { |
2376 | { |
2379 | XPUSHs (sv_2mortal (newSViv (t))); |
2377 | PUSHs (sv_2mortal (newSViv (t))); |
2380 | need_texid (self, t); |
2378 | need_texid (self, t); |
2381 | } |
2379 | } |
2382 | |
2380 | |
2383 | cell->tile [z] = t; |
2381 | cell->tile [z] = t; |
2384 | } |
2382 | } |