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)); |