示例#1
0
//
// slots
//
void BigCharWidget::onTileIndexUpdated(int tileIndex)
{
    auto state = State::getInstance();

    if (_tileIndex != tileIndex) {
        _tileIndex = tileIndex;
        _charIndex = state->getCharIndexFromTileIndex(_tileIndex);
        update();
    }
}
示例#2
0
void XlinkPreview::tileUpdated(int tileIndex)
{
    if(!isConnected()) return;

    auto state = State::getInstance();

    State::TileProperties properties = state->getTileProperties();

    int charIndex = state->getCharIndexFromTileIndex(tileIndex);
    int numChars = properties.size.width() * properties.size.height();

    if(properties.interleaved == 1) {
        xlink_load(0xb7, 0x00, 0x3000 + charIndex * 8, (uchar*) state->getCharAtIndex(charIndex), numChars*8);
    }
    else {
        for(int sent=0; sent<numChars; sent++) {
            xlink_load(0xb7, 0x00, 0x3000 + charIndex * 8, (uchar*) state->getCharAtIndex(charIndex), 8);
            charIndex += properties.interleaved;
        }
    }
}
示例#3
0
int State::tileGetPen(int tileIndex, const QPoint& position)
{
    Q_ASSERT(tileIndex>=0 && tileIndex<=getTileIndexFromCharIndex(255) && "invalid index value");
    Q_ASSERT(position.x()<State::MAX_TILE_WIDTH*8 && position.y()<State::MAX_TILE_HEIGHT*8 && "Invalid position");

    int x = position.x();
    int y = position.y();
    int bitIndex = (x%8) + (y%8) * 8;
    int charIndex = getCharIndexFromTileIndex(tileIndex)
            + (x/8) * _tileProperties.interleaved
            + (y/8) * _tileProperties.interleaved * _tileProperties.size.width();

    char c = _charset[charIndex*8 + bitIndex/8];
    int b = bitIndex%8;

    int ret = 0;

    // not multicolor: expected result: 0 or 1
    if (!shouldBeDisplayedInMulticolor2(tileIndex))
    {
        uint8_t mask = 1 << (7-b);
        ret = (c & mask) >> (7-b);
    }