/*
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 * as tslib_1 from "tslib";
import { Base, Type, markType, runOn, EnumUtil, typeCast, fromEnum } from "igniteui-angular-core/ES5/type";
import { IBucketizer_$type } from "./IBucketizer";
import { NotImplementedException } from "igniteui-angular-core/ES5/NotImplementedException";
import { CategoryAngleAxis } from "./CategoryAngleAxis";
import { NumericRadiusAxis } from "./NumericRadiusAxis";
import { truncate } from "igniteui-angular-core/ES5/number";
import { MarkerSeries } from "./MarkerSeries";
import { IHasCategoryModePreference_$type } from "./IHasCategoryModePreference";
import { SeriesRenderer$2 } from "./SeriesRenderer$2";
import { RadialFrame } from "./RadialFrame";
import { DependencyProperty } from "igniteui-angular-core/ES5/DependencyProperty";
import { SeriesPointOfInterest } from "./SeriesPointOfInterest";
import { ScalerParams } from "./ScalerParams";
import { Marker } from "./Marker";
import { MarkerSeriesView } from "./MarkerSeriesView";
import { RadialAxes } from "./RadialAxes";
import { Visibility_$type } from "igniteui-angular-core/ES5/Visibility";
import { SeriesRenderingArguments } from "./SeriesRenderingArguments";
import { PropertyMetadata } from "igniteui-angular-core/ES5/PropertyMetadata";
import { Pool$1 } from "igniteui-angular-core/ES5/Pool$1";
/**
 * @hidden
 */
var RadialBucketCalculator = /** @class */ (function (_super) {
    tslib_1.__extends(RadialBucketCalculator, _super);
    function RadialBucketCalculator(a) {
        var _this = _super.call(this) || this;
        _this.a = null;
        _this.c = 0;
        _this.d = 0;
        _this.b = 0;
        _this.a = a;
        return _this;
    }
    RadialBucketCalculator.prototype.getBucket = function (a) {
        throw new NotImplementedException(0);
    };
    RadialBucketCalculator.prototype.getBucketWithoutUnknowns = function (a) {
        return this.getBucket(a);
    };
    RadialBucketCalculator.prototype.getErrorBucket = function (a, b) {
        return NaN;
    };
    RadialBucketCalculator.prototype.getBucketInfo = function (a, b, c, d) {
        a = this.c;
        b = this.d;
        c = this.b;
        d = this.a.cn.eu;
        return {
            p0: a,
            p1: b,
            p2: c,
            p3: d
        };
    };
    RadialBucketCalculator.prototype.e = function (a) {
        var b = this.a.bs;
        var c = this.a.br;
        var d = this.a.cn.mz;
        if (b.isEmpty || c.isEmpty || d == null || this.a.cn.bz == null || this.a.cn.bz.count == 0) {
            this.b = 0;
            return;
        }
        var e = Math.floor(d.lc(c, b));
        var f = Math.ceil(d.lb(c, b));
        if (d.b8) {
            f = Math.ceil(d.lc(c, b));
            e = Math.floor(d.lb(c, b));
        }
        if (f < e) {
            f = d.jx + f;
        }
        var g = this.a.cn.m1;
        var h = g != null ? g.li : 0.75;
        var i = Math.min(c.width, c.height) * 0.5 * (h) * 2 * Math.PI;
        var j = Math.floor((f - e + 1) * a / i);
        this.b = truncate(Math.max(1, j));
        this.c = truncate(Math.max(0, Math.floor(e / this.b) - 1));
        this.d = truncate(Math.ceil(f / this.b));
    };
    RadialBucketCalculator.prototype.cacheValues = function () {
    };
    RadialBucketCalculator.prototype.unCacheValues = function () {
    };
    RadialBucketCalculator.$t = markType(RadialBucketCalculator, 'RadialBucketCalculator', Base.$, [IBucketizer_$type]);
    return RadialBucketCalculator;
}(Base));
export { RadialBucketCalculator };
/**
 * @hidden
 */
var RadialBase = /** @class */ (function (_super) {
    tslib_1.__extends(RadialBase, _super);
    function RadialBase() {
        var _this = _super.call(this) || this;
        _this.m7 = null;
        _this.m5 = new RadialFrame(3);
        _this.m6 = new RadialFrame(3);
        _this.m4 = new RadialFrame(3);
        _this.m2 = null;
        _this.m7 = new SeriesRenderer$2(RadialFrame.$, RadialBaseView.$, 1, runOn(_this, _this.nj), runOn(_this, _this.nk), runOn(_this, _this.ca), runOn(_this, _this.jk), runOn(_this, _this.ni), function (a) { return _this.m3.co.e(_this.eu); });
        return _this;
    }
    RadialBase.prototype.it = function (a) {
        _super.prototype.it.call(this, a);
        this.m3 = a;
    };
    RadialBase.prototype.ni = function () {
        if (this.bt.g) {
            this.bt.t();
        }
    };
    Object.defineProperty(RadialBase.prototype, "categoryAxis", {
        get: function () {
            return this.mz;
        },
        enumerable: true,
        configurable: true
    });
    RadialBase.prototype.ap = function () {
        return this.mz;
    };
    RadialBase.prototype.nb = function (a) {
        var _this = this;
        if (!this.hasMarkers) {
            return false;
        }
        var b = this.mz;
        var c = new ScalerParams(1, this.bs.mq, this.lx, b.b8);
        c.c = this.getEffectiveViewport1(this.bi);
        var d = this.m1;
        var e = new ScalerParams(1, this.bs.mq, this.lx, d.b8);
        e.c = this.getEffectiveViewport1(this.bi);
        a.clear();
        this.lz.cc(function (f) {
            if (f._visibility == 0) {
                var g = new SeriesPointOfInterest();
                var h = f.n;
                var i = f.o;
                if (h < _this.lx.left || h > _this.lx.right || i < _this.lx.top || i > _this.lx.bottom) {
                    return;
                }
                g.b = b.dy(h, c);
                g.c = d.dy(i, e);
                g.d = b.fi(f.ak);
                g.a = f.content;
                a.add(g);
            }
        });
        return true;
    };
    RadialBase.prototype.get_c2 = function () {
        return true;
    };
    RadialBase.prototype.ag = function () {
        return [this.mz, this.m1];
    };
    RadialBase.prototype.js = function (a, b) {
        this.m3.co.e(this.eu);
        this.jc(false);
    };
    RadialBase.prototype.jr = function (a, b) {
        this.m3.co.e(this.eu);
        this.jc(false);
    };
    RadialBase.prototype.iy = function (a, b, c, d) {
        _super.prototype.iy.call(this, a, b, c, d);
        switch (b) {
            case "SeriesViewer":
                if (c != null && d == null) {
                    if (this.mz != null) {
                        this.mz.bv(this);
                    }
                    if (this.m1 != null) {
                        this.m1.bv(this);
                    }
                }
                if (c == null && d != null) {
                    if (this.mz != null) {
                        this.mz.ch(this);
                    }
                    if (this.m1 != null) {
                        this.m1.ch(this);
                    }
                }
                this.m3.co.e(this.eu);
                this.jc(false);
                break;
            case RadialBase.$$p[0]:
                if (this.mz != null && this.m1 != null) {
                    this.m2 = new RadialAxes(this.m1, this.mz);
                }
                if (c != null) {
                    c.bv(this);
                }
                if (d != null) {
                    d.ch(this);
                }
                this.m3.co.e(this.eu);
                this.jc(false);
                break;
            case RadialBase.$$p[2]:
                if (this.mz != null && this.m1 != null) {
                    this.m2 = new RadialAxes(this.m1, this.mz);
                }
                if (c != null) {
                    c.bv(this);
                }
                if (d != null) {
                    d.ch(this);
                }
                this.m3.co.e(this.eu);
                if (this.m1 == null || !this.m1.ck()) {
                    this.jc(false);
                }
                break;
            case "SyncLink":
                if (this.bn != null && this.bs != null) {
                    this.m3.co.e(this.eu);
                    this.jc(false);
                }
                break;
            case "TransitionProgress":
                this.m6.c(this.ez, this.m5, this.m4);
                if (this.cc(this.bi)) {
                    return;
                }
                if (this.ez == 1) {
                    this.nk(this.m4, this.m3);
                }
                else {
                    this.nk(this.m6, this.m3);
                }
                if (this.bs != null) {
                    this.bs.jj(this);
                }
                break;
            case RadialBase.$$p[1]:
                this.jc(false);
                this.ij();
                break;
            case "VisibilityProxy":
                if (EnumUtil.getEnumValue(Visibility_$type, c) != 0 && EnumUtil.getEnumValue(Visibility_$type, d) == 0) {
                    this.m3.co.e(this.eu);
                }
                break;
        }
    };
    RadialBase.prototype.m9 = function (a) {
        if (typeCast(NumericRadiusAxis.$, a) !== null) {
            return true;
        }
        return false;
    };
    RadialBase.prototype.m8 = function (a) {
        if (typeCast(CategoryAngleAxis.$, a) !== null) {
            return true;
        }
        return false;
    };
    RadialBase.prototype.fp = function (a) {
        var b = this.e8(a);
        return b >= 0 && this.bz != null && b < this.bz.count ? this.bz.item(b) : null;
    };
    RadialBase.prototype.nc = function (a) {
        var b = this.bi.bs;
        var c = this.bi.br;
        if (this.mz != null && !b.isEmpty && !c.isEmpty && this.m2 != null) {
            var d = this.m2.c(a);
            if (d < 0) {
                d += Math.PI * 2;
            }
            if (d > Math.PI * 2) {
                d -= Math.PI * 2;
            }
            return d;
        }
        return NaN;
    };
    RadialBase.prototype.nd = function (a) {
        var b = this.bi.bs;
        var c = this.bi.br;
        var d = -1;
        if (this.mz != null && !b.isEmpty && !c.isEmpty && this.m2 != null) {
            var e = this.m2.c(a);
            if (e < 0) {
                e += Math.PI * 2;
            }
            if (e > Math.PI * 2) {
                e -= Math.PI * 2;
            }
            var f = this.mz.getUnscaledAngle(e);
            if (this.mz.categoryMode != 0) {
                f -= 0.5;
            }
            d = f;
        }
        return d;
    };
    RadialBase.prototype.e8 = function (a) {
        var b = truncate(Math.round(this.nd(a)));
        if (this.bz != null && b == this.bz.count) {
            b = 0;
        }
        return b;
    };
    RadialBase.prototype.c9 = function (a) {
        return false;
    };
    RadialBase.prototype.ia = function () {
        _super.prototype.ia.call(this);
        if (this.mz != null) {
            this.mz.g5(false);
        }
        if (this.m1 != null) {
            this.m1.g5(false);
        }
    };
    RadialBase.prototype.dw = function (a, b, c) {
        var d = true;
        var e = c;
        if (!_super.prototype.dw.call(this, a, b, c) || !c.l() || b.isEmpty || a.isEmpty || this.mz == null || this.mz.itemsSource == null || this.m1 == null || this.m2 == null || this.bz == null || this.mz.bf == null || this.m1.bf == null || this.m1.j3 == this.m1.j2) {
            e.co.b = 0;
            d = false;
        }
        return d;
    };
    RadialBase.prototype.jd = function (a) {
        var b;
        var c;
        var d = this.getViewInfo(c, b);
        c = d.p0;
        b = d.p1;
        if (!this.dw(c, b, this.bi)) {
            this.hv(true, this.bi);
            return;
        }
        var e = new SeriesRenderingArguments(this, c, b, a, this.de);
        var f = this.m7.g(e, this.m5, this.m4, this.m6, this.m3);
        this.m5 = f.p1;
        this.m4 = f.p2;
        this.m6 = f.p3;
    };
    RadialBase.prototype.ne = function () {
        var e_1, _a;
        var a = 0;
        try {
            for (var _b = tslib_1.__values(fromEnum(this.bs.series)), _c = _b.next(); !_c.done; _c = _b.next()) {
                var b = _c.value;
                if (b == this) {
                    return a;
                }
                var c = typeCast(RadialBase.$, b);
                if (c != null && c.mz == this.mz && c.preferredCategoryMode(c.mz) == 2) {
                    a++;
                }
            }
        }
        catch (e_1_1) { e_1 = { error: e_1_1 }; }
        finally {
            try {
                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
            }
            finally { if (e_1) throw e_1.error; }
        }
        return -1;
    };
    RadialBase.$t = markType(RadialBase, 'RadialBase', MarkerSeries.$, [IHasCategoryModePreference_$type]);
    return RadialBase;
}(MarkerSeries));
export { RadialBase };
Type.dep(DependencyProperty, PropertyMetadata, RadialBase, 'raisePropertyChanged', ['AngleAxis:mz:nl', [CategoryAngleAxis.$, null], 'ClipSeriesToBounds:na:nm', [0, false], 'ValueAxis:m1:nn', [NumericRadiusAxis.$, null]]);
/**
 * @hidden
 */
var RadialBaseView = /** @class */ (function (_super) {
    tslib_1.__extends(RadialBaseView, _super);
    function RadialBaseView(a) {
        var _this = _super.call(this, a) || this;
        _this.co = null;
        _this.cn = null;
        _this.cp = null;
        _this.cq = 0;
        _this.cr = null;
        _this.cn = a;
        _this.cp = new Pool$1(Marker.$);
        _this.cf(_this.cp);
        return _this;
    }
    RadialBaseView.prototype.cc = function (a) {
        this.cp.c(a);
    };
    RadialBaseView.$t = markType(RadialBaseView, 'RadialBaseView', MarkerSeriesView.$);
    return RadialBaseView;
}(MarkerSeriesView));
export { RadialBaseView };
//# sourceMappingURL=RadialBucketCalculator_combined.js.map