mirror of
https://github.com/zetaPRIME/libstarlight.git
synced 2025-06-26 05:32:46 +00:00
switch to testing via CIA since 3dsx stopped working for no discernible reason (temp borrowed banner assets);
semi-working debug console (svcBreak on hw!?)
This commit is contained in:
parent
260000aea3
commit
a3d3a0efcd
101
libstarlight/source/starlight/ui/DebugConsole.cpp
Normal file
101
libstarlight/source/starlight/ui/DebugConsole.cpp
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
#include "DebugConsole.h"
|
||||||
|
|
||||||
|
#include "starlight/GFXManager.h"
|
||||||
|
#include "starlight/gfx/RenderCore.h"
|
||||||
|
|
||||||
|
#include "sys/iosupport.h"
|
||||||
|
|
||||||
|
using starlight::GFXManager;
|
||||||
|
using starlight::TextConfig;
|
||||||
|
|
||||||
|
using starlight::gfx::RenderCore;
|
||||||
|
|
||||||
|
using starlight::ui::DebugConsole;
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
bool csInit = false;
|
||||||
|
//std::weak_ptr<DebugConsole> curDC = std::shared_ptr<DebugConsole>(nullptr);
|
||||||
|
DebugConsole* cs = nullptr;
|
||||||
|
|
||||||
|
// TODO: figure out how the fuck to make this not svcBreak on hardware!?
|
||||||
|
ssize_t consoleWrite(struct _reent* r, void* fd, const char* ptr, size_t len) {
|
||||||
|
if (!ptr) return -1;
|
||||||
|
|
||||||
|
//if (curDC.expired()) return -1;
|
||||||
|
|
||||||
|
//auto cs = curDC.lock();
|
||||||
|
if (cs == nullptr) return -1; // nullref but not expired???
|
||||||
|
cs->text.append("buh");//(ptr, len);
|
||||||
|
cs->buffer.reset();
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
const devoptab_t devoptab_console = {
|
||||||
|
"con",
|
||||||
|
0,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
consoleWrite,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
DebugConsole::DebugConsole(VRect rect) {
|
||||||
|
this->rect = rect;
|
||||||
|
}
|
||||||
|
|
||||||
|
DebugConsole::~DebugConsole() {
|
||||||
|
if (cs == this) cs = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DebugConsole::Start() {
|
||||||
|
//curDC = std::static_pointer_cast<DebugConsole>(shared_from_this());
|
||||||
|
cs = this;
|
||||||
|
if (!csInit) {
|
||||||
|
csInit = true;
|
||||||
|
|
||||||
|
devoptab_list[STD_OUT] = &devoptab_console;
|
||||||
|
devoptab_list[STD_ERR] = &devoptab_console;
|
||||||
|
|
||||||
|
setvbuf(stdout, NULL , _IONBF, 0);
|
||||||
|
setvbuf(stderr, NULL , _IONBF, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
text = "foop?\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
void DebugConsole::PreDrawOffscreen() {
|
||||||
|
buffer.reset(); // I guess?
|
||||||
|
}
|
||||||
|
|
||||||
|
void DebugConsole::PreDraw() {
|
||||||
|
if (!buffer) {
|
||||||
|
static TextConfig textConfig = ThemeManager::GetMetric<TextConfig>("/textPresets/normal.12", TextConfig());
|
||||||
|
textConfig.font = ThemeManager::GetFont("mono.12");
|
||||||
|
textConfig.justification = Vector2(0, 1);
|
||||||
|
textConfig.borderColor = Color::black;
|
||||||
|
|
||||||
|
// clip text at top left corner
|
||||||
|
Vector2 measure = textConfig.Measure(text, rect.size.x);
|
||||||
|
if (measure.y > rect.size.y) {
|
||||||
|
unsigned int cfp = textConfig.GetCursorFromPoint(rect, text, Vector2(0, measure.y - (rect.size.y + 16)));
|
||||||
|
text = text.substr(cfp);
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer = std::make_unique<gfx::DrawContextCanvas>(rect.size + Vector2(0, 8));
|
||||||
|
buffer->Clear();
|
||||||
|
GFXManager::PushContext(buffer.get());
|
||||||
|
textConfig.Print(buffer->rect, text);
|
||||||
|
GFXManager::PopContext();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DebugConsole::Draw() {
|
||||||
|
auto rect = (this->rect + GFXManager::GetOffset()).IntSnap();
|
||||||
|
if (buffer) {
|
||||||
|
buffer->Draw(VRect(rect.pos, buffer->rect.size));
|
||||||
|
}
|
||||||
|
}
|
37
libstarlight/source/starlight/ui/DebugConsole.h
Normal file
37
libstarlight/source/starlight/ui/DebugConsole.h
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "starlight/_global.h"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
#include "starlight/datatypes/Optional.h"
|
||||||
|
|
||||||
|
#include "starlight/ThemeManager.h"
|
||||||
|
#include "starlight/gfx/ThemeRef.h"
|
||||||
|
|
||||||
|
#include "starlight/gfx/DrawContextCanvas.h"
|
||||||
|
|
||||||
|
#include "starlight/ui/UIElement.h"
|
||||||
|
|
||||||
|
namespace starlight {
|
||||||
|
namespace ui {
|
||||||
|
class DebugConsole : public UIElement {
|
||||||
|
private:
|
||||||
|
//
|
||||||
|
|
||||||
|
public:
|
||||||
|
std::string text = "";
|
||||||
|
|
||||||
|
std::unique_ptr<gfx::DrawContextCanvas> buffer;
|
||||||
|
|
||||||
|
DebugConsole(VRect rect);
|
||||||
|
~DebugConsole() override;
|
||||||
|
|
||||||
|
void Start();
|
||||||
|
|
||||||
|
void PreDrawOffscreen() override;
|
||||||
|
void PreDraw() override;
|
||||||
|
void Draw() override;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -11,6 +11,8 @@ roadmap to v0.5.1 {
|
|||||||
- masking
|
- masking
|
||||||
}
|
}
|
||||||
|
|
||||||
|
libctru console as ui element (label subclass? container with a label?)
|
||||||
|
|
||||||
- fix the hang on osk when pressing (L|R)+up+left
|
- fix the hang on osk when pressing (L|R)+up+left
|
||||||
figure out what (else) to put on the left side of the keyboard (opposite backspace and enter)
|
figure out what (else) to put on the left side of the keyboard (opposite backspace and enter)
|
||||||
temporary drawable loading, local themeref, discard etc.
|
temporary drawable loading, local themeref, discard etc.
|
||||||
@ -56,6 +58,8 @@ roadmap to v0.5.1 {
|
|||||||
|
|
||||||
SOUND.
|
SOUND.
|
||||||
|
|
||||||
|
UI heirarchy from json
|
||||||
|
|
||||||
quick includes for all UI elements, etc.
|
quick includes for all UI elements, etc.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,9 @@ function abort {
|
|||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
mode=send
|
mode=send
|
||||||
if [ "$1" = "c" ]; then
|
if [ "$1" = "sc" ]; then
|
||||||
|
mode=send-cia
|
||||||
|
elif [ "$1" = "c" ]; then
|
||||||
mode=run
|
mode=run
|
||||||
fi
|
fi
|
||||||
cd libstarlight
|
cd libstarlight
|
||||||
|
@ -44,6 +44,8 @@ APP_TITLE := Starlight Testbed
|
|||||||
APP_DESCRIPTION := Test application for libstarlight
|
APP_DESCRIPTION := Test application for libstarlight
|
||||||
APP_AUTHOR := zetaPRIME
|
APP_AUTHOR := zetaPRIME
|
||||||
|
|
||||||
|
3DSIP := 10.0.0.5
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# options for code generation
|
# options for code generation
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
@ -168,6 +170,10 @@ cia: $(TARGET)-strip.elf
|
|||||||
send: $(BUILD)
|
send: $(BUILD)
|
||||||
@3dslink $(TARGET).3dsx || 3dslink $(TARGET).3dsx || 3dslink $(TARGET).3dsx || 3dslink $(TARGET).3dsx || 3dslink $(TARGET).3dsx
|
@3dslink $(TARGET).3dsx || 3dslink $(TARGET).3dsx || 3dslink $(TARGET).3dsx || 3dslink $(TARGET).3dsx || 3dslink $(TARGET).3dsx
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
send-cia: $(TARGET)-strip.elf
|
||||||
|
@makerom -f cia -o $(TARGET).cia -elf $(TARGET)-strip.elf -rsf resources/$(TARGET).rsf -icon resources/icon.icn -banner resources/banner.bnr -exefslogo -target t
|
||||||
|
@sockme $(TARGET).cia $(3DSIP)
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
run: $(BUILD)
|
run: $(BUILD)
|
||||||
@citra $(TARGET).3dsx
|
@citra $(TARGET).3dsx
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
BIN
testbed/resources/audio_3ds.wav
Normal file
BIN
testbed/resources/audio_3ds.wav
Normal file
Binary file not shown.
BIN
testbed/resources/banner.bnr
Normal file
BIN
testbed/resources/banner.bnr
Normal file
Binary file not shown.
BIN
testbed/resources/banner_3ds.png
Normal file
BIN
testbed/resources/banner_3ds.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.2 KiB |
BIN
testbed/resources/icon.icn
Normal file
BIN
testbed/resources/icon.icn
Normal file
Binary file not shown.
BIN
testbed/resources/icon_3ds.png
Normal file
BIN
testbed/resources/icon_3ds.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 237 B |
236
testbed/resources/starlight-testbed.rsf
Normal file
236
testbed/resources/starlight-testbed.rsf
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
BasicInfo:
|
||||||
|
Title : "starlight-testbed"
|
||||||
|
CompanyCode : "00"
|
||||||
|
ProductCode : "CTR-N-SLTB"
|
||||||
|
ContentType : Application # Application / SystemUpdate / Manual / Child / Trial
|
||||||
|
Logo : Homebrew # Nintendo / Licensed / Distributed / iQue / iQueForSystem
|
||||||
|
|
||||||
|
RomFs:
|
||||||
|
# Specifies the root path of the file system to include in the ROM.
|
||||||
|
RootPath : "$(ROMFS_ROOT)"
|
||||||
|
|
||||||
|
|
||||||
|
TitleInfo:
|
||||||
|
UniqueId : 0xf1001 # same as sf2d test because meh
|
||||||
|
Category : Application # Application / SystemApplication / Applet / Firmware / Base / DlpChild / Demo / Contents / SystemContents / SharedContents / AddOnContents / Patch / AutoUpdateContents
|
||||||
|
|
||||||
|
#CardInfo:
|
||||||
|
# MediaSize : 128MB # 128MB / 256MB / 512MB / 1GB / 2GB / 4GB / 8GB / 16GB / 32GB
|
||||||
|
# MediaType : Card1 # Card1 / Card2
|
||||||
|
# CardDevice : None # NorFlash / None
|
||||||
|
|
||||||
|
|
||||||
|
Option:
|
||||||
|
UseOnSD : true # true if App is to be installed to SD
|
||||||
|
EnableCompress : false # Compresses exefs code
|
||||||
|
FreeProductCode : true # Removes limitations on ProductCode
|
||||||
|
EnableCrypt : false # Enables encryption for NCCH and CIA
|
||||||
|
MediaFootPadding : false # If true CCI files are created with padding
|
||||||
|
|
||||||
|
#ExeFs: # these are the program segments from the ELF, check your elf for the appropriate segment names
|
||||||
|
# ReadOnly:
|
||||||
|
# - .rodata
|
||||||
|
# - RO
|
||||||
|
# ReadWrite:
|
||||||
|
# - .data
|
||||||
|
# - RO
|
||||||
|
# Text:
|
||||||
|
# - .init
|
||||||
|
# - .text
|
||||||
|
# - STUP_ENTRY
|
||||||
|
|
||||||
|
#PlainRegion: # only used with SDK ELFs
|
||||||
|
# # - .module_id
|
||||||
|
|
||||||
|
AccessControlInfo:
|
||||||
|
# UseOtherVariationSaveData : true
|
||||||
|
# UseExtSaveData : true
|
||||||
|
# ExtSaveDataId: 0xffffffff
|
||||||
|
# SystemSaveDataId1: 0x220
|
||||||
|
# SystemSaveDataId2: 0x00040010
|
||||||
|
# OtherUserSaveDataId1: 0x220
|
||||||
|
# OtherUserSaveDataId2: 0x330
|
||||||
|
# OtherUserSaveDataId3: 0x440
|
||||||
|
# UseExtendedSaveDataAccessControl: true
|
||||||
|
# AccessibleSaveDataIds: [0x101, 0x202, 0x303, 0x404, 0x505, 0x606]
|
||||||
|
FileSystemAccess:
|
||||||
|
# - CategorySystemApplication
|
||||||
|
# - CategoryHardwareCheck
|
||||||
|
# - CategoryFileSystemTool
|
||||||
|
- Debug
|
||||||
|
# - TwlCardBackup
|
||||||
|
# - TwlNandData
|
||||||
|
# - Boss
|
||||||
|
- DirectSdmc
|
||||||
|
# - Core
|
||||||
|
# - CtrNandRo
|
||||||
|
# - CtrNandRw
|
||||||
|
# - CtrNandRoWrite
|
||||||
|
# - CategorySystemSettings
|
||||||
|
# - CardBoard
|
||||||
|
# - ExportImportIvs
|
||||||
|
# - DirectSdmcWrite
|
||||||
|
# - SwitchCleanup
|
||||||
|
# - SaveDataMove
|
||||||
|
# - Shop
|
||||||
|
# - Shell
|
||||||
|
# - CategoryHomeMenu
|
||||||
|
IoAccessControl:
|
||||||
|
# - FsMountNand
|
||||||
|
# - FsMountNandRoWrite
|
||||||
|
# - FsMountTwln
|
||||||
|
# - FsMountWnand
|
||||||
|
# - FsMountCardSpi
|
||||||
|
# - UseSdif3
|
||||||
|
# - CreateSeed
|
||||||
|
# - UseCardSpi
|
||||||
|
|
||||||
|
IdealProcessor : 0
|
||||||
|
AffinityMask : 1
|
||||||
|
|
||||||
|
Priority : 16
|
||||||
|
|
||||||
|
MaxCpu : 0x9E # Default
|
||||||
|
|
||||||
|
DisableDebug : true
|
||||||
|
EnableForceDebug : false
|
||||||
|
CanWriteSharedPage : true
|
||||||
|
CanUsePrivilegedPriority : false
|
||||||
|
CanUseNonAlphabetAndNumber : true
|
||||||
|
PermitMainFunctionArgument : true
|
||||||
|
CanShareDeviceMemory : true
|
||||||
|
RunnableOnSleep : false
|
||||||
|
SpecialMemoryArrange : true
|
||||||
|
|
||||||
|
CoreVersion : 2
|
||||||
|
DescVersion : 2
|
||||||
|
|
||||||
|
ReleaseKernelMajor : "02"
|
||||||
|
ReleaseKernelMinor : "33"
|
||||||
|
MemoryType : Application # Application / System / Base
|
||||||
|
HandleTableSize: 512
|
||||||
|
IORegisterMapping:
|
||||||
|
- 1ff50000-1ff57fff
|
||||||
|
- 1ff70000-1ff77fff
|
||||||
|
MemoryMapping:
|
||||||
|
- 1f000000-1f5fffff:r
|
||||||
|
SystemCallAccess:
|
||||||
|
ArbitrateAddress: 34
|
||||||
|
Break: 60
|
||||||
|
CancelTimer: 28
|
||||||
|
ClearEvent: 25
|
||||||
|
ClearTimer: 29
|
||||||
|
CloseHandle: 35
|
||||||
|
ConnectToPort: 45
|
||||||
|
ControlMemory: 1
|
||||||
|
CreateAddressArbiter: 33
|
||||||
|
CreateEvent: 23
|
||||||
|
CreateMemoryBlock: 30
|
||||||
|
CreateMutex: 19
|
||||||
|
CreateSemaphore: 21
|
||||||
|
CreateThread: 8
|
||||||
|
CreateTimer: 26
|
||||||
|
DuplicateHandle: 39
|
||||||
|
ExitProcess: 3
|
||||||
|
ExitThread: 9
|
||||||
|
GetCurrentProcessorNumber: 17
|
||||||
|
GetHandleInfo: 41
|
||||||
|
GetProcessId: 53
|
||||||
|
GetProcessIdOfThread: 54
|
||||||
|
GetProcessIdealProcessor: 6
|
||||||
|
GetProcessInfo: 43
|
||||||
|
GetResourceLimit: 56
|
||||||
|
GetResourceLimitCurrentValues: 58
|
||||||
|
GetResourceLimitLimitValues: 57
|
||||||
|
GetSystemInfo: 42
|
||||||
|
GetSystemTick: 40
|
||||||
|
GetThreadContext: 59
|
||||||
|
GetThreadId: 55
|
||||||
|
GetThreadIdealProcessor: 15
|
||||||
|
GetThreadInfo: 44
|
||||||
|
GetThreadPriority: 11
|
||||||
|
MapMemoryBlock: 31
|
||||||
|
OutputDebugString: 61
|
||||||
|
QueryMemory: 2
|
||||||
|
ReleaseMutex: 20
|
||||||
|
ReleaseSemaphore: 22
|
||||||
|
SendSyncRequest1: 46
|
||||||
|
SendSyncRequest2: 47
|
||||||
|
SendSyncRequest3: 48
|
||||||
|
SendSyncRequest4: 49
|
||||||
|
SendSyncRequest: 50
|
||||||
|
SetThreadPriority: 12
|
||||||
|
SetTimer: 27
|
||||||
|
SignalEvent: 24
|
||||||
|
SleepThread: 10
|
||||||
|
UnmapMemoryBlock: 32
|
||||||
|
WaitSynchronization1: 36
|
||||||
|
WaitSynchronizationN: 37
|
||||||
|
InterruptNumbers:
|
||||||
|
ServiceAccessControl:
|
||||||
|
- APT:U
|
||||||
|
- $hioFIO
|
||||||
|
- $hostio0
|
||||||
|
- $hostio1
|
||||||
|
- ac:u
|
||||||
|
- boss:U
|
||||||
|
- cam:u
|
||||||
|
- cecd:u
|
||||||
|
- cfg:u
|
||||||
|
- dlp:FKCL
|
||||||
|
- dlp:SRVR
|
||||||
|
- dsp::DSP
|
||||||
|
- frd:u
|
||||||
|
- fs:USER
|
||||||
|
- gsp::Gpu
|
||||||
|
- hid:USER
|
||||||
|
- http:C
|
||||||
|
- mic:u
|
||||||
|
- ndm:u
|
||||||
|
- news:u
|
||||||
|
- nwm::UDS
|
||||||
|
- ptm:u
|
||||||
|
- pxi:dev
|
||||||
|
- soc:U
|
||||||
|
- ssl:C
|
||||||
|
- y2r:u
|
||||||
|
- ldr:ro
|
||||||
|
- ir:USER
|
||||||
|
|
||||||
|
|
||||||
|
SystemControlInfo:
|
||||||
|
SaveDataSize: 0KB # It doesn't use any save data.
|
||||||
|
RemasterVersion: 2
|
||||||
|
StackSize: 0x40000
|
||||||
|
# JumpId: 0
|
||||||
|
Dependency:
|
||||||
|
ac: 0x0004013000002402L
|
||||||
|
am: 0x0004013000001502L
|
||||||
|
boss: 0x0004013000003402L
|
||||||
|
camera: 0x0004013000001602L
|
||||||
|
cecd: 0x0004013000002602L
|
||||||
|
cfg: 0x0004013000001702L
|
||||||
|
codec: 0x0004013000001802L
|
||||||
|
csnd: 0x0004013000002702L
|
||||||
|
dlp: 0x0004013000002802L
|
||||||
|
dsp: 0x0004013000001a02L
|
||||||
|
friends: 0x0004013000003202L
|
||||||
|
gpio: 0x0004013000001b02L
|
||||||
|
gsp: 0x0004013000001c02L
|
||||||
|
hid: 0x0004013000001d02L
|
||||||
|
http: 0x0004013000002902L
|
||||||
|
i2c: 0x0004013000001e02L
|
||||||
|
ir: 0x0004013000003302L
|
||||||
|
mcu: 0x0004013000001f02L
|
||||||
|
mic: 0x0004013000002002L
|
||||||
|
ndm: 0x0004013000002b02L
|
||||||
|
news: 0x0004013000003502L
|
||||||
|
nim: 0x0004013000002c02L
|
||||||
|
nwm: 0x0004013000002d02L
|
||||||
|
pdn: 0x0004013000002102L
|
||||||
|
ps: 0x0004013000003102L
|
||||||
|
ptm: 0x0004013000002202L
|
||||||
|
ro: 0x0004013000003702L
|
||||||
|
socket: 0x0004013000002e02L
|
||||||
|
spi: 0x0004013000002302L
|
||||||
|
ssl: 0x0004013000002f02L
|
@ -17,6 +17,8 @@
|
|||||||
#include "starlight/ui/Button.h"
|
#include "starlight/ui/Button.h"
|
||||||
#include "starlight/ui/TextBox.h"
|
#include "starlight/ui/TextBox.h"
|
||||||
#include "starlight/ui/Label.h"
|
#include "starlight/ui/Label.h"
|
||||||
|
#include "starlight/ui/Image.h"
|
||||||
|
#include "starlight/ui/DebugConsole.h"
|
||||||
|
|
||||||
#include "starlight/dialog/Backdrop.h"
|
#include "starlight/dialog/Backdrop.h"
|
||||||
#include "starlight/dialog/MessageBox.h"
|
#include "starlight/dialog/MessageBox.h"
|
||||||
@ -38,7 +40,11 @@ using starlight::util::Path;
|
|||||||
using starlight::Application;
|
using starlight::Application;
|
||||||
|
|
||||||
void Core::Init() {
|
void Core::Init() {
|
||||||
//consoleInit(GFX_TOP, consoleGetDefault());
|
/*clearColor = Color(0,0,0.5);
|
||||||
|
auto img = touchScreen->AddNew<sl::ui::Image>(Vector2(32, 32), "sdmc:/snes9x_3ds_top.png");
|
||||||
|
auto lbl = touchScreen->AddNew<sl::ui::Label>(VRect(0,0,320,240));
|
||||||
|
lbl->SetText("text go here\ntest test test\nnickelpickle");
|
||||||
|
return;*/
|
||||||
|
|
||||||
auto container = std::make_shared<sl::ui::ScrollField>(VRect(0,0,320-0,240-0));
|
auto container = std::make_shared<sl::ui::ScrollField>(VRect(0,0,320-0,240-0));
|
||||||
touchScreen->Add(container);
|
touchScreen->Add(container);
|
||||||
@ -55,11 +61,20 @@ void Core::Init() {
|
|||||||
// assemble and open a basic form
|
// assemble and open a basic form
|
||||||
auto form = std::make_shared<sl::ui::Form>(true);
|
auto form = std::make_shared<sl::ui::Form>(true);
|
||||||
|
|
||||||
auto label = std::make_shared<sl::ui::Label>(VRect(0,0,320,0));
|
auto tbtn = form->touchScreen->AddNew<sl::ui::Button>(VRect(4, 28, 80, 24));
|
||||||
|
tbtn->SetText("print something");
|
||||||
|
tbtn->eOnTap = [](auto& btn){
|
||||||
|
printf("pickles!\n");
|
||||||
|
};
|
||||||
|
|
||||||
|
/*auto label = std::make_shared<sl::ui::Label>(VRect(0,0,320,0));
|
||||||
label->textConfig->justification = Vector2::half;
|
label->textConfig->justification = Vector2::half;
|
||||||
label->autoSizeV = true;
|
label->autoSizeV = true;
|
||||||
label->SetText("This is a form, coming in and nuking the non-form UI elements. Whoops.");
|
label->SetText("This is a form, coming in and nuking the non-form UI elements. Whoops.");
|
||||||
form->touchScreen->Add(label);
|
form->touchScreen->Add(label);*/
|
||||||
|
|
||||||
|
//auto console = form->topScreen->AddNew<sl::ui::DebugConsole>(VRect::topScreen);
|
||||||
|
//console->Start();
|
||||||
|
|
||||||
auto xbtn = std::make_shared<sl::ui::Button>(VRect(320-96,28,32,24));
|
auto xbtn = std::make_shared<sl::ui::Button>(VRect(320-96,28,32,24));
|
||||||
xbtn->eOnTap = [](auto& btn){
|
xbtn->eOnTap = [](auto& btn){
|
||||||
@ -68,13 +83,13 @@ void Core::Init() {
|
|||||||
xbtn->SetText("(exit)");
|
xbtn->SetText("(exit)");
|
||||||
form->touchScreen->Add(xbtn);
|
form->touchScreen->Add(xbtn);
|
||||||
|
|
||||||
auto tlbl = std::make_shared<sl::ui::Label>(VRect(2, 2, 396, 0));
|
/*auto tlbl = std::make_shared<sl::ui::Label>(VRect(2, 2, 396, 0));
|
||||||
tlbl->autoSizeV = true;
|
tlbl->autoSizeV = true;
|
||||||
tlbl->SetPreset("normal.16");
|
tlbl->SetPreset("normal.16");
|
||||||
tlbl->textConfig->justification = Vector2::zero;
|
tlbl->textConfig->justification = Vector2::zero;
|
||||||
tlbl->textConfig->borderColor = Color::black;
|
tlbl->textConfig->borderColor = Color::black;
|
||||||
tlbl->SetText("3DS:~# sudo make me a sandwich_");
|
tlbl->SetText("3DS:~# sudo make me a sandwich_");
|
||||||
form->topScreen->Add(tlbl);
|
form->topScreen->Add(tlbl);*/
|
||||||
|
|
||||||
auto tb = std::make_shared<sl::ui::TextBox>(VRect(0, 64, 320, 24).Expand(-16, 0));
|
auto tb = std::make_shared<sl::ui::TextBox>(VRect(0, 64, 320, 24).Expand(-16, 0));
|
||||||
tb->text = "Single-line TextBox widget example. Tap me!";
|
tb->text = "Single-line TextBox widget example. Tap me!";
|
||||||
@ -118,7 +133,7 @@ void Core::Init() {
|
|||||||
cc.Json()["panini"] = "yes please!";
|
cc.Json()["panini"] = "yes please!";
|
||||||
cc.Save();
|
cc.Save();
|
||||||
|
|
||||||
//
|
//*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::End() {
|
void Core::End() {
|
||||||
|
BIN
testbed/starlight-testbed.cia
Normal file
BIN
testbed/starlight-testbed.cia
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user