Subversion Repositories HelenOS

Rev

Rev 4338 | Rev 4342 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4338 Rev 4339
Line 183... Line 183...
183
    [8 + COLOR_MAGENTA] = 0xff00ff,
183
    [8 + COLOR_MAGENTA] = 0xff00ff,
184
    [8 + COLOR_YELLOW]  = 0xffff00,
184
    [8 + COLOR_YELLOW]  = 0xffff00,
185
    [8 + COLOR_WHITE]   = 0xffffff,
185
    [8 + COLOR_WHITE]   = 0xffffff,
186
};
186
};
187
 
187
 
-
 
188
static int rgb_from_attr(attr_rgb_t *rgb, const attrs_t *a);
188
static int rgb_from_style(attr_rgb_t *rgb, int style);
189
static int rgb_from_style(attr_rgb_t *rgb, int style);
189
static int rgb_from_idx(attr_rgb_t *rgb, ipcarg_t fg_color,
190
static int rgb_from_idx(attr_rgb_t *rgb, ipcarg_t fg_color,
190
    ipcarg_t bg_color, ipcarg_t flags);
191
    ipcarg_t bg_color, ipcarg_t flags);
191
 
192
 
192
static int fb_set_color(viewport_t *vport, ipcarg_t fg_color,
193
static int fb_set_color(viewport_t *vport, ipcarg_t fg_color,
Line 875... Line 876...
875
        unsigned int row = i / vport->cols;
876
        unsigned int row = i / vport->cols;
876
       
877
       
877
        bbp = &vport->backbuf[BB_POS(vport, col, row)];
878
        bbp = &vport->backbuf[BB_POS(vport, col, row)];
878
        uint8_t glyph = bbp->glyph;
879
        uint8_t glyph = bbp->glyph;
879
 
880
 
880
        if (glyph != data[i].character) {
-
 
881
            bbp->glyph = data[i].character;
-
 
882
            a = &data[i].attrs;
881
        a = &data[i].attrs;
883
 
-
 
884
            switch (a->t) {
-
 
885
            case at_style:
-
 
886
                rgb_from_style(&rgb, a->a.s.style);
882
        rgb_from_attr(&rgb, a);
887
                break;
-
 
888
            case at_idx:
-
 
889
                rgb_from_idx(&rgb, a->a.i.fg_color,
-
 
890
                    a->a.i.bg_color, a->a.i.flags);
-
 
891
                break;
-
 
892
            case at_rgb:
-
 
893
                rgb = a->a.r;
-
 
894
                break;
-
 
895
            }
-
 
896
 
883
 
-
 
884
        bbp->glyph = data[i].character;
897
            bbp->fg_color = rgb.fg_color;
885
        bbp->fg_color = rgb.fg_color;
898
            bbp->bg_color = rgb.bg_color;
886
        bbp->bg_color = rgb.bg_color;
899
 
887
 
900
            draw_vp_glyph(vport, false, col, row);
888
        draw_vp_glyph(vport, false, col, row);
901
        }
-
 
902
    }
889
    }
903
    cursor_show(vport);
890
    cursor_show(vport);
904
}
891
}
905
 
892
 
906
 
893
 
Line 1442... Line 1429...
1442
    rgb->bg_color = color_table[bg_color];
1429
    rgb->bg_color = color_table[bg_color];
1443
 
1430
 
1444
    return EOK;
1431
    return EOK;
1445
}
1432
}
1446
 
1433
 
-
 
1434
static int rgb_from_attr(attr_rgb_t *rgb, const attrs_t *a)
-
 
1435
{
-
 
1436
    int rc;
-
 
1437
 
-
 
1438
    switch (a->t) {
-
 
1439
    case at_style:
-
 
1440
        rc = rgb_from_style(rgb, a->a.s.style);
-
 
1441
        break;
-
 
1442
    case at_idx:
-
 
1443
        rc = rgb_from_idx(rgb, a->a.i.fg_color,
-
 
1444
            a->a.i.bg_color, a->a.i.flags);
-
 
1445
        break;
-
 
1446
    case at_rgb:
-
 
1447
        *rgb = a->a.r;
-
 
1448
        rc = EOK;
-
 
1449
        break;
-
 
1450
    }
-
 
1451
 
-
 
1452
    return rc;
-
 
1453
}
-
 
1454
 
1447
static int fb_set_style(viewport_t *vport, ipcarg_t style)
1455
static int fb_set_style(viewport_t *vport, ipcarg_t style)
1448
{
1456
{
1449
    return rgb_from_style(&vport->attr, (int) style);
1457
    return rgb_from_style(&vport->attr, (int) style);
1450
}
1458
}
1451
 
1459