summaryrefslogtreecommitdiff
path: root/amiga/os3support.h
diff options
context:
space:
mode:
Diffstat (limited to 'amiga/os3support.h')
-rw-r--r--amiga/os3support.h120
1 files changed, 114 insertions, 6 deletions
diff --git a/amiga/os3support.h b/amiga/os3support.h
index 4de39d82f..a8c5abad2 100644
--- a/amiga/os3support.h
+++ b/amiga/os3support.h
@@ -1,5 +1,6 @@
/*
* Copyright 2010 John-Mark Bell <jmb@netsurf-browser.org>
+ * Copyright 2014 Chris Young <chris@unsatisfactorsysoftware.co.uk>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
@@ -26,6 +27,7 @@
#ifndef __amigaos4__
#include <stdint.h>
+
#include <proto/exec.h>
#include <proto/dos.h>
@@ -36,43 +38,125 @@
#include <exec/memory.h>
#endif
+/* C macros */
+#ifndef ASM
+#define ASM
+#endif
+
+#ifndef REG
+#define REG(reg,arg) arg __asm(#reg)
+#endif
+
+#define MIN(a,b) (((a)<(b))?(a):(b))
+
/* Macros */
#define IsMinListEmpty(L) (L)->mlh_Head->mln_Succ == 0
+#define LIB_IS_AT_LEAST(B,V,R) ((B)->lib_Version>(V)) || \
+ ((B)->lib_Version==(V) && (B)->lib_Revision>=(R))
+#define EAD_IS_FILE(E) ((E)->ed_Type<0)
/* Define extra memory type flags */
#define MEMF_PRIVATE MEMF_ANY
#define MEMF_SHARED MEMF_ANY
-/* Ignore tags that aren't supported */
+/* Ignore unsupported tags */
+#define ASO_NoTrack TAG_IGNORE
+#define BITMAP_DisabledSourceFile TAG_IGNORE
+#define BLITA_UseSrcAlpha TAG_IGNORE
+#define BLITA_MaskPlane TAG_IGNORE
+#define CLICKTAB_CloseImage TAG_IGNORE
+#define CLICKTAB_FlagImage TAG_IGNORE
+#define CLICKTAB_LabelTruncate TAG_IGNORE
+#define CLICKTAB_NodeClosed TAG_IGNORE
+#define GETFONT_OTagOnly TAG_IGNORE
+#define GETFONT_ScalableOnly TAG_IGNORE
#define PDTA_PromoteMask TAG_IGNORE
+#define RPTAG_APenColor TAG_IGNORE
+#define GA_HintInfo TAG_IGNORE
+#define GAUGEIA_Level TAG_IGNORE
+#define IA_InBorder TAG_IGNORE
+#define IA_Label TAG_IGNORE
+#define SA_Compositing TAG_IGNORE
+#define SBNA_Text TAG_IGNORE
+#define TNA_CloseGadget TAG_IGNORE
+#define TNA_HintInfo TAG_IGNORE
+#define WA_ToolBox TAG_IGNORE
+#define WINDOW_BuiltInScroll TAG_IGNORE
+#define WINDOW_NewMenu TAG_IGNORE
+#define WINDOW_NewPrefsHook TAG_IGNORE
+
+/* raw keycodes */
+#define RAWKEY_BACKSPACE 0x41
+#define RAWKEY_TAB 0x42
+#define RAWKEY_ESC 0x45
+#define RAWKEY_DEL 0x46
+#define RAWKEY_PAGEUP 0x48
+#define RAWKEY_PAGEDOWN 0x49
+#define RAWKEY_CRSRUP 0x4C
+#define RAWKEY_CRSRDOWN 0x4D
+#define RAWKEY_CRSRRIGHT 0x4E
+#define RAWKEY_CRSRLEFT 0x4F
+#define RAWKEY_F5 0x54
+#define RAWKEY_HELP 0x5F
+#define RAWKEY_HOME 0x70
+#define RAWKEY_END 0x71
+
+/* Other constants */
+#define BVS_DISPLAY BVS_NONE
+#define IDCMP_EXTENDEDMOUSE 0
+#define WINDOW_BACKMOST 0
+#define DN_FULLPATH 0
+#define BGBACKFILL JAM1
/* Renamed structures */
#define AnchorPathOld AnchorPath
+/* ReAction (ClassAct) macros */
+#define GetFileEnd End
+#define GetFontEnd End
+#define GetScreenModeEnd End
+
/* Easy compat macros */
/* application */
#define Notify(...) (void)0
-/* Exec */
-/* AllocVecTagList with no tags */
-#define AllocVecTagList(SZ,TAG) AllocVec(SZ,MEMF_ANY)
-#define GetSucc(N) (N)->ln_Succ
+/* DataTypes */
+#define SaveDTObjectA(O,W,R,F,M,I,A) DoDTMethod(O,W,R,DTM_WRITE,F,M,NULL)
/* diskfont */
/* Only used in one place we haven't ifdeffed, where it returns the charset name */
#define ObtainCharsetInfo(A,B,C) (const char *)"ISO-8859-1"
/* DOS */
+#define AllocSysObjectTags(A,B,C,D) CreateMsgPort() /* Assume ASOT_PORT for now */
#define FOpen(A,B,C) Open(A,B)
#define FClose(A) Close(A)
+#define CreateDirTree(D) CreateDir(D) /*\todo This isn't quite right */
+#define DevNameFromLock(A,B,C,D) NameFromLock(A,B,C)
+
+/* Exec */
+#define AllocVecTagList(SZ,TAG) AllocVec(SZ,MEMF_ANY) /* AllocVecTagList with no tags */
+#define GetPred(N) (N)->ln_Pred
+#define GetSucc(N) (N)->ln_Succ
+
+/* Gfx */
+#define SetRPAttrs(...) (void)0 /*\todo Probably need to emulate this */
/* Intuition */
+#define ICoerceMethod CoerceMethod
#define IDoMethod DoMethod
#define IDoMethodA DoMethodA
#define IDoSuperMethodA DoSuperMethodA
-#define RefreshSetGadgetAttrs SetGadgetAttrs /*\todo This isn't quite right */
+#define ShowWindow(...) (void)0
+
+/* P96 */
+#define p96FreeBitMap(B) FreeBitMap(B)
+#define p96AllocBitMap(W,H,D,FL,FR,FM) AllocBitMap(W,H,D,FL,FR)
+#define p96RectFill(RP,X,Y,XW,YH,C) RectFill(RP,X,Y,XW,YH) /* Needs pen */
+
/* Utility */
#define SetMem memset
+#define SNPrintf snprintf
/* Integral type definitions */
typedef int8_t int8;
@@ -90,6 +174,12 @@ struct TimeVal {
uint32 Microseconds;
};
+/* TimeRequest */
+struct TimeRequest {
+ struct IORequest Request;
+ struct TimeVal Time;
+};
+
/* Compositing */
#define COMPFLAG_IgnoreDestAlpha 0
#define COMPFLAG_SrcAlphaOverride 0
@@ -117,13 +207,31 @@ struct TimeVal {
#define IDFMT_PALETTEMAPPED (1) /* Palette mapped icon (chunky, V44+) */
#define IDFMT_DIRECTMAPPED (2) /* Direct mapped icon (truecolor 0xAARRGGBB, V51+) */
+/* Object types */
+enum {
+ ASOT_PORT = 1,
+ ASOT_IOREQUEST
+};
+
+/* Requester types */
+enum {
+ TDRIMAGE_ERROR = 1,
+ TDRIMAGE_WARNING
+};
+
/* Functions */
/* DOS */
int64 GetFileSize(BPTR fh);
+void FreeSysObject(ULONG type, APTR obj);
/* Exec */
struct Node *GetHead(struct List *list);
+/* Intuition */
+uint32 GetAttrs(Object *obj, Tag tag1, ...);
+ULONG RefreshSetGadgetAttrs(struct Gadget *g, struct Window *w, struct Requester *r, Tag tag1, ...);
+ULONG RefreshSetGadgetAttrsA(struct Gadget *g, struct Window *w, struct Requester *r, struct TagItem *tags);
+
/* Utility */
char *ASPrintf(const char *fmt, ...);