You've already forked pico-launcher
mirror of
https://github.com/LNH-team/pico-launcher.git
synced 2026-01-09 16:28:48 -08:00
85 lines
3.3 KiB
C++
85 lines
3.3 KiB
C++
#include "common.h"
|
|
#include "gui/GraphicsContext.h"
|
|
#include "gui/OamBuilder.h"
|
|
#include "gui/IVramManager.h"
|
|
#include "gui/VramContext.h"
|
|
#include "core/math/RgbMixer.h"
|
|
#include "core/math/ColorConverter.h"
|
|
#include "iconCell.h"
|
|
#include "gui/palette/GradientPalette.h"
|
|
#include "themes/material/MaterialColorScheme.h"
|
|
#include "themes/IFontRepository.h"
|
|
#include "MaterialFileInfoCardView.h"
|
|
|
|
MaterialFileInfoCardView::MaterialFileInfoCardView(const MaterialColorScheme* materialColorScheme,
|
|
const IFontRepository* fontRepository)
|
|
: _firstLine(176, 16, 50, fontRepository->GetFont(FontType::Medium11))
|
|
, _secondLine(176, 16, 50, fontRepository->GetFont(FontType::Regular10))
|
|
, _thirdLine(176, 16, 50, fontRepository->GetFont(FontType::Regular10))
|
|
, _filenameLabelView(220, 16, 200, fontRepository->GetFont(FontType::Medium7_5))
|
|
, _materialColorScheme(materialColorScheme)
|
|
{
|
|
AddChildTail(&_firstLine);
|
|
AddChildTail(&_secondLine);
|
|
AddChildTail(&_thirdLine);
|
|
_filenameLabelView.SetEllipsis(true);
|
|
AddChildTail(&_filenameLabelView);
|
|
}
|
|
|
|
void MaterialFileInfoCardView::InitVram(const VramContext& vramContext)
|
|
{
|
|
BannerView::InitVram(vramContext);
|
|
|
|
const auto objVramManager = vramContext.GetObjVramManager();
|
|
if (objVramManager)
|
|
{
|
|
_iconCellVramOffset = objVramManager->Alloc(iconCellTilesLen);
|
|
dma_ntrCopy32(3, iconCellTiles, objVramManager->GetVramAddress(_iconCellVramOffset), iconCellTilesLen);
|
|
}
|
|
}
|
|
|
|
void MaterialFileInfoCardView::Update()
|
|
{
|
|
BannerView::Update();
|
|
_firstLine.SetPosition(_position.x + 70, _position.y + 130 - 8);
|
|
_secondLine.SetPosition(_position.x + 70, _position.y + 145 - 8);
|
|
_thirdLine.SetPosition(_position.x + 70, _position.y + 159 - 8);
|
|
_filenameLabelView.SetPosition(_position.x + 18, _position.y + 168);
|
|
if (_icon)
|
|
{
|
|
_icon->SetPosition(_position.x + 24, _position.y + 136 - 8);
|
|
_icon->Update();
|
|
}
|
|
}
|
|
|
|
void MaterialFileInfoCardView::Draw(GraphicsContext& graphicsContext)
|
|
{
|
|
_firstLine.SetBackgroundColor(_materialColorScheme->secondaryContainer);
|
|
_firstLine.SetForegroundColor(_materialColorScheme->onSecondaryContainer);
|
|
_secondLine.SetBackgroundColor(_materialColorScheme->secondaryContainer);
|
|
_secondLine.SetForegroundColor(_materialColorScheme->onSecondaryContainer);
|
|
_thirdLine.SetBackgroundColor(_materialColorScheme->secondaryContainer);
|
|
_thirdLine.SetForegroundColor(_materialColorScheme->onSecondaryContainer);
|
|
_filenameLabelView.SetBackgroundColor(_materialColorScheme->secondaryContainer);
|
|
_filenameLabelView.SetForegroundColor(_materialColorScheme->onSurfaceVariant);
|
|
|
|
BannerView::Draw(graphicsContext);
|
|
|
|
const auto& bgColor = _materialColorScheme->secondaryContainer;
|
|
const auto& fgColor = _materialColorScheme->mainIconBg;
|
|
u32 iconCellPlttRow = graphicsContext.GetPaletteManager().AllocRow(
|
|
GradientPalette(bgColor, fgColor));
|
|
|
|
gfx_oam_entry_t* oam = graphicsContext.GetOamManager().AllocOams(1);
|
|
OamBuilder::OamWithSize<64, 64>(_position.x + 18, _position.y + 130 - 8, _iconCellVramOffset >> 7)
|
|
.WithPalette16(iconCellPlttRow)
|
|
.WithPriority(3)
|
|
.Build(oam[0]);
|
|
|
|
if (_icon)
|
|
{
|
|
_icon->SetObjVramOffset(_iconVramOffset);
|
|
_icon->Draw(graphicsContext, fgColor);
|
|
}
|
|
}
|