Re: Re: NodeRect.js

From disqus.com, 2 Months ago, written in JavaScript, viewed 3 times. This paste is a reply to Re: Re: Geom.js from disqus.com - view diff
URL https://pastebin.freepbx.org/view/cdd1f52b Embed
Download Paste or View Raw
  1. // Adapted from https://github.com/DeviantArt/Safeframe/blob/master/src/lib/noderect.js
  2. define('core/ads/NodeRect',[
  3.     'core/ads/safeFrameUtils',
  4. ], function (
  5.     utils
  6. ) {
  7.     'use strict';
  8.  
  9.     class NodeRect {
  10.         constructor() {
  11.             if (arguments.length === 1 && !utils.isNumeric(arguments[0])) {
  12.                 if (Array.isArray(arguments[0]))
  13.                     return this.fromArray(arguments[0]);
  14.                 return this.fromObject(arguments[0]);
  15.             }
  16.             this.fromArray(arguments);
  17.         }
  18.  
  19.         fromArray(arr) {
  20.             this.reset();
  21.             if (arr.length >= 6) { // eslint-disable-line no-magic-numbers
  22.                 this.top = arr[0];
  23.                 this.right = arr[1];
  24.                 this.bottom = arr[2];
  25.                 this.left = arr[3];
  26.                 this.width = arr[4];
  27.                 this.height = arr[5];
  28.             } else if (arr.length >= 4) { // eslint-disable-line no-magic-numbers
  29.                 this.top = arr[0];
  30.                 this.right = arr[1];
  31.                 this.bottom = arr[2];
  32.                 this.left = arr[3];
  33.             } else if (arr.length === 3) { // eslint-disable-line no-magic-numbers
  34.                 this.top = arr[0];
  35.                 this.right = arr[1];
  36.                 this.bottom = arr[2];
  37.                 this.left = 0;
  38.             } else if (arr.length === 2) { // eslint-disable-line no-magic-numbers
  39.                 this.top = arr[0];
  40.                 this.right = arr[1];
  41.                 this.bottom = arr[0];
  42.                 this.left = arr[1];
  43.             } else {
  44.                 this.top = arr[0];
  45.                 this.right = arr[0];
  46.                 this.bottom = arr[0];
  47.                 this.left = arr[0];
  48.             }
  49.             this.update();
  50.         }
  51.  
  52.         fromObject(obj) {
  53.             return this.fromArray([obj.top, obj.right, obj.bottom, obj.left, obj.width, obj.height]);
  54.         }
  55.  
  56.         update() {
  57.             if (!this.width)
  58.                 this.width = this.right - this.left;
  59.  
  60.             if (!this.height)
  61.                 this.height = this.bottom - this.top;
  62.         }
  63.  
  64.         reset(value) {
  65.             value = value || 0;
  66.             this.top = value;
  67.             this.right = value;
  68.             this.bottom = value;
  69.             this.left = value;
  70.             this.width = value;
  71.             this.height = value;
  72.         }
  73.  
  74.         getArea() {
  75.             return (this.right - this.left) * (this.bottom - this.top);
  76.         }
  77.     }
  78.  
  79.     NodeRect.getOverlapRect = (r1, r2) => {
  80.         const left = utils.max([r1.left, r2.left]);
  81.         const right = utils.min([r1.left + r1.width, r2.left + r2.width]);
  82.         const top = utils.max([r1.top, r2.top]);
  83.         const bottom = utils.min([r1.top + r1.height, r2.top + r2.height]);
  84.         if (right >= left && bottom >= top)
  85.             return new NodeRect(top, right, bottom, left, right - left, bottom - top);
  86.         return false;
  87.     };
  88.  
  89.     NodeRect.getOverlapArea = (r1, r2) => {
  90.         const xoverlap = utils.max([0, utils.min([r1.right, r2.right]) - utils.max([r1.left, r2.left])]);
  91.         const yoverlap = utils.max([0, utils.min([r1.bottom, r2.bottom]) - utils.max([r1.top, r2.top])]);
  92.  
  93.         return xoverlap * yoverlap;
  94.     };
  95.  
  96.     return NodeRect;
  97.  
  98. });
  99.  
  100. // https://c.disquscdn.com/next/next-core/core/ads/NodeRect.js

Replies to Re: Re: NodeRect.js rss

Title Name Language When
Re: Re:safeFrameUtils.js disqus.com javascript 2 Months ago.

Reply to "Re: Re: NodeRect.js"

Here you can reply to the paste above