1 // Aseprite Document Library
2 // Copyright (c) 2001-2015 David Capello
3 //
4 // This file is released under the terms of the MIT license.
5 // Read LICENSE.txt for more information.
6
7 #ifdef HAVE_CONFIG_H
8 #include "config.h"
9 #endif
10
11 #include "doc/cel_io.h"
12
13 #include "base/serialization.h"
14 #include "base/unique_ptr.h"
15 #include "doc/cel.h"
16 #include "doc/subobjects_io.h"
17
18 #include <iostream>
19
20 namespace doc {
21
22 using namespace base::serialization;
23 using namespace base::serialization::little_endian;
24
write_cel(std::ostream & os,const Cel * cel)25 void write_cel(std::ostream& os, const Cel* cel)
26 {
27 write32(os, cel->id());
28 write16(os, cel->frame());
29 write32(os, cel->dataRef()->id());
30 }
31
read_cel(std::istream & is,SubObjectsIO * subObjects,bool setId)32 Cel* read_cel(std::istream& is, SubObjectsIO* subObjects, bool setId)
33 {
34 ObjectId id = read32(is);
35 frame_t frame(read16(is));
36 ObjectId celDataId = read32(is);
37 CelDataRef celData(subObjects->getCelDataRef(celDataId));
38 if (!celData)
39 return nullptr;
40
41 base::UniquePtr<Cel> cel(new Cel(frame, celData));
42 if (setId)
43 cel->setId(id);
44 return cel.release();
45 }
46
47 }
48