1#ifndef NW4R_LYT_COMMON_H
2#define NW4R_LYT_COMMON_H
3#include <nw4r/types_nw4r.h>
8#include <revolution/GX.h>
53enum HorizontalPosition {
54 HORIZONTALPOSITION_LEFT,
55 HORIZONTALPOSITION_CENTER,
56 HORIZONTALPOSITION_RIGHT,
57 HORIZONTALPOSITION_MAX
59enum VerticalPosition {
61 VERTICALPOSITION_CENTER,
62 VERTICALPOSITION_BOTTOM,
73inline u8 GetVtxColorElement(
const ut::Color* pColors, ulong idx) {
74 return reinterpret_cast<const u8*
>(&pColors[idx / 4])[idx % 4];
76inline void SetVtxColorElement(ut::Color* pColors, ulong idx, u8 value) {
77 reinterpret_cast<u8*
>(&pColors[idx / 4])[idx % 4] = value;
85inline u8 GetHorizontalPosition(u8 packed) {
86 return packed % HORIZONTALPOSITION_MAX;
88inline u8 GetVerticalPosition(u8 packed) {
89 return packed / HORIZONTALPOSITION_MAX;
92inline void SetHorizontalPosition(u8* pPacked, u8 value) {
93 *pPacked = GetVerticalPosition(*pPacked) * HORIZONTALPOSITION_MAX + value;
95inline void SetVerticalPosition(u8* pPacked, u8 value) {
96 *pPacked = value * HORIZONTALPOSITION_MAX + GetHorizontalPosition(*pPacked);
104typedef math::VEC2 TexCoord[VERTEXCOLOR_MAX];
111 void Reserve(u8 num);
112 void SetSize(u8 num);
113 void Copy(
const void* pSrc, u8 num);
115 bool IsEmpty()
const {
123 TexCoord* GetArray()
const {
138inline bool IsCITexelFormat(GXTexFmt format) {
139 return format == GX_TF_C4 || format == GX_TF_C8 || format == GX_TF_C14X2;
142inline s32 GetSignatureInt(
const char* pSignature) {
143 return *
reinterpret_cast<const s32*
>(pSignature);
146inline const char* GetStrTableStr(
const void* pTable,
int index) {
147 const ulong* pOffsetTbl =
static_cast<const ulong*
>(pTable);
148 const char* pStringPool =
static_cast<const char*
>(pTable);
149 return pStringPool + pOffsetTbl[index];
152bool TestFileHeader(
const res::BinaryFileHeader& rHeader);
153bool TestFileHeader(
const res::BinaryFileHeader& rHeader, ulong signature);
155bool EqualsResName(
const char* pLhs,
const char* pRhs);
156bool EqualsMaterialName(
const char* pLhs,
const char* pRhs);
158bool IsModulateVertexColor(ut::Color* pColors, u8 glbAlpha);
160ut::Color MultipleAlpha(ut::Color color, u8 alpha);
161void MultipleAlpha(ut::Color* pDst,
const ut::Color* pSrc, u8 alpha);
163void SetVertexFormat(
bool modulate, u8 numCoord);
165void DrawQuad(
const math::VEC2& rBase,
const Size& rSize, u8 num,
166 const TexCoord* pCoords,
const ut::Color* pColors);
167void DrawQuad(
const math::VEC2& rBase,
const Size& rSize, u8 num,
168 const TexCoord* pCoords,
const ut::Color* pColors, u8 alpha);
2D graphics drawing library.