Exemplo n.º 1
0
view *view_create()
{
    view *V;

    if ((V = (view *) calloc(1, sizeof (view))))
        view_home(V);

    return V;
}
Exemplo n.º 2
0
int viewglut_key(viewglut *P, int k, int d)
{
    double s = 5;
    int mine = 1;

    assert(P);

    if (d)
    {
        /* Interpret a key press. */

        switch (tolower(k))
        {
        case 27:
            exit(EXIT_SUCCESS);
            break;

        case  7:
            viewglut_grab();
            break;
        case  6:
            viewglut_fwd(P);
            break;
        case  2:
            viewglut_rev(P);
            break;

        case 16:
            view_prev(P->V);
            break;
        case 14:
            view_next(P->V);
            break;
        case  8:
            view_home(P->V);
            break;
        case 10:
            view_jump(P->V);
            break;

        case 19:
            view_save(P->V, VIEW_DAT);
            break;
        case 12:
            view_load(P->V, VIEW_DAT);
            break;

        case 18:
            view_remove(P->V);
            break;
        case  9:
            view_insert(P->V);
            break;
        case  3:
            view_clear (P->V);
            break;

        case 'd':
        case 'e':
            P->d[0] += s;
            break;
        case 'a':
            P->d[0] -= s;
            break;
        case 'r':
        case 'p':
            P->d[1] += s;
            break;
        case 'f':
        case 'u':
            P->d[1] -= s;
            break;
        case 's':
        case 'o':
            P->d[2] += s;
            break;
        case 'w':
        case ',':
            P->d[2] -= s;
            break;

        default:
            mine = 0; /* Not a viewglut key */
        }
    }
    else
    {
        /* Interpret a key release. */

        switch (tolower(k))
        {
        case 'd':
        case 'e':
            P->d[0] -= s;
            break;
        case 'a':
            P->d[0] += s;
            break;
        case 'r':
        case 'p':
            P->d[1] -= s;
            break;
        case 'f':
        case 'u':
            P->d[1] += s;
            break;
        case 's':
        case 'o':
            P->d[2] -= s;
            break;
        case 'w':
        case ',':
            P->d[2] += s;
            break;

        default:
            mine = 0; /* Not a viewglut key */
        }
    }

    if (mine)
    {
        view_move(P->V, P->d);
        glutPostRedisplay();
    }
    return mine;
}