/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */
#pragma once
#include 
#include 
#include 
#include 
namespace Aws
{
namespace Utils
{
namespace Json
{
  class JsonValue;
  class JsonView;
} // namespace Json
} // namespace Utils
namespace QuickSight
{
namespace Model
{
  /**
   * Configures the properties of a chart's axes that are used by small multiples
   * panels.
See Also:
   AWS
   * API Reference
   */
  class SmallMultiplesAxisProperties
  {
  public:
    AWS_QUICKSIGHT_API SmallMultiplesAxisProperties();
    AWS_QUICKSIGHT_API SmallMultiplesAxisProperties(Aws::Utils::Json::JsonView jsonValue);
    AWS_QUICKSIGHT_API SmallMultiplesAxisProperties& operator=(Aws::Utils::Json::JsonView jsonValue);
    AWS_QUICKSIGHT_API Aws::Utils::Json::JsonValue Jsonize() const;
    /**
     * Determines whether scale of the axes are shared or independent. The default
     * value is SHARED.
     */
    inline const SmallMultiplesAxisScale& GetScale() const{ return m_scale; }
    /**
     * Determines whether scale of the axes are shared or independent. The default
     * value is SHARED.
     */
    inline bool ScaleHasBeenSet() const { return m_scaleHasBeenSet; }
    /**
     * Determines whether scale of the axes are shared or independent. The default
     * value is SHARED.
     */
    inline void SetScale(const SmallMultiplesAxisScale& value) { m_scaleHasBeenSet = true; m_scale = value; }
    /**
     * Determines whether scale of the axes are shared or independent. The default
     * value is SHARED.
     */
    inline void SetScale(SmallMultiplesAxisScale&& value) { m_scaleHasBeenSet = true; m_scale = std::move(value); }
    /**
     * Determines whether scale of the axes are shared or independent. The default
     * value is SHARED.
     */
    inline SmallMultiplesAxisProperties& WithScale(const SmallMultiplesAxisScale& value) { SetScale(value); return *this;}
    /**
     * Determines whether scale of the axes are shared or independent. The default
     * value is SHARED.
     */
    inline SmallMultiplesAxisProperties& WithScale(SmallMultiplesAxisScale&& value) { SetScale(std::move(value)); return *this;}
    /**
     * Defines the placement of the axis. By default, axes are rendered
     * OUTSIDE of the panels. Axes with INDEPENDENT scale are
     * rendered INSIDE the panels.
     */
    inline const SmallMultiplesAxisPlacement& GetPlacement() const{ return m_placement; }
    /**
     * Defines the placement of the axis. By default, axes are rendered
     * OUTSIDE of the panels. Axes with INDEPENDENT scale are
     * rendered INSIDE the panels.
     */
    inline bool PlacementHasBeenSet() const { return m_placementHasBeenSet; }
    /**
     * Defines the placement of the axis. By default, axes are rendered
     * OUTSIDE of the panels. Axes with INDEPENDENT scale are
     * rendered INSIDE the panels.
     */
    inline void SetPlacement(const SmallMultiplesAxisPlacement& value) { m_placementHasBeenSet = true; m_placement = value; }
    /**
     * Defines the placement of the axis. By default, axes are rendered
     * OUTSIDE of the panels. Axes with INDEPENDENT scale are
     * rendered INSIDE the panels.
     */
    inline void SetPlacement(SmallMultiplesAxisPlacement&& value) { m_placementHasBeenSet = true; m_placement = std::move(value); }
    /**
     * Defines the placement of the axis. By default, axes are rendered
     * OUTSIDE of the panels. Axes with INDEPENDENT scale are
     * rendered INSIDE the panels.
     */
    inline SmallMultiplesAxisProperties& WithPlacement(const SmallMultiplesAxisPlacement& value) { SetPlacement(value); return *this;}
    /**
     * Defines the placement of the axis. By default, axes are rendered
     * OUTSIDE of the panels. Axes with INDEPENDENT scale are
     * rendered INSIDE the panels.
     */
    inline SmallMultiplesAxisProperties& WithPlacement(SmallMultiplesAxisPlacement&& value) { SetPlacement(std::move(value)); return *this;}
  private:
    SmallMultiplesAxisScale m_scale;
    bool m_scaleHasBeenSet = false;
    SmallMultiplesAxisPlacement m_placement;
    bool m_placementHasBeenSet = false;
  };
} // namespace Model
} // namespace QuickSight
} // namespace Aws