[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. |