# -----------------------------------------------------------------------------
#
#   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.
#
# Error Messages values
#
# $Id$
# -----------------------------------------------------------------------------

SVGAccuracyTest.error.cannot.generate.svg = \
Error while generating SVG with Painter : {0} \
Got exception {1} with message {2} \
and stack trace {3}

SVGAccuracyTest.error.cannot.open.reference.svg.file = \
Cannot open reference SVG file : {0} \
Got IOException with message : {1}

SVGAccuracyTest.error.while.comparing.files = \
Error while comparing generated SVG and reference SVG {0}. \
Got IOException with message : {1}

SVGAccuracyTest.error.generated.svg.inaccurate = \
Generated SVG is inaccurate.

JPainterCompare.error.class.not.painter = \
Error: {0} is not a Painter. It does not implement the \
Painter interface.

JPainterCompare.error.could.not.instanciate.object = \
Error: Could not instanciate an object of class {0}. \
Got a {1} exception.

JPainterCompare.error.could.not.load.class = \
Error: could not load class {0}. \
Got a {1} exception.

JPainterCompare.error.could.not.transcode.to.svg = \
Error: could not transcode Painter to SVG. \
Got a {0} exception.

JPainterCompare.error.could.not.convert.file.path.to.url = \
Error: could not convert temporary file path to URL.

JPainterCompare.error.could.not.render.generated.svg = \
Error: could not render generated SVG.

#
# Config
#
JPainterCompare.config.tmp.file.prefix = \
JPainterCompareSVG_

#
# Messages
#
JPainterCompare.messages.instanciated.object = \
Instanciated object.

JPainterCompare.messages.loaded.class = \
... finished loading class {0}

JPainterCompare.messages.loading.class = \
Loading class {0} ...

JPainterCompare.messages.usage = \
Usage: org.apache.batik.svggen.JPainterCompare <className>

#
# Entry Keys
# 
SVGAccuracyTest.entry.key.error.description = \
Error Description.

SVGAccuracyTest.entry.key.line.number = \
Line number

SVGAccuracyTest.entry.key.column.number = \
Column number

SVGAccuracyTest.entry.key.column.expected.value = \
Expected column value

SVGAccuracyTest.entry.key.column.found.value = \
Found column value

SVGAccuracyTest.entry.key.reference.line = \
Reference line

SVGAccuracyTest.entry.key.new.line = \
New line
