Library for ELEC2645 Gamepad PCB. University of Leeds Version 2 January 2020

Dependents:   ELEC2645_Ticker_WAV ELEC2645_Project_username ELEC2645_Project_el18vgt ELEC2645_Project_el17oc11 ... more

Committer:
eencae
Date:
Mon Jan 27 12:31:15 2020 +0000
Revision:
21:da0b4e14c867
Updated to Gamepad2 hardware and packaged N5110

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 21:da0b4e14c867 1 #ifndef BITMAP_H
eencae 21:da0b4e14c867 2 #define BITMAP_H
eencae 21:da0b4e14c867 3
eencae 21:da0b4e14c867 4 #include <vector>
eencae 21:da0b4e14c867 5
eencae 21:da0b4e14c867 6 // Forward declarations
eencae 21:da0b4e14c867 7 class N5110;
eencae 21:da0b4e14c867 8
eencae 21:da0b4e14c867 9 /**
eencae 21:da0b4e14c867 10 * @brief A black & white bitmap that can be rendered on an N5110 screen
eencae 21:da0b4e14c867 11 * @author Alex Valavanis <a.valavanis@leeds.ac.uk>
eencae 21:da0b4e14c867 12 *
eencae 21:da0b4e14c867 13 * @code
eencae 21:da0b4e14c867 14 // First declare the pixel map data using '1' for black,
eencae 21:da0b4e14c867 15 // or '0' for white pixels
eencae 21:da0b4e14c867 16 static int sprite_data[] = {
eencae 21:da0b4e14c867 17 0,0,1,0,0,
eencae 21:da0b4e14c867 18 0,1,1,1,0,
eencae 21:da0b4e14c867 19 0,0,1,0,0,
eencae 21:da0b4e14c867 20 0,1,1,1,0,
eencae 21:da0b4e14c867 21 1,1,1,1,1,
eencae 21:da0b4e14c867 22 1,1,1,1,1,
eencae 21:da0b4e14c867 23 1,1,0,1,1,
eencae 21:da0b4e14c867 24 1,1,0,1,1
eencae 21:da0b4e14c867 25 };
eencae 21:da0b4e14c867 26
eencae 21:da0b4e14c867 27 // Instantiate the Bitmap object using the data above
eencae 21:da0b4e14c867 28 Bitmap sprite(sprite_data, 8, 5); // Specify rows and columns in sprite
eencae 21:da0b4e14c867 29
eencae 21:da0b4e14c867 30 // We can render the bitmap wherever we want on the screen
eencae 21:da0b4e14c867 31 sprite.render(lcd, 20, 6); // x and y locations for rendering
eencae 21:da0b4e14c867 32 sprite.render(lcd, 30, 10);
eencae 21:da0b4e14c867 33
eencae 21:da0b4e14c867 34 // We can also print its values to the terminal
eencae 21:da0b4e14c867 35 sprite.print();
eencae 21:da0b4e14c867 36 * @endcode
eencae 21:da0b4e14c867 37 */
eencae 21:da0b4e14c867 38 class Bitmap
eencae 21:da0b4e14c867 39 {
eencae 21:da0b4e14c867 40 private:
eencae 21:da0b4e14c867 41 /**
eencae 21:da0b4e14c867 42 * @brief The contents of the drawing, with pixels stored in row-major order
eencae 21:da0b4e14c867 43 * @details '1' represents a black pixel; '0' represents white
eencae 21:da0b4e14c867 44 */
eencae 21:da0b4e14c867 45 std::vector<int> _contents;
eencae 21:da0b4e14c867 46
eencae 21:da0b4e14c867 47 unsigned int _height; ///< The height of the drawing in pixels
eencae 21:da0b4e14c867 48 unsigned int _width; ///< The width of the drawing in pixels
eencae 21:da0b4e14c867 49
eencae 21:da0b4e14c867 50 public:
eencae 21:da0b4e14c867 51 Bitmap(int const *contents,
eencae 21:da0b4e14c867 52 unsigned int const height,
eencae 21:da0b4e14c867 53 unsigned int const width);
eencae 21:da0b4e14c867 54
eencae 21:da0b4e14c867 55 int get_pixel(unsigned int const row,
eencae 21:da0b4e14c867 56 unsigned int const column) const;
eencae 21:da0b4e14c867 57
eencae 21:da0b4e14c867 58 void print() const;
eencae 21:da0b4e14c867 59
eencae 21:da0b4e14c867 60 void render(N5110 &lcd,
eencae 21:da0b4e14c867 61 unsigned int const x0,
eencae 21:da0b4e14c867 62 unsigned int const y0) const;
eencae 21:da0b4e14c867 63 };
eencae 21:da0b4e14c867 64
eencae 21:da0b4e14c867 65 #endif // BITMAP_H