Macros rule everything around me

This commit is contained in:
XANTRONIX Development 2016-05-17 17:01:57 -05:00
parent 04ad40d69a
commit 0699bba50d
3 changed files with 15 additions and 9 deletions

View file

@ -5,6 +5,10 @@
#include <cammy/tile.h>
#define CAMMY_IMAGE_Y_COEFFICIENT_R 0.2126
#define CAMMY_IMAGE_Y_COEFFICIENT_G 0.7152
#define CAMMY_IMAGE_Y_COEFFICIENT_B 0.0722
void cammy_image_dither(uint8_t *dest,
uint8_t *src,
size_t width,

View file

@ -7,6 +7,12 @@
#define CAMMY_TILE_WIDTH 8
#define CAMMY_TILE_HEIGHT 8
#define CAMMY_TILE_INDEX(x, y, stride) \
(((y >> 3) * (stride >> 3)) + (x >> 3))
#define CAMMY_TILE_INDEXED(tiles, x, y, stride) \
(&tiles[CAMMY_TILE_INDEX(x, y, stride)])
#pragma pack(1)
#pragma pack(push)

View file

@ -70,9 +70,9 @@ static uint32_t bayer_matrix[256] = {
};
static uint8_t rgb_to_grayscale(uint8_t r, uint8_t g, uint8_t b) {
return (uint8_t)((0.2126 * (float)r)
+ (0.7152 * (float)g)
+ (0.0722 * (float)b));
return (uint8_t)((CAMMY_IMAGE_Y_COEFFICIENT_R * (float)r)
+ (CAMMY_IMAGE_Y_COEFFICIENT_G * (float)g)
+ (CAMMY_IMAGE_Y_COEFFICIENT_B * (float)b));
}
static uint8_t rgb_to_tile_2bpp(uint8_t r, uint8_t g, uint8_t b, size_t x, size_t y) {
@ -89,9 +89,7 @@ static inline uint8_t tile_read(cammy_tile *tiles,
size_t x,
size_t y,
int stride) {
size_t index = ((y >> 3) * (stride >> 3)) + (x >> 3);
cammy_tile *tile = &tiles[index];
cammy_tile *tile = CAMMY_TILE_INDEXED(tiles, x, y, stride);
int tile_x = x & 7,
tile_y = y & 7;
@ -107,9 +105,7 @@ static inline void tile_write(cammy_tile *tiles,
size_t y,
int stride,
uint8_t value) {
size_t index = ((y >> 3) * (stride >> 3)) + (x >> 3);
cammy_tile *tile = &tiles[index];
cammy_tile *tile = CAMMY_TILE_INDEXED(tiles, x, y, stride);
int tile_x = x & 7,
tile_y = y & 7;