Skip to content
Snippets Groups Projects
Select Git revision
  • cfc2fee04b01605bc5512d42e9d7407bb7ba5094
  • master default protected
2 results

hw1.html

Blame
  • readpng.js 2.08 KiB
    /*
    
    hunk template
    
    */
    
    // these are ES6 modules
    import {
      Hunkify,
      Input,
      Output,
      State
    } from '../hunks.js'
    
    function ReadPNG() {
      // this fn attaches handles to our function-object,
      Hunkify(this)
    
      let imageOutput = new Output('rgba', 'image', this)
      let buttonOutput = new Output('string', 'button', this)
      this.outputs.push(imageOutput, buttonOutput)
    
      let xSize = new State('number', 'xSize', 400)
      let ySize = new State('number', 'ySize', 400)
      this.states.push(xSize, ySize)
    
      // State items also have change handlers,
      xSize.onChange = (value) => {
        // at this point, something external (probably a human)
        // has requested that we change this state variable,
        // we can reject that, by doing nothing here, or we can
        stateItem.set(value)
      }
    
      // hunks can choose to- or not- have init code.
      // at init, the module has been loaded and state variables have been
      // recalled from any program save - so this is a good point
      // to check any of those, and setup accordingly ...
      // as is tradition,
      this.dom = {}
    
      let button
    
      this.init = () => {
          // manager calls this once
          // it is loaded and state is updated (from program)
          console.log('HELLO Read PNG')
          this.dom = document.createElement('div')
          // 
      }
    
      this.onload = () => {
        let contact = $('<div>').addClass('btn').append('! read png !').get(0)
        $(this.dom).append(contact)
        contact.addEventListener('click', (evt) => {
            buttonOutput.put('anything')
        })
      }
    
      // to divide time between hunks, each has a loop function
      // this is the hunks' runtime: a manager calls this once-per-round
      // here is where we check inputs, put to outputs, do work, etc
      this.loop = () => {
        // typically we check inputs and outputs first,
        // making sure we are clear to run,
        /*
        if (inA.io() && !outB.io()) {
          // an input is occupied, and the exit path is empty
          let output = internalFunc(this.inputs.a.get())
          // put 'er there
          outB.put(output)
        }
        */
      }
    }
    
    // the hunk is also an ES6 module, this is how we export those:
    export default ReadPNG