PNG画像データの透過判別

PNGの画像データにtRNSチャンクがあるかどうか判別するコードです。
tRNSチャンクがあるという事は、透過PNGという事です。
ファイルから読み出しメモリ上にあるデータを探索します。

//void* fileBuffer; メモリに展開された画像データの先頭を示すポインタ
//int dwSize; ファイルサイズ

typedef unsigned char u8;
typedef unsigned int u32;

bool transparency = false;
u8 *dat; = static_cast<u8*>(fileBuffer);
dat += 8;
while( dat < static_cast<u8*>(fileBuffer) + dwSize ){
  u32 chunksize = *reinterpret_cast<u32*>(dat);
  //エンディアン変換 リトルエンディアン環境の場合
  chunksize = 
    (((chunksize      ) & 0xff) << 24) |
    (((chunksize >> 8 ) & 0xff) << 16) |
    (((chunksize >> 16) & 0xff) << 8 ) |
    (((chunksize >> 24) & 0xff)      );

  dat += 4;
  if( dat[0] == 't' &&
    dat[1] == 'R' &&
    dat[2] == 'N' &&
    dat[3] == 'S' ){
      transparency = true;
      break;
  }
  dat += 4;
  dat += chunksize;
  dat += 4;
}