bit pbm_backgroundbitrow(unsigned const char * const packedBits, unsigned int const cols, unsigned int const offset) { /*---------------------------------------------------------------------------- PBM version of pnm_backgroundxelrow() with additional offset parameter. When offset == 0, produces the same return value as does pnm_backgroundxelrow(promoted_bitrow, cols, ...) -----------------------------------------------------------------------------*/ const unsigned char * const row = &packedBits[offset/8]; unsigned int const rs = offset % 8; unsigned int const last = pbm_packed_bytes(cols + rs) - 1; unsigned int retval; bool const firstbit = (row[0] >> (7-rs)) & 0x01; bool const lastbit = (row[last] >> (7- (cols+rs-1)%8)) & 0x01; if (firstbit == lastbit) retval = firstbit; else { if (bitpop(row, cols, rs) >= cols/2) retval = PBM_BLACK; else retval = PBM_WHITE; } return retval; }
uint8_t matrix_key_count(void) { uint8_t count = 0; for (uint8_t i = 0; i < MATRIX_ROWS; i++) { count += bitpop(matrix[i]); } return count; }
uint8_t matrix_key_count(void) { uint8_t count = 0; for (uint8_t i = 0; i < MATRIX_ROWS; i++) { #if (MATRIX_COLS <= 8) count += bitpop(matrix[i]); #else count += bitpop16(matrix[i]); #endif } return count; }
/** \brief inspect keyboard state * * FIXME: needs doc */ uint8_t has_anymod(void) { return bitpop(real_mods); }