/*
THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE  AGREEMENT ("AGREEMENT") LOCATED HERE:
https://www.infragistics.com/legal/license/igultimate-la
https://www.infragistics.com/legal/license/igultimate-eula
GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE:  you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company.
*/
import { Base, EnumUtil, fromEnum, markType, getInstanceType } from "igniteui-angular-core";
import { IAxisVisualDataManager_$type } from "./IAxisVisualDataManager";
import { TextBlock } from "igniteui-angular-core";
import { VisualExportHelper } from "./VisualExportHelper";
import { ChartTitleVisualData } from "./ChartTitleVisualData";
import { HorizontalAlignment_$type } from "igniteui-angular-core";
import { VerticalAlignment_$type } from "igniteui-angular-core";
import { AxisTitlePosition_$type } from "./AxisTitlePosition";
import { RectData } from "igniteui-angular-core";
import { AppearanceHelper } from "igniteui-angular-core";
import { AxisVisualData } from "./AxisVisualData";
import { PathVisualData } from "igniteui-angular-core";
import { List$1 } from "igniteui-angular-core";
import { RectangleVisualData } from "igniteui-angular-core";
import { AxisLabelVisualData } from "./AxisLabelVisualData";
import { PointData } from "igniteui-angular-core";
import { Size } from "igniteui-angular-core";
import { SizeData } from "igniteui-angular-core";
import { FontUtil } from "igniteui-angular-core";
/**
 * @hidden
 */
export let AxisVisualDataManager = /*@__PURE__*/ (() => {
    class AxisVisualDataManager extends Base {
        c(a) {
            return a;
        }
        d(a, b) {
            let c = VisualExportHelper.a(b);
            return c;
        }
        a(a, b, c, d) {
            let e = new ChartTitleVisualData();
            let f = a.a4;
            let g = f.a9();
            e.viewport = RectData.b(g);
            let h = this.d(a, d);
            e.textPlotArea = RectData.b(h);
            let i = d._visibility == 0 && d.x != null;
            let j = a.av.af.d();
            let k = f.bg(d);
            let l = this.b(a, d, j);
            let m = AppearanceHelper.c(d, l);
            m.marginLeft = k.left;
            m.marginRight = k.right;
            m.marginTop = k.top;
            m.marginBottom = k.bottom;
            m.fontStretch = "Normal";
            m.textWrapping = "Wrap";
            m.visibility = i;
            if (a.be != null) {
                m.horizontalAlignment = EnumUtil.getName(HorizontalAlignment_$type, a.be.horizontalAlignment);
                m.verticalAlignment = EnumUtil.getName(VerticalAlignment_$type, a.be.verticalAlignment);
                m.textPosition = EnumUtil.getName(AxisTitlePosition_$type, a.be.position);
            }
            else {
                m.horizontalAlignment = EnumUtil.getName(HorizontalAlignment_$type, (0));
                m.verticalAlignment = EnumUtil.getName(VerticalAlignment_$type, (1));
                m.textPosition = EnumUtil.getName(AxisTitlePosition_$type, (0));
            }
            e.appearance = m;
            return e;
        }
        exportVisualData(a) {
            let b = new AxisVisualData();
            b.viewport = RectData.b(a.kc);
            b.labelsViewport = RectData.b(a.a4.a9());
            b.type = this.c(getInstanceType(a).typeName);
            b.name = a.name;
            let c = new PathVisualData(1, "axisLine", a.a4.ba);
            b.axisLine = c;
            b.tickMarks = new PathVisualData(1, "tickMarks", a.av.af.aw);
            if (!a.av.ab.contains(a.av.af.aw)) {
                b.tickMarks.data.clear();
            }
            b.minorLines = new PathVisualData(1, "minorLines", a.a4.bc);
            b.majorLines = new PathVisualData(1, "majorLines", a.a4.bb);
            b.strips = new PathVisualData(1, "strips", a.a4.bd);
            if (a.g5 != null) {
                let d = this.a(a, a.bh, b.type, a.ir);
                b.title = d;
            }
            else {
                b.title = null;
            }
            let e = a.bh.getFontInfo();
            if (a.ay != null && a.ay.textStyle != null) {
                e = a.ay.h(a.bh.cu.j.ae);
            }
            let f, g, h, i;
            let j = a.av.af.aw.an.d;
            if (1 < j.count) {
                for (let k = 1; k < j.count; k++) {
                    let l = j._inner[k];
                    let m = j._inner[k - 1];
                    f = l.d.x - l.c.x;
                    g = l.d.y - l.c.y;
                    h = m.d.x - m.c.x;
                    i = m.d.y - m.c.y;
                    if (1 == k) {
                        b.tickMarksLength = Math.sqrt(Math.pow(f, 2) + Math.pow(g, 2));
                    }
                }
            }
            let n = a.av.ba;
            let o = a.av.af.g();
            if (n.count > 0) {
                for (let p = 0; p < n.count; p++) {
                    let q = a.av.ba._inner[p];
                    let r = a.av.a9._inner[p];
                    let s = ((() => {
                        let $ret = new AxisLabelVisualData();
                        $ret.labelPosition = q.c;
                        $ret.labelValue = r;
                        $ret.panelPosition = PointData.b(a.a4.a6());
                        return $ret;
                    })());
                    let t = new List$1(TextBlock.$, 0);
                    for (let u of fromEnum(o)) {
                        t.add(u);
                    }
                    if (p < t.count) {
                        let v = this.b(a, t._inner[p], e);
                        s.appearance = AppearanceHelper.c(t._inner[p], v);
                        s.position = PointData.b(a.a4.a5(t._inner[p]));
                        s.size = SizeData.b(new Size(1, t._inner[p].m, t._inner[p].l));
                    }
                    b.labels.add(s);
                }
            }
            let w = null;
            if (a.bo.a.count > 0) {
                for (let x = 0; x < a.bo.a.count; x++) {
                    if (w == null) {
                        w = new List$1(RectangleVisualData.$, 0);
                    }
                    let y = new RectangleVisualData(1, "annotationBacking_" + x, a.bo.item(x));
                    y.appearance.canvasLeft = a.bo.item(x).n;
                    y.appearance.canvasTop = a.bo.item(x).o;
                    w.add(y);
                }
            }
            b.annotationBackings = w;
            return b;
        }
        b(a, b, c) {
            return FontUtil.getFontInfo(a.bh.cu.j.ae, b, c);
        }
    }
    AxisVisualDataManager.$t = markType(AxisVisualDataManager, 'AxisVisualDataManager', Base.$, [IAxisVisualDataManager_$type]);
    return AxisVisualDataManager;
})();
