Chris Taylor / Mbed 2 deprecated RETRO-CityRally

Dependencies:   mbed

Committer:
taylorza
Date:
Wed Jan 28 03:26:07 2015 +0000
Revision:
0:d85c449aca6d
Working maze scrolling, pre-maze compression

Who changed what in which revision?

UserRevisionLine numberNew contents of line
taylorza 0:d85c449aca6d 1 #include "mbed.h"
taylorza 0:d85c449aca6d 2 #include "Bitmap1bpp.h"
taylorza 0:d85c449aca6d 3
taylorza 0:d85c449aca6d 4 Bitmap1bpp::Bitmap1bpp(uint16_t width, uint16_t height):
taylorza 0:d85c449aca6d 5 _width(width),
taylorza 0:d85c449aca6d 6 _height(height),
taylorza 0:d85c449aca6d 7 _stride((width >> 3) + ((width & 0x07) ? 1 : 0)),
taylorza 0:d85c449aca6d 8 _pBitmapData(new uint8_t[_stride * height])
taylorza 0:d85c449aca6d 9 {
taylorza 0:d85c449aca6d 10
taylorza 0:d85c449aca6d 11 }
taylorza 0:d85c449aca6d 12
taylorza 0:d85c449aca6d 13 Bitmap1bpp::~Bitmap1bpp()
taylorza 0:d85c449aca6d 14 {
taylorza 0:d85c449aca6d 15 if (_pBitmapData != NULL)
taylorza 0:d85c449aca6d 16 {
taylorza 0:d85c449aca6d 17 delete []_pBitmapData;
taylorza 0:d85c449aca6d 18 _pBitmapData = NULL;
taylorza 0:d85c449aca6d 19 }
taylorza 0:d85c449aca6d 20 }
taylorza 0:d85c449aca6d 21
taylorza 0:d85c449aca6d 22 void Bitmap1bpp::clear()
taylorza 0:d85c449aca6d 23 {
taylorza 0:d85c449aca6d 24 memset(_pBitmapData, 0, _stride * _height);
taylorza 0:d85c449aca6d 25 }
taylorza 0:d85c449aca6d 26
taylorza 0:d85c449aca6d 27 void Bitmap1bpp::setPixel(int16_t x, int16_t y, uint16_t color)
taylorza 0:d85c449aca6d 28 {
taylorza 0:d85c449aca6d 29 if (x < 0 || x >= _width || y < 0 || y >= _height) return;
taylorza 0:d85c449aca6d 30
taylorza 0:d85c449aca6d 31 uint8_t mask = 1 << (7 - (x % 8));
taylorza 0:d85c449aca6d 32 uint8_t *p = _pBitmapData + ((y * _stride) + (x / 8));
taylorza 0:d85c449aca6d 33
taylorza 0:d85c449aca6d 34 if (color) *p |= mask; else *p &= ~mask;
taylorza 0:d85c449aca6d 35 }