text: import BMP from 'bmp-js';
  import { scan } from '@jimp/utils';
  
  const MIME_TYPE = 'image/bmp';
  const MIME_TYPE_SECOND = 'image/x-ms-bmp';
  
  function toAGBR(image) {
    return scan(image, 0, 0, image.bitmap.width, image.bitmap.height, function(
      x,
      y,
      index
    ) {
      const red = this.bitmap.data[index + 0];
      const green = this.bitmap.data[index + 1];
      const blue = this.bitmap.data[index + 2];
      const alpha = this.bitmap.data[index + 3];
  
      this.bitmap.data[index + 0] = 0xff;
      this.bitmap.data[index + 1] = blue;
      this.bitmap.data[index + 2] = green;
      this.bitmap.data[index + 3] = red;
    }).bitmap;
  }
  
  function fromAGBR(bitmap) {
    return scan({ bitmap }, 0, 0, bitmap.width, bitmap.height, function(
      x,
      y,
      index
    ) {
      const alpha = this.bitmap.data[index + 0];
      const blue = this.bitmap.data[index + 1];
      const green = this.bitmap.data[index + 2];
      const red = this.bitmap.data[index + 3];
  
      this.bitmap.data[index + 0] = red;
      this.bitmap.data[index + 1] = green;
      this.bitmap.data[index + 2] = blue;
      this.bitmap.data[index + 3] = bitmap.is_with_alpha ? alpha : 0xff;
    }).bitmap;
  }
  
  const decode = data => fromAGBR(BMP.decode(data));
  const encode = image => BMP.encode(toAGBR(image)).data;
  
  export default () => ({
    mime: { [MIME_TYPE]: ['bmp'] },
  
    constants: {
      MIME_BMP: MIME_TYPE,
      MIME_X_MS_BMP: MIME_TYPE_SECOND
    },
  
    decoders: {
      [MIME_TYPE]: decode,
      [MIME_TYPE_SECOND]: decode
    },
  
    encoders: {
      [MIME_TYPE]: encode,
      [MIME_TYPE_SECOND]: encode
    }
  });
  