From dc7f1758924d5f6930d6c119edf3bc08972c0aa0 Mon Sep 17 00:00:00 2001 From: Denis Date: Tue, 30 Aug 2016 15:48:10 -0400 Subject: [PATCH 1/3] Implemented polylabel definition - Definitions are tested @mourner Please review this Typescript definition --- polylabel/polylabel-tests.ts | 10 ++++++++++ polylabel/polylabel.d.ts | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 polylabel/polylabel-tests.ts create mode 100644 polylabel/polylabel.d.ts diff --git a/polylabel/polylabel-tests.ts b/polylabel/polylabel-tests.ts new file mode 100644 index 0000000000..a2c2d38d3e --- /dev/null +++ b/polylabel/polylabel-tests.ts @@ -0,0 +1,10 @@ +/// + +import polylabel from 'polylabel'; + +const polygon = [[[3116,3071],[3118,3068],[3108,3102],[3751,927]]] +let p: number[] +p = polylabel(polygon) +p = polylabel(polygon, 1.0) +p = polylabel(polygon, 1.0, true) +p = polylabel(polygon, 1.0, false) diff --git a/polylabel/polylabel.d.ts b/polylabel/polylabel.d.ts new file mode 100644 index 0000000000..12d257cd7c --- /dev/null +++ b/polylabel/polylabel.d.ts @@ -0,0 +1,33 @@ +// Type definitions for polylabel 1.0.0 +// Project: https://github.com/mapbox/polylabel +// Definitions by: Denis Carriere +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/** + * polylabel + * + * A fast algorithm for finding polygon pole of inaccessibility, the most distant internal point from + * the polygon outline (not to be confused with centroid), implemented as a JavaScript library. + * Useful for optimal placement of a text label on a polygon. + * It's an iterative grid algorithm, inspired by paper by Garcia-Castellanos & Lombardo, 2007. + * Unlike the one in the paper, this algorithm: + * + * - guarantees finding global optimum within the given precision + * - is many times faster (10-40x) + */ +declare module 'polylabel' { + /** + * Polylabel returns the pole of inaccessibility coordinate in [x, y] format. + * + * @name polylabel + * @function + * @param {Array} polygon - Given polygon coordinates in GeoJSON-like format + * @param {number} precision - Precision (1.0 by default) + * @param {boolean} debug - Debugging for Console + * @return {Array} + * @example + * var p = polylabel(polygon, 1.0); + */ + function polylabel (polygon: number[][][], precision?: number, debug?: boolean): number[]; + export default polylabel; +} \ No newline at end of file From b9039b86ab6f5fddf7a739caaeae6039e8acc9e2 Mon Sep 17 00:00:00 2001 From: Denis Date: Tue, 30 Aug 2016 23:01:49 -0400 Subject: [PATCH 2/3] Update polylabel-tests.ts --- polylabel/polylabel-tests.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/polylabel/polylabel-tests.ts b/polylabel/polylabel-tests.ts index a2c2d38d3e..9e23d20d38 100644 --- a/polylabel/polylabel-tests.ts +++ b/polylabel/polylabel-tests.ts @@ -1,6 +1,6 @@ /// - -import polylabel from 'polylabel'; +/// +import polylabel = require('polylabel'); const polygon = [[[3116,3071],[3118,3068],[3108,3102],[3751,927]]] let p: number[] From 880fa13d7e0f8291c6f62c680962f1c064625581 Mon Sep 17 00:00:00 2001 From: Denis Date: Tue, 30 Aug 2016 23:03:50 -0400 Subject: [PATCH 3/3] Update polylabel.d.ts Remove default export. Comment from @RyanCavanaugh --- polylabel/polylabel.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/polylabel/polylabel.d.ts b/polylabel/polylabel.d.ts index 12d257cd7c..21f50d1b41 100644 --- a/polylabel/polylabel.d.ts +++ b/polylabel/polylabel.d.ts @@ -29,5 +29,5 @@ declare module 'polylabel' { * var p = polylabel(polygon, 1.0); */ function polylabel (polygon: number[][][], precision?: number, debug?: boolean): number[]; - export default polylabel; -} \ No newline at end of file + export = polylabel; +}