fx9860g and fxcg50 2D math rendering library with support for TeX syntax.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lephenixnoir af424d1baa update documentation after writing the wiki 3 ay önce
4 ay önce
3 ay önce
3 ay önce
3 ay önce
4 ay önce
3 ay önce
3 ay önce
3 ay önce
4 ay önce
4 ay önce
4 ay önce

# Natural display engine with TeX syntax for fx-9860G and fx-CG 50

This library is a customizable 2D math rendering tool for calculators. It can be used to render 2D formulae, either from an existing structure or TeX syntax.

\frac{x^7 \left[X,Y\right] + 3\left|\frac{A}{B}\right>}
{\left\{\frac{a_k+b_k}{k!}\right\}^5}
+ \int_a^b \frac{\left(b-t\right)^{n+1}}{n!} dt
+ \left(\begin{matrix} \frac{1}{2} & 5 \\ -1 & a+b \end{matrix}\right)


## Features

• Build formulae from TeX syntax or using the structural API
• Highly-customizable graphical and layout parameters
• Drawing uses only a few user primitives (point, line, text size, text)
• Compatible with fxlib and gint

List of currently supported elements:

• Fractions (\frac)
• Subscripts and superscripts (_ and ^)
• Grouping parentheses, brackets, and braces (\left and \right)
• Grouping angle brackets, vertical lines, and dots (invisible)
• Sums, products and integrals (\sum, \prod and \int)
• Vectors (\vec) and limits (\lim)
• Square roots (\sqrt)
• Matrices (\begin{matrix} ... \end{matrix})

Features that are partially implemented (and what is left to finish them):

• Support for inline style and display style (expose a parameter)
• Theme that can decently port to fx-CG 50 (suitable parenthesis styles)

See the TODO.md file for more features to come.

## Building

First specify the platform you want to use :

• cli is for command-line tests, with no visualization (PC)
• sdl2 is an SDL interface with visualization (PC)
• fx9860g builds the library for fx-9860G targets (calculator)
• fxcg50 builds the library for fx-CG 50 targets (calculator)

For calculator platforms, you can use --toolchain to specify a different toolchain than the default sh3eb and sh4eb. The install directory of the library is guessed by asking the compiler, you can override it with --prefix.

Example for an SDL setup:

% ./configure --platform=sdl2


Then you can make the program, and if it’s a calculator library, install it. You can later delete Makefile.cfg to reset the configuration, or just reconfigure as needed.

% make
% make install # fx9860g and fxcg50 only


## Using in a program

Before using the library in a program, a configuration step is needed. The library does not have drawing functions and instead requires that you provide some, namely:

• Draw a pixel (TeX_intf_pixel)
• Draw a line (TeX_intf_line)
• Compute the size occupied by a string (TeX_intf_size)
• Render a string (TeX_intf_text)

The three rendering functions are available in fxlib; for monospaced fonts the fourth can be implemented trivially. In gint, the four can be defined as wrappers for dpixel(), dline(), dsize() and dtext().

The type of formulae is TeX_Env. To parse and compute the size of a formula, use the TeX_parse() function, which returns a new formula object (or NULL if a critical error occurs). The second parameter display is set to non-zero to use display mode (similar to $..$ in LaTeX) or zero to use inline mode (similar to $..$ in LaTeX).

char *code = "\\frac{x_7}{\\left\\{\\frac{\\frac{2}{3}}{27}\\right\\}^2}";
struct TeX_Env *formula = TeX_parse(code, 1);


The size of the formula can be queried through formula->width and formula->height. To render, specify the location of the top-left corner and the drawing color (which will be passed to all primitives):

TeX_draw(formula, 0, 0, BLACK);


The same formula can be drawn several times. When it is no longer needed, free it with TeX_free():

TeX_free(formula);