terminal_getSize
This commit is contained in:
parent
54ba772395
commit
44fb1750ec
@ -7,7 +7,7 @@ void Canvas_freeMembers(void* _self){
|
|||||||
Autoarr_freeWithoutMembers(self->children, true);
|
Autoarr_freeWithoutMembers(self->children, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Canvas_draw(UIElement* _self, Rect place){
|
void Canvas_draw(UIElement* _self, DrawingArea place){
|
||||||
Canvas* self=(Canvas*)_self;
|
Canvas* self=(Canvas*)_self;
|
||||||
Autoarr_foreach(self->children, ch, ({
|
Autoarr_foreach(self->children, ch, ({
|
||||||
UIElement_draw((UIElement*)ch,place);
|
UIElement_draw((UIElement*)ch,place);
|
||||||
|
|||||||
@ -6,7 +6,7 @@ void TextBlock_freeMembers(void* _self){
|
|||||||
free(self->text.ptr);
|
free(self->text.ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextBlock_draw(UIElement* _self, Rect place){
|
void TextBlock_draw(UIElement* _self, DrawingArea place){
|
||||||
TextBlock* self=(TextBlock*)_self;
|
TextBlock* self=(TextBlock*)_self;
|
||||||
fputs(self->text.ptr, stdout);
|
fputs(self->text.ptr, stdout);
|
||||||
}
|
}
|
||||||
@ -14,8 +14,8 @@ void TextBlock_draw(UIElement* _self, Rect place){
|
|||||||
kt_define(TextBlock, TextBlock_freeMembers, NULL);
|
kt_define(TextBlock, TextBlock_freeMembers, NULL);
|
||||||
|
|
||||||
TextBlock* TextBlock_create(string text){
|
TextBlock* TextBlock_create(string text){
|
||||||
TextBlock* TextBlock=malloc(sizeof(TextBlock));
|
TextBlock* textBlock=malloc(sizeof(TextBlock));
|
||||||
TextBlock->base=__UIElement_createDefault(ktid_name(TextBlock), TextBlock_draw);
|
textBlock->base=__UIElement_createDefault(ktid_name(TextBlock), TextBlock_draw);
|
||||||
TextBlock->text=string_copy(text);
|
textBlock->text=string_copy(text);
|
||||||
return TextBlock;
|
return textBlock;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
#include "../kerep/src/Filesystem/filesystem.h"
|
#include "../kerep/src/Filesystem/filesystem.h"
|
||||||
#include "tui.h"
|
#include "tui.h"
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
Maybe tryReadFile(char* filePath){
|
Maybe tryReadFile(char* filePath){
|
||||||
if(!file_exists(filePath))
|
if(!file_exists(filePath))
|
||||||
@ -31,8 +32,13 @@ i32 main(const i32 argc, const char* const* argv){
|
|||||||
Canvas* mainCanvas=Canvas_create();
|
Canvas* mainCanvas=Canvas_create();
|
||||||
TextBlock* testTextBlock=TextBlock_create(string_fromCptr("some example text"));
|
TextBlock* testTextBlock=TextBlock_create(string_fromCptr("some example text"));
|
||||||
Canvas_addChild(mainCanvas, (UIElement*)testTextBlock);
|
Canvas_addChild(mainCanvas, (UIElement*)testTextBlock);
|
||||||
UIElement_draw(mainCanvas, ((Rect){.x=-1, .y=-1, .h=-1, .w=-1}));
|
UIElement_draw(mainCanvas, ((DrawingArea){.x=-1, .y=-1, .h=-1, .w=-1}));
|
||||||
UIElement_destroy((UIElement*)mainCanvas);
|
UIElement_destroy((UIElement*)mainCanvas);
|
||||||
|
|
||||||
|
TerminalSize tsize=terminal_getSize();
|
||||||
|
kprintf("rows: %u culumns: %u\n", tsize.rows, tsize.cols);
|
||||||
|
fflush(stdout);
|
||||||
|
|
||||||
kt_free();
|
kt_free();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
23
src/terminal.c
Normal file
23
src/terminal.c
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#include "terminal.h"
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
void terminal_moveCursor(u16 row, u16 column){
|
||||||
|
printf("\e[%u;%uf",row,column);
|
||||||
|
}
|
||||||
|
|
||||||
|
void terminal_clear() {
|
||||||
|
printf("\e[2j");
|
||||||
|
}
|
||||||
|
|
||||||
|
TerminalSize terminal_getSize(){
|
||||||
|
struct winsize w={0,0,0,0};
|
||||||
|
if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &w)!=0)
|
||||||
|
kprintf("\e[93mterminal_getSize() error\n");
|
||||||
|
TerminalSize tsize={
|
||||||
|
.cols=w.ws_col,
|
||||||
|
.rows=w.ws_row
|
||||||
|
};
|
||||||
|
return tsize;
|
||||||
|
}
|
||||||
21
src/terminal.h
Normal file
21
src/terminal.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#if __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "../kerep/src/base/base.h"
|
||||||
|
|
||||||
|
void terminal_moveCursor(u16 row, u16 column);
|
||||||
|
void terminal_clear();
|
||||||
|
|
||||||
|
STRUCT(TerminalSize,
|
||||||
|
u16 rows;
|
||||||
|
u16 cols;
|
||||||
|
)
|
||||||
|
|
||||||
|
TerminalSize terminal_getSize();
|
||||||
|
|
||||||
|
#if __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -1,10 +1,10 @@
|
|||||||
#include "tui.h"
|
#include "tui.h"
|
||||||
|
|
||||||
kt_define(Rect, NULL, NULL);
|
kt_define(DrawingArea, NULL, NULL);
|
||||||
kt_define(UIBorderParams, NULL, NULL);
|
kt_define(UIBorderParams, NULL, NULL);
|
||||||
|
|
||||||
void kt_initScolteTypes(){
|
void kt_initScolteTypes(){
|
||||||
kt_register(Rect);
|
kt_register(DrawingArea);
|
||||||
kt_register(UIBorderParams);
|
kt_register(UIBorderParams);
|
||||||
kt_register(UIElement);
|
kt_register(UIElement);
|
||||||
kt_register(Canvas);
|
kt_register(Canvas);
|
||||||
|
|||||||
@ -8,6 +8,7 @@ extern "C" {
|
|||||||
#include "../kerep/src/String/string.h"
|
#include "../kerep/src/String/string.h"
|
||||||
#include "../kerep/src/kprint/kprint_colors.h"
|
#include "../kerep/src/kprint/kprint_colors.h"
|
||||||
#include "../kerep/src/Array/Array.h"
|
#include "../kerep/src/Array/Array.h"
|
||||||
|
#include "terminal.h"
|
||||||
|
|
||||||
|
|
||||||
/// initializes type descriptors for this project's types
|
/// initializes type descriptors for this project's types
|
||||||
@ -42,8 +43,7 @@ PACKED_ENUM(UIBorderType,
|
|||||||
// Small structs //
|
// Small structs //
|
||||||
//////////////////////////////////////
|
//////////////////////////////////////
|
||||||
|
|
||||||
/// Rectangle
|
STRUCT(DrawingArea,
|
||||||
STRUCT(Rect,
|
|
||||||
/* right-top corner */
|
/* right-top corner */
|
||||||
u16 x; u16 y;
|
u16 x; u16 y;
|
||||||
u16 w; u16 h;
|
u16 w; u16 h;
|
||||||
@ -62,7 +62,7 @@ STRUCT(UIBorderParams,
|
|||||||
|
|
||||||
typedef struct UIElement UIElement;
|
typedef struct UIElement UIElement;
|
||||||
typedef UIElement* UIElementPtr;
|
typedef UIElement* UIElementPtr;
|
||||||
typedef void (*UIElement_draw_t)(UIElement* self,Rect place);
|
typedef void (*UIElement_draw_t)(UIElement* self,DrawingArea place);
|
||||||
|
|
||||||
#define UIElement_stretch (u16)-1
|
#define UIElement_stretch (u16)-1
|
||||||
|
|
||||||
|
|||||||
@ -13,5 +13,5 @@ if [ ! -f "$OBJDIR/libs/kerep.a" ] || [ -f .rebuild_kerep.tmp ]; then
|
|||||||
|
|
||||||
cp kerep/bin/kerep.a $OBJDIR/libs/
|
cp kerep/bin/kerep.a $OBJDIR/libs/
|
||||||
myprint "${GREEN}copied ${CYAN}kerep.a"
|
myprint "${GREEN}copied ${CYAN}kerep.a"
|
||||||
rm .rebuild_kerep.tmp
|
rm -f .rebuild_kerep.tmp
|
||||||
fi
|
fi
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user