microSD カードのビットマップ・ファイルのビュアー.画像の最大値 縦:272ピクセル,横:480ピクセル. Bitmap file viewer for microSD card. Maximum size Vertical: 272 pixels, Horizontal: 480.
Dependencies: SDFileSystem_Warning_Fixed F746_GUI
MyFiles/BitmapReader.hpp@1:bb146d5fe9aa, 2018-10-23 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Tue Oct 23 11:51:47 2018 +0000
- Revision:
- 1:bb146d5fe9aa
2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 1:bb146d5fe9aa | 1 | //----------------------------------------------------------- |
MikamiUitOpen | 1:bb146d5fe9aa | 2 | // SD_BitmapReader クラス(ヘッダ) |
MikamiUitOpen | 1:bb146d5fe9aa | 3 | // SD カードの *.bmp ファイルの内容を読み出す |
MikamiUitOpen | 1:bb146d5fe9aa | 4 | // ファイルの画素数:480×272 ピクセル |
MikamiUitOpen | 1:bb146d5fe9aa | 5 | // だだし,ファイル名が日本語のものが除く |
MikamiUitOpen | 1:bb146d5fe9aa | 6 | // |
MikamiUitOpen | 1:bb146d5fe9aa | 7 | // 2018/10/23, Copyright (c) 2018 MIKAMI, Naoki |
MikamiUitOpen | 1:bb146d5fe9aa | 8 | //----------------------------------------------------------- |
MikamiUitOpen | 1:bb146d5fe9aa | 9 | |
MikamiUitOpen | 1:bb146d5fe9aa | 10 | #ifndef SD_BITMAP_READER_HPP |
MikamiUitOpen | 1:bb146d5fe9aa | 11 | #define SD_BITMAP_READER_HPP |
MikamiUitOpen | 1:bb146d5fe9aa | 12 | |
MikamiUitOpen | 1:bb146d5fe9aa | 13 | #include "mbed.h" |
MikamiUitOpen | 1:bb146d5fe9aa | 14 | #include "SDFileSystem.h" |
MikamiUitOpen | 1:bb146d5fe9aa | 15 | #include "BlinkLabel.hpp" |
MikamiUitOpen | 1:bb146d5fe9aa | 16 | #include "Array.hpp" |
MikamiUitOpen | 1:bb146d5fe9aa | 17 | #include <string> |
MikamiUitOpen | 1:bb146d5fe9aa | 18 | |
MikamiUitOpen | 1:bb146d5fe9aa | 19 | namespace Mikami |
MikamiUitOpen | 1:bb146d5fe9aa | 20 | { |
MikamiUitOpen | 1:bb146d5fe9aa | 21 | class SD_BitmapReader |
MikamiUitOpen | 1:bb146d5fe9aa | 22 | { |
MikamiUitOpen | 1:bb146d5fe9aa | 23 | public: |
MikamiUitOpen | 1:bb146d5fe9aa | 24 | SD_BitmapReader(uint16_t maxWidth, uint16_t maxHeight) |
MikamiUitOpen | 1:bb146d5fe9aa | 25 | : STR_("sd"), sd_(new SDFileSystem(STR_.c_str())), |
MikamiUitOpen | 1:bb146d5fe9aa | 26 | maxWidth_(maxWidth), maxHeight_(maxHeight) |
MikamiUitOpen | 1:bb146d5fe9aa | 27 | { sd_->mount(); } |
MikamiUitOpen | 1:bb146d5fe9aa | 28 | |
MikamiUitOpen | 1:bb146d5fe9aa | 29 | virtual ~SD_BitmapReader(); |
MikamiUitOpen | 1:bb146d5fe9aa | 30 | |
MikamiUitOpen | 1:bb146d5fe9aa | 31 | bool Open(const string fileName); |
MikamiUitOpen | 1:bb146d5fe9aa | 32 | |
MikamiUitOpen | 1:bb146d5fe9aa | 33 | void Close() { fclose(fp_); } |
MikamiUitOpen | 1:bb146d5fe9aa | 34 | |
MikamiUitOpen | 1:bb146d5fe9aa | 35 | // 条件に合うビットマップ・ファイルかどうか調べる |
MikamiUitOpen | 1:bb146d5fe9aa | 36 | bool IsAllowed(); |
MikamiUitOpen | 1:bb146d5fe9aa | 37 | |
MikamiUitOpen | 1:bb146d5fe9aa | 38 | // ファイルの読み出し |
MikamiUitOpen | 1:bb146d5fe9aa | 39 | // size 読み出すデータのバイト数 |
MikamiUitOpen | 1:bb146d5fe9aa | 40 | size_t ReadFile(uint8_t data[], size_t size) |
MikamiUitOpen | 1:bb146d5fe9aa | 41 | { return fread(data, 1, size, fp_); } |
MikamiUitOpen | 1:bb146d5fe9aa | 42 | |
MikamiUitOpen | 1:bb146d5fe9aa | 43 | // 画像の高さの取得 |
MikamiUitOpen | 1:bb146d5fe9aa | 44 | uint32_t GetHeight(uint8_t *bmp) |
MikamiUitOpen | 1:bb146d5fe9aa | 45 | { return *(uint32_t *)(bmp+22); } |
MikamiUitOpen | 1:bb146d5fe9aa | 46 | |
MikamiUitOpen | 1:bb146d5fe9aa | 47 | // 画像の幅の取得 |
MikamiUitOpen | 1:bb146d5fe9aa | 48 | uint32_t GetWidth(uint8_t *bmp) |
MikamiUitOpen | 1:bb146d5fe9aa | 49 | { return *(uint32_t *)(bmp+18); } |
MikamiUitOpen | 1:bb146d5fe9aa | 50 | |
MikamiUitOpen | 1:bb146d5fe9aa | 51 | // 画像のサイズの取得 |
MikamiUitOpen | 1:bb146d5fe9aa | 52 | uint32_t GetSize(uint8_t *bmp) |
MikamiUitOpen | 1:bb146d5fe9aa | 53 | { return *(uint32_t *)(bmp+34); } |
MikamiUitOpen | 1:bb146d5fe9aa | 54 | |
MikamiUitOpen | 1:bb146d5fe9aa | 55 | // 画像の高さの設定 |
MikamiUitOpen | 1:bb146d5fe9aa | 56 | void SetHeight(uint8_t *bmp, uint32_t height) |
MikamiUitOpen | 1:bb146d5fe9aa | 57 | { *(uint32_t *)(bmp+22) = height; } |
MikamiUitOpen | 1:bb146d5fe9aa | 58 | |
MikamiUitOpen | 1:bb146d5fe9aa | 59 | // 画像の幅の設定 |
MikamiUitOpen | 1:bb146d5fe9aa | 60 | void SetWidth(uint8_t *bmp, uint32_t width) |
MikamiUitOpen | 1:bb146d5fe9aa | 61 | { *(uint32_t *)(bmp+18) = width; } |
MikamiUitOpen | 1:bb146d5fe9aa | 62 | |
MikamiUitOpen | 1:bb146d5fe9aa | 63 | // 画像のサイズの設定 |
MikamiUitOpen | 1:bb146d5fe9aa | 64 | void SetSize(uint8_t *bmp, uint32_t size) |
MikamiUitOpen | 1:bb146d5fe9aa | 65 | { *(uint32_t *)(bmp+34) = size; } |
MikamiUitOpen | 1:bb146d5fe9aa | 66 | |
MikamiUitOpen | 1:bb146d5fe9aa | 67 | private: |
MikamiUitOpen | 1:bb146d5fe9aa | 68 | const string STR_; |
MikamiUitOpen | 1:bb146d5fe9aa | 69 | |
MikamiUitOpen | 1:bb146d5fe9aa | 70 | SDFileSystem *sd_; |
MikamiUitOpen | 1:bb146d5fe9aa | 71 | FILE *fp_; |
MikamiUitOpen | 1:bb146d5fe9aa | 72 | |
MikamiUitOpen | 1:bb146d5fe9aa | 73 | uint16_t maxWidth_; |
MikamiUitOpen | 1:bb146d5fe9aa | 74 | uint16_t maxHeight_; |
MikamiUitOpen | 1:bb146d5fe9aa | 75 | |
MikamiUitOpen | 1:bb146d5fe9aa | 76 | void ErrorMsg(char msg[]) |
MikamiUitOpen | 1:bb146d5fe9aa | 77 | { BlinkLabel errLabel(240, 100, msg, Label::CENTER); } |
MikamiUitOpen | 1:bb146d5fe9aa | 78 | }; |
MikamiUitOpen | 1:bb146d5fe9aa | 79 | } |
MikamiUitOpen | 1:bb146d5fe9aa | 80 | #endif // SD_BITMAP_READER_HPP |