Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/image/DecoderFlags.h
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* This Source Code Form is subject to the terms of the Mozilla Public
3
 * License, v. 2.0. If a copy of the MPL was not distributed with this
4
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6
#ifndef mozilla_image_DecoderFlags_h
7
#define mozilla_image_DecoderFlags_h
8
9
#include "mozilla/TypedEnumBits.h"
10
11
namespace mozilla {
12
namespace image {
13
14
/**
15
 * Flags that influence decoder behavior. Note that these flags *don't*
16
 * influence the logical content of the surfaces that the decoder generates, so
17
 * they're not in a factor in SurfaceCache lookups and the like. These flags
18
 * instead either influence which surfaces are generated at all or the tune the
19
 * decoder's behavior for a particular scenario.
20
 */
21
enum class DecoderFlags : uint8_t
22
{
23
  FIRST_FRAME_ONLY               = 1 << 0,
24
  IS_REDECODE                    = 1 << 1,
25
  IMAGE_IS_TRANSIENT             = 1 << 2,
26
  ASYNC_NOTIFY                   = 1 << 3,
27
28
  /**
29
   * By default, a surface is considered substitutable. That means callers are
30
   * willing to accept a less than ideal match to display. If a caller requires
31
   * a specific size and won't accept alternatives, then this flag should be
32
   * set.
33
   */
34
  CANNOT_SUBSTITUTE              = 1 << 4,
35
36
  /**
37
   * By default, an animation decoder will produce partial frames that need to
38
   * be combined with the previously displayed/composited frame by FrameAnimator
39
   * to produce a complete frame. If this flag is set, the decoder will perform
40
   * this blending at decode time, and the frames produced are complete.
41
   */
42
  BLEND_ANIMATION                = 1 << 5
43
};
44
MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(DecoderFlags)
45
46
/**
47
 * @return the default set of decode flags.
48
 */
49
inline DecoderFlags
50
DefaultDecoderFlags()
51
0
{
52
0
  return DecoderFlags();
53
0
}
54
55
} // namespace image
56
} // namespace mozilla
57
58
#endif // mozilla_image_DecoderFlags_h