diff options
author | Ole Loots <ole@monochrom.net> | 2013-01-07 20:04:44 +0100 |
---|---|---|
committer | Ole Loots <ole@monochrom.net> | 2013-01-07 20:04:44 +0100 |
commit | 0bbccaa9359b3cedf9f37cd8e322edc90240a7bc (patch) | |
tree | 3161618fdbc1f716d8949c60605a1427f92451a2 /atari/gemtk | |
parent | 5acf36b89ecda31515de975be85197e0a4395db7 (diff) | |
download | netsurf-0bbccaa9359b3cedf9f37cd8e322edc90240a7bc.tar.gz netsurf-0bbccaa9359b3cedf9f37cd8e322edc90240a7bc.tar.bz2 |
Finally it compiles without WinDom - still some things to bring back:
- Serch window
- Pop Menus in the settings dialog
Diffstat (limited to 'atari/gemtk')
-rwxr-xr-x | atari/gemtk/dragdrop.c | 1 | ||||
-rw-r--r-- | atari/gemtk/gemtk.h | 9 | ||||
-rw-r--r-- | atari/gemtk/objc.c | 48 | ||||
-rw-r--r-- | atari/gemtk/utils.c | 86 |
4 files changed, 107 insertions, 37 deletions
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 <string.h> #include <stdio.h> -//#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 <gem.h> #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]; } + |