| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module data_decoder.mojom; |
| |
| import "skia/public/interfaces/bitmap.mojom"; |
| import "ui/gfx/geometry/mojo/geometry.mojom"; |
| |
| enum ImageCodec { |
| DEFAULT, |
| ROBUST_JPEG, |
| ROBUST_PNG, |
| }; |
| |
| interface ImageDecoder { |
| // Decodes image data to a raw skia bitmap. |
| // |
| // If the total size of the decoded image data in bytes exceeds |
| // |max_size_in_bytes| and |shrink_to_fit| is true, the image is halved |
| // successively until its total size no longer exceeds |max_size_in_bytes|. |
| // |
| // If the total size of the decoded image data in bytes exceeds |
| // |max_size_in_bytes| and |shrink_to_fit| is false, this is treated as a |
| // decoding failure and the |decoded_image| response is null. |
| DecodeImage(array<uint8> encoded_data, ImageCodec codec, bool shrink_to_fit, |
| int64 max_size_in_bytes, gfx.mojom.Size desired_image_frame_size) |
| => (skia.mojom.Bitmap? decoded_image); |
| }; |