1cb93a386Sopenharmony_ci/*
2cb93a386Sopenharmony_ci * Copyright 2016 Google Inc.
3cb93a386Sopenharmony_ci *
4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be
5cb93a386Sopenharmony_ci * found in the LICENSE file.
6cb93a386Sopenharmony_ci */
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_ci#ifndef SkCodecAnimation_DEFINED
9cb93a386Sopenharmony_ci#define SkCodecAnimation_DEFINED
10cb93a386Sopenharmony_ci
11cb93a386Sopenharmony_cinamespace SkCodecAnimation {
12cb93a386Sopenharmony_ci    /**
13cb93a386Sopenharmony_ci     *  This specifies how the next frame is based on this frame.
14cb93a386Sopenharmony_ci     *
15cb93a386Sopenharmony_ci     *  Names are based on the GIF 89a spec.
16cb93a386Sopenharmony_ci     *
17cb93a386Sopenharmony_ci     *  The numbers correspond to values in a GIF.
18cb93a386Sopenharmony_ci     */
19cb93a386Sopenharmony_ci    enum class DisposalMethod {
20cb93a386Sopenharmony_ci        /**
21cb93a386Sopenharmony_ci         *  The next frame should be drawn on top of this one.
22cb93a386Sopenharmony_ci         *
23cb93a386Sopenharmony_ci         *  In a GIF, a value of 0 (not specified) is also treated as Keep.
24cb93a386Sopenharmony_ci         */
25cb93a386Sopenharmony_ci        kKeep               = 1,
26cb93a386Sopenharmony_ci
27cb93a386Sopenharmony_ci        /**
28cb93a386Sopenharmony_ci         *  Similar to Keep, except the area inside this frame's rectangle
29cb93a386Sopenharmony_ci         *  should be cleared to the BackGround color (transparent) before
30cb93a386Sopenharmony_ci         *  drawing the next frame.
31cb93a386Sopenharmony_ci         */
32cb93a386Sopenharmony_ci        kRestoreBGColor     = 2,
33cb93a386Sopenharmony_ci
34cb93a386Sopenharmony_ci        /**
35cb93a386Sopenharmony_ci         *  The next frame should be drawn on top of the previous frame - i.e.
36cb93a386Sopenharmony_ci         *  disregarding this one.
37cb93a386Sopenharmony_ci         *
38cb93a386Sopenharmony_ci         *  In a GIF, a value of 4 is also treated as RestorePrevious.
39cb93a386Sopenharmony_ci         */
40cb93a386Sopenharmony_ci        kRestorePrevious    = 3,
41cb93a386Sopenharmony_ci    };
42cb93a386Sopenharmony_ci
43cb93a386Sopenharmony_ci    /**
44cb93a386Sopenharmony_ci     * How to blend the current frame.
45cb93a386Sopenharmony_ci     */
46cb93a386Sopenharmony_ci    enum class Blend {
47cb93a386Sopenharmony_ci        /**
48cb93a386Sopenharmony_ci         *  Blend with the prior frame as if using SkBlendMode::kSrcOver.
49cb93a386Sopenharmony_ci         */
50cb93a386Sopenharmony_ci        kSrcOver,
51cb93a386Sopenharmony_ci
52cb93a386Sopenharmony_ci        /**
53cb93a386Sopenharmony_ci         *  Blend with the prior frame as if using SkBlendMode::kSrc.
54cb93a386Sopenharmony_ci         *
55cb93a386Sopenharmony_ci         *  This frame's pixels replace the destination pixels.
56cb93a386Sopenharmony_ci         */
57cb93a386Sopenharmony_ci        kSrc,
58cb93a386Sopenharmony_ci    };
59cb93a386Sopenharmony_ci
60cb93a386Sopenharmony_ci} // namespace SkCodecAnimation
61cb93a386Sopenharmony_ci#endif // SkCodecAnimation_DEFINED
62