initial draw

This commit is contained in:
vrd
2022-12-18 00:35:01 +02:00
parent 0da0f98dc9
commit 5e9d2d8501
4 changed files with 43 additions and 11 deletions
+2 -1
View File
@@ -8,10 +8,11 @@ using std::cout;
int main() int main()
{ {
setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
initscr(); /* Start curses mode */ initscr(); /* Start curses mode */
noecho(); noecho();
cbreak(); /* get input instantly */ cbreak(); /* get input instantly */
refresh(); /* if not present the first real refresh is missed */ wnoutrefresh(stdscr); /* if not present the first real refresh is missed */
/*Tree test1("Dechkovi"); //addTree Dechkovi addTree Karamanovi load 0 load 1 (to work with these example trees) /*Tree test1("Dechkovi"); //addTree Dechkovi addTree Karamanovi load 0 load 1 (to work with these example trees)
Tree test2("Karamanovi"); Tree test2("Karamanovi");
+11
View File
@@ -158,3 +158,14 @@ void Person::print()const
/* cout << '\n'; */ /* cout << '\n'; */
} }
WINDOW* Person::createPad()const
{
U16 width = name_.size() + 4;
WINDOW* pad = newpad(5, width);
box(pad, 5, width);
mvwaddstr(pad, 2, 2, name_.data());
return pad;
}
+3
View File
@@ -2,6 +2,7 @@
#include <string> #include <string>
#include <fstream> #include <fstream>
#include <ncursesw/ncurses.h>
#include "common/basicTypes.h" #include "common/basicTypes.h"
struct EventTime struct EventTime
@@ -33,6 +34,8 @@ public:
void rename(const char* newName); void rename(const char* newName);
void print()const; void print()const;
WINDOW* createPad()const;
friend class Tree; friend class Tree;
private: private:
+27 -10
View File
@@ -8,7 +8,7 @@ using std::cout;
Tree::Tree() Tree::Tree()
: treeName("Unnamed") : treeName("Unnamed")
, numPeople(0) , numPeople(0)
{} {}
@@ -34,7 +34,7 @@ Tree Tree::operator+ (const Tree& other)//
result.numPeople = idCounter; //The number of members the resulting tree has result.numPeople = idCounter; //The number of members the resulting tree has
result.people.resize(result.numPeople); result.people.resize(result.numPeople);
result.people = people; //Adds the members of the I tree to the resulting tree result.people = people; //Adds the members of the I tree to the resulting tree
for (unsigned i=0; i < other.numPeople; ++i) //Adds the members of the II tree to the resulting tree for (unsigned i=0; i < other.numPeople; ++i) //Adds the members of the II tree to the resulting tree
{ {
if (newId[i] >= numPeople) if (newId[i] >= numPeople)
@@ -48,14 +48,14 @@ Tree Tree::operator+ (const Tree& other)//
for (unsigned i=0; i < other.numPeople; ++i) //Adds the relatives from the II tree for (unsigned i=0; i < other.numPeople; ++i) //Adds the relatives from the II tree
{ {
if (newId[i] >= numPeople) //If the member is found in the II tree but not in the I if (newId[i] >= numPeople) //If the member is found in the II tree but not in the I
{ {
result.relatives.push(other.relatives[i]); result.relatives.push(other.relatives[i]);
result.relations.push(other.relations[i]); result.relations.push(other.relations[i]);
} }
else //If he's found in both else //If he's found in both
{ {
for (unsigned j = 0; j < other.people[i].numRel_; ++j) //Adds the number of relatives from the II to the number in the I for (unsigned j = 0; j < other.people[i].numRel_; ++j) //Adds the number of relatives from the II to the number in the I
{ {
if(newId[other.relatives[i][j]] > numPeople) if(newId[other.relatives[i][j]] > numPeople)
++result.people[newId[i]].numRel_; ++result.people[newId[i]].numRel_;
@@ -66,7 +66,7 @@ Tree Tree::operator+ (const Tree& other)//
result.relatives[newId[i]] = relatives[newId[i]]; result.relatives[newId[i]] = relatives[newId[i]];
result.relations[newId[i]] = relations[newId[i]]; result.relations[newId[i]] = relations[newId[i]];
result.relatives[newId[i]] += other.relatives[i]; //The relatives from the II tree result.relatives[newId[i]] += other.relatives[i]; //The relatives from the II tree
result.relations[newId[i]] += other.relations[i]; result.relations[newId[i]] += other.relations[i];
} }
} }
@@ -95,7 +95,7 @@ Tree& Tree::operator+=(const Tree& other)
} }
people.resize(idCounter); people.resize(idCounter);
for (unsigned i = 0; i < other.numPeople; ++i) //Adds the member personal data of II tree to I tree for (unsigned i = 0; i < other.numPeople; ++i) //Adds the member personal data of II tree to I tree
{ {
if (newId[i] >= numPeople) if (newId[i] >= numPeople)
people.push(other.people[i]); people.push(other.people[i]);
@@ -103,7 +103,7 @@ Tree& Tree::operator+=(const Tree& other)
relatives.resize(idCounter); relatives.resize(idCounter);
relations.resize(idCounter); relations.resize(idCounter);
for (unsigned i = 0; i < other.numPeople; ++i) //Merges the relative data for (unsigned i = 0; i < other.numPeople; ++i) //Merges the relative data
{ {
if (newId[i] >= numPeople) if (newId[i] >= numPeople)
{ {
@@ -114,7 +114,7 @@ Tree& Tree::operator+=(const Tree& other)
} }
else //If the member is present in both trees else //If the member is present in both trees
{ {
for (unsigned j = 0; j < other.people[i].numRel_; ++j) //Adds the number of relatives from the II to the number in the I for (unsigned j = 0; j < other.people[i].numRel_; ++j) //Adds the number of relatives from the II to the number in the I
{ {
if (newId[other.relatives[i][j]] >= numPeople) if (newId[other.relatives[i][j]] >= numPeople)
++people[newId[i]].numRel_; ++people[newId[i]].numRel_;
@@ -160,7 +160,7 @@ void Tree::rename(const char* newName)
unsigned Tree::findId(const char* name, const short year, const unsigned char month, const unsigned char day)const unsigned Tree::findId(const char* name, const short year, const unsigned char month, const unsigned char day)const
{ {
//TODO //TODO
//Person sought(name, day, month, year,) //Person sought(name, day, month, year,)
for (unsigned i = 0; i < numPeople; ++i) for (unsigned i = 0; i < numPeople; ++i)
{ {
@@ -378,7 +378,7 @@ void Tree::removeRelation(const char* firstName, const char* secondName)
void Tree::removePerson(const unsigned id) void Tree::removePerson(const unsigned id)
{ {
unsigned relId; //Íoìåð íà òåêóùèÿ ðîäíèíàòà unsigned relId; //Íoìåð íà òåêóùèÿ ðîäíèíàòà
for (unsigned i = 0; i < people[id].numRel_; ++i) //Ïðåìàõâàò ñå âðúçêèòå íà ÷ëåíà çà ïðåìàõâàíå for (unsigned i = 0; i < people[id].numRel_; ++i) //Ïðåìàõâàò ñå âðúçêèòå íà ÷ëåíà çà ïðåìàõâàíå
{ {
relId = relatives[id][i]; relId = relatives[id][i];
@@ -442,6 +442,23 @@ void Tree::removeRelation(const unsigned firstId, const unsigned secondId)
void Tree::draw() const void Tree::draw() const
{ {
WINDOW* father = people[0].createPad();
WINDOW* mother = people[1].createPad();
U16 fw = getmaxx(father); /* return size, not coords */
U16 fh = getmaxy(father);
U16 mw = getmaxx(mother);
U16 mh = getmaxy(mother);
U16 drawX = (COLS - fw - mw) / 2;
pnoutrefresh(father, 0, 0,
1, drawX,
1 +fh-1, drawX + fw-1);
/* pnoutrefresh(mother, 0, 0, 1, d */
doupdate();
getch();
} }