summaryrefslogtreecommitdiff
path: root/Bobi.h
blob: f3993f44cee39c4fadcccc6eb879bb9f22aa8e89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
/*
**  Bobi - The Ultimate Amiga Bob Manipulator
**
**  Bobi.h - Haupt-Include-File
**
**  COPYRIGHT (C) 1989-1993 BY CHRISTIAN A. WEBER, ZUERICH, SWITZERLAND.
**  ALL RIGHTS RESERVED. NO PART OF THIS SOFTWARE MAY BE COPIED, REPRODUCED,
**  OR TRANSMITTED IN ANY FORM OR BY ANY MEANS, WITHOUT THE PRIOR WRITTEN
**  PERMISSION OF THE AUTHOR. NO WARRANTY. USE AT YOUR OWN RISK.
*/

#include <dos/dos.h>
#include <libraries/iff.h>
#include <stdio.h>
#include <string.h>

#define MIN(a,b) ((a)<(b)?(a):(b))
#define MAX(a,b) ((a)>(b)?(a):(b))

#define ClearMem(buf,len) memset(buf, 0, len)


#define MAXNUMBOBS 500	/* Maximale Anzahl Bobs */


/****************************************************************************
**	Definition des für Bobs benützbaren Bereichs des Bobi-Screens
*/

#define MINX 1
#define MINY 12
#define MAXX 292
#define MAXY 197

/****************************************************************************
**	Bit-Definitionen für die globalen Optionen:
*/

#define GOF_LAYERMODE 1			/* Layer-Modus ein/aus */
#define GOF_ORGGRID 2			/* MainOrg-Fadenkreuz sichtbar */
#define GOF_BOBBORDERS 4		/* Bob-Rähmchen sichtbar */
#define GOF_COLLISIONRECT 8		/* Kollisions-Grenzen sichtbar */


/****************************************************************************
**	Aliases die das Leben leichter machen:
*/

#define MainNW NewWindowStructure1
#define ToolNW NewWindowStructure2
#define SIGMASK(w) (1L<<(w)->UserPort->mp_SigBit)


/****************************************************************************
**	MenuItem-Aliases
*/

#define ForwardItem SubItem1				/* Anim Modes */
#define BackwardItem SubItem2
#define PingPongItem SubItem3
#define FirstDefaultOrgSubItem SubItem4		/* 9 Items insgesamt */
#define ToolWindowMenuItem MenuItem1
#define LayerModeMenuItem MenuItem2			/* Layer Mode on/off */
#define OrgGridMenuItem MenuItem3			/* Main Org Grid */
#define BobBordersMenuItem MenuItem4		/* Gadget Borders */
#define CollisionRectMenuItem MenuItem5		/* Show Collision Bounds */


/*
**	Macro zum Abfragen der aktuellen Betriebssystem-Version
*/

#define OSVERSION(ver)	(IntuitionBase->LibNode.lib_Version >= (ver))


/********************** Menu 1: Project **********************************/

void ClearAllFunc(void);				/* Bobi.c */
void LoadBobsFunc(void);				/* LoadBobs.c */
void InsertBobsFunc(void);				/* LoadBobs.c */
void SaveBobsFunc(void);				/* LoadBobs.c */
void DeleteFileFunc(void);				/* LoadBobs.c */
void GenerateCodeFunc(void);			/* Generate.c */
void AboutFunc(void);					/* About.c */
void SleepFunc(void);					/* Sleep.c */
void QuitFunc(void);					/* Stubs.c */


/********************** Menu 2: Picture **********************************/

void LoadPicFunc(void);					/* Picture.c */
void GrabDPaintFunc(void);				/* Stubs.c */
void GrabScreenFunc(void);				/* Stubs.c */
void CloseScreenFunc(void);				/* Picture.c */


/********************** Menu 3: Bob **************************************/

void GetBobFunc(void);					/* Menu 3 & Gadget */
void GetMultiFunc(void);				/* Menu 3 & Gadget */
void SetOrgFunc(void);					/* Menu 3 & Gadget */
void SetCollBoundsFunc(void);			/* Menu 3 & Gadget */
void FlipXFunc(void);					/* Menu 3 */
void FlipYFunc(void);					/* Menu 3 */
void RotateFunc(void);					/* Rotate.c */
void ZoomFunc(void);					/* Zoom.c */
void InsertNewBobFunc(void);			/* Menu 3 */
void DeleteActBobFunc(void);			/* Menu 3 */


/********************** Menu 4: Anim *************************************/

void LoadIFFAnimFunc(void);				/* Menu 4 */
void SaveIFFAnimFunc(void);				/* Menu 4 */
void SetFirstBobFunc(void);				/* Menu 4 */
void SetLastBobFunc(void);				/* Menu 4 */
void StartAnimFunc(void);				/* Menu 4 */
void SetAnimModeFunc(void);				/* Menu 4 */


/********************** Menu 5: Global ***********************************/

void ToolWindowFunc(void);				/* Stubs.c */
void SetMainOrgFunc(void);				/* Menu 5 */
void EditPaletteFunc(void);				/* Menu 5 */
void NewCLIFunc(void);					/* Menu 5 */
void LoadOffsetsFunc(void);				/* Menu 5 */
void SaveOffsetsFunc(void);				/* Menu 5 */
void RemakeLabelsFunc(void);			/* Menu 5 */
void RemakeCollisionFunc(void);			/* Menu 5 */


/********************** Globale Prozeduren *******************************/

/***** Anim.c: *****/

UWORD GetAnimSpeed(void);
void SetAnimFlags(WORD);
void SetAnimSpeed(UWORD);


/***** ARexx.c: *****/

ULONG InitARexx(void);
ULONG CloseARexx(void);
void RexxMsgHandler(void);


/***** Bob.c: *****/

struct MyBob *MakeBob(WORD,WORD,WORD);
void FreeBob(struct MyBob *);
struct MyBob *BitMapToBob(struct MyBob *,struct BitMap *,WORD);
struct BitMap *BobToBitMap(struct MyBob *);
void DeleteBob(WORD);
void InsertBob(struct MyBob *,WORD);
void ShowBob(struct MyBob *);
void ShowFrame(WORD);
WORD BobHit(struct MyBob *,WORD,WORD);
struct MyBob *AutoResizeBob(struct MyBob *);
void SetBobDefaultOrg(struct MyBob *);


/***** Bobi.c: *****/

void ClearAll(void);
void OpenMain(void);
void Cleanup(BOOL);


/***** BMapSupport.c *****/

struct BitMap *MakeBitMap(WORD,WORD,WORD);
void MyFreeBitMap(struct BitMap *);
struct ByteMap *MakeByteMap(WORD,WORD);
void FreeByteMap(struct ByteMap *);


/***** ByteMap.a: *****/

void BitMapToByteMap(struct BitMap *,struct ByteMap *);
void BobToByteMap(struct MyBob *,struct ByteMap *);
void ByteMapToBitMap(struct ByteMap *,struct BitMap *);
BOOL AutoResizeByteMap(struct ByteMap *);
void RotateByteMap(struct ByteMap *,struct ByteMap *,LONG,LONG,LONG,LONG);
void FlipXByteMap(struct ByteMap *);
void FlipYByteMap(struct ByteMap *);
void ZoomByteMap(struct ByteMap *,struct ByteMap *,LONG);


/***** Color.c: *****/

WORD *RequestColor(struct Screen *);


/***** ConvertDate.S *****/

char  __regargs *ConvertDate(struct DateStamp *, char *);


/***** CreateRastPort.S ****/

struct RastPort * __regargs CreateRastPort(WORD, WORD, WORD);
void __regargs DeleteRastPort(struct RastPort *);


/***** FileRequest.c: *****/

STRPTR FileRequest(STRPTR wtitle, STRPTR postext, STRPTR drawer, STRPTR file);


/***** GadgetSupport.S *****/

BOOL __regargs DeselectGadget(struct Window *,struct Gadget *);
BOOL __regargs SelectGadget(struct Window *,struct Gadget *);


/***** Get.c: *****/

BOOL GetBob(int x,int y,int w,int h);


/***** LoadBobs.c: *****/

void LoadBobs(char *);
void LoadConfigFile(char *);


/***** Misc.c: *****/

void ShowMonoReq2(char *,...);
BOOL ShowRequest2(char *,char *);
void ShowFileError(char *);
BPTR OpenNewFileSafely(char *);
void DrawRect(struct RastPort *,WORD,WORD,WORD,WORD,WORD);
void DrawCross(struct Screen *,WORD,WORD);
void LoadPalette(UWORD *);
void LockWindows(void);
void UnLockWindows(void);
void SetGlobalOptions(WORD opts, BYTE defaultorg);
void GetGlobalOptions(void);


/***** PropGadgets.c: *****/

void MovePosFunc(void);
void RefreshBobNum(void);
WORD ReadBobNum(void);


/***** Snooze.S *****/

void __regargs Snooze(struct Window *);
void __regargs UnSnooze(struct Window *);


/***** Verschiedenes: *****/

void DragBobFunc(void);				/* Layer.c */
void HandleEvent(APTR);				/* MainWindow.h, PW2 */
void ShowIFFError(char *);			/* IFFError.c */
LONG ShowRequest(char *text, char *postext, char *negtext, ULONG flags);	/* ShowRequest.c */