/**
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 */

package com.microsoft.azure.cognitiveservices.vision.computervision.models;

import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * An object representing a recognized text line.
 */
public class Line {
    /**
     * The BCP-47 language code of the recognized text line. Only provided
     * where the language of the line differs from the page's.
     */
    @JsonProperty(value = "language")
    private String language;

    /**
     * Bounding box of a recognized line.
     */
    @JsonProperty(value = "boundingBox", required = true)
    private List<Double> boundingBox;

    /**
     * Appearance of the text line.
     */
    @JsonProperty(value = "appearance")
    private Appearance appearance;

    /**
     * The text content of the line.
     */
    @JsonProperty(value = "text", required = true)
    private String text;

    /**
     * List of words in the text line.
     */
    @JsonProperty(value = "words", required = true)
    private List<Word> words;

    /**
     * Get the language value.
     *
     * @return the language value
     */
    public String language() {
        return this.language;
    }

    /**
     * Set the language value.
     *
     * @param language the language value to set
     * @return the Line object itself.
     */
    public Line withLanguage(String language) {
        this.language = language;
        return this;
    }

    /**
     * Get the boundingBox value.
     *
     * @return the boundingBox value
     */
    public List<Double> boundingBox() {
        return this.boundingBox;
    }

    /**
     * Set the boundingBox value.
     *
     * @param boundingBox the boundingBox value to set
     * @return the Line object itself.
     */
    public Line withBoundingBox(List<Double> boundingBox) {
        this.boundingBox = boundingBox;
        return this;
    }

    /**
     * Get the appearance value.
     *
     * @return the appearance value
     */
    public Appearance appearance() {
        return this.appearance;
    }

    /**
     * Set the appearance value.
     *
     * @param appearance the appearance value to set
     * @return the Line object itself.
     */
    public Line withAppearance(Appearance appearance) {
        this.appearance = appearance;
        return this;
    }

    /**
     * Get the text value.
     *
     * @return the text value
     */
    public String text() {
        return this.text;
    }

    /**
     * Set the text value.
     *
     * @param text the text value to set
     * @return the Line object itself.
     */
    public Line withText(String text) {
        this.text = text;
        return this;
    }

    /**
     * Get the words value.
     *
     * @return the words value
     */
    public List<Word> words() {
        return this.words;
    }

    /**
     * Set the words value.
     *
     * @param words the words value to set
     * @return the Line object itself.
     */
    public Line withWords(List<Word> words) {
        this.words = words;
        return this;
    }

}
