Steven Rhodes / CNCAirbrush
Committer:
stvnrhodes
Date:
Wed Apr 18 23:59:09 2012 +0000
Revision:
3:328a79795feb
Parent:
2:6d2a681c5cdf
Child:
5:c599a5c5256e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stvnrhodes 2:6d2a681c5cdf 1 #include "Bitmap.h"
stvnrhodes 2:6d2a681c5cdf 2
stvnrhodes 2:6d2a681c5cdf 3 #define OFFSET_LOCATION 0x0a
stvnrhodes 2:6d2a681c5cdf 4 #define WIDTH_LOCATION 0x12
stvnrhodes 2:6d2a681c5cdf 5 #define HEIGHT_LOCATION 0x16
stvnrhodes 2:6d2a681c5cdf 6
stvnrhodes 2:6d2a681c5cdf 7 bool Bitmap::isPixel(int pixel) {
stvnrhodes 2:6d2a681c5cdf 8 if (pixel > width) { return false; }
stvnrhodes 3:328a79795feb 9 if ((row_data[pixel/32]>>(pixel%32)) & 0x01) { return false; }
stvnrhodes 3:328a79795feb 10 else { return true; }
stvnrhodes 2:6d2a681c5cdf 11 }
stvnrhodes 2:6d2a681c5cdf 12
stvnrhodes 2:6d2a681c5cdf 13 Bitmap::Bitmap () {
stvnrhodes 2:6d2a681c5cdf 14 loaded = false;
stvnrhodes 2:6d2a681c5cdf 15 fp = NULL;
stvnrhodes 2:6d2a681c5cdf 16 row_data = NULL;
stvnrhodes 2:6d2a681c5cdf 17 }
stvnrhodes 2:6d2a681c5cdf 18
stvnrhodes 2:6d2a681c5cdf 19 bool Bitmap::openImg(char* filename) {
stvnrhodes 2:6d2a681c5cdf 20 if (fp != NULL) {
stvnrhodes 2:6d2a681c5cdf 21 fclose(fp);
stvnrhodes 2:6d2a681c5cdf 22 free(row_data);
stvnrhodes 2:6d2a681c5cdf 23 }
stvnrhodes 2:6d2a681c5cdf 24 fp = fopen(filename, "rb");
stvnrhodes 2:6d2a681c5cdf 25 loaded = true;
stvnrhodes 2:6d2a681c5cdf 26 fseek(fp, OFFSET_LOCATION, SEEK_SET);
stvnrhodes 2:6d2a681c5cdf 27 fread((char *) &offset, 1, 4, fp);
stvnrhodes 2:6d2a681c5cdf 28 fseek(fp, WIDTH_LOCATION, SEEK_SET);
stvnrhodes 2:6d2a681c5cdf 29 fread((char *) &width, 1, 4, fp);
stvnrhodes 2:6d2a681c5cdf 30 fread(&height, sizeof(long), 1, fp);
stvnrhodes 2:6d2a681c5cdf 31 fseek(fp, HEIGHT_LOCATION, SEEK_SET);
stvnrhodes 2:6d2a681c5cdf 32 row_size = (width % 32) ? (width / 32) + 1 : width / 32;
stvnrhodes 2:6d2a681c5cdf 33 row_data = (long *) malloc(row_size * sizeof(long));
stvnrhodes 2:6d2a681c5cdf 34 return true;
stvnrhodes 2:6d2a681c5cdf 35 }
stvnrhodes 2:6d2a681c5cdf 36
stvnrhodes 2:6d2a681c5cdf 37 bool Bitmap::setRow(int row) {
stvnrhodes 2:6d2a681c5cdf 38 if (loaded) {
stvnrhodes 2:6d2a681c5cdf 39 row_num = row;
stvnrhodes 3:328a79795feb 40 fseek(fp, offset + row * row_size*sizeof(long), SEEK_SET);
stvnrhodes 2:6d2a681c5cdf 41 for (int i = 0; i < row_size; i++) {
stvnrhodes 3:328a79795feb 42 fread(row_data + i, sizeof(long), 1, fp);
stvnrhodes 2:6d2a681c5cdf 43 }
stvnrhodes 2:6d2a681c5cdf 44 return true;
stvnrhodes 2:6d2a681c5cdf 45 } else {
stvnrhodes 2:6d2a681c5cdf 46 return false;
stvnrhodes 2:6d2a681c5cdf 47 }
stvnrhodes 2:6d2a681c5cdf 48 }
stvnrhodes 2:6d2a681c5cdf 49
stvnrhodes 2:6d2a681c5cdf 50 bool Bitmap::closeImg(void) {
stvnrhodes 2:6d2a681c5cdf 51 fclose(fp);
stvnrhodes 2:6d2a681c5cdf 52 free(row_data);
stvnrhodes 2:6d2a681c5cdf 53 return true;
stvnrhodes 2:6d2a681c5cdf 54 }
stvnrhodes 2:6d2a681c5cdf 55
stvnrhodes 2:6d2a681c5cdf 56 int Bitmap::getHeight() {
stvnrhodes 2:6d2a681c5cdf 57 return height;
stvnrhodes 2:6d2a681c5cdf 58 }
stvnrhodes 2:6d2a681c5cdf 59
stvnrhodes 2:6d2a681c5cdf 60 int Bitmap::getWidth() {
stvnrhodes 2:6d2a681c5cdf 61 return width;
stvnrhodes 2:6d2a681c5cdf 62 }
stvnrhodes 2:6d2a681c5cdf 63