/* STELLA - Definitionen Teil von STELLA von Thomas Knneth, 90552 R”thenbach */ #ifndef _STELLADF_ #define _STELLADF_ #ifndef __AES__ #include #endif #ifndef __VDI__ #include #endif #ifndef __PORTAB__ #include #endif #ifndef _MPDIALS_ #define Dialmode int #define DialHandler void* #define BITSET int #define DrawProc void* #define tKey int #endif #ifndef _MPXOBJEC_ #define PtrPARMBLK void* #endif #ifndef _MPEVENT_ #define HandleEvent void* #endif #ifndef _MPWINDOW_ #define RewriteProc void* #endif typedef enum { MONO , COLOR , TRUECOLOR } COLTYP; /* wird auf DOC-Strukturen angewendet und ergibt Zahl der Farben */ #define COLORS(x) (1 << (x->planes)) typedef struct { int *base, /* Zeiger auf die Bilddaten */ width, /* Breite in Pixeln */ height, /* H”he in Pixeln */ wpl; /* Worte pro Zeile */ } SCINFO; /* diese Struktur beschreibt die VDI-Farbdarstellung (0 ... 1000) */ #ifndef _DANDY_ typedef struct { int red, green, blue; } RGB; #endif /* die folgenden Werte finden bitweise Verwendung */ #define D_ARROW 1 /* Mehrfach-Block */ #define D_SKEW 2 /* Block neigen */ #define D_SHADOW 4 /* Schatteneffekt */ typedef struct { int angle_hor, /* horizontaler Neigungswinkel in Grad */ angle_ver, /* vertikal */ size, /* Schattengr”že in % */ pos_x, /* die relative Position des Pfeils */ pos_y, d_typ; /* welche Komponenten gezeichnet werden */ } COOSYS; typedef struct { int raster, /* von 0 (schwarz) bis 255 (weiž) */ fg_index, /* VDI-Farbindex Vordergrundfarbe */ bg_index; /* dito fr Hintergrund */ RGB fgc, /* Vordergrundfarbe im TC-Modus */ bgc; /* Hintergrundfarbe im TC-Modus */ } D16T16; /* diese Struktur beschreibt ein Dokument */ typedef struct _doc { struct _doc *doc_prev; /* Zeiger auf vorheriges Element */ char name[256]; /* kompletter Name des Bildes */ int handle; /* Handle des GEM-Fensters oder -1 */ int elements; /* Komponenten des Fensters */ int x_start, y_start, /* linke obere Ecke des Bildausschnitts */ width, /* Breite in Pixeln */ height; /* und die H”he */ int planes; /* Anzahl Farbebenen */ BOOLEAN is_tc; /* TrueColor-Modus */ BOOLEAN grey; /* Graustufenbild (nur bei palette == NULL) */ BOOLEAN changed; /* wurden am Bild Žnderungen gemacht? */ int *standard; /* das Bild im GEM-Standardformat */ RGB *palette; /* Zeiger auf Farbpalette */ MFDB *data; /* wie das Bild am Schirm angezeigt wird */ long *trtable; /* Umrechnungstabelle Farbindizes->Standardformat */ BOOLEAN doclist_selected; GRECT block; /* markierter Bildausschnitt */ int *blk_stnd; /* Zeiger auf Blockdaten im Standardformat */ MFDB *blk_data; /* Zeiger auf Blockdaten im Ger„te-Format */ GRECT undo_blk; /* letzter gepufferter Bereich */ int *undo_ptr; /* Zeiger auf Puffer-Speicher */ BOOLEAN path_update, /* nach Sichern entsprechende Nachricht? */ system; /* erscheint nicht in der Dokumentliste */ int *offset_tbl; /* Position des Zeichens */ char *info_text; /* kann vom Modul bereitgestellt werden */ /* fr Gitterfunktionen */ int grid_width, grid_height, grid_flags; } DOC; /* wenn 'is_tc' TRUE liefert, zeigt 'standard' auf einen Speicherblock, der folgendermažen aufgebaut ist */ typedef UBYTE TCM[3]; /* diese Struktur beschreibt Konvertiermodule */ typedef struct { long magic; /* TKGM oder TKKM */ void *prev; /* Zeiger auf vorheriges Modul */ void *func; /* Einsprungpunkt in Funktion */ char name[14]; /* Name des Moduls */ long reserved; /* nicht ver„ndern! */ char description[30]; /* Text im 'Formatauswahl'-Dialog */ int version; /* Modul-Version z.B. 0x100 */ long bcd_date; /* Datum der Modulerstellung, BCD-Format */ char can_load, /* welche Extensions werden gelesen? */ can_save; /* und welche geschrieben? */ long extension[8]; /* Datei-Erweiterung */ int width[8], /* Breite (-1 bedeutet beliebig */ height[8], /* H”he */ planes[8]; /* Planes */ } KM_INFO; /* die folgende Struktur beschreibt allgemeine Module */ typedef struct _mp_info { long magic; /* TKGM oder TKKM */ void *prev; /* Zeiger auf vorheriges Modul */ void *func; /* Adresse der Funktion */ char name[14]; /* Name des Moduls */ long reserved; /* nicht ver„ndern! */ char description[30]; /* Beschreibung */ int version; /* Modul-Version z.B. 0x100 */ long bcd_date; /* Datum der Modulerstellung, BCD-Format */ struct { unsigned planes:5; /* das Dokument hat dann x Planes */ unsigned newdoc_poss:1; /* 'neues Dokument' anw„hlbar */ unsigned toolbox:1; /* in der Toolbox? */ } flags; int image_data[64]; /* Bildchen 32 * 32 Pixel */ } GM_INFO; /* * Diese Struktur wird von BoxKite gefllt. Sie ist identisch mit der * TOS-DTA, sieht jedoch Platz fr lange Datenamen vor. * Verwendung mit freundlicher Genehmigung von Harald Becker */ typedef struct { char d_reserved[21]; unsigned char d_attrib; unsigned int d_time; unsigned int d_date; unsigned long d_length; char d_fname[34]; } XDTA; typedef struct { unsigned long id; /* Selectric ID (SLCT) */ unsigned int version; /* version (BCD-Format) */ struct { unsigned : 7; /* reserved */ unsigned pthsav : 1; unsigned stdest : 1; unsigned : 1; unsigned numsrt : 1; /* numerisches Sortieren */ unsigned lower : 1; unsigned dclick : 1; /* Ordner mit Doppelklick */ unsigned hidden : 1; /* versteckte Dateien */ unsigned onoff : 1; /* Fileselector AN/AUS */ } config; int sort; /* sort-mode (neg. = rev.) */ int num_ext; /* number of extensions */ char *(*ext)[]; /* preset extensions */ int num_paths; /* number of paths */ char *(*paths)[]; /* preset paths */ int comm; /* communication word */ int in_count; /* input counter */ void *in_ptr; /* input pointer */ int out_count; /* output counter */ void *out_ptr; /* output pointer */ int cdecl (*get_first)(XDTA *dta, int attrib); int cdecl (*get_next)(XDTA *dta); int cdecl (*release_dir)(void); } SLCT_STR; /* einen Zeiger auf die folgende Struktur bekommt jedes Modul */ typedef struct { /* Variablen */ int vdi_handle; int grid_width, grid_height, grid_flags; int greyvalue_red, greyvalue_green, greyvalue_blue; UBYTE *tc_buffer; BOOLEAN first_rect; BOOLEAN on_clip; COLTYP hardware; int bitplanes; RGB *default_palette; int default_colors; BOOLEAN multi_selection; SLCT_STR *slct_cookie; int *grey_rasters; /* Maushandling */ void (*store_mouse)(void); void (*restore_mouse)(void); void (*set_mouse)(int form); void (*rotor)(void); /* Datei laden/sichern */ void* (*load_file)(const char *filename,long *); BOOLEAN (*save_file)(const char *,size_t *); /* Speicher reservieren/freigeben */ void* (*alloc_mem)(size_t); void (*fre_mem)(void *base); /* Dialog-Handling */ BOOLEAN (*inst_userdef)(OBJECT *tree,int objc,DrawProc proc,void *private); void *(*get_private)(OBJECT *tree,int objc); int (*open_dial)(OBJECT *tree,Dialmode mode,int start,long flags,const char *title); int (*act_entry)(OBJECT *tree,int item); void (*close_dial)(OBJECT *tree); void (*dispose_dial)(OBJECT *tree); BOOLEAN (*new_dial)(OBJECT *tree,DialHandler handler); void (*set_userkey)(OBJECT *tree,int objc,tKey key,BOOLEAN action,BOOLEAN doset); void (*reset_userkeys)(OBJECT *tree); void (*dial_draw)(OBJECT *tree,int entry,int depth,GRECT *clip); void (*free_listbox)(OBJECT *tree,int item); BOOLEAN (*add_entry)(OBJECT *tree,int item,BITSET state,void *data,const char *entry); void (*get_entry)(OBJECT *tree,int item,int num,void **data,char *entry); int (*max_entry)(OBJECT *tree,int item); void (*set_dropbox_element)(OBJECT *tree,int item,int entry,BOOLEAN draw); void (*select_entry)(OBJECT *tree,int item,int entry,int state,BOOLEAN sel); void (*drop_next)(OBJECT *tree,int item); void (*enable_dropbox)(OBJECT *tree,int item,BOOLEAN draw); void (*disable_dropbox)(OBJECT *tree,int item,BOOLEAN draw); void (*objc_pos)(OBJECT *tree,int entry,int *x,int *y); void (*set_objc_string)(OBJECT *tree,int entry,char *str); int (*inst_timer)(HandleEvent handler,long time); void (*rmov_timer)(int id); /* Dokumente */ DOC *(*get_next_document)(DOC *document,BOOLEAN topwin_only,BOOLEAN selected_only); void (*build_trtable)(RGB *palette,int colors,int x,int y,long *trtable); MFDB *(*mp_stnd2spec)(int *source,long *trtable,int width,int height,int planes); size_t (*mem_needed)(int,int,int,int *); void* (*malloc_16)(int,int,int,BOOLEAN,int *); void (*set_doc)(DOC *,int,int,int); void (*set_block)(DOC *doc,int *base,int width,int height); DOC *(*doc_new)(int width,int height,int planes); void (*doc_changed)(DOC *doc,BOOLEAN changed); BOOLEAN (*open_and_close)(DOC *new,DOC *old,BOOLEAN newdoc); void (*redraw_doc)(DOC *doc,BOOLEAN update); BOOLEAN (*get_block_extend)(DOC *doc,GRECT *rect); DOC *(*doc_clone)(DOC *doc); DOC *(*duplicate_document)(DOC *doc); BOOLEAN (*doc_show)(DOC *document,BOOLEAN force_open); void (*set_mfdb)(MFDB *mfdb,void *addr,int width,int height,int planes,BOOLEAN stand); DOC *(*doc_load)(const char *filename,KM_INFO *mod,int *ec_ptr); BOOLEAN (*save_img)(const char *filename,int *base,RGB *palette,int width,int height,int planes); void (*doc_chcol)(DOC *source,DOC *desti,int *new_indices,BOOLEAN copy_palette); /* die folgenden 2 Funktionen konvertieren das GEM-Standardformat und das Format der ST-Grafikhardware ineinander */ int * (*ilbm2stnd)(int *,int,int); void (*stnd2ilbm)(int *,int *,int,int); /* die folgenden 2 Funktionen konvertieren das GEM-Standardformat und das PackBits-Format ineinander */ int * (*PackBits2stnd)(BYTE *,int,int,int); BYTE * (*stnd2PackBits)(int *,int,int,int,size_t *); /* die folgenden 2 Funktionen konvertieren Paletten der ST-Hardware und das VDI-Format ineinander */ RGB * (*st2vdi)(int *,int); void (*vdi2st)(RGB *,int *,int); /* die folgenden Funktionen wandeln int- bzw. long Werte vom Intel- in das Motorolla-Format um */ int (*int_i2m)(int); long (*long_i2m)(long); /* setzen/ermitteln von Farbindizes */ void (*get_color_indices)(int *,int,size_t,long *); void (*set_color_indices)(int *,int,size_t,long *); void (*get_pixels)(DOC *doc,size_t offset,RGB *rgb_field); void (*get_line)(int *standard,int width,int height,int planes,BOOLEAN is_tc,int linenr,long *buffer); void (*set_line)(int *standard,int width,int height,int planes,BOOLEAN is_tc,int linenr,long *buffer); /* Umwandeln von RGB-Werten */ int (*dos2vdi)(int); int (*rgb2grey)(RGB *rgb); /* diverse Funktionen */ int (*get_index)(KM_INFO *,long); void (*blockfit)(DOC *,int *,int,int,int); void (*help)(const char *what); int (*get_number)(OBJECT *tree,int objc); void (*set_number)(OBJECT *tree,int objc,int value); int (*check_number)(OBJECT *tree,int objc,int min,int max); int (*test_scrollfield)(OBJECT *tree,int objc,int left,int text,int right,int min,int max); void (*clear_clipboard)(void); void (*set_description)(OBJECT *tree,int parent,int cpl,const char *str); void (*set_path)(OBJECT *tree,int objc,int len,const char *str); void (*central_disp)(void); int (*alert)(int,const char *); int (*GetCookie)(long cookie,long *value); void (*rewrite_window)(int win,int handle,RewriteProc prc); /* Zeichenroutinen fr komplexe Objekte */ int (*color_popup)(RGB *palette,int colors); int (*draw_coosys)(PtrPARMBLK p); int (*draw_16t16)(PtrPARMBLK p); /* Bitmaps manipulieren */ BOOLEAN (*insert_block)(int *s_standard,int s_width,int s_height,int s_planes,int *b_standard,GRECT *block,int copy_mode); BOOLEAN (*copy_block)(int *,int,int,GRECT *,int *,GRECT *,int,int); int *(*block_skew)(int *,int,int,int,int,int,int *,int *); void (*block_or_raster)(int *,int,int,int,int); void (*scale)(int *,int,int,int,int,int,int,SCINFO *); /* Pfade und Dateinamen */ void (*build_filename)(const char *path,const char *name,long ext,char *filename); void (*split_filename)(const char *filename,char *path,char *name); void (*trunc)(char *filename,char chr); long (*get_extension)(const char *); void (*fit_path)(char *buffer,int len,const char *str); BOOLEAN (*fsel)(char *path,char *name,long ext,char *hdl); /* Farbpaletten */ RGB *(*create_palette)(int); DOC *(*adapt_palette)(DOC *doc,RGB *referenz,int ref_colors); RGB *(*duplicate_palette)(RGB *base,int colors); void (*find_closest)(RGB *src_pal,int src_col,RGB *dst_pal,int dst_col,int *indices); BOOLEAN (*write_palette)(const char *filename,RGB *palette,int colors); RGB *(*read_palette)(const char *filename,int *count_ptr); void (*set_palette)(RGB *palette,int colors); BOOLEAN (*change_palette)(DOC *doc,RGB *palette); /* lesen/setzen von Modul-Parametern */ BOOLEAN (*get_var)(const char *vnam,char *vval,size_t *vlen); BOOLEAN (*set_var)(const char *vnam,char *vval); RGB *(*create_grey_palette)(int colors); BOOLEAN (*lock_module)(void *base,BOOLEAN do_lock); void (*release_dir)(void); } CUF; /* so wird das Konvertier-Modul aufgerufen */ typedef BOOLEAN (*CALL_KM)(const char *,KM_INFO *,DOC *,BOOLEAN,CUF *); /* und so ein allgemeines Modul */ typedef BOOLEAN (*CALL_GM)(DOC *,CUF *,GM_INFO *,BOOLEAN); /* Modul zur Darstellung auf TC-Hardware */ typedef BOOLEAN (*TC_MOD)(DOC *,GRECT *,CUF *); #endif