add first code
This commit is contained in:
parent
f207af2c4a
commit
8bf49928e5
5 changed files with 181 additions and 1 deletions
66
inc/col.h
Normal file
66
inc/col.h
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
|
||||||
|
class Node;
|
||||||
|
typedef void (*drawfun_t)(int offset, int size, Node*);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void draw_menu(int, int, Node*);
|
||||||
|
|
||||||
|
class Drawable{
|
||||||
|
public:
|
||||||
|
const int minsize;
|
||||||
|
const int maxsize;
|
||||||
|
drawfun_t render;
|
||||||
|
Drawable(drawfun_t fun, int min = 0, int max=~0): minsize(min), maxsize(max), render(fun){
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Node{
|
||||||
|
private:
|
||||||
|
Node* parent_ = 0;
|
||||||
|
Node* child_ = 0;
|
||||||
|
Node* next_ = 0;
|
||||||
|
void addNodes(bool b){
|
||||||
|
}
|
||||||
|
template<class ...Us>
|
||||||
|
void addNodes(bool b, Node* n, Us ... ns){
|
||||||
|
next_ = n;
|
||||||
|
next_->parent_ = parent_;
|
||||||
|
next_->addNodes(!b,ns...);
|
||||||
|
}
|
||||||
|
public:
|
||||||
|
Drawable view;
|
||||||
|
const char* title_ = 0;
|
||||||
|
Node(): next_(nullptr), child_(nullptr), parent_(nullptr), view(nullptr){
|
||||||
|
}
|
||||||
|
Node(const char* t, drawfun_t fun=draw_menu) : title_(t), view(fun), next_(nullptr), child_(nullptr), parent_(nullptr){
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename ... Args>
|
||||||
|
Node(const char* t, Node* n, Args ... ns) : title_(t), view(nullptr){
|
||||||
|
child_ = n;
|
||||||
|
n->parent_=this;
|
||||||
|
child_->addNodes(true,ns...);
|
||||||
|
}
|
||||||
|
|
||||||
|
void p(int i);
|
||||||
|
};
|
||||||
|
|
||||||
|
class Value: public Node{
|
||||||
|
public:
|
||||||
|
const char* header;
|
||||||
|
int state;
|
||||||
|
Value(const char* t, int val, drawfun_t fun): Node(t, fun), header(t), state(val){
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Layout{
|
||||||
|
private:
|
||||||
|
int menuthrs_;
|
||||||
|
public:
|
||||||
|
Layout(int max) : menuthrs_(max){
|
||||||
|
|
||||||
|
}
|
||||||
|
//slots
|
||||||
|
};
|
||||||
11
inc/hal.h
Normal file
11
inc/hal.h
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
|
||||||
|
void print(const char* str);
|
||||||
|
void print(int str);
|
||||||
|
|
||||||
|
#ifndef LINUX
|
||||||
|
|
||||||
|
void * operator new(unsigned int size);
|
||||||
|
void operator delete(void * ptr);
|
||||||
|
|
||||||
|
#endif
|
||||||
29
src/col.cpp
Normal file
29
src/col.cpp
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
|
||||||
|
#include "hal.h"
|
||||||
|
#include "col.h"
|
||||||
|
|
||||||
|
|
||||||
|
void Node::p(int i){
|
||||||
|
for(int j = 0; j < i; j++){ print("__"); }
|
||||||
|
if(title_)
|
||||||
|
print(title_);
|
||||||
|
else
|
||||||
|
print("--");
|
||||||
|
|
||||||
|
if(view.render)
|
||||||
|
view.render(0,0,this);
|
||||||
|
|
||||||
|
print("\n");
|
||||||
|
|
||||||
|
if(child_)
|
||||||
|
child_->p(i+1);
|
||||||
|
|
||||||
|
if(next_)
|
||||||
|
next_->p(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void draw_menu(int offset, int size, Node* val){
|
||||||
|
|
||||||
|
}
|
||||||
35
src/hal.cpp
Normal file
35
src/hal.cpp
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
|
||||||
|
#ifdef LINUX
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
void print(const char* str){
|
||||||
|
std::cout << str << std::flush;
|
||||||
|
}
|
||||||
|
void print(int str){
|
||||||
|
std::cout << str << std::flush;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
void * operator new(unsigned int size)
|
||||||
|
{
|
||||||
|
return malloc(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator delete(void * ptr)
|
||||||
|
{
|
||||||
|
free(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void print(const char* str){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void print(int str){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
41
src/main.cpp
41
src/main.cpp
|
|
@ -1,6 +1,45 @@
|
||||||
|
|
||||||
|
|
||||||
|
#include "hal.h"
|
||||||
|
#include "col.h"
|
||||||
|
|
||||||
|
void draw_foo(int offset, int size, Node* ptr){
|
||||||
|
Value* val = (Value*) ptr;
|
||||||
|
print("\t|");
|
||||||
|
if(ptr)
|
||||||
|
print(ptr->title_);
|
||||||
|
//print(ptr->state);
|
||||||
|
print("|");
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw_blub(int offset, int size, Node* val){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
|
||||||
return 0;
|
Node root(nullptr,
|
||||||
|
new Node("foo",
|
||||||
|
new Node("foo",
|
||||||
|
new Node("foo", new Value("FOO",5,draw_foo))
|
||||||
|
),
|
||||||
|
new Node("foo", new Value("FOO",5,draw_foo)),
|
||||||
|
new Node("foo", new Value("FOO",5,draw_foo))
|
||||||
|
),
|
||||||
|
new Node("blub", new Value("BLUB",5,draw_blub)),
|
||||||
|
new Node("blub", new Value("BLUB",5,draw_blub)),
|
||||||
|
new Node("blub", new Value("BLUB",5,draw_blub))
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
root.p(0);
|
||||||
|
|
||||||
|
|
||||||
|
// 128 x 32
|
||||||
|
Layout l(64);
|
||||||
|
|
||||||
|
//build tree
|
||||||
|
//walk tree + allocate slots
|
||||||
|
//position slots
|
||||||
|
//render
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue