OpenTTD Source: src/viewport_sprite_sorter.h Source File

OpenTTD Source 12.2

viewport_sprite_sorter.h
Go to the documentation of this file.
1 /*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6 */
7
10 #include "stdafx.h"
11 #include "core/smallvec_type.hpp"
12 #include "gfx_type.h"
13
14 #ifndef VIEWPORT_SPRITE_SORTER_H
15 #define VIEWPORT_SPRITE_SORTER_H
16
18 struct ParentSpriteToDraw {
19 /* Block of 16B loadable in xmm register */
20 int32 xmin;
21 int32 ymin;
22 int32 zmin;
23 int32 x;
24
25 /* Second block of 16B loadable in xmm register */
26 int32 xmax;
27 int32 ymax;
28 int32 zmax;
29 int32 y;
30
31 SpriteID image;
32 PaletteID pal;
33 const SubSprite *sub;
34
35 int32 left;
36 int32 top;
37
38 int32 first_child;
39 uint32 order;
40 };
41
42 typedef std::vector<ParentSpriteToDraw*> ParentSpriteToSortVector;
43
45 typedef bool (*VpSorterChecker)();
47 typedef void (*VpSpriteSorter)(ParentSpriteToSortVector *psd);
48
49 #ifdef WITH_SSE
50 bool ViewportSortParentSpritesSSE41Checker();
51 void ViewportSortParentSpritesSSE41(ParentSpriteToSortVector *psdv);
52 #endif
53
54 void InitializeSpriteSorter();
55
56 #endif /* VIEWPORT_SPRITE_SORTER_H */
ParentSpriteToDraw::image
SpriteID image
sprite to draw
Definition: viewport_sprite_sorter.h:31
ParentSpriteToDraw::x
int32 x
screen X coordinate of sprite
Definition: viewport_sprite_sorter.h:23
ParentSpriteToDraw::order
uint32 order
Used during sprite sorting.
Definition: viewport_sprite_sorter.h:39
ParentSpriteToDraw::zmax
int32 zmax
maximal world Z coordinate of bounding box
Definition: viewport_sprite_sorter.h:28
smallvec_type.hpp
ParentSpriteToDraw::ymin
int32 ymin
minimal world Y coordinate of bounding box
Definition: viewport_sprite_sorter.h:21
SubSprite
Used to only draw a part of the sprite.
Definition: gfx_type.h:222
ParentSpriteToDraw::xmin
int32 xmin
minimal world X coordinate of bounding box
Definition: viewport_sprite_sorter.h:20
SpriteID
uint32 SpriteID
The number of a sprite, without mapping bits and colourtables.
Definition: gfx_type.h:17
ParentSpriteToDraw::pal
PaletteID pal
palette to use
Definition: viewport_sprite_sorter.h:32
VpSorterChecker
bool(* VpSorterChecker)()
Type for method for checking whether a viewport sprite sorter exists.
Definition: viewport_sprite_sorter.h:45
ParentSpriteToDraw::sub
const SubSprite * sub
only draw a rectangular part of the sprite
Definition: viewport_sprite_sorter.h:33
InitializeSpriteSorter
void InitializeSpriteSorter()
Choose the "best" sprite sorter and set _vp_sprite_sorter.
Definition: viewport.cpp:3455
ParentSpriteToDraw::left
int32 left
minimal screen X coordinate of sprite (= x + sprite->x_offs), reference point for child sprites
Definition: viewport_sprite_sorter.h:35
ParentSpriteToDraw::zmin
int32 zmin
minimal world Z coordinate of bounding box
Definition: viewport_sprite_sorter.h:22
ParentSpriteToDraw::first_child
int32 first_child
the first child to draw.
Definition: viewport_sprite_sorter.h:38
VpSpriteSorter
void(* VpSpriteSorter)(ParentSpriteToSortVector *psd)
Type for the actual viewport sprite sorter.
Definition: viewport_sprite_sorter.h:47
stdafx.h
ParentSpriteToDraw::ymax
int32 ymax
maximal world Y coordinate of bounding box
Definition: viewport_sprite_sorter.h:27
ParentSpriteToDraw::top
int32 top
minimal screen Y coordinate of sprite (= y + sprite->y_offs), reference point for child sprites
Definition: viewport_sprite_sorter.h:36
PaletteID
uint32 PaletteID
The number of the palette.
Definition: gfx_type.h:18
ParentSpriteToDraw::y
int32 y
screen Y coordinate of sprite
Definition: viewport_sprite_sorter.h:29
ParentSpriteToDraw
Parent sprite that should be drawn.
Definition: viewport_sprite_sorter.h:18
gfx_type.h
ParentSpriteToDraw::xmax
int32 xmax
maximal world X coordinate of bounding box
Definition: viewport_sprite_sorter.h:26