'use strict';


var ParserStream = require('../common').ParserStream;
var str2arr      = require('../common').str2arr;
var sliceEq      = require('../common').sliceEq;


var SIG_PNG  = str2arr('\x89PNG\r\n\x1a\n');
var SIG_IHDR = str2arr('IHDR');


module.exports = function () {
  var parser = new ParserStream();

  parser._bytes(24, function (data) {
    parser._skipBytes(Infinity);

    // check PNG signature
    if (!sliceEq(data, 0, SIG_PNG)) {
      parser.push(null);
      return;
    }

    // check that first chunk is IHDR
    if (!sliceEq(data, 12, SIG_IHDR)) {
      parser.push(null);
      return;
    }

    parser.push({
      width:  data.readUInt32BE(16),
      height: data.readUInt32BE(20),
      type: 'png',
      mime: 'image/png',
      wUnits: 'px',
      hUnits: 'px'
    });

    parser.push(null);
  });

  return parser;
};