# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Drive.V3.Model.FileImageMediaMetadata do
  @moduledoc """
  Output only. Additional metadata about image media, if available.

  ## Attributes

  *   `aperture` (*type:* `number()`, *default:* `nil`) - Output only. The aperture used to create the photo (f-number).
  *   `cameraMake` (*type:* `String.t`, *default:* `nil`) - Output only. The make of the camera used to create the photo.
  *   `cameraModel` (*type:* `String.t`, *default:* `nil`) - Output only. The model of the camera used to create the photo.
  *   `colorSpace` (*type:* `String.t`, *default:* `nil`) - Output only. The color space of the photo.
  *   `exposureBias` (*type:* `number()`, *default:* `nil`) - Output only. The exposure bias of the photo (APEX value).
  *   `exposureMode` (*type:* `String.t`, *default:* `nil`) - Output only. The exposure mode used to create the photo.
  *   `exposureTime` (*type:* `number()`, *default:* `nil`) - Output only. The length of the exposure, in seconds.
  *   `flashUsed` (*type:* `boolean()`, *default:* `nil`) - Output only. Whether a flash was used to create the photo.
  *   `focalLength` (*type:* `number()`, *default:* `nil`) - Output only. The focal length used to create the photo, in millimeters.
  *   `height` (*type:* `integer()`, *default:* `nil`) - Output only. The height of the image in pixels.
  *   `isoSpeed` (*type:* `integer()`, *default:* `nil`) - Output only. The ISO speed used to create the photo.
  *   `lens` (*type:* `String.t`, *default:* `nil`) - Output only. The lens used to create the photo.
  *   `location` (*type:* `GoogleApi.Drive.V3.Model.FileImageMediaMetadataLocation.t`, *default:* `nil`) - Output only. Geographic location information stored in the image.
  *   `maxApertureValue` (*type:* `number()`, *default:* `nil`) - Output only. The smallest f-number of the lens at the focal length used to create the photo (APEX value).
  *   `meteringMode` (*type:* `String.t`, *default:* `nil`) - Output only. The metering mode used to create the photo.
  *   `rotation` (*type:* `integer()`, *default:* `nil`) - Output only. The number of clockwise 90 degree rotations applied from the image's original orientation.
  *   `sensor` (*type:* `String.t`, *default:* `nil`) - Output only. The type of sensor used to create the photo.
  *   `subjectDistance` (*type:* `integer()`, *default:* `nil`) - Output only. The distance to the subject of the photo, in meters.
  *   `time` (*type:* `String.t`, *default:* `nil`) - Output only. The date and time the photo was taken (EXIF DateTime).
  *   `whiteBalance` (*type:* `String.t`, *default:* `nil`) - Output only. The white balance mode used to create the photo.
  *   `width` (*type:* `integer()`, *default:* `nil`) - Output only. The width of the image in pixels.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :aperture => number() | nil,
          :cameraMake => String.t() | nil,
          :cameraModel => String.t() | nil,
          :colorSpace => String.t() | nil,
          :exposureBias => number() | nil,
          :exposureMode => String.t() | nil,
          :exposureTime => number() | nil,
          :flashUsed => boolean() | nil,
          :focalLength => number() | nil,
          :height => integer() | nil,
          :isoSpeed => integer() | nil,
          :lens => String.t() | nil,
          :location => GoogleApi.Drive.V3.Model.FileImageMediaMetadataLocation.t() | nil,
          :maxApertureValue => number() | nil,
          :meteringMode => String.t() | nil,
          :rotation => integer() | nil,
          :sensor => String.t() | nil,
          :subjectDistance => integer() | nil,
          :time => String.t() | nil,
          :whiteBalance => String.t() | nil,
          :width => integer() | nil
        }

  field(:aperture)
  field(:cameraMake)
  field(:cameraModel)
  field(:colorSpace)
  field(:exposureBias)
  field(:exposureMode)
  field(:exposureTime)
  field(:flashUsed)
  field(:focalLength)
  field(:height)
  field(:isoSpeed)
  field(:lens)
  field(:location, as: GoogleApi.Drive.V3.Model.FileImageMediaMetadataLocation)
  field(:maxApertureValue)
  field(:meteringMode)
  field(:rotation)
  field(:sensor)
  field(:subjectDistance)
  field(:time)
  field(:whiteBalance)
  field(:width)
end

defimpl Poison.Decoder, for: GoogleApi.Drive.V3.Model.FileImageMediaMetadata do
  def decode(value, options) do
    GoogleApi.Drive.V3.Model.FileImageMediaMetadata.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Drive.V3.Model.FileImageMediaMetadata do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
