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