Exemplo n.º 1
0
void
vbedrawcharbg(unsigned char c, int x, int y, gfxpix32 fg, gfxpix32 bg)
{
    long     cy;
    long     incr = vbescreen.w * (vbescreen.nbpp >> 3);
    uint8_t *glyph = (uint8_t *)vgafontbuf + ((int)c << 3);
    uint8_t *ptr = vbepixadr(x, y);
    uint8_t  mask;
    

    for (cy = 0 ; cy < VGAGLYPHH >> 1 ; cy++) {
        mask = *glyph;
        gfxsetrgb888((mask & 0x80) ? fg : bg, ptr);
        gfxsetrgb888((mask & 0x40) ? fg : bg, ptr + 3);
        gfxsetrgb888((mask & 0x20) ? fg : bg, ptr + 6);
        gfxsetrgb888((mask & 0x10) ? fg : bg, ptr + 9);
        gfxsetrgb888((mask & 0x08) ? fg : bg, ptr + 12);
        gfxsetrgb888((mask & 0x04) ? fg : bg, ptr + 15);
        gfxsetrgb888((mask & 0x02) ? fg : bg, ptr + 18);
        gfxsetrgb888((mask & 0x01) ? fg : bg, ptr + 21);
        glyph++;
        ptr += incr;
    }

    return;
}
Exemplo n.º 2
0
void
vbeclrscr(gfxpix32 pix)
{
    uint8_t *ptr = vbepixadr(0, 0);
    long     incr = vbescreen.pixsize;
    long     n = vbescreen.w * vbescreen.h;
    long     nbpp = vbescreen.nbpp;
    long     lim;

    if (nbpp == 24) {
        while (n) {
            lim = min(n, 4);
            switch (lim) {
                case 4:
                    vbeputpix(pix, &ptr[3 * incr]);
                case 3:
                    vbeputpix(pix, &ptr[2 * incr]);
                case 2:
                    vbeputpix(pix, &ptr[incr]);
                case 1:
                    vbeputpix(pix, ptr);
                    
                    break;
            }
            n -= lim;
            ptr += lim * incr;
        }
    }

    return;
}
Exemplo n.º 3
0
void
vbeputpix(argb32_t pix, int x, int y)
{
    uint8_t *ptr = vbepixadr(x, y);

    gfxsetrgb888(pix, ptr);

    return;
}
Exemplo n.º 4
0
void
vbedrawchar(unsigned char c, int x, int y, argb32_t fg, argb32_t bg)
{
    long      cy;
    long      incr = vbescreen.w * (vbescreen.nbpp >> 3);
//    uint8_t *glyph = (uint8_t *)vgafontbuf + ((int)c * vgafonth);
    uint16_t *glyph = (uint16_t *)vgafontbuf + (int)c * vgafonth;
    uint8_t  *ptr = vbepixadr(x, y);
    uint16_t  mask;
    

    for (cy = 0 ; cy < vgafonth ; cy++) {
        mask = *glyph;
#if 0
        if (mask & 0x80) {
            gfxsetrgb888(fg, ptr);
        }
#endif
        if (mask & 0x40) {
            gfxsetrgb888(fg, ptr + 3);
        }
        if (mask & 0x20) {
            gfxsetrgb888(fg, ptr + 6);
        }
        if (mask & 0x10) {
            gfxsetrgb888(fg, ptr + 9);
        }
        if (mask & 0x08) {
            gfxsetrgb888(fg, ptr + 12);
        }
        if (mask & 0x04) {
            gfxsetrgb888(fg, ptr + 15);
        }
        if (mask & 0x02) {
            gfxsetrgb888(fg, ptr + 18);
        }
        if (mask & 0x01) {
            gfxsetrgb888(fg, ptr + 21);
        }
        glyph++;
        ptr += incr;
    }

    return;
}
Exemplo n.º 5
0
void
vbedrawchar(unsigned char c, int x, int y, gfxpix32 fg)
{
    long      lim = vbefonth;
    long      cy;
    long      incr = vbescreen.w * (vbescreen.nbpp >> 3);
//    uint8_t *glyph = (uint8_t *)vgafontbuf + ((int)c * vbefonth);
    uint16_t *glyph = (uint16_t *)vgafontbuf + (int)c * vbefonth;
    uint8_t  *ptr = vbepixadr(x, y);
    uint16_t  mask;
    
    for (cy = 0 ; cy < lim ; cy++) {
        mask = *glyph;
#if 0
        if (mask & 0x80) {
            gfxsetrgb888(fg, ptr);
        }
#endif
        if (mask & 0x40) {
            gfxsetrgb888(fg, ptr);
        }
        if (mask & 0x20) {
            gfxsetrgb888(fg, &ptr[3]);
        }
        if (mask & 0x10) {
            gfxsetrgb888(fg, &ptr[6]);
        }
        if (mask & 0x08) {
            gfxsetrgb888(fg, &ptr[9]);
        }
        if (mask & 0x04) {
            gfxsetrgb888(fg, &ptr[12]);
        }
        if (mask & 0x02) {
            gfxsetrgb888(fg, &ptr[15]);
        }
        if (mask & 0x01) {
            gfxsetrgb888(fg, &ptr[18]);
        }
        glyph++;
        ptr += incr;
    }

    return;
}
Exemplo n.º 6
0
void
vbedrawcharbg(unsigned char c, int x, int y, gfxpix32 fg, gfxpix32 bg)
{
    long      lim = vbefonth;
    long      cy;
    long      incr = vbescreen.w * (vbescreen.nbpp >> 3);
    uint16_t *glyph = (uint16_t *)vgafontbuf + (int)c * vbefonth;
    uint8_t  *ptr = vbepixadr(x, y);
    uint32_t  val;
    uint32_t  mask;
    gfxpix32  pix;

    if (!bg) {
        for (cy = 0 ; cy < lim ; cy++) {
            val = *glyph;
            pix = fg;
            mask = -(val & 0x40);
            pix &= mask;
            gfxsetrgb888(pix, ptr);
            pix = fg;
            mask = -(val & 0x20);
            pix &= mask;
            gfxsetrgb888(pix, &ptr[3]);
            pix = fg;
            mask = -(val & 0x10);
            pix &= mask;
            gfxsetrgb888(pix, &ptr[6]);
            pix = fg;
            mask = -(val & 0x08);
            pix &= mask;
            gfxsetrgb888(pix, &ptr[9]);
            pix = fg;
            mask = -(val & 0x04);
            pix &= mask;
            gfxsetrgb888(pix, &ptr[12]);
            pix = fg;
            mask = -(val & 0x02);
            pix &= mask;
            gfxsetrgb888(pix, &ptr[15]);
            pix = fg;
            mask = -(val & 0x01);
            pix &= mask;
            gfxsetrgb888(pix, &ptr[18]);
            ptr += incr;
            glyph++;
        }
    } else {
        for (cy = 0 ; cy < lim ; cy++) {
            mask = *glyph;
            if (mask & 0x40) {
                gfxsetrgb888(fg, ptr);
            } else {
                gfxsetrgb888(bg, ptr);
            }
            if (mask & 0x20) {
                gfxsetrgb888(fg, &ptr[3]);
            } else {
                gfxsetrgb888(bg, &ptr[3]);
            }
            if (mask & 0x10) {
                gfxsetrgb888(fg, &ptr[6]);
            } else {
                gfxsetrgb888(bg, &ptr[6]);
            }
            if (mask & 0x08) {
                gfxsetrgb888(fg, &ptr[9]);
            } else {
                gfxsetrgb888(bg, &ptr[9]);
            }
            if (mask & 0x04) {
                gfxsetrgb888(fg, &ptr[12]);
            } else {
                gfxsetrgb888(bg, &ptr[12]);
            }
            if (mask & 0x02) {
                gfxsetrgb888(fg, &ptr[15]);
            } else {
                gfxsetrgb888(bg, &ptr[15]);
            }
            if (mask & 0x01) {
                gfxsetrgb888(fg, &ptr[18]);
            } else {
                gfxsetrgb888(bg, &ptr[18]);
            }
            ptr += incr;
            glyph++;
        }
    }
        
    return;
}