OpenTTD Source: src/viewport_sprite_sorter.h Source File

OpenTTD Source 15.3

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