12 #include "../stdafx.h" 
   13 #include "../zoom_func.h" 
   14 #include "../settings_type.h" 
   15 #include "../core/math_func.hpp" 
   16 #include "../core/mem_func.hpp" 
   19 #include "../safeguards.h" 
   28   uint offset = sprite_src->
offset[zoom];
 
   31   const uint8 *src = sprite_src->
data + offset;
 
   35   for (
int y = 0; y < bp->
skip_top; y++) {
 
   39       if (trans == 0 && pixels == 0) 
break;
 
   44   const uint8 *src_next = src;
 
   46   for (
int y = 0; y < bp->
height; y++) {
 
   47     uint8 *dst = dst_line;
 
   48     dst_line += bp->
pitch;
 
   51     int width = bp->
width;
 
   57       src_next = src + pixels;
 
   58       if (trans == 0 && pixels == 0) 
break;
 
   59       if (width <= 0) 
continue;
 
   62         if (skip_left < trans) {
 
   69         if (skip_left < pixels) {
 
   79       if (skip_left != 0) 
continue;
 
   84       if (width <= 0 || pixels == 0) 
continue;
 
   85       pixels = min<uint>(pixels, (uint)width);
 
   91           const uint8 *remap = bp->
remap;
 
   96           } 
while (--pixels != 0);
 
  106           const uint8 *remap = bp->
remap;
 
  111           } 
while (--pixels != 0);
 
  117           dst += pixels; src += pixels;
 
  141   for (
ZoomLevel i = zoom_min; i <= zoom_max; i++) {
 
  153   memset(temp_dst, 0, 
sizeof(*temp_dst));
 
  154   byte *dst = temp_dst->
data;
 
  157   for (
ZoomLevel i = zoom_min; i <= zoom_max; i++) {
 
  159     uint offset = dst - temp_dst->
data;
 
  160     temp_dst->
offset[i] = offset;
 
  163     int scaled_height = sprite[i].
height;
 
  164     int scaled_width  = sprite[i].
width;
 
  166     for (
int y = 0; y < scaled_height; y++) {
 
  169       uint last_colour = 0;
 
  170       byte *count_dst = NULL;
 
  175       for (
int x = 0; x < scaled_width; x++) {
 
  176         uint colour = src++->
m;
 
  178         if (last_colour == 0 || colour == 0 || pixels == 255) {
 
  179           if (count_dst != NULL) {
 
  186           if (colour == 0 && trans != 255) {
 
  199         last_colour = colour;
 
  209       if (count_dst != NULL) *count_dst = pixels;
 
  217   uint size = dst - (byte *)temp_dst;
 
  220   assert(size < memory);
 
  223   Sprite *dest_sprite = (
Sprite *)allocator(
sizeof(*dest_sprite) + size);
 
  229   memcpy(dest_sprite->
data, temp_dst, size);