diff options
Diffstat (limited to 'image/DecoderFlags.h')
-rw-r--r-- | image/DecoderFlags.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/image/DecoderFlags.h b/image/DecoderFlags.h new file mode 100644 index 0000000000..778cdd2942 --- /dev/null +++ b/image/DecoderFlags.h @@ -0,0 +1,56 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef mozilla_image_DecoderFlags_h +#define mozilla_image_DecoderFlags_h + +#include "mozilla/TypedEnumBits.h" + +namespace mozilla { +namespace image { + +/** + * Flags that influence decoder behavior. Note that these flags *don't* + * influence the logical content of the surfaces that the decoder generates, so + * they're not in a factor in SurfaceCache lookups and the like. These flags + * instead either influence which surfaces are generated at all or the tune the + * decoder's behavior for a particular scenario. + */ +enum class DecoderFlags : uint8_t { + FIRST_FRAME_ONLY = 1 << 0, + IS_REDECODE = 1 << 1, + IMAGE_IS_TRANSIENT = 1 << 2, + ASYNC_NOTIFY = 1 << 3, + + /** + * By default, a surface is considered substitutable. That means callers are + * willing to accept a less than ideal match to display. If a caller requires + * a specific size and won't accept alternatives, then this flag should be + * set. + */ + CANNOT_SUBSTITUTE = 1 << 4, + +#ifdef MOZ_AV1 + // The flags below are stored in RasterImage to allow a decoded image to + // remain consistent in whether it is animated or not. + + // Set according to the "image.avif.sequence.enabled" preference. + AVIF_SEQUENCES_ENABLED = 1 << 5, + // Set according to the + // "image.avif.sequence.animate_avif_major_branded_images" preference. + AVIF_ANIMATE_AVIF_MAJOR = 1 << 6, +#endif +}; +MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(DecoderFlags) + +/** + * @return the default set of decode flags. + */ +inline DecoderFlags DefaultDecoderFlags() { return DecoderFlags(); } + +} // namespace image +} // namespace mozilla + +#endif // mozilla_image_DecoderFlags_h |