// 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.
@available(added=HEAD)
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;
};
