PixelArray

Dependents:   EITI_Neopixel

Committer:
villemejane
Date:
Mon Dec 13 08:57:01 2021 +0000
Revision:
0:fe962821e6a4
PixelArray;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
villemejane 0:fe962821e6a4 1 #include "PixelArray.h"
villemejane 0:fe962821e6a4 2
villemejane 0:fe962821e6a4 3 PixelArray::PixelArray(int size)
villemejane 0:fe962821e6a4 4 {
villemejane 0:fe962821e6a4 5 pbufsize = size;
villemejane 0:fe962821e6a4 6 pbuf = new int[pbufsize];
villemejane 0:fe962821e6a4 7 SetAll(0x0); // initialise memory to zeros
villemejane 0:fe962821e6a4 8
villemejane 0:fe962821e6a4 9 }
villemejane 0:fe962821e6a4 10
villemejane 0:fe962821e6a4 11 PixelArray::~PixelArray()
villemejane 0:fe962821e6a4 12 {
villemejane 0:fe962821e6a4 13 delete[] pbuf;
villemejane 0:fe962821e6a4 14 }
villemejane 0:fe962821e6a4 15
villemejane 0:fe962821e6a4 16 void PixelArray::SetAll(unsigned int value)
villemejane 0:fe962821e6a4 17 {
villemejane 0:fe962821e6a4 18 // for each pixel
villemejane 0:fe962821e6a4 19 for (int i=0 ; i < pbufsize; i++) {
villemejane 0:fe962821e6a4 20 __set_pixel(i,value);
villemejane 0:fe962821e6a4 21 }
villemejane 0:fe962821e6a4 22 }
villemejane 0:fe962821e6a4 23
villemejane 0:fe962821e6a4 24
villemejane 0:fe962821e6a4 25 void PixelArray::SetAllI(unsigned char value)
villemejane 0:fe962821e6a4 26 {
villemejane 0:fe962821e6a4 27 // for each pixel
villemejane 0:fe962821e6a4 28 for (int i=0 ; i < pbufsize; i++) {
villemejane 0:fe962821e6a4 29 __set_pixel_component(i,3,value);
villemejane 0:fe962821e6a4 30 }
villemejane 0:fe962821e6a4 31 }
villemejane 0:fe962821e6a4 32
villemejane 0:fe962821e6a4 33
villemejane 0:fe962821e6a4 34
villemejane 0:fe962821e6a4 35 void PixelArray::SetAllR(unsigned char value)
villemejane 0:fe962821e6a4 36 {
villemejane 0:fe962821e6a4 37 // for each pixel
villemejane 0:fe962821e6a4 38 for (int i=0 ; i < pbufsize; i++) {
villemejane 0:fe962821e6a4 39 __set_pixel_component(i,2,value);
villemejane 0:fe962821e6a4 40 }
villemejane 0:fe962821e6a4 41 }
villemejane 0:fe962821e6a4 42
villemejane 0:fe962821e6a4 43 void PixelArray::SetAllG(unsigned char value)
villemejane 0:fe962821e6a4 44 {
villemejane 0:fe962821e6a4 45 // for each pixel
villemejane 0:fe962821e6a4 46 for (int i=0 ; i < pbufsize; i++) {
villemejane 0:fe962821e6a4 47 __set_pixel_component(i,1,value);
villemejane 0:fe962821e6a4 48 }
villemejane 0:fe962821e6a4 49 }
villemejane 0:fe962821e6a4 50
villemejane 0:fe962821e6a4 51 void PixelArray::SetAllB(unsigned char value)
villemejane 0:fe962821e6a4 52 {
villemejane 0:fe962821e6a4 53 // for each pixel
villemejane 0:fe962821e6a4 54 for (int i=0 ; i < pbufsize; i++) {
villemejane 0:fe962821e6a4 55 __set_pixel_component(i,0,value);
villemejane 0:fe962821e6a4 56 }
villemejane 0:fe962821e6a4 57 }
villemejane 0:fe962821e6a4 58
villemejane 0:fe962821e6a4 59
villemejane 0:fe962821e6a4 60
villemejane 0:fe962821e6a4 61
villemejane 0:fe962821e6a4 62
villemejane 0:fe962821e6a4 63 void PixelArray::Set(int i, unsigned int value)
villemejane 0:fe962821e6a4 64 {
villemejane 0:fe962821e6a4 65 if ((i >= 0) && (i < pbufsize)) {
villemejane 0:fe962821e6a4 66 __set_pixel(i,value);
villemejane 0:fe962821e6a4 67 }
villemejane 0:fe962821e6a4 68 }
villemejane 0:fe962821e6a4 69
villemejane 0:fe962821e6a4 70
villemejane 0:fe962821e6a4 71
villemejane 0:fe962821e6a4 72 void PixelArray::SetI(int i, unsigned char value)
villemejane 0:fe962821e6a4 73 {
villemejane 0:fe962821e6a4 74 if ((i >= 0) && (i < pbufsize)) {
villemejane 0:fe962821e6a4 75 __set_pixel_component(i,3,value);
villemejane 0:fe962821e6a4 76 }
villemejane 0:fe962821e6a4 77 }
villemejane 0:fe962821e6a4 78
villemejane 0:fe962821e6a4 79
villemejane 0:fe962821e6a4 80 void PixelArray::SetR(int i, unsigned char value)
villemejane 0:fe962821e6a4 81 {
villemejane 0:fe962821e6a4 82 if ((i >= 0) && (i < pbufsize)) {
villemejane 0:fe962821e6a4 83 __set_pixel_component(i,2,value);
villemejane 0:fe962821e6a4 84 }
villemejane 0:fe962821e6a4 85 }
villemejane 0:fe962821e6a4 86
villemejane 0:fe962821e6a4 87 void PixelArray::SetG(int i, unsigned char value)
villemejane 0:fe962821e6a4 88 {
villemejane 0:fe962821e6a4 89 if ((i >= 0) && (i < pbufsize)) {
villemejane 0:fe962821e6a4 90 __set_pixel_component(i,1,value);
villemejane 0:fe962821e6a4 91 }
villemejane 0:fe962821e6a4 92 }
villemejane 0:fe962821e6a4 93
villemejane 0:fe962821e6a4 94 void PixelArray::SetB(int i, unsigned char value)
villemejane 0:fe962821e6a4 95 {
villemejane 0:fe962821e6a4 96 if ((i >= 0) && (i < pbufsize)) {
villemejane 0:fe962821e6a4 97 __set_pixel_component(i,0,value);
villemejane 0:fe962821e6a4 98 }
villemejane 0:fe962821e6a4 99 }
villemejane 0:fe962821e6a4 100
villemejane 0:fe962821e6a4 101
villemejane 0:fe962821e6a4 102 int* PixelArray::getBuf()
villemejane 0:fe962821e6a4 103 {
villemejane 0:fe962821e6a4 104 return (pbuf);
villemejane 0:fe962821e6a4 105 }
villemejane 0:fe962821e6a4 106
villemejane 0:fe962821e6a4 107
villemejane 0:fe962821e6a4 108 // set either the I,R,G,B value of specific pixel channel
villemejane 0:fe962821e6a4 109 void PixelArray::__set_pixel_component(int index, int channel, int value)
villemejane 0:fe962821e6a4 110 {
villemejane 0:fe962821e6a4 111
villemejane 0:fe962821e6a4 112 // AND with 0x00 shifted to the right location to clear the bits
villemejane 0:fe962821e6a4 113 pbuf[index] &= ~(0xFF << (8 * channel));
villemejane 0:fe962821e6a4 114
villemejane 0:fe962821e6a4 115 // Set the bits with an OR
villemejane 0:fe962821e6a4 116 pbuf[index] |= (value << (8 * channel));
villemejane 0:fe962821e6a4 117 }
villemejane 0:fe962821e6a4 118
villemejane 0:fe962821e6a4 119
villemejane 0:fe962821e6a4 120 // set either the I,R,G,B value of specific pixel channel
villemejane 0:fe962821e6a4 121 void PixelArray::__set_pixel(int index, int value)
villemejane 0:fe962821e6a4 122 {
villemejane 0:fe962821e6a4 123 // AND with 0x00 shifted to the right location to clear the bits
villemejane 0:fe962821e6a4 124 pbuf[index] = value;
villemejane 0:fe962821e6a4 125 }
villemejane 0:fe962821e6a4 126
villemejane 0:fe962821e6a4 127