OSDN Git Service

RC.ZERO; Metadata persistence on PNG chunk shards
[automap/automap.git] / Automap / Data / PngMetadataChunk.cs
1 using System;
2
3 using Vintagestory.API.Util;
4
5 using Hjg.Pngcs;
6 using Hjg.Pngcs.Chunks;
7
8 namespace Automap
9 {
10         /// <summary>
11         /// Png metadata chunk.
12         /// </summary>
13         /// <remarks>There can be only one. (per PNG file)</remarks>
14         public class PngMetadataChunk : PngChunkSingle
15         {
16                 // ID must follow the PNG conventions: four ascii letters,
17                 public readonly static string ID = "cHUK";
18
19                 public ColumnMeta ChunkMetadata { get; set; }
20
21
22                 public PngMetadataChunk(ImageInfo info) : base(ID, info)
23                 {
24                         
25                 }
26
27                 public override ChunkOrderingConstraint GetOrderingConstraint( )
28                 {
29                 return ChunkOrderingConstraint.NONE;
30                 }
31
32                 public override ChunkRaw CreateRawChunk( )
33                 {                
34                 var datas = SerializerUtil.Serialize<ColumnMeta>(ChunkMetadata);
35
36                 ChunkRaw rawChunk = createEmptyChunk(datas.Length, true);
37                 rawChunk.Data = datas;
38
39                 return rawChunk;
40                 }
41
42                 public override void ParseFromRaw(ChunkRaw rawChunk)
43                 {
44                 this.ChunkMetadata = SerializerUtil.Deserialize<ColumnMeta>(rawChunk.Data);             
45                 }
46
47                 public override void CloneDataFromRead(PngChunk other)
48                 {
49                 PngMetadataChunk clone = ( PngMetadataChunk )other;
50                 this.ChunkMetadata = clone.ChunkMetadata; 
51                 }
52
53         }
54 }
55