equal
deleted
inserted
replaced
35 _num_dirty_rects++; |
35 _num_dirty_rects++; |
36 } |
36 } |
37 |
37 |
38 static void UpdatePalette(uint start, uint count) |
38 static void UpdatePalette(uint start, uint count) |
39 { |
39 { |
40 /* We can only update the palette in 8bpp for now */ |
|
41 /* TODO -- We need support for other bpps too! */ |
|
42 if (BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() != 8) return; |
|
43 |
|
44 SDL_Color pal[256]; |
40 SDL_Color pal[256]; |
45 uint i; |
41 uint i; |
46 |
42 |
47 for (i = 0; i != count; i++) { |
43 for (i = 0; i != count; i++) { |
48 pal[i].r = _cur_palette[start + i].r; |
44 pal[i].r = _cur_palette[start + i].r; |
59 UpdatePalette(0, 256); |
55 UpdatePalette(0, 256); |
60 } |
56 } |
61 |
57 |
62 static void CheckPaletteAnim() |
58 static void CheckPaletteAnim() |
63 { |
59 { |
64 if (_pal_last_dirty != -1) { |
60 Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); |
65 UpdatePalette(_pal_first_dirty, _pal_last_dirty - _pal_first_dirty + 1); |
61 |
66 _pal_last_dirty = -1; |
62 if (_pal_count_dirty != 0) { |
|
63 switch (blitter->UsePaletteAnimation()) { |
|
64 case Blitter::PALETTE_ANIMATION_VIDEO_BACKEND: |
|
65 UpdatePalette(_pal_first_dirty, _pal_count_dirty); |
|
66 break; |
|
67 |
|
68 case Blitter::PALETTE_ANIMATION_BLITTER: |
|
69 blitter->PaletteAnimate(_pal_first_dirty, _pal_count_dirty); |
|
70 break; |
|
71 |
|
72 case Blitter::PALETTE_ANIMATION_NONE: |
|
73 break; |
|
74 |
|
75 default: |
|
76 NOT_REACHED(); |
|
77 } |
|
78 _pal_count_dirty = 0; |
67 } |
79 } |
68 } |
80 } |
69 |
81 |
70 static void DrawSurfaceToScreen() |
82 static void DrawSurfaceToScreen() |
71 { |
83 { |