/*
GEOS graphic (non icon/menu/sprite) functions
- ported to small C on 29.10.1999
by Maciej 'YTM/Elysium' Witkowiak
- 10,11.03.2000 - updates
*/
-#ifndef _GGRAPH_H
+#ifndef _GGRAPH_H
#define _GGRAPH_H
-#ifndef _GSTRUCT_H
#include <geos/gstruct.h>
-#endif
-
-void __fastcall__ cpputs(char *s);
-void __fastcall__ cpputsxy(int x, int y, char *s);
void __fastcall__ SetPattern(char newpattern);
-void __fastcall__ HorizontalLine(char pattern, char y, int xstart, int xend);
-void __fastcall__ InvertLine(char y, int xstart, int xend);
-void __fastcall__ RecoverLine(char y, int xstart, int xend);
-void __fastcall__ VerticalLine(char pattern, char ystart, char yend, int x);
+void __fastcall__ HorizontalLine(char pattern, char y, unsigned xstart, unsigned xend);
+void __fastcall__ InvertLine(char y, unsigned xstart, unsigned xend);
+void __fastcall__ RecoverLine(char y, unsigned xstart, unsigned xend);
+void __fastcall__ VerticalLine(char pattern, char ystart, char yend, unsigned x);
void __fastcall__ InitDrawWindow(struct window *myRectangle);
-void __fastcall__ Rectangle(void);
+void Rectangle(void);
void __fastcall__ FrameRectangle(char pattern);
-void __fastcall__ InvertRectangle(void);
-void __fastcall__ ImprintRectangle(void);
-void __fastcall__ RecoverRectangle(void);
+void InvertRectangle(void);
+void ImprintRectangle(void);
+void RecoverRectangle(void);
-void __fastcall__ DrawLine(struct window *topBotCoords);
+void __fastcall__ DrawLine(char mode, struct window *topBotCoords);
-void __fastcall__ DrawPoint(struct pixel *myPixel);
+void __fastcall__ DrawPoint(char mode, struct pixel *myPixel);
char __fastcall__ TestPoint(struct pixel *myPixel);
-void __fastcall__ PutChar(char character, char y, int x);
-void __fastcall__ PutString(char *myString, char y, int x);
-void __fastcall__ PutDecimal(char style, int value, char y, int x);
+void __fastcall__ PutChar(char character, char y, unsigned x);
+void __fastcall__ PutString(char *myString, char y, unsigned x);
+void __fastcall__ PutDecimal(char style, unsigned value, char y, unsigned x);
char __fastcall__ GetCharWidth(char character);
void __fastcall__ LoadCharSet(struct fontdesc *myFont);
-void __fastcall__ UseSystemFont(void);
+void UseSystemFont(void);
void __fastcall__ BitmapUp(struct iconpic *myIcon);
-void __fastcall__ BitmapClip(char skipl, char skipr, int skiptop,
- struct iconpic *myIcon);
+void __fastcall__ BitmapClip(char skipl, char skipr, unsigned skiptop,
+ struct iconpic *myIcon);
void __fastcall__ BitOtherClip(void *proc1, void *proc2, char skipl,
- char skipr, int skiptop,
- struct iconpic *myIcon);
+ char skipr, unsigned skiptop,
+ struct iconpic *myIcon);
void __fastcall__ GraphicsString(char *myGfxString);
+#ifdef __GEOS_CBM__
+void SetNewMode(void);
+#endif
+
/* VIC colour constants */
-#define BLACK 0
-#define WHITE 1
-#define RED 2
-#define CYAN 3
-#define PURPLE 4
-#define GREEN 5
-#define BLUE 6
-#define YELLOW 7
-#define ORANGE 8
-#define BROWN 9
-#define LTRED 10
-#define DKGREY 11
-#define GREY 12
-#define MEDGREY 12
-#define LTGREEN 13
-#define LTBLUE 14
-#define LTGREY 15
-/* once again for cc65 compatibility */
-#define COLOR_BLACK 0x00
-#define COLOR_WHITE 0x01
-#define COLOR_RED 0x02
-#define COLOR_CYAN 0x03
-#define COLOR_VIOLET 0x04
-#define COLOR_GREEN 0x05
-#define COLOR_BLUE 0x06
-#define COLOR_YELLOW 0x07
-#define COLOR_ORANGE 0x08
-#define COLOR_BROWN 0x09
-#define COLOR_LIGHTRED 0x0A
-#define COLOR_GRAY1 0x0B
-#define COLOR_GRAY2 0x0C
-#define COLOR_LIGHTGREEN 0x0D
-#define COLOR_LIGHTBLUE 0x0E
-#define COLOR_GRAY3 0x0F
-/* VIC memory banks */
-#define GRBANK0 3
-#define GRBANK1 2
-#define GRBANK2 1
-#define GRBANK3 0
+#define BLACK 0
+#define WHITE 1
+#define RED 2
+#define CYAN 3
+#define PURPLE 4
+#define GREEN 5
+#define BLUE 6
+#define YELLOW 7
+#define ORANGE 8
+#define BROWN 9
+#define LTRED 10
+#define DKGREY 11
+#define GREY 12
+#define MEDGREY 12
+#define LTGREEN 13
+#define LTBLUE 14
+#define LTGREY 15
+/* VIC memory banks - lowest 2 bits of cia2base+0 */
+#define GRBANK0 3
+#define GRBANK1 2
+#define GRBANK2 1
+#define GRBANK3 0
/* VIC screen sizes */
-#define VIC_X_POS_OFF 24
-#define VIC_Y_POS_OFF 50
-#define SC_BYTE_WIDTH 40
-#define SC_PIX_HEIGHT 200
-#define SC_PIX_WIDTH 320
-#define SC_SIZE 8000
-/* VDC screen constants */
-#define SCREENBYTEWIDTH 80
-#define SCREENPIXELWIDTH 640
-/* control characters for use as numbers, not chars */
-#define BACKSPACE 8
-#define FORWARDSPACE 9
-#define TAB 9
-#define LF 10
-#define HOME 11
-#define PAGE_BREAK 12
-#define UPLINE 12
-#define CR 13
-#define ULINEON 14
-#define ULINEOFF 15
-#define ESC_GRAPHICS 16
-#define ESC_RULER 17
-#define REV_ON 18
-#define REV_OFF 19
-#define GOTOX 20
-#define GOTOY 21
-#define GOTOXY 22
-#define NEWCARDSET 23
-#define BOLDON 24
-#define ITALICON 25
-#define OUTLINEON 26
-#define PLAINTEXT 27
+#define VIC_X_POS_OFF 24
+#define VIC_Y_POS_OFF 50
+#ifdef __GEOS_CBM__
+#define SC_BYTE_WIDTH 40
+#define SC_PIX_HEIGHT 200
+#define SC_PIX_WIDTH 320
+#define SC_SIZE 8000
+#else
+#define SC_BYTE_WIDTH 70
+#define SC_PIX_HEIGHT 192
+#define SC_PIX_WIDTH 560
+#define SC_SIZE 13440
+#endif
+/* VDC screen constants */
+#define SCREENBYTEWIDTH 80
+#define SCREENPIXELWIDTH 640
+/* control characters for use as numbers, not characters */
+#define BACKSPACE 8
+#define FORWARDSPACE 9
+#define TAB 9
+#define LF 10
+#define HOME 11
+#define PAGE_BREAK 12
+#define UPLINE 12
+#define CR 13
+#define ULINEON 14
+#define ULINEOFF 15
+#define ESC_GRAPHICS 16
+#define ESC_RULER 17
+#define REV_ON 18
+#define REV_OFF 19
+#define GOTOX 20
+#define GOTOY 21
+#define GOTOXY 22
+#define NEWCARDSET 23
+#define BOLDON 24
+#define ITALICON 25
+#define OUTLINEON 26
+#define PLAINTEXT 27
/* control characters for use in
- strings: eg: str[10]=BOLD "Hello"; */
-#define CCR "\015"
-#define CULINEON "\016"
-#define CULINEOFF "\017"
-#define CREV_ON "\022"
-#define CREV_OFF "\023"
-#define CBOLDON "\030"
-#define CITALICON "\031"
-#define COUTLINEON "\032"
-#define CPLAINTEXT "\033"
-
-/*values of currentMode */
+ strings: eg: str[10]=CBOLDON "Hello"; */
+#define CCR "\015"
+#define CULINEON "\016"
+#define CULINEOFF "\017"
+#define CREV_ON "\022"
+#define CREV_OFF "\023"
+#define CBOLDON "\030"
+#define CITALICON "\031"
+#define COUTLINEON "\032"
+#define CPLAINTEXT "\033"
+
+/*values of currentMode */
/* bitNumbers */
-#define UNDERLINE_BIT 7
-#define BOLD_BIT 6
-#define REVERSE_BIT 5
-#define ITALIC_BIT 4
-#define OUTLINE_BIT 3
-#define SUPERSCRIPT_BIT 2
-#define SUBSCRIPT_BIT 1
+#define UNDERLINE_BIT 7
+#define BOLD_BIT 6
+#define REVERSE_BIT 5
+#define ITALIC_BIT 4
+#define OUTLINE_BIT 3
+#define SUPERSCRIPT_BIT 2
+#define SUBSCRIPT_BIT 1
/* bitMasks */
-#define SET_UNDERLINE 0x80
-#define SET_BOLD 0x40
-#define SET_REVERSE 0x20
-#define SET_ITALIC 0x10
-#define SET_OUTLINE 0x08
-#define SET_SUPERSCRIPT 0x04
-#define SET_SUBSCRIPT 0x02
-#define SET_PLAINTEXT 0
+#define SET_UNDERLINE 0x80
+#define SET_BOLD 0x40
+#define SET_REVERSE 0x20
+#define SET_ITALIC 0x10
+#define SET_OUTLINE 0x08
+#define SET_SUPERSCRIPT 0x04
+#define SET_SUBSCRIPT 0x02
+#define SET_PLAINTEXT 0
/* values of dispBufferOn */
-#define ST_WRGS_FORE 0x20
-#define ST_WR_BACK 0x40
-#define ST_WR_FORE 0x80
+#define ST_WRGS_FORE 0x20
+#define ST_WR_BACK 0x40
+#define ST_WR_FORE 0x80
/* PutDecimal parameters */
-/* leading 0s? */
-#define SET_NOSURPRESS 0
-#define SET_SURPRESS 0x40
+/* leading zeros? */
+#define SET_NOSURPRESS 0
+#define SET_SURPRESS 0x40
/* justification */
-#define SET_RIGHTJUST 0
-#define SET_LEFTJUST 0x80
-/* C128 x flags */
-#define ADD1_W 0x2000
-#define DOUBLE_B 0x80
-#define DOUBLE_W 0x8000
+#define SET_RIGHTJUST 0
+#define SET_LEFTJUST 0x80
+/* C128 x-extension flags */
+#define ADD1_W 0x2000
+#define DOUBLE_B 0x80
+#define DOUBLE_W 0x8000
+/* DrawLine/DrawPoint mode values */
+#define DRAW_ERASE 0x00
+#define DRAW_DRAW 0x40
+#define DRAW_COPY 0x80
typedef void graphicStr;