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
Child:
1:bb146d5fe9aa
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:f62ffd3644bf 1 //-----------------------------------------------------------
MikamiUitOpen 0:f62ffd3644bf 2 // ビットマップ・ファイルのビュアー
MikamiUitOpen 0:f62ffd3644bf 3 // microSD のビットマップ・ファイルを読み込み表示する
MikamiUitOpen 0:f62ffd3644bf 4 // F746_GUI は Rev.32 を使うこと
MikamiUitOpen 0:f62ffd3644bf 5 // BSP_DISCO_F746NG は Rev.5 を使うこと
MikamiUitOpen 0:f62ffd3644bf 6 // Mbed の公式ライブラリ: mbed_src_STM32F7
MikamiUitOpen 0:f62ffd3644bf 7 //
MikamiUitOpen 0:f62ffd3644bf 8 // 扱うビットマップ・ファイルの最大ピクセル数
MikamiUitOpen 0:f62ffd3644bf 9 // 縦: 272 ピクセル,横: 480 ピクセル
MikamiUitOpen 0:f62ffd3644bf 10 // 縦方向のピクセル数の制約:8 の倍数にすること
MikamiUitOpen 0:f62ffd3644bf 11 //
MikamiUitOpen 0:f62ffd3644bf 12 // 2018/10/21, Copyright (c) 2018 MIKAMI, Naoki
MikamiUitOpen 0:f62ffd3644bf 13 //-----------------------------------------------------------
MikamiUitOpen 0:f62ffd3644bf 14
MikamiUitOpen 0:f62ffd3644bf 15 #include "ReadAndDisplay.hpp"
MikamiUitOpen 0:f62ffd3644bf 16 #include "FileSelectorBmp.hpp"
MikamiUitOpen 0:f62ffd3644bf 17 #include "Label.hpp"
MikamiUitOpen 0:f62ffd3644bf 18 #include "Button.hpp"
MikamiUitOpen 0:f62ffd3644bf 19
MikamiUitOpen 0:f62ffd3644bf 20 using namespace Mikami;
MikamiUitOpen 0:f62ffd3644bf 21
MikamiUitOpen 0:f62ffd3644bf 22 int main()
MikamiUitOpen 0:f62ffd3644bf 23 {
MikamiUitOpen 0:f62ffd3644bf 24 const uint32_t WIDTH_MAX = 480; // 横方向のビット数(最大値)
MikamiUitOpen 0:f62ffd3644bf 25 const uint32_t HEIGHT_MAX = 272; // 縦方向のビット数(最大値)
MikamiUitOpen 0:f62ffd3644bf 26 const uint32_t DIV = 8; // 縦方向の分割数
MikamiUitOpen 0:f62ffd3644bf 27 const uint32_t SIZE= 3*WIDTH_MAX*HEIGHT_MAX/DIV;
MikamiUitOpen 0:f62ffd3644bf 28 const uint32_t HEADER_SIZE = 54; // ヘッダのサイズ(固定)
MikamiUitOpen 0:f62ffd3644bf 29
MikamiUitOpen 0:f62ffd3644bf 30 static uint8_t bmp[SIZE+HEADER_SIZE]; // 作業領域(static は必須)
MikamiUitOpen 0:f62ffd3644bf 31
MikamiUitOpen 0:f62ffd3644bf 32 Label label1(240, 20, "Bitmap File Viewer", Label::CENTER, Font24);
MikamiUitOpen 0:f62ffd3644bf 33 Label label2(120, 70, "Maximum Size", Label::LEFT, Font16);
MikamiUitOpen 0:f62ffd3644bf 34 Label label3(150, 94, "Width: 480 pixels", Label::LEFT, Font16);
MikamiUitOpen 0:f62ffd3644bf 35 Label label4(150, 114, "Height: 272 pixels", Label::LEFT, Font16);
MikamiUitOpen 0:f62ffd3644bf 36 Label label5(120, 134, "Height must be multiple of 8.", Label::LEFT, Font16);
MikamiUitOpen 0:f62ffd3644bf 37 Label labelC(470, 260, "(C) MIKAMI, Naoi, 2018", Label::RIGHT, Font12);
MikamiUitOpen 0:f62ffd3644bf 38 Label labelT(120, 160, Label::LEFT, Font16, LCD_COLOR_RED);
MikamiUitOpen 0:f62ffd3644bf 39
MikamiUitOpen 0:f62ffd3644bf 40 Button startButton(200, 200, 80, 40, "START");
MikamiUitOpen 0:f62ffd3644bf 41 while (!startButton.Touched()) {} // ボタンがタップされるまで待つ
MikamiUitOpen 0:f62ffd3644bf 42 wait(0.2);
MikamiUitOpen 0:f62ffd3644bf 43
MikamiUitOpen 0:f62ffd3644bf 44 SD_BitmapReader sdReader(WIDTH_MAX, HEIGHT_MAX);
MikamiUitOpen 0:f62ffd3644bf 45 FileSelector selecter(60, 12, 256, 37, sdReader);
MikamiUitOpen 0:f62ffd3644bf 46
MikamiUitOpen 0:f62ffd3644bf 47 // SD カードにビットマップ・ファイルが存在しない場合は,SD カードを入れ替えてから
MikamiUitOpen 0:f62ffd3644bf 48 // 画面をタップすると最初からやり直す
MikamiUitOpen 0:f62ffd3644bf 49 if (!selecter.CreateTable())
MikamiUitOpen 0:f62ffd3644bf 50 {
MikamiUitOpen 0:f62ffd3644bf 51 labelT.Draw("No bitmap files.");
MikamiUitOpen 0:f62ffd3644bf 52 while (!GuiBase::PanelTouched()) {}
MikamiUitOpen 0:f62ffd3644bf 53 wait(0.2);
MikamiUitOpen 0:f62ffd3644bf 54 NVIC_SystemReset(); // マイコンのリセット
MikamiUitOpen 0:f62ffd3644bf 55 }
MikamiUitOpen 0:f62ffd3644bf 56
MikamiUitOpen 0:f62ffd3644bf 57 while (true)
MikamiUitOpen 0:f62ffd3644bf 58 {
MikamiUitOpen 0:f62ffd3644bf 59 selecter.DisplayFileList(); // ファイルのリストを表示する
MikamiUitOpen 0:f62ffd3644bf 60
MikamiUitOpen 0:f62ffd3644bf 61 string fileName;
MikamiUitOpen 0:f62ffd3644bf 62 while (!selecter.Select(fileName)) {} // ファイルが選択されるまで待つ
MikamiUitOpen 0:f62ffd3644bf 63 GuiBase::GetLcd().Clear(GuiBase::ENUM_BACK); // 画面のクリア
MikamiUitOpen 0:f62ffd3644bf 64
MikamiUitOpen 0:f62ffd3644bf 65 // 選択されたビットマップ・ファイルを読み込み,表示する
MikamiUitOpen 0:f62ffd3644bf 66 ReadAndDraw(fileName, sdReader, bmp, HEADER_SIZE, DIV);
MikamiUitOpen 0:f62ffd3644bf 67 wait(0.5);
MikamiUitOpen 0:f62ffd3644bf 68
MikamiUitOpen 0:f62ffd3644bf 69 // 画面がタップされるまで待つ
MikamiUitOpen 0:f62ffd3644bf 70 while (!GuiBase::PanelTouched()) {}
MikamiUitOpen 0:f62ffd3644bf 71 wait(0.1);
MikamiUitOpen 0:f62ffd3644bf 72 }
MikamiUitOpen 0:f62ffd3644bf 73 }