Cleaning print.cpp (i.e. removing all direct calls to the Console_ implementation).

This commit is contained in:
Némo 2017-02-12 23:22:31 +01:00
parent e37b2a0af7
commit 926880df9a
3 changed files with 17 additions and 207 deletions

View File

@ -748,7 +748,6 @@ void prime(void);
// primetab.cpp
// print.cpp
//char* get_tex_flag_address();
void print(U *p);
void printline(U *p);
void print_subexpr(U *p);

View File

@ -10,8 +10,6 @@
#define menu_free_item(item) if(item) free(item->str)
extern int* get_tex_flag_address();
int test;
void draw_menu(Menu* menu)
@ -87,22 +85,22 @@ void draw_menu(Menu* menu)
void menu_setup()
{
int number = 2;
int number = 1;
Menu menu;
menu.items = malloc(sizeof(Menu_Item*) * number);
menu.items[0] = menu_create_item("About", FUNCTION_CALL, menu_about, (void*)NULL);
menu.items[1] = menu_create_item("Pretty Print", CHECK_BOX, get_tex_flag_address(), save_config);
if(menu.items[0] && menu.items[1]) menu.items_number = number;
//menu.items[1] = menu_create_item("Pretty Print", CHECK_BOX, get_tex_flag_address(), save_config);
if(menu.items[0]/* && menu.items[1]*/) menu.items_number = number;
else {
menu_free_item(menu.items[0]);
menu_free_item(menu.items[1]);
//menu_free_item(menu.items[1]);
}
draw_menu(&menu);
menu_free_item(menu.items[0]);
menu_free_item(menu.items[1]);
//menu_free_item(menu.items[1]);
free(menu.items);
}
@ -146,11 +144,11 @@ Menu_Item* menu_create_item(const char* str, Menu_Item_Type type, void* other, v
void save_config()
{
memory_save(CONFIG_FILE, (int*)get_tex_flag_address(), 4);
//memory_save(CONFIG_FILE, (int*)get_tex_flag_address(), 4);
}
void load_config()
{
if(memory_exists(CONFIG_FILE))
*(int*)(get_tex_flag_address()) = *((int*)memory_load(CONFIG_FILE));
//if(memory_exists(CONFIG_FILE))
// *(int*)(get_tex_flag_address()) = *((int*)memory_load(CONFIG_FILE));
}

View File

@ -1,32 +1,13 @@
// tty style printing
#include "stdafx.h"
#include "defs.h"
#include "console.h"
#include "tex/TeX.h"
#define TEX 1
#define MAX_TEX_WIDTH 110
#define MAX_TEX_HEIGHT 50
//char* get_tex_flag_address();
int tex_flag = 1;
int out_index, out_length;
char *out_str;
static int char_count, last_char;
char *power_str = "^";
extern "C"{
int* get_tex_flag_address()
{
return &tex_flag;
}
}
void
print(U *p)
{
@ -36,23 +17,7 @@ print(U *p)
void
printline(U *p)
{
int old_tex_flag = tex_flag;
#ifdef TEX
int width, height, baseline;
char* edit_line = (char*)Console_GetEditLine();
//tex_flag = 1;
#endif
print_expr(p);
#ifdef TEX
TeX_sizeComplex(edit_line, &width, &height, &baseline);
/*if(width > MAX_TEX_WIDTH || height > MAX_TEX_HEIGHT) {
tex_flag = 0;
Console_Clear_EditLine();
print_expr(p);
}*/
tex_flag = old_tex_flag;
#endif
}
void
@ -150,10 +115,6 @@ print_a_over_b(U *p)
p1 = cdr(p1);
}
//#ifdef TEX
if(tex_flag) print_str("\\frac{");
//#endif
if (n == 0)
print_char('1');
else {
@ -179,19 +140,13 @@ print_a_over_b(U *p)
}
}
//#ifdef TEX
if(tex_flag) print_str("}{");
else {
//#else
if (test_flag == 0)
print_str(" / ");
else
print_str("/");
if (test_flag == 0)
print_str(" / ");
else
print_str("/");
if (d > 1)
print_char('(');
}
//#endif
if (d > 1)
print_char('(');
flag = 0;
p1 = cdr(p);
@ -215,15 +170,6 @@ print_a_over_b(U *p)
p1 = cdr(p1);
}
//#ifdef TEX
//#else
if(!tex_flag && d > 1) //if (d > 1)
print_char(')');
if(tex_flag) print_str("}");
//#endif
restore();
}
@ -231,7 +177,6 @@ void
print_term(U *p)
{
U* p_sqrt = NULL;
int sqrt_factor_number = 0, non_sqrt_factor_number = 0, i = 0;
if (car(p) == symbol(MULTIPLY) && any_denominators(p)) {
print_a_over_b(p);
@ -248,78 +193,6 @@ print_term(U *p)
p = cdr(p);
}
#if 0
#ifdef TEX
p_sqrt = p; //temp buffer
sqrt_factor_number = 0;
non_sqrt_factor_number = 0;
//Get the number of factor which are square root of something
while(iscons(p_sqrt) || isnum(p_sqrt)){
if(caar(p_sqrt) == symbol(POWER) && equalq(caddar(p), 1, 2)) sqrt_factor_number++;
else non_sqrt_factor_number++;
p_sqrt = cdr(p_sqrt);
}
p_sqrt = p;
if(sqrt_factor_number > 1) {
//First, print the factor wich are not square root of something
if(non_sqrt_factor_number) {
//Print the first wich is not square root of something
while (iscons(p_sqrt) || isnum(p_sqrt)) {
if(!(caar(p_sqrt) == symbol(POWER) && equalq(caddar(p), 1, 2))) {
print_factor(cdar(p_sqrt));
break;
}
else p_sqrt = cdr(p_sqrt);
}
p_sqrt = cdr(p_sqrt);
i++;
//Print the other ones
while ((iscons(p_sqrt) || isnum(p_sqrt)) && i < non_sqrt_factor_number) {
if(!(caar(p_sqrt) == symbol(POWER) && equalq(caddar(p), 1, 2))){
print_multiply_sign();
print_factor(cdar(p_sqrt));
p_sqrt = cdr(p_sqrt);
i++;
}
}
}
p_sqrt = p;
i = 0;
print_str("\\sqrt{");
while (iscons(p_sqrt) || isnum(p_sqrt)) {
if(caar(p_sqrt) == symbol(POWER) && equalq(caddar(p), 1, 2)) {
print_expr(cadar(p_sqrt));
i++;
break;
}
p_sqrt = cdr(p_sqrt);
}
p_sqrt = cdr(p_sqrt);
while ((iscons(p_sqrt) || isnum(p_sqrt)) && i < sqrt_factor_number) {
if(caar(p_sqrt) == symbol(POWER) && equalq(caddar(p), 1, 2)) {
print_multiply_sign();
print_expr(cadar(p_sqrt));
i++;
p_sqrt = cdr(p_sqrt);
}
}
print_str("}");
return;
}
#endif // TeX
#endif // 0
print_factor(car(p));
p = cdr(p);
while (iscons(p)) {
@ -351,16 +224,6 @@ print_denom(U *p, int d)
if (d == 1 && !isminusone(EXPO))
print_char('(');
#ifdef TEX
if (tex_flag && equalq(EXPO, -1, 2)) {
print_str("\\sqrt{");
print_expr(BASE);
print_str("}");
restore();
return;
}
#endif
if (isfraction(BASE) || car(BASE) == symbol(ADD) || car(BASE) == symbol(MULTIPLY) || car(BASE) == symbol(POWER) || lessp(BASE, zero)) {
print_char('(');
print_expr(BASE);
@ -437,8 +300,7 @@ print_factor(U *p)
if (isminusone(caddr(p))) {
if (test_flag == 0)
if(tex_flag) print_str("\\frac{1}{");
else print_str("1 / ");
print_str("1 / ");
else {
print_str("1/");
}
@ -449,27 +311,9 @@ print_factor(U *p)
} else
print_expr(cadr(p));
if(tex_flag) print_str("}");
return;
}
#ifdef TEX
if (tex_flag && equalq(caddr(p), 1, 2)) {
print_str("\\sqrt{");
print_expr(cadr(p));
print_str("}");
return;
}
if (tex_flag && equalq(caddr(p), -1, 2)) {
print_str("\\frac{1}{\\sqrt{");
print_expr(cadr(p));
//if(caddr)
print_str("}}");
return;
}
#endif
if (isadd(cadr(p)) || caadr(p) == symbol(MULTIPLY) || caadr(p) == symbol(POWER) || isnegativenumber(cadr(p))) {
print_str("(");
print_expr(cadr(p));
@ -502,22 +346,6 @@ print_factor(U *p)
return;
}
// if (car(p) == _list) {
// print_str("{");
// p = cdr(p);
// if (iscons(p)) {
// print_expr(car(p));
// p = cdr(p);
// }
// while (iscons(p)) {
// print_str(",");
// print_expr(car(p));
// p = cdr(p);
// }
// print_str("}");
// return;
// }
if (car(p) == symbol(INDEX) && issymbol(cadr(p))) {
print_index_function(p);
return;
@ -529,10 +357,6 @@ print_factor(U *p)
}
if (iscons(p)) {
//if (car(p) == symbol(FORMAL) && cadr(p)->k == SYM) {
// print_str(((struct symbol *) cadr(p))->name);
// return;
//}
print_factor(car(p));
p = cdr(p);
print_str("(");
@ -555,17 +379,9 @@ print_factor(U *p)
if (p == symbol(DERIVATIVE))
print_char('d');
else if (p == symbol(E))
#ifdef ARM9
print_str("\235(1)");
#else
print_str("e");
#endif
else if (p == symbol(PI))
#ifdef ARM9
print_str("\233");
#else
Console_Output((const unsigned char *)"pi");
#endif
print_str("pi");
else
print_str(get_printname(p));
}
@ -643,10 +459,7 @@ print_char(int c)
{
last_char = c;
char_count++;
// if (display_flag == 1)
// displaychar(c);
// else
printchar(c);
printchar(c);
}
void