Exemplo n.º 1
0
        public static UserDataChunk Read(AsepriteStreamReader reader)
        {
            //DWORD Flags
            //  1 = Has text
            //  2 = Has color
            var flag = reader.DWORD();

            //+ If flags have bit 1
            //  STRING Text
            if (reader.FLAG(flag, 1))
            {
                return(new UserDataChunk(reader.STRING()));
            }
            //+If flags have bit 2
            //  BYTE Color Red(0 - 255)
            //  BYTE Color Green(0 - 255)
            //  BYTE Color Blue(0 - 255)
            //  BYTE Color Alpha(0 - 255)
            if (reader.FLAG(flag, 2))
            {
                return(new UserDataChunk(reader.BYTE(), reader.BYTE(), reader.BYTE(), reader.BYTE()));
            }

            return(new UserDataChunk());
        }
Exemplo n.º 2
0
        public static LayerChunk Read(AsepriteStreamReader reader)
        {
            // WORD Flags:
            //               1 = Visible
            //               2 = Editable
            //               4 = Lock movement
            //               8 = Background
            //               16 = Prefer linked cels
            //               32 = The layer group should be displayed collapsed
            //               64 = The layer is a reference layer
            var flags = (LayerFlags)reader.WORD();

            // WORD        Layer type
            //               0 = Normal(image) layer
            //               1 = Group
            var type = (LayerTypes)reader.WORD();
            // WORD Layer child level(see NOTE.1)
            var childLevel = reader.WORD();

            // WORD Default layer width in pixels(ignored)
            reader.WORD();
            // WORD Default layer height in pixels(ignored)
            reader.WORD();
            // WORD Blend mode(always 0 for layer set)
            //                     Normal = 0
            //               Multiply = 1
            //               Screen = 2
            //               Overlay = 3
            //               Darken = 4
            //               Lighten = 5
            //               Color Dodge = 6
            //               Color Burn = 7
            //               Hard Light = 8
            //               Soft Light = 9
            //               Difference = 10
            //               Exclusion = 11
            //               Hue = 12
            //               Saturation = 13
            //               Color = 14
            //               Luminosity = 15
            //               Addition = 16
            //               Subtract = 17
            //               Divide = 18
            var blendMode = (BlendModes)reader.WORD();
            // BYTE Opacity
            var opacity = reader.BYTE();

            //               Note: valid only if file header flags field has bit 1 set
            // BYTE[3]     For future(set to zero)
            reader.BYTES(3);
            // STRING Layer name
            var name = reader.STRING();

            return(new LayerChunk(flags, type, childLevel, blendMode, opacity, name));
        }
Exemplo n.º 3
0
        public static PaletteEntry Read(AsepriteStreamReader reader, string defaultName)
        {
            //   WORD Entry flags:
            //             1 = Has name
            bool hasName = reader.FLAG(reader.WORD(), 1);
            //   BYTE      Red(0 - 255)
            var r = reader.BYTE();
            //   BYTE Green(0 - 255)
            var g = reader.BYTE();
            //   BYTE Blue(0 - 255)
            var b = reader.BYTE();
            //   BYTE Alpha(0 - 255)
            var a = reader.BYTE();
            //   +If has name bit in entry flags
            //     STRING Color name
            var name = hasName
                ? reader.STRING()
                : defaultName;

            return(new PaletteEntry(r, g, b, a, name));
        }
Exemplo n.º 4
0
        public static SliceChunk Read(AsepriteStreamReader reader)
        {
            // DWORD Number of "slice keys"
            var keyCount = reader.DWORD();
            // DWORD Flags
            //               1 = It's a 9-patches slice
            //               2 = Has pivot information
            var flag = reader.DWORD();

            // DWORD Reserved
            reader.DWORD();
            // STRING Name
            var name = reader.STRING();
            // + For each slice key
            var keys = new SliceKey[keyCount];

            for (int i = 0; i < keyCount; i++)
            {
                keys[i] = SliceKey.Read(reader, (int)flag);
            }

            return(new SliceChunk(name, keys));
        }
Exemplo n.º 5
0
        public static Tag Read(AsepriteStreamReader reader)
        {
            //WORD From frame
            var fromFrame = reader.WORD();
            //WORD To frame
            var toFrame = reader.WORD();
            //BYTE Loop animation direction
            //            0 = Forward
            //            1 = Reverse
            //            2 = Ping - pong
            var loopDirection = (LoopDirections)reader.BYTE();

            //BYTE[8]   For future(set to zero)
            reader.BYTES(8);
            //BYTE[3]   RGB values of the tag color
            var color = reader.BYTES(3);

            //BYTE Extra byte(zero)
            reader.BYTE();
            //STRING Tag name
            var name = reader.STRING();

            return(new Tag(fromFrame, toFrame, loopDirection, color, name));
        }