/** * this should be called only for ancillary chunks and PLTE (groups 1 - 3 - 5) **/ private static bool shouldWrite(PngChunk c, int currentGroup) { if (currentGroup == CHUNK_GROUP_2_PLTE) { return(c.Id.Equals(ChunkHelper.PLTE)); } if (currentGroup % 2 == 0) { throw new PngjOutputException("bad chunk group?"); } int minChunkGroup, maxChunkGroup; if (c.mustGoBeforePLTE()) { minChunkGroup = maxChunkGroup = ChunksList.CHUNK_GROUP_1_AFTERIDHR; } else if (c.mustGoBeforeIDAT()) { maxChunkGroup = ChunksList.CHUNK_GROUP_3_AFTERPLTE; minChunkGroup = c.mustGoAfterPLTE() ? ChunksList.CHUNK_GROUP_3_AFTERPLTE : ChunksList.CHUNK_GROUP_1_AFTERIDHR; } else { maxChunkGroup = ChunksList.CHUNK_GROUP_5_AFTERIDAT; minChunkGroup = ChunksList.CHUNK_GROUP_1_AFTERIDHR; } int preferred = maxChunkGroup; if (c.Priority) { preferred = minChunkGroup; } if (ChunkHelper.IsUnknown(c) && c.ChunkGroup > 0) { preferred = c.ChunkGroup; } if (currentGroup == preferred) { return(true); } if (currentGroup > preferred && currentGroup <= maxChunkGroup) { return(true); } return(false); }
public static bool shouldWrite(PngChunk c, int currentGroup) { if (currentGroup == 2) { return(c.Id.Equals("PLTE")); } if (currentGroup % 2 == 0) { throw new PngjOutputException("bad chunk group?"); } int num2; int num; if (c.mustGoBeforePLTE()) { num2 = (num = 1); } else if (c.mustGoBeforeIDAT()) { num = 3; num2 = ((!c.mustGoAfterPLTE()) ? 1 : 3); } else { num = 5; num2 = 1; } int num3 = num; if (c.Priority) { num3 = num2; } if (ChunkHelper.IsUnknown(c) && c.ChunkGroup > 0) { num3 = c.ChunkGroup; } if (currentGroup == num3) { return(true); } if (currentGroup > num3 && currentGroup <= num) { return(true); } return(false); }