Skip to content

Commit 77c3305

Browse files
committed
r extract method(s)
1 parent 475303f commit 77c3305

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

approvaltests/src/main/java/org/approvaltests/awt/GifSequenceWriter.java

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import javax.imageio.ImageTypeSpecifier;
2323
import javax.imageio.ImageWriteParam;
2424
import javax.imageio.ImageWriter;
25+
import javax.imageio.metadata.IIOInvalidTreeException;
2526
import javax.imageio.metadata.IIOMetadata;
2627
import javax.imageio.metadata.IIOMetadataNode;
2728
import javax.imageio.stream.FileImageOutputStream;
@@ -51,10 +52,18 @@ public GifSequenceWriter(ImageOutputStream outputStream, int imageType, Duration
5152
// my method to create a writer
5253
gifWriter = getWriter();
5354
imageWriteParam = gifWriter.getDefaultWriteParam();
55+
IIOMetadata imageMetaData2 = getMetadata(imageType, timeBetweenFramesMS, loopContinuously);
56+
imageMetaData = imageMetaData2;
57+
gifWriter.setOutput(outputStream);
58+
gifWriter.prepareWriteSequence(null);
59+
}
60+
private IIOMetadata getMetadata(int imageType, Duration timeBetweenFramesMS, boolean loopContinuously)
61+
throws IIOInvalidTreeException
62+
{
5463
ImageTypeSpecifier imageTypeSpecifier = ImageTypeSpecifier.createFromBufferedImageType(imageType);
55-
imageMetaData = gifWriter.getDefaultImageMetadata(imageTypeSpecifier, imageWriteParam);
56-
String metaFormatName = imageMetaData.getNativeMetadataFormatName();
57-
IIOMetadataNode root = (IIOMetadataNode) imageMetaData.getAsTree(metaFormatName);
64+
IIOMetadata imageMetaData2 = gifWriter.getDefaultImageMetadata(imageTypeSpecifier, imageWriteParam);
65+
String metaFormatName = imageMetaData2.getNativeMetadataFormatName();
66+
IIOMetadataNode root = (IIOMetadataNode) imageMetaData2.getAsTree(metaFormatName);
5867
IIOMetadataNode graphicsControlExtensionNode = getNode(root, "GraphicControlExtension");
5968
graphicsControlExtensionNode.setAttribute("disposalMethod", "none");
6069
graphicsControlExtensionNode.setAttribute("userInputFlag", "FALSE");
@@ -67,12 +76,15 @@ public GifSequenceWriter(ImageOutputStream outputStream, int imageType, Duration
6776
IIOMetadataNode child = new IIOMetadataNode("ApplicationExtension");
6877
child.setAttribute("applicationID", "NETSCAPE");
6978
child.setAttribute("authenticationCode", "2.0");
70-
int loop = loopContinuously ? 0 : 1;
71-
child.setUserObject(new byte[]{0x1, (byte) (loop & 0xFF), (byte) ((loop >> 8) & 0xFF)});
79+
child.setUserObject(getBytesForUseContinuously(loopContinuously));
7280
appEntensionsNode.appendChild(child);
73-
imageMetaData.setFromTree(metaFormatName, root);
74-
gifWriter.setOutput(outputStream);
75-
gifWriter.prepareWriteSequence(null);
81+
imageMetaData2.setFromTree(metaFormatName, root);
82+
return imageMetaData2;
83+
}
84+
public static byte[] getBytesForUseContinuously(boolean loopContinuously)
85+
{
86+
int loop = loopContinuously ? 0 : 1;
87+
return new byte[]{0x1, (byte) (loop & 0xFF), (byte) ((loop >> 8) & 0xFF)};
7688
}
7789
static File writeAnimatedGif(File imageFile, ArrayList<BufferedImage> images, Duration timeBetweenFramesMS)
7890
{

0 commit comments

Comments
 (0)