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