Incomplete list drawing code. More to come.
This commit is contained in:
parent
72cbed8182
commit
c754be2c9d
22
.vscode/c_cpp_properties.json
vendored
Normal file
22
.vscode/c_cpp_properties.json
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "CEdev",
|
||||||
|
"includePath": [
|
||||||
|
"${workspaceFolder}/**",
|
||||||
|
"C:/Users/kyley/Desktop/Coding/Lib/CEdev/include/**"
|
||||||
|
],
|
||||||
|
"defines": [
|
||||||
|
"_DEBUG",
|
||||||
|
"UNICODE",
|
||||||
|
"_UNICODE"
|
||||||
|
],
|
||||||
|
"windowsSdkVersion": "10.0.26100.0",
|
||||||
|
"compilerPath": "C:\\Users\\kyley\\Desktop\\Coding\\Lib\\CEdev\\bin\\ez80-clang.exe",
|
||||||
|
"cStandard": "c17",
|
||||||
|
"cppStandard": "c++17",
|
||||||
|
"intelliSenseMode": "linux-clang-x64"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version": 4
|
||||||
|
}
|
||||||
6
.vscode/settings.json
vendored
Normal file
6
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"files.associations": {
|
||||||
|
"screen.h": "c",
|
||||||
|
"getcsc.h": "c"
|
||||||
|
}
|
||||||
|
}
|
||||||
19
src/main.c
19
src/main.c
@ -1,19 +0,0 @@
|
|||||||
#include <ti/screen.h>
|
|
||||||
#include <ti/getcsc.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
/* Main function, called first */
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
/* Clear the homescreen */
|
|
||||||
os_ClrHome();
|
|
||||||
|
|
||||||
/* Print a string */
|
|
||||||
os_PutStrFull("Hello, World.");
|
|
||||||
|
|
||||||
/* Waits for a key */
|
|
||||||
while (!os_GetCSC());
|
|
||||||
|
|
||||||
/* Return 0 for success */
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
63
src/main.cpp
Normal file
63
src/main.cpp
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#include <ti/screen.h>
|
||||||
|
#include <ti/getcsc.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
void demo_func()
|
||||||
|
{
|
||||||
|
os_PutStrLine("and this is the demo func!\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
list_item modes[] = {
|
||||||
|
{ "Option 1", demo_func },
|
||||||
|
{ "Option 2", nullptr },
|
||||||
|
{ "Option 3", nullptr },
|
||||||
|
{ "Option 4", nullptr },
|
||||||
|
{ "Option 5", nullptr },
|
||||||
|
{ "Option 6", nullptr },
|
||||||
|
{ "Option 7", nullptr },
|
||||||
|
{ "Option 8", nullptr },
|
||||||
|
{ "Option 9", nullptr },
|
||||||
|
{ "Option 10", demo_func },
|
||||||
|
{ nullptr, nullptr }
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Main function, called first */
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
/* Clear the homescreen */
|
||||||
|
os_ClrHome();
|
||||||
|
|
||||||
|
list_config config;
|
||||||
|
config.start_row = 1;
|
||||||
|
config.end_row = 5;
|
||||||
|
display_list(modes, config);
|
||||||
|
|
||||||
|
/* Waits for a key */
|
||||||
|
while (!os_GetCSC());
|
||||||
|
|
||||||
|
/* Return 0 for success */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int display_list(const list_item* list, const list_config& config)
|
||||||
|
{
|
||||||
|
size_t item_count = 0;
|
||||||
|
for (size_t i = 0; true; i++)
|
||||||
|
{
|
||||||
|
const list_item& item = list[i];
|
||||||
|
if (item.display_name == nullptr) break;
|
||||||
|
item_count++;
|
||||||
|
}
|
||||||
|
if (item_count == 0) return -1; // No list to display.
|
||||||
|
|
||||||
|
uint8_t max_on_screen = MIN(config.end_row - config.start_row, 10 - config.start_row) + 1;
|
||||||
|
uint24_t offset = 0;
|
||||||
|
for (size_t i = 0, j = offset; i < max_on_screen && j < item_count; i++, j++)
|
||||||
|
{
|
||||||
|
os_SetCursorPos(config.start_row + i, 0);
|
||||||
|
os_PutStrLine(list[j].display_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
20
src/main.h
Normal file
20
src/main.h
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
#define MAX(a, b) (a > b ? a : b)
|
||||||
|
#define MIN(a, b) (a < b ? a : b)
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
const char* display_name;
|
||||||
|
void (*select_func)();
|
||||||
|
} list_item;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint8_t start_row;
|
||||||
|
uint8_t end_row;
|
||||||
|
} list_config;
|
||||||
|
|
||||||
|
int display_list(const list_item* list, const list_config& config);
|
||||||
Loading…
x
Reference in New Issue
Block a user