93 lines
2.2 KiB
Java
93 lines
2.2 KiB
Java
package ar.com.hjg.pngj.chunks;
|
|
|
|
import java.util.Calendar;
|
|
|
|
import ar.com.hjg.pngj.ImageInfo;
|
|
import ar.com.hjg.pngj.PngHelperInternal;
|
|
import ar.com.hjg.pngj.PngjException;
|
|
|
|
/**
|
|
* tIME chunk.
|
|
* <p>
|
|
* see http://www.w3.org/TR/PNG/#11tIME
|
|
*/
|
|
public class PngChunkTIME extends PngChunkSingle {
|
|
public final static String ID = ChunkHelper.tIME;
|
|
|
|
// http://www.w3.org/TR/PNG/#11tIME
|
|
private int year;
|
|
|
|
private int mon;
|
|
|
|
private int day;
|
|
|
|
private int hour;
|
|
|
|
private int min;
|
|
|
|
private int sec;
|
|
|
|
public PngChunkTIME(ImageInfo info) {
|
|
super(ID, info);
|
|
}
|
|
|
|
@Override
|
|
public ChunkOrderingConstraint getOrderingConstraint() {
|
|
return ChunkOrderingConstraint.NONE;
|
|
}
|
|
|
|
@Override
|
|
public ChunkRaw createRawChunk() {
|
|
ChunkRaw c = createEmptyChunk(7, true);
|
|
PngHelperInternal.writeInt2tobytes(year, c.data, 0);
|
|
c.data[2] = (byte) mon;
|
|
c.data[3] = (byte) day;
|
|
c.data[4] = (byte) hour;
|
|
c.data[5] = (byte) min;
|
|
c.data[6] = (byte) sec;
|
|
return c;
|
|
}
|
|
|
|
@Override
|
|
public void parseFromRaw(ChunkRaw chunk) {
|
|
if (chunk.len != 7)
|
|
throw new PngjException("bad chunk " + chunk);
|
|
year = PngHelperInternal.readInt2fromBytes(chunk.data, 0);
|
|
mon = PngHelperInternal.readInt1fromByte(chunk.data, 2);
|
|
day = PngHelperInternal.readInt1fromByte(chunk.data, 3);
|
|
hour = PngHelperInternal.readInt1fromByte(chunk.data, 4);
|
|
min = PngHelperInternal.readInt1fromByte(chunk.data, 5);
|
|
sec = PngHelperInternal.readInt1fromByte(chunk.data, 6);
|
|
}
|
|
|
|
public void setNow(int secsAgo) {
|
|
Calendar d = Calendar.getInstance();
|
|
d.setTimeInMillis(System.currentTimeMillis() - 1000 * (long) secsAgo);
|
|
year = d.get(Calendar.YEAR);
|
|
mon = d.get(Calendar.MONTH) + 1;
|
|
day = d.get(Calendar.DAY_OF_MONTH);
|
|
hour = d.get(Calendar.HOUR_OF_DAY);
|
|
min = d.get(Calendar.MINUTE);
|
|
sec = d.get(Calendar.SECOND);
|
|
}
|
|
|
|
public void setYMDHMS(int yearx, int monx, int dayx, int hourx, int minx, int secx) {
|
|
year = yearx;
|
|
mon = monx;
|
|
day = dayx;
|
|
hour = hourx;
|
|
min = minx;
|
|
sec = secx;
|
|
}
|
|
|
|
public int[] getYMDHMS() {
|
|
return new int[] { year, mon, day, hour, min, sec };
|
|
}
|
|
|
|
/** format YYYY/MM/DD HH:mm:SS */
|
|
public String getAsString() {
|
|
return String.format("%04d/%02d/%02d %02d:%02d:%02d", year, mon, day, hour, min, sec);
|
|
}
|
|
|
|
}
|