Subversion Repositories HelenOS

Rev

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

Rev 4326 Rev 4457
Line 49... Line 49...
49
#include <ipc/ipc.h>
49
#include <ipc/ipc.h>
50
#include <ipc/ns.h>
50
#include <ipc/ns.h>
51
#include <ipc/services.h>
51
#include <ipc/services.h>
52
#include <kernel/errno.h>
52
#include <kernel/errno.h>
53
#include <kernel/genarch/fb/visuals.h>
53
#include <kernel/genarch/fb/visuals.h>
54
#include <console/color.h>
54
#include <io/color.h>
55
#include <console/style.h>
55
#include <io/style.h>
56
#include <async.h>
56
#include <async.h>
57
#include <bool.h>
57
#include <bool.h>
58
 
58
 
59
#include "font-8x16.h"
59
#include "font-8x16.h"
60
#include "fb.h"
60
#include "fb.h"
Line 373... Line 373...
373
 * @param vport Viewport to redraw
373
 * @param vport Viewport to redraw
374
 *
374
 *
375
 */
375
 */
376
static void vport_redraw(viewport_t *vport)
376
static void vport_redraw(viewport_t *vport)
377
{
377
{
378
    unsigned int row;
-
 
379
    unsigned int col;
378
    unsigned int col;
-
 
379
    unsigned int row;
380
   
380
   
381
    for (row = 0; row < vport->rows; row++) {
381
    for (row = 0; row < vport->rows; row++) {
382
        for (col = 0; col < vport->cols; col++) {
382
        for (col = 0; col < vport->cols; col++) {
383
            draw_vp_glyph(vport, false, col, row);
383
            draw_vp_glyph(vport, false, col, row);
384
        }
384
        }
Line 429... Line 429...
429
 * @param lines Number of lines to scroll
429
 * @param lines Number of lines to scroll
430
 *
430
 *
431
 */
431
 */
432
static void vport_scroll(viewport_t *vport, int lines)
432
static void vport_scroll(viewport_t *vport, int lines)
433
{
433
{
434
    unsigned int row;
-
 
435
    unsigned int col;
434
    unsigned int col;
-
 
435
    unsigned int row;
436
    unsigned int x;
436
    unsigned int x;
437
    unsigned int y;
437
    unsigned int y;
438
    uint32_t glyph;
438
    uint32_t glyph;
439
    uint32_t fg_color;
439
    uint32_t fg_color;
440
    uint32_t bg_color;
440
    uint32_t bg_color;
Line 1562... Line 1562...
1562
        ipc_call_t call;
1562
        ipc_call_t call;
1563
        int retval;
1563
        int retval;
1564
        unsigned int i;
1564
        unsigned int i;
1565
        int scroll;
1565
        int scroll;
1566
        wchar_t ch;
1566
        wchar_t ch;
1567
        unsigned int row, col;
1567
        unsigned int col, row;
1568
       
1568
       
1569
        if ((vport->cursor_active) || (anims_enabled))
1569
        if ((vport->cursor_active) || (anims_enabled))
1570
            callid = async_get_call_timeout(&call, 250000);
1570
            callid = async_get_call_timeout(&call, 250000);
1571
        else
1571
        else
1572
            callid = async_get_call(&call);
1572
            callid = async_get_call(&call);
Line 1599... Line 1599...
1599
            /* Exit thread */
1599
            /* Exit thread */
1600
            return;
1600
            return;
1601
       
1601
       
1602
        case FB_PUTCHAR:
1602
        case FB_PUTCHAR:
1603
            ch = IPC_GET_ARG1(call);
1603
            ch = IPC_GET_ARG1(call);
1604
            row = IPC_GET_ARG2(call);
1604
            col = IPC_GET_ARG2(call);
1605
            col = IPC_GET_ARG3(call);
1605
            row = IPC_GET_ARG3(call);
1606
           
1606
           
1607
            if ((col >= vport->cols) || (row >= vport->rows)) {
1607
            if ((col >= vport->cols) || (row >= vport->rows)) {
1608
                retval = EINVAL;
1608
                retval = EINVAL;
1609
                break;
1609
                break;
1610
            }
1610
            }
Line 1618... Line 1618...
1618
            vport_clear(vport);
1618
            vport_clear(vport);
1619
            cursor_show(vport);
1619
            cursor_show(vport);
1620
            retval = EOK;
1620
            retval = EOK;
1621
            break;
1621
            break;
1622
        case FB_CURSOR_GOTO:
1622
        case FB_CURSOR_GOTO:
1623
            row = IPC_GET_ARG1(call);
1623
            col = IPC_GET_ARG1(call);
1624
            col = IPC_GET_ARG2(call);
1624
            row = IPC_GET_ARG2(call);
1625
           
1625
           
1626
            if ((col >= vport->cols) || (row >= vport->rows)) {
1626
            if ((col >= vport->cols) || (row >= vport->rows)) {
1627
                retval = EINVAL;
1627
                retval = EINVAL;
1628
                break;
1628
                break;
1629
            }
1629
            }
Line 1639... Line 1639...
1639
            vport->cursor_active = IPC_GET_ARG1(call);
1639
            vport->cursor_active = IPC_GET_ARG1(call);
1640
            cursor_show(vport);
1640
            cursor_show(vport);
1641
            retval = EOK;
1641
            retval = EOK;
1642
            break;
1642
            break;
1643
        case FB_GET_CSIZE:
1643
        case FB_GET_CSIZE:
1644
            ipc_answer_2(callid, EOK, vport->rows, vport->cols);
1644
            ipc_answer_2(callid, EOK, vport->cols, vport->rows);
1645
            continue;
1645
            continue;
1646
        case FB_SCROLL:
1646
        case FB_SCROLL:
1647
            scroll = IPC_GET_ARG1(call);
1647
            scroll = IPC_GET_ARG1(call);
1648
            if ((scroll > (int) vport->rows) || (scroll < (-(int) vport->rows))) {
1648
            if ((scroll > (int) vport->rows) || (scroll < (-(int) vport->rows))) {
1649
                retval = EINVAL;
1649
                retval = EINVAL;