diff --git a/composer.json b/composer.json
index 1f70680..f21a0f4 100644
--- a/composer.json
+++ b/composer.json
@@ -24,7 +24,7 @@
"require-dev": {
"cakephp/migrations": "^3.0.0",
"phpunit/phpunit": "^9.5",
- "fig-r/psr2r-sniffer": "dev-master"
+ "fig-r/psr2r-sniffer": "^1.5.1"
},
"autoload": {
"psr-4": {
diff --git a/vendor/fonts/COPYING b/vendor/fonts/COPYING
deleted file mode 100644
index a2f3ab2..0000000
--- a/vendor/fonts/COPYING
+++ /dev/null
@@ -1,2 +0,0 @@
-cmex10.ttf, msam10.ttf, cmr10.ttf, cmmi10.ttf : Copyright (C) 1997 American Mathematical Society
-FreeSerif.ttf : Copyleft 2002, 2003 Free Software Foundation.
\ No newline at end of file
diff --git a/vendor/fonts/FreeSerif.ttf b/vendor/fonts/FreeSerif.ttf
deleted file mode 100644
index fb81b84..0000000
Binary files a/vendor/fonts/FreeSerif.ttf and /dev/null differ
diff --git a/vendor/fonts/cmex10.ttf b/vendor/fonts/cmex10.ttf
deleted file mode 100644
index 37526cd..0000000
Binary files a/vendor/fonts/cmex10.ttf and /dev/null differ
diff --git a/vendor/fonts/cmmi10.ttf b/vendor/fonts/cmmi10.ttf
deleted file mode 100644
index 79b629a..0000000
Binary files a/vendor/fonts/cmmi10.ttf and /dev/null differ
diff --git a/vendor/fonts/cmr10.ttf b/vendor/fonts/cmr10.ttf
deleted file mode 100644
index 0602cd2..0000000
Binary files a/vendor/fonts/cmr10.ttf and /dev/null differ
diff --git a/vendor/fonts/index.php b/vendor/fonts/index.php
deleted file mode 100644
index eb0f35a..0000000
--- a/vendor/fonts/index.php
+++ /dev/null
@@ -1 +0,0 @@
- header("location:../index.html"); ?>
diff --git a/vendor/fonts/msam10.ttf b/vendor/fonts/msam10.ttf
deleted file mode 100644
index e0d4be7..0000000
Binary files a/vendor/fonts/msam10.ttf and /dev/null differ
diff --git a/vendor/mathpublisher.php b/vendor/mathpublisher.php
deleted file mode 100644
index a83806b..0000000
--- a/vendor/mathpublisher.php
+++ /dev/null
@@ -1,1673 +0,0 @@
-... tag).
- $size is the size of the police used for the formulas.
- $pathtoimg is the relative path between the html pages and the images directory.
- With a simple "echo mathfilter($text,$size,$pathtoimg);", you can display text with mathematical formulas.
- The mathfilter function will replace all the math tags (formula) in $text by .
- Example :
- mathfilter("A math formula : f(x)=sqrt{x},12,"img/") will return :
- "A math formula : "
- The image corresponding to a formula is created only once. Then the image is stocked into the image directories.
- The first time that mathfilter is called, the images corresponding to the formulas are created, but the next times mathfilter will only return the html code.
-
- NOTE : if the free latex fonts furnished with this script don't work well (very tiny formulas - that's could happened with some GD configurations), you should try to use the bakoma versions of these fonts (downloadable here : http://www.ctan.org/tex-archive/fonts/cm/ps-type1/bakoma/ttf/ )
- * ***************************************************************** */
-
-//********* PARAMETERS TO MODIFY *********************************
-// The four global variables. Uncomment the line if you need it.
-//global $dirfonts,$dirimg,$symboles,$fontesmath;
-// choose the type of the declaration according to your server settings (some servers don't accept the dirname(__FILE__) command for security reasons).
-// NEW in 0.3 version : no more / at the end of $dirfonts and $dirimg
-// absolute path to the fonts directory
-class GlobalVar
-{
- public static $dirfonts;
- public static $dirimg;
- public static $symboles;
- public static $fontesmath;
-}
-GlobalVar::$dirfonts = __DIR__ . "/fonts";
-
-// absolute path to the images directory
-GlobalVar::$dirimg = __DIR__ . "/img";
-
-
-
-//******************************************************************
-GlobalVar::$symboles = array(
- '~' => ' ',
- 'alpha' => '®',
- 'beta' => '¯',
- 'gamma' => '°',
- 'delta' => '±',
- 'epsilon' => '²',
- 'varepsilon' => '"',
- 'zeta' => '³',
- 'eta' => '´',
- 'theta' => 'µ',
- 'vartheta' => '#',
- 'iota' => '¶',
- 'kappa' => '·',
- 'lambda' => '¸',
- 'mu' => '¹',
- 'nu' => 'º',
- 'xi' => '»',
- 'pi' => '¼',
- 'varpi' => '$',
- 'rho' => '½',
- 'varrho' => '%',
- 'sigma' => '¾',
- 'varsigma' => '&',
- 'tau' => '¿',
- 'upsilon' => 'À',
- 'phi' => 'Á',
- 'varphi' => ''',
- 'chi' => 'Â',
- 'psi' => 'Ã',
- 'omega' => '!',
- 'Gamma' => '¡',
- 'Lambda' => '¤',
- 'Sigma' => '§',
- 'Psi' => 'ª',
- 'Delta' => '¢',
- 'Xi' => '¥',
- 'Upsilon' => '¨',
- 'Omega' => '',
- 'Theta' => '£',
- 'Pi' => '¦',
- 'Phi' => '©',
- 'infty' => '∞',
- 'ne' => '≠',
- '*' => '×',
- 'in' => '∈',
- 'notin' => '∉',
- 'forall' => '∀',
- 'exists' => '∃',
- 'notexists' => '∄',
- 'partial' => '∂',
- 'approx' => '≈',
- 'left' => '←',
- 'right' => '→',
- 'leftright' => '↔',
- 'doubleleft' => '⇐',
- 'doubleright' => '⇒',
- 'doubleleftright' => '⇔',
- 'nearrow' => '↗',
- 'searrow' => '↙',
- 'pm' => '±',
- 'bbR' => 'ℝ',
- 'bbN' => 'ℕ',
- 'bbZ' => 'ℤ',
- 'bbC' => 'ℂ',
- 'inter' => '⋂',
- 'union' => '⋃',
- 'ortho' => '⊥',
- 'parallel' => '∥',
- 'backslash' => '\',
- 'prime' => ''',
- 'wedge' => '⋀',
- 'vert' => '∥',
- 'subset' => '⊂',
- 'notsubset' => '⊄',
- 'circ' => '∘',
- 'varnothing' => 'ø',
- 'cdots' => '⋯',
- 'vdots' => '⋮',
- 'ddots' => '⋱',
-//operateurs
- 'le' => '6',
- 'ge' => '>',
- '<' => '<',
- '>' => '>',
-//parentheses
- '(' => '³',
- ')' => '´',
- '[' => 'h',
- ']' => 'i',
- 'lbrace' => '(',
- 'rbrace' => ')',
-//autres
- '_hat' => 'c',
- '_racine' => 'q',
- '_integrale' => 'R',
- '_dintegrale' => '∬',
- '_tintegrale' => '∭',
- '_ointegrale' => 'H',
- '_produit' => 'Q',
- '_somme' => 'P',
- '_intersection' => 'T',
- '_reunion' => 'S',
- '_lim' => 'lim',
-//fonctions
- 'arccos' => 'arccos',
- 'ker' => 'ker',
- 'arcsin' => 'arcsin',
- 'lg' => 'lg',
- 'arctan' => 'arctan',
- 'arg' => 'arg',
- 'cos' => 'cos',
- 'cosh' => 'cosh',
- 'ln' => 'ln',
- 'cot' => 'cot',
- 'log' => 'log',
- 'coth' => 'coth',
- 'max' => 'max',
- 'csc' => 'csc',
- 'min' => 'min',
- 'deg' => 'deg',
- 'det' => 'det',
- 'sec' => 'sec',
- 'dim' => 'dim',
- 'sin' => 'sin',
- 'exp' => 'exp',
- 'sinh' => 'sinh',
- 'gcd' => 'gcd',
- 'sup' => 'sup',
- 'hom' => 'hom',
- 'tan' => 'tan',
- 'inf' => 'inf',
- 'tanh' => 'tanh'
-);
-GlobalVar::$fontesmath = array(
- '~' => 'FreeSerif',
- 'alpha' => 'cmmi10',
- 'beta' => 'cmmi10',
- 'gamma' => 'cmmi10',
- 'delta' => 'cmmi10',
- 'epsilon' => 'cmmi10',
- 'varepsilon' => 'cmmi10',
- 'zeta' => 'cmmi10',
- 'eta' => 'cmmi10',
- 'theta' => 'cmmi10',
- 'vartheta' => 'cmmi10',
- 'iota' => 'cmmi10',
- 'kappa' => 'cmmi10',
- 'lambda' => 'cmmi10',
- 'mu' => 'cmmi10',
- 'nu' => 'cmmi10',
- 'xi' => 'cmmi10',
- 'pi' => 'cmmi10',
- 'varpi' => 'cmmi10',
- 'rho' => 'cmmi10',
- 'varrho' => 'cmmi10',
- 'sigma' => 'cmmi10',
- 'varsigma' => 'cmmi10',
- 'tau' => 'cmmi10',
- 'upsilon' => 'cmmi10',
- 'phi' => 'cmmi10',
- 'varphi' => 'cmmi10',
- 'chi' => 'cmmi10',
- 'psi' => 'cmmi10',
- 'omega' => 'cmmi10',
- 'Gamma' => 'cmr10',
- 'Lambda' => 'cmr10',
- 'Sigma' => 'cmr10',
- 'Psi' => 'cmr10',
- 'Delta' => 'cmr10',
- 'Xi' => 'cmr10',
- 'Upsilon' => 'cmr10',
- 'Omega' => 'cmr10',
- 'Theta' => 'cmr10',
- 'Pi' => 'cmr10',
- 'Phi' => 'cmr10',
- 'infty' => 'FreeSerif',
- 'ne' => 'FreeSerif',
- '*' => 'FreeSerif',
- 'in' => 'FreeSerif',
- 'notin' => 'FreeSerif',
- 'forall' => 'FreeSerif',
- 'exists' => 'FreeSerif',
- 'notexists' => 'FreeSerif',
- 'partial' => 'FreeSerif',
- 'approx' => 'FreeSerif',
- 'left' => 'FreeSerif',
- 'right' => 'FreeSerif',
- 'leftright' => 'FreeSerif',
- 'doubleleft' => 'FreeSerif',
- 'doubleright' => 'FreeSerif',
- 'doubleleftright' => 'FreeSerif',
- 'nearrow' => 'FreeSerif',
- 'searrow' => 'FreeSerif',
- 'pm' => 'FreeSerif',
- 'bbR' => 'FreeSerif',
- 'bbN' => 'FreeSerif',
- 'bbZ' => 'FreeSerif',
- 'bbC' => 'FreeSerif',
- 'inter' => 'FreeSerif',
- 'union' => 'FreeSerif',
- 'ortho' => 'FreeSerif',
- 'parallel' => 'FreeSerif',
- 'backslash' => 'FreeSerif',
- 'prime' => 'FreeSerif',
- 'wedge' => 'FreeSerif',
- 'vert' => 'FreeSerif',
- 'subset' => 'FreeSerif',
- 'notsubset' => 'FreeSerif',
- 'circ' => 'FreeSerif',
- 'varnothing' => 'FreeSerif',
- 'cdots' => 'FreeSerif',
- 'vdots' => 'FreeSerif',
- 'ddots' => 'FreeSerif',
-//operateurs
- 'le' => 'msam10',
- 'ge' => 'msam10',
- '<' => 'cmmi10',
- '>' => 'cmmi10',
-//parentheses
- '(' => 'cmex10',
- ')' => 'cmex10',
- '[' => 'cmex10',
- ']' => 'cmex10',
- 'lbrace' => 'cmex10',
- 'rbrace' => 'cmex10',
-//autres
- '_hat' => 'cmex10',
- '_racine' => 'cmex10',
- '_integrale' => 'cmex10',
- '_dintegrale' => 'FreeSerif',
- '_tintegrale' => 'FreeSerif',
- '_ointegrale' => 'cmex10',
- '_produit' => 'cmex10',
- '_somme' => 'cmex10',
- '_intersection' => 'cmex10',
- '_reunion' => 'cmex10',
- '_lim' => 'cmr10',
-//fonctions
- 'arccos' => 'cmr10',
- 'ker' => 'cmr10',
- 'arcsin' => 'cmr10',
- 'lg' => 'cmr10',
- 'arctan' => 'cmr10',
- 'arg' => 'cmr10',
- 'cos' => 'cmr10',
- 'cosh' => 'cmr10',
- 'ln' => 'cmr10',
- 'cot' => 'cmr10',
- 'log' => 'cmr10',
- 'coth' => 'cmr10',
- 'max' => 'cmr10',
- 'csc' => 'cmr10',
- 'min' => 'cmr10',
- 'deg' => 'cmr10',
- 'det' => 'cmr10',
- 'sec' => 'cmr10',
- 'dim' => 'cmr10',
- 'sin' => 'cmr10',
- 'exp' => 'cmr10',
- 'sinh' => 'cmr10',
- 'gcd' => 'cmr10',
- 'sup' => 'cmr10',
- 'hom' => 'cmr10',
- 'tan' => 'cmr10',
- 'inf' => 'cmr10',
- 'tanh' => 'cmr10'
-);
-
-function est_nombre($str)
-{
- return preg_match("/^[0-9]/", $str);
-}
-
-function tableau_expression($expression)
-{
- $e = str_replace('_', ' _ ', $expression);
- $e = str_replace('{(}', '{ }', $e);
- $e = str_replace('{)}', '{ }', $e);
- $t = token_get_all("");
- $extraits = array();
- $result = array();
-//stupid code but token_get_all bug in some php versions
- $d = 0;
- for ($i = 0; $i < count($t); $i++) {
- if (is_array($t[$i])) {
- $t[$i] = $t[$i][1];
- }
- if (preg_match("/formula/", $t[$i])) {
- $d = $i + 2;
- break;
- }
- }
- for ($i = $d; $i < count($t) - 1; $i++) {
- if (is_array($t[$i])) {
- $t[$i] = $t[$i][1];
- }
- if ($t[$i] == '<=') {
- $t[$i] = 'le';
- } elseif ($t[$i] == '!=') {
- $t[$i] = 'ne';
- } elseif ($t[$i] == '<>') {
- $t[$i] = 'ne';
- } elseif ($t[$i] == '>=') {
- $t[$i] = 'ge';
- } elseif ($t[$i] == '--') {
- $t[$i] = '-';
- $t[$i + 1] = '-' . $t[$i + 1];
- } elseif ($t[$i] == '++') {
- $t[$i] = '+';
- } elseif ($t[$i] == '-') {
- if ($t[$i - 1] == '^' || $t[$i - 1] == '_' || $t[$i - 1] == '*' || $t[$i - 1] == '/' || $t[$i - 1] == '+' || $t[$i - 1] == '(') {
- $t[$i] = '';
- if (is_array($t[$i + 1])) {
- $t[$i + 1][1] = '-' . $t[$i + 1][1];
- } else {
- $t[$i + 1] = '-' . $t[$i + 1];
- }
- }
- }
- if (trim($t[$i]) != '') {
- $extraits[] = $t[$i];
- }
- }
- for ($i = 0; $i < count($extraits); $i++) {
- $result[] = new expression_texte($extraits[$i]);
- }
- return $result;
-}
-
-// ugly hack, but GD is not very good with truetype fonts (especially with latex fonts)
-function affiche_symbol($texte, $haut)
-{
- $dirfonts = GlobalVar::$dirfonts;
- $symboles = GlobalVar::$symboles;
- $fontesmath = GlobalVar::$fontesmath;
- $texte = trim(stripslashes($texte));
- switch ($texte) {
- case '':
- $img = imagecreate(1, max($haut, 1));
- $blanc = imagecolorallocate($img, 255, 255, 255);
- $blanc = imagecolortransparent($img, $blanc);
- imagefilledrectangle($img, 0, 0, 1, $haut, $blanc);
- break;
- case '~':
- $img = imagecreate(1, max($haut, 1));
- $blanc = imagecolorallocate($img, 255, 255, 255);
- $blanc = imagecolortransparent($img, $blanc);
- imagefilledrectangle($img, 0, 0, 1, $haut, $blanc);
- break;
- case 'vert':
- $img = imagecreate(6, max($haut, 1));
- $blanc = imagecolorallocate($img, 255, 255, 255);
- $blanc = imagecolortransparent($img, $blanc);
- $noir = imagecolorallocate($img, 0, 0, 0);
- imagefilledrectangle($img, 0, 0, 6, $haut, $blanc);
- imagefilledrectangle($img, 2, 0, 2, $haut, $noir);
- imagefilledrectangle($img, 4, 0, 4, $haut, $noir);
- break;
- case '|':
- $img = imagecreate(5, max($haut, 1));
- $blanc = imagecolorallocate($img, 255, 255, 255);
- $blanc = imagecolortransparent($img, $blanc);
- $noir = imagecolorallocate($img, 0, 0, 0);
- imagefilledrectangle($img, 0, 0, 5, $haut, $blanc);
- imagefilledrectangle($img, 2, 0, 2, $haut, $noir);
- break;
- case 'right':
- $font = $dirfonts . "/" . $fontesmath[$texte] . ".ttf";
- $t = 16;
- $texte = $symboles[$texte];
- $tmp_dim = imagettfbbox($t, 0, $font, $texte);
- $tmp_largeur = abs($tmp_dim[2] - $tmp_dim[0]) + 2;
- $tmp_hauteur = abs($tmp_dim[3] - $tmp_dim[5]) + 2;
- $tmp_img = imagecreate(max($tmp_largeur, 1), max($tmp_hauteur, 1));
- $tmp_noir = imagecolorallocate($tmp_img, 0, 0, 0);
- $tmp_blanc = imagecolorallocate($tmp_img, 255, 255, 255);
- $tmp_blanc = imagecolortransparent($tmp_img, $tmp_blanc);
- imagefilledrectangle($tmp_img, 0, 0, $tmp_largeur, $tmp_hauteur, $tmp_blanc);
- imagettftext($tmp_img, $t, 0, 0, $tmp_hauteur, $tmp_noir, $font, $texte);
- $toutblanc = true;
- $sx = $sy = $ex = $ey = -1;
- for ($y = 0; $y < $tmp_hauteur; $y++) {
- for ($x = 0; $x < $tmp_largeur; $x++) {
- $rgb = imagecolorat($tmp_img, $x, $y);
- if ($rgb != $tmp_blanc) {
- $toutblanc = false;
- if ($sy == -1) {
- $sy = $y;
- } else {
- $ey = $y;
- }
-
- if ($sx == -1) {
- $sx = $x;
- } else {
- if ($x < $sx) {
- $sx = $x;
- } else if ($x > $ex) {
- $ex = $x;
- }
- }
- }
- }
- }
- $nx = abs($ex - $sx);
- $ny = abs($ey - $sy);
- $img = imagecreate(max($nx + 4, 1), max($ny + 4, 1));
- $blanc = imagecolorallocate($img, 255, 255, 255);
- $blanc = imagecolortransparent($img, $blanc);
- imagefilledrectangle($img, 0, 0, $nx + 4, $ny + 4, $blanc);
- imagecopy($img, $tmp_img, 2, 2, $sx, $sy, min($nx + 2, $tmp_largeur - $sx), min($ny + 2, $tmp_hauteur - $sy));
- break;
- case '_hat':
- $font = $dirfonts . "/" . $fontesmath[$texte] . ".ttf";
- $t = $haut;
- $texte = $symboles[$texte];
- $tmp_dim = imagettfbbox($t, 0, $font, $texte);
- $tmp_largeur = abs($tmp_dim[2] - $tmp_dim[0]);
- $tmp_hauteur = abs($tmp_dim[3] - $tmp_dim[5]) * 4;
- $tmp_img = imagecreate(max($tmp_largeur, 1), max($tmp_hauteur, 1));
- $tmp_noir = imagecolorallocate($tmp_img, 0, 0, 0);
- $tmp_blanc = imagecolorallocate($tmp_img, 255, 255, 255);
- $tmp_blanc = imagecolortransparent($tmp_img, $tmp_blanc);
- imagefilledrectangle($tmp_img, 0, 0, $tmp_largeur, $tmp_hauteur, $tmp_blanc);
- imagettftext($tmp_img, $t, 0, 0, $tmp_hauteur, $tmp_noir, $font, $texte);
- $toutblanc = true;
- $img = $tmp_img;
- $sx = $sy = $ex = $ey = -1;
- for ($y = 0; $y < $tmp_hauteur; $y++) {
- for ($x = 0; $x < $tmp_largeur; $x++) {
- $rgb = imagecolorat($tmp_img, $x, $y);
- if ($rgb != $tmp_blanc) {
- $toutblanc = false;
- if ($sy == -1) {
- $sy = $y;
- } else {
- $ey = $y;
- }
-
- if ($sx == -1) {
- $sx = $x;
- } else {
- if ($x < $sx) {
- $sx = $x;
- } else if ($x > $ex) {
- $ex = $x;
- }
- }
- }
- }
- }
- $nx = abs($ex - $sx);
- $ny = abs($ey - $sy);
- $img = imagecreate(max($nx + 4, 1), max($ny + 4, 1));
- $blanc = imagecolorallocate($img, 255, 255, 255);
- $blanc = imagecolortransparent($img, $blanc);
- imagefilledrectangle($img, 0, 0, $nx + 4, $ny + 4, $blanc);
- imagecopy($img, $tmp_img, 2, 2, $sx, $sy, min($nx + 2, $tmp_largeur - $sx), min($ny + 2, $tmp_hauteur - $sy));
- break;
- case '_dintegrale':
- case '_tintegrale':
- if (isset($fontesmath[$texte])) {
- $font = $dirfonts . "/" . $fontesmath[$texte] . ".ttf";
- } elseif (est_nombre($texte)) {
- $font = $dirfonts . "/cmr10.ttf";
- } else {
- $font = $dirfonts . "/cmmi10.ttf";
- }
- $t = 6;
- if (isset($symboles[$texte])) {
- $texte = $symboles[$texte];
- }
- do {
- $tmp_dim = imagettfbbox($t, 0, $font, $texte);
- $t+=1;
- } while ((abs($tmp_dim[3] - $tmp_dim[5]) < 1.2 * $haut));
- $tmp_largeur = abs($tmp_dim[2] - $tmp_dim[0]) * 2;
- $tmp_hauteur = abs($tmp_dim[3] - $tmp_dim[5]) * 2;
- $tmp_img = imagecreate(max($tmp_largeur, 1), max($tmp_hauteur, 1));
- $tmp_noir = imagecolorallocate($tmp_img, 0, 0, 0);
- $tmp_blanc = imagecolorallocate($tmp_img, 255, 255, 255);
- $tmp_blanc = imagecolortransparent($tmp_img, $tmp_blanc);
- imagefilledrectangle($tmp_img, 0, 0, $tmp_largeur, $tmp_hauteur, $tmp_blanc);
- imagettftext($tmp_img, $t, 0, 5, $tmp_hauteur / 2, $tmp_noir, $font, $texte);
- $img = $tmp_img;
- $toutblanc = true;
- $sx = $sy = $ex = $ey = -1;
- for ($y = 0; $y < $tmp_hauteur; $y++) {
- for ($x = 0; $x < $tmp_largeur; $x++) {
- $rgb = imagecolorat($tmp_img, $x, $y);
- if ($rgb != $tmp_blanc) {
- $toutblanc = false;
- if ($sy == -1) {
- $sy = $y;
- } else {
- $ey = $y;
- }
-
- if ($sx == -1) {
- $sx = $x;
- } else {
- if ($x < $sx) {
- $sx = $x;
- } else if ($x > $ex) {
- $ex = $x;
- }
- }
- }
- }
- }
- $nx = abs($ex - $sx);
- $ny = abs($ey - $sy);
- if ($toutblanc) {
- $img = imagecreate(1, max($haut, 1));
- $blanc = imagecolorallocate($img, 255, 255, 255);
- $blanc = imagecolortransparent($img, $blanc);
- imagefilledrectangle($img, 0, 0, 1, $haut, $blanc);
- } else {
- $img = imagecreate(max($nx + 4, 1), max($ny + 4, 1));
- $blanc = imagecolorallocate($img, 255, 255, 255);
- $blanc = imagecolortransparent($img, $blanc);
- imagefilledrectangle($img, 0, 0, $nx + 4, $ny + 4, $blanc);
- imagecopy($img, $tmp_img, 2, 2, $sx, $sy, min($nx + 2, $tmp_largeur - $sx), min($ny + 2, $tmp_hauteur - $sy));
- }
- break;
- default:
- if (isset($fontesmath[$texte])) {
- $font = $dirfonts . "/" . $fontesmath[$texte] . ".ttf";
- } elseif (est_nombre($texte)) {
- $font = $dirfonts . "/cmr10.ttf";
- } else {
- $font = $dirfonts . "/cmmi10.ttf";
- }
- $t = 6;
- if (isset($symboles[$texte])) {
- $texte = $symboles[$texte];
- }
- do {
- $tmp_dim = imagettfbbox($t, 0, $font, $texte);
- $t+=1;
- } while ((abs($tmp_dim[3] - $tmp_dim[5]) < $haut));
- $tmp_largeur = abs($tmp_dim[2] - $tmp_dim[0]) * 2;
- $tmp_hauteur = abs($tmp_dim[3] - $tmp_dim[5]) * 2;
- $tmp_img = imagecreate(max($tmp_largeur, 1), max($tmp_hauteur, 1));
- $tmp_noir = imagecolorallocate($tmp_img, 0, 0, 0);
- $tmp_blanc = imagecolorallocate($tmp_img, 255, 255, 255);
- $tmp_blanc = imagecolortransparent($tmp_img, $tmp_blanc);
- imagefilledrectangle($tmp_img, 0, 0, $tmp_largeur, $tmp_hauteur, $tmp_blanc);
- imagettftext($tmp_img, $t, 0, 0, $tmp_hauteur / 4, $tmp_noir, $font, $texte);
-// imagettftext($tmp_img, $t, 0,5,5,$tmp_noir, $font,$texte);
-// $img=$tmp_img;
- $toutblanc = true;
- $sx = $sy = $ex = $ey = -1;
- for ($y = 0; $y < $tmp_hauteur; $y++) {
- for ($x = 0; $x < $tmp_largeur; $x++) {
- $rgb = imagecolorat($tmp_img, $x, $y);
- if ($rgb != $tmp_blanc) {
- $toutblanc = false;
- if ($sy == -1) {
- $sy = $y;
- } else {
- $ey = $y;
- }
-
- if ($sx == -1) {
- $sx = $x;
- } else {
- if ($x < $sx) {
- $sx = $x;
- } else if ($x > $ex) {
- $ex = $x;
- }
- }
- }
- }
- }
- $nx = abs($ex - $sx);
- $ny = abs($ey - $sy);
- if ($toutblanc) {
- $img = imagecreate(1, max($haut, 1));
- $blanc = imagecolorallocate($img, 255, 255, 255);
- $blanc = imagecolortransparent($img, $blanc);
- imagefilledrectangle($img, 0, 0, 1, $haut, $blanc);
- } else {
- $img = imagecreate(max($nx + 4, 1), max($ny + 4, 1));
- $blanc = imagecolorallocate($img, 255, 255, 255);
- $blanc = imagecolortransparent($img, $blanc);
- imagefilledrectangle($img, 0, 0, $nx + 4, $ny + 4, $blanc);
- imagecopy($img, $tmp_img, 2, 2, $sx, $sy, min($nx + 2, $tmp_largeur - $sx), min($ny + 2, $tmp_hauteur - $sy));
- }
- break;
- }
-//$rouge=imagecolorallocate($img,255,0,0);
-//ImageRectangle($img,0,0,ImageSX($img)-1,ImageSY($img)-1,$rouge);
- return $img;
-}
-
-function affiche_texte($texte, $taille)
-{
- $dirfonts = GlobalVar::$dirfonts;
- $taille = max($taille, 6);
- $texte = stripslashes($texte);
- $font = $dirfonts . "/cmr10.ttf";
- $htexte = 'dg' . $texte;
- $hdim = imagettfbbox($taille, 0, $font, $htexte);
- $wdim = imagettfbbox($taille, 0, $font, $texte);
- $dx = max($wdim[2], $wdim[4]) - min($wdim[0], $wdim[6]) + ceil($taille / 8);
- $dy = max($hdim[1], $hdim[3]) - min($hdim[5], $hdim[7]) + ceil($taille / 8);
- $img = imagecreate(max($dx, 1), max($dy, 1));
- $noir = imagecolorallocate($img, 0, 0, 0);
- $blanc = imagecolorallocate($img, 255, 255, 255);
- $blanc = imagecolortransparent($img, $blanc);
- imagefilledrectangle($img, 0, 0, $dx, $dy, $blanc);
-//ImageRectangle($img,0,0,$dx-1,$dy-1,$noir);
- imagettftext($img, $taille, $angle, 0, -min($hdim[5], $hdim[7]), $noir, $font, $texte);
- return $img;
-}
-
-function affiche_math($texte, $taille)
-{
- $dirfonts = GlobalVar::$dirfonts;
- $taille = max($taille, 6);
-
- $symboles = GlobalVar::$symboles;
- $fontesmath = GlobalVar::$fontesmath;
- $texte = stripslashes($texte);
- if (isset($fontesmath[$texte])) {
- $font = $dirfonts . "/" . $fontesmath[$texte] . ".ttf";
- } elseif (preg_match("/[a-zA-Z]/", $texte)) {
- $font = $dirfonts . "/cmmi10.ttf";
- } else {
- $font = $dirfonts . "/cmr10.ttf";
- }
- if (isset($symboles[$texte])) {
- $texte = $symboles[$texte];
- }
- $htexte = 'dg' . $texte;
- $hdim = imagettfbbox($taille, 0, $font, $htexte);
- $wdim = imagettfbbox($taille, 0, $font, $texte);
- $dx = max($wdim[2], $wdim[4]) - min($wdim[0], $wdim[6]) + ceil($taille / 8);
- $dy = max($hdim[1], $hdim[3]) - min($hdim[5], $hdim[7]) + ceil($taille / 8);
- $img = imagecreate(max($dx, 1), max($dy, 1));
- $noir = imagecolorallocate($img, 0, 0, 0);
- $blanc = imagecolorallocate($img, 255, 255, 255);
- $blanc = imagecolortransparent($img, $blanc);
- imagefilledrectangle($img, 0, 0, $dx, $dy, $blanc);
-//ImageRectangle($img,0,0,$dx-1,$dy-1,$noir);
- imagettftext($img, $taille, 0, 0, -min($hdim[5], $hdim[7]), $noir, $font, $texte);
- return $img;
-}
-
-function parenthese($hauteur, $style)
-{
- $image = affiche_symbol($style, $hauteur);
- return $image;
-}
-
-function alignement2($image1, $base1, $image2, $base2)
-{
- $largeur1 = imagesx($image1);
- $hauteur1 = imagesy($image1);
- $largeur2 = imagesx($image2);
- $hauteur2 = imagesy($image2);
- $dessus = max($base1, $base2);
- $dessous = max($hauteur1 - $base1, $hauteur2 - $base2);
- $largeur = $largeur1 + $largeur2;
- $hauteur = $dessus + $dessous;
- $result = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($result, 0, 0, 0);
- $blanc = imagecolorallocate($result, 255, 255, 255);
- $blanc = imagecolortransparent($result, $blanc);
- imagefilledrectangle($result, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagecopy($result, $image1, 0, $dessus - $base1, 0, 0, $largeur1, $hauteur1);
- imagecopy($result, $image2, $largeur1, $dessus - $base2, 0, 0, $largeur2, $hauteur2);
-//ImageRectangle($result,0,0,$largeur-1,$hauteur-1,$noir);
- return $result;
-}
-
-function alignement3($image1, $base1, $image2, $base2, $image3, $base3)
-{
- $largeur1 = imagesx($image1);
- $hauteur1 = imagesy($image1);
- $largeur2 = imagesx($image2);
- $hauteur2 = imagesy($image2);
- $largeur3 = imagesx($image3);
- $hauteur3 = imagesy($image3);
- $dessus = max($base1, $base2, $base3);
- $dessous = max($hauteur1 - $base1, $hauteur2 - $base2, $hauteur3 - $base3);
- $largeur = $largeur1 + $largeur2 + $largeur3;
- $hauteur = $dessus + $dessous;
- $result = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($result, 0, 0, 0);
- $blanc = imagecolorallocate($result, 255, 255, 255);
- $blanc = imagecolortransparent($result, $blanc);
- imagefilledrectangle($result, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagecopy($result, $image1, 0, $dessus - $base1, 0, 0, $largeur1, $hauteur1);
- imagecopy($result, $image2, $largeur1, $dessus - $base2, 0, 0, $largeur2, $hauteur2);
- imagecopy($result, $image3, $largeur1 + $largeur2, $dessus - $base3, 0, 0, $largeur3, $hauteur3);
-//ImageRectangle($result,0,0,$largeur-1,$hauteur-1,$noir);
- return $result;
-}
-
-//*****************************************************************
-class expression
-{
- var $texte;
- var $image;
- var $base_verticale;
-
-}
-
-//*****************************************************************
-class expression_texte extends expression
-{
-
- public function __construct($exp)
- {
- $this->texte = $exp;
- }
-
- public function dessine($taille)
- {
- $this->image = affiche_math($this->texte, $taille);
- $this->base_verticale = imagesy($this->image) / 2;
- }
-}
-
-//*****************************************************************
-class expression_math extends expression
-{
- public $noeuds;
-
- public function __construct($exp)
- {
- $this->texte = "&$";
- $this->noeuds = $exp;
- $this->noeuds = $this->parse();
- }
-
- public function parse()
- {
- if (count($this->noeuds) <= 3) {
- return $this->noeuds;
- }
- $ret = array();
- $parentheses = array();
- for ($i = 0; $i < count($this->noeuds); $i++) {
- if ($this->noeuds[$i]->texte == '(' || $this->noeuds[$i]->texte == '{') {
- array_push($parentheses, $i);
- } elseif ($this->noeuds[$i]->texte == ')' || $this->noeuds[$i]->texte == '}') {
- $pos = array_pop($parentheses);
- if (count($parentheses) == 0) {
- $sub = array_slice($this->noeuds, $pos + 1, $i - $pos - 1);
- if ($this->noeuds[$i]->texte == ')') {
- $ret[] = new expression_math(array(new expression_texte("("), new expression_math($sub), new expression_texte(")")));
- } else {
- $ret[] = new expression_math($sub);
- }
- }
- } elseif (count($parentheses) == 0) {
- $ret[] = $this->noeuds[$i];
- }
- }
- $ret = $this->traite_fonction($ret, 'sqrt', 1);
- $ret = $this->traite_fonction($ret, 'vec', 1);
- $ret = $this->traite_fonction($ret, 'overline', 1);
- $ret = $this->traite_fonction($ret, 'underline', 1);
- $ret = $this->traite_fonction($ret, 'hat', 1);
- $ret = $this->traite_fonction($ret, 'int', 3);
- $ret = $this->traite_fonction($ret, 'doubleint', 3);
- $ret = $this->traite_fonction($ret, 'tripleint', 3);
- $ret = $this->traite_fonction($ret, 'oint', 3);
- $ret = $this->traite_fonction($ret, 'prod', 3);
- $ret = $this->traite_fonction($ret, 'sum', 3);
- $ret = $this->traite_fonction($ret, 'bigcup', 3);
- $ret = $this->traite_fonction($ret, 'bigcap', 3);
- $ret = $this->traite_fonction($ret, 'delim', 3);
- $ret = $this->traite_fonction($ret, 'lim', 2);
- $ret = $this->traite_fonction($ret, 'root', 2);
- $ret = $this->traite_fonction($ret, 'matrix', 3);
- $ret = $this->traite_fonction($ret, 'tabular', 3);
-
- $ret = $this->traite_operation($ret, '^');
- $ret = $this->traite_operation($ret, 'over');
- $ret = $this->traite_operation($ret, '_');
- $ret = $this->traite_operation($ret, 'under');
- $ret = $this->traite_operation($ret, '*');
- $ret = $this->traite_operation($ret, '/');
- $ret = $this->traite_operation($ret, '+');
- $ret = $this->traite_operation($ret, '-');
- return $ret;
- }
-
- function traite_operation($noeuds, $operation)
- {
- do {
- $change = false;
- if (count($noeuds) <= 3) {
- return $noeuds;
- }
- $ret = array();
- for ($i = 0; $i < count($noeuds); $i++) {
- if (!$change && $i < count($noeuds) - 2 && $noeuds[$i + 1]->texte == $operation) {
- $ret[] = new expression_math(array($noeuds[$i], $noeuds[$i + 1], $noeuds[$i + 2]));
- $i += 2;
- $change = true;
- } else {
- $ret[] = $noeuds[$i];
- }
- }
- $noeuds = $ret;
- } while ($change);
- return $ret;
- }
-
- function traite_fonction($noeuds, $fonction, $nbarg)
- {
- if (count($noeuds) <= $nbarg + 1) {
- return $noeuds;
- }
- $ret = array();
- for ($i = 0; $i < count($noeuds); $i++) {
- if ($i < count($noeuds) - $nbarg && $noeuds[$i]->texte == $fonction) {
- $a = array();
- for ($j = $i; $j <= $i + $nbarg; $j++) {
- $a[] = $noeuds[$j];
- }
- $ret[] = new expression_math($a);
- $i += $nbarg;
- } else {
- $ret[] = $noeuds[$i];
- }
- }
- return $ret;
- }
-
- function dessine($taille)
- {
- switch (count($this->noeuds)) {
- case 1:
- $this->noeuds[0]->dessine($taille);
- $this->image = $this->noeuds[0]->image;
- $this->base_verticale = $this->noeuds[0]->base_verticale;
- break;
- case 2:
- switch ($this->noeuds[0]->texte) {
- case 'sqrt':
- $this->dessine_racine($taille);
- break;
- case 'vec':
- $this->dessine_vecteur($taille);
- break;
- case 'overline':
- $this->dessine_overline($taille);
- break;
- case 'underline':
- $this->dessine_underline($taille);
- break;
- case 'hat':
- $this->dessine_chapeau($taille);
- break;
- default:
- $this->dessine_expression($taille);
- break;
- }
- break;
- case 3:
- if ($this->noeuds[0]->texte == "lim") {
- $this->dessine_limite($taille);
- } elseif ($this->noeuds[0]->texte == "root") {
- $this->dessine_root($taille);
- } else {
- switch ($this->noeuds[1]->texte) {
- case '/':
- $this->dessine_fraction($taille);
- break;
- case '^':
- $this->dessine_exposant($taille);
- break;
- case 'over':
- $this->dessine_dessus($taille);
- break;
- case '_':
- $this->dessine_indice($taille);
- break;
- case 'under':
- $this->dessine_dessous($taille);
- break;
- default:
- $this->dessine_expression($taille);
- break;
- }
- }
- break;
- case 4:
- switch ($this->noeuds[0]->texte) {
- case 'int':
- $this->dessine_grandoperateur($taille, '_integrale');
- break;
- case 'doubleint':
- $this->dessine_grandoperateur($taille, '_dintegrale');
- break;
- case 'tripleint':
- $this->dessine_grandoperateur($taille, '_tintegrale');
- break;
- case 'oint':
- $this->dessine_grandoperateur($taille, '_ointegrale');
- break;
- case 'sum':
- $this->dessine_grandoperateur($taille, '_somme');
- break;
- case 'prod':
- $this->dessine_grandoperateur($taille, '_produit');
- break;
- case 'bigcap':
- $this->dessine_grandoperateur($taille, '_intersection');
- break;
- case 'bigcup':
- $this->dessine_grandoperateur($taille, '_reunion');
- break;
- case 'delim':
- $this->dessine_delimiteur($taille);
- break;
- case 'matrix':
- $this->dessine_matrice($taille);
- break;
- case 'tabular':
- $this->dessine_tableau($taille);
- break;
- default:
- $this->dessine_expression($taille);
- break;
- }
- break;
- default:
- $this->dessine_expression($taille);
- break;
- }
- }
-
- function dessine_expression($taille)
- {
- $largeur = 1;
- $hauteur = 1;
- $dessus = 1;
- $dessous = 1;
- for ($i = 0; $i < count($this->noeuds); $i++) {
- if ($this->noeuds[$i]->texte != '(' && $this->noeuds[$i]->texte != ')') {
- $this->noeuds[$i]->dessine($taille);
- $img[$i] = $this->noeuds[$i]->image;
- $base[$i] = $this->noeuds[$i]->base_verticale;
- $dessus = max($base[$i], $dessus);
- $dessous = max(imagesy($img[$i]) - $base[$i], $dessous);
- }
- }
- $hauteur = $dessus + $dessous;
- $paro = parenthese(max($dessus, $dessous) * 2, "(");
- $parf = parenthese(max($dessus, $dessous) * 2, ")");
- for ($i = 0; $i < count($this->noeuds); $i++) {
- if (!isset($img[$i])) {
- if ($this->noeuds[$i]->texte == "(") {
- $img[$i] = $paro;
- } else {
- $img[$i] = $parf;
- }
- $dessus = max(imagesy($img[$i]) / 2, $dessus);
- $base[$i] = imagesy($img[$i]) / 2;
- $dessous = max(imagesy($img[$i]) - $base[$i], $dessous);
- $hauteur = max(imagesy($img[$i]), $hauteur);
- }
- $largeur+=imagesx($img[$i]);
- }
- $this->base_verticale = $dessus;
- $result = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($result, 0, 0, 0);
- $blanc = imagecolorallocate($result, 255, 255, 255);
- $blanc = imagecolortransparent($result, $blanc);
- imagefilledrectangle($result, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- $pos = 0;
- for ($i = 0; $i < count($img); $i++) {
- if (isset($img[$i])) {
- imagecopy($result, $img[$i], $pos, $dessus - $base[$i], 0, 0, imagesx($img[$i]), imagesy($img[$i]));
- $pos += imagesx($img[$i]);
- }
- }
- $this->image = $result;
- }
-
- function dessine_fraction($taille)
- {
- $this->noeuds[0]->dessine($taille * 0.9);
- $img1 = $this->noeuds[0]->image;
- $base1 = $this->noeuds[0]->base_verticale;
- $this->noeuds[2]->dessine($taille * 0.9);
- $img2 = $this->noeuds[2]->image;
- $base2 = $this->noeuds[2]->base_verticale;
- $hauteur1 = imagesy($img1);
- $hauteur2 = imagesy($img2);
- $largeur1 = imagesx($img1);
- $largeur2 = imagesx($img2);
- $largeur = max($largeur1, $largeur2);
- $hauteur = $hauteur1 + $hauteur2 + 4;
- $result = imagecreate(max($largeur + 5, 1), max($hauteur, 1));
- $noir = imagecolorallocate($result, 0, 0, 0);
- $blanc = imagecolorallocate($result, 255, 255, 255);
- $blanc = imagecolortransparent($result, $blanc);
- $this->base_verticale = $hauteur1 + 2;
- imagefilledrectangle($result, 0, 0, $largeur + 4, $hauteur - 1, $blanc);
- imagecopy($result, $img1, ($largeur - $largeur1) / 2, 0, 0, 0, $largeur1, $hauteur1);
- imageline($result, 0, $this->base_verticale, $largeur, $this->base_verticale, $noir);
- imagecopy($result, $img2, ($largeur - $largeur2) / 2, $hauteur1 + 4, 0, 0, $largeur2, $hauteur2);
- $this->image = $result;
- }
-
- function dessine_exposant($taille)
- {
- $this->noeuds[0]->dessine($taille);
- $img1 = $this->noeuds[0]->image;
- $base1 = $this->noeuds[0]->base_verticale;
- $this->noeuds[2]->dessine($taille * 0.8);
- $img2 = $this->noeuds[2]->image;
- $base2 = $this->noeuds[2]->base_verticale;
- $hauteur1 = imagesy($img1);
- $hauteur2 = imagesy($img2);
- $largeur1 = imagesx($img1);
- $largeur2 = imagesx($img2);
- $largeur = $largeur1 + $largeur2;
- if ($hauteur1 >= $hauteur2) {
- $hauteur = ceil($hauteur2 / 2 + $hauteur1);
- $this->base_verticale = $hauteur2 / 2 + $base1;
- $result = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($result, 0, 0, 0);
- $blanc = imagecolorallocate($result, 255, 255, 255);
- $blanc = imagecolortransparent($result, $blanc);
- imagefilledrectangle($result, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagecopy($result, $img1, 0, ceil($hauteur2 / 2), 0, 0, $largeur1, $hauteur1);
- imagecopy($result, $img2, $largeur1, 0, 0, 0, $largeur2, $hauteur2);
- } else {
- $hauteur = ceil($hauteur1 / 2 + $hauteur2);
- $this->base_verticale = $hauteur2 - $base1 + $hauteur1 / 2;
- $result = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($result, 0, 0, 0);
- $blanc = imagecolorallocate($result, 255, 255, 255);
- $blanc = imagecolortransparent($result, $blanc);
- imagefilledrectangle($result, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagecopy($result, $img1, 0, ceil($hauteur2 - $hauteur1 / 2), 0, 0, $largeur1, $hauteur1);
- imagecopy($result, $img2, $largeur1, 0, 0, 0, $largeur2, $hauteur2);
- }
- $this->image = $result;
- }
-
- function dessine_indice($taille)
- {
- $this->noeuds[0]->dessine($taille);
- $img1 = $this->noeuds[0]->image;
- $base1 = $this->noeuds[0]->base_verticale;
- $this->noeuds[2]->dessine($taille * 0.8);
- $img2 = $this->noeuds[2]->image;
- $base2 = $this->noeuds[2]->base_verticale;
- $hauteur1 = imagesy($img1);
- $hauteur2 = imagesy($img2);
- $largeur1 = imagesx($img1);
- $largeur2 = imagesx($img2);
- $largeur = $largeur1 + $largeur2;
- if ($hauteur1 >= $hauteur2) {
- $hauteur = ceil($hauteur2 / 2 + $hauteur1);
- $this->base_verticale = $base1;
- $result = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($result, 0, 0, 0);
- $blanc = imagecolorallocate($result, 255, 255, 255);
- $blanc = imagecolortransparent($result, $blanc);
- imagefilledrectangle($result, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagecopy($result, $img1, 0, 0, 0, 0, $largeur1, $hauteur1);
- imagecopy($result, $img2, $largeur1, ceil($hauteur1 - $hauteur2 / 2), 0, 0, $largeur2, $hauteur2);
- } else {
- $hauteur = ceil($hauteur1 / 2 + $hauteur2);
- $this->base_verticale = $base1;
- $result = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($result, 0, 0, 0);
- $blanc = imagecolorallocate($result, 255, 255, 255);
- $blanc = imagecolortransparent($result, $blanc);
- imagefilledrectangle($result, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagecopy($result, $img1, 0, 0, 0, 0, $largeur1, $hauteur1);
- imagecopy($result, $img2, $largeur1, ceil($hauteur1 / 2), 0, 0, $largeur2, $hauteur2);
- }
- $this->image = $result;
- }
-
- function dessine_racine($taille)
- {
- $this->noeuds[1]->dessine($taille);
- $imgexp = $this->noeuds[1]->image;
- $baseexp = $this->noeuds[1]->base_verticale;
- $largeurexp = imagesx($imgexp);
- $hauteurexp = imagesy($imgexp);
-
- $imgrac = affiche_symbol("_racine", $hauteurexp + 2);
- $largeurrac = imagesx($imgrac);
- $hauteurrac = imagesy($imgrac);
- $baserac = $hauteurrac / 2;
-
- $largeur = $largeurrac + $largeurexp;
- $hauteur = max($hauteurexp, $hauteurrac);
- $result = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($result, 0, 0, 0);
- $blanc = imagecolorallocate($result, 255, 255, 255);
- $blanc = imagecolortransparent($result, $blanc);
- imagefilledrectangle($result, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagecopy($result, $imgrac, 0, 0, 0, 0, $largeurrac, $hauteurrac);
- imagecopy($result, $imgexp, $largeurrac, $hauteur - $hauteurexp, 0, 0, $largeurexp, $hauteurexp);
- imagesetthickness($result, 1);
- imageline($result, $largeurrac - 2, 2, $largeurrac + $largeurexp + 2, 2, $noir);
- $this->base_verticale = $hauteur - $hauteurexp + $baseexp;
- $this->image = $result;
- }
-
- function dessine_root($taille)
- {
- $this->noeuds[1]->dessine($taille * 0.6);
- $imgroot = $this->noeuds[1]->image;
- $baseroot = $this->noeuds[1]->base_verticale;
- $largeurroot = imagesx($imgroot);
- $hauteurroot = imagesy($imgroot);
-
- $this->noeuds[2]->dessine($taille);
- $imgexp = $this->noeuds[2]->image;
- $baseexp = $this->noeuds[2]->base_verticale;
- $largeurexp = imagesx($imgexp);
- $hauteurexp = imagesy($imgexp);
-
- $imgrac = affiche_symbol("_racine", $hauteurexp + 2);
- $largeurrac = imagesx($imgrac);
- $hauteurrac = imagesy($imgrac);
- $baserac = $hauteurrac / 2;
-
- $largeur = $largeurrac + $largeurexp;
- $hauteur = max($hauteurexp, $hauteurrac);
- $result = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($result, 0, 0, 0);
- $blanc = imagecolorallocate($result, 255, 255, 255);
- $blanc = imagecolortransparent($result, $blanc);
- imagefilledrectangle($result, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagecopy($result, $imgrac, 0, 0, 0, 0, $largeurrac, $hauteurrac);
- imagecopy($result, $imgexp, $largeurrac, $hauteur - $hauteurexp, 0, 0, $largeurexp, $hauteurexp);
- imagesetthickness($result, 1);
- imageline($result, $largeurrac - 2, 2, $largeurrac + $largeurexp + 2, 2, $noir);
- imagecopy($result, $imgroot, 0, 0, 0, 0, $largeurroot, $hauteurroot);
- $this->base_verticale = $hauteur - $hauteurexp + $baseexp;
- $this->image = $result;
- }
-
- function dessine_grandoperateur($taille, $caractere)
- {
- $this->noeuds[1]->dessine($taille * 0.8);
- $img1 = $this->noeuds[1]->image;
- $base1 = $this->noeuds[1]->base_verticale;
- $this->noeuds[2]->dessine($taille * 0.8);
- $img2 = $this->noeuds[2]->image;
- $base2 = $this->noeuds[2]->base_verticale;
- $this->noeuds[3]->dessine($taille);
- $imgexp = $this->noeuds[3]->image;
- $baseexp = $this->noeuds[3]->base_verticale;
-//borneinf
- $largeur1 = imagesx($img1);
- $hauteur1 = imagesy($img1);
-//bornesup
- $largeur2 = imagesx($img2);
- $hauteur2 = imagesy($img2);
-//expression
- $hauteurexp = imagesy($imgexp);
- $largeurexp = imagesx($imgexp);
-//caractere
- $imgsymbole = affiche_symbol($caractere, $baseexp * 1.8); //max($baseexp,$hauteurexp-$baseexp)*2);
- $largeursymbole = imagesx($imgsymbole);
- $hauteursymbole = imagesy($imgsymbole);
- $basesymbole = $hauteursymbole / 2;
-
- $hauteurgauche = $hauteursymbole + $hauteur1 + $hauteur2;
- $largeurgauche = max($largeursymbole, $largeur1, $largeur2);
- $imggauche = imagecreate(max($largeurgauche, 1), max($hauteurgauche, 1));
- $noir = imagecolorallocate($imggauche, 0, 0, 0);
- $blanc = imagecolorallocate($imggauche, 255, 255, 255);
- $blanc = imagecolortransparent($imggauche, $blanc);
- imagefilledrectangle($imggauche, 0, 0, $largeurgauche - 1, $hauteurgauche - 1, $blanc);
- imagecopy($imggauche, $imgsymbole, ($largeurgauche - $largeursymbole) / 2, $hauteur2, 0, 0, $largeursymbole, $hauteursymbole);
- imagecopy($imggauche, $img2, ($largeurgauche - $largeur2) / 2, 0, 0, 0, $largeur2, $hauteur2);
- imagecopy($imggauche, $img1, ($largeurgauche - $largeur1) / 2, $hauteur2 + $hauteursymbole, 0, 0, $largeur1, $hauteur1);
- $imgfin = alignement2($imggauche, $basesymbole + $hauteur2, $imgexp, $baseexp);
- $this->image = $imgfin;
- $this->base_verticale = max($basesymbole + $hauteur2, $baseexp + $hauteur2);
- }
-
- function dessine_dessus($taille)
- {
- $this->noeuds[2]->dessine($taille * 0.8);
- $imgsup = $this->noeuds[2]->image;
- $basesup = $this->noeuds[2]->base_verticale;
- $this->noeuds[0]->dessine($taille);
- $imgexp = $this->noeuds[0]->image;
- $baseexp = $this->noeuds[0]->base_verticale;
-//expression
- $largeurexp = imagesx($imgexp);
- $hauteurexp = imagesy($imgexp);
-//bornesup
- $largeursup = imagesx($imgsup);
- $hauteursup = imagesy($imgsup);
-//fin
- $hauteur = $hauteurexp + $hauteursup;
- $largeur = max($largeursup, $largeurexp) + ceil($taille / 8);
- $imgfin = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($imgfin, 0, 0, 0);
- $blanc = imagecolorallocate($imgfin, 255, 255, 255);
- $blanc = imagecolortransparent($imgfin, $blanc);
- imagefilledrectangle($imgfin, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagecopy($imgfin, $imgsup, ($largeur - $largeursup) / 2, 0, 0, 0, $largeursup, $hauteursup);
- imagecopy($imgfin, $imgexp, ($largeur - $largeurexp) / 2, $hauteursup, 0, 0, $largeurexp, $hauteurexp);
- $this->image = $imgfin;
- $this->base_verticale = $baseexp + $hauteursup;
- }
-
- function dessine_dessous($taille)
- {
- $this->noeuds[2]->dessine($taille * 0.8);
- $imginf = $this->noeuds[2]->image;
- $baseinf = $this->noeuds[2]->base_verticale;
- $this->noeuds[0]->dessine($taille);
- $imgexp = $this->noeuds[0]->image;
- $baseexp = $this->noeuds[0]->base_verticale;
-//expression
- $largeurexp = imagesx($imgexp);
- $hauteurexp = imagesy($imgexp);
-//borneinf
- $largeurinf = imagesx($imginf);
- $hauteurinf = imagesy($imginf);
-//fin
- $hauteur = $hauteurexp + $hauteurinf;
- $largeur = max($largeurinf, $largeurexp) + ceil($taille / 8);
- $imgfin = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($imgfin, 0, 0, 0);
- $blanc = imagecolorallocate($imgfin, 255, 255, 255);
- $blanc = imagecolortransparent($imgfin, $blanc);
- imagefilledrectangle($imgfin, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagecopy($imgfin, $imgexp, ($largeur - $largeurexp) / 2, 0, 0, 0, $largeurexp, $hauteurexp);
- imagecopy($imgfin, $imginf, ($largeur - $largeurinf) / 2, $hauteurexp, 0, 0, $largeurinf, $hauteurinf);
- $this->image = $imgfin;
- $this->base_verticale = $baseexp;
- }
-
- function dessine_matrice($taille)
- {
- $padding = 8;
- $nbligne = $this->noeuds[1]->noeuds[0]->texte;
- $nbcolonne = $this->noeuds[2]->noeuds[0]->texte;
- $largeur_case = 0;
- $hauteur_case = 0;
-
- for ($ligne = 0; $ligne < $nbligne; $ligne++) {
- $hauteur_ligne[$ligne] = 0;
- $dessus_ligne[$ligne] = 0;
- }
- for ($col = 0; $col < $nbcolonne; $col++) {
- $largeur_colonne[$col] = 0;
- }
- $i = 0;
- for ($ligne = 0; $ligne < $nbligne; $ligne++) {
- for ($col = 0; $col < $nbcolonne; $col++) {
- if ($i < count($this->noeuds[3]->noeuds)) {
- $this->noeuds[3]->noeuds[$i]->dessine($taille * 0.9);
- $img[$i] = $this->noeuds[3]->noeuds[$i]->image;
- $base[$i] = $this->noeuds[3]->noeuds[$i]->base_verticale;
- $dessus_ligne[$ligne] = max($base[$i], $dessus_ligne[$ligne]);
- $largeur[$i] = imagesx($img[$i]);
- $hauteur[$i] = imagesy($img[$i]);
- $hauteur_ligne[$ligne] = max($hauteur_ligne[$ligne], $hauteur[$i]);
- $largeur_colonne[$col] = max($largeur_colonne[$col], $largeur[$i]);
- }
- $i++;
- }
- }
-
- $hauteurfin = 0;
- $largeurfin = 0;
- for ($ligne = 0; $ligne < $nbligne; $ligne++) {
- $hauteurfin+=$hauteur_ligne[$ligne] + $padding;
- }
- for ($col = 0; $col < $nbcolonne; $col++) {
- $largeurfin+=$largeur_colonne[$col] + $padding;
- }
- $hauteurfin-=$padding;
- $largeurfin-=$padding;
- $imgfin = imagecreate(max($largeurfin, 1), max($hauteurfin, 1));
- $noir = imagecolorallocate($imgfin, 0, 0, 0);
- $blanc = imagecolorallocate($imgfin, 255, 255, 255);
- $blanc = imagecolortransparent($imgfin, $blanc);
- imagefilledrectangle($imgfin, 0, 0, $largeurfin - 1, $hauteurfin - 1, $blanc);
- $i = 0;
- $h = $padding / 2 - 1;
- for ($ligne = 0; $ligne < $nbligne; $ligne++) {
- $l = $padding / 2 - 1;
- for ($col = 0; $col < $nbcolonne; $col++) {
- if ($i < count($this->noeuds[3]->noeuds)) {
- imagecopy($imgfin, $img[$i], $l + ceil($largeur_colonne[$col] - $largeur[$i]) / 2, $h + $dessus_ligne[$ligne] - $base[$i], 0, 0, $largeur[$i], $hauteur[$i]);
- //ImageRectangle($imgfin,$l,$h,$l+$largeur_colonne[$col],$h+$hauteur_ligne[$ligne],$noir);
- }
- $l+=$largeur_colonne[$col] + $padding;
- $i++;
- }
- $h+=$hauteur_ligne[$ligne] + $padding;
- }
-//ImageRectangle($imgfin,0,0,$largeurfin-1,$hauteurfin-1,$noir);
- $this->image = $imgfin;
- $this->base_verticale = imagesy($imgfin) / 2;
- }
-
- function dessine_tableau($taille)
- {
- $padding = 8;
- $typeligne = $this->noeuds[1]->noeuds[0]->texte;
- $typecolonne = $this->noeuds[2]->noeuds[0]->texte;
- $nbligne = strlen($typeligne) - 1;
- $nbcolonne = strlen($typecolonne) - 1;
- $largeur_case = 0;
- $hauteur_case = 0;
-
- for ($ligne = 0; $ligne < $nbligne; $ligne++) {
- $hauteur_ligne[$ligne] = 0;
- $dessus_ligne[$ligne] = 0;
- }
- for ($col = 0; $col < $nbcolonne; $col++) {
- $largeur_colonne[$col] = 0;
- }
- $i = 0;
- for ($ligne = 0; $ligne < $nbligne; $ligne++) {
- for ($col = 0; $col < $nbcolonne; $col++) {
- if ($i < count($this->noeuds[3]->noeuds)) {
- $this->noeuds[3]->noeuds[$i]->dessine($taille * 0.9);
- $img[$i] = $this->noeuds[3]->noeuds[$i]->image;
- $base[$i] = $this->noeuds[3]->noeuds[$i]->base_verticale;
- $dessus_ligne[$ligne] = max($base[$i], $dessus_ligne[$ligne]);
- $largeur[$i] = imagesx($img[$i]);
- $hauteur[$i] = imagesy($img[$i]);
- $hauteur_ligne[$ligne] = max($hauteur_ligne[$ligne], $hauteur[$i]);
- $largeur_colonne[$col] = max($largeur_colonne[$col], $largeur[$i]);
- }
- $i++;
- }
- }
-
- $hauteurfin = 0;
- $largeurfin = 0;
- for ($ligne = 0; $ligne < $nbligne; $ligne++) {
- $hauteurfin+=$hauteur_ligne[$ligne] + $padding;
- }
- for ($col = 0; $col < $nbcolonne; $col++) {
- $largeurfin+=$largeur_colonne[$col] + $padding;
- }
- $imgfin = imagecreate(max($largeurfin, 1), max($hauteurfin, 1));
- $noir = imagecolorallocate($imgfin, 0, 0, 0);
- $blanc = imagecolorallocate($imgfin, 255, 255, 255);
- $blanc = imagecolortransparent($imgfin, $blanc);
- imagefilledrectangle($imgfin, 0, 0, $largeurfin - 1, $hauteurfin - 1, $blanc);
- $i = 0;
- $h = $padding / 2 - 1;
- if (substr($typeligne, 0, 1) == "1") {
- ImageLine($imgfin, 0, 0, $largeurfin - 1, 0, $noir);
- }
- for ($ligne = 0; $ligne < $nbligne; $ligne++) {
- $l = $padding / 2 - 1;
- if (substr($typecolonne, 0, 1) == "1") {
- ImageLine($imgfin, 0, $h - $padding / 2, 0, $h + $hauteur_ligne[$ligne] + $padding / 2, $noir);
- }
- for ($col = 0; $col < $nbcolonne; $col++) {
- if ($i < count($this->noeuds[3]->noeuds)) {
- imagecopy($imgfin, $img[$i], $l + ceil($largeur_colonne[$col] - $largeur[$i]) / 2, $h + $dessus_ligne[$ligne] - $base[$i], 0, 0, $largeur[$i], $hauteur[$i]);
- if (substr($typecolonne, $col + 1, 1) == "1") {
- ImageLine($imgfin, $l + $largeur_colonne[$col] + $padding / 2, $h - $padding / 2, $l + $largeur_colonne[$col] + $padding / 2, $h + $hauteur_ligne[$ligne] + $padding / 2, $noir);
- }
- }
- $l+=$largeur_colonne[$col] + $padding;
- $i++;
- }
- if (substr($typeligne, $ligne + 1, 1) == "1") {
- ImageLine($imgfin, 0, $h + $hauteur_ligne[$ligne] + $padding / 2, $largeurfin - 1, $h + $hauteur_ligne[$ligne] + $padding / 2, $noir);
- }
- $h+=$hauteur_ligne[$ligne] + $padding;
- }
- $this->image = $imgfin;
- $this->base_verticale = imagesy($imgfin) / 2;
- }
-
- function dessine_vecteur($taille)
- {
-//expression
- $this->noeuds[1]->dessine($taille);
- $imgexp = $this->noeuds[1]->image;
- $baseexp = $this->noeuds[1]->base_verticale;
- $largeurexp = imagesx($imgexp);
- $hauteurexp = imagesy($imgexp);
-//fleche
- $imgsup = affiche_symbol("right", 16);
- $largeursup = imagesx($imgsup);
- $hauteursup = imagesy($imgsup);
-//fin
- $hauteur = $hauteurexp + $hauteursup;
- $largeur = $largeurexp;
- $imgfin = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($imgfin, 0, 0, 0);
- $blanc = imagecolorallocate($imgfin, 255, 255, 255);
- $blanc = imagecolortransparent($imgfin, $blanc);
- imagefilledrectangle($imgfin, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagecopy($imgfin, $imgsup, $largeur - 6, 0, $largeursup - 6, 0, $largeursup, $hauteursup);
- imagesetthickness($imgfin, 1);
- imageline($imgfin, 0, 6, $largeur - 4, 6, $noir);
- imagecopy($imgfin, $imgexp, ($largeur - $largeurexp) / 2, $hauteursup, 0, 0, $largeurexp, $hauteurexp);
- $this->image = $imgfin;
- $this->base_verticale = $baseexp + $hauteursup;
- }
-
- function dessine_overline($taille)
- {
-//expression
- $this->noeuds[1]->dessine($taille);
- $imgexp = $this->noeuds[1]->image;
- $baseexp = $this->noeuds[1]->base_verticale;
- $largeurexp = imagesx($imgexp);
- $hauteurexp = imagesy($imgexp);
-
- $hauteur = $hauteurexp + 2;
- $largeur = $largeurexp;
- $imgfin = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($imgfin, 0, 0, 0);
- $blanc = imagecolorallocate($imgfin, 255, 255, 255);
- $blanc = imagecolortransparent($imgfin, $blanc);
- imagefilledrectangle($imgfin, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagesetthickness($imgfin, 1);
- imageline($imgfin, 0, 1, $largeur, 1, $noir);
- imagecopy($imgfin, $imgexp, 0, 2, 0, 0, $largeurexp, $hauteurexp);
- $this->image = $imgfin;
- $this->base_verticale = $baseexp + 2;
- }
-
- function dessine_underline($taille)
- {
-//expression
- $this->noeuds[1]->dessine($taille);
- $imgexp = $this->noeuds[1]->image;
- $baseexp = $this->noeuds[1]->base_verticale;
- $largeurexp = imagesx($imgexp);
- $hauteurexp = imagesy($imgexp);
-
- $hauteur = $hauteurexp + 2;
- $largeur = $largeurexp;
- $imgfin = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($imgfin, 0, 0, 0);
- $blanc = imagecolorallocate($imgfin, 255, 255, 255);
- $blanc = imagecolortransparent($imgfin, $blanc);
- imagefilledrectangle($imgfin, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagesetthickness($imgfin, 1);
- imageline($imgfin, 0, $hauteurexp + 1, $largeur, $hauteurexp + 1, $noir);
- imagecopy($imgfin, $imgexp, 0, 0, 0, 0, $largeurexp, $hauteurexp);
- $this->image = $imgfin;
- $this->base_verticale = $baseexp;
- }
-
- function dessine_chapeau($taille)
- {
-
- $imgsup = affiche_symbol("_hat", $taille);
-
- $this->noeuds[1]->dessine($taille);
- $imgexp = $this->noeuds[1]->image;
- $baseexp = $this->noeuds[1]->base_verticale;
-//expression
- $largeurexp = imagesx($imgexp);
- $hauteurexp = imagesy($imgexp);
-//bornesup
- $largeursup = imagesx($imgsup);
- $hauteursup = imagesy($imgsup);
-//fin
- $hauteur = $hauteurexp + $hauteursup;
- $largeur = max($largeursup, $largeurexp) + ceil($taille / 8);
- $imgfin = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($imgfin, 0, 0, 0);
- $blanc = imagecolorallocate($imgfin, 255, 255, 255);
- $blanc = imagecolortransparent($imgfin, $blanc);
- imagefilledrectangle($imgfin, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagecopy($imgfin, $imgsup, ($largeur - $largeursup) / 2, 0, 0, 0, $largeursup, $hauteursup);
- imagecopy($imgfin, $imgexp, ($largeur - $largeurexp) / 2, $hauteursup, 0, 0, $largeurexp, $hauteurexp);
- $this->image = $imgfin;
- $this->base_verticale = $baseexp + $hauteursup;
- }
-
- function dessine_limite($taille)
- {
- $imglim = affiche_math("_lim", $taille);
- $largeurlim = imagesx($imglim);
- $hauteurlim = imagesy($imglim);
- $baselim = $hauteurlim / 2;
-
- $this->noeuds[1]->dessine($taille * 0.8);
- $imginf = $this->noeuds[1]->image;
- $baseinf = $this->noeuds[1]->base_verticale;
- $largeurinf = imagesx($imginf);
- $hauteurinf = imagesy($imginf);
-
- $this->noeuds[2]->dessine($taille);
- $imgexp = $this->noeuds[2]->image;
- $baseexp = $this->noeuds[2]->base_verticale;
- $largeurexp = imagesx($imgexp);
- $hauteurexp = imagesy($imgexp);
-
- $hauteur = $hauteurlim + $hauteurinf;
- $largeur = max($largeurinf, $largeurlim) + ceil($taille / 8);
- $imgfin = imagecreate(max($largeur, 1), max($hauteur, 1));
- $noir = imagecolorallocate($imgfin, 0, 0, 0);
- $blanc = imagecolorallocate($imgfin, 255, 255, 255);
- $blanc = imagecolortransparent($imgfin, $blanc);
- imagefilledrectangle($imgfin, 0, 0, $largeur - 1, $hauteur - 1, $blanc);
- imagecopy($imgfin, $imglim, ($largeur - $largeurlim) / 2, 0, 0, 0, $largeurlim, $hauteurlim);
- imagecopy($imgfin, $imginf, ($largeur - $largeurinf) / 2, $hauteurlim, 0, 0, $largeurinf, $hauteurinf);
-
- $this->image = alignement2($imgfin, $baselim, $imgexp, $baseexp);
- $this->base_verticale = max($baselim, $baseexp);
- }
-
- function dessine_delimiteur($taille)
- {
- $this->noeuds[2]->dessine($taille);
- $imgexp = $this->noeuds[2]->image;
- $baseexp = $this->noeuds[2]->base_verticale;
- $hauteurexp = imagesy($imgexp);
- if ($this->noeuds[1]->texte == "&$") {
- $imggauche = parenthese($hauteurexp, $this->noeuds[1]->noeuds[0]->texte);
- } else {
- $imggauche = parenthese($hauteurexp, $this->noeuds[1]->texte);
- }
- $basegauche = imagesy($imggauche) / 2;
- if ($this->noeuds[3]->texte == "&$") {
- $imgdroit = parenthese($hauteurexp, $this->noeuds[3]->noeuds[0]->texte);
- } else {
- $imgdroit = parenthese($hauteurexp, $this->noeuds[3]->texte);
- }
- $basedroit = imagesy($imgdroit) / 2;
- $this->image = alignement3($imggauche, $basegauche, $imgexp, $baseexp, $imgdroit, $basedroit);
- $this->base_verticale = max($basegauche, $baseexp, $basedroit);
- }
-}
-
-//******************************************************************************************
-
-function detectimg($n)
-{
- /*
- Detects if the formula image already exists in the $dirimg cache directory.
- In that case, the function returns a parameter (recorded in the name of the image file) which allows to align correctly the image with the text.
- */
- $dirimg = GlobalVar::$dirimg;
- $ret = 0;
- $handle = opendir($dirimg);
- while ($fi = readdir($handle)) {
- $info = pathinfo($fi);
- if ($fi != "." && $fi != ".." && $info["extension"] == "png" && preg_match("/^math/", $fi)) {
- list($math, $v, $name) = explode("_", $fi);
- if ($name == $n) {
- $ret = $v;
- break;
- }
- }
- }
- closedir($handle);
- return $ret;
-}
-
-function mathimage($text, $size, $pathtoimg)
-{
- /*
- Creates the formula image (if the image is not in the cache) and returns the html code.
- */
- $dirimg = GlobalVar::$dirimg;
- $nameimg = md5(trim($text) . $size) . '.png';
- $v = detectimg($nameimg);
- if ($v == 0) {
- //the image doesn't exist in the cache directory. we create it.
- $formula = new expression_math(tableau_expression(trim($text)));
- $formula->dessine($size);
- $v = 1000 - imagesy($formula->image) + $formula->base_verticale + 3;
- //1000+baseline ($v) is recorded in the name of the image
- ImagePNG($formula->image, $dirimg . "/math_" . $v . "_" . $nameimg);
- }
- $valign = $v - 1000;
- return '';
-}
-
-function mathfilter($text, $size, $pathtoimg)
-{
- /* THE MAIN FUNCTION
- 1) the content of the math tags () are extracted in the $t variable (you can replace by your own tag).
- 2) the "mathimage" function replaces the $t code by according to this method :
- - if the image corresponding to the formula doesn't exist in the $dirimg cache directory (detectimg($nameimg)=0), the script creates the image and returns the "" code.
- - otherwise, the script returns only the " code.
- To align correctly the formula image with the text, the "valign" parameter of the image is required.
- That's why a parameter (1000+valign) is recorded in the name of the image file (the "detectimg" function returns this parameter if the image exists in the cache directory)
- To be sure that the name of the image file is unique and to allow the script to retrieve the valign parameter without re-creating the image, the syntax of the image filename is :
- math_(1000+valign)_md5(formulatext.size).png.
- (1000+valign is used instead of valign directly to avoid a negative number)
- */
- $text = stripslashes($text);
- $size = max($size, 10);
- $size = min($size, 24);
- preg_match_all("|(.*?)|", $text, $regs, PREG_SET_ORDER);
- foreach ($regs as $math) {
- $t = str_replace('', '', $math[0]);
- $t = str_replace('', '', $t);
- $code = mathimage(trim($t), $size, $pathtoimg);
- $text = str_replace($math[0], $code, $text);
- }
- return $text;
-}