# -----------------------------------------------------------------------------
#
#   Licensed to the Apache Software Foundation (ASF) under one or more
#   contributor license agreements.  See the NOTICE file distributed with
#   this work for additional information regarding copyright ownership.
#   The ASF licenses this file to You under the Apache License, Version 2.0
#   (the "License"); you may not use this file except in compliance with
#   the License.  You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
#
# $Id$
# -----------------------------------------------------------------------------

SVGConverter.error.no.sources.specified = \
Error: no source was specified.

SVGConverter.error.cannot.use.dst.file = \
Error: cannot use destination file where there are multiple sources. \
Should use a destination directory instead.

SVGConverter.error.no.srcdir.or.srcfile.specified = \
Error: no source directory or source file specified. 

SVGConverter.error.cannot.compute.destination = \
Error: no output directory specified and source is not \
a file (source causing failure is "{0}"

SVGConverter.error.cannot.access.transcoder = \
Error: cannot access transcoder for image of type {0}

SVGConverter.error.source.same.as.destination = \
Error: source is the same as destination.

SVGConverter.error.cannot.read.source = \
Error: cannot read source ({0})

SVGConverter.error.cannot.open.source = \
Error: cannot open source {0} {1}

SVGConverterURLSource.error.invalid.url = \
Error: invalid url ({0})

SVGConverter.error.unable.to.create.output.dir = \
Error: unable to create output directory

SVGConverter.error.output.not.writeable = \
Error: output not writeable {0}

SVGConverter.error.cannot.open.output.file = \
Error: cannot open output file ({0})

SVGConverter.error.while.rasterizing.file = \
Error while rasterizing SVG file: {0} \
Got an exception with message : {1}

SVGConverter.error.invalid.area = \
Error. Invalid area of interest. There must be exactly four integers in the area value. \
The value was: {0}

SVGConverter.error.invalid.area.x.problem = \
Error. Invalid area of interest. Start x is after end x. \
The value was: {0}

SVGConverter.error.invalid.area.y.problem = \
Error. Invalid area of interest. Start y is after end y. \
The value was: {0}


Main.usage = \
SVG Rasterizer options are: \n \
 -d <dir|file>   \n \
\toutput directory. If there is a single input file, this can be a file. \n \
 -m <mimeType>   \n \
\toutput mime type. \n \
 -w <width>      \n \
\toutput width. This is a floating point value. \n \
 -h <height>     \n \
\toutput height. This is a floating point value. \n \
 -maxw <width>      \n \
\tMaximum output width. This is a floating point value. \n \
 -maxh <height>     \n \
\tMaximum output height. This is a floating point value. \n \
 -a <area>       \n \
\toutput area. The format for <area> is x,y,w,h, where x, y, w and h \n \
\tare floating point values. \n \
 -bg <color>     \n \
\touput color. The format for <color> is a.r.g.b, where a, r, g and b \n \
\tare integer values. \n \
 -cssMedia <media> \n \
\tCSS media type for which the source SVG files should be \n \
\tconverted.\n \
 -cssAlternate <alternate> \n \
\tCSS alternate stylesheet to use when converting the source \n \
\tSVG files. \n \
 -cssUser <userStylesheet> \n \
\tCSS user stylesheet URI to apply to converted SVG documents \n \
\tin addition to any other referened or embeded stylesheets. \n \
 -font-family <defaultFontFamily> \n \
\tValue used as a default when no font-family value \n \
\tis specified. \n \
 -lang <userLanguage> \n \
\tUser language to use when converting SVG documents.\n \
 -q <quality> \n \
\tQuality for the output image. This is only relevant for the \n \
\timage/jpeg mime type. \n \
 -indexed (1|2|4|8)\n \
\tReduces the image to given number of bits per pixel using an\n \
\tadaptive pallete, resulting in an Indexed image.  This is\n \
\tcurrently only supported for PNG conversion.\n \
 -dpi <resolution> \n \
\tResolution for the ouptut image. \n \
 -validate  \n \
\tControls whether the source SVG files should be validated. \n \
 -onload  \n \
\tControls if the source SVG files must be rasterize after \n \
\tdispatching the ''onload'' event. \n \
 -snapshotTime <time> \n \
\tSpecifies the document time that should be seeked to before \n \
\trasterizing the document. Specifying this option implies -onload. \n \
 -scriptSecurityOff removes any security check on the scripts running \n \
\tas a result of dispatching the onload event. \n \
 -anyScriptOrigin controls whether scripts can be loaded from \n \
\t any location. By default, scripts can only be loaded from \n \
\tthe same location as the document referencing them. \n \
 -scripts <listOfAllowedScripts> List of script types (i.e., \n \
\tvalues for the type attribute in the <script> tag) which \n \
\tshould be loaded. \n \ 


Main.cl.option.output.description = \
-d <dir|file> output directory. If there is a single input file, this can be a file. \n \
              Otherwise, it has to be a directory. \n \
              If no -d option is specified, then the output files are created in  \n \
              the same directory (or directories) as the sources. \n \
Example: -d rasters/png \n \
Default: none 

Main.cl.option.mime.type.description = \
-m <mimeType> output mime type. This should be one of: \n \
              + image/jpg \n \
              + image/jpeg \n \
              + image/jpe \n \
              + image/png \n \
              + image/tiff \n \
              + application/pdf \n\n \
Example: -m image/jpeg \n \
Default: image/png

Main.cl.option.width.description = \
-w <width> Output width. This is a floating point value. \n \
Example: -w 455.6 \n \
Default: none (which means that the images's width will be used)

Main.cl.option.height.description = \
-h <height> Output height. This is a floating point value. \n \
Example: -h 345.67 \n \
Default: none (which means that the image's height will be used)

Main.cl.option.max.width.description = \
-maxw <width> Maximum output width. This is a floating point value. \n \
Example: -maxw 455.6 \n \
Default: none (which means that the option is ignored)

Main.cl.option.max.height.description = \
-maxh <height> Maximum output height. This is a floating point value. \n \
Example: -maxh 345.67 \n \
Default: none (which means that the option is ignored)

Main.cl.option.area.description = \
-a <area> output area. The format for <area> is x,y,w,h, where x, y, w and h are \n \
          floating point values. \n \
Example: -a 40,40,300,200 \n \
Default: none (which means that the entire image will be rendered).

Mail.cl.option.bg.description = \
-bg <color> ouput color. The format for <color> is a.r.g.b, where a, r, g and b \n \
            are integer values. \n \
Example: -bg 128.255.0.0 \n \
Default: none (which means that the background is not filled with any color \n \
         before rendering the SVG file). \n \

Main.cl.option.cssMedia.description = \
-cssMedia <media> CSS media type for which the source SVG files should be \n \
                  converted.\n \
Example: -cssMedia projection \n \
Default: none (which means that the "screen" media will be used.

Main.cl.option.default.font.family.description = \
-font-family <defaultValue> Value used as a default when no font-family value \n \
                            is specified.\n \
Example: -font-family "Times, Comic Sans MS" \n \
Default: "Arial, Helvetica, sans-serif"

Main.cl.option.cssAlternate.description = \
-cssAlternate <alternate> CSS alternate stylesheet to use when converting the source \n \
                 SVG files. \n \
Example: -cssAlternate myFavoriteStylesheet \n \
Default: none

Main.cl.option.cssUser.description = \
-cssUser <userStylesheetURI> User CSS stylesheet to apply when converting SVG files. \n \
Example: -cssUser myStylesheet.css \n \
Default: none

Main.cl.option.quality.description = \
-q <quality> Quality for the generated output image. This is only used for JPEG conversion. \n \
The value should be in the [0,1] range. \n \
Example: -q 0.5 \n \
Default: 0.99

Main.cl.option.indexed.description = \
-indexed (1|2|4|8) indicates that the image should be reduced to the given number of bits per pixel using an  adaptive pallete, resulting in an Indexed image.  This is currently only supported for PNG conversion.\n \
Example: -indexed 8 \n \
Default: none

Main.cl.option.dpi.description = \
-dpi <resolution> Resolution for the output image. This is used to compute the \n \
"pixel to millimeter" ratio used when processing SVG documents. \n \
Example: -dpi 300 \n \
Default: 96

Main.cl.option.lang.description = \
-lang <language> Language to use when processing SVG documents. This is important for \n \
SVG documents containing multiple languages. \n
Example: -lang fr \n \
Default: en

Main.cl.option.validate.description = \
-validate  controls whether the source SVG files should be validated. 

Main.cl.option.onload.description = \
-onload  controls whether the source SVG files must be rasterize after \n \
dispatching the 'onload' event. 

Main.cl.option.snapshot.time.description = \
-snapshotTime <time>  Specifies the document time that should be seeked to \n \
before rasterizing the document. Specifying this option implies -onload. \n \
Example: -snapshotTime 17.5s \n \
Default: 0s

Main.cl.option.allowed.scripts.description = \
-scripts <listOfAllowedScripts> List of script types (i.e., values for the type attribute \
in the <script> tag) which should be loaded. \n \ 
Example: -scripts text/ecmascript \n \
Default: text/ecmascript,application/java-archive

Main.cl.option.constrain.script.origin.description = \
-anyScriptOrigin controls whether scripts can be loaded from any location. By default, \
scripts can only be loaded from the same location as the document referencing them.

Main.cl.option.script.security.off.description = \
-scriptSecurityOff removes any security check on the scripts running \n \
as a result of dispatching the onload event. \n \

#
# Main error codes
#

Main.error.not.enough.option.values = \
Error: not enough option values for option {0} \n \
{1}

Main.error.illegal.argument = \
Error: illegal argument for option {0} : {2} \n \
{1}

Main.error.while.converting.files = \
Error while converting files: \n \
{0}


#
# Main messages
#
Main.message.about.to.transcode = \
About to transcode {0} SVG file(s)\n

Main.message.about.to.transcode.source = \
Converting {0} to {1} ... 

Main.message.conversion.failed = \
... error ({0})

Main.message.conversion.success = \
... success
