import { AnnotationAppearanceMode_$type } from "./AnnotationAppearanceMode";
import { OverlayTextLocation_$type } from "./OverlayTextLocation";
import { OverlayTextInfo as OverlayTextInfo_internal } from "./OverlayTextInfo";
import { ensureEnum, ensureBool, brushToString, stringToBrush } from "igniteui-angular-core";
/**
 * Represents data annotation
*/
export class IgxOverlayTextInfo {
    constructor() {
        this._implementation = this.createImplementation();
        this._implementation.externalObject = this;
        this.onImplementationCreated();
        if (this._initializeAdapters) {
            this._initializeAdapters();
        }
    }
    createImplementation() {
        return new OverlayTextInfo_internal();
    }
    /**
     * @hidden
     */
    get i() {
        return this._implementation;
    }
    onImplementationCreated() {
    }
    _provideImplementation(i) {
        this._implementation = i;
        this._implementation.externalObject = this;
        this.onImplementationCreated();
    }
    /**
     * Gets or sets Horizontal Margin for the overlay text
    */
    get horizontalMargin() {
        return this.i.horizontalMargin;
    }
    set horizontalMargin(v) {
        this.i.horizontalMargin = +v;
    }
    /**
     * Gets or sets Horizontal Padding for the overlay text
    */
    get horizontalPadding() {
        return this.i.horizontalPadding;
    }
    set horizontalPadding(v) {
        this.i.horizontalPadding = +v;
    }
    /**
     * Gets or sets Vertical Padding for the overlay text
    */
    get verticalPadding() {
        return this.i.verticalPadding;
    }
    set verticalPadding(v) {
        this.i.verticalPadding = +v;
    }
    /**
     * Gets or sets Vertical Margin for the overlay text
    */
    get verticalMargin() {
        return this.i.verticalMargin;
    }
    set verticalMargin(v) {
        this.i.verticalMargin = +v;
    }
    /**
     * Gets or sets boarder border radius of the overlay text
    */
    get borderRadius() {
        return this.i.borderRadius;
    }
    set borderRadius(v) {
        this.i.borderRadius = +v;
    }
    /**
     * Gets or sets boarder thickness of the overlay text
    */
    get borderThickness() {
        return this.i.borderThickness;
    }
    set borderThickness(v) {
        this.i.borderThickness = +v;
    }
    /**
     * Gets or sets appearance shift of the overlay text border
    */
    get borderShift() {
        return this.i.borderShift;
    }
    set borderShift(v) {
        this.i.borderShift = +v;
    }
    /**
     * Gets or sets appearance shift of the overlay text background
    */
    get backgroundShift() {
        return this.i.backgroundShift;
    }
    set backgroundShift(v) {
        this.i.backgroundShift = +v;
    }
    /**
     * Gets or sets appearance shift of the overlay text color
    */
    get textColorShift() {
        return this.i.textColorShift;
    }
    set textColorShift(v) {
        this.i.textColorShift = +v;
    }
    /**
     * Gets or sets appearance mode of the overlay text border
    */
    get borderMode() {
        return this.i.borderMode;
    }
    set borderMode(v) {
        this.i.borderMode = ensureEnum(AnnotationAppearanceMode_$type, v);
    }
    /**
     * Gets or sets appearance mode of the overlay text background
    */
    get backgroundMode() {
        return this.i.backgroundMode;
    }
    set backgroundMode(v) {
        this.i.backgroundMode = ensureEnum(AnnotationAppearanceMode_$type, v);
    }
    /**
     * Gets or sets appearance mode of the overlay text color
    */
    get textColorMode() {
        return this.i.textColorMode;
    }
    set textColorMode(v) {
        this.i.textColorMode = ensureEnum(AnnotationAppearanceMode_$type, v);
    }
    /**
     * Gets or sets content of the overlay text
    */
    get textContent() {
        return this.i.textContent;
    }
    set textContent(v) {
        this.i.textContent = v;
    }
    /**
     * Gets or sets rotation angle of the overlay text
    */
    get textAngle() {
        return this.i.textAngle;
    }
    set textAngle(v) {
        this.i.textAngle = +v;
    }
    /**
     * Gets or sets visibility of the overlay text
    */
    get textVisible() {
        return this.i.textVisible;
    }
    set textVisible(v) {
        this.i.textVisible = ensureBool(v);
    }
    /**
     * Gets or sets location of the overlay text in relation to shape annotation
    */
    get textLocation() {
        return this.i.textLocation;
    }
    set textLocation(v) {
        this.i.textLocation = ensureEnum(OverlayTextLocation_$type, v);
    }
    /**
     * Gets or sets color of the overlay text
    */
    get textColor() {
        return brushToString(this.i.textColor);
    }
    set textColor(v) {
        this.i.textColor = stringToBrush(v);
    }
    /**
     * Gets or sets background of the overlay text
    */
    get background() {
        return brushToString(this.i.background);
    }
    set background(v) {
        this.i.background = stringToBrush(v);
    }
    /**
     * Gets or sets border stroke of the overlay text
    */
    get borderStroke() {
        return brushToString(this.i.borderStroke);
    }
    set borderStroke(v) {
        this.i.borderStroke = stringToBrush(v);
    }
    /**
     * Gets or sets shape brush associated with the overlay text
    */
    get shapeBrush() {
        return brushToString(this.i.shapeBrush);
    }
    set shapeBrush(v) {
        this.i.shapeBrush = stringToBrush(v);
    }
    /**
     * Gets or sets shape outline associated with the overlay text
    */
    get shapeOutline() {
        return brushToString(this.i.shapeOutline);
    }
    set shapeOutline(v) {
        this.i.shapeOutline = stringToBrush(v);
    }
    findByName(name) {
        if (this.findEphemera) {
            if (name && name.indexOf("@@e:") == 0) {
                return this.findEphemera(name);
            }
        }
        return null;
    }
}
