microSD カードのビットマップ・ファイルのビュアー.画像の最大値 縦:272ピクセル,横:480ピクセル. Bitmap file viewer for microSD card. Maximum size Vertical: 272 pixels, Horizontal: 480.
Dependencies: SDFileSystem_Warning_Fixed F746_GUI
BitmapReader.cpp@0:f62ffd3644bf, 2018-10-21 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Sun Oct 21 11:29:47 2018 +0000
- Revision:
- 0:f62ffd3644bf
1
Who changed what in which revision?
User | Revision | Line number | New 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 | } |