#ifndef PICOLED_H #define PICOLED_H #include namespace picoled { class pixel { public: pixel() : pixel(false) {} pixel(bool on) : on(on) {} bool is_on() const { return on; } void invert() { on = !on; } private: bool on; }; class oled { public: oled(size_t width, size_t height); virtual ~oled(); oled(const oled&) = delete; oled(oled&&) = delete; oled& operator=(const oled&) = delete; oled& operator=(oled&&) = delete; pixel& operator()(int x, int y); const pixel& operator()(int x, int y) const; void clear(); size_t get_width() const { return width; } size_t get_height() const { return height; } virtual void update() const = 0; protected: size_t width; size_t height; private: pixel* pixels; }; } #endif//PICOLED_H