40 lines
903 B
C
40 lines
903 B
C
// THIS IS NOT ARDUINO CODE -- DON'T INCLUDE IN YOUR SKETCH. It's a
|
|
// command-line tool that outputs a gamma correction table to stdout;
|
|
// redirect or copy and paste the results into header file for the
|
|
// RGBmatrixPanel library code.
|
|
// Optional 1 parameter: bit depth (default=4, for 16 output levels).
|
|
|
|
#include <stdio.h>
|
|
#include <math.h>
|
|
|
|
#define GAMMA 2.5
|
|
|
|
int planes = 4;
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
int i, maxval;
|
|
|
|
if(argc > 1) planes = atoi(argv[1]);
|
|
|
|
maxval = (1 << planes) - 1;
|
|
|
|
(void)printf(
|
|
"#ifndef _GAMMA_H_\n"
|
|
"#define _GAMMA_H_\n\n"
|
|
"#include <avr/pgmspace.h>\n\n"
|
|
"static const uint8_t PROGMEM gamma[] = {\n ");
|
|
|
|
for(i=0; i<256; i++) {
|
|
(void)printf("0x%02x",(int)(pow((float)i / 255.0, GAMMA) *
|
|
(float)maxval + 0.5));
|
|
if(i < 255) (void)printf(((i & 7) == 7) ? ",\n " : ",");
|
|
}
|
|
|
|
(void)puts(
|
|
"\n};\n\n"
|
|
"#endif // _GAMMA_H_");
|
|
|
|
return 0;
|
|
}
|