Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
TextWriterBase.h
Go to the documentation of this file.
1#ifndef NW4HBM_UT_TEXT_WRITER_BASE_H
2#define NW4HBM_UT_TEXT_WRITER_BASE_H
3
4#include <revolution/types.h>
5
6#include "CharWriter.h"
7#include "Rect.h"
8
9#include <string>
10#include <cstdio>
11
12#include "TagProcessorBase.h"
13
14namespace nw4hbm {
15 namespace ut {
16
17 struct Rect;
18 template <typename>
20
21 template <typename T>
22 class TextWriterBase : public CharWriter {
23 public:
50
53
54 void SetLineHeight(f32 lineHeight);
55 f32 GetLineHeight() const;
56
57 void SetLineSpace(f32 lineSpace);
58 void SetCharSpace(f32 charSpace);
59
60 f32 GetLineSpace() const;
61 f32 GetCharSpace() const;
62
63 void SetTabWidth(int tabWidth);
64 int GetTabWidth() const;
65
66 void SetDrawFlag(u32 flags);
67 u32 GetDrawFlag() const;
68
69 void SetTagProcessor(TagProcessorBase<T>* tagProcessor);
70 void ResetTagProcessor();
72
73 f32 CalcFormatStringWidth(const T* format, ...) const;
74 f32 CalcFormatStringHeight(const T* format, ...) const;
75
76 void CalcFormatStringRect(Rect* pRect, const T* format, ...) const;
77 void CalcVStringRect(Rect* pRect, const T* format, va_list args) const;
78
79 f32 CalcStringWidth(const T* str, int length) const;
80 f32 CalcStringWidth(const T* str) const;
81
82 f32 CalcStringHeight(const T* str, int length) const;
83 f32 CalcStringHeight(const T* str) const;
84
85 void CalcStringRect(Rect* pRect, const T* str, int length) const;
86 void CalcStringRect(Rect* pRect, const T* str) const;
87
88 f32 Printf(const T* format, ...);
89 f32 VPrintf(const T* format, va_list args);
90 f32 Print(const T* str, int length);
91 f32 Print(const T* str);
92
93 static T* SetBuffer(T* buf, u32 size);
94 static T* SetBuffer(u32 size);
95
96 static u32 GetBufferSize();
97 static T* GetBuffer();
98
99 static int VSNPrintf(T* buffer, u32 count, const T* format, va_list arg) {
100 return sizeof(T) == sizeof(char) ?
101 std::vsnprintf((char*)buffer, count, (const char*)format, arg) :
102 std::vswprintf((wchar_t*)buffer, count, (const wchar_t*)format, arg);
103 }
104 static int StrLen(const T* str) {
105 return sizeof(T) == sizeof(char) ? std::strlen((const char*)str) :
106 std::wcslen((const wchar_t*)str);
107 }
108
109 void ut_TextWriterBase_unused1(Rect* pRect, const T* str, int length);
110
111 f32 CalcLineWidth(const T* str, int length);
112 int CalcLineRectImpl(Rect* pRect, const T* str, int length);
113 void CalcStringRectImpl(Rect* pRect, const T* str, int length);
114 f32 PrintImpl(const T* str, int length);
115 f32 AdjustCursor(f32* xOrigin, f32* yOrigin, const T* str, int length);
116
117 bool IsDrawFlagSet(u32 mask, u32 flag) const { return (mDrawFlag & mask) == flag; }
118
119 private:
120 /* 0x4C */ f32 mCharSpace;
121 /* 0x50 */ f32 mLineSpace;
122 /* 0x54 */ int mTabWidth;
123 /* 0x58 */ u32 mDrawFlag;
125
126 private:
127 static T* mFormatBuffer;
130 static const int DEFAULT_FORMAT_BUFFER_SIZE = 256;
131 static const u32 DRAWFLAG_MASK_ALL =
133 }; // size = 0x60
134
135 } // namespace ut
136} // namespace nw4hbm
137
138#endif
static BOOL flag
Definition DEMOAVX.c:20
Definition CharWriter.h:18
Definition Rect.h:11
Definition TextWriterBase.h:19
Definition TextWriterBase.h:22
static u32 GetBufferSize()
Definition ut_TextWriterBase.cpp:433
f32 VPrintf(const T *format, va_list args)
Definition ut_TextWriterBase.cpp:478
void CalcFormatStringRect(Rect *pRect, const T *format,...) const
Definition ut_TextWriterBase.cpp:134
DrawFlag
Definition TextWriterBase.h:24
@ DRAWFLAG_MASK_ALIGN_TEXT
Definition TextWriterBase.h:41
@ DRAWFLAG_ALIGN_TEXT_BASELINE
Definition TextWriterBase.h:26
@ DRAWFLAG_ALIGN_H_CENTER
Definition TextWriterBase.h:32
@ DRAWFLAG_ALIGN_V_BASELINE
Definition TextWriterBase.h:36
@ DRAWFLAG_MASK_ALIGN_H
Definition TextWriterBase.h:44
@ DRAWFLAG_ALIGN_H_BASELINE
Definition TextWriterBase.h:31
@ DRAWFLAG_MASK_ALIGN_V
Definition TextWriterBase.h:47
@ DRAWFLAG_ALIGN_TEXT_CENTER
Definition TextWriterBase.h:27
@ DRAWFLAG_ALIGN_V_CENTER
Definition TextWriterBase.h:37
@ DRAWFLAG_ALIGN_TEXT_RIGHT
Definition TextWriterBase.h:28
@ DRAWFLAG_ALIGN_H_RIGHT
Definition TextWriterBase.h:33
@ DRAWFLAG_ALIGN_V_TOP
Definition TextWriterBase.h:38
void CalcStringRect(Rect *pRect, const T *str) const
f32 CalcFormatStringHeight(const T *format,...) const
Definition ut_TextWriterBase.cpp:122
void CalcStringRectImpl(Rect *pRect, const T *str, int length)
Definition ut_TextWriterBase.cpp:293
f32 GetLineHeight() const
Definition ut_TextWriterBase.cpp:39
void CalcVStringRect(Rect *pRect, const T *format, va_list args) const
Definition ut_TextWriterBase.cpp:548
f32 Printf(const T *format,...)
Definition ut_TextWriterBase.cpp:492
f32 CalcLineWidth(const T *str, int length)
Definition ut_TextWriterBase.cpp:415
TextWriterBase()
Definition ut_TextWriterBase.cpp:23
void SetCharSpace(f32 charSpace)
Definition ut_TextWriterBase.cpp:54
~TextWriterBase()
Definition ut_TextWriterBase.cpp:28
f32 mCharSpace
Definition TextWriterBase.h:120
void SetDrawFlag(u32 flags)
Definition ut_TextWriterBase.cpp:82
static T * SetBuffer(T *buf, u32 size)
f32 GetLineSpace() const
Definition ut_TextWriterBase.cpp:60
f32 CalcStringHeight(const T *str) const
TagProcessorBase< T > * mTagProcessor
Definition TextWriterBase.h:124
u32 GetDrawFlag() const
Definition ut_TextWriterBase.cpp:87
void CalcStringRect(Rect *pRect, const T *str, int length) const
f32 CalcStringHeight(const T *str, int length) const
void ResetTagProcessor()
Definition ut_TextWriterBase.cpp:99
f32 CalcStringWidth(const T *str) const
static TagProcessorBase< T > mDefaultTagProcessor
Definition TextWriterBase.h:129
static u32 mFormatBufferSize
Definition TextWriterBase.h:128
int GetTabWidth() const
Definition ut_TextWriterBase.cpp:76
void ut_TextWriterBase_unused1(Rect *pRect, const T *str, int length)
Definition ut_TextWriterBase.cpp:323
bool IsDrawFlagSet(u32 mask, u32 flag) const
Definition TextWriterBase.h:117
static const int DEFAULT_FORMAT_BUFFER_SIZE
Definition TextWriterBase.h:130
f32 Print(const T *str)
static int VSNPrintf(T *buffer, u32 count, const T *format, va_list arg)
Definition TextWriterBase.h:99
static int StrLen(const T *str)
Definition TextWriterBase.h:104
void SetLineSpace(f32 lineSpace)
Definition ut_TextWriterBase.cpp:48
f32 CalcStringWidth(const T *str, int length) const
void SetTagProcessor(TagProcessorBase< T > *tagProcessor)
Definition ut_TextWriterBase.cpp:92
int CalcLineRectImpl(Rect *pRect, const T *str, int length)
Definition ut_TextWriterBase.cpp:337
f32 PrintImpl(const T *str, int length)
Definition ut_TextWriterBase.cpp:191
void SetTabWidth(int tabWidth)
Definition ut_TextWriterBase.cpp:71
u32 mDrawFlag
Definition TextWriterBase.h:123
f32 mLineSpace
Definition TextWriterBase.h:121
f32 CalcFormatStringWidth(const T *format,...) const
Definition ut_TextWriterBase.cpp:110
static T * mFormatBuffer
Definition TextWriterBase.h:127
int mTabWidth
Definition TextWriterBase.h:122
f32 Print(const T *str, int length)
static const u32 DRAWFLAG_MASK_ALL
Definition TextWriterBase.h:131
void SetLineHeight(f32 lineHeight)
Definition ut_TextWriterBase.cpp:31
static T * GetBuffer()
Definition ut_TextWriterBase.cpp:428
TagProcessorBase< T > & GetTagProcessor() const
Definition ut_TextWriterBase.cpp:104
f32 GetCharSpace() const
Definition ut_TextWriterBase.cpp:65
f32 AdjustCursor(f32 *xOrigin, f32 *yOrigin, const T *str, int length)
Definition ut_TextWriterBase.cpp:144
static OSTime buffer
Definition ai.c:24
unsigned int size
Definition __os.h:106
unsigned long u32
Definition types.h:12
float f32
Definition types.h:25
IOSResourceRequest * buf[RESPONSE_REQ_BUF_LEN]
Definition ipcclt.c:47
static const double T[]
Definition k_tan.c:106
Definition HBMAnmController.h:6