mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Math
synced 2024-11-27 17:01:07 +00:00
LaTeXML: prevent automatic rerendering of SVG
MathMathML::renderingRequired called the getSvg function in MathLaTeXML that caused an automatic rerendering of the SVG image if it was not cached. That this rendering is triggered from the function renderingRequired is contra intutive and should be avoided. Change-Id: Ifa14f50193a05b3058624a18974c56897fcec09e
This commit is contained in:
parent
29fb1f58a2
commit
1c9383d985
|
@ -178,7 +178,7 @@ class MathLaTeXML extends MathMathML {
|
|||
* No cache is used.
|
||||
* @return boolean
|
||||
*/
|
||||
public function calulateSvg() {
|
||||
public function calculateSvg() {
|
||||
$renderer = new MathMathML( $this->getTex() );
|
||||
$renderer->setMathml( $this->getMathml() );
|
||||
$renderer->setMode( MW_MATH_LATEXML );
|
||||
|
@ -192,16 +192,22 @@ class MathLaTeXML extends MathMathML {
|
|||
return $res;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the SVG image
|
||||
* Lazy evaluation: If no SVG image exists it's generated on the fly
|
||||
*
|
||||
* @param string $render if set to 'render' (default) and no SVG image exists, the function
|
||||
* tries to generate it on the fly.
|
||||
* Otherwise, if set to 'cached', and there is no SVG in the database
|
||||
* cache, an empty string is returned.
|
||||
*
|
||||
* @return string XML-Document of the rendered SVG
|
||||
*/
|
||||
public function getSvg() {
|
||||
if ( $this->isPurge() || $this->svg == '' ) {
|
||||
$this->calulateSvg();
|
||||
public function getSvg( $render = 'render' ) {
|
||||
if ( $render == 'render' && ( $this->isPurge() || $this->svg == '' ) ) {
|
||||
$this->calculateSvg();
|
||||
}
|
||||
return $this->svg;
|
||||
return parent::getSvg( $render );
|
||||
}
|
||||
|
||||
protected function getMathTableName() {
|
||||
|
|
|
@ -107,7 +107,7 @@ class MathMathML extends MathRenderer {
|
|||
if ( $dbres ) {
|
||||
if ( $this->isValidMathML( $this->getMathml() ) ) {
|
||||
wfDebugLog( 'Math', 'Valid MathML entry found in database.' );
|
||||
if ( $this->getSvg() ) {
|
||||
if ( $this->getSvg( 'cached' ) ) {
|
||||
wfDebugLog( 'Math', 'SVG-fallback found in database.' );
|
||||
return false;
|
||||
} else {
|
||||
|
@ -214,8 +214,8 @@ class MathMathML extends MathRenderer {
|
|||
// default preserve the (broken) layout as it was
|
||||
$out = 'type=inline-TeX&q=' .rawurlencode( '{\\displaystyle ' . $input . '}' );
|
||||
} else {
|
||||
$out = 'type=tex&q=' . rawurlencode( $input );
|
||||
}
|
||||
$out = 'type=tex&q=' . rawurlencode( $input );
|
||||
}
|
||||
}
|
||||
wfDebugLog( 'Math', 'Get post data: ' . $out );
|
||||
return $out;
|
||||
|
|
|
@ -671,10 +671,16 @@ abstract class MathRenderer {
|
|||
}
|
||||
|
||||
/**
|
||||
* Gets the SVG image
|
||||
*
|
||||
* @return type
|
||||
* @param string $render if set to 'render' (default) and no SVG image exists, the function
|
||||
* tries to generate it on the fly.
|
||||
* Otherwise, if set to 'cached', and there is no SVG in the database
|
||||
* cache, an empty string is returned.
|
||||
*
|
||||
* @return string XML-Document of the rendered SVG
|
||||
*/
|
||||
public function getSvg() {
|
||||
public function getSvg( $render = 'render' ) {
|
||||
// Spaces will prevent the image from being displayed correctly in the browser
|
||||
return trim( $this->svg );
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue