1#pragma once
2
3#include <nvn/nvn.h>
4#include <basis/seadTypes.h>
5#include "common/aglTextureEnum.h"
6
7namespace agl::detail {
8
9struct SurfaceBase;
10
11class Surface {
12public:
13 Surface();
14 void initialize(TextureType, TextureFormat, u32, TextureAttribute, MultiSampleType);
15 void initializeSize(u32, u32, u32);
16 void copyFrom(const SurfaceBase&);
17 void calcSizeAndAlignment();
18 void setupNVNtextureBuilder(NVNtextureBuilder*) const;
19 void printInfo() const;
20 void copyFrom(const NVNtexture&);
21
22private:
23 u16 _0;
24 u16 _2;
25 u16 _4;
26 u16 _6;
27 u8 _8;
28 u8 _9;
29 u16 _a;
30 u8 _c[0x1A - 0xC];
31 u8 _1a;
32 u8 _1b;
33 u32 _1c;
34 u8 _20;
35 u8 _21;
36 u8 _22;
37 u8 _23;
38};
39
40struct SurfaceBase {
41 void* _0;
42 void* _8;
43 void* _10;
44};
45
46} // namespace agl::detail
47