#include "stdafx.h"
#include "../SearchBase.h"
#include "BmpSearch.h"

CBmpSearch::CBmpSearch()
{
	InitHed("BM****\0\0\0\0\x36*\0\0\x28\0\0\0", 18);
}

void CBmpSearch::Mount(CArcFile* pclArc)
{
	SFileInfo infFile;

	// 開始アドレス取得
	infFile.start = pclArc->GetArcPointer();

	// ファイルサイズ取得
	pclArc->Seek(2, FILE_CURRENT);
	pclArc->Read(&infFile.sizeOrg, 4);
	// ファイルサイズが取得できなかった場合に対応
	if (infFile.sizeOrg == 0) {
		// もう1つのファイルサイズを取得
		pclArc->Seek(16, FILE_CURRENT);
		pclArc->Read(&infFile.sizeOrg, 4);
		// それにも書いてなかったらbmpの検索終了(無限ループ回避)
		if (infFile.sizeOrg == 0)
			return;
		// +54(BMPヘッダのサイズ)
		infFile.sizeOrg += 54;
	}
	infFile.sizeCmp = infFile.sizeOrg;

	// 終了アドレス取得
	infFile.end = infFile.start + infFile.sizeOrg;

	// BMPファイルの終端まで進める
	pclArc->Seek(infFile.end, FILE_BEGIN);
	pclArc->GetProg()->UpdatePercent(infFile.sizeOrg);

	pclArc->AddFileInfo(infFile, GetCtFile(), _T(".bmp"));
}