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:
Tue Oct 23 11:51:47 2018 +0000
Revision:
1:bb146d5fe9aa
2

Who changed what in which revision?

UserRevisionLine numberNew 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