Etterna 0.74.4
Loading...
Searching...
No Matches
RageTextureManager.h
1/* RageTextureManager - Interface for loading textures. */
2
3#ifndef RAGE_TEXTURE_MANAGER_H
4#define RAGE_TEXTURE_MANAGER_H
5
6#include "RageSurface.h"
7#include "RageTexture.h"
8
10{
11 int m_iTextureColorDepth{ 16 };
12 int m_iMovieColorDepth{ 16 };
13 bool m_bDelayedDelete{ false };
14 int m_iMaxTextureResolution{ 1024 };
15 bool m_bHighResolutionTextures{ true };
16 bool m_bMipMaps{ false };
17
18 RageTextureManagerPrefs() = default;
19 RageTextureManagerPrefs(int iTextureColorDepth,
20 int iMovieColorDepth,
21 bool bDelayedDelete,
22 int iMaxTextureResolution,
23 bool bHighResolutionTextures,
24 bool bMipMaps)
25 : m_iTextureColorDepth(iTextureColorDepth)
26 , m_iMovieColorDepth(iMovieColorDepth)
27 , m_bDelayedDelete(bDelayedDelete)
28 , m_iMaxTextureResolution(iMaxTextureResolution)
29 , m_bHighResolutionTextures(bHighResolutionTextures)
30 , m_bMipMaps(bMipMaps)
31 {
32 }
33
34 bool operator!=(const RageTextureManagerPrefs& rhs) const
35 {
36 return m_iTextureColorDepth != rhs.m_iTextureColorDepth ||
37 m_iMovieColorDepth != rhs.m_iMovieColorDepth ||
38 m_bDelayedDelete != rhs.m_bDelayedDelete ||
39 m_iMaxTextureResolution != rhs.m_iMaxTextureResolution ||
40 m_bHighResolutionTextures != rhs.m_bHighResolutionTextures ||
41 m_bMipMaps != rhs.m_bMipMaps;
42 }
43};
44
46{
47 public:
50 void Update(float fDeltaTime);
51
52 RageTexture* LoadTexture(const RageTextureID& ID);
53 RageTexture* CopyTexture(
54 RageTexture* pCopy); // returns a ref to the same texture, not a deep copy
55 bool IsTextureRegistered(RageTextureID ID) const;
56 void RegisterTexture(RageTextureID ID, RageTexture* p);
57 void VolatileTexture(const RageTextureID& ID);
58 void UnloadTexture(RageTexture* t);
59 void ReloadAll();
60
61 void RegisterTextureForUpdating(const RageTextureID& id, RageTexture* tex);
62
63 bool SetPrefs(RageTextureManagerPrefs prefs);
64 RageTextureManagerPrefs GetPrefs() { return m_Prefs; };
65
66 RageTextureID::TexPolicy GetDefaultTexturePolicy() const
67 {
68 return m_TexturePolicy;
69 }
70 void SetDefaultTexturePolicy(const RageTextureID::TexPolicy& p)
71 {
72 m_TexturePolicy = p;
73 }
74
75 // call this between Screens
76 void DeleteCachedTextures() { GarbageCollect(screen_changed); }
77
78 // call this on switch theme
79 void DoDelayedDelete() { GarbageCollect(delayed_delete); }
80
81 void InvalidateTextures();
82
83 void AdjustTextureID(RageTextureID& ID) const;
84 void DiagnosticOutput() const;
85
86 void DisableOddDimensionWarning() { m_iNoWarnAboutOddDimensions++; }
87 void EnableOddDimensionWarning() { m_iNoWarnAboutOddDimensions--; }
88 bool GetOddDimensionWarning() const
89 {
90 return m_iNoWarnAboutOddDimensions == 0;
91 }
92
93 RageTextureID GetDefaultTextureID();
94 RageTextureID GetScreenTextureID();
95 RageSurface* GetScreenSurface();
97 private:
98 void DeleteTexture(RageTexture* t);
99 enum GCType
100 {
101 screen_changed,
102 delayed_delete
103 };
104 void GarbageCollect(GCType type);
105 RageTexture* LoadTextureInternal(RageTextureID ID);
106
107 int m_iNoWarnAboutOddDimensions{ 0 };
108 RageTextureID::TexPolicy m_TexturePolicy{ RageTextureID::TEX_DEFAULT };
109};
110
111extern RageTextureManager*
112 TEXTUREMAN; // global and accessible from anywhere in our program
113
114#endif
Definition RageTextureManager.h:46
Definition RageTexture.h:14
Definition RageSurface.h:90
Definition RageTextureID.h:12
Definition RageTextureManager.h:10