From 0bbccaa9359b3cedf9f37cd8e322edc90240a7bc Mon Sep 17 00:00:00 2001 From: Ole Loots Date: Mon, 7 Jan 2013 20:04:44 +0100 Subject: Finally it compiles without WinDom - still some things to bring back: - Serch window - Pop Menus in the settings dialog --- atari/gemtk/dragdrop.c | 1 - atari/gemtk/gemtk.h | 9 +++++- atari/gemtk/objc.c | 48 ++++++++++++++++++++++++++++ atari/gemtk/utils.c | 86 ++++++++++++++++++++++++++++++-------------------- 4 files changed, 107 insertions(+), 37 deletions(-) (limited to 'atari/gemtk') diff --git a/atari/gemtk/dragdrop.c b/atari/gemtk/dragdrop.c index d9fd9c723..e4ae2da4d 100755 --- a/atari/gemtk/dragdrop.c +++ b/atari/gemtk/dragdrop.c @@ -18,7 +18,6 @@ #include #include -//#include "windom.h" #include "gemtk.h" #include "cflib.h" diff --git a/atari/gemtk/gemtk.h b/atari/gemtk/gemtk.h index ee4ebc0c0..01588dc63 100644 --- a/atari/gemtk/gemtk.h +++ b/atari/gemtk/gemtk.h @@ -39,6 +39,12 @@ unsigned short _systype (void); */ bool rc_intersect_ro(GRECT *a, GRECT *b); +/* +* Convert keycode returned by evnt_multi to ascii value +*/ +int keybd2ascii( int keybd, int shift); + + #ifndef POINT_WITHIN # define POINT_WITHIN(_x,_y, r) ((_x >= r.g_x) && (_x <= r.g_x + r.g_w ) \ && (_y >= r.g_y) && (_y <= r.g_y + r.g_h)) @@ -183,8 +189,9 @@ void guiwin_clear(GUIWIN *win); /* -------------------------------------------------------------------------- */ /* AES OBJECT TREE TOOLS */ /* -------------------------------------------------------------------------- */ - +char *get_text(OBJECT * tree, short idx); GRECT * obj_screen_rect(OBJECT * tree, short obj); bool obj_is_inside(OBJECT * tree, short obj, GRECT *area); OBJECT *get_tree(int idx); +void obj_mouse_sprite(OBJECT *tree, int index); #endif // GEMTK_H_INCLUDED diff --git a/atari/gemtk/objc.c b/atari/gemtk/objc.c index 90c4d88ac..3bf8ebbe0 100644 --- a/atari/gemtk/objc.c +++ b/atari/gemtk/objc.c @@ -23,6 +23,31 @@ #include "gemtk.h" +char *get_text(OBJECT * tree, short idx) +{ + static char p[]=""; + USERBLK *user; + char *retval; + + switch (tree[idx].ob_type & 0x00FF) { + case G_BUTTON: + case G_STRING: + case G_TITLE: + return( tree[idx].ob_spec.free_string); + case G_TEXT: + case G_BOXTEXT: + case G_FTEXT: + case G_FBOXTEXT: + return (tree[idx].ob_spec.tedinfo->te_ptext); + case G_ICON: + case G_CICON: + return (tree[idx].ob_spec.iconblk->ib_ptext); + break; + + default: break; + } + return (p); +} OBJECT *get_tree(int idx) { @@ -56,3 +81,26 @@ GRECT * obj_screen_rect(OBJECT * tree, short obj) return(&obj_screen); } + + +void obj_mouse_sprite(OBJECT *tree, int index) +{ + MFORM mform; + int dum; + + if ((tree[index].ob_type & 0xFF) != G_ICON) + return; + + dum = tree[index].ob_spec.iconblk->ib_char; + mform . mf_nplanes = 1; + mform . mf_fg = (dum>>8)&0x0F; + mform . mf_bg = dum>>12; + mform . mf_xhot = 0; /* to prevent the mform to "jump" on the */ + mform . mf_yhot = 0; /* screen (zebulon rules!) */ + + for( dum = 0; dum<16; dum ++) { + mform . mf_mask[dum] = tree[index].ob_spec.iconblk->ib_pmask[dum]; + mform . mf_data[dum] = tree[index].ob_spec.iconblk->ib_pdata[dum]; + } + graf_mouse(USER_DEF, &mform); +} diff --git a/atari/gemtk/utils.c b/atari/gemtk/utils.c index d365aefb5..3fc668a06 100644 --- a/atari/gemtk/utils.c +++ b/atari/gemtk/utils.c @@ -4,47 +4,63 @@ #include #include "gemtk.h" -/* -------------------------------------------------------------------------- */ -/* GEM Utillity functions: */ /* -------------------------------------------------------------------------- */ +/* GEM Utillity functions: */ +/* -------------------------------------------------------------------------- */ + +unsigned short _systype_v; +unsigned short _systype (void) +{ + int32_t * cptr = NULL; + _systype_v = SYS_TOS; -unsigned short _systype_v; -unsigned short _systype (void) -{ - int32_t * cptr = NULL; - _systype_v = SYS_TOS; - - cptr = (int32_t *)Setexc(0x0168, -1L); - if (cptr == NULL ) { - return _systype_v; /* stone old TOS without any cookie support */ - } - while (*cptr) { - if (*cptr == C_MgMc || *cptr == C_MgMx ) { - _systype_v = (_systype_v & ~0xF) | SYS_MAGIC; - } else if (*cptr == C_MiNT ) { - _systype_v = (_systype_v & ~0xF) | SYS_MINT; - } else if (*cptr == C_Gnva /* Gnva */ ) { - _systype_v |= SYS_GENEVA; - } else if (*cptr == C_nAES /* nAES */ ) { - _systype_v |= SYS_NAES; - } - cptr += 2; - } - if (_systype_v & SYS_MINT) { /* check for XaAES */ - short out = 0, u; - if (wind_get (0, (((short)'X') <<8)|'A', &out, &u,&u,&u) && out) { - _systype_v |= SYS_XAAES; - } - } - return _systype_v; + cptr = (int32_t *)Setexc(0x0168, -1L); + if (cptr == NULL ) { + return _systype_v; /* stone old TOS without any cookie support */ + } + while (*cptr) { + if (*cptr == C_MgMc || *cptr == C_MgMx ) { + _systype_v = (_systype_v & ~0xF) | SYS_MAGIC; + } else if (*cptr == C_MiNT ) { + _systype_v = (_systype_v & ~0xF) | SYS_MINT; + } else if (*cptr == C_Gnva /* Gnva */ ) { + _systype_v |= SYS_GENEVA; + } else if (*cptr == C_nAES /* nAES */ ) { + _systype_v |= SYS_NAES; + } + cptr += 2; + } + if (_systype_v & SYS_MINT) { /* check for XaAES */ + short out = 0, u; + if (wind_get (0, (((short)'X') <<8)|'A', &out, &u,&u,&u) && out) { + _systype_v |= SYS_XAAES; + } + } + return _systype_v; } bool rc_intersect_ro(GRECT *a, GRECT *b) { - GRECT r1, r2; + GRECT r1, r2; + + r1 = *a; + r2 = *b; + + return((bool)rc_intersect(&r1, &r2)); +} + - r1 = *a; - r2 = *b; +typedef struct { + char *unshift; + char *shift; + char *capslock; +} MY_KEYTAB; - return((bool)rc_intersect(&r1, &r2)); +int keybd2ascii( int keybd, int shift) +{ + + MY_KEYTAB *key; + key = (MY_KEYTAB *)Keytbl( (char*)-1, (char*)-1, (char*)-1); + return (shift)?key->shift[keybd>>8]:key->unshift[keybd>>8]; } + -- cgit v1.2.3