示例#1
0
	static constexpr inline
	matrix<T,4,4,true,V>
	_make(const _dT& z, const _dT& t)
	noexcept
	{
		return _make(normalized(cross(z, t)), z, t);
	}
示例#2
0
	static constexpr inline
	matrix<T,4,4,true,V>
	_make(const _dT& z)
	noexcept
	{
		return _make(z, _dT::make(z.z(), T(0),-z.x()));
	}
示例#3
0
	static constexpr inline
	matrix<T,4,4,true,V>
	_make(const _dT& y, const _dT& z, const _dT& t)
	noexcept
	{
		return _make(cross(y, z), y, z, t);
	}
示例#4
0
	constexpr inline
	matrix<T,4,4,RM,V> operator()(void) const
	noexcept
	{
		return _make(bool_constant<RM>());
	}
示例#5
0
	constexpr inline
	matrix<T,4,4,false,V> _make(std::false_type) const
	noexcept
	{
		return reorder(_make(std::true_type()));
	}
示例#6
0
	constexpr inline
	matrix<T,4,4,true,V> _make(std::true_type) const
	noexcept
	{
		return _make(normalized(_e-_t));
	}
示例#7
0
	/**
	 *  @glsymbols
	 *  @gldefref{DEPTH_BUFFER_BIT}
	 */
	inline ClrBits DepthBuffer(void)
	{
		return _make(GL_DEPTH_BUFFER_BIT);
	}
示例#8
0
	/**
	 *  @glsymbols
	 *  @gldefref{COLOR_BUFFER_BIT}
	 */
	inline ClrBits ColorBuffer(void)
	{
		return _make(GL_COLOR_BUFFER_BIT);
	}
示例#9
0
	/**
	 *  @glsymbols
	 *  @gldefref{STENCIL_BUFFER_BIT}
	 */
	inline ClrBits StencilBuffer(void)
	{
		return _make(GL_STENCIL_BUFFER_BIT);
	}
uint8_t NeXTMatrix::scan()
{
    //_delay_ms(20);
    
    //next_kbd_set_leds(false, false);
    NEXT_KBD_LED1_OFF;
    
    _is_modified = false;
    
    if (!NEXT_KBD_PWR_READ) {
        _make(NEXT_KBD_PWR_KEYCODE);
        _power_state = 1;
        if (_is_modified)
        {
            dprintf("Power state 1\n");
            
        }
    } else {
        _break(NEXT_KBD_PWR_KEYCODE);
        _power_state = 0;
        if (_is_modified)
        {
            dprintf("Power state 0\n");
            
        }
    }
    
    uint32_t resp = (next_kbd_recv());
    
    if (resp == NEXT_KBD_KMBUS_IDLE)
    {
        return 0;
    }
    
    NEXT_KBD_LED1_ON;
    
    next_kbd_set_leds(
        NEXT_KBD_PRESSED_SHIFT_LEFT(resp) ? true : false, 
        NEXT_KBD_PRESSED_SHIFT_RGHT(resp) ? true : false
    );
    
    dprintf("[ r=%04lX keycode=%02X pressed=%X CTRL=%X SHIFT_LEFT=%X SHIFT_RGHT=%X CMD_LEFT=%X CMD_RGHT=%X ALT_LEFT=%X ALT_RGHT=%X ]\n", \
        resp, \
        NEXT_KBD_KEYCODE(resp), \
        NEXT_KBD_PRESSED_KEYCODE(resp), \
        NEXT_KBD_PRESSED_CONTROL(resp), \
        NEXT_KBD_PRESSED_SHIFT_LEFT(resp), \
        NEXT_KBD_PRESSED_SHIFT_RGHT(resp), \
        NEXT_KBD_PRESSED_CMD_LEFT(resp), \
        NEXT_KBD_PRESSED_CMD_RGHT(resp), \
        NEXT_KBD_PRESSED_ALT_LEFT(resp), \
        NEXT_KBD_PRESSED_ALT_RGHT(resp) \
    );
    
    // Modifier keys don't return keycode; have to check the upper bits    
    NEXT_KBD_MAKE_OR_BREAK(ALT_RGHT,   0x51);
    NEXT_KBD_MAKE_OR_BREAK(ALT_LEFT,   0x52);
    NEXT_KBD_MAKE_OR_BREAK(CMD_RGHT,   0x53);
    NEXT_KBD_MAKE_OR_BREAK(CMD_LEFT,   0x54);
    NEXT_KBD_MAKE_OR_BREAK(SHIFT_RGHT, 0x55);
    NEXT_KBD_MAKE_OR_BREAK(SHIFT_LEFT, 0x56);
    NEXT_KBD_MAKE_OR_BREAK(CONTROL,    0x57);
    NEXT_KBD_MAKE_OR_BREAK(KEYCODE,    NEXT_KBD_KEYCODE(resp));
    
    return 1;
}