Add an indirection layer between mtcpnet.c and the rest of PuTTY so that
[u/mdw/putty] / mac / mac.h
CommitLineData
d082ac49 1/*
2 * mac.h -- macintosh-specific declarations
3 */
4
5#ifndef PUTTY_MAC_H
6#define PUTTY_MAC_H
7
8#include <MacTypes.h>
ce283213 9#include <Controls.h>
d082ac49 10#include <Events.h>
11#include <Gestalt.h>
12#include <MacWindows.h>
13#include <Palettes.h>
8768ce31 14#include <UnicodeConverter.h>
d082ac49 15
8ef2b196 16#include "charset.h"
17
d082ac49 18struct mac_gestalts {
56ed4cf7 19 long sysvers;
d082ac49 20 long qdvers;
21 long apprvers;
22 long cntlattr;
23 long windattr;
379836ca 24 long encvvers; /* TEC version (from TECGetInfo()) */
25 long uncvattr; /* Unicode Converter attributes (frem TECGetInfo()) */
deed9e25 26 long mtcpvers;
d082ac49 27};
28
29extern struct mac_gestalts mac_gestalts;
30
be5a49d2 31#if TARGET_RT_MAC_CFM
32/* All systems that can use CFM have Color QuickDraw */
33#define HAVE_COLOR_QD() 1
34#else
d082ac49 35#define HAVE_COLOR_QD() (mac_gestalts.qdvers > gestaltOriginalQD)
be5a49d2 36#endif
d082ac49 37
0c4b7799 38typedef struct Session {
39 struct Session *next;
40 struct Session **prev;
d082ac49 41 /* Config that created this session */
42 Config cfg;
43 /* Terminal emulator internal state */
44 Terminal *term;
45 /* Display state */
46 int font_width, font_height;
d082ac49 47 /* Line discipline */
48 void *ldisc;
49 /* Backend */
50 Backend *back;
51 void *backhandle;
52 char *realhost;
53 /* Logging */
54 void *logctx;
d082ac49 55
56 /* Mac-specific elements */
57 short fontnum;
58 int font_ascent;
59 int font_leading;
60 int font_boldadjust;
61 WindowPtr window;
6cb61a05 62 WindowPtr settings_window;
d082ac49 63 PaletteHandle palette;
64 ControlHandle scrollbar;
65 WCTabHandle wctab;
d082ac49 66 int raw_mouse;
8ef2b196 67 UnicodeToTextInfo uni_to_font; /* Only one of uni_to_font and */
68 charset_t font_charset; /* font_charset is used at a time. */
d082ac49 69} Session;
70
0c4b7799 71extern Session *sesslist;
72
6cb61a05 73/* from macdlg.c */
ce283213 74extern void mac_newsession(void);
6cb61a05 75extern void mac_clickdlg(WindowPtr, EventRecord *);
76extern void mac_activatedlg(WindowPtr, EventRecord *);
77/* from macterm.c */
ce283213 78extern void mac_opensession(void);
79extern void mac_startsession(Session *);
0c4b7799 80extern void mac_pollterm(void);
ce283213 81extern void mac_activateterm(WindowPtr, Boolean);
82extern void mac_adjusttermcursor(WindowPtr, Point, RgnHandle);
83extern void mac_adjusttermmenus(WindowPtr);
84extern void mac_updateterm(WindowPtr);
85extern void mac_clickterm(WindowPtr, EventRecord *);
86extern void mac_growterm(WindowPtr, EventRecord *);
87extern void mac_keyterm(WindowPtr, EventRecord *);
88extern void mac_menuterm(WindowPtr, short, short);
89/* from macstore.c */
0c4b7799 90extern OSErr get_putty_dir(Boolean makeit, short *pVRefNum, long *pDirID);
2f9549c7 91extern OSErr get_session_dir(Boolean makeit, short *pVRefNum, long *pDirID);
ce283213 92extern void *open_settings_r_fsp(FSSpec *);
2f9549c7 93/* from macucs.c */
94extern void init_ucs(void);
151408b1 95/* from mtcpnet.c */
96extern OSErr mactcp_init(void);
97extern void mactcp_shutdown(void);
d25f9823 98extern void mactcp_poll(void);
deed9e25 99extern SockAddr mactcp_namelookup(char *, char **);
100extern SockAddr mactcp_nonamelookup(char *);
101extern void mactcp_getaddr(SockAddr, char *, int);
102extern int mactcp_hostname_is_local(char *);
103extern int mactcp_address_is_local(SockAddr);
104extern int mactcp_addrtype(SockAddr);
105extern void mactcp_addrcopy(SockAddr, char *);
106extern void mactcp_addr_free(SockAddr);
107extern Socket mactcp_register(void *, Plug);
108extern Socket mactcp_new(SockAddr addr, int, int, int, int, Plug);
109extern Socket mactcp_newlistener(char *, int, Plug, int);
110extern char *mactcp_addr_error(SockAddr);
ce283213 111
d082ac49 112#endif
113
114/*
115 * Local Variables:
116 * c-file-style: "simon"
117 * End:
118 */