Brion VIBBER has uploaded a new change for review.
https://gerrit.wikimedia.org/r/62243
Change subject: Experimental $wgScoreUseSVG mode
......................................................................
Experimental $wgScoreUseSVG mode
Change-Id: I6388ad648e401548fc13b12dcfb7066ba0113515
---
M Score.body.php
M Score.php
2 files changed, 46 insertions(+), 18 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Score
refs/changes/43/62243/1
diff --git a/Score.body.php b/Score.body.php
index 3201c4b..1a6e463 100644
--- a/Score.body.php
+++ b/Score.body.php
@@ -353,6 +353,21 @@
}
/**
+ * Return the file extension used for output images
+ *
+ * @return string
+ */
+ private static function fileExtension() {
+ global $wgScoreUseSVG;
+ if ( $wgScoreUseSVG ) {
+ $ext = 'svg';
+ } else {
+ $ext = 'png';
+ }
+ return $ext;
+ }
+
+ /**
* Generates the HTML code for a score tag.
*
* @param $parser Parser MediaWiki parser.
@@ -395,6 +410,7 @@
* @throws ScoreException if an error occurs.
*/
private static function generateHTML( &$parser, $code, $options ) {
+ $ext = self::fileExtension();
$prof = new Score_ScopedProfiling( __METHOD__ );
try {
$backend = self::getBackend();
@@ -406,8 +422,8 @@
}
/* Generate PNG and MIDI files if necessary */
- $imageFileName = "{$options['file_name_prefix']}.png";
- $multi1FileName =
"{$options['file_name_prefix']}-1.png";
+ $imageFileName = "{$options['file_name_prefix']}.$ext";
+ $multi1FileName =
"{$options['file_name_prefix']}-1.$ext";
$midiFileName = "{$options['file_name_prefix']}.midi";
if (
(
@@ -461,7 +477,7 @@
} elseif ( isset( $existingFiles[$multi1Path] ) ) { //
@fixme: $multi1Path is undefined
$link = '';
for ( $i = 1; ; ++$i ) {
- $fileName =
"{$options['file_name_prefix']}-$i.png";
+ $fileName =
"{$options['file_name_prefix']}-$i.$ext";
if ( !isset( $existingFiles[$fileName]
) ) {
break;
}
@@ -548,12 +564,13 @@
}
/* Create the working environment */
+ $ext = self::fileExtension();
$factoryDirectory = $options['factory_directory'];
self::createDirectory( $factoryDirectory, 0700 );
$factoryLy = "$factoryDirectory/file.ly";
$factoryMidi = "$factoryDirectory/file.midi";
- $factoryImage = "$factoryDirectory/file.png";
- $factoryImageTrimmed = "$factoryDirectory/file-trimmed.png";
+ $factoryImage = "$factoryDirectory/file.$ext";
+ $factoryImageTrimmed = "$factoryDirectory/file-trimmed.$ext";
/* Generate LilyPond input file */
if ( $options['lang'] == 'lilypond' ) {
@@ -580,9 +597,14 @@
if ( !$rc ) {
throw new ScoreException( wfMessage( 'score-chdirerr',
$factoryDirectory ) );
}
+ if ( $ext === 'png') {
+ $mode = '-dbackend=ps --png';
+ } else {
+ $mode = '-dbackend=svg';
+ }
$cmd = wfEscapeShellArg( $wgScoreLilyPond )
. ' ' . wfEscapeShellArg( '-dsafe=#t' )
- . ' -dbackend=ps --png --header=texidoc '
+ . ' ' . $mode . ' --header=texidoc '
. wfEscapeShellArg( $factoryLy )
. ' 2>&1';
$output = wfShellExec( $cmd, $rc2 );
@@ -604,11 +626,11 @@
self::trimImage( $factoryImage,
$factoryImageTrimmed );
} else {
for ( $i = 1; ; ++$i ) {
- $src = "$factoryDirectory/file-$i.png";
+ $src = "$factoryDirectory/file-$i.$ext";
if ( !file_exists( $src ) ) {
break;
}
- $dest =
"$factoryDirectory/file-$i-trimmed.png";
+ $dest =
"$factoryDirectory/file-$i-trimmed.$ext";
self::trimImage( $src, $dest );
}
}
@@ -637,13 +659,13 @@
}
// Add the PNGs
- if ( file_exists( $factoryImageTrimmed ) ) {
- if ( $wgScoreTrim ) {
- $src = $factoryImageTrimmed;
- } else {
- $src = $factoryImage;
- }
- $dstFileName = "{$options['file_name_prefix']}.png";
+ if ( $wgScoreTrim ) {
+ $src = $factoryImageTrimmed;
+ } else {
+ $src = $factoryImage;
+ }
+ if ( file_exists( $src ) ) {
+ $dstFileName = "{$options['file_name_prefix']}.$ext";
$ops[] = array(
'op' => 'store',
'src' => $src,
@@ -653,14 +675,14 @@
} else {
for ( $i = 1; ; ++$i ) {
if ( $wgScoreTrim ) {
- $src =
"$factoryDirectory/file-$i-trimmed.png";
+ $src =
"$factoryDirectory/file-$i-trimmed.$ext";
} else {
- $src = "$factoryDirectory/file-$i.png";
+ $src = "$factoryDirectory/file-$i.$ext";
}
if ( !file_exists( $src ) ) {
break;
}
- $dstFileName =
"{$options['file_name_prefix']}-$i.png";
+ $dstFileName =
"{$options['file_name_prefix']}-$i.$ext";
$dest =
"{$options['dest_storage_path']}/$dstFileName";
$ops[] = array(
'op' => 'store',
diff --git a/Score.php b/Score.php
index dbfcf47..031fe9d 100644
--- a/Score.php
+++ b/Score.php
@@ -74,6 +74,12 @@
*/
$wgScoreFileBackend = false;
+/**
+ * Option to use SVG files instead of PNG.
+ * Warning: this does not yet provide PNG fallbacks for old browsers.
+ */
+$wgScoreUseSVG = false;
+
/*
* Extension credits
*/
--
To view, visit https://gerrit.wikimedia.org/r/62243
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6388ad648e401548fc13b12dcfb7066ba0113515
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Score
Gerrit-Branch: master
Gerrit-Owner: Brion VIBBER <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits