microSD カードのビットマップ・ファイルのビュアー.画像の最大値 縦:272ピクセル,横:480ピクセル. Bitmap file viewer for microSD card. Maximum size Vertical: 272 pixels, Horizontal: 480.

Dependencies:   SDFileSystem_Warning_Fixed F746_GUI

Committer:
MikamiUitOpen
Date:
Sun Oct 21 11:29:47 2018 +0000
Revision:
0:f62ffd3644bf
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:f62ffd3644bf 1 //-----------------------------------------------------------
MikamiUitOpen 0:f62ffd3644bf 2 // SD_BitmapReader クラス(ヘッダ)
MikamiUitOpen 0:f62ffd3644bf 3 // SD カードの *.bmp ファイルの内容を読み出す
MikamiUitOpen 0:f62ffd3644bf 4 // ファイルの画素数の最大値:480×272 ピクセル
MikamiUitOpen 0:f62ffd3644bf 5 //
MikamiUitOpen 0:f62ffd3644bf 6 // 2018/10/20, Copyright (c) 2018 MIKAMI, Naoki
MikamiUitOpen 0:f62ffd3644bf 7 //-----------------------------------------------------------
MikamiUitOpen 0:f62ffd3644bf 8
MikamiUitOpen 0:f62ffd3644bf 9 #include "BitmapReader.hpp"
MikamiUitOpen 0:f62ffd3644bf 10
MikamiUitOpen 0:f62ffd3644bf 11 namespace Mikami
MikamiUitOpen 0:f62ffd3644bf 12 {
MikamiUitOpen 0:f62ffd3644bf 13 SD_BitmapReader::~SD_BitmapReader()
MikamiUitOpen 0:f62ffd3644bf 14 {
MikamiUitOpen 0:f62ffd3644bf 15 sd_->unmount();
MikamiUitOpen 0:f62ffd3644bf 16 delete sd_;
MikamiUitOpen 0:f62ffd3644bf 17 }
MikamiUitOpen 0:f62ffd3644bf 18
MikamiUitOpen 0:f62ffd3644bf 19 void SD_BitmapReader::Open(const string fileName)
MikamiUitOpen 0:f62ffd3644bf 20 {
MikamiUitOpen 0:f62ffd3644bf 21 string name = (string)"/" + STR_ + "/" + fileName;
MikamiUitOpen 0:f62ffd3644bf 22 fp_ = fopen(name.c_str(), "rb");
MikamiUitOpen 0:f62ffd3644bf 23 if (fp_ == NULL) ErrorMsg("open error!!");
MikamiUitOpen 0:f62ffd3644bf 24 }
MikamiUitOpen 0:f62ffd3644bf 25
MikamiUitOpen 0:f62ffd3644bf 26 // 条件に合うビットマップ・ファイルかどうか調べる
MikamiUitOpen 0:f62ffd3644bf 27 // 戻り値:条件に合うビットマップ・ファイルの場合 true
MikamiUitOpen 0:f62ffd3644bf 28 bool SD_BitmapReader::IsAllowed()
MikamiUitOpen 0:f62ffd3644bf 29 {
MikamiUitOpen 0:f62ffd3644bf 30 uint8_t data[54]; // Windows のピットマップ・ファイルのヘッダは 54 ビットに固定
MikamiUitOpen 0:f62ffd3644bf 31 fread(data, 1, 54, fp_); // 54 バイト分を読み込む
MikamiUitOpen 0:f62ffd3644bf 32
MikamiUitOpen 0:f62ffd3644bf 33 // ファイルタイプを調べる
MikamiUitOpen 0:f62ffd3644bf 34 if ((data[0] != 'B') || (data[1] != 'M')) return false;
MikamiUitOpen 0:f62ffd3644bf 35
MikamiUitOpen 0:f62ffd3644bf 36 // 画像の幅が許される最大のピクセル数を超えていないか調べる
MikamiUitOpen 0:f62ffd3644bf 37 if (*(uint32_t *)(data+18) > maxWidth_) return false;
MikamiUitOpen 0:f62ffd3644bf 38
MikamiUitOpen 0:f62ffd3644bf 39 // 画像の高さが許される最大のピクセル数を超えていないか調べる
MikamiUitOpen 0:f62ffd3644bf 40 if (*(uint32_t *)(data+22) > maxHeight_) return false;
MikamiUitOpen 0:f62ffd3644bf 41
MikamiUitOpen 0:f62ffd3644bf 42 return true;
MikamiUitOpen 0:f62ffd3644bf 43 }
MikamiUitOpen 0:f62ffd3644bf 44 }