# 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.ParagraphStyle do
  @moduledoc """
  Styles that apply to a whole paragraph. If this text is contained in a shape with a parent placeholder, then these paragraph styles may be inherited from the parent. Which paragraph styles are inherited depend on the nesting level of lists: * A paragraph not in a list will inherit its paragraph style from the paragraph at the 0 nesting level of the list inside the parent placeholder. * A paragraph in a list will inherit its paragraph style from the paragraph at its corresponding nesting level of the list inside the parent placeholder. Inherited paragraph styles are represented as unset fields in this message.

  ## Attributes

  *   `alignment` (*type:* `String.t`, *default:* `nil`) - The text alignment for this paragraph.
  *   `direction` (*type:* `String.t`, *default:* `nil`) - The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since text direction is not inherited.
  *   `indentEnd` (*type:* `GoogleApi.Slides.V1.Model.Dimension.t`, *default:* `nil`) - The amount indentation for the paragraph on the side that corresponds to the end of the text, based on the current text direction. If unset, the value is inherited from the parent.
  *   `indentFirstLine` (*type:* `GoogleApi.Slides.V1.Model.Dimension.t`, *default:* `nil`) - The amount of indentation for the start of the first line of the paragraph. If unset, the value is inherited from the parent.
  *   `indentStart` (*type:* `GoogleApi.Slides.V1.Model.Dimension.t`, *default:* `nil`) - The amount indentation for the paragraph on the side that corresponds to the start of the text, based on the current text direction. If unset, the value is inherited from the parent.
  *   `lineSpacing` (*type:* `number()`, *default:* `nil`) - The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
  *   `spaceAbove` (*type:* `GoogleApi.Slides.V1.Model.Dimension.t`, *default:* `nil`) - The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
  *   `spaceBelow` (*type:* `GoogleApi.Slides.V1.Model.Dimension.t`, *default:* `nil`) - The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
  *   `spacingMode` (*type:* `String.t`, *default:* `nil`) - The spacing mode for the paragraph.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :alignment => String.t() | nil,
          :direction => String.t() | nil,
          :indentEnd => GoogleApi.Slides.V1.Model.Dimension.t() | nil,
          :indentFirstLine => GoogleApi.Slides.V1.Model.Dimension.t() | nil,
          :indentStart => GoogleApi.Slides.V1.Model.Dimension.t() | nil,
          :lineSpacing => number() | nil,
          :spaceAbove => GoogleApi.Slides.V1.Model.Dimension.t() | nil,
          :spaceBelow => GoogleApi.Slides.V1.Model.Dimension.t() | nil,
          :spacingMode => String.t() | nil
        }

  field(:alignment)
  field(:direction)
  field(:indentEnd, as: GoogleApi.Slides.V1.Model.Dimension)
  field(:indentFirstLine, as: GoogleApi.Slides.V1.Model.Dimension)
  field(:indentStart, as: GoogleApi.Slides.V1.Model.Dimension)
  field(:lineSpacing)
  field(:spaceAbove, as: GoogleApi.Slides.V1.Model.Dimension)
  field(:spaceBelow, as: GoogleApi.Slides.V1.Model.Dimension)
  field(:spacingMode)
end

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

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