OpenTTD Source  20241108-master-g80f628063a
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 "gfx_type.h"
12 
13 #ifndef VIEWPORT_SPRITE_SORTER_H
14 #define VIEWPORT_SPRITE_SORTER_H
15 
18  /* Block of 16B loadable in xmm register */
19  int32_t xmin;
20  int32_t ymin;
21  int32_t zmin;
22  int32_t x;
23 
24  /* Second block of 16B loadable in xmm register */
25  int32_t xmax;
26  int32_t ymax;
27  int32_t zmax;
28  int32_t y;
29 
32  const SubSprite *sub;
33 
34  int32_t left;
35  int32_t top;
36 
37  int32_t first_child;
38  uint32_t order;
39 };
40 
41 typedef std::vector<ParentSpriteToDraw*> ParentSpriteToSortVector;
42 
44 typedef bool (*VpSorterChecker)();
46 typedef void (*VpSpriteSorter)(ParentSpriteToSortVector *psd);
47 
48 #ifdef WITH_SSE
49 bool ViewportSortParentSpritesSSE41Checker();
50 void ViewportSortParentSpritesSSE41(ParentSpriteToSortVector *psdv);
51 #endif
52 
54 
55 #endif /* VIEWPORT_SPRITE_SORTER_H */
Types related to the graphics and/or input devices.
uint32_t SpriteID
The number of a sprite, without mapping bits and colourtables.
Definition: gfx_type.h:18
uint32_t PaletteID
The number of the palette.
Definition: gfx_type.h:19
Definition of base types and functions in a cross-platform compatible way.
Parent sprite that should be drawn.
const SubSprite * sub
only draw a rectangular part of the sprite
int32_t zmin
minimal world Z coordinate of bounding box
SpriteID image
sprite to draw
int32_t xmax
maximal world X coordinate of bounding box
uint32_t order
Used during sprite sorting.
int32_t ymax
maximal world Y coordinate of bounding box
int32_t x
screen X coordinate of sprite
int32_t y
screen Y coordinate of sprite
int32_t first_child
the first child to draw.
int32_t zmax
maximal world Z coordinate of bounding box
int32_t xmin
minimal world X coordinate of bounding box
int32_t ymin
minimal world Y coordinate of bounding box
PaletteID pal
palette to use
int32_t left
minimal screen X coordinate of sprite (= x + sprite->x_offs), reference point for child sprites
int32_t top
minimal screen Y coordinate of sprite (= y + sprite->y_offs), reference point for child sprites
Used to only draw a part of the sprite.
Definition: gfx_type.h:231
bool(* VpSorterChecker)()
Type for method for checking whether a viewport sprite sorter exists.
void(* VpSpriteSorter)(ParentSpriteToSortVector *psd)
Type for the actual viewport sprite sorter.
void InitializeSpriteSorter()
Choose the "best" sprite sorter and set _vp_sprite_sorter.
Definition: viewport.cpp:3530