VirtualBox

Changeset 93796 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Feb 16, 2022 4:00:11 PM (3 years ago)
Author:
vboxsync
Message:

DevVGA: Implemented text mode underline.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA.cpp

    r93115 r93796  
    16981698/**
    16991699 * Text mode update
    1700  * Missing:
    1701  * - underline
    17021700 */
    17031701static int vgaR3DrawText(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATER3 pThisCC, bool full_update,
     
    17181716    bool blink_on, chr_blink_flip, cur_blink_flip;
    17191717    bool blink_enabled, blink_do_redraw;
     1718    int uline_pos;
    17201719
    17211720    full_update |= vgaR3UpdatePalette16(pThis, pThisCC);
     
    18371836    }
    18381837    blink_enabled = !!(pThis->ar[0x10] & 0x08); /* Attribute controller blink enable. */
     1838
     1839    /* Underline position */
     1840    uline_pos  = pThis->cr[0x14] & 0x1f;
    18391841
    18401842    for(cy = 0; cy < (height - dscan); cy = cy + (1 << dscan)) {
     
    18831885                        vga_draw_glyph9(d1, linesize, font_ptr, cheight, fgcol, bgcol, dup9);
    18841886                }
     1887
     1888                /* Underline. Typically turned off by setting it past cell height. */
     1889                if (((cattr & 0x03) == 1) && (uline_pos < cheight))
     1890                {
     1891                    int h;
     1892
     1893                    d = d1 + (linesize * uline_pos << dscan);
     1894                    h = 1;
     1895
     1896                    if (cw != 9) {
     1897                        if (pThis->fRenderVRAM)
     1898                            vga_draw_glyph8(d, linesize, cursor_glyph, h, fgcol, bgcol, dscan);
     1899                    } else {
     1900                        if (pThis->fRenderVRAM)
     1901                            vga_draw_glyph9(d, linesize, cursor_glyph, h, fgcol, bgcol, 1);
     1902                    }
     1903                }
     1904
     1905                /* Cursor. */
    18851906                if (src == cursor_ptr &&
    18861907                    !(pThis->cr[0x0a] & 0x20)) {
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette