OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [MW_0_8_9PRE7/] [mw/] [src/] [demos/] [nanox/] [nxev.c] - Diff between revs 674 and 1765

Only display areas with differences | Details | Blame | View Log

Rev 674 Rev 1765
/*
/*
 * Copyright (C) 2000 by VTech Informations LTD
 * Copyright (C) 2000 by VTech Informations LTD
 *
 *
 * This program is released under MPL
 * This program is released under MPL
 *
 *
 * Vladimir Cotfas <vladimircotfas@vtech.ca>, Nov 7, 2000
 * Vladimir Cotfas <vladimircotfas@vtech.ca>, Nov 7, 2000
 */
 */
 
 
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#define MWINCLUDECOLORS
#define MWINCLUDECOLORS
#include "nano-X.h"
#include "nano-X.h"
 
 
 
 
static  GR_WINDOW_ID    w1;             /* id for large window */
static  GR_WINDOW_ID    w1;             /* id for large window */
static  GR_WINDOW_ID    w2;             /* id for child window */
static  GR_WINDOW_ID    w2;             /* id for child window */
static  GR_GC_ID        gc1;            /* graphics context for text */
static  GR_GC_ID        gc1;            /* graphics context for text */
 
 
#define ALT_CURSOR
#define ALT_CURSOR
 
 
#define WIDTH   100
#define WIDTH   100
#define HEIGHT  100
#define HEIGHT  100
 
 
#ifdef ALT_CURSOR
#ifdef ALT_CURSOR
/*
/*
 * Definitions to make it easy to define cursors
 * Definitions to make it easy to define cursors
 */
 */
#define _       ((unsigned) 0)          /* off bits */
#define _       ((unsigned) 0)          /* off bits */
#define X       ((unsigned) 1)          /* on bits */
#define X       ((unsigned) 1)          /* on bits */
#define MASK(a,b,c,d,e,f,g) \
#define MASK(a,b,c,d,e,f,g) \
        (((((((((((((a * 2) + b) * 2) + c) * 2) + d) * 2) \
        (((((((((((((a * 2) + b) * 2) + c) * 2) + d) * 2) \
        + e) * 2) + f) * 2) + g) << 9)
        + e) * 2) + f) * 2) + g) << 9)
#endif
#endif
 
 
struct _xlat {
struct _xlat {
        GR_UPDATE_TYPE type;
        GR_UPDATE_TYPE type;
        const char* name;
        const char* name;
};
};
typedef struct _xlat XLAT;
typedef struct _xlat XLAT;
 
 
static XLAT update_types[] = {
static XLAT update_types[] = {
        { 0,                     "none" },
        { 0,                     "none" },
        { GR_UPDATE_MAP,        "GR_UPDATE_MAP" },
        { GR_UPDATE_MAP,        "GR_UPDATE_MAP" },
        { GR_UPDATE_UNMAP,      "GR_UPDATE_UNMAP" },
        { GR_UPDATE_UNMAP,      "GR_UPDATE_UNMAP" },
        { GR_UPDATE_MOVE,       "GR_UPDATE_MOVE" },
        { GR_UPDATE_MOVE,       "GR_UPDATE_MOVE" },
        { GR_UPDATE_SIZE,       "GR_UPDATE_SIZE" },
        { GR_UPDATE_SIZE,       "GR_UPDATE_SIZE" },
        { GR_UPDATE_UNMAPTEMP,  "GR_UPDATE_UNMAPTEMP" },
        { GR_UPDATE_UNMAPTEMP,  "GR_UPDATE_UNMAPTEMP" },
        { GR_UPDATE_ACTIVATE,   "GR_UPDATE_ACTIVATE" },
        { GR_UPDATE_ACTIVATE,   "GR_UPDATE_ACTIVATE" },
        { GR_UPDATE_DESTROY,    "GR_UPDATE_DESTROY" }
        { GR_UPDATE_DESTROY,    "GR_UPDATE_DESTROY" }
};
};
#define NR_UPDATES      7       
#define NR_UPDATES      7       
 
 
struct XLAT {
struct XLAT {
        int event_type;
        int event_type;
        char* event_desc;
        char* event_desc;
};
};
 
 
static struct XLAT table[] = {
static struct XLAT table[] = {
        { GR_EVENT_TYPE_ERROR,          "GR_EVENT_TYPE_ERROR"           },
        { GR_EVENT_TYPE_ERROR,          "GR_EVENT_TYPE_ERROR"           },
        { GR_EVENT_TYPE_NONE,           "GR_EVENT_TYPE_NONE"            },
        { GR_EVENT_TYPE_NONE,           "GR_EVENT_TYPE_NONE"            },
        { GR_EVENT_TYPE_EXPOSURE,       "GR_EVENT_TYPE_EXPOSURE"        },
        { GR_EVENT_TYPE_EXPOSURE,       "GR_EVENT_TYPE_EXPOSURE"        },
        { GR_EVENT_TYPE_BUTTON_DOWN,    "GR_EVENT_TYPE_BUTTON_DOWN"     },
        { GR_EVENT_TYPE_BUTTON_DOWN,    "GR_EVENT_TYPE_BUTTON_DOWN"     },
        { GR_EVENT_TYPE_BUTTON_UP,      "GR_EVENT_TYPE_BUTTON_UP"       },
        { GR_EVENT_TYPE_BUTTON_UP,      "GR_EVENT_TYPE_BUTTON_UP"       },
        { GR_EVENT_TYPE_MOUSE_ENTER,    "GR_EVENT_TYPE_MOUSE_ENTER"     },
        { GR_EVENT_TYPE_MOUSE_ENTER,    "GR_EVENT_TYPE_MOUSE_ENTER"     },
        { GR_EVENT_TYPE_MOUSE_EXIT,     "GR_EVENT_TYPE_MOUSE_EXIT"      },
        { GR_EVENT_TYPE_MOUSE_EXIT,     "GR_EVENT_TYPE_MOUSE_EXIT"      },
        { GR_EVENT_TYPE_MOUSE_MOTION,   "GR_EVENT_TYPE_MOUSE_MOTION"    },
        { GR_EVENT_TYPE_MOUSE_MOTION,   "GR_EVENT_TYPE_MOUSE_MOTION"    },
        { GR_EVENT_TYPE_MOUSE_POSITION, "GR_EVENT_TYPE_MOUSE_POSITION"  },
        { GR_EVENT_TYPE_MOUSE_POSITION, "GR_EVENT_TYPE_MOUSE_POSITION"  },
        { GR_EVENT_TYPE_KEY_DOWN,       "GR_EVENT_TYPE_KEY_DOWN"        },
        { GR_EVENT_TYPE_KEY_DOWN,       "GR_EVENT_TYPE_KEY_DOWN"        },
        { GR_EVENT_TYPE_KEY_UP,         "GR_EVENT_TYPE_KEY_UP"          },
        { GR_EVENT_TYPE_KEY_UP,         "GR_EVENT_TYPE_KEY_UP"          },
        { GR_EVENT_TYPE_FOCUS_IN,       "GR_EVENT_TYPE_FOCUS_IN"        },
        { GR_EVENT_TYPE_FOCUS_IN,       "GR_EVENT_TYPE_FOCUS_IN"        },
        { GR_EVENT_TYPE_FOCUS_OUT,      "GR_EVENT_TYPE_FOCUS_OUT"       },
        { GR_EVENT_TYPE_FOCUS_OUT,      "GR_EVENT_TYPE_FOCUS_OUT"       },
        { GR_EVENT_TYPE_FDINPUT,        "GR_EVENT_TYPE_FDINPUT"         },
        { GR_EVENT_TYPE_FDINPUT,        "GR_EVENT_TYPE_FDINPUT"         },
        { GR_EVENT_TYPE_UPDATE,         "GR_EVENT_TYPE_UPDATE"          },
        { GR_EVENT_TYPE_UPDATE,         "GR_EVENT_TYPE_UPDATE"          },
        { GR_EVENT_TYPE_CHLD_UPDATE,    "GR_EVENT_TYPE_CHLD_UPDATE"     },
        { GR_EVENT_TYPE_CHLD_UPDATE,    "GR_EVENT_TYPE_CHLD_UPDATE"     },
        { GR_EVENT_TYPE_CLOSE_REQ,      "GR_EVENT_TYPE_CLOSE_REQ"       },
        { GR_EVENT_TYPE_CLOSE_REQ,      "GR_EVENT_TYPE_CLOSE_REQ"       },
};
};
 
 
#define table_SZ        (sizeof(table) / sizeof(table[0]))
#define table_SZ        (sizeof(table) / sizeof(table[0]))
 
 
char*
char*
lookupEvent(int type)
lookupEvent(int type)
{
{
        int i;
        int i;
 
 
        for (i = 0; i < table_SZ; i++)
        for (i = 0; i < table_SZ; i++)
                if (table[i].event_type == type)
                if (table[i].event_type == type)
                        return table[i].event_desc;
                        return table[i].event_desc;
 
 
        return NULL;
        return NULL;
}
}
 
 
int
int
main(int argc, char **argv)
main(int argc, char **argv)
{
{
        GR_EVENT        event;          /* current event */
        GR_EVENT        event;          /* current event */
 
 
        if (GrOpen() < 0) {
        if (GrOpen() < 0) {
                fprintf(stderr, "cannot open graphics\n");
                fprintf(stderr, "cannot open graphics\n");
                exit(1);
                exit(1);
        }
        }
 
 
        GrReqShmCmds(65536); /* shared mem is suposed to be faster */
        GrReqShmCmds(65536); /* shared mem is suposed to be faster */
 
 
        w1 = GrNewWindow(GR_ROOT_WINDOW_ID,
        w1 = GrNewWindow(GR_ROOT_WINDOW_ID,
                        0, 0,
                        0, 0,
                        WIDTH, HEIGHT,
                        WIDTH, HEIGHT,
                        4,
                        4,
                        WHITE, BLACK);
                        WHITE, BLACK);
        GrSelectEvents(w1, 0xffffffffl); /* all events :) */
        GrSelectEvents(w1, 0xffffffffl); /* all events :) */
 
 
        w2 = GrNewWindow(w1,
        w2 = GrNewWindow(w1,
                        10, 10,
                        10, 10,
                        WIDTH / 4, HEIGHT / 4,
                        WIDTH / 4, HEIGHT / 4,
                        4,
                        4,
                        WHITE, BLACK);
                        WHITE, BLACK);
        GrSelectEvents(w2, 0xffffffffl); /* all events :) */
        GrSelectEvents(w2, 0xffffffffl); /* all events :) */
 
 
 
 
        {
        {
          GR_WM_PROPERTIES props;
          GR_WM_PROPERTIES props;
 
 
          props.flags = GR_WM_FLAGS_PROPS | GR_WM_FLAGS_TITLE;
          props.flags = GR_WM_FLAGS_PROPS | GR_WM_FLAGS_TITLE;
 
 
          props.props = GR_WM_PROPS_BORDER | GR_WM_PROPS_CAPTION | \
          props.props = GR_WM_PROPS_BORDER | GR_WM_PROPS_CAPTION | \
                        GR_WM_PROPS_CAPTION | GR_WM_PROPS_CLOSEBOX;
                        GR_WM_PROPS_CAPTION | GR_WM_PROPS_CLOSEBOX;
          props.title = "nano-X Events";
          props.title = "nano-X Events";
          GrSetWMProperties(w1, &props);
          GrSetWMProperties(w1, &props);
        }
        }
 
 
        GrMapWindow(w1);
        GrMapWindow(w1);
        GrMapWindow(w2);
        GrMapWindow(w2);
 
 
        gc1 = GrNewGC();
        gc1 = GrNewGC();
 
 
        GrSetGCForeground(gc1, BLACK);
        GrSetGCForeground(gc1, BLACK);
        GrSetGCBackground(gc1, WHITE);
        GrSetGCBackground(gc1, WHITE);
 
 
 
 
#ifdef ALT_CURSOR
#ifdef ALT_CURSOR
        {
        {
                GR_BITMAP       bitmap1fg[7];   /* bitmaps for cursor */
                GR_BITMAP       bitmap1fg[7];   /* bitmaps for cursor */
                GR_BITMAP       bitmap1bg[7];
                GR_BITMAP       bitmap1bg[7];
 
 
                bitmap1bg[0] = MASK(X,X,X,X,X,X,X);
                bitmap1bg[0] = MASK(X,X,X,X,X,X,X);
                bitmap1bg[1] = MASK(_,X,X,X,X,X,_);
                bitmap1bg[1] = MASK(_,X,X,X,X,X,_);
                bitmap1bg[2] = MASK(_,_,X,X,X,_,_);
                bitmap1bg[2] = MASK(_,_,X,X,X,_,_);
                bitmap1bg[3] = MASK(_,_,_,X,_,_,_);
                bitmap1bg[3] = MASK(_,_,_,X,_,_,_);
                bitmap1bg[4] = MASK(_,_,X,X,X,_,_);
                bitmap1bg[4] = MASK(_,_,X,X,X,_,_);
                bitmap1bg[5] = MASK(_,X,X,X,X,X,_);
                bitmap1bg[5] = MASK(_,X,X,X,X,X,_);
                bitmap1bg[6] = MASK(X,X,X,X,X,X,X);
                bitmap1bg[6] = MASK(X,X,X,X,X,X,X);
 
 
                bitmap1fg[0] = MASK(X,X,X,X,X,X,X);
                bitmap1fg[0] = MASK(X,X,X,X,X,X,X);
                bitmap1fg[1] = MASK(_,X,X,X,X,X,_);
                bitmap1fg[1] = MASK(_,X,X,X,X,X,_);
                bitmap1fg[2] = MASK(_,_,X,X,X,_,_);
                bitmap1fg[2] = MASK(_,_,X,X,X,_,_);
                bitmap1fg[3] = MASK(_,_,_,X,_,_,_);
                bitmap1fg[3] = MASK(_,_,_,X,_,_,_);
                bitmap1fg[4] = MASK(_,_,X,X,X,_,_);
                bitmap1fg[4] = MASK(_,_,X,X,X,_,_);
                bitmap1fg[5] = MASK(_,X,X,X,X,X,_);
                bitmap1fg[5] = MASK(_,X,X,X,X,X,_);
                bitmap1fg[6] = MASK(X,X,X,X,X,X,X);
                bitmap1fg[6] = MASK(X,X,X,X,X,X,X);
 
 
                GrSetCursor(w1, 7, 7, 3, 3, WHITE, BLACK, bitmap1fg, bitmap1bg);
                GrSetCursor(w1, 7, 7, 3, 3, WHITE, BLACK, bitmap1fg, bitmap1bg);
        }
        }
#endif
#endif
 
 
 
 
        for (;;) {
        for (;;) {
                GrGetNextEvent(&event);
                GrGetNextEvent(&event);
 
 
                printf("%s (0x%x)\n", \
                printf("%s (0x%x)\n", \
                       lookupEvent(event.type), event.type);
                       lookupEvent(event.type), event.type);
 
 
                switch(event.type) {
                switch(event.type) {
                  case GR_EVENT_TYPE_EXPOSURE:
                  case GR_EVENT_TYPE_EXPOSURE:
                        {
                        {
                          printf("\twid = %d\n", event.exposure.wid);
                          printf("\twid = %d\n", event.exposure.wid);
                          printf("\t(X, Y) = (%d, %d)\n", \
                          printf("\t(X, Y) = (%d, %d)\n", \
                                 event.exposure.x, event.exposure.y);
                                 event.exposure.x, event.exposure.y);
                          printf("\twidth = %d, height = %d\n", \
                          printf("\twidth = %d, height = %d\n", \
                                 event.exposure.width, event.exposure.height);
                                 event.exposure.width, event.exposure.height);
                        }
                        }
                        break;
                        break;
                  case GR_EVENT_TYPE_BUTTON_DOWN:
                  case GR_EVENT_TYPE_BUTTON_DOWN:
                  case GR_EVENT_TYPE_BUTTON_UP:
                  case GR_EVENT_TYPE_BUTTON_UP:
                        {
                        {
                          printf("\twid = %d\n", event.button.wid);
                          printf("\twid = %d\n", event.button.wid);
                          printf("\tsub-window id = %d\n", event.button.subwid);
                          printf("\tsub-window id = %d\n", event.button.subwid);
                          printf("\troot window (X, Y) coordinates = (%d, %d)\n", \
                          printf("\troot window (X, Y) coordinates = (%d, %d)\n", \
                                 event.button.rootx, event.button.rooty);
                                 event.button.rootx, event.button.rooty);
                          printf("\t(X, Y) = (%d, %d)\n", \
                          printf("\t(X, Y) = (%d, %d)\n", \
                                 event.button.x, event.button.y);
                                 event.button.x, event.button.y);
                          printf("\tbuttons: %04X, ", event.button.buttons);
                          printf("\tbuttons: %04X, ", event.button.buttons);
                          printf("changed buttons: %04X\n", event.button.changebuttons);
                          printf("changed buttons: %04X\n", event.button.changebuttons);
                          printf("\tmodifiers: %04X\n", event.button.modifiers);
                          printf("\tmodifiers: %04X\n", event.button.modifiers);
                        }
                        }
                        break;
                        break;
                  case GR_EVENT_TYPE_MOUSE_ENTER:
                  case GR_EVENT_TYPE_MOUSE_ENTER:
                  case GR_EVENT_TYPE_MOUSE_EXIT:
                  case GR_EVENT_TYPE_MOUSE_EXIT:
                  case GR_EVENT_TYPE_MOUSE_MOTION:
                  case GR_EVENT_TYPE_MOUSE_MOTION:
                  case GR_EVENT_TYPE_MOUSE_POSITION:
                  case GR_EVENT_TYPE_MOUSE_POSITION:
                        {
                        {
                          printf("\twid = %d\n", event.mouse.wid);
                          printf("\twid = %d\n", event.mouse.wid);
                          printf("\tsub-window id = %d\n", event.mouse.subwid);
                          printf("\tsub-window id = %d\n", event.mouse.subwid);
                          printf("\troot window (X, Y) coordinates = (%d, %d)\n", \
                          printf("\troot window (X, Y) coordinates = (%d, %d)\n", \
                                 event.mouse.rootx, event.mouse.rooty);
                                 event.mouse.rootx, event.mouse.rooty);
                          printf("\t(X, Y) = (%d, %d)\n", \
                          printf("\t(X, Y) = (%d, %d)\n", \
                                 event.mouse.x, event.mouse.y);
                                 event.mouse.x, event.mouse.y);
                          printf("\tbuttons: %04X\n", event.mouse.buttons);
                          printf("\tbuttons: %04X\n", event.mouse.buttons);
                          printf("\tmodifiers: %04X\n", event.mouse.modifiers);
                          printf("\tmodifiers: %04X\n", event.mouse.modifiers);
                        }
                        }
                        break;
                        break;
                  case GR_EVENT_TYPE_KEY_DOWN:
                  case GR_EVENT_TYPE_KEY_DOWN:
                  case GR_EVENT_TYPE_KEY_UP:
                  case GR_EVENT_TYPE_KEY_UP:
                        {
                        {
                          printf("\twid = %d\n", event.keystroke.wid);
                          printf("\twid = %d\n", event.keystroke.wid);
                          printf("\tsub-window id = %d\n", event.keystroke.subwid);
                          printf("\tsub-window id = %d\n", event.keystroke.subwid);
                          printf("\troot window (X, Y) coordinates = (%d, %d)\n", \
                          printf("\troot window (X, Y) coordinates = (%d, %d)\n", \
                                 event.keystroke.rootx, event.keystroke.rooty);
                                 event.keystroke.rootx, event.keystroke.rooty);
                          printf("\t(X, Y) = (%d, %d)\n", \
                          printf("\t(X, Y) = (%d, %d)\n", \
                                 event.keystroke.x, event.keystroke.y);
                                 event.keystroke.x, event.keystroke.y);
                          printf("\tbuttons: %04X\n", event.keystroke.buttons);
                          printf("\tbuttons: %04X\n", event.keystroke.buttons);
                          printf("\tmodifiers: %04X\n", event.keystroke.modifiers);
                          printf("\tmodifiers: %04X\n", event.keystroke.modifiers);
                          printf("\tUnicode-16 keyvalue: %d, ASCII: %d\n", \
                          printf("\tUnicode-16 keyvalue: %d, ASCII: %d\n", \
                                 (int)event.keystroke.ch, event.keystroke.ch);
                                 (int)event.keystroke.ch, event.keystroke.ch);
                          printf("\tscancode: %02X\n",
                          printf("\tscancode: %02X\n",
                                (int)event.keystroke.scancode);
                                (int)event.keystroke.scancode);
                        }
                        }
                        break;
                        break;
                  case GR_EVENT_TYPE_FOCUS_IN:
                  case GR_EVENT_TYPE_FOCUS_IN:
                        printf("\twid = %d\n", event.general.wid);
                        printf("\twid = %d\n", event.general.wid);
                        printf("\told focus = %d\n", event.general.otherid);
                        printf("\told focus = %d\n", event.general.otherid);
                        break;
                        break;
                  case GR_EVENT_TYPE_FOCUS_OUT:
                  case GR_EVENT_TYPE_FOCUS_OUT:
                        printf("\twid = %d\n", event.general.wid);
                        printf("\twid = %d\n", event.general.wid);
                        printf("\tnew focus = %d\n", event.general.otherid);
                        printf("\tnew focus = %d\n", event.general.otherid);
                        break;
                        break;
                  case GR_EVENT_TYPE_UPDATE:
                  case GR_EVENT_TYPE_UPDATE:
                  case GR_EVENT_TYPE_CHLD_UPDATE:
                  case GR_EVENT_TYPE_CHLD_UPDATE:
                        {
                        {
                          printf("\twid = %d\n", event.update.wid);
                          printf("\twid = %d\n", event.update.wid);
                          printf("\tsub-window id = %d\n", event.update.subwid);
                          printf("\tsub-window id = %d\n", event.update.subwid);
                          printf("\t(X, Y) = (%d, %d)\n", \
                          printf("\t(X, Y) = (%d, %d)\n", \
                                 event.update.x, event.update.y);
                                 event.update.x, event.update.y);
                          printf("\twidth = %d, height = %d\n", \
                          printf("\twidth = %d, height = %d\n", \
                                 event.update.width, event.update.height);
                                 event.update.width, event.update.height);
                          {
                          {
                                  GR_UPDATE_TYPE u = event.update.utype;
                                  GR_UPDATE_TYPE u = event.update.utype;
                                  const char* p;
                                  const char* p;
 
 
                                  p =  (u > NR_UPDATES)? \
                                  p =  (u > NR_UPDATES)? \
                                          "<unknown>": \
                                          "<unknown>": \
                                          update_types[u].name;
                                          update_types[u].name;
 
 
                                  printf("\tupdate_type: %s (%d)\n",
                                  printf("\tupdate_type: %s (%d)\n",
                                          p, u);
                                          p, u);
                          }
                          }
                        }
                        }
                        break;
                        break;
                  case GR_EVENT_TYPE_TIMEOUT:
                  case GR_EVENT_TYPE_TIMEOUT:
                        printf("\ttimeout?\n");
                        printf("\ttimeout?\n");
                        break;
                        break;
                  case GR_EVENT_TYPE_CLOSE_REQ:
                  case GR_EVENT_TYPE_CLOSE_REQ:
                        GrClose();
                        GrClose();
                        exit(0);
                        exit(0);
                        /* no return*/
                        /* no return*/
                }
                }
        }
        }
 
 
        return 0;
        return 0;
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.