[Patchanim-commit] SF.net SVN: patchanim: [150] trunk/patchanim/src/com/mebigfatguy
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2008-02-10 18:15:08
|
Revision: 150
http://patchanim.svn.sourceforge.net/patchanim/?rev=150&view=rev
Author: dbrosius
Date: 2008-02-10 10:15:14 -0800 (Sun, 10 Feb 2008)
Log Message:
-----------
flush out MNG exporting
Modified Paths:
--------------
trunk/patchanim/src/com/mebigfatguy/encoders/Chunk.java
trunk/patchanim/src/com/mebigfatguy/encoders/MngEncoder.java
trunk/patchanim/src/com/mebigfatguy/patchanim/gui/JPatchAnimFrame.java
trunk/patchanim/src/com/mebigfatguy/patchanim/io/PatchExporter.java
Modified: trunk/patchanim/src/com/mebigfatguy/encoders/Chunk.java
===================================================================
--- trunk/patchanim/src/com/mebigfatguy/encoders/Chunk.java 2008-02-10 17:34:27 UTC (rev 149)
+++ trunk/patchanim/src/com/mebigfatguy/encoders/Chunk.java 2008-02-10 18:15:14 UTC (rev 150)
@@ -55,6 +55,10 @@
data[offset] = (byte)(value & 0x00FF);
}
+ public void injectByte(int offset, int value) {
+ data[offset] = (byte)(value & 0x00FF);
+ }
+
public void calcCRC() {
CRC32 crc32 = new CRC32();
byte[] typeBytes = new byte[4];
Modified: trunk/patchanim/src/com/mebigfatguy/encoders/MngEncoder.java
===================================================================
--- trunk/patchanim/src/com/mebigfatguy/encoders/MngEncoder.java 2008-02-10 17:34:27 UTC (rev 149)
+++ trunk/patchanim/src/com/mebigfatguy/encoders/MngEncoder.java 2008-02-10 18:15:14 UTC (rev 150)
@@ -39,8 +39,13 @@
private static final int IHDR = 0x49484452;
private static final int IDAT = 0x49444154;
private static final int IEND = 0x49454E44;
- private static final int MHDR = 0;
- private static final int MEND = 0;
+ private static final int MHDR = 0x4D484452;
+ private static final int DEFI = 0x44454649;
+ private static final int SAVE = 0x53415645;
+ private static final int TERM = 0x5445524D;
+ private static final int SEEK = 0x5345454B;
+ private static final int SHOW = 0x53484F59;
+ private static final int MEND = 0x4D454E44;
private DataOutputStream out = null;
private boolean started = false;
@@ -50,7 +55,6 @@
private int delay = 100;
private int frameCount = 1;
private int seqNum = 0;
- private boolean processedFirstFrame = false;
public void setDelay(int ms) {
delay = ms;
@@ -94,6 +98,26 @@
if (!started)
return false;
try {
+ Chunk saveChunk = new Chunk(0, SAVE);
+ saveChunk.calcCRC();
+ saveChunk.write(out);
+
+ Chunk termChunk = new Chunk(10, TERM);
+ termChunk.injectShort(0, 0);
+ termChunk.injectInt(2, 0);
+ termChunk.injectInt(6, repeatInfinite ? 0x7FFFFFFF : 0);
+
+ termChunk.calcCRC();
+ termChunk.write(out);
+
+ Chunk seekChunk = new Chunk(0, SEEK);
+ seekChunk.calcCRC();
+ seekChunk.write(out);
+
+ Chunk showChunk = new Chunk(0, SHOW);
+ showChunk.calcCRC();
+ showChunk.write(out);
+
Chunk iendChunk = new Chunk(0, MEND);
iendChunk.calcCRC();
iendChunk.write(out);
@@ -126,18 +150,34 @@
case IHDR:
if (!headerWritten) {
Chunk mhdrChunk = new Chunk(28, MHDR);
+ mhdrChunk.injectInt(0, im.getWidth());
+ mhdrChunk.injectInt(4, im.getHeight());
+ mhdrChunk.injectInt(8, delay);
+ mhdrChunk.injectInt(12, 0);
+ mhdrChunk.injectInt(16, frameCount);
+ mhdrChunk.injectInt(20, frameCount);
+ mhdrChunk.injectInt(24, 583);
mhdrChunk.calcCRC();
mhdrChunk.write(out);
+ headerWritten = true;
}
+ Chunk defiChunk = new Chunk(4, DEFI);
+ defiChunk.injectInt(0, (seqNum++) << 16);
+ defiChunk.calcCRC();
+ defiChunk.write(out);
+ chunk.write(out);
break;
case IDAT:
+ chunk.write(out);
break;
+
+ case IEND:
+ chunk.write(out);
+ break;
}
chunk = pStrm.readNextChunk();
}
- processedFirstFrame = true;
-
return true;
} catch (IOException ioe) {
return false;
Modified: trunk/patchanim/src/com/mebigfatguy/patchanim/gui/JPatchAnimFrame.java
===================================================================
--- trunk/patchanim/src/com/mebigfatguy/patchanim/gui/JPatchAnimFrame.java 2008-02-10 17:34:27 UTC (rev 149)
+++ trunk/patchanim/src/com/mebigfatguy/patchanim/gui/JPatchAnimFrame.java 2008-02-10 18:15:14 UTC (rev 150)
@@ -110,7 +110,6 @@
exportAnimatedGifItem = new JMenuItem(rb.getString(PatchAnimBundle.ANIMATEDGIF));
exportAnimatedPngItem = new JMenuItem(rb.getString(PatchAnimBundle.ANIMATEDPNG));
exportAnimatedMngItem = new JMenuItem(rb.getString(PatchAnimBundle.ANIMATEDMNG));
- exportAnimatedMngItem.setEnabled(false);
exportMenu.add(exportJpgsItem);
exportMenu.add(exportPngsItem);
exportMenu.add(exportGifsItem);
Modified: trunk/patchanim/src/com/mebigfatguy/patchanim/io/PatchExporter.java
===================================================================
--- trunk/patchanim/src/com/mebigfatguy/patchanim/io/PatchExporter.java 2008-02-10 17:34:27 UTC (rev 149)
+++ trunk/patchanim/src/com/mebigfatguy/patchanim/io/PatchExporter.java 2008-02-10 18:15:14 UTC (rev 150)
@@ -100,6 +100,7 @@
} else if (type == ExportType.AnimatedMng) {
mngEncoder.setRepeat(atype != AnimationType.None);
mngEncoder.setNumFrames(totalImages);
+ mngEncoder.setDelay(100);
}
if (lastPatch == 0) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|