mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2025-08-04 12:05:29 -04:00
Implemented getImageTypes
Added destination support Fixed a few bugs, to make readers pass tests
This commit is contained in:
parent
fa69918adb
commit
20a61daa0e
@ -60,6 +60,7 @@ import java.awt.image.BufferedImage;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -119,6 +120,16 @@ public class SVGImageReader extends ImageReaderBase {
|
|||||||
baseURI = svgParam.getBaseURI();
|
baseURI = svgParam.getBaseURI();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Dimension size;
|
||||||
|
if (pParam != null && (size = pParam.getSourceRenderSize()) != null) {
|
||||||
|
// Use size...
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
size = new Dimension(getWidth(pIndex), getHeight(pIndex));
|
||||||
|
}
|
||||||
|
|
||||||
|
BufferedImage destination = getDestination(pParam, getImageTypes(pIndex), size.width, size.height);
|
||||||
|
|
||||||
// Read in the image, using the Batik Transcoder
|
// Read in the image, using the Batik Transcoder
|
||||||
try {
|
try {
|
||||||
processImageStarted(pIndex);
|
processImageStarted(pIndex);
|
||||||
@ -126,9 +137,19 @@ public class SVGImageReader extends ImageReaderBase {
|
|||||||
mRasterizer.mTranscoderInput.setURI(baseURI);
|
mRasterizer.mTranscoderInput.setURI(baseURI);
|
||||||
BufferedImage image = mRasterizer.getImage();
|
BufferedImage image = mRasterizer.getImage();
|
||||||
|
|
||||||
|
Graphics2D g = destination.createGraphics();
|
||||||
|
try {
|
||||||
|
g.setComposite(AlphaComposite.Src);
|
||||||
|
g.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
|
||||||
|
g.drawImage(image, 0, 0, null); // TODO: Dest offset?
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
g.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
processImageComplete();
|
processImageComplete();
|
||||||
|
|
||||||
return image;
|
return destination;
|
||||||
}
|
}
|
||||||
catch (TranscoderException e) {
|
catch (TranscoderException e) {
|
||||||
throw new IIOException(e.getMessage(), e);
|
throw new IIOException(e.getMessage(), e);
|
||||||
@ -220,7 +241,7 @@ public class SVGImageReader extends ImageReaderBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex) throws IOException {
|
public Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex) throws IOException {
|
||||||
throw new UnsupportedOperationException("Method getImageTypes not implemented");// TODO: Implement
|
return Collections.singleton(ImageTypeSpecifier.createFromRenderedImage(mRasterizer.createImage(1, 1))).iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -153,6 +153,13 @@ public class SVGImageReaderSpi extends ImageReaderSpi {
|
|||||||
@Override
|
@Override
|
||||||
public void onRegistration(ServiceRegistry registry, Class<?> category) {
|
public void onRegistration(ServiceRegistry registry, Class<?> category) {
|
||||||
if (!SVG_READER_AVAILABLE) {
|
if (!SVG_READER_AVAILABLE) {
|
||||||
|
try {
|
||||||
|
new SVGImageReader(this);
|
||||||
|
}
|
||||||
|
catch (Throwable t) {
|
||||||
|
t.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
IIOUtil.deregisterProvider(registry, this, category);
|
IIOUtil.deregisterProvider(registry, this, category);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
@ -129,8 +129,9 @@ public class WMFImageReader extends ImageReaderBase {
|
|||||||
return mReader.getHeight(pIndex);
|
return mReader.getHeight(pIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Iterator<ImageTypeSpecifier> getImageTypes(final int imageIndex) throws IOException {
|
public Iterator<ImageTypeSpecifier> getImageTypes(final int pImageIndex) throws IOException {
|
||||||
throw new UnsupportedOperationException("Method getImageTypes not implemented");// TODO: Implement
|
init();
|
||||||
|
return mReader.getImageTypes(pImageIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user