text: /*
   * Copyright (c) Microsoft Corporation. All rights reserved.
   * Licensed under the MIT License. See License.txt in the project root for
   * license information.
   *
   * Code generated by Microsoft (R) AutoRest Code Generator.
   * Changes may cause incorrect behavior and will be lost if the code is
   * regenerated.
   */
  
  'use strict';
  
  const models = require('./index');
  
  /**
   * Describes the properties of a video overlay.
   *
   * @extends models['Overlay']
   */
  class VideoOverlay extends models['Overlay'] {
    /**
     * Create a VideoOverlay.
     * @member {object} [position] The location in the input video where the
     * overlay is applied.
     * @member {string} [position.left] The number of pixels from the
     * left-margin. This can be absolute pixel value (e.g 100), or relative to
     * the size of the video (For example, 50%).
     * @member {string} [position.top] The number of pixels from the top-margin.
     * This can be absolute pixel value (e.g 100), or relative to the size of the
     * video (For example, 50%).
     * @member {string} [position.width] The width of the rectangular region in
     * pixels. This can be absolute pixel value (e.g 100), or relative to the
     * size of the video (For example, 50%).
     * @member {string} [position.height] The height of the rectangular region in
     * pixels. This can be absolute pixel value (e.g 100), or relative to the
     * size of the video (For example, 50%).
     * @member {number} [opacity] The opacity of the overlay. This is a value in
     * the range [0 - 1.0]. Default is 1.0 which mean the overlay is opaque.
     * @member {object} [cropRectangle] An optional rectangular window used to
     * crop the overlay image or video.
     * @member {string} [cropRectangle.left] The number of pixels from the
     * left-margin. This can be absolute pixel value (e.g 100), or relative to
     * the size of the video (For example, 50%).
     * @member {string} [cropRectangle.top] The number of pixels from the
     * top-margin. This can be absolute pixel value (e.g 100), or relative to the
     * size of the video (For example, 50%).
     * @member {string} [cropRectangle.width] The width of the rectangular region
     * in pixels. This can be absolute pixel value (e.g 100), or relative to the
     * size of the video (For example, 50%).
     * @member {string} [cropRectangle.height] The height of the rectangular
     * region in pixels. This can be absolute pixel value (e.g 100), or relative
     * to the size of the video (For example, 50%).
     */
    constructor() {
      super();
    }
  
    /**
     * Defines the metadata of VideoOverlay
     *
     * @returns {object} metadata of VideoOverlay
     *
     */
    mapper() {
      return {
        required: false,
        serializedName: '#Microsoft.Media.VideoOverlay',
        type: {
          name: 'Composite',
          polymorphicDiscriminator: {
            serializedName: '@odata.type',
            clientName: 'odatatype'
          },
          uberParent: 'Overlay',
          className: 'VideoOverlay',
          modelProperties: {
            inputLabel: {
              required: false,
              serializedName: 'inputLabel',
              type: {
                name: 'String'
              }
            },
            start: {
              required: false,
              serializedName: 'start',
              type: {
                name: 'TimeSpan'
              }
            },
            end: {
              required: false,
              serializedName: 'end',
              type: {
                name: 'TimeSpan'
              }
            },
            fadeInDuration: {
              required: false,
              serializedName: 'fadeInDuration',
              type: {
                name: 'TimeSpan'
              }
            },
            fadeOutDuration: {
              required: false,
              serializedName: 'fadeOutDuration',
              type: {
                name: 'TimeSpan'
              }
            },
            audioGainLevel: {
              required: false,
              serializedName: 'audioGainLevel',
              type: {
                name: 'Number'
              }
            },
            odatatype: {
              required: true,
              serializedName: '@odata\\.type',
              isPolymorphicDiscriminator: true,
              type: {
                name: 'String'
              }
            },
            position: {
              required: false,
              serializedName: 'position',
              type: {
                name: 'Composite',
                className: 'Rectangle'
              }
            },
            opacity: {
              required: false,
              serializedName: 'opacity',
              type: {
                name: 'Number'
              }
            },
            cropRectangle: {
              required: false,
              serializedName: 'cropRectangle',
              type: {
                name: 'Composite',
                className: 'Rectangle'
              }
            }
          }
        }
      };
    }
  }
  
  module.exports = VideoOverlay;
  