code: function (id, setAsCurrent, hRatio, vRatio, x, y, usable) {
              var exact = false;
  
              // Make sure all values are numbers
              hRatio = parseFloat(hRatio);
              vRatio = parseFloat(vRatio);
  
              if (typeof x == 'undefined' || typeof y == 'undefined' || x === null || y === null) {
                  x = null;
                  y = null;
              }
              else {
                  x = parseInt(x);
                  y = parseInt(y);
                  exact = true;
              }
  
              usable = (typeof usable === 'undefined') ? true : usable;
  
              // Add uninitialized crop to list of available crops
              this._crops.push({
                  id: id,
                  setAsCurrent: (this._crops.length == 0 || setAsCurrent),
                  hRatio: hRatio,
                  vRatio: vRatio,
                  x: x,
                  y: y,
                  exact: exact,
                  usable: usable ? true : false
              });
  
              if (this._image instanceof IMSoftcrop.Image && this._image.ready) {
                  this.applySoftcrops();
              }
          }
docs: Add soft crop to available soft crops. If x/y is set, the crop will
  be set to the actual dimensions specified by w/h. If no x/y values are
  set the w/h will be treated as ratio dimensions and be scaled.
  
  @param id
  @param hRatio
  @param vRatio
  @param setAsCurrent
  @param x Optional
  @param y Optional
  @parmam usable Optional