src/blitter/32bpp_optimized.cpp
branchNewGRF_ports
changeset 10994 cd9968b6f96b
parent 10724 68a692eacf22
equal deleted inserted replaced
10991:d8811e327d12 10994:cd9968b6f96b
     8 #include "../debug.h"
     8 #include "../debug.h"
     9 #include "32bpp_optimized.hpp"
     9 #include "32bpp_optimized.hpp"
    10 
    10 
    11 static FBlitter_32bppOptimized iFBlitter_32bppOptimized;
    11 static FBlitter_32bppOptimized iFBlitter_32bppOptimized;
    12 
    12 
    13 void Blitter_32bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
    13 template <BlitterMode mode, ZoomLevel zoom> inline void Blitter_32bppOptimized::Draw(Blitter::BlitterParams *bp)
    14 {
    14 {
    15 	const SpriteLoader::CommonPixel *src, *src_line;
    15 	const SpriteLoader::CommonPixel *src, *src_line;
    16 	uint32 *dst, *dst_line;
    16 	uint32 *dst, *dst_line;
    17 
    17 
    18 	/* Find where to start reading in the source sprite */
    18 	/* Find where to start reading in the source sprite */
    64 			src += ScaleByZoom(1, zoom);
    64 			src += ScaleByZoom(1, zoom);
    65 		}
    65 		}
    66 	}
    66 	}
    67 }
    67 }
    68 
    68 
       
    69 template <BlitterMode mode> inline void Blitter_32bppOptimized::Draw(Blitter::BlitterParams *bp, ZoomLevel zoom)
       
    70 {
       
    71 	switch (zoom) {
       
    72 		default: NOT_REACHED();
       
    73 		case ZOOM_LVL_NORMAL: Draw<mode, ZOOM_LVL_NORMAL>(bp); return;
       
    74 		case ZOOM_LVL_OUT_2X: Draw<mode, ZOOM_LVL_OUT_2X>(bp); return;
       
    75 		case ZOOM_LVL_OUT_4X: Draw<mode, ZOOM_LVL_OUT_4X>(bp); return;
       
    76 		case ZOOM_LVL_OUT_8X: Draw<mode, ZOOM_LVL_OUT_8X>(bp); return;
       
    77 	}
       
    78 }
       
    79 
       
    80 void Blitter_32bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
       
    81 {
       
    82 	switch (mode) {
       
    83 		default: NOT_REACHED();
       
    84 		case BM_NORMAL:       Draw<BM_NORMAL>      (bp, zoom); return;
       
    85 		case BM_COLOUR_REMAP: Draw<BM_COLOUR_REMAP>(bp, zoom); return;
       
    86 		case BM_TRANSPARENT:  Draw<BM_TRANSPARENT> (bp, zoom); return;
       
    87 	}
       
    88 }
       
    89 
    69 Sprite *Blitter_32bppOptimized::Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator)
    90 Sprite *Blitter_32bppOptimized::Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator)
    70 {
    91 {
    71 	Sprite *dest_sprite;
    92 	Sprite *dest_sprite;
    72 	SpriteLoader::CommonPixel *dst;
    93 	SpriteLoader::CommonPixel *dst;
    73 	dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + sprite->height * sprite->width * sizeof(SpriteLoader::CommonPixel));
    94 	dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + sprite->height * sprite->width * sizeof(SpriteLoader::CommonPixel));