openjpeg/src/bin/jpip/opj_viewer_xerces/src/JP2XMLparser.java

122 lines
4.0 KiB
Java

/*
* $Id$
*
* Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
* Copyright (c) 2002-2014, Professor Benoit Macq
* Copyright (c) 2010-2011, Kaori Hagihara
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXParseException;
import org.xml.sax.ErrorHandler;
import org.apache.xerces.parsers.DOMParser;
import org.xml.sax.InputSource;
import java.io.*;
import java.lang.Integer;
public class JP2XMLparser
{
Document document;
public static class ROIparams{
public String name = null;
public int x = 0;
public int y = 0;
public int w = 0;
public int h = 0;
}
public static class IRTparams{
public String refimg = null;
public double []mat = { 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
}
public JP2XMLparser( byte[] buf)
{
try{
InputSource source = new InputSource( new ByteArrayInputStream( buf));
DOMParser parser = new DOMParser();
parser.setErrorHandler(new MyHandler());
parser.parse( source);
document = parser.getDocument();
}
catch (Exception e) {
e.printStackTrace();
}
}
public ROIparams [] getROIparams()
{
ROIparams roi[];
NodeList elements = document.getElementsByTagName("roi");
int elementCount = elements.getLength();
roi = new ROIparams [elementCount];
for( int i = 0; i < elementCount; i++) {
Element element = (Element)elements.item(i);
roi[i] = new ROIparams();
roi[i].name = element.getAttribute( "name");
roi[i].x = Integer.parseInt( element.getAttribute( "x")) ;
roi[i].y = Integer.parseInt( element.getAttribute( "y")) ;
roi[i].w = Integer.parseInt( element.getAttribute( "w")) ;
roi[i].h = Integer.parseInt( element.getAttribute( "h")) ;
}
return roi;
}
public IRTparams getIRTparams()
{
IRTparams irt = new IRTparams();
NodeList elements = document.getElementsByTagName("irt");
int elementCount = elements.getLength();
Element element = (Element)elements.item(0);
irt.refimg = element.getAttribute( "refimg");
for( int i=1; i<=9; i++)
irt.mat[i-1] = Double.parseDouble( element.getAttribute("m" + i));
return irt;
}
}
class MyHandler implements ErrorHandler {
public void warning(SAXParseException e) {
System.out.println("Warning: line" + e.getLineNumber());
System.out.println(e.getMessage());
}
public void error(SAXParseException e) {
System.out.println("Error: line" + e.getLineNumber());
System.out.println(e.getMessage());
}
public void fatalError(SAXParseException e) {
System.out.println("Critical error: line" + e.getLineNumber());
System.out.println(e.getMessage());
}
}