// pagesA/selectFace/selectFace.js

Page({

  /**
   * 页面的初始数据
   */
  data: {
    cameraStatus:false,
    imgSrc:'',    
    screenW: '',
    width: '',
    height: '',
    distance: '',
    old_width: '',
    old_height: '',
    cut_: '',
    x: 0,
    y: 0,
    crop_pic:''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    const _this = this
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.camera']) {
          _this.setData({
            cameraStatus: true
          })
        } else {
          // 用户还没有授权，向用户发起授权请求
          wx.authorize({
            scope: 'scope.camera',
            success() { // 用户同意授权
              _this.setData({
                cameraStatus: true
              })
            },
            fail() { // 用户不同意授权
              _this.openSetting().then(res => {
                _this.setData({
                  cameraStatus: true
                })
              })
            }
          })
        }
      },
      fail: res => {
        console.log('获取用户授权信息失败')
      }
    })
    wx.getSystemInfo({
        success: res => {
            const screenH = res.screenHeight,
                screenW = res.screenWidth,
                cut_ = screenW - 4;
            let that = this;
            that.setData({
                screenW: screenW,
                cut_: cut_
            })
        },
    })
  },
  // 打开授权设置界面
  openSetting() {
    const _this = this
    let promise = new Promise((resolve, reject) => {
      wx.showModal({
        title: '授权',
        content: '请先授权获取摄像头权限',
        success(res) {
          if (res.confirm) {
            wx.openSetting({
              success(res) {
                if (res.authSetting['scope.camera']) { // 用户打开了授权开关
                  resolve(true)
                } else {
                  // 用户没有打开授权开关， 继续打开设置页面
                  _this.openSetting().then(res => {
                    resolve(true)
                  })
                }
              },
              fail(res) {
                console.log(res)
              }
            })
          } else if (res.cancel) {
            _this.openSetting().then(res => {
              resolve(true)
            })
          }
        }
      })
    })
    return promise;
  },
  // 拍照
  takePhoto() {
    var that=this,
    width = that.data.screenW,
    height = that.data.screenW;
    wx.chooseImage({
      count:1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success:function(res){
        const tempFilePaths = res.tempFilePaths[0];
        wx.getImageInfo({
            src: tempFilePaths,
            success: function(msg) {
                let img_w = msg.width,
                    img_h = msg.height,
                    scale = img_w / img_h
                //横向图片,宽不变
                //横向图片，高变成固定，宽度自适应
                if (scale > 1) {
                    that.setData({
                        width: scale * width,
                        height: height,
                        old_width: scale * width,
                        old_height: height,
                        imgSrc: tempFilePaths
                    })
                } else { //纵向图片，短边是宽，宽变成系统固定，高自适应
                    that.setData({
                        width: width,
                        height: height / scale,
                        old_width: width,
                        old_height: height / scale,
                        imgSrc: tempFilePaths
                    })
                }
            }
        })
      },
      fail:function(error){
        console.error("调用本地相册文件时出错")
        console.warn(error)
      },
      complete:function(back){
        console.log(back)
      }
    })
  },
  
  start: function(res) {
    let that = this;
    if (res.touches.length == 2) {
        let _x = res.touches[1].pageX - res.touches[0].pageX,
            _y = res.touches[1].pageY - res.touches[0].pageY,
            distance = Math.sqrt(Math.pow(_x, 2) + Math.pow(_y, 2));
        that.setData({
            distance: distance
        })
    }
  },
  move: function(res) {
    let that = this;
    console.log(res)
    if (res.touches.length == 2) {
        let _x = res.touches[1].pageX - res.touches[0].pageX,
            _y = res.touches[1].pageY - res.touches[0].pageY,
            old_width = that.data.old_width,
            old_height = that.data.old_height,
            newdistance = Math.sqrt(Math.pow(_x, 2) + Math.pow(_y, 2)),
            width = that.data.width,
            height = that.data.height,
            distance = that.data.distance,
            end_distance = newdistance - distance,
            pic_scale = 1 + end_distance * 0.001;
        that.setData({
            width: width * pic_scale,
            height: height * pic_scale
        })

        let max = width / old_width;
        if (max > 2) {
            that.setData({
                width: old_width * 2,
                height: old_height * 2
            })
        } else if (max < 1) {
            that.setData({
                width: old_width,
                height: old_height
            })
        }
    }
  },
  scroll: function(e) {
    console.log('TOP:' + e.detail.scrollTop + 'Left:' + e.detail.scrollLeft)
    let x = e.detail.scrollLeft,
        y = e.detail.scrollTop,
        that = this;
    that.setData({
        x: x,
        y: y
    })
  },
  crop: function() {
    let that = this,
        img = that.data.imgSrc,
        width = that.data.width,
        height = that.data.height,
        crop = that.data.screenW,
        x = that.data.x,
        y = that.data.y;
    wx.showToast({
        title: 'loading...',
        icon: 'loading',
        duration: 1000
    })
    const canvas = wx.createCanvasContext('canvas');
    canvas.drawImage(img, 0, 0, width, height)
    canvas.draw(setTimeout(() => {
        wx.canvasToTempFilePath({
            x: x,
            y: y,
            width: crop,
            height: crop,
            canvasId: 'canvas',
            success: suc => {
                console.log(suc.tempFilePath)
                that.setData({
                    crop_pic: suc.tempFilePath
                })
            },
            fail: err => {
                console.log('err:' + err)
            }
        }, this)
    }, 1000))
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})