Files
pico-launcher/arm9/source/romBrowser/views/BannerView.cpp
2025-11-25 17:41:31 +01:00

63 lines
1.7 KiB
C++

#include "common.h"
#include "gui/IVramManager.h"
#include "gui/VramContext.h"
#include "BannerView.h"
void BannerView::InitVram(const VramContext& vramContext)
{
const auto objVramManager = vramContext.GetObjVramManager();
if (objVramManager)
{
_iconVramOffset = objVramManager->Alloc(FILE_ICON_VRAM_SIZE);
_iconVram = objVramManager->GetVramAddress(_iconVramOffset);
}
ViewContainer::InitVram(vramContext);
}
void BannerView::SetFileNameAsync(TaskQueueBase* taskQueue, const TCHAR* fileName, bool useAsTitle)
{
if (useAsTitle)
{
_lines = 1;
SetFirstLineAsync(taskQueue, fileName, true);
SetSecondLineAsync(taskQueue, u"", 0);
SetThirdLineAsync(taskQueue, u"", 0);
}
}
void BannerView::SetGameTitleAsync(TaskQueueBase* taskQueue, const char16_t* gameTitle)
{
const char16_t* p = gameTitle;
int i = 0;
while (true)
{
u16 c = *p++;
if (c == 0 || c == '\n')
{
if (i == 0)
{
_lines = 1;
SetFirstLineAsync(taskQueue, gameTitle, p - gameTitle, false);
}
else if (i == 1)
{
_lines = 2;
SetSecondLineAsync(taskQueue, gameTitle, p - gameTitle);
}
else if (i == 2)
{
_lines = 3;
SetThirdLineAsync(taskQueue, gameTitle, p - gameTitle);
}
gameTitle = p;
i++;
if (c == 0 || i == 3)
break;
}
}
if (i <= 1)
SetSecondLineAsync(taskQueue, u"", 0);
if (i <= 2)
SetThirdLineAsync(taskQueue, u"", 0);
}