Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 25 additions & 19 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
Language: Cpp
Language: Cpp
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignOperands: true
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Never
Expand All @@ -22,28 +22,30 @@ BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
ColumnLimit: 100
CommentPragmas: '^ (IWYU pragma:|NOLINT)'
ColumnLimit: 100
CommentPragmas: '^ (IWYU pragma:|NOLINT)'
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ForEachMacros: []
DisableFormat: false
ForEachMacros: [ ]
IncludeCategories:
- Regex: '^<[Ww]indows\.h>$'
Priority: 1
- Regex: '^<'
Priority: 2
- Regex: '^"'
Priority: 3
- Regex: '^<[Ww]indows\.h>$'
Priority: 1
- Regex: '^<'
Priority: 2
- Regex: '^"'
Priority: 3
IndentCaseLabels: false
IndentWidth: 4
IndentWidth: 4
IndentWrappedFunctionNames: false
InsertNewlineAtEOF: true
KeepEmptyLinesAtTheStartOfBlocks: false
LineEnding: LF
MacroBlockBegin: ''
MacroBlockEnd: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 4
Expand All @@ -56,19 +58,23 @@ PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Left
ReflowComments: true
SortIncludes: true
QualifierAlignment: Left
ReflowComments: true
RemoveBracesLLVM: true
SeparateDefinitionBlocks: Always
SortIncludes: true
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: c++17
TabWidth: 4
UseTab: Never
TabWidth: 4
UseTab: Never
WhitespaceSensitiveMacros: [ "SEAD_ENUM", "SEAD_ENUM_EX", "SEAD_ENUM_EX_VALUES" ]
...
8 changes: 7 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ project(eui CXX ASM)

add_library(eui OBJECT
include/euiControlBase.h
include/message/euiScalableFontMgr.h
include/message/euiFontMgr.h
include/sys/euiSharcArchive.h

src/euiControlBase.cpp
)
Expand All @@ -11,7 +14,10 @@ target_compile_options(eui PRIVATE -fno-strict-aliasing)
target_compile_options(eui PRIVATE -Wno-invalid-offsetof)
target_include_directories(eui PUBLIC include/)

if(NOT TARGET sead)
add_subdirectory(../sead)
endif()
if(NOT TARGET agl)
add_subdirectory(../agl)
endif()
target_link_libraries(eui PUBLIC agl)
target_link_libraries(eui PUBLIC agl sead)
54 changes: 54 additions & 0 deletions include/message/euiFontMgr.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#pragma once

#include <basis/seadTypes.h>
#include <container/seadBuffer.h>
#include <prim/seadSafeString.h>

#include "sys/euiSharcArchive.h"

namespace sead {
class Heap;
}

namespace nn::font {
class Font;
class ResFont;
} // namespace nn::font

namespace eui {
class ScalableFontMgr;

class FontMgr {
SEAD_SINGLETON_DISPOSER(FontMgr)
public:
FontMgr();

void initialize(sead::Heap*, void*, u32, const sead::Buffer<const char*>&,
eui::ScalableFontMgr*);
void finalize();
void registFont(nn::ui2d::ResourceAccessor*);
const nn::font::Font* tryGetFont(const sead::SafeString&) const;
nn::font::Font* tryGetFont(const sead::SafeString&);
const nn::font::Font* getFont(const sead::SafeString&) const;
nn::font::Font* getFont(const sead::SafeString&);
const nn::font::Font* getFontByMessageIndex(u32) const;
nn::font::Font* getFontByMessageIndex(u32);
void setRubyFont(const sead::SafeString&);
void setRubyFont(const nn::font::Font*);
bool isScalableFont(const sead::SafeString&) const;
void findFontName(sead::BufferedSafeString*, const nn::font::Font*) const;

ScalableFontMgr* getScalableFontMgr() const { return mScalableFontMrg; }

private:
char filler[0x8];
SharcArchive mSharcArchive;
sead::PtrArray<nn::font::ResFont> _30;
sead::PtrArray<nn::font::Font> _40;
nn::font::Font* mRubyFont;
ScalableFontMgr* mScalableFontMrg;
};

static_assert(sizeof(FontMgr) == 0x60);

} // namespace eui
60 changes: 60 additions & 0 deletions include/message/euiScalableFontMgr.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#pragma once

#include <basis/seadTypes.h>
#include <prim/seadSafeString.h>
#include <thread/seadThread.h>

namespace nn::font {
class ScalableFont;
class TextureCache;
} // namespace nn::font

namespace nn::ui2d {
class ResourceAccessor;
}

namespace eui {
class FontMgr;
class ScalableFontTextBoxEx;

class ScalableFontMgr {
SEAD_SINGLETON_DISPOSER(ScalableFontMgr)
public:
struct InitializeArg;

ScalableFontMgr();

void initialize(const InitializeArg&);
void update();
void registFont(nn::ui2d::ResourceAccessor*);
const nn::font::ScalableFont* getFont(const sead::SafeString&) const;
nn::font::ScalableFont* getFont(const sead::SafeString&);
bool isGlyphsReady(const char16*, u32, const nn::font::ScalableFont*, const eui::FontMgr*);
bool registerGlyphs(const char16*, u32, const nn::font::ScalableFont*, const eui::FontMgr*,
s32);
const char* findFontName(const nn::font::ScalableFont*) const;
void reserveRegisterGlyphs(eui::ScalableFontTextBoxEx*);
void dumpTextureCacheGlyphTreeMap() const;
s32 getTextureCacheNoSpaceError() const;
void clearNoSpaceError();

bool is_55() const { return _55; }

private:
bool registerGlyphs_(const char16*, u32, const nn::font::ScalableFont*, const eui::FontMgr*,
s32, bool);
bool isNeedPlot_(char16, u32, u32);

char filler[0x18];
nn::font::TextureCache* _38;
sead::Thread* _40;
ScalableFontTextBoxEx* _48;
s32 _50;
bool _54;
bool _55;
bool _56;
};

static_assert(sizeof(ScalableFontMgr) == 0x58);

} // namespace eui
27 changes: 27 additions & 0 deletions include/sys/euiSharcArchive.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#pragma once

#include <basis/seadTypes.h>

namespace sead {
class Heap;
}

namespace eui {

class SharcArchive {
public:
class FileReader;

SharcArchive();

void finalize();
void initialize(sead::Heap*, void*, u32);
void startFileReader(eui::SharcArchive::FileReader*) const;

private:
char _filler[0x8];
};

static_assert(sizeof(SharcArchive) == 0x8);

} // namespace eui