forked from Lephenixnoir/TeX
readme: add some basic description and instructions
This commit is contained in:
parent
44549f132f
commit
cfddd24cb9
|
@ -0,0 +1,87 @@
|
|||
# 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.
|
||||
|
||||
```latex
|
||||
\frac{x_7}{\left\{\frac{\frac{2}{3}}{27}\right\}^2}
|
||||
```
|
||||
|
||||
![Sample on a Graph 35+E II](https://framapic.org/CkFr4ab3FjcZ/bXQg9LyozGqg.jpg)
|
||||
|
||||
## Features
|
||||
|
||||
* Build formulae from TeX syntax
|
||||
* Highly-customizable graphical and layout parameters
|
||||
* Drawing is based on a few user-provided 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`)
|
||||
|
||||
Features that are partially implemented (and what is left to finish them):
|
||||
|
||||
* Support for inline style and display style (compute display-style subscript
|
||||
and superscript layout, and expose a parameter)
|
||||
* API functions to build TeX objects without a TeX formula (expose functions
|
||||
which are currently in the parser)
|
||||
* Full fx-CG 50 support (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 (font support coming) (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:
|
||||
|
||||
```sh
|
||||
% ./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.
|
||||
|
||||
```sh
|
||||
% 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_Flow`. To parse and compute the size of a formula, use the `TeX_parse()` functions, which returns a new formula object (or `NULL` if a critical error occurs).
|
||||
|
||||
```c
|
||||
char *code = "\\frac{x_7}{\\left\\{\\frac{\\frac{2}{3}}{27}\\right\\}^2}";
|
||||
struct TeX_Flow *formula = TeX_parse(code);
|
||||
```
|
||||
|
||||
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):
|
||||
|
||||
```c
|
||||
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()`:
|
||||
|
||||
```c
|
||||
TeX_free(formula);
|
||||
```
|
|
@ -2,6 +2,7 @@
|
|||
* Write real error messages
|
||||
* Support Unicode symbols (probably requires help from the font side, urgh)
|
||||
* Don't use TEX_LAYOUT_SPACING for everything, just make it the default
|
||||
* Add a parameter to resolve as inline style or display style
|
||||
|
||||
* Add sum and products
|
||||
* Add square roots, and honor TEX_SQRT_SLANTED and TEX_SQRT_BAR_LENGTH
|
|
@ -121,7 +121,6 @@ int main(void)
|
|||
|
||||
struct TeX_Flow *flow = TeX_parse(formula);
|
||||
if(!flow) { puts("parsing error!"); return 1; }
|
||||
size_flow(flow);
|
||||
TeX_debug_flow(flow, 0);
|
||||
|
||||
SDL_SetRenderDrawColor(r, 0xff, 0xff, 0xff, 0xff);
|
||||
|
|
Loading…
Reference in New Issue