# 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.Slides.V1.Model.ShapeProperties do
  @moduledoc """
  The properties of a Shape. If the shape is a placeholder shape as determined by the placeholder field, then these properties may be inherited from a parent placeholder shape. Determining the rendered value of the property depends on the corresponding property_state field value. Any text autofit settings on the shape are automatically deactivated by requests that can impact how text fits in the shape.

  ## Attributes

  *   `autofit` (*type:* `GoogleApi.Slides.V1.Model.Autofit.t`, *default:* `nil`) - The autofit properties of the shape. This property is only set for shapes that allow text.
  *   `contentAlignment` (*type:* `String.t`, *default:* `nil`) - The alignment of the content in the shape. If unspecified, the alignment is inherited from a parent placeholder if it exists. If the shape has no parent, the default alignment matches the alignment for new shapes created in the Slides editor.
  *   `link` (*type:* `GoogleApi.Slides.V1.Model.Link.t`, *default:* `nil`) - The hyperlink destination of the shape. If unset, there is no link. Links are not inherited from parent placeholders.
  *   `outline` (*type:* `GoogleApi.Slides.V1.Model.Outline.t`, *default:* `nil`) - The outline of the shape. If unset, the outline is inherited from a parent placeholder if it exists. If the shape has no parent, then the default outline depends on the shape type, matching the defaults for new shapes created in the Slides editor.
  *   `shadow` (*type:* `GoogleApi.Slides.V1.Model.Shadow.t`, *default:* `nil`) - The shadow properties of the shape. If unset, the shadow is inherited from a parent placeholder if it exists. If the shape has no parent, then the default shadow matches the defaults for new shapes created in the Slides editor. This property is read-only.
  *   `shapeBackgroundFill` (*type:* `GoogleApi.Slides.V1.Model.ShapeBackgroundFill.t`, *default:* `nil`) - The background fill of the shape. If unset, the background fill is inherited from a parent placeholder if it exists. If the shape has no parent, then the default background fill depends on the shape type, matching the defaults for new shapes created in the Slides editor.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :autofit => GoogleApi.Slides.V1.Model.Autofit.t() | nil,
          :contentAlignment => String.t() | nil,
          :link => GoogleApi.Slides.V1.Model.Link.t() | nil,
          :outline => GoogleApi.Slides.V1.Model.Outline.t() | nil,
          :shadow => GoogleApi.Slides.V1.Model.Shadow.t() | nil,
          :shapeBackgroundFill => GoogleApi.Slides.V1.Model.ShapeBackgroundFill.t() | nil
        }

  field(:autofit, as: GoogleApi.Slides.V1.Model.Autofit)
  field(:contentAlignment)
  field(:link, as: GoogleApi.Slides.V1.Model.Link)
  field(:outline, as: GoogleApi.Slides.V1.Model.Outline)
  field(:shadow, as: GoogleApi.Slides.V1.Model.Shadow)
  field(:shapeBackgroundFill, as: GoogleApi.Slides.V1.Model.ShapeBackgroundFill)
end

defimpl Poison.Decoder, for: GoogleApi.Slides.V1.Model.ShapeProperties do
  def decode(value, options) do
    GoogleApi.Slides.V1.Model.ShapeProperties.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Slides.V1.Model.ShapeProperties do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
