Skip to content
Snippets Groups Projects
Select Git revision
  • e80d65501ddf649c1c01d98444e374cf2abc12a1
  • master default
  • neil
  • hpgl
  • sw-shawn-liu
  • ppa
  • fran
  • trotec-port
  • fs-hotfix
  • jake
  • ml-mods
  • fabmo-app
12 results

mods.js

Blame
  • mods.js 61.09 KiB
    //
    // mods.js
    //
    // Neil Gershenfeld
    // (c) Massachusetts Institute of Technology 2018
    //
    // This work may be reproduced, modified, distributed, performed, and
    // displayed for any purpose, but must acknowledge the mods
    // project. Copyright is retained and must be preserved. The work is
    // provided as is; no warranty is provided, and users accept all
    // liability.
    //
    // closure
    //
    (function(){
    //
    // globals
    //
    var mods = {}
    mods.ui = {source:null,
       progname:'',
       padding:7,
       bezier:100,
       canvas:250,
       rows:5,
       cols:20,
       link:'rgb(0,0,128)',
       link_highlight:'rgb(255,0,0)',
       header:50,
       mousedown:false
       }
    mods.globals = {}
    mods.mod = {}
    document.body.id = 'body'
    //
    // UI
    //
    document.body.style.overflow = "hidden"
    function mods_transform() {
       var transform = document.body.style.transform
       var index = transform.indexOf('scale')
          var left = transform.indexOf('(',index)
          var right = transform.indexOf(')',index)
          var s = parseFloat(transform.slice(left+1,right))
       var index = transform.indexOf('translate')
          var left = transform.indexOf('(',index)
          var right = transform.indexOf('px',left)
          var tx = parseFloat(transform.slice(left+1,right))
          var left = transform.indexOf(',',right)
          var right = transform.indexOf('px',left)
          var ty = parseFloat(transform.slice(left+1,right))
       var origin = document.body.style.transformOrigin
          var pxx = origin.indexOf('px')
          var ox = parseFloat(origin.slice(0,pxx))
          var pxy = origin.indexOf('px',pxx+2)
          var oy = parseFloat(origin.slice(pxx+2,pxy))
       return({s:s,tx:tx,ty:ty,ox:ox,oy:oy})
       }
    document.body.style.transform = 'scale(1) translate(0px,0px)'
    document.body.style.transformOrigin = '0px 0px'
    //
    // scroll wheel
    //
    /*
    (xw+tx-ox)*s+ox = xs
    xw = ox-tx+(xs-ox)/s
    (xw+tx0-ox0)*s+ox0  = (xw+tx1-ox1)*s+ox1
    (tx0-ox0)*s+ox0  = (tx1-ox1)*s+ox1
    tx0+(ox1-ox0)+(ox0-ox1)/s  = tx1
    tx0+(ox1-ox0)*(1-1/s)  = tx1