# 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.Sheets.V4.Model.BandingProperties do
  @moduledoc """
  Properties referring a single dimension (either row or column). If both BandedRange.row_properties and BandedRange.column_properties are set, the fill colors are applied to cells according to the following rules: * header_color and footer_color take priority over band colors. * first_band_color takes priority over second_band_color. * row_properties takes priority over column_properties. For example, the first row color takes priority over the first column color, but the first column color takes priority over the second row color. Similarly, the row header takes priority over the column header in the top left cell, but the column header takes priority over the first row color if the row header is not set.

  ## Attributes

  *   `firstBandColor` (*type:* `GoogleApi.Sheets.V4.Model.Color.t`, *default:* `nil`) - The first color that is alternating. (Required) Deprecated: Use first_band_color_style.
  *   `firstBandColorStyle` (*type:* `GoogleApi.Sheets.V4.Model.ColorStyle.t`, *default:* `nil`) - The first color that is alternating. (Required) If first_band_color is also set, this field takes precedence.
  *   `footerColor` (*type:* `GoogleApi.Sheets.V4.Model.Color.t`, *default:* `nil`) - The color of the last row or column. If this field is not set, the last row or column is filled with either first_band_color or second_band_color, depending on the color of the previous row or column. Deprecated: Use footer_color_style.
  *   `footerColorStyle` (*type:* `GoogleApi.Sheets.V4.Model.ColorStyle.t`, *default:* `nil`) - The color of the last row or column. If this field is not set, the last row or column is filled with either first_band_color or second_band_color, depending on the color of the previous row or column. If footer_color is also set, this field takes precedence.
  *   `headerColor` (*type:* `GoogleApi.Sheets.V4.Model.Color.t`, *default:* `nil`) - The color of the first row or column. If this field is set, the first row or column is filled with this color and the colors alternate between first_band_color and second_band_color starting from the second row or column. Otherwise, the first row or column is filled with first_band_color and the colors proceed to alternate as they normally would. Deprecated: Use header_color_style.
  *   `headerColorStyle` (*type:* `GoogleApi.Sheets.V4.Model.ColorStyle.t`, *default:* `nil`) - The color of the first row or column. If this field is set, the first row or column is filled with this color and the colors alternate between first_band_color and second_band_color starting from the second row or column. Otherwise, the first row or column is filled with first_band_color and the colors proceed to alternate as they normally would. If header_color is also set, this field takes precedence.
  *   `secondBandColor` (*type:* `GoogleApi.Sheets.V4.Model.Color.t`, *default:* `nil`) - The second color that is alternating. (Required) Deprecated: Use second_band_color_style.
  *   `secondBandColorStyle` (*type:* `GoogleApi.Sheets.V4.Model.ColorStyle.t`, *default:* `nil`) - The second color that is alternating. (Required) If second_band_color is also set, this field takes precedence.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :firstBandColor => GoogleApi.Sheets.V4.Model.Color.t() | nil,
          :firstBandColorStyle => GoogleApi.Sheets.V4.Model.ColorStyle.t() | nil,
          :footerColor => GoogleApi.Sheets.V4.Model.Color.t() | nil,
          :footerColorStyle => GoogleApi.Sheets.V4.Model.ColorStyle.t() | nil,
          :headerColor => GoogleApi.Sheets.V4.Model.Color.t() | nil,
          :headerColorStyle => GoogleApi.Sheets.V4.Model.ColorStyle.t() | nil,
          :secondBandColor => GoogleApi.Sheets.V4.Model.Color.t() | nil,
          :secondBandColorStyle => GoogleApi.Sheets.V4.Model.ColorStyle.t() | nil
        }

  field(:firstBandColor, as: GoogleApi.Sheets.V4.Model.Color)
  field(:firstBandColorStyle, as: GoogleApi.Sheets.V4.Model.ColorStyle)
  field(:footerColor, as: GoogleApi.Sheets.V4.Model.Color)
  field(:footerColorStyle, as: GoogleApi.Sheets.V4.Model.ColorStyle)
  field(:headerColor, as: GoogleApi.Sheets.V4.Model.Color)
  field(:headerColorStyle, as: GoogleApi.Sheets.V4.Model.ColorStyle)
  field(:secondBandColor, as: GoogleApi.Sheets.V4.Model.Color)
  field(:secondBandColorStyle, as: GoogleApi.Sheets.V4.Model.ColorStyle)
end

defimpl Poison.Decoder, for: GoogleApi.Sheets.V4.Model.BandingProperties do
  def decode(value, options) do
    GoogleApi.Sheets.V4.Model.BandingProperties.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Sheets.V4.Model.BandingProperties do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
