// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.ui.compression.internal;

using zx;
using fuchsia.math;

type ImageCompressionError = flexible enum {
    /// One or more required arguments are missing in the table argument.
    MISSING_ARGS = 1;
    /// One or more of the arguments was not valid.
    INVALID_ARGS = 2;
    /// A general error occurred during the method call.
    BAD_OPERATION = 3;
};

/// Compresses images for the screenshot API in a secure way by isolating the
/// use of the insecure libpng library to a separate component.
@discoverable
closed protocol ImageCompressor {
    strict EncodePng(resource table {
        /// VMO holding the image-to-be-encoded in packaged, BGRA_RAW format.
        1: raw_vmo zx.Handle:VMO;

        /// The width and height of the input image.
        2: image_dimensions fuchsia.math.SizeU;

        /// Resultant VMO in PNG format. This VMO's allocated size should be at
        /// least 4KB larger than the input image's width*height*pixel_size to
        /// account for format padding.
        3: png_vmo zx.Handle:VMO;
    }) -> () error ImageCompressionError;
};
