/*
 * 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.
 */
/*
 * This code was generated by https://github.com/googleapis/google-api-java-client-services/
 * Modify at your own risk.
 */

package com.google.api.services.contentwarehouse.v1.model;

/**
 * These capabilities represent the tactile features associated with the device. This includes, for
 * example, whether the device has a screen, how big the screen is, and privacy of the screen. Next
 * ID: 11
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Document AI Warehouse API. For a detailed explanation
 * see:
 * <a href="https://developers.google.com/api-client-library/java/google-http-java-client/json">https://developers.google.com/api-client-library/java/google-http-java-client/json</a>
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class AssistantApiScreenCapabilities extends com.google.api.client.json.GenericJson {

  /**
   * The scale factor used to convert Scalable Pixel (SP) units to Density-independent Pixel (DP)
   * units (DP = SP * scale factor). Fonts are measured in units of SP, and on some platforms such
   * as Android the SP to DP scale factor can be affected by the font size a user selects in
   * accessibility settings.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Float fontScaleFactor;

  /**
   * The types of input that this screen supports. Note that this can be empty in which case the
   * screen's input type is unknown.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<java.lang.String> inputType;

  /**
   * Mask defined for this device, if any.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AssistantApiScreenCapabilitiesMask mask;

  /**
   * The targeted schema version for ProtoLayout requests.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AssistantApiScreenCapabilitiesProtoLayoutVersion protoLayoutTargetedSchema;

  /**
   * If this field is absent, the resolution of the screen is unknown.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private AssistantApiScreenCapabilitiesResolution resolution;

  /**
   * If screen is turned off.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean screenOff;

  /**
   * The ability of the client to correctly report screen state.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String screenStateDetection;

  /**
   * The primary supported rendering format for display on the device's screen. This may be used to
   * determine what format of card to be returned when rendering cards.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.String supportedRenderingFormat;

  /**
   * The screen states that the client supports. The current screen state is specified in
   * DeviceProperties.screen.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.util.List<java.lang.String> supportedScreenStates;

  /**
   * Whether the device enabled vision help features in accessibility settings. The settings is
   * config in Assistant App and on-device settings, and stored in footprints. When enabled, font,
   * color and TTS will be adjusted.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private java.lang.Boolean visionHelpEnabled;

  /**
   * The scale factor used to convert Scalable Pixel (SP) units to Density-independent Pixel (DP)
   * units (DP = SP * scale factor). Fonts are measured in units of SP, and on some platforms such
   * as Android the SP to DP scale factor can be affected by the font size a user selects in
   * accessibility settings.
   * @return value or {@code null} for none
   */
  public java.lang.Float getFontScaleFactor() {
    return fontScaleFactor;
  }

  /**
   * The scale factor used to convert Scalable Pixel (SP) units to Density-independent Pixel (DP)
   * units (DP = SP * scale factor). Fonts are measured in units of SP, and on some platforms such
   * as Android the SP to DP scale factor can be affected by the font size a user selects in
   * accessibility settings.
   * @param fontScaleFactor fontScaleFactor or {@code null} for none
   */
  public AssistantApiScreenCapabilities setFontScaleFactor(java.lang.Float fontScaleFactor) {
    this.fontScaleFactor = fontScaleFactor;
    return this;
  }

  /**
   * The types of input that this screen supports. Note that this can be empty in which case the
   * screen's input type is unknown.
   * @return value or {@code null} for none
   */
  public java.util.List<java.lang.String> getInputType() {
    return inputType;
  }

  /**
   * The types of input that this screen supports. Note that this can be empty in which case the
   * screen's input type is unknown.
   * @param inputType inputType or {@code null} for none
   */
  public AssistantApiScreenCapabilities setInputType(java.util.List<java.lang.String> inputType) {
    this.inputType = inputType;
    return this;
  }

  /**
   * Mask defined for this device, if any.
   * @return value or {@code null} for none
   */
  public AssistantApiScreenCapabilitiesMask getMask() {
    return mask;
  }

  /**
   * Mask defined for this device, if any.
   * @param mask mask or {@code null} for none
   */
  public AssistantApiScreenCapabilities setMask(AssistantApiScreenCapabilitiesMask mask) {
    this.mask = mask;
    return this;
  }

  /**
   * The targeted schema version for ProtoLayout requests.
   * @return value or {@code null} for none
   */
  public AssistantApiScreenCapabilitiesProtoLayoutVersion getProtoLayoutTargetedSchema() {
    return protoLayoutTargetedSchema;
  }

  /**
   * The targeted schema version for ProtoLayout requests.
   * @param protoLayoutTargetedSchema protoLayoutTargetedSchema or {@code null} for none
   */
  public AssistantApiScreenCapabilities setProtoLayoutTargetedSchema(AssistantApiScreenCapabilitiesProtoLayoutVersion protoLayoutTargetedSchema) {
    this.protoLayoutTargetedSchema = protoLayoutTargetedSchema;
    return this;
  }

  /**
   * If this field is absent, the resolution of the screen is unknown.
   * @return value or {@code null} for none
   */
  public AssistantApiScreenCapabilitiesResolution getResolution() {
    return resolution;
  }

  /**
   * If this field is absent, the resolution of the screen is unknown.
   * @param resolution resolution or {@code null} for none
   */
  public AssistantApiScreenCapabilities setResolution(AssistantApiScreenCapabilitiesResolution resolution) {
    this.resolution = resolution;
    return this;
  }

  /**
   * If screen is turned off.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getScreenOff() {
    return screenOff;
  }

  /**
   * If screen is turned off.
   * @param screenOff screenOff or {@code null} for none
   */
  public AssistantApiScreenCapabilities setScreenOff(java.lang.Boolean screenOff) {
    this.screenOff = screenOff;
    return this;
  }

  /**
   * The ability of the client to correctly report screen state.
   * @return value or {@code null} for none
   */
  public java.lang.String getScreenStateDetection() {
    return screenStateDetection;
  }

  /**
   * The ability of the client to correctly report screen state.
   * @param screenStateDetection screenStateDetection or {@code null} for none
   */
  public AssistantApiScreenCapabilities setScreenStateDetection(java.lang.String screenStateDetection) {
    this.screenStateDetection = screenStateDetection;
    return this;
  }

  /**
   * The primary supported rendering format for display on the device's screen. This may be used to
   * determine what format of card to be returned when rendering cards.
   * @return value or {@code null} for none
   */
  public java.lang.String getSupportedRenderingFormat() {
    return supportedRenderingFormat;
  }

  /**
   * The primary supported rendering format for display on the device's screen. This may be used to
   * determine what format of card to be returned when rendering cards.
   * @param supportedRenderingFormat supportedRenderingFormat or {@code null} for none
   */
  public AssistantApiScreenCapabilities setSupportedRenderingFormat(java.lang.String supportedRenderingFormat) {
    this.supportedRenderingFormat = supportedRenderingFormat;
    return this;
  }

  /**
   * The screen states that the client supports. The current screen state is specified in
   * DeviceProperties.screen.
   * @return value or {@code null} for none
   */
  public java.util.List<java.lang.String> getSupportedScreenStates() {
    return supportedScreenStates;
  }

  /**
   * The screen states that the client supports. The current screen state is specified in
   * DeviceProperties.screen.
   * @param supportedScreenStates supportedScreenStates or {@code null} for none
   */
  public AssistantApiScreenCapabilities setSupportedScreenStates(java.util.List<java.lang.String> supportedScreenStates) {
    this.supportedScreenStates = supportedScreenStates;
    return this;
  }

  /**
   * Whether the device enabled vision help features in accessibility settings. The settings is
   * config in Assistant App and on-device settings, and stored in footprints. When enabled, font,
   * color and TTS will be adjusted.
   * @return value or {@code null} for none
   */
  public java.lang.Boolean getVisionHelpEnabled() {
    return visionHelpEnabled;
  }

  /**
   * Whether the device enabled vision help features in accessibility settings. The settings is
   * config in Assistant App and on-device settings, and stored in footprints. When enabled, font,
   * color and TTS will be adjusted.
   * @param visionHelpEnabled visionHelpEnabled or {@code null} for none
   */
  public AssistantApiScreenCapabilities setVisionHelpEnabled(java.lang.Boolean visionHelpEnabled) {
    this.visionHelpEnabled = visionHelpEnabled;
    return this;
  }

  @Override
  public AssistantApiScreenCapabilities set(String fieldName, Object value) {
    return (AssistantApiScreenCapabilities) super.set(fieldName, value);
  }

  @Override
  public AssistantApiScreenCapabilities clone() {
    return (AssistantApiScreenCapabilities) super.clone();
  }

}
