4IBM kP >> FastCopy PRO << by Martin Backschat, Bergstr.16, D-8071 Hepberg // (c) 1991 ICP Verlag/TOS Magazin, Wendelsteinstr. 3, D-8011 Vaterstetten, Tel. 0810633954` /@`! #@%`')+-/1 3@79;=?A C@E`GIKMO/S@U`WY]_a Oe`gikmoq s@u`wy{} @` @ ` ` / ` /@`! #@%`')+-/1 3@79;=?A C@E`GIKMO/S@U`WY]_a Oe`gikmoq s@u`wy{} @` @ ` ` / A578 dWINLUPE 8mLEES DIT X. 8m.. SOURCE :mHISTORY TXT bmUcM1WIN_LUPEAPP qUpWIN_LUPETXT zU!-WIN_LUPEUPL rmUb. :m.. 8mHELP C vOIMAGE C M aSTART S =&iWIN_LUPEC |mU{WIN_LUPEPRJ TO5{WIN_RSC C qU6"_WIN_RSC H qUNZ WIN_RSC RSC qUQ$"WIN_RSC RSO qUZiZOOM S (\:[char *help[] = { "", " W i n L u p e - faster than light", " -----------------------------------", "", "WinLupe ist ein kleines Utility, wel-", "ches nach dem Freeware-Prinzip verteilt", "wird. Dies bedeutet, da jeder das ", "Programm kopieren, benutzen und weiter-", "geben darf, auer es handelt sich um PD-", "Versender, denn diese mssen sich bei", "mir eine schriftliche Genehmigung ein-", "holen.", "", "Grundstzlich ist das Programm sauber", "programmiert. Es mte also unter allen", "(Multi-) TOS-Versionen und auf allen", "(MEGA) ST-(Book)/STE/TT/FALCON-Computern", "laufen, da es keinerlei Annahmen bzgl.", "des Bildschirmaufbaus macht, was", "bedeutet, da es auch Grobildschirme,", "Grafikkarten und True-Color-Darstellung", "untersttzt. Eventuell bzw. wahrschein-", "lich luft es somit auch unter ST-", "Emulatoren fr MS-DOS und den Amiga.", "", "WinLupe lt sich als Programm oder als", "Accessory durch einfaches Umbennen von", "APP nach ACC und umgekehrt starten", "", "Nun zur Beschreibung der Parameter und", "Optionen in den Dialogen 'Setup' sowie", "'Sonstiges' :", "", " Setup :", "=========", "", " Darstellung :", " ---------------", "", " Echtzeitvergrerung :", "Die Vergrerung wird stndig mit der", "im Dialog 'Sonstiges' eingestellten", "Frequenz aktualisiert.", "", " Echtzeitschieber :", "Die Schieber des Vergrerungsfensters", "werden der Position des Bildausschnitts", "bei aktivierter Echtzeitvergrerung und", "'Mauszeiger folgen' angepat. Dies ver-", "langsamt die Ausgabe erheblich.", "", " Mauszeiger mitvergrern :", "Der Mauszeiger wird - wie der Name schon", "sagt - mitvergrert.", "", " Inverse Darstellung :", "Die Darstellung im Vergrerungsfenster", "wird invertiert.", "", " Optionen :", " ------------","", " Mauszeiger folgen :", "Der Ausschnitt im Vergrerungsfenster", "folgt bei aktivierter Echtzeitvergr-", "erung dem Mauszeiger.", "", " Mauszeiger an-/ausschalten :", "Bei deaktivierter Option wird nur dann", "der Mauszeiger korrekt an-/ausge-", "schaltet, wenn entweder die Echtzeit-", "vergrerung deaktiviert ist oder der", "Mauszeiger ber einem sichtbaren Teil", "des Vergrerungsfensters steht. Dies", "verhindert in der Regel ein Flackern", "des Mauszeigers, kann aber in uerst", "seltenen Fllen zu minimalen Redraw-", "Fehlern fhren, welche aber kurzfristig", "sind und nur an den Rndern von Fenstern", "auftreten knnen. Auerdem mu man fr", "diesen Fall den Mauszeiger mit maximaler", "Geschwindigkeit ber den Schirm bewegen,", "d.h. im normalen Anwendungsalltag kommt", "es zu keinerlei Problemen.", "", " Fenster abrunden :", "Das Vergrerungsfenster wird auf Word-", "grenzen gerundet, was die Ausgabe etwas", "beschleunigt. Weiterhin wird die Gre", "des Fensters dem Vergrerungsfaktor an-", "gepat.", "", " Kompatibilitts-Modus :", "Schaltet den an sich notwendigen", "wind_update()-Aufruf an. Nur bei ausge-", "schalteter Option erfolgt auch bei", "aktiven Dialogen, in der Menleiste oder", "beim Verschieben von Desktopelementen", "bzw. Fenstern eine Vergrerung. Dabei", "kann es zu Redraw-Fehlern kommen, wenn", "sich das Vergrerungs-Fenster und ein", "Dialog bzw. Men berlappen oder wenn", "ein Fenster ber das WinLupe-Fenster ge-", "schoben wird. Diese Option ist nur fr", "die Echtzeitvergrerung relevant und", "funktioniert nicht bei aktiven Echtzeit-", "schiebern.", "", " Grow/Shrink-Boxen zeichnen :", "Beim ffnen/Schlieen von Dialogen", "werden die blichen Grow- bzw. Shrink-", "Boxen gezeichnet. Dies verlangsamt den", "Dialogaufbau nicht unerheblich.", "", " Vergrerung :", " ----------------", "", "Wahl des Vergrerungsfaktors zwischen", "vorgegebenen Faktoren und beliebigem", "Faktor zwischen 2 und 32. Je grer der", "Faktor ist, desto schneller ist die Ver-", "grerung.", "", " Sonstiges :", "=============", "", " Dialoge :", " -----------", "Wechsel zwischen Fenster-Dialogen und", "FlyDials. Fensterdialoge knnen stndig", "geffnet bleiben, funktionieren auch im", "Hintergrund und die Vergrerung wird", "weiterhin aktualisiert. FlyDials unter-", "brechen die Vergrerung, bentigen", "Speicher fr das Fliegen, belegen aber", "keine Fenster.", "", " Zoom-Modus :", " --------------", "Wahl des Vergrerungsmodus zwischen", "sauberer Vergrerung ber VDI-Trans-", "form oder schnellen Spezial-Routinen fr", "Grafikkarten mit Pixel-Packed/Inter-", "leaved-Planes oder dem Standard-Format.", "", " Frequenz :", " ------------", "Die Vergrerungsfrequenz fr die Echt-", "zeitvergrerung kann hier zwischen 1 Hz", "und 100 Hz eingestellt werden, wobei", "diese Werte nur bei entsprechend schnel-", "len Computern/Grafikkarten bzw. kleinem", "Vergrerungsfenster oder Verwendung der", "schnellen Spezial-Vergrerungsroutinen", "(Zoom-Modus) erreicht werden knnen.", "", "WinLupe wurde mit Pure C von", "Application Systems Heidelberg und", "meiner eigenen,erweiterten Dialog-", "Library EnhancedGEM programmiert.", "", "Und zum Schlu mchte ich noch ganz", "herzlich die netteste Frau in diesem", "den Spiralarm der Galaxis, nmlich", "Eleni Avgetidou, gren.", "" }; int help_lines = (int) sizeof(help)>>2; #define NULL ((void *) 0l) typedef struct { int *hi_on,*hi_off,*lo_on,*lo_off; } IMAGE; typedef struct { int count; IMAGE *image; } IMAGES; static int radio_hi_on[] = { 0x0000, 0x03C0, 0x0C30, 0x1008, 0x23C4, 0x27E4, 0x4FF2, 0x4FF2, 0x4FF2, 0x4FF2, 0x27E4, 0x23C4, 0x1008, 0x0C30, 0x03C0, 0x0000 }; static int radio_hi_off[] = { 0x0000, 0x03C0, 0x0C30, 0x1008, 0x2004, 0x2004, 0x4002, 0x4002, 0x4002, 0x4002, 0x2004, 0x2004, 0x1008, 0x0C30, 0x03C0, 0x0000 }; static int radio_lo_on[] = { 0x0FF0, 0x781E, 0xE3C7, 0xCFF3, 0xCFF3, 0xE3C7, 0x781E, 0x0FF0 }; static int radio_lo_off[] = { 0x0FF0, 0x781E, 0xE007, 0xC003, 0xC003, 0xE007, 0x781E, 0x0FF0 }; static int check_hi_on[] = { 0x0000, 0x7FFE, 0x4002, 0x500A, 0x4812, 0x4422, 0x4242, 0x4182, 0x4182, 0x4242, 0x4422, 0x4812, 0x500A, 0x4002, 0x7FFE, 0x0000 }; static int check_hi_off[] = { 0x0000, 0x0000, 0x3FFC, 0x2004, 0x2004, 0x2004, 0x2004, 0x2004, 0x2004, 0x2004, 0x2004, 0x2004, 0x2004, 0x3FFC, 0x0000, 0x0000 }; static int check_lo_on[] = { 0x7FFC, 0x701C, 0x4C64, 0x4384, 0x4C64, 0x701C, 0x7FFC ,0x0000 }; static int check_lo_off[] = { 0x7FFC, 0x4004, 0x4004, 0x4004, 0x4004, 0x4004, 0x7FFC ,0x0000 }; static int arrow_up_lo_sel[] = { 0x0000, 0x0180, 0x0180, 0x03C0, 0x03C0, 0x07E0, 0x07E0, 0x0000 }; static int arrow_up_lo[] = { 0x0000, 0x0180, 0x0180, 0x0240, 0x0240, 0x0420, 0x07E0, 0x0000}; static int arrow_dn_lo_sel[] = { 0x0000, 0x07E0, 0x07E0, 0x03E0, 0x03C0, 0x0180, 0x0180, 0x0000}; static int arrow_dn_lo[] = { 0x0000, 0x07E0, 0x0420, 0x0240, 0x0240, 0x0180, 0x0180, 0x0000}; static int arrow_right_lo_sel[] = { 0x0000, 0x3C00, 0x3FC0, 0x3FFC, 0x3FC0, 0x3C00, 0x0000 , 0x0000}; static int arrow_right_lo[] = { 0x0000, 0x3C00, 0x23C0, 0x203C, 0x23C0, 0x3C00, 0x0000 , 0x0000}; static int arrow_left_lo_sel[] = { 0x0000, 0x001E, 0x01FE, 0x1FFE, 0x01FE, 0x001E, 0x0000, 0x0000 }; static int arrow_left_lo[] = { 0x0000, 0x001E, 0x01E2, 0x1E02, 0x01E2, 0x001E, 0x0000, 0x0000 }; static int arrow_up_hi_sel[] = { 0x0000, 0x0000, 0x0080, 0x00C0, 0x01C0, 0x01E0, 0x03E0, 0x03F0, 0x07F0, 0x07F8, 0x0FF8, 0x0FFC, 0x1FFC, 0x1FFE, 0x0FFE, 0x0000 }; static int arrow_up_hi[] = { 0x0000, 0x0000, 0x0080, 0x00C0, 0x0140, 0x0160, 0x0220, 0x0230, 0x0410, 0x0418, 0x0808, 0x080C, 0x1004, 0x1FFE, 0x0FFE, 0x0000 }; static int arrow_dn_hi_sel[] = { 0x0000, 0x0000, 0x1FFC, 0x1FFC, 0x1FFC, 0x0FF8, 0x0FF8, 0x07F0, 0x07F0, 0x03E0, 0x03E0, 0x01C0, 0x01C0, 0x0080, 0x0000, 0x0000 }; static int arrow_dn_hi[] = { 0x0000, 0x0000, 0x1FFC, 0x100C, 0x180C, 0x0818, 0x0C18, 0x0430, 0x0630, 0x0260, 0x0360, 0x01C0, 0x01C0, 0x0080, 0x0000, 0x0000 }; static int arrow_left_hi_sel[] = { 0x0000, 0x0000, 0x000C, 0x003E, 0x00FE, 0x03FE, 0x0FFE, 0x3FFE, 0x1FFE, 0x07FE, 0x01FE, 0x007E, 0x001E, 0x0006, 0x0000, 0x0000 }; static int arrow_left_hi[] = { 0x0000, 0x0000, 0x000C, 0x0036, 0x00C6, 0x0306, 0x0C06, 0x3006, 0x1C06, 0x0706, 0x01C6, 0x0076, 0x001E, 0x0006, 0x0000, 0x0000 }; static int arrow_right_hi_sel[] = { 0x0000, 0x0000, 0x3000, 0x3C00, 0x3F00, 0x3FC0, 0x3FF0, 0x3FFC, 0x3FFE, 0x3FF8, 0x3FE0, 0x3F80, 0x3E00, 0x1800, 0x0000, 0x0000 }; static int arrow_right_hi[] = { 0x0000, 0x0000, 0x3000, 0x2C00, 0x2300, 0x20C0, 0x2030, 0x200C, 0x203E, 0x20F8, 0x23E0, 0x2F80, 0x3E00, 0x1800, 0x0000, 0x0000 }; static IMAGE radio_im[] = {{radio_hi_on,radio_hi_off,radio_lo_on,radio_lo_off}}; static IMAGE check_im[] = {{check_hi_on,check_hi_off,check_lo_on,check_lo_off}}; static IMAGE arrow_up_im[] = {{arrow_up_hi_sel,arrow_up_hi,arrow_up_lo_sel,arrow_up_lo}}; static IMAGE arrow_dn_im[] = {{arrow_dn_hi_sel,arrow_dn_hi,arrow_dn_lo_sel,arrow_dn_lo}}; static IMAGE arrow_left_im[] = {{arrow_left_hi_sel,arrow_left_hi,arrow_left_lo_sel,arrow_left_lo}}; static IMAGE arrow_right_im[] = {{arrow_right_hi_sel,arrow_right_hi,arrow_right_lo_sel,arrow_right_lo}}; IMAGES radios = { 1, radio_im }; IMAGES checks = { 1, check_im }; IMAGES cycles = { 0, NULL }; IMAGES arrows_up = { 1, arrow_up_im }; IMAGES arrows_down = { 1, arrow_dn_im }; IMAGES arrows_right = { 1, arrow_right_im }; IMAGES arrows_left = { 1, arrow_left_im }; .EXPORT _BasPag .EXPORT _app .EXPORT errno .IMPORT main .IMPORT _StkSize .OFFSET 0 TpaStart: .DS.L 1 TpaEnd: .DS.L 1 TextSegStart: .DS.L 1 TextSegSize: .DS.L 1 DataSegStart: .DS.L 1 DataSegSize: .DS.L 1 BssSegStart: .DS.L 1 BssSegSize: .DS.L 1 DtaPtr: .DS.L 1 PntPrcPtr: .DS.L 1 Reserved0: .DS.L 1 EnvStrPtr: .DS.L 1 Reserved1: .DS.B 7 CurDrv: .DS.B 1 Reserved2: .DS.L 18 CmdLine: .DS.B 128 BasePageSize: .DS 0 .BSS _BasPag:.DS.L 1 _app: .DS.W 1 .DATA errno: .DC.W 0 .CODE MOVEQ.L #0,D0 MOVE.L A0,A3 MOVE.L A3,D1 BNE.S ACC MOVE.L 4(A7), A3 ; BasePagePointer from Stack MOVEQ.L #1,D0 ; Program is Application ACC: MOVE.W D0,_app MOVE.L A3,_BasPag MOVE.L TextSegSize(A3),A0 ADD.L DataSegSize(A3),A0 ADD.L BssSegSize(A3),A0 ADD.W #BasePageSize,A0 MOVE.L A3,D0 ADD.L A0,D0 AND.B #$FC,D0 MOVE.L D0,A7 PEA (A0) PEA (A3) CLR.W -(A7) MOVE.W #74,-(A7) TRAP #1 LEA.L 12(A7),A7 BSR main CLR.W -(A7) TRAP #1 .END /* Verbesserungen: - gerasterte Vergrerung - Koordinatenanzeige der Maus - Kommunikation mit Hauptapplikation ber AV-Protokoll */ /* #define SPEED 1 */ #ifdef SPEED long clock(void); char string[80]; #endif #include #include #include #include #include #include "win_rsc.c" #include "win_rsc.h" #define ELEMENTE NAME|CLOSER|FULLER|MOVER|SIZER|UPARROW|DNARROW|VSLIDE|HSLIDE|LFARROW|RTARROW struct mem { void *memory; void *form; } buf[2]; typedef struct { int object[9],value[9]; int shift,maske,faktor; int freq,dial; GRECT border; int xres,yres,mode; } _setup_; _setup_ Setup = { { REALTIME,MOUSE,WROUND,SLIDER,COMPT,INVERS,FOLLOW,BOXES,MONOFF }, { TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE}, 2,0,3, 100,AUTO_DIAL, {0,0,0,0}, 0,0,0 }; #define INFO_LEN sizeof(_setup_) extern char *help[]; extern int help_lines; int w_handle = FAIL,vhandle; int p_faktor,longs,il_offset,lines,line_h,old_line = -1,first_line = 0,max_lines,scroll; int z_x,z_y,z_w,z_h,xoff,yoff,open_cnt=0,new_freq,bytes; long zoom_x,zoom_y,zoom_w,zoom_h; long tab_v[2048]; char *ind_tab[256]; GRECT rc_list[256]; int w_max_w,w_max_h; boolean valid,messag_val,app_flag=TRUE; DIAINFO dialog_info,winlupe_info,help_info,opt_info,*return_info,*wins[4]; MFDB source,buffer,zoomfm,stdfm; GRECT window,old,zoom_area; OBJECT *dialog_tree,*info_tree,*help_tree,*opt_tree,*menu; EVENT event; char entry[] = " WinLupe 6.50 "; char *title = entry+1; char *version = entry+10; char *inf_file = "A:\WIN_LUPE.INF"; char *win_err = "[1][ | Konnte kein Fenster | ffnen ! ][ Ok ]"; char *work_err = "[1][ | Konnte keine Work- | station ffnen ! ][ Ok ]"; char *mem_err = "[1][ | Nicht genug Speicher | fr Bildschirmpuffer ! ][ Ok ]"; char *init_err = "[1][ | Fehler bei der | Initialisierung ! ][ Ok ]"; char *file_err = "[1][ | Konnte WIN_LUPE.INF | nicht ffnen ! ][ Ok ]"; char *rw_error = "[1][ | Schreib-/Lesefehler ! ][ Ok ]"; int cdecl draw_help(PARMBLK *); USERBLK helpblk = {draw_help,0}; void zoom_var(int,int,int,int *,long *); void zoom_inter(int,int,int,int *,long *); void zoom_pixel(int,int,int,int *,long *); void init_zoom_var(void); void init_zoom_pixel(int,int); void cache_flush(void); boolean alloc_buf(long,struct mem *); void init_mfdb(int,int,int,void *,MFDB *); void planes_tab(int); void open_window(void); void close_window(int); void draw_window(GRECT *); void calc_coords(boolean); void set_slider(boolean,boolean,boolean); void wind_size(GRECT *); void dialog(void); void init_event(void); void l_min(long *,long); void mouse_pos(long *,long *); void scale(int *,int,int); void load_info(void); void save_info(void); boolean messag(EVENT *); void do_messag(EVENT *); int init_msg(EVENT *); void get_value(boolean); void set_value(boolean); void dia_close(int); void dia_open(OBJECT *,DIAINFO *,int); int do_slide(OBJECT *,int,int); int do_help(OBJECT *,int,int); void calc_xy(void); void calc_wh(void); void val_2_str(char *,int); void calc_vars(void); boolean check_dial(void); void slider_pos(void); void set_window(boolean); void exitus(void); void info(void); void cycle_window(void); void cycle(void); void open_dial(OBJECT *,DIAINFO *,int); void close_dial(DIAINFO *); boolean alloc_buf(long size,struct mem *buf) { register long adr; if ( (adr = (long) malloc(size)) > 0L ) { buf->memory = (void *) adr; adr = (adr+255) & 0xffffff00L; buf->form = (void *) adr; return(TRUE); } return(FALSE); } void init_mfdb(int w,int h,int std,void *buf,MFDB *mfdb) { mfdb->fd_addr = buf; mfdb->fd_w = w; mfdb->fd_h = h; mfdb->fd_wdwidth= w>>4; mfdb->fd_stand = std; } void open_window() { register long size; register int fkt,wid,hei; int d,x_res,y_res,x_max=0,y_max=0; wind_calc(WC_WORK,ELEMENTE,desk.g_x,desk.g_y,desk.g_w,desk.g_h,&d,&d,&x_res,&y_res); for (fkt=2;fkt<=32;fkt++) { wid = x_res/fkt; wid += 15; wid &= 0xfff0; wid *= fkt; if (wid>x_max) x_max = wid; hei = ((y_res+fkt-1)/fkt)*fkt; if (hei>y_max) y_max = hei; } size = wid>>3; size *= (long) y_max; size *= (long) planes; size += 1024; if (alloc_buf(size,&buf[0])==TRUE) { if (alloc_buf(size,&buf[1])==TRUE) { int work_out[57]; if (open_work(&vhandle,work_out)) { vs_clip (vhandle,1,(int *) &clip); if ((w_handle = wind_create(ELEMENTE,desk.g_x,desk.g_y,desk.g_w,desk.g_h))>=0) { calc_vars(); wind_set(w_handle,WF_NAME,title); if (aes_version>=0x0400) wind_set(w_handle,WF_BEVENT,1); wind_calc(WC_WORK,ELEMENTE,Setup.border.g_x,Setup.border.g_y,Setup.border.g_w,Setup.border.g_h, &window.g_x,&window.g_y,&window.g_w,&window.g_h); xoff = window.g_x - Setup.border.g_x; yoff = window.g_y - Setup.border.g_y; calc_wh(); calc_coords(TRUE); if (Setup.value[7]==TRUE) { graf_movebox( 32,32,desk.g_x,desk.g_y, Setup.border.g_x+(Setup.border.g_w>>1),Setup.border.g_y+(Setup.border.g_h>>1)); graf_growbox( Setup.border.g_x+(Setup.border.g_w>>1),Setup.border.g_y+(Setup.border.g_h>>1),32,32, Setup.border.g_x,Setup.border.g_y,Setup.border.g_w,Setup.border.g_h); } wind_open(w_handle,Setup.border.g_x,Setup.border.g_y,Setup.border.g_w,Setup.border.g_h); if ((Setup.value[0]==TRUE) && (Setup.value[6]==TRUE)) mouse_pos(&zoom_x,&zoom_y); else zoom_x = zoom_y = z_x = z_y = 0; valid = FALSE; old.g_x = -1; set_slider(FALSE,TRUE,FALSE); init_event(); cycle(); return; } else { close_work(vhandle); form_alert(1,win_err); } } else form_alert(1,work_err); free(buf[1].memory); free(buf[0].memory); return; } else free(buf[0].memory); } form_alert(1,mem_err); } void close_window(int graf) { if (w_handle>=0) { if ((graf != 0) && (Setup.value[7]==TRUE)) { graf_shrinkbox( Setup.border.g_x+(Setup.border.g_w>>1),Setup.border.g_y+(Setup.border.g_h>>1),32,32, Setup.border.g_x,Setup.border.g_y,Setup.border.g_w,Setup.border.g_h); graf_movebox ( 32,32,Setup.border.g_x+(Setup.border.g_w>>1),Setup.border.g_y+(Setup.border.g_h>>1), desk.g_x,desk.g_y); } wind_close(w_handle); wind_delete(w_handle); close_work(vhandle); free(buf[1].memory); free(buf[0].memory); w_handle = FAIL; init_event(); cycle(); } } void cycle_window() { if (open_cnt>0) { int handle = FAIL,top; wind_get(0,WF_TOP,&top); if (top==w_handle) handle = wins[0]->di_handle; else { register int i; for (i=0;idi_handle==top) { if (i<(open_cnt-1)) handle = wins[i+1]->di_handle; else if (w_handle>0) handle = w_handle; else handle = wins[0]->di_handle; break; } } if (handle>0) { wind_set(handle,WF_TOP); messag_val = TRUE; } } } void calc_coords(boolean size) { register int max; if (window.g_x < (max = desk.g_x + 16 + xoff)) window.g_x = max; window.g_x &= 0xfff0; if (Setup.shift<5) { window.g_w &= 0xfff0; window.g_h &= Setup.maske; } else { switch (p_faktor) { case 2: case 4: case 8: case 16: window.g_w &= 0xfff0; break; case 6: case 12: case 24: window.g_w = ((window.g_w/3) & 0xfff8)*3; break; case 32: window.g_w &= 0xffe0; break; default: window.g_w -= window.g_w % p_faktor; break; } window.g_h -= window.g_h % p_faktor; } if (window.g_w<96) window.g_w = 96; wind_calc(WC_BORDER,ELEMENTE,window.g_x,window.g_y,window.g_w,window.g_h, &Setup.border.g_x,&Setup.border.g_y,&Setup.border.g_w,&Setup.border.g_h); if (size==TRUE) { register int max = desk.g_x + desk.g_w - 1 - Setup.border.g_x; while (Setup.border.g_w>=max) { window.g_w -= p_faktor; Setup.border.g_w -= p_faktor; } max = desk.g_y + desk.g_h - 1 - Setup.border.g_y; while (Setup.border.g_h>=max) { window.g_h -= p_faktor; Setup.border.g_h -= p_faktor; } } } void set_slider(boolean flag,boolean slide,boolean size) { register int max; if ((flag==TRUE) && (Setup.value[2]==TRUE)) { calc_coords(size); wind_set(w_handle,WF_CURRXYWH,Setup.border.g_x,Setup.border.g_y, Setup.border.g_w,Setup.border.g_h); } else wind_get(w_handle,WF_CURRXYWH,&Setup.border.g_x,&Setup.border.g_y, &Setup.border.g_w,&Setup.border.g_h); calc_wh(); l_min(&zoom_x,(long) w_max_w * (long) p_faktor); l_min(&zoom_y,(long) w_max_h * (long) p_faktor); calc_xy(); max=(z_w+15) & 0xfff0; init_mfdb(max,z_h,0,buf[0].form,&buffer); init_mfdb(max,z_h,1,buf[1].form,&stdfm); if (Setup.shift<5) init_mfdb(max<>= Setup.shift; z_h >>= Setup.shift; } else { z_w /= p_faktor; z_h /= p_faktor; } w_max_w = max_w - z_w + 1; w_max_h = max_h - z_h + 1; } void calc_xy() { register long x=zoom_x,y=zoom_y; if (Setup.shift<5) { x >>= Setup.shift; y >>= Setup.shift; } else { x /= p_faktor; y /= p_faktor; } z_x = (int) x; z_y = (int) y; } void draw_window(GRECT *area) { int pxy[8],d; GRECT work,win = *area,mouse; register GRECT *w_ptr = &work; register int x,y,w,h,rc_idx = 0,*ptr; boolean update = (Setup.value[4]==TRUE || Setup.value[0]==FALSE); boolean hidem = (Setup.value[0]==FALSE || Setup.value[8]==TRUE),hidden; #ifdef SPEED long alltime = clock(),time; #endif if (open_cnt>0 && check_dial()) return; if (update) wind_update(BEG_UPDATE); ptr = &(rc_list[0].g_x); wind_get(w_handle,WF_FIRSTXYWH,ptr,ptr+1,ptr+2,ptr+3); while ((ptr[2]>0) && (ptr[3]>0)) { ptr += 4;rc_idx++; wind_get(w_handle,WF_NEXTXYWH,ptr,ptr+1,ptr+2,ptr+3); } if (valid==FALSE) { register int wid=(z_w+15)>>4,idx=rc_idx; register int *orig; register long *copy; GRECT zoom; ptr = pxy; *ptr++ = z_x; *ptr++ = z_y; *ptr++ = z_x+z_w-1; *ptr++ = z_y+z_h-1; *ptr++ = 0; *ptr++ = 0; *ptr++ = z_w-1; *ptr = z_h-1; if (pxy[2]>max_w) { pxy[0] -= pxy[2]-max_w; pxy[2] = max_w; } if (pxy[3]>max_h) { pxy[1] -= pxy[3]-max_h; pxy[3] = max_h; } if (Setup.value[1]) vro_cpyfm(vhandle,3,pxy,screen,&buffer); else { graf_mouse(M_OFF,0L); vro_cpyfm(vhandle,3,pxy,screen,&buffer); graf_mouse(M_ON,0L); } zoom.g_x = z_x; zoom.g_y = z_y; zoom.g_w = z_w; zoom.g_h = z_h; rc_intersect(&zoom_area,&zoom); while (--idx>=0) { work = rc_list[idx]; if (rc_intersect(&zoom,w_ptr)) { ptr = pxy; *ptr++ = pxy[4] = w_ptr->g_x - z_x; *ptr++ = pxy[5] = w_ptr->g_y - z_y; *ptr++ = pxy[6] = pxy[0] + w_ptr->g_w - 1; *ptr = pxy[7] = pxy[1] + w_ptr->g_h - 1; vro_cpyfm(vhandle,0,pxy,&buffer,&buffer); } } if (Setup.mode) { orig = (int *) buf[0].form; copy = (long *) buf[1].form; } else { orig = (int *) buf[1].form; copy = (long *) buf[0].form; vr_trnfm(vhandle,&buffer,&stdfm); } #ifdef SPEED time = clock(); #endif switch (Setup.mode) { case 2: if (planes<8) zoom_var(wid*planes,z_h,1,orig,copy); else zoom_pixel(wid,z_h,bytes,orig,copy); break; case 3: zoom_inter(wid,z_h,planes,orig,copy); break; default: zoom_var(wid,z_h,planes,orig,copy); } #ifdef SPEED time = clock() - time; sprintf(string,"Zoom : %d ms",(int) (time*5)); v_gtext(vhandle,0,32,string); #endif if (!Setup.mode) vr_trnfm(vhandle,&zoomfm,&source); valid = TRUE; } rc_intersect(&zoom_area,&win); while (--rc_idx>=0) { w_ptr = &rc_list[rc_idx]; if (rc_intersect(&win,w_ptr)) { x = w_ptr->g_x-window.g_x; y = w_ptr->g_y-window.g_y; w = w_ptr->g_w-1; h = w_ptr->g_h-1; ptr = pxy; *ptr++ = x; *ptr++ = y; *ptr++ = x+w; *ptr++ = y+h; *ptr++ = w_ptr->g_x; *ptr++ = w_ptr->g_y; *ptr++ = w_ptr->g_x+w; *ptr = w_ptr->g_y+h; if (hidem) graf_mouse(M_OFF,0l); else { graf_mkstate(&mouse.g_x,&mouse.g_y,&d,&d); mouse.g_x -= 32; mouse.g_y -= 32; mouse.g_w = mouse.g_h = 64; if (mouse.g_x<0) { mouse.g_w += mouse.g_x; mouse.g_x = 0; } if (mouse.g_y<0) { mouse.g_h += mouse.g_y; mouse.g_y = 0; } if (rc_intersect(w_ptr,&mouse)) { hidden = TRUE; graf_mouse(M_OFF,0l); } else hidden = FALSE; } vro_cpyfm(vhandle,3,pxy,&source,screen); if (hidem || hidden) graf_mouse(M_ON,0l); } } if (update) wind_update(END_UPDATE); #ifdef SPEED alltime = clock() - alltime; sprintf(string,"All : %d ms",(int) (alltime*5)); v_gtext(vhandle,120,32,string); #endif } int init_msg(EVENT *evt) { register int flags; if (!check_dial()) { flags = MU_MESAG|MU_KEYBD; if (w_handle>=0 && Setup.value[0]) { evt->ev_mthicount = 0; evt->ev_mtlocount = (1000/Setup.freq)-9; flags |= MU_TIMER; if (Setup.freq==100) { int d; evt->ev_mflags |= MU_M2; evt->ev_mm2flags = evt->ev_mm2width = evt->ev_mm2height = 1; graf_mkstate(&evt->ev_mm2x,&evt->ev_mm2y,&d,&d); } } evt->ev_mflags |= flags; } return (flags); } void open_dial(OBJECT *tree,DIAINFO *info,int center) { register int dial = check_dial() ? FLY_DIAL : Setup.dial; open_dialog(tree,info,title,center,(center<0) ? FALSE : Setup.value[7],dial); wins[open_cnt] = info; open_cnt++; cycle(); } void close_dial(DIAINFO *info) { register int i; close_dialog(info,Setup.value[7]); for (i=0;iob_x = new_freq*max_pos/100; if (!new_freq) new_freq++; val_2_str(obj->ob_spec.tedinfo->te_ptext,new_freq); return(obj->ob_x); } int cdecl draw_help(PARMBLK *pb) { register int cnt_lines,start_line = first_line,delta_lines = (first_line>old_line) ? (first_line - old_line) : (old_line - first_line); register int x = pb->pb_x,y = pb->pb_y; int dummy; vst_height(x_handle,small_font,&dummy,&dummy,&dummy,&dummy); vst_effects(x_handle,0); if (!scroll || delta_lines>=(lines-3) || delta_lines<=0) cnt_lines = lines; else { register GRECT source; register int dy = delta_lines*line_h; source.g_x = x; source.g_y = y; source.g_w = pb->pb_w; source.g_h = pb->pb_h - dy; if (first_line>old_line) { source.g_y += dy; rc_scr_copy(&source,x,y,3); if (pb->pb_hc>pb->pb_h) start_line += lines - delta_lines; else { start_line += ((pb->pb_yc + pb->pb_hc - y)/line_h)-delta_lines; delta_lines++; } } else { rc_scr_copy(&source,x,y + dy,3); if (pb->pb_hc<=pb->pb_h) { start_line += (pb->pb_yc - y)/line_h; delta_lines++; } } start_line = max(start_line,first_line); cnt_lines = min(delta_lines,help_lines-start_line); if (start_line-first_line+cnt_lines>lines) cnt_lines = lines-start_line+first_line; } { register GRECT clear; register int index; y += (start_line-first_line)*line_h; clear.g_x = x; clear.g_y = y; clear.g_w = pb->pb_w; clear.g_h = cnt_lines*line_h; rc_intersect((GRECT *) &pb->pb_x,&clear); rc_clear(&clear); y += gr_sh>>1; for (index=cnt_lines;--index>=0;y += line_h) v_gtext(x_handle,x,y,help[start_line++]); } return(0); } int do_help(OBJECT *obj,int pos,int max_pos) { old_line = first_line; pos = min(max(pos,0),max_pos); first_line = (int) (((long) pos * (long) max_lines)/max_pos); obj->ob_y = (first_line*max_pos)/max_lines; if (old_line!=first_line) ob_draw_chg(&help_info,HELPVIEW,NULL,FAIL,FALSE); return(obj->ob_y); } void calc_vars() { zoom_x = z_x; zoom_y = z_y; zoom_w = max_w+1; zoom_h = max_h+1; if (Setup.shift<5) { p_faktor = 1<>1; il_offset = (planes*(p_faktor-1))<<1; if (Setup.mode==2) { if (planes<8) planes_tab(planes); else { long cpu; bytes = (planes+7)>>3; init_zoom_pixel(bytes,Setup.value[5]); if (get_cookie('_CPU',&cpu)==TRUE && cpu>=2) Supexec(cache_flush); } } else planes_tab(1); Setup.maske = ~(p_faktor-1); init_event(); } boolean check_dial() { switch (dialog_info.di_flag) { case OPENED: case FLYING: return(TRUE); } switch (winlupe_info.di_flag) { case OPENED: case FLYING: return(TRUE); } switch (help_info.di_flag) { case OPENED: case FLYING: return(TRUE); } switch (opt_info.di_flag) { case OPENED: case FLYING: return(TRUE); } return(FALSE); } void dialog() { if (!open_cnt) { register int obj; open_dial(dialog_tree,&dialog_info,TRUE); do { obj = X_Form_Do(&return_info, 0, init_msg, messag); if (obj==W_ABANDON) break; else if (obj!=W_CLOSED) return_info->di_tree[obj].ob_state &= ~SELECTED; if (return_info==&winlupe_info) dia_close(INFOBUT); else if (return_info==&help_info) { if (obj==HELPOK || obj==W_CLOSED) dia_close(HELP); else { scroll = TRUE; graf_rt_slide_box(help_tree,HELPPAR,HELPSLID,HELPUP,HELPDOWN,obj,VERT_SLIDER,SL_LINEAR,100,0,do_help); scroll = FALSE; } } else if (return_info==&opt_info) { switch (obj) { case INFOBUT: dia_open(info_tree,&winlupe_info,obj); break; case HELP: dia_open(help_tree,&help_info,obj); break; case PARENT: case SLIDE: case RIGHT: case LEFT: graf_rt_slide_box(opt_tree,PARENT,SLIDE,LEFT,RIGHT,obj,HOR_SLIDER,SL_LINEAR,100,0,do_slide); break; default: if (obj!=OPTCANCL) get_value(FALSE); else set_value(FALSE); calc_vars(); if (obj==OPTSET) { set_window(FALSE); ob_draw_chg(&opt_info,OPTSET,NULL,FAIL,FALSE); } else if (obj==SAVE) { if (dialog_info.di_flag>CLOSED) { get_value(TRUE); calc_vars(); } set_window(FALSE); save_info(); ob_draw_chg(&opt_info,SAVE,NULL,FAIL,FALSE); } else { close_dial(return_info); dialog_tree[SONSTIGE].ob_state &= ~DISABLED; ob_draw_chg(&dialog_info,SONSTIGE,NULL,FAIL,FALSE); if (obj!=OPTCANCL && Setup.dial==AUTO_DIAL) { switch (dialog_info.di_flag) { case OPENED: case FLYING: close_dial(&dialog_info); open_dial(dialog_tree,&dialog_info,FAIL); set_window(FALSE); break; } } } } } else { switch (obj) { case SONSTIGE: dialog_tree[SONSTIGE].ob_state |= DISABLED; ob_draw_chg(&dialog_info,SONSTIGE,NULL,FAIL,FALSE); open_dial(opt_tree,&opt_info,TRUE); break; case CANCEL: close_dial(return_info); set_value(FAIL); calc_vars(); set_window(FALSE); break; default: get_value(TRUE); calc_vars(); if (obj!=SET) close_dial(return_info); if (w_handle<0) { if (obj==OKAY) open_window(); } else set_window(obj==SET ? FALSE : TRUE); if (obj==SET) { ob_draw_chg(&dialog_info,SET,NULL,FAIL,FALSE); ob_draw_chg(&dialog_info,FAKTOR,NULL,FAIL,FALSE); } } } } while (open_cnt>0); dialog_tree[SONSTIGE].ob_state &= ~DISABLED; opt_tree[INFOBUT].ob_state &= ~DISABLED; opt_tree[HELP].ob_state &= ~DISABLED; open_cnt = 0; } else if (dialog_info.di_flag==WINDOW) { wind_set(dialog_info.di_handle,WF_TOP); messag_val = TRUE; } else if (dialog_info.di_flag==CLOSED) { open_dial(dialog_tree,&dialog_info,TRUE); messag_val = TRUE; } } void cycle() { if (_app) { if ((open_cnt + (w_handle>0 ? 1 : 0))<2) menu_ienable(menu,WECHSELN,0); else menu_ienable(menu,WECHSELN,1); } } void set_window(boolean top) { if (w_handle>=0 && !check_dial()) { if ((Setup.value[0] == TRUE) && (Setup.value[6] == TRUE)) mouse_pos(&zoom_x,&zoom_y); valid = FALSE; if (top==TRUE) wind_set(w_handle,WF_TOP); set_slider(TRUE,TRUE,TRUE); draw_window(&window); } } void planes_tab(int planes) { register long zoom; register char *mem = (char *) tab_v,**ind = ind_tab; register int act,faktor,pixel,plane = planes,bits = 8; int maske,index,bit,byte,shift = 8-plane,offset = p_faktor & 0x01; boolean flag = Setup.value[5]; { long cpu; init_zoom_var(); if (get_cookie('_CPU',&cpu)==TRUE && cpu>=2) Supexec(cache_flush); } maske = ((1<=0;) { pixel = ((byte & maske)^maske)>>shift; byte <<= plane; for (faktor=p_faktor;--faktor>=0;) { zoom <<= plane; zoom |= pixel; act += plane; while (act>=bits) *mem++ = (char) (zoom >> (act-=bits)); } } else for(bit=bits;(bit-=plane)>=0;) { pixel = (byte & maske)>>shift; byte <<= plane; for (faktor=p_faktor;--faktor>=0;) { zoom <<= plane; zoom |= pixel; act += plane; while (act>=bits) *mem++ = (char) (zoom >> (act-=bits)); } } mem += offset; } } void get_value(boolean flag) { if (flag==TRUE) { register int i; register char *num; Setup.shift = ob_radio(dialog_tree,PFAKTOR,FAIL) + 1; for (i=0;i<=8;i++) Setup.value[i] = (dialog_tree[Setup.object[i]].ob_state & SELECTED) ? TRUE : FALSE; num = dialog_tree[FAKTOR].ob_spec.tedinfo->te_ptext;i=0; while (*num) { i *= 10; i += (*num++) - 48; } if (i<2) Setup.faktor = 2; else if (i>32) Setup.faktor = 32; else Setup.faktor = i; val_2_str(dialog_tree[FAKTOR].ob_spec.tedinfo->te_ptext,Setup.faktor); p_faktor = Setup.faktor; } else { Setup.mode = ob_radio(opt_tree,PZMODE,FAIL); Setup.dial = (opt_tree[WIN].ob_state & SELECTED) ? AUTO_DIAL : FLY_DIAL; Setup.freq = new_freq; } } void val_2_str(char *d,int val) { register int div; if ((div=val/100)>0) { *d++ = (char) (div + 48); *d++ = (char) (((val -= div*100)/10) + 48); } else if ((div=val/10)>0) *d++ = (char) (div + 48); *d++ = (char) ((val % 10) + 48); *d = 0; } void set_value(boolean all) { if (all!=FALSE) { register int i; ob_radio(dialog_tree,PFAKTOR,Setup.shift-1); for(i=0;i<=8;i++) { if (Setup.value[i]) dialog_tree[Setup.object[i]].ob_state |= SELECTED; else dialog_tree[Setup.object[i]].ob_state &= ~SELECTED; } val_2_str(dialog_tree[FAKTOR].ob_spec.tedinfo->te_ptext,Setup.faktor); } if (all!=FAIL) { ob_radio(opt_tree,PZMODE,Setup.mode); opt_tree[WIN].ob_state &= ~SELECTED; opt_tree[FLY].ob_state &= ~SELECTED; if (Setup.dial==AUTO_DIAL) opt_tree[WIN].ob_state |= SELECTED; else opt_tree[FLY].ob_state |= SELECTED; do_slide(opt_tree+SLIDE,Setup.freq*10,opt_tree[PARENT].ob_width - opt_tree[SLIDE].ob_width); opt_info.di_tree = opt_tree; graf_arrows(&opt_info,0,PARENT,SLIDE,HOR_SLIDER,LEFT,RIGHT); } } boolean messag(EVENT *evt) { messag_val = FALSE; do_messag(evt); return(messag_val); } void exitus() { if (_app) { close_window(TRUE); close_dialog(&dialog_info,FALSE); close_dialog(&winlupe_info,FALSE); close_dialog(&help_info,FALSE); close_dialog(&opt_info,FALSE); messag_val = FAIL; app_flag = FALSE; } } void info() { if (winlupe_info.di_flag==CLOSED) { xdialog(info_tree,"",TRUE,Setup.value[7],FLY_DIAL); messag_val = W_INIT; } else if (winlupe_info.di_flag==WINDOW) { wind_set(winlupe_info.di_handle,WF_TOP); messag_val = TRUE; } } void do_messag(EVENT *event) { register int ev = event->ev_mwich,*msg = event->ev_mmgpbuf; if (ev & MU_MESAG) { switch (*msg) { case MN_SELECTED: menu_tnormal(menu,msg[3],1); switch (msg[4]) { case INFOBOX: info(); break; case SETUP: dialog(); return; case QUIT: exitus(); break; case OPEN: if (w_handle<0) { get_value(TRUE); open_window(); messag_val = TRUE; } break; case CLOSE: if (w_handle>=0) { close_window(TRUE); messag_val = TRUE; } break; case WECHSELN: cycle_window(); } break; case AP_TERM: case AC_CLOSE: close_window(FALSE); break; case AC_OPEN: dialog(); return; default: if (w_handle>=0 && msg[3]==w_handle) { long max,new_pos; int v_h,pos; switch(*msg) { case WM_REDRAW: draw_window((GRECT *) (msg+4)); break; case WM_TOPPED: wind_set(w_handle,WF_TOP); break; case WM_CLOSED: close_window(TRUE); break; case WM_FULLED: { if (old.g_x>=desk.g_x && old.g_y>=desk.g_y && old.g_w<=desk.g_w && old.g_h<=desk.g_h) { wind_size(&old); old.g_x = -1; } else { old = Setup.border; wind_size(&desk); } valid = FALSE; set_slider(TRUE,FALSE,TRUE); } break; case WM_ARROWED: if ((Setup.value[0]==FALSE) || (Setup.value[6]==FALSE)) { max = p_faktor; switch(msg[4]) { case WA_UPPAGE: case WA_DNPAGE: case WA_UPLINE: case WA_DNLINE: { max *= (long) w_max_h; v_h = TRUE; } break; default: { max *= (long) w_max_w; v_h = FALSE; } break; } switch(msg[4]) { case WA_UPPAGE: { zoom_y -= window.g_h; if (zoom_y<0) zoom_y=0; } break; case WA_DNPAGE: { zoom_y += window.g_h; l_min(&zoom_y,max); } break; case WA_UPLINE: { zoom_y -= p_faktor; if (zoom_y<0) zoom_y=0; } break; case WA_DNLINE: { zoom_y += p_faktor; l_min(&zoom_y,max); } break; case WA_LFPAGE: { zoom_x -= window.g_w; if (zoom_x<0) zoom_x=0; } break; case WA_RTPAGE: { zoom_x += window.g_w; l_min(&zoom_x,max); } break; case WA_LFLINE: { zoom_x -= p_faktor; if (zoom_x<0) zoom_x=0; } break; case WA_RTLINE: { zoom_x += p_faktor; l_min(&zoom_x,max); } break; } if (v_h == TRUE) { new_pos = 1000 * zoom_y; new_pos /= max; wind_set(w_handle,WF_VSLIDE,(int) new_pos); } else { new_pos = 1000 * zoom_x; new_pos /= max; wind_set(w_handle,WF_HSLIDE,(int) new_pos); } valid = FALSE; calc_xy(); draw_window(&window); } break; case WM_HSLID: if ((Setup.value[0] == FALSE) || (Setup.value[6]==FALSE)) { pos = msg[4]; wind_set(w_handle,WF_HSLIDE,pos); zoom_x=(int) (((long) (zoom_w-window.g_w)*pos)/1000); valid = FALSE; calc_xy(); draw_window(&window); } break; case WM_VSLID: if ((Setup.value[0] == FALSE) || (Setup.value[6]==FALSE)) { pos = msg[4]; wind_set(w_handle,WF_VSLIDE,pos); zoom_y=(int) (((long) (zoom_h-window.g_h)*pos)/1000); valid = FALSE; calc_xy(); draw_window(&window); } break; case WM_SIZED: case WM_MOVED: { wind_size((GRECT *) (msg+4)); old.g_x = -1; valid = FALSE; set_slider(TRUE,FALSE,*msg==WM_MOVED ? FALSE : TRUE); } break; } } } } if ((ev & MU_KEYBD) && !check_dial()) { int ascii = scan_2_ascii(event->ev_mkreturn,event->ev_mmokstate); if (event->ev_mmokstate & K_ALT) { if (ascii=='P') { dialog(); return; } } else if (event->ev_mmokstate & K_CTRL) { switch (ascii) { case 'I': info(); break; case 'Q': exitus(); break; case 'O': if (w_handle<0) { get_value(TRUE); open_window(); messag_val = TRUE; } break; case 'U': if (w_handle>=0) { close_window(TRUE); messag_val = TRUE; } break; case 'W': cycle_window(); } } } if (w_handle>=0 && (ev & (MU_TIMER|MU_M2))) { if (ev & MU_M2) { event->ev_mm2x = event->ev_mmox; event->ev_mm2y = event->ev_mmoy; } if (Setup.value[6]==TRUE) { long x,y; mouse_pos(&x,&y); if ((x!=zoom_x) || (y!=zoom_y)) { zoom_x = x;zoom_y = y; calc_xy(); if ((Setup.value[3]==TRUE) || (Setup.value[0]==FALSE) || (Setup.value[6]==FALSE)) slider_pos(); } } valid = FALSE; draw_window(&window); } } void init_event() { event.ev_mflags = MU_MESAG|MU_KEYBD; event.ev_mthicount = 0; if (w_handle>=0 && Setup.value[0]==TRUE) { event.ev_mflags |= MU_TIMER; event.ev_mtlocount = (1000/Setup.freq)-9; if (Setup.freq==100) { int d; event.ev_mflags |= MU_M2; event.ev_mm2flags = event.ev_mm2width = event.ev_mm2height = 1; graf_mkstate(&event.ev_mm2x,&event.ev_mm2y,&d,&d); } } if (_app) { menu_ienable(menu,OPEN,(w_handle>=0) ? 0 : 1); menu_ienable(menu,CLOSE,(w_handle>=0) ? 1 : 0); } } void wind_size(GRECT *new) { wind_calc(WC_WORK,ELEMENTE,new->g_x,new->g_y,new->g_w,new->g_h, &window.g_x,&window.g_y,&window.g_w,&window.g_h); if (Setup.value[2]==FALSE) wind_set(w_handle,WF_CURRXYWH,new->g_x,new->g_y,new->g_w,new->g_h); } void l_min(register long *var,register long val) { if ((*var)>val) *var = val; } void mouse_pos(register long *x,register long *y) { int sx,sy,dummy; graf_mkstate(&sx,&sy,&dummy,&dummy); *x = sx - (z_w>>1); *y = sy - (z_h>>1); if ((*x)<0) *x=0; else l_min(x,w_max_w); if ((*y)<0) *y=0; else l_min(y,w_max_h); z_x = (int) *x; z_y = (int) *y; if (Setup.shift<5) { *x <<= Setup.shift; *y <<= Setup.shift; } else { *x *= p_faktor; *y *= p_faktor; } } void scale(int *var,int omax,int nmax) { register long new=*var; new *= nmax; *var = (int) (new/omax); } void load_info() { char file[256]; int x_res = (max_w+16) & 0xfff0 , y_res = max_h+1; int w = desk.g_w>>1,h = (desk.g_h>>1)-4; dialog_tree = (OBJECT *) rs_trindex[DIALOG]; info_tree = (OBJECT *) rs_trindex[INFODIA]; help_tree = (OBJECT *) rs_trindex[HELPDIA]; opt_tree = (OBJECT *) rs_trindex[OPTIONEN]; menu = (OBJECT *) rs_trindex[MENU]; info_tree[DATE].ob_spec.tedinfo->te_ptext = __DATE__; strcpy(info_tree[VERSION].ob_spec.tedinfo->te_ptext+8,version); wind_calc(WC_WORK,ELEMENTE,desk.g_x+w,desk.g_y+h,w,h,&window.g_x,&window.g_y,&window.g_w,&window.g_h); { register OBJECT *obj = help_tree + HELPVIEW; line_h = gr_sh<<1; obj->ob_type = G_USERDEF; obj->ob_spec.userblk = &helpblk; lines = obj->ob_height/line_h; max_lines = help_lines - lines; obj = help_tree + HELPPAR; obj->ob_y++; obj->ob_height -= 2; help_tree[HELPSLID].ob_height = (int) (((long) obj->ob_height * (long) (lines-1))/help_lines); } strcpy(file,inf_file+2); if (shel_find(file)) { int handle = open(file,O_RDONLY); if (handle>0) { if (read(handle,&Setup,INFO_LEN) 0) { if (write(handle,&Setup,INFO_LEN)=0x0400) (void) menu_register(ap_id,entry); wind_update(END_UPDATE); init_event(); do { EvntMulti(&event); do_messag(&event); } while (app_flag==TRUE); if (_app) menu_bar(menu,0); exit_gem(); } else { form_alert(1,init_err); if (_app==0) for (;;) evnt_timer(0,32000); } } WIN_LUPE.APP .C [ -G ] .S [ -2 ] = START.S ; Startup-Code WIN_LUPE.C (WIN_RSC.C,WIN_PROT.H) HELP.C ; Hilfs-Texte IMAGE.C ; Images ZOOM.S ; Zoom-Routinen PCSTDLIB.LIB ; standard library PCEXTLIB.LIB ; extended library PCMNTBND.LIB ; MiNT/TOS library PCGEMLIB.LIB ; AES and VDI library E_GEM.LIB ; Extended GEM library #define T0OBJ 0 #define T1OBJ 62 #define T2OBJ 82 #define T3OBJ 94 #define T4OBJ 138 #define FREEBB 3 #define FREEIMG 3 #define FREESTR 136 char *rs_strings[] = { "Setup", "", "", " Darstellung ", "", "", "Echtzeitvergrerung", "Echtzeitschieber", "Mauszeiger mitvergrern", "Inverse Darstellung", " Optionen ", "", "", "Mauszeiger folgen", "Mauszeiger an-/ausschalten", "Fenster abrunden", "Kompatibilitts-Modus", "Grow/Shrink-Boxen zeichnen", " Vergrerung ", "", "", "* 2", "* 4", "* 8", "* 16", "03", "stufenloser Zoom (02 - 32) : __", "9", "Sonstiges", "", "", "Abbruch", "", "", "Setzen", "", "", "OK", "Freeware", "", "", "Information", "", "", "", "", "", "Die einzig wahre Lupe", "", "", "(es kann nur eine geben ...)", "", "", "gewidmet", "", "", "Eleni Avgetidou", "Version X.XX", "", "", "von", "", "", "Christian Grunenberg", "Traminerweg 5 - 7141 Beilstein", "", "", "E-Mail : Christian Grunenberg@S2 (MAUS)", "", "", "Christian_Grunenberg@S2.maus.de (Usenet)", "", "", "Ok", "Faster Than Light", "", "", "Hilfe", "", "", "Ok", "Sonstiges", "", "", " Dialoge ", "", "", "Window Dials", "Flying Dials", " Zoom-Modus ", "", "", "VDI-Transform", "Standard", "Pixel-Packed", "Interleaved", " Frequenz ", "", "", "-----", "", "", " Help ", "", "", "Informationen", "", "", "Setzen", "", "", "Abbruch", "", "", "Sichern", "", "", "OK", " WINLUPE", " Datei", " Fenster", " Information ... ^I", "-----------------------", " Desk Accessory 1 ", " Desk Accessory 2 ", " Desk Accessory 3 ", " Desk Accessory 4 ", " Desk Accessory 5 ", " Desk Accessory 6 ", " Setup ... \x07" "P", "-----------------", " Beenden ^Q", " ffnen ^O", " Schlieen ^U", "-----------------", " Wechseln ^W"}; int IMAG0[] = { 0x0, 0x3FF, 0x8000, 0x0, 0x0, 0x3FFF, 0xF000, 0x0, 0x1, 0xFFFF, 0xFE00, 0x0, 0x7, 0xFC00, 0x7F80, 0x0, 0xF, 0xC000, 0xFE0, 0x0, 0x1F, 0x1FC, 0x83F0, 0x0, 0x78, 0x1FE0, 0x378, 0x0, 0xF0, 0x7E00, 0x19E, 0x0, 0x1E1, 0xE000, 0x187, 0x0, 0x3C3, 0x8000, 0x183, 0x8000, 0x78E, 0x0, 0xC1, 0xC000, 0x71C, 0x78, 0xC0, 0xE000, 0xE30, 0x9E, 0xC0, 0x6000, 0x1E20, 0x7, 0x80CF, 0xF000, 0x1C62, 0x1, 0xE3FF, 0xF000, 0x1C44, 0x0, 0x7FFF, 0xF800, 0x3884, 0x0, 0x7FFF, 0xF800, 0x3882, 0x3, 0xFFFF, 0xF800, 0x3803, 0xF, 0xFFFF, 0xFC00, 0x7101, 0xC03F, 0xFFFF, 0xFFC0, 0x7000, 0xF87F, 0xFFFF, 0xFFF0, 0x7000, 0x3FFF, 0xFFFF, 0xFF18, 0x7000, 0x7FF, 0xFFFF, 0xFF84, 0x7000, 0xFFFF, 0xFFFF, 0xFFD0, 0x7001, 0xE07F, 0xFFFF, 0xFFF0, 0x7003, 0x3F, 0xFFFF, 0xFFE0, 0x3802, 0x1F, 0xFFFF, 0xFF84, 0x3802, 0x7, 0xFFFF, 0xFF38, 0x3804, 0x3, 0xFFFF, 0xFFE0, 0x1C08, 0x0, 0xFFFF, 0xFF80, 0x1C00, 0x0, 0x3FFF, 0xF800, 0x1C00, 0x0, 0x7FFF, 0xF000, 0xE00, 0x0, 0xF7FF, 0xF000, 0x600, 0x1, 0xE07F, 0xE000, 0x700, 0x3, 0x80FF, 0xC000, 0x380, 0x9F, 0xE3, 0x8000, 0x1C0, 0x78, 0xE3, 0x8000, 0xE0, 0x0, 0xEF, 0xC000, 0x70, 0x0, 0xDF, 0xE000, 0x18, 0x0, 0x1FF, 0xF000, 0xE, 0x0, 0x3FF, 0xF800, 0x7, 0xC000, 0xF9F, 0xFC00, 0x1, 0xFE00, 0x7E0F, 0xFE00, 0x0, 0x3FFF, 0xF007, 0xFF00, 0x0, 0x3FF, 0x8003, 0xFF80, 0x0, 0x0, 0x1, 0xFFC0, 0x0, 0x11, 0x1C30, 0xFFE0, 0x0, 0x1B, 0x1240, 0x7FF0, 0x0, 0x15, 0x1C58, 0x3FF8, 0x0, 0x11, 0x1048, 0x1FF8, 0x0, 0x11, 0x5130, 0xFF8, 0x0, 0x0, 0x0, 0x7F0, 0x0, 0x0, 0x0, 0x3F0, 0x0, 0x0, 0x0, 0x1C0, 0x0, 0x0, 0x0, 0x0}; int IMAG1[] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0xB8, 0xE800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x496F, 0xFFFF, 0xF0FF, 0xFC00, 0xFF8E, 0x246B, 0x7FFF, 0xFFFE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0xBFFF, 0xC03F, 0xF000, 0x1F1F, 0x0, 0x4DF, 0xFFFA, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x0, 0x3F, 0x800F, 0xE000, 0xE1F, 0x0, 0x0, 0x7F2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1F, 0x7, 0xC000, 0x51F, 0x0, 0x0, 0x3E0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x0, 0x1F, 0x7, 0xC000, 0x50E, 0x0, 0x0, 0x3E2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x0, 0xF, 0x8003, 0xE000, 0x540, 0x0, 0x0, 0x3E0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x0, 0xF, 0x8003, 0xE000, 0x1010, 0x0, 0x0, 0x3E0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x0, 0x7, 0xC001, 0xF000, 0x0, 0x0, 0x0, 0x3E0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x0, 0x7, 0xC001, 0xF000, 0x4104, 0x0, 0x0, 0x3E0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE000, 0x0, 0x7, 0xC001, 0xF000, 0x540, 0x0, 0x0, 0x3E0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xA000, 0x0, 0x3, 0xE000, 0xF800, 0x9292, 0x0, 0x0, 0x3E0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xB000, 0x0, 0x3, 0xE000, 0xF800, 0x280, 0x0, 0x0, 0x3E0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x1C00, 0x0, 0x3, 0xE000, 0xF801, 0x2C69, 0xC, 0xF00, 0x3E0, 0x7, 0xF807, 0xF00C, 0x7800, 0xBFC, 0x7EA, 0x0, 0x1, 0xF001, 0x7C96, 0x3018, 0xD23C, 0x1FC0, 0x3E0, 0x0, 0xF801, 0xF03C, 0xCE00, 0xFFF, 0x1C00, 0x0, 0x1, 0xF001, 0x7C01, 0x2C79, 0xFC, 0x3FE0, 0x3E0, 0x0, 0x7800, 0xF0FD, 0x380, 0x1C1F, 0xB000, 0x0, 0x1, 0xF802, 0x7E00, 0x2F0, 0x3FC, 0x63E0, 0x3E0, 0x0, 0x7800, 0xF3FE, 0x1C0, 0x380F, 0xA000, 0x0, 0x0, 0xF802, 0x3E00, 0x9293, 0x7C, 0x81F0, 0x3E0, 0x0, 0x7800, 0xF07E, 0x1E0, 0x7007, 0xE000, 0x0, 0x0, 0xF802, 0x3E00, 0x541, 0x3D, 0xF0, 0x3E0, 0x0, 0x7800, 0xF03C, 0xE0, 0x7003, 0xC000, 0x0, 0x0, 0x7C04, 0x1F01, 0x4107, 0x3E, 0xF0, 0x3E0, 0x0, 0x7800, 0xF03C, 0xF0, 0xE001, 0xE000, 0x0, 0x0, 0x7C04, 0x1F01, 0x7, 0x3C, 0xF0, 0x3E0, 0x0, 0x7800, 0xF03C, 0x70, 0xE001, 0xE000, 0x0, 0x0, 0x7C04, 0x1F01, 0x101F, 0x3C, 0xF0, 0x3E0, 0x0, 0x7800, 0xF03C, 0x79, 0xE003, 0xF000, 0x0, 0x0, 0x3E08, 0xF82, 0x54F, 0x3C, 0xF0, 0x3E0, 0x0, 0x7800, 0xF03C, 0x79, 0xFFFF, 0xF000, 0x0, 0x0, 0x3E08, 0xF82, 0x10F, 0x3C, 0xF0, 0x3E0, 0x0, 0x7800, 0xF03C, 0x79, 0xE000, 0x0, 0x0, 0x0, 0x1F10, 0x7C4, 0x10F, 0x3C, 0xF0, 0x3E0, 0x0, 0x7800, 0xF03C, 0x79, 0xE000, 0x4000, 0x0, 0x0, 0x1F10, 0x7C4, 0xF, 0x3C, 0xF0, 0x3E0, 0x0, 0x7800, 0xF03C, 0x79, 0xE000, 0x0, 0x0, 0x0, 0x1F10, 0x7C4, 0x10F, 0x3C, 0xF0, 0x3E0, 0x0, 0x7800, 0xF03C, 0x79, 0xE000, 0x4000, 0x0, 0x0, 0xFA0, 0x3E8, 0xF, 0x3C, 0xF0, 0x3E0, 0x0, 0x7800, 0xF03C, 0x79, 0xE000, 0x0, 0x0, 0x0, 0xFA0, 0x3E8, 0xF, 0x3C, 0xF0, 0x3E0, 0x0, 0x7800, 0xF03C, 0x79, 0xF000, 0x0, 0x0, 0x0, 0xFA0, 0x3E8, 0x10F, 0x3C, 0xF0, 0x3E0, 0x0, 0x7800, 0xF03C, 0x78, 0xF000, 0x1000, 0x0, 0x0, 0x7C0, 0x1F0, 0xF, 0x3C, 0xF0, 0x3E0, 0x2, 0x7800, 0xF03C, 0x70, 0xF800, 0x2000, 0x0, 0x0, 0x7C0, 0x1F0, 0xF, 0x3C, 0xF0, 0x3E0, 0x4, 0x7800, 0xF03E, 0xF0, 0x7800, 0x4000, 0x0, 0x0, 0x380, 0xE0, 0xF, 0x3C, 0xF0, 0x3E0, 0xC, 0x7C01, 0xF03E, 0xE0, 0x7E01, 0xC000, 0x0, 0x0, 0x380, 0xE0, 0xF, 0x3C, 0xF0, 0x3E0, 0x18, 0x3E03, 0xFC3F, 0x1E0, 0x3F87, 0x8000, 0x0, 0x0, 0x380, 0xE0, 0xF, 0x3C, 0xF0, 0x7F8, 0x78, 0x3FFE, 0xFC3F, 0x1C0, 0x1FFF, 0x0, 0x0, 0x26, 0xFF00, 0x40, 0x1F, 0x807E, 0x1F8, 0xFFF, 0xFFF0, 0x1FFC, 0xF03D, 0x8380, 0xFFE, 0x0, 0x44, 0xCEFF, 0xFF00, 0x40, 0xFF, 0xE3FF, 0x87FC, 0x7FFF, 0xFFF0, 0x7F0, 0xC03C, 0xC600, 0x3F8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3C, 0xB800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3C, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3C, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3C, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3C, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3D, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3D, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3E, 0x3000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2BC, 0x1E90, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7E, 0x3000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3FF, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; int IMAG2[] = { 0x0, 0x78, 0x0, 0x0, 0x0, 0x0, 0xA6, 0x0, 0x0, 0x0, 0x0, 0x121, 0xC000, 0x1C00, 0x0, 0x0, 0x210, 0x3000, 0x2600, 0x0, 0x0, 0x410, 0xE00, 0x4200, 0x0, 0x0, 0x810, 0x180, 0x8200, 0x0, 0x0, 0x1008, 0x71, 0x400, 0x0, 0x0, 0x2008, 0xA, 0x800, 0x0, 0x0, 0x4004, 0x4, 0x1000, 0x0, 0x0, 0x8004, 0x8, 0x2000, 0x0, 0x1, 0x184, 0x10, 0x4000, 0x0, 0x2, 0x382, 0x20, 0x8000, 0x0, 0x4, 0x382, 0x41, 0x4000, 0x0, 0x8, 0x3C1, 0x82, 0x2000, 0x0, 0x10, 0x1C1, 0x104, 0x2000, 0x0, 0x20, 0x38E1, 0x108, 0x2000, 0x0, 0x40, 0x78F0, 0x8190, 0x1000, 0x0, 0x80, 0xF070, 0x80E0, 0x1000, 0x0, 0x101, 0xE070, 0x4000, 0x800, 0x0, 0x203, 0xC070, 0x4000, 0x800, 0x0, 0x603, 0x8020, 0x4000, 0x800, 0x0, 0x507, 0x60, 0x2000, 0x400, 0x0, 0x50E, 0x3E0, 0x3000, 0x400, 0x0, 0x508, 0xFC0, 0x4E00, 0x200, 0x0, 0x480, 0x1F80, 0x8180, 0x200, 0x0, 0x480, 0x1F01, 0x70, 0x200, 0x0, 0x440, 0x3E02, 0xC, 0x100, 0x0, 0x440, 0x3C04, 0x3, 0x8100, 0x0, 0x440, 0x3808, 0x0, 0x6080, 0x0, 0x420, 0x7010, 0x100, 0x1C80, 0x0, 0x420, 0xE020, 0x80, 0x380, 0x0, 0x410, 0xC040, 0xE0, 0x180, 0x0, 0x411, 0x8080, 0xF0, 0x300, 0x0, 0x413, 0x100, 0xF0, 0x600, 0x0, 0x408, 0x200, 0x70, 0xC00, 0x0, 0x408, 0x400, 0x3C0, 0x1800, 0x0, 0x404, 0x801, 0xC7C0, 0x3000, 0x0, 0x404, 0x1003, 0xEF80, 0x6000, 0x0, 0x404, 0x2007, 0xFF00, 0xC000, 0x0, 0x402, 0x400F, 0xDF01, 0x8000, 0x0, 0x402, 0x8070, 0x3E03, 0x0, 0x0, 0x401, 0x0, 0x7806, 0x0, 0x0, 0x402, 0x8000, 0x600C, 0x0, 0x0, 0x404, 0x7000, 0xC018, 0x0, 0x0, 0x408, 0xE00, 0x8030, 0x0, 0x0, 0x410, 0x1C0, 0x6A, 0xAAAA, 0xA800, 0x420, 0x38, 0xD5, 0x5555, 0x5400, 0x440, 0x7, 0x1AA, 0xAAAA, 0xAA00, 0x480, 0x0, 0xE355, 0x5555, 0x5500, 0x500, 0x0, 0x1EAA, 0xAAAA, 0xAA80, 0x600, 0x0, 0xD55, 0x5555, 0x5540, 0x7FF, 0xFFFF, 0xFAAA, 0xAAAA, 0xAA80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; long rs_frstr[] = { 0}; BITBLK rs_bitblk[] = { (int *)0L, 8, 55, 0, 0, 1, (int *)1L, 28, 62, 0, 0, 1, (int *)2L, 10, 54, 0, 0, 1}; long rs_frimg[] = { 0}; ICONBLK rs_iconblk[] = { 0}; TEDINFO rs_tedinfo[] = { (char *)0L, (char *)1L, (char *)2L, 3, 6, 2, 0x1100, 0x0, -1, 6,1, (char *)3L, (char *)4L, (char *)5L, 3, 6, 0, 0x1180, 0x0, -1, 14,1, (char *)10L, (char *)11L, (char *)12L, 3, 6, 0, 0x1180, 0x0, -1, 11,1, (char *)18L, (char *)19L, (char *)20L, 3, 6, 0, 0x1180, 0x0, -1, 15,1, (char *)25L, (char *)26L, (char *)27L, 3, 6, 2, 0x1180, 0x0, 0, 3,32, (char *)28L, (char *)29L, (char *)30L, 5, 6, 2, 0x1101, 0x0, -1, 10,1, (char *)31L, (char *)32L, (char *)33L, 3, 6, 2, 0x1101, 0x0, -2, 8,1, (char *)34L, (char *)35L, (char *)36L, 3, 6, 2, 0x1101, 0x0, -2, 7,1, (char *)38L, (char *)39L, (char *)40L, 5, 6, 0, 0x1180, 0x0, -1, 9,1, (char *)41L, (char *)42L, (char *)43L, 3, 6, 2, 0x1100, 0x0, -1, 12,1, (char *)44L, (char *)45L, (char *)46L, 5, 6, 0, 0x1180, 0x0, -1, 1,1, (char *)47L, (char *)48L, (char *)49L, 3, 6, 0, 0x1180, 0x0, -1, 22,1, (char *)50L, (char *)51L, (char *)52L, 5, 6, 0, 0x1180, 0x0, -1, 29,1, (char *)53L, (char *)54L, (char *)55L, 5, 6, 0, 0x1180, 0x0, -1, 9,1, (char *)57L, (char *)58L, (char *)59L, 5, 6, 0, 0x1180, 0x0, -1, 13,1, (char *)60L, (char *)61L, (char *)62L, 5, 6, 0, 0x1180, 0x0, -1, 4,1, (char *)64L, (char *)65L, (char *)66L, 5, 6, 0, 0x1180, 0x0, -1, 31,1, (char *)67L, (char *)68L, (char *)69L, 5, 6, 0, 0x1180, 0x0, -1, 41,1, (char *)70L, (char *)71L, (char *)72L, 5, 6, 0, 0x1180, 0x0, -1, 41,1, (char *)74L, (char *)75L, (char *)76L, 5, 6, 0, 0x1180, 0x0, -1, 18,1, (char *)77L, (char *)78L, (char *)79L, 3, 6, 2, 0x1100, 0x0, -1, 6,1, (char *)81L, (char *)82L, (char *)83L, 3, 6, 2, 0x1100, 0x0, -1, 10,1, (char *)84L, (char *)85L, (char *)86L, 3, 6, 0, 0x1180, 0x0, -1, 10,1, (char *)89L, (char *)90L, (char *)91L, 3, 6, 0, 0x1180, 0x0, -1, 13,1, (char *)96L, (char *)97L, (char *)98L, 3, 6, 0, 0x1180, 0x0, -1, 11,1, (char *)99L, (char *)100L, (char *)101L, 3, 6, 2, 0x1180, 0x0, -1, 6,1, (char *)102L, (char *)103L, (char *)104L, 5, 6, 2, 0x1101, 0x0, -1, 7,1, (char *)105L, (char *)106L, (char *)107L, 5, 6, 2, 0x1101, 0x0, -1, 14,1, (char *)108L, (char *)109L, (char *)110L, 3, 6, 2, 0x1101, 0x0, -2, 7,1, (char *)111L, (char *)112L, (char *)113L, 3, 6, 2, 0x1101, 0x0, -2, 8,1, (char *)114L, (char *)115L, (char *)116L, 3, 6, 2, 0x1101, 0x0, -2, 8,1}; OBJECT rs_object[] = { -1, 1, 61, G_BOX, NONE, OUTLINED, 0x21101L, 0,0, 38,22, 2, -1, -1, (0x9<<8)+G_IBOX, SELECTABLE, NORMAL, 0x57011180L, 36,0, 2,1, 3, -1, -1, G_TEXT, NONE, NORMAL, 0x0L, 2,1, 5,1, 4, -1, -1, (0x4<<8)+G_IBOX, NONE, NORMAL, 0x11100L, 1,2, 36,256, 19, 5, 17, G_BOX, NONE, NORMAL, 0x11180L, 1,3, 36,517, 6, -1, -1, (0x2<<8)+G_BOXTEXT, NONE, NORMAL, 0x1L, 1,0, 13,1, 7, -1, -1, G_IMAGE, NONE, NORMAL, 0x0L, 28,1280, 16384,14336, 8, -1, -1, (0x6<<8)+G_IBOX, SELECTABLE, NORMAL, 0x57011100L, 1,1, 2,1, 10, 9, 9, G_STRING, NONE, NORMAL, 0x6L, 4,1, 20,1, 8, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x45011100L, 0,0, 1,1, 11, -1, -1, (0x6<<8)+G_IBOX, SELECTABLE, NORMAL, 0x57011100L, 1,2, 2,1, 13, 12, 12, G_STRING, NONE, NORMAL, 0x7L, 4,2, 16,1, 11, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x5A011100L, 4,0, 1,1, 14, -1, -1, (0x6<<8)+G_IBOX, SELECTABLE, NORMAL, 0x57011100L, 1,3, 2,1, 16, 15, 15, G_STRING, NONE, NORMAL, 0x8L, 4,3, 24,1, 14, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x56011100L, 14,0, 1,1, 17, -1, -1, (0x6<<8)+G_IBOX, SELECTABLE, NORMAL, 0x57011100L, 1,4, 2,1, 4, 18, 18, G_STRING, NONE, NORMAL, 0x9L, 4,4, 19,1, 17, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x49011100L, 0,0, 1,1, 36, 20, 34, G_BOX, NONE, NORMAL, 0x11180L, 1,9, 36,518, 21, -1, -1, (0x2<<8)+G_BOXTEXT, NONE, NORMAL, 0x2L, 1,0, 10,1, 22, -1, -1, (0x6<<8)+G_IBOX, SELECTABLE, NORMAL, 0x57011100L, 1,1, 2,1, 24, 23, 23, G_STRING, NONE, NORMAL, 0xDL, 4,1, 17,1, 22, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x46011100L, 11,0, 1,1, 25, -1, -1, (0x6<<8)+G_IBOX, SELECTABLE, NORMAL, 0x57011100L, 1,2, 2,1, 27, 26, 26, G_STRING, NONE, NORMAL, 0xEL, 4,2, 26,1, 25, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x55011100L, 16,0, 1,1, 28, -1, -1, (0x6<<8)+G_IBOX, SELECTABLE, NORMAL, 0x57011100L, 1,3, 2,1, 30, 29, 29, G_STRING, NONE, NORMAL, 0xFL, 4,3, 16,1, 28, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x52011100L, 10,0, 1,1, 31, -1, -1, (0x6<<8)+G_IBOX, SELECTABLE, NORMAL, 0x57011100L, 1,4, 2,1, 33, 32, 32, G_STRING, NONE, NORMAL, 0x10L, 4,4, 21,1, 31, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x4B011100L, 0,0, 1,1, 34, -1, -1, (0x6<<8)+G_IBOX, SELECTABLE, NORMAL, 0x57011100L, 1,5, 2,1, 19, 35, 35, G_STRING, NONE, NORMAL, 0x11L, 4,5, 26,1, 34, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x67011100L, 0,0, 1,1, 53, 37, 51, G_BOX, NONE, NORMAL, 0x11180L, 1,16, 36,771, 38, -1, -1, (0x2<<8)+G_BOXTEXT, NONE, NORMAL, 0x3L, 1,0, 14,1, 39, -1, -1, (0x7<<8)+G_IBOX, SELECTABLE|RBUTTON, NORMAL, 0x57011100L, 1,1, 2,1, 41, 40, 40, G_STRING, NONE, NORMAL, 0x15L, 4,1, 3,1, 39, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x32011100L, 2,0, 1,1, 42, -1, -1, (0x7<<8)+G_IBOX, SELECTABLE|RBUTTON, NORMAL, 0x57011100L, 10,1, 2,1, 44, 43, 43, G_STRING, NONE, NORMAL, 0x16L, 13,1, 3,1, 42, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x34011100L, 2,0, 1,1, 45, -1, -1, (0x7<<8)+G_IBOX, SELECTABLE|RBUTTON, NORMAL, 0x57011100L, 19,1, 2,1, 47, 46, 46, G_STRING, NONE, NORMAL, 0x17L, 22,1, 3,1, 45, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x38011100L, 2,0, 1,1, 48, -1, -1, (0x7<<8)+G_IBOX, SELECTABLE|RBUTTON, NORMAL, 0x57011100L, 28,1, 2,1, 50, 49, 49, G_STRING, NONE, NORMAL, 0x18L, 31,1, 4,1, 48, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x31011100L, 2,0, 1,1, 51, -1, -1, (0x7<<8)+G_IBOX, SELECTABLE|RBUTTON, NORMAL, 0x57011100L, 1,258, 2,1, 36, 52, 52, G_FTEXT, EDITABLE, NORMAL, 0x4L, 4,258, 31,1, 51, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x6D011100L, 15,0, 1,1, 55, 54, 54, G_BOXTEXT, SELECTABLE|EXIT, OUTLINED|SHADOWED, 0x5L, 1,20, 8,513, 53, -1, -1, (0x5<<8)+G_IBOX, NONE, NORMAL, 0x4E011100L, 2,256, 1792,1, 57, 56, 56, G_BOXTEXT, SELECTABLE|EXIT, NORMAL, 0x6L, 11,20, 8,513, 55, -1, -1, (0x5<<8)+G_IBOX, NONE, NORMAL, 0x41011100L, 1024,256, 1,1, 59, 58, 58, G_BOXTEXT, SELECTABLE|EXIT, NORMAL, 0x7L, 20,20, 8,513, 57, -1, -1, (0x5<<8)+G_IBOX, NONE, NORMAL, 0x54011100L, 3,256, 1,1, 61, 60, 60, G_BUTTON, SELECTABLE|DEFAULT|EXIT, NORMAL, 0x25L, 29,20, 8,513, 59, -1, -1, (0x5<<8)+G_IBOX, NONE, NORMAL, 0x4F011100L, 3,256, 1,1, 0, -1, -1, G_TEXT, LASTOB, NORMAL, 0x8L, 30,1, 6,1, -1, 1, 18, G_BOX, NONE, OUTLINED, 0x21101L, 0,0, 32,22, 2, -1, -1, (0x9<<8)+G_IBOX, SELECTABLE, NORMAL, 0x57011180L, 30,0, 2,1, 3, -1, -1, G_TEXT, NONE, NORMAL, 0x9L, 2,1, 11,1, 4, -1, -1, G_TEXT, NONE, NORMAL, 0xAL, 1557,1, 9,1, 5, -1, -1, (0x4<<8)+G_IBOX, NONE, NORMAL, 0x11100L, 1,2, 30,1, 6, -1, -1, G_IMAGE, NONE, NORMAL, 0x1L, 1793,3, 28,3587, 7, -1, -1, G_TEXT, NONE, NORMAL, 0xBL, 1029,7, 21,1, 8, -1, -1, G_TEXT, NONE, NORMAL, 0xCL, 1029,8, 21,3584, 9, -1, -1, G_TEXT, NONE, NORMAL, 0xDL, 13,9, 6,3584, 10, -1, -1, (0xD<<8)+G_STRING, NONE, CHECKED, 0x38L, 1032,778, 15,1, 11, -1, -1, G_TEXT, NONE, NORMAL, 0xEL, 1035,12, 9,1, 12, -1, -1, G_TEXT, NONE, NORMAL, 0xFL, 1806,13, 514,1, 13, -1, -1, (0xD<<8)+G_STRING, NONE, SHADOWED, 0x3FL, 6,14, 20,1, 14, -1, -1, G_TEXT, NONE, NORMAL, 0x10L, 1540,783, 1046,1, 15, -1, -1, G_TEXT, NONE, NORMAL, 0x11L, 1,17, 30,1, 16, -1, -1, G_TEXT, NONE, NORMAL, 0x12L, 1,18, 30,1, 18, 17, 17, G_BUTTON, SELECTABLE|DEFAULT|EXIT, NORMAL, 0x49L, 1034,20, 11,513, 16, -1, -1, (0x5<<8)+G_IBOX, NONE, NORMAL, 0x4F011100L, 1028,256, 1,1, 0, 19, 19, (0x4<<8)+G_IBOX, NONE, NORMAL, 0x11100L, 3,6, 26,2560, 18, -1, -1, G_TEXT, LASTOB, NORMAL, 0x13L, 1797,256, 1548,2048, -1, 1, 10, G_BOX, NONE, OUTLINED, 0x21101L, 0,0, 36,21, 2, -1, -1, (0x9<<8)+G_IBOX, SELECTABLE, NORMAL, 0x57011180L, 34,0, 2,1, 3, -1, -1, G_TEXT, NONE, NORMAL, 0x14L, 2,1, 6,1, 4, -1, -1, (0x4<<8)+G_IBOX, NONE, NORMAL, 0x11100L, 1,2, 34,1, 6, 5, 5, G_BOX, NONE, NORMAL, 0xFF1101L, 1793,3, 286,15, 4, -1, -1, G_IBOX, NONE, NORMAL, 0x11100L, 256,0, 30,15, 7, -1, -1, (0x11<<8)+G_IBOX, TOUCHEXIT, OUTLINED, 0x11100L, 288,3, 2,1, 9, 8, 8, G_BOX, TOUCHEXIT, NORMAL, 0xFF1141L, 288,4, 2,13, 7, -1, -1, G_BOX, TOUCHEXIT, NORMAL, 0xFF1100L, 0,0, 2,1, 10, -1, -1, (0x12<<8)+G_IBOX, TOUCHEXIT, OUTLINED, 0x11100L, 288,17, 2,1, 0, 11, 11, G_BUTTON, SELECTABLE|DEFAULT|EXIT, NORMAL, 0x50L, 1036,19, 11,513, 10, -1, -1, (0x5<<8)+G_IBOX, LASTOB, NORMAL, 0x4F011100L, 1028,0, 1,1, -1, 1, 42, G_BOX, NONE, OUTLINED, 0x21101L, 0,0, 38,18, 2, -1, -1, (0x9<<8)+G_IBOX, SELECTABLE, NORMAL, 0x57011180L, 36,0, 2,1, 3, -1, -1, G_IMAGE, NONE, NORMAL, 0x2L, 27,1024, 20480,13824, 4, -1, -1, G_TEXT, NONE, NORMAL, 0x15L, 2,1, 9,1, 5, -1, -1, (0x4<<8)+G_IBOX, NONE, NORMAL, 0x11100L, 1,2, 25,256, 13, 6, 11, G_BOX, NONE, NORMAL, 0x11180L, 1,4, 36,514, 7, -1, -1, (0x2<<8)+G_BOXTEXT, NONE, NORMAL, 0x16L, 1,0, 9,1, 8, -1, -1, (0x7<<8)+G_IBOX, SELECTABLE|RBUTTON, NORMAL, 0x57011100L, 1,1, 2,1, 10, 9, 9, G_STRING, NONE, NORMAL, 0x57L, 4,1, 12,1, 8, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x57011100L, 0,0, 1,1, 11, -1, -1, (0x7<<8)+G_IBOX, SELECTABLE|RBUTTON, NORMAL, 0x57011100L, 19,1, 2,1, 5, 12, 12, G_STRING, NONE, NORMAL, 0x58L, 22,1, 12,1, 11, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x46011100L, 0,0, 1,1, 27, 14, 25, G_BOX, NONE, NORMAL, 0x11180L, 1,7, 36,771, 15, -1, -1, (0x2<<8)+G_BOXTEXT, NONE, NORMAL, 0x17L, 1,0, 12,1, 16, -1, -1, (0x7<<8)+G_IBOX, SELECTABLE|RBUTTON, NORMAL, 0x57011100L, 1,1, 2,1, 18, 17, 17, G_STRING, NONE, NORMAL, 0x5CL, 4,1, 13,1, 16, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x56011100L, 0,0, 1,1, 19, -1, -1, (0x7<<8)+G_IBOX, SELECTABLE|RBUTTON, NORMAL, 0x57011100L, 19,1, 2,1, 21, 20, 20, G_STRING, NONE, NORMAL, 0x5DL, 22,1, 8,1, 19, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x74011100L, 1,0, 1,1, 22, -1, -1, (0x7<<8)+G_IBOX, SELECTABLE|RBUTTON, NORMAL, 0x57011100L, 1,258, 2,1, 24, 23, 23, G_STRING, NONE, NORMAL, 0x5EL, 4,258, 12,1, 22, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x58011100L, 2,0, 1,1, 25, -1, -1, (0x7<<8)+G_IBOX, SELECTABLE|RBUTTON, NORMAL, 0x57011100L, 19,258, 2,1, 13, 26, 26, G_STRING, NONE, NORMAL, 0x5FL, 22,258, 11,1, 25, -1, -1, (0x8<<8)+G_IBOX, NONE, NORMAL, 0x6E011100L, 1,0, 1,1, 33, 28, 32, G_BOX, NONE, NORMAL, 0x11180L, 1,267, 36,770, 29, -1, -1, (0x2<<8)+G_BOXTEXT, NONE, NORMAL, 0x18L, 1,0, 10,1, 30, -1, -1, (0xF<<8)+G_IBOX, TOUCHEXIT, OUTLINED, 0x57011100L, 1,1, 2,1, 32, 31, 31, G_BOX, TOUCHEXIT, NORMAL, 0xFF1141L, 4,1, 28,1, 30, -1, -1, G_BOXTEXT, TOUCHEXIT, NORMAL, 0x19L, 10,0, 5,1, 27, -1, -1, (0x10<<8)+G_IBOX, TOUCHEXIT, OUTLINED, 0x57011100L, 33,1, 2,1, 34, -1, -1, (0xC<<8)+G_BOXTEXT, SELECTABLE|EXIT, OUTLINED|SHADOWED, 0x1AL, 2,14, 10,513, 36, 35, 35, G_BOXTEXT, SELECTABLE|EXIT, OUTLINED|SHADOWED, 0x1BL, 14,14, 10,513, 34, -1, -1, (0x5<<8)+G_IBOX, NONE, NORMAL, 0x49011100L, 0,0, 1792,1, 38, 37, 37, G_BOXTEXT, SELECTABLE|EXIT, NORMAL, 0x1CL, 26,14, 10,513, 36, -1, -1, (0x5<<8)+G_IBOX, NONE, NORMAL, 0x5A011100L, 5,256, 1,1, 40, 39, 39, G_BOXTEXT, SELECTABLE|EXIT, NORMAL, 0x1DL, 2,16, 10,513, 38, -1, -1, (0x5<<8)+G_IBOX, NONE, NORMAL, 0x41011100L, 1025,256, 1,1, 42, 41, 41, G_BOXTEXT, SELECTABLE|EXIT, NORMAL, 0x1EL, 14,16, 10,513, 40, -1, -1, (0x5<<8)+G_IBOX, NONE, NORMAL, 0x53011100L, 1025,256, 1,1, 0, 43, 43, G_BUTTON, SELECTABLE|DEFAULT|EXIT, NORMAL, 0x75L, 26,16, 10,513, 42, -1, -1, (0x5<<8)+G_IBOX, LASTOB, NORMAL, 0x4F011100L, 4,256, 1,1, -1, 1, 6, G_IBOX, NONE, NORMAL, 0x0L, 0,0, 80,25, 6, 2, 2, G_BOX, NONE, NORMAL, 0x1100L, 0,0, 80,769, 1, 3, 5, G_IBOX, NONE, NORMAL, 0x0L, 2,0, 25,769, 4, -1, -1, G_TITLE, NONE, NORMAL, 0x76L, 0,0, 9,769, 5, -1, -1, G_TITLE, NONE, NORMAL, 0x77L, 9,0, 7,769, 2, -1, -1, G_TITLE, NONE, NORMAL, 0x78L, 16,0, 9,769, 0, 7, 20, G_IBOX, NONE, NORMAL, 0x0L, 0,769, 80,19, 16, 8, 15, G_BOX, NONE, NORMAL, 0xFF1100L, 2,0, 23,8, 9, -1, -1, G_STRING, NONE, NORMAL, 0x79L, 0,0, 23,1, 10, -1, -1, G_STRING, NONE, DISABLED, 0x7AL, 0,1, 23,1, 11, -1, -1, G_STRING, NONE, NORMAL, 0x7BL, 0,2, 23,1, 12, -1, -1, G_STRING, NONE, NORMAL, 0x7CL, 0,3, 23,1, 13, -1, -1, G_STRING, NONE, NORMAL, 0x7DL, 0,4, 23,1, 14, -1, -1, G_STRING, NONE, NORMAL, 0x7EL, 0,5, 23,1, 15, -1, -1, G_STRING, NONE, NORMAL, 0x7FL, 0,6, 23,1, 7, -1, -1, G_STRING, NONE, NORMAL, 0x80L, 0,7, 23,1, 20, 17, 19, G_BOX, NONE, NORMAL, 0xFF1100L, 11,0, 17,3, 18, -1, -1, G_STRING, NONE, NORMAL, 0x81L, 0,0, 17,1, 19, -1, -1, G_STRING, NONE, DISABLED, 0x82L, 0,1, 17,1, 16, -1, -1, G_STRING, NONE, NORMAL, 0x83L, 0,2, 17,1, 6, 21, 24, G_BOX, NONE, NORMAL, 0xFF1100L, 18,0, 17,4, 22, -1, -1, G_STRING, NONE, NORMAL, 0x84L, 0,0, 17,1, 23, -1, -1, G_STRING, NONE, NORMAL, 0x85L, 0,1, 17,1, 24, -1, -1, G_STRING, NONE, DISABLED, 0x86L, 0,2, 17,1, 20, -1, -1, G_STRING, LASTOB, NORMAL, 0x87L, 0,3, 17,1}; long rs_trindex[] = { 0L, 62L, 82L, 94L, 138L}; struct foobar { int dummy; int *image; } rs_imdope[] = { 0, &IMAG0[0], 0, &IMAG1[0], 0, &IMAG2[0]}; #define NUM_STRINGS 136 #define NUM_FRSTR 0 #define NUM_IMAGES 3 #define NUM_BB 3 #define NUM_FRIMG 0 #define NUM_IB 0 #define NUM_TI 31 #define NUM_OBS 163 #define NUM_TREE 5 char pname[] = "WIN_RSC.RSC"; /* resource set indices for WIN_RSC */ #define DIALOG 0 /* free form */ #define ICON 6 /* IMAGE in tree DIALOG */ #define REALTIME 7 /* IBOX in tree DIALOG */ #define SLIDER 10 /* IBOX in tree DIALOG */ #define MOUSE 13 /* IBOX in tree DIALOG */ #define INVERS 16 /* IBOX in tree DIALOG */ #define FOLLOW 21 /* IBOX in tree DIALOG */ #define MONOFF 24 /* IBOX in tree DIALOG */ #define WROUND 27 /* IBOX in tree DIALOG */ #define COMPT 30 /* IBOX in tree DIALOG */ #define BOXES 33 /* IBOX in tree DIALOG */ #define PFAKTOR 36 /* BOX in tree DIALOG */ #define MAL2 38 /* IBOX in tree DIALOG */ #define MAL4 41 /* IBOX in tree DIALOG */ #define MAL8 44 /* IBOX in tree DIALOG */ #define MAL16 47 /* IBOX in tree DIALOG */ #define MALX 50 /* IBOX in tree DIALOG */ #define FAKTOR 51 /* FTEXT in tree DIALOG */ #define SONSTIGE 53 /* BOXTEXT in tree DIALOG */ #define CANCEL 55 /* BOXTEXT in tree DIALOG */ #define SET 57 /* BOXTEXT in tree DIALOG */ #define OKAY 59 /* BUTTON in tree DIALOG */ #define INFODIA 1 /* free form */ #define DATE 3 /* TEXT in tree INFODIA */ #define VERSION 10 /* TEXT in tree INFODIA */ #define HELPDIA 2 /* free form */ #define HELPVIEW 5 /* IBOX in tree HELPDIA */ #define HELPUP 6 /* IBOX in tree HELPDIA */ #define HELPPAR 7 /* BOX in tree HELPDIA */ #define HELPSLID 8 /* BOX in tree HELPDIA */ #define HELPDOWN 9 /* IBOX in tree HELPDIA */ #define HELPOK 10 /* BUTTON in tree HELPDIA */ #define OPTIONEN 3 /* free form */ #define PDIALOG 5 /* BOX in tree OPTIONEN */ #define WIN 7 /* IBOX in tree OPTIONEN */ #define DIALWIN 8 /* STRING in tree OPTIONEN */ #define FLY 10 /* IBOX in tree OPTIONEN */ #define PZMODE 13 /* BOX in tree OPTIONEN */ #define SAUBER 15 /* IBOX in tree OPTIONEN */ #define STANDARD 18 /* IBOX in tree OPTIONEN */ #define PIXELPCK 21 /* IBOX in tree OPTIONEN */ #define INTERLV 24 /* IBOX in tree OPTIONEN */ #define LEFT 29 /* IBOX in tree OPTIONEN */ #define PARENT 30 /* BOX in tree OPTIONEN */ #define SLIDE 31 /* BOXTEXT in tree OPTIONEN */ #define RIGHT 32 /* IBOX in tree OPTIONEN */ #define HELP 33 /* BOXTEXT in tree OPTIONEN */ #define INFOBUT 34 /* BOXTEXT in tree OPTIONEN */ #define OPTSET 36 /* BOXTEXT in tree OPTIONEN */ #define OPTCANCL 38 /* BOXTEXT in tree OPTIONEN */ #define SAVE 40 /* BOXTEXT in tree OPTIONEN */ #define OPTOK 42 /* BUTTON in tree OPTIONEN */ #define MENU 4 /* menu */ #define INFOBOX 8 /* STRING in tree MENU */ #define SETUP 17 /* STRING in tree MENU */ #define QUIT 19 /* STRING in tree MENU */ #define OPEN 21 /* STRING in tree MENU */ #define CLOSE 22 /* STRING in tree MENU */ #define WECHSELN 24 /* STRING in tree MENU */ d::$d""$Setup Darstellung EchtzeitvergrerungEchtzeitschieberMauszeiger mitvergrernInverse Darstellung Optionen Mauszeiger folgenMauszeiger an-/ausschaltenFenster abrundenKompatibilitts-ModusGrow/Shrink-Boxen zeichnen Vergrerung * 2* 4* 8* 1603stufenloser Zoom (02 - 32) : __9SonstigesAbbruchSetzenOKFreewareInformationDie einzig wahre Lupe(es kann nur eine geben ...)gewidmetEleni AvgetidouVersion X.XXvonChristian GrunenbergTraminerweg 5 - 7141 BeilsteinE-Mail : Christian Grunenberg@S2 (MAUS)Christian_Grunenberg@S2.maus.de (Usenet)OkFaster Than LightHilfeOkSonstiges Dialoge Window DialsFlying Dials Zoom-Modus VDI-TransformStandardPixel-PackedInterleaved Frequenz ----- Help InformationenSetzenAbbruchSichernOK WINLUPE Datei Fenster Information ... ^I----------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 Setup ... P----------------- Beenden ^Q ffnen ^O Schlieen ^U----------------- Wechseln ^W?xx~Àx0` bD888q?pp?pppp?8888?xp~?0@X?HQ0@Io$k ?@?@@@@@@A@,i  x |0<<|,y?x~cx8>|x~p>A=x<p|A>x<|<x<p|<x<y>O<x<y><x<y<x<y@<x<y<x<y@<x<y<x<y<x<x<x<p <x>x@< |>~<>??<x??&@~=D@<<<<<<=@=@>0~0@@x!0&Bq  @ @ A@  8 @xpp@p@ @` 0Np@> @<@8` p @p 0` @p>x` p0j 8UUT@UUUU UUUU@7V>  6$*+,:;  -0P R\] ^fghopt}~     +,-VW)X)   !" #)*+234BCDKLMUVW_`=& W$d$$ :@8W <E W Q ZWbVW{I$" $ WF WUWR W! K"W##"g5%3$&'W)(('2*W ,++ *4-W/..$-80W211(013W$443m76605N988 7A;::(9T=<<q;O D  W` | H          $@\  O  x  $ W""@  @A  @ @      O*& W$VP6   $ W  W W   F$ W VWtW XW   n!  $ @W @A@ @W!" 0< $##0X "I&%%t $Z('' &A*)) (S++a * OPP d  m  t P }     )9K[k{ xRSOH@!kUqϐDIALOGICONREALTIME SLIDER MOUSEINVERSFOLLOWMONOFFWROUNDCOMPT!BOXES$PFAKTOR&MAL2)MAL4,MAL8/MAL162MALX3FAKTOR5SONSTIGE7CANCEL9SET;OKAYINFODIADATE VERSIONHELPDIAHELPVIEWHELPUPHELPPARHELPSLID HELPDOWN HELPOKOPTIONENPDIALOGWINDIALWIN FLY PZMODESAUBERSTANDARDPIXELPCKINTERLVLEFTPARENTSLIDE RIGHT!HELP"INFOBUT$OPTSET&OPTCANCL(SAVE*OPTOKMENUINFOBOXSETUPQUITOPENCLOSEWECHSELN EXPORT zoom_var EXPORT zoom_inter EXPORT zoom_pixel EXPORT init_zoom_var EXPORT init_zoom_pixel EXPORT cache_flush IMPORT p_faktor IMPORT ind_tab IMPORT longs IMPORT il_offset ; void init_zoom_var() init_zoom_var: move.l d3,-(sp) moveq.l #0,d3 move.w p_faktor,d0 btst #0,d0 bne.s odd moveq.l #-1,d3 odd: lea.l make_zoom(pc),a1 moveq.l #1,d2 twice_copy: move.l x_loop(pc),(a1)+ move.w p_faktor,d0 cmp.w #4,d0 beq.s copy_4 cmp.w #3,d0 beq.s copy_3 cmp.w #2,d0 bne.s copy_v copy_2: lea.l x_loop_2(pc),a0 move.l (a0)+,(a1)+ move.w (a0),(a1)+ bra.s twice copy_3: lea.l x_loop_3(pc),a0 bra.s copy_x copy_4: lea.l x_loop_4(pc),a0 move.l (a0)+,(a1)+ move.l (a0),(a1)+ bra.s twice copy_v: lea.l x_loop_v(pc),a0 copy_x: move.l (a0)+,(a1)+ move.l (a0),(a1)+ tst.b d3 bne.s word_long subq.w #1,d0 move.w bmove(pc),d1 tst.w d2 beq.s byte_copy addq.w #1,d0 word_long: lsr.w #1,d0 subq.w #1,d0 beq.s word_copy move.w lmove(pc),d1 long_copy: move.w d1,(a1)+ subq.w #2,d0 bgt.s long_copy bmi.s last_byte word_copy: move.w wmove(pc),d1 byte_copy: move.w d1,(a1)+ dbra d0,byte_copy last_byte: tst.b d3 bne.s twice tst.w d2 beq.s twice move.w bmove(pc),(a1)+ twice: dbra d2,twice_copy lea.l make_zoom-2(pc),a0 sub.l a1,a0 move.w a0,next_xv+2 move.l next_xv(pc),(a1)+ move.w p_faktor,d0 subq.w #1,d0 cmp.w #6,d0 bge.s to_big mulu.w p_faktor,d0 subq.w #1,d0 move.w y_loop_v(pc),(a1)+ bra.s do_copy to_big: move.w x_copy_v(pc),(a1)+ do_copy:move.l a1,d3 l_copy: tst.w d0 beq.s w_copy bmi.s copy_loop move.w move_l(pc),(a1)+ subq.w #2,d0 bra.s l_copy w_copy: move.w move_w(pc),(a1)+ copy_loop: sub.l a1,d3 subq.w #2,d3 move.w d3,next_cv+2 move.l next_cv(pc),(a1)+ lea.l y_loop_v-2(pc),a0 sub.l a1,a0 move.w a0,next_yv+2 move.l next_yv(pc),(a1)+ lea.l planes_v-2(pc),a0 sub.l a1,a0 move.w a0,next_pv+2 lea.l next_pv(pc),a0 move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.w (a0),(a1) move.l (sp)+,d3 rts ; void zoom_var(int wd, int h, int pl,int *s, int *d) ; d0 d1 d2 a0 a1 zoom_var: movem.l d3-d5/a2-a6,-(sp) lea.l ind_tab,a2 move.l (a2),a6 move.w p_faktor,d5 subq.w #1,d5 cmp.w #5,d5 ble.s small move.w d5,d3 ; (faktor-1)*wd-1 mulu.w d0,d3 subq.w #1,d3 move.w d3,a5 small: subq.w #1,d0 subq.w #1,d1 subq.w #1,d2 planes_v: move.w d1,d5 y_loop_v: move.w d0,d3 move.l a1,a3 make_zoom: dcb.w 120,0 x_loop: moveq.l #0,d4 move.b (a0)+,d4 next_xv:dbra d3,make_zoom x_copy_v: move.w a5,d3 next_cv:dbra d3,x_copy_v next_yv:dbra d5,y_loop_v next_pv:dbra d2,planes_v movem.l (sp)+,d3-d5/a2-a6 rts move_w: move.w (a3)+,(a1)+ move_l: move.l (a3)+,(a1)+ x_loop_v: add.w d4,d4 add.w d4,d4 move.l (a2,d4.w),a4 x_loop_2: add.w d4,d4 move.w (a6,d4.w),(a1)+ x_loop_3: add.w d4,d4 add.w d4,d4 lea.l (a6,d4.w),a4 x_loop_4: add.w d4,d4 add.w d4,d4 move.l (a6,d4.w),(a1)+ lmove: move.l (a4)+,(a1)+ wmove: move.w (a4)+,(a1)+ bmove: move.b (a4)+,(a1)+ ; void init_zoom_pixel(int bytes,int invert) ; d0 d1 init_zoom_pixel: move.l a2,-(sp) subq.w #1,d0 ; (bytes-1)*4 add.w d0,d0 add.w d0,d0 lea.l make_pixel(pc),a0 tst.w d1 bne.s invert lea.l pixel_tab(pc),a1 bra.s tabelle invert: lea.l pixel_tab_inv(pc),a1 tabelle:add.w d0,a1 move.l (a1),a1 move.w (a1)+,d1 bmi.s copy init_code: move.w (a1)+,(a0)+ dbra d1,init_code copy: move.w (a1)+,d1 move.w p_faktor,d2 subq.w #1,d2 copy_code: move.l a1,a2 move.w d1,d0 copy_instr: move.w (a2)+,(a0)+ dbra d0,copy_instr dbra d2,copy_code lea.l make_pixel-2(pc),a1 sub.l a0,a1 move.w a1,next_xp+2 lea.l next_xp(pc),a1 moveq.l #(next_yp-next_xp)/2-1,d0 loop_code: move.w (a1)+,(a0)+ dbra d0,loop_code lea.l y_loop_p-2(pc),a1 sub.l a0,a1 move.w a1,next_yp+2 lea.l next_yp(pc),a1 move.l (a1)+,(a0)+ move.l (a1)+,(a0)+ move.w (a1),(a0) move.l (sp)+,a2 rts pixel_tab: dc.l byte_1,byte_2,byte_3,byte_4 pixel_tab_inv: dc.l byte_i_1,byte_i_2,byte_i_3,byte_i_4 byte_1: dc.w 0 ; init-Befehle - 1 move.b (a0)+,d6 dc.w 0 ; copy-Befehle - 1 move.b d6,(a1)+ byte_2: dc.w 0 move.w (a0)+,d6 dc.w 0 move.w d6,(a1)+ byte_4: dc.w 0 move.l (a0)+,d6 dc.w 0 move.l d6,(a1)+ byte_3: dc.w 2 move.b (a0)+,d5 move.b (a0)+,d6 move.b (a0)+,d7 dc.w 2 move.b d5,(a1)+ move.b d6,(a1)+ move.b d7,(a1)+ byte_i_1:dc.w 1 ; init-Befehle - 1 move.b (a0)+,d6 not.b d6 dc.w 0 ; copy-Befehle - 1 move.b d6,(a1)+ byte_i_2:dc.w 1 move.w (a0)+,d6 not.w d6 dc.w 0 move.w d6,(a1)+ byte_i_4:dc.w 1 move.l (a0)+,d6 not.l d6 dc.w 0 move.l d6,(a1)+ byte_i_3:dc.w 5 move.b (a0)+,d5 move.b (a0)+,d6 move.b (a0)+,d7 not.b d5 not.b d6 not.b d7 dc.w 2 move.b d5,(a1)+ move.b d6,(a1)+ move.b d7,(a1)+ ; void zoom_pixel(int wd, int h, int bytes,int *s, int *d) ; d0 d1 d2 a0 a1 zoom_pixel: movem.l d3-d7/a2,-(sp) move.w longs,d4 ; faktor*(faktor-1)/2*wd-1 mulu.w d0,d4 subq.w #1,d4 lsl.w #4,d0 subq.w #1,d0 subq.w #1,d1 subq.w #1,d2 y_loop_p: move.w d0,d3 move.l a1,a2 make_pixel: dcb.w 128,0 next_xp:dbra d3,make_pixel move.w d2,d5 x_copy_bytes: move.w d4,d3 x_copy_p: rept 8 move.l (a2)+,(a1)+ endm dbra d3,x_copy_p dbra d5,x_copy_bytes next_yp:dbra d1,y_loop_p movem.l (sp)+,d3-d7/a2 rts ; void zoom_inter(int wd, int h, int pl,int *s, int *d) ; d0 d1 d2 a0 a1 zoom_inter: movem.l d3-d7/a2-a6,-(sp) lea.l ind_tab,a2 move.w il_offset,d6 ; Offset : planes*(faktor-1)*2 move.w p_faktor,d5 subq.w #1,d5 move.w longs,d3 ; faktor*(faktor-1)/2*wd-1 mulu.w d0,d3 subq.w #1,d3 move.w d3,a5 subq.w #1,d0 subq.w #1,d1 subq.w #1,d2 swap d1 move.w d2,d1 add.w d1,d1 swap d1 btst #0,d5 beq.s y_loop_o lsr.w #1,d5 y_loop_i: swap d1 move.w d0,d3 move.l a1,a6 x_loop_i: move.w d2,d7 planes_i: move.l a6,a3 addq.w #2,a6 moveq.l #0,d4 move.b (a0)+,d4 add.w d4,d4 add.w d4,d4 move.l (a2,d4.w),a4 move.w d5,d4 lo_byte_i: move.w (a4)+,(a3)+ add.w d1,a3 dbra d4,lo_byte_i moveq.l #0,d4 move.b (a0)+,d4 add.w d4,d4 add.w d4,d4 move.l (a2,d4.w),a4 move.w d5,d4 hi_byte_i: move.w (a4)+,(a3)+ add.w d1,a3 dbra d4,hi_byte_i dbra d7,planes_i add.w d6,a6 dbra d3,x_loop_i move.w d2,d7 x_copy_bytes_i: move.w a5,d3 x_copy_i: move.l (a1)+,(a6)+ dbra d3,x_copy_i dbra d7,x_copy_bytes_i move.l a6,a1 swap d1 dbra d1,y_loop_i return_inter: movem.l (sp)+,d3-d7/a2-a6 rts y_loop_o: swap d1 move.w d0,d3 move.l a1,a6 x_loop_o: move.w d2,d7 planes_o: move.l a6,a3 addq.w #2,a6 moveq.l #0,d4 move.b (a0)+,d4 add.w d4,d4 add.w d4,d4 move.l (a2,d4.w),a4 move.w d5,d4 lo_byte_o: move.b (a4)+,(a3)+ subq.w #1,d4 bmi.s next_byte_o move.b (a4)+,(a3)+ add.w d1,a3 dbra d4,lo_byte_o next_byte_o: moveq.l #0,d4 move.b (a0)+,d4 add.w d4,d4 add.w d4,d4 move.l (a2,d4.w),a4 move.w d5,d4 hi_byte_o: move.b (a4)+,(a3)+ subq.w #1,d4 bmi.s next_plane_o add.w d1,a3 move.b (a4)+,(a3)+ dbra d4,hi_byte_o next_plane_o: dbra d7,planes_o add.w d6,a6 dbra d3,x_loop_o move.w d2,d7 x_copy_bytes_o: move.w a5,d3 x_copy_o: move.l (a1)+,(a6)+ dbra d3,x_copy_o dbra d7,x_copy_bytes_o move.l a6,a1 swap d1 dbra d1,y_loop_o bra return_inter ; void cache_flush(); cache_flush: movec cacr,d0 bset #3,d0 movec d0,cacr rts end Version 1.00: - erste halbwegs fehlerfrei funktionierende Version Version 2.00: - bessere Dialogroutinen (jumping dials,hbschere Buttons, Text von Buttons anklickbar) - kleinere Fehler beseitigt - ein paar Geschwindikeitssteigerungen - 16-fache Vergrerung - inverse Darstellung Version 3.00: - Fehler bei jumping dials beseitigt - neue Option 'Mauszeiger folgen' Version 4.00: - Fensterdialoge fr MultiTOS - Info-Dialog - verbesserte Dialogroutinen - grow/shrink-Boxen an-/abschaltbar - Aufruf des Setup-Dialoges durch rechte Maustaste Version 4.10: - wieder mal kleinere Fehler beseitigt - Lupe vergrert auch bei aktiven WinLupe-Dialogfenstern Version 4.50: - Fehler in Dialogroutinen bei mehreren Fenstern/Dialogen behoben - Hilfe-Dialog - Dialog 'Sonstiges' fr weitere Optionen - korrekte Behandlung von AC_CLOSE bei geffneten Dialogen - einstellbare Vergrerungsfrequenz - Wahl zwischen Fensterdialogen und fliegenden Dialogen - Fliegen mit nicht-selektierbaren Objekten - Resource-File wurde ins Programm integriert,da ACCs keinen Speicher (egal ob Workstation,Resource oder sonstiges) mehr lngerfristig anfordern drfen - Workstations/Fenster/Speicher werden nur noch kurzfristig angemeldet bzw. angefordert Version 5.00: - Icons wurden in Farbauflsungen nicht halbiert - Optik des Flying-Buttons in Farbauflsungen berarbeitet - Editcursor-Handling nach Fensterwechseln war fehlerhaft - Event-Handling bei Timer- und Mouse-Events behinderte sich gegenseitig - Fehler beim Verschieben/Vergrern des Fensters nahe am Bildschirmrand wurde beseitigt - endlich variable Vergrerungsfaktoren Version 5.01: - Puffer waren in bestimmten Fllen zu gering dimensioniert, was manchmal zu Abstrzen fhrte - ffnete man das Lupenfenster mit aktivierter 'Mauszeiger folgen' Option,so war die Position des Fensterinhaltes beim ersten Bildaufbau falsch - deaktivierte man die Option 'Mauszeiger folgen' bei geffnetem WinLupe-Fenster,so war danach die Position des Fensterinhaltes falsch - die variablen Vergrerungsroutinen konnten noch einmal beschleunigt werden - die Option 'Fenster abrunden' versucht jetzt auch (!) bei variabler Vergrerung,die Fenstergrenzen auf Wortgrenzen zu runden,um den Bildaufbau zu beschleunigen Version 5.10: - Closer bei Fensterdialogen wurde wieder eingebaut (auf Wunsch eines bestimmten Users aus Heilbronn) - die Optik des Setup-Dialoges wurde berarbeitet - die verschiedenen Dialoge sind nun voneinander unabhngig, d.h. wenn der Setup-Dialog geschlossen wird,bleiben die anderen Dialoge geffnet und es knnen Einstellungen vorgenommen werden Version 5.20 - 5.30: - 'Fenster abrunden' funktionierte bei bergren des Fensters nicht richtig - Y-Position bei 'Fenster abrunden' wird jetzt nicht mehr verndert - fehlerhafte,stufenlose Vergrerung bei einem Faktor von 27,29,30 oder 31 bzw. ein Absturz bei 25 - Leider hatte ich bei der stufenlosen Vergrerung bersehen, da jetzt einige Variablen grer als 16 Bit sein mssen. Dies fhrte zu fehlerhaften Vergrerungen bei Grobildschirmen, aber erst ab Faktor 24. - das Clipping mit dem Bildschirm war in seltenen Fllen fehlerhaft, was zu Abstrzen und/oder Fehlern fhrte - beim Verschieben von Fenstern wurde manchmal die Breite um 16 Pixel verrringert,wenn 'Fenster abrunden' aktiviert war - kleine Verbesserungen in den Dialog- und Ereignisroutinen - Vergrerungsroutinen wurden nochmals leicht beschleunigt - Fehler beim Clipping,nachdem das Fenster auf Bildschirmgre gebracht wurde Version 5.31: - kleinere Optimierungen in den Vergrerungsroutinen - Puffer waren in sehr seltenen Fllen (Auflsung>640*400, Vergrerung 25 oder 26,Lupenfenster auf Bildschirmgre) zu gering dimensioniert,was evtl. zu Abstrzen fhren konnte - Fehler in Dialogroutinen bei Resource-Initialisierung beseitigt Version 6.00: - optimierte Zoomroutinen fr bestimmte Bildschirmformate (Standardformate,monochrome Auflsungen,pixel-packed und interleaved Formate) - kleinere Fehler bei der Initialisierung eines Fensters beseitigt - 'Fenster runden' bei Vergrerungsfaktoren von 6,12 und 24 verbessert (-> schnellere Vergrerung) - erweiterte Hilfe - Fehler beim Beenden der WinLupe als Applikation sowie beim Einstellen der Vergrerungsfrequenz beseitigt - variable Vergrerung weiter optimiert - Einstellungen des Dialoges 'Sonstiges' wurden erst beim nchsten Aufruf des Hauptdialoges gesetzt - Optionen der verschiedenen Dialoge knnen durch 'Setzen'-Button sofort bernommen werden ohne erst den Dialog schlieen zu mssen - Fehler bei Abbruch-Buttons beseitigt - Clipping-Fehler beseitigt Version 6.10: - Fehler in variablen Vergrerungsroutinen sowie Pixel-Packed/ Interleaved-Routinen bei groen horizontalen Auflsungen sowie hoher Vergrerung beseitigt -> laeuft jetzt selbst bei 32-facher Vergrerung auch auf dem grten Grobildschirm - Pixel-Packed-Vergrerungsroutinen implementiert - leicht fehlerhafte Vergrerung im Interleaved-Modus bei mehr als einer Farbebende (Farbanzahl>2) und ungeradem Vergrerungsfaktor - MultiTOS-Messages werden ausgewertet Version 6.11: - Pixel-Packed-Routinen konnten nochmals gewaltig beschleunigt werden - variable Vergrerung konnte wieder einmal beschleunigt werden => jeweils selbstgenerierender,optimierter Code - Aufruf des Setup-Dialoges nach Rechtsklick abschaltbar,da es zu Komplikationen mit anderen Programmen kommen konnte - Vergrerungsfaktor im Setup wurde nach Anklicken von 'Setzen' nicht den maximalen Werten angepat Version 6.12: - Spezialroutinen fr 2,4,8 u. 16-fache Vergrerung entfernt, da aufgrund der hohen Geschwindigkeit der variablen Routine inzwischen unntig (kleineres Programm,weniger Speicherbedarf) - Vergrerung bei ungeradem Vergrerungsfaktor beschleunigt - Startup-Code verringert - 2 Fehler in den Dialogroutinen beseitigt (Radio-Buttons,Fly-Ecke) - Event-Handling verbessert (Timer-Events nur noch bei Bedarf) - Fehler in Pixel-Packed-Routinen bei 2 oder 4 Bits/Pixel beseitigt - bei max. Vergrerungsfrequenz wird auch bei einer Bewegung der Maus der Fensterinhalt der Lupe aktualisiert, sofern die Echtzeit- vergrerung aktiviert ist Version 6.20: - Mausflackern bei Echtzeitvergrerung beseitigt (Hallo Eric !), sofern der Mauszeiger mitvergrert wird und nicht ber dem Ausgabefenster steht (kann ber den Kompatibilitts-Modus wieder deaktiviert werden) - Fehler bei 'Fenster runden' beseitigt (Fenster konnte nicht beliebig vertikal verschoben werden) Version 6.21: - Im Dialog 'Sonstiges' konnte die Option 'Setup bei Rechtsklick ffnen' nicht per Tastatur (de-) aktiviert werden - Informations-Dialog optisch berarbeitet - Interleaved-Vergrerung bei geradem Faktor um ~25% beschleunigt - Programmcode auf Gre optimiert - Fehler bei inverser Pixel-Packed-Vergrerung mit 1,2 oder 4 Bits je Pixel beseitigt Version 6.22: - Programmcode wieder etwas optimiert - Dialoge den letzten Feinschliff verpat Version 6.30: - 'Mauszeiger an-/ausschalten'-Option (verhindert das Flackern des Mauszeigers') - war in den vorherigen Versionen in der Option 'Kompatibilitts-Modus' enthalten. - eigene Menuleiste beim Start als Applikation (fr MTOS) - Tastatursteuerung erweitert (auch als Accessory), d.h. Fenster ffnen/schliessen,Information,Setup und Beenden knnen per Tastendruck ausgelst werden - Fehler im Event-Handling und den Dialogroutinen beseitigt Version 6.31: - Fehler beim Verlassen des Programmes behoben (ungltiges VDI-Handle) - Mausflackern bei Echtzeitvergrerung verringert, wenn der Mauszeiger nicht (!) mitvergrert wird - Fehler bei Editcursor-Positionierung per Maus beseitigt Version 6.32: - Clipboard wurde falsch initialisiert/geschrieben/gelesen - bei geffnetem Setup-Dialog und Vergrerungsfenster wurde bei Ctrl-C (Fenster schliessen) auch das Clipboard geschrieben - das Vergrerungsfenster wird nicht mehr geffnet, wenn der Setup- Dialog ber den Fenster-Closer beendet wird Version 6.33: - Event-Handling ueberarbeitet - konnte in sehr seltenen Faellen zu den verschiedensten,aber durchweg harmlosen Fehlern wie z.B. falsche Redraw-Bereiche fhren Version 6.35: - Speicherverwaltung berarbeitet, d.h. es wird jetzt, je nach Auflsung, bis zu 15% weniger Speicher fr die Bildschirmpuffer bentigt Version 6.40: - Gre der Buttons in den Dialogen gendert, so da die Unterstriche den Buttonrahmen nicht mehr berhren - Programm-Cache der Prozessoren 680x0 (x>=2) wird nach dem Generieren der Vergrerungsroutinen sicherheitshalber gelscht, auch wenn es bisher keine Probleme mit dem selbstgenerierenden Code bis zum 68030 gab - Pfeile im Dialog 'Sonstiges' werden je nach Vergrerungsfrequenz (de-) aktiviert/Verzgerungszeit beim Anklicken der Pfeile nimmt ab/Redraw des Schiebers optimiert (=kein Flimmern) - Dialog-Routinen fr nicht-modale Dialoge vorbereitet (wird in dieser Version der WinLupe noch nicht genutzt) und berarbeitet - Fenster-Position und -gre wurden nicht aus der INF-Datei bernommen - Datum der WinLupe-Erstellung in Informations-Dialog integriert - wurde der Setup-Dialog ber den Fenster-Closer geschlossen, so fhrte das zu einer fehlerhaften Vergrerung, sofern vorher die Darstellungsparameter verndert wurden - Dialoge werden auf Byte-Grenzen ausgegeben (schneller) und besser um den Mauszeiger zentriert - Anpassungen der Dialog-Routinen an das neue 3D-AES (TOS 4.0x) - kleinere Fehler in den FlyDials beseitigt - Kleinigkeiten der Oberfche berarbeitet, so da sich ein einheitliches Bild ergibt - Tastatur-Shortcuts an GEM-Standards angepat - Fensterdialoge unter MultiTOS im Hintergrund bedienbar (vor MultiTOS leider nur eingeschrnkt mglich) - Images in den Dialogen werden besser an Farbauflsungen angepat Version 6.50: - die Einschrnkungen bei der Bedienung von Fenstern ohne MultiTOS konnten beseitigt werden, d.h. es koennen jetzt alle Fensterdialoge im Hintergrund bedient werden, sofern man eine TOS-Version grer als 1.00 besitzt (Fenster werden durch Klick auf Mover oder nicht-selektierbares Objekt nach oben gebracht) - Fenster im Hintergrund knnen jetzt auch mit zustzlich gedrckter rechter Maustaste bedient werden (s. Desktop), weswegen der Setup-Dialog nicht mehr mit einem Rechtsklick aufgerufen werden kann - die Optik der Dialoge wurde berarbeitet - neue Funktion 'Fenster wechseln' (Ctrl-W) - "seitenweises Blttern" bei den Schiebern in den Dialogen 'Sonstiges' und 'Hilfe' - mehrere kleinere Fehler in den Dialogroutinen beseitigt - Dialoge und Images werden an die Gre des Systemfonts angepat - stark erweiterte Hilfe `\@Vtp&H" f&op3# k  Ј<.@HPHSBg?<JNAO a#BgNA// $HN/(Jo$ м(%@p`B@$_(Nu"3@3A2A3A3B NuH8OBD6E@HWHo?*?*?*CA42<pN29^g ynfz`BE09o N 2J@f0gpN4DG>IHlHlHl/ r 09N3(O`"PLRCHlHlHl/ r 09N3O0,o2,nK 0+f|kF8(M880+kS@80+kS@8B\B\pk8pk8A60-PoPU;PA80-Po Pm;P09`gHS"y Mr0+N+~XO`*0<N2HS"y Mr0+N+\XO0<N1?k0?k2?k4?k6C0ALN|x`l0HAC"""JA0N|ZJ@gL(M0k;@80*k;@ 80jS@;@ 80-jS@;@8HS"K MBA0+N*XOSDl09g/kҼtj?B|j?F(M884o80F8882o82*F8JEfXHoHo"CAN0POo o p@?@ ?@ 2/lo Bo0/lo BoC JNzlJ@gx0<N/`BD/9C Mr0+N(XOJEfJDg 0<N/SCl0gB@N0O@L,`0?@K:;F;k0+o;@2jo<4/m M02tNuB0+ko 2,DA`<0+kFHԐD@`&t2o0 MNu 0+kn2+FHARD20NsX629@0Ns>>2R@lo>,CR0R@K:;F;k0;@"MA Nv MNt094@@?G`"0RCHA p4209(N(TSolB@O L0f"K kTpNKIHzCB@ LNK,XO6R@gn|g4H"ҁ҂ T"hq Ttf p"N`6 TfL| g|f p!N`7|Bgpd?r???t ?CP k\prtNi,O Bk` Tf80||bf@0;N0000 0C6 kXN`0Cl k\N`Bgpd?r?Bg?t ?C k`prtNhO `f|&gB@N`B@NN|$fB@NBBrp$ MNe`0|(f,0+o pNJNB@NN@BBrp( MNeX` TNl kThBBrp5 KNe6|&g jf0+S@gS@g` KN,p"K kTNB@N@`0|5gU@g(`8 kThBBrp5 KNdp"M k`N`l TNpNN"`pNN|9g TN0*l |;fNH`|9fB@`pN|9fBBrp9 KNdfBBrp3 KNdX0nt kTh k`h: k`h"BR`, kf r 0+"N'`0+f"K kTpN7|L<Nu09g629ot`BByUBlBAp yN%Nurp yN%zNu?/ 629mTNjJ@fLE* y^f yjf "JAN Bj,|f r 09N&trpNZA-PN$_6NuH8OIE.G .6x2@?AtT?B>hNA <_CPUNpS@fpnANZphS@/hBo`&>/BE<H2gL?D`>2@A/a?A o?T `4/ HŒC` D"4EoSo lܗol`H?D`<2@/a?A o?T `4/ HŒC` D"4EoSo lܗolRo omLOLNuH0EGL|frp$ RNcR@7@$BC`,p4B43 H"ҁ҂ Rp gp`B@2A7RC|o R"h QBC`p 6H|Af|l7|(`| o7| (`7C(0+( R"h QN<5k(v`,rp j Nc:7@:r j hgt`t7B,7jҐ*L Nu2Hdot0tdB4H… <0`2H ot02H HA<0BNuH06ELGJCgnrj$p$ kNbBD`B0@22g22H$Ԃԁ kp( `2A42H ЀЂ kp RD|o0*( k"h QN4|gl2*:p SNb4 Sh Sh j,f Sh` Sh S2(hp *AN'S`p ?r?BgtABB@rNf\OL NuBypN4E>B@ JN6B@A6N6B@AlN6B@AN65|By$_Nu/ Et0*f t29lC j"pN_5|` jfr 0*"N"5|$_NuH>QO$H6* G.IMK*pCg~2tAXWf2(N ()2r0+ m-xN 0+Q@|b8@0;N",,,,,,,,\,*,2D,ZN`N`0lpNvNX` 0mpN;|,`N`B@N`0m2+@f4||bB4; N *40rrANh`|r 0N!`ppNr`f0--Xy@m42--ZyBm(4--\yDn0m-^FnA-XN;|-X`A.C-X""A@NBm,tBApN`0.g2.f8-H0+J@gS@g S@gS@g` 2-,HN(z` 2-, HNv(BE0+|b@0;N *4F\ht0--VH llB`h0--VHѕ`0-H`0-Hѕ  MNv`B0--TH -l2B`,0--THѭ`0-H`0-Hѭ AN2|f& ,뎜܀ "N,?r 0N TO`& -,뎜܀ "N,?r0NTOBm,NRA-PN`0.g2.f>+?r0NTO -2--TH2HN<"<N|H+@`0.g2.f\>+?r 0NjTO -2--VH2HN"<N:H*`hAN;|-XBm, SfBB`tBApNpCgNdJ@f2*(0**Neb>rj(g|PfxN~`pj(gf2|I|bZA2;NPPPPP*P$PPP@PLN`,NJ`&0l"pNN;|,`0m pNj`N0mjr(CgdtCg 5j"5j$ nf>CANT /f"g$+o*N ng 0.g2.fNzBm,A-PNPOL|Nu/ / UOE4BjG0mL kfDR "<|5A kdf&Rt5B5B5BHWHoCANPO09g(2mBA`rp jN0mr`BAp jNTO&_$_Nu/ / &HEzHjHj?+?+?+C J42<pN^O09bf?+?+?+?r09NPO&_$_Nul NuH8]O$H&IHWHoC A N8POI0/2,AAH$2/4,BBH& lB` 0,,.H JN lB` 0,,0H KN9j9kAL h$l (%$ (%&` 2HN$ 2HN&\OLNuH $H:6H HN&2HN 4L(NuH8Ovy6|xy8I@:,E<,FYFEzGL%k%k%k %k$%k( j"hT""kZ j h PPHN `HjHj??0,F?C J4E2<pNO(j Ix094@5@Җ9|)| 0,HҖ5@Ҕ29@5AҘ(j IRlUl0,HrjҔHN29HN j 1@"k^TIAN ANJ@gB@AN<J@or< KN r3'zA<""2&NuH>E6,R:9SE|o6SC:CS@SASB:6&IxQ 6 QQQL|8Nu2"DD(r@D2@DDI@DD"@"2/ S@@@AJAfC``Cj"Q2k0Q249SB$I00QQCē3)Cp0QC3)C 0$_Nu(<(D(T(L(d(n((x<2,"F<FF2,F"FFFH 89 SDHS@SASB6$IQ:6""""""""QQQLNuH>E6<9 :9SE69 SC:CS@SASBHA2AHAg`MHA6,I>&NTNxDD(r@86QxDD(r@86QQQ>6 ,QQ"NHAQL|NuHA6,I>&NTNxDD(r@8SDkQxDD(r@8SDkQQQ>6 ,QQ"NHAQ`NzN{Nu/ "y ),g8"@g2g.f$HgggJf`g<=fJfRI I$_Nu`/ Hz?<&NN\O$_Nu 8NuH06&Hp Cgp@CfFpC?/ ?<=NAPOJk&8jaTpCgF?<?p/?<BNAO Jj.`Br߲fNAXONuaB3\p`ް|c/ ??<>NAXO$_JkpNua3\pNu/ /?<ANA\OJkp$_Nua3\p$_Nu/ J@f//aJ@fBg`//??<?NAO $_JkNu  _`a3\pNuH&Hx&SgkJ9Xkvf~a<g&< g<<gP< g< e޸dRa`JgSSKpap apa`Rp aXp a`bJg^X`TxB9X`Jx B9X`Xp a2 L$_NuBx`xB9X`x B9X`?<NATONu??<NAXONuH@??<@NAO $_JkfNuab3\pNu3\NuH 6?<?B?<BNAO (Bg?/<?<BNAO *Bg?/?<BNAO JWHL8NuD@| |"b;NupNu   JgJgJgJgJg JgJgJfSHggggg ggf @NugfSHNuJgNugHf8g@f0g8f(g0f g(fg fgfgg!epNupNuJfpNu g<g8g4g0g,g(g$g ggggg ggf @Nu"HJgJgJgJgJg JgJgJf SNuSeg gb pNuJfpNupNu"SefBJgSf ANua /aD" g p/a& _NuH &/?<HNA\OJf 9g @ NJ@fp @LNuH0&gPR<e a g!CCZ "A`rG^&S f. < a gj&@Ap !| 'H&^#^A"P` )d I"Q f`rd ` #@#C"nAL Nuk |`3 \`/ oLQ d nf@aBJg*`6CZ g,g"@ f` "/?<INA\OJj`p$_Nugp`H8$< CG^ g" c &@ f`(@ ,gb*"Ҩeg ` )H`p"@")Ө )H`>"@ gb" ҩeg`N"(ө`" "H" ҩf @"(ө" l eb&/ ?<INA\OJfQLNuP`/$gSe40HB4 gxH_>"&(*,."B$B&B(B*B,BH~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H`SfL||0HgS@!Q|gSAQ _Nu|A 0|Nu@@@@@@@@@@@@@@@@@@@@@@@@@@@::::::8888888888888888888866666644444444444444444444@$HBJBf$HBJBfNuHBЂNuHBЂNu$jD BJjD$HBJBf"$HBJBf $jDNuHBЂ$jDNuHBЂ$jDNu$jD"BJjD$HBJBf4$HBJBfH@B@H@$ jDNuB@H@HB0@0H@0H@$ jDNu AH@r2B@tЀӁd҈рӁQF@$ jDNuHRHP?<9NA\O$_NuHR?</NATO @$_NuHR?HP?<NNAPO$_NuHR?<ONATO$_NuHR//HQHP?<NNO @$_NuHR/?<HNA\O @$_NuHRHP?<INA\O$_NuHRHP?< NA\O$_NuHRHP?<&NN\O$_Nu/ABhBh2<&aP"_222222A2222Nu/ABh1|1A2<fa"_2r+2QAr 2QNu/ /ABhBhr|aC _0 _0 o0Nu/A1|1|!I!o1A"_A000000000Arm`/A1|1|!I!o1A"o 1Y1Q"_A000000000Ary`6C2222A1|Bhrr`/ABhBh!_!Irn`ABh1|1Ar`A1ABh1|r`ABh1|1Arh`ABh1|1Ar`ABh1|1Ar`rABh1|1A1Brl`TABh1|1Ar`:ABh1|1Arq` A1|Bh1A0Bh2ra09Nu/ /ABh1|1A1Br'aA"_2"_2NuABh1|1Ar`ABh1|1Arj`/ /A1|BhBh01A2r arA"_2"_2"o2"o2NuABh1|1Ar `HNBA0$_Nu  3<3:NuA801@2H!A 0/H!@4/H!B$2o!I,2/ H!AS@f36383\Hy4Hy2"L L29<0NPOr0N BBBA0N2C JNIp?BB2"N L0N?TO: oV0KM(Wo?|,BC8>;G:pE;@ ;@`^Do0/frFAfH;C;C;G;G HT"L M/ /0/8gr`2/$0 _"_N4XODn FRG?|,`Bo,WRCCnvW`";C;C ;C;CHT"L MBA0NXORCCn<Ro~BD6?C,;C ;CpF;@;@`ZCo0/frEAfD;D:0/,;@ ;@HT"L M/ /JGgr`2/$0 _"_N~XOCn ERo,~`BGRRDDnxR` ;D ;D;D:HT"L MBA0NBXORDDnO.LtNuH O86$H$ g:p?"JA0tN=^TOp?BB2"JA0N=HTOCA09(NO(LNu/ / $H jf$&j S2+0+N k2+0+N|`&j S2+0+HNf&_$_NuH4O*HG4+lt`BBE5H4vk5CvS5C69*8+DDi B5C69,SCi B5C 4*j5B 8* j5DJAg?@BW`>Bop?BB2"MApN<p 4RCH"ҁ҂rg0 JNLNuH>YO<8:(H.*o0$o8,oH&o@`*B@+|| b@0;Ntbbb"+ 爐 o<'H 0(H  k 0(H!t k 0( H!t`0+H't `6+4H"牒ҁ25H ЀЁЀ2H$犔Ԃ+(A('H `Z6+4H"҂ҁ22H ЀЁЀ2H$ԁԂ%(22(H ЀЁЀ%(02( H%(A('H G2H ЀЁ o@eBD`0H W20H!RDDnBD`>0H o460:H$犔Ԃ05(H"ҁҀҁ+(C(0H!RDo,mBE`.2H oD40H ЀЂ"o@!0/. INREEnXOL|xNuH>$H6&Hr@g y*f y,g|`BCE0*|g(Q@g`>,j JN`0 JN0.n 5@` JNB0 JN j 5h`8*L0|b@0;N6&|X6|j09,@j`d%|X |f 5|@`L5|`B5|%|h `(5|%|@ `%|` |f5|0`5|09 fSj`%|p 0H|5@`2H ЀЁ43|gYBg0SBg,WBg`B2H ЀЁ s h f43BVB5B`&2H ЀЁ43y,B5Bpjj|f5| `5|0* H|%|P <am(<zoS@f. S XBRAf$0(o@h 5@ S2(WAh 5A20 JN O L NuH0&H:6EH8+kCjo 0jk09f:+y*<+ky*SF` :* <* j?* 42* 0N+TOpl g,D2* D?40N+TOJCg r09(NFpj`JCg r09(N.pjLxNu// $o v4*H"ҁ҂ R20H ЀЁp pjgJCf0*"J y BAN`BA0*"J y$NpjC$_&Nu?/ O$o6*4rpN+D?p?rj?tjrj pj N*\Opj ?@?@ >rj ?A?A?A09*@j ?@?@2* y,?A?A A09(rNJrj0"J yN pjO$_6Nu// $o v4*H"ҁ҂ R20H ЀЁp pjgJCf0*"J y(BAN`BA0*"J y,NpjC$_&NuHrj ?A?A?A09*@j ?@?@2* y,?A?A A09(rNpjg$" g0*"J LBAN`r0*"J KN`BA0*"J KNpjOL<Nu/ O$otrpN)?98Bgpj?tj2* 0* N(\Opj >rj ?A?A4* jYB?B?B2* jYA?A A09(rN.09 oRW`TWRoSoRoSo09 oSo Ar09(N0* jS@?4* jSB2* 0* N'TOpjO $_NuH8UO$o&j2*H ЀЁ R60 BDI(r0Nf kfHWHoCA29<0NPO`HWHoCA29>0NPOpCg|pCg|pCg|pCg|pCg|p Cg rD0N܊ k tj rj 0NP20Nl k 4* 2* 0N6B@TOLNuH8UO>(H>EV R&hBCx:1E0 R1E. R1E*GRC<+r0 R hNJ@f:pFg R1C.pFg2|g8|gWf:0+H| f R1C0p FgJEmHJGgBj BA R h0N LN `B@N.JDo&2H ЀЁ R"h hN`B@N L8"R imTJGg "R0)*mPTH000TOLNu/ BAC `4J$q j"f p` RAy2mB@$_NuH0&H$Iv *&c6*,#Vr K0**Nr 0*"N|o0**m j0N*L NuH<]O:*H$I&o&$ gI 0,4Ag6+ 7A KN87C R@f o*0p`JEgJDg094oHA)p:r KB@NBl6`f|f0,6N2HWr B@NXOA0N9@6S@f:092H t hf/H"o KN|f l:0(*m hN g KN`B@9@4B@\OL<8NuH?G7G094oHA&~Bk`DHoNr B@N4XOAP0/NN,7@S@f&P`092HA & S hfxKJCo2k M0N`@ S (&c*6(,2k M"S0)*N S0(*m h0NX`2k MB@N g MN`B@7@ / MN%L;@ r@g6-.BoNBF4rAXWf04(N  ()2>$&$$ |`v||lAP0-4N(?@N oNg|f0rAXWf0( N)2(FFC6 oPN`d y$l0/NfZrkgJDgN0+N0/NfJDgJDg092HA /pP"oP MN g MN`B@7@7|`JDg oPg0/NfHo\Ho`CfAhNPOHoZHo\Ho^Ho`r0-4NOAT2/^0/`N'lJ@gVm ;|,;o`";o^$?|`z oNfZJDfj&P>z`\B@294IA pN094n`B@292IA pN092nHWHUr"o LB@NPO` oP/hVE6HoTHoX?*?*?*"odC odA4r pNO oP0(2"oVi oP0(2i yzJEfpm gH|JGg/ Ho"M SpNPO<`0/f: y$lrm&g2-$0-"Nڢ?@N`HoNr B@NXO?|`?m4N0+g8 S2("oNf,4/mNJ@g/ Hop"M SN`PO<`/SP`JDftAP0/NNS@fd0/o8 y$o.HoTCXAZ09(NXXOpoVgrdApN`/ HoB@"M oXNPO<J@f z/oPF`BoJFgJDfJFlHWHUr"o LpNPO:fpm gD2+fJGg2-*0-( S hN>J@gR@fvJDfHWHUr"o LpN8PO:fXpm g2+fJGg S0(*m MN>p(m gHWHU2"o LpNPO:fr m gN/@` S0(*m("h&$i RN|g SNBJ@g S hN @ /Jg WgJEl @ F` oJ ` oJB0ObL7C 7D p7@7@`Bk7j 7j 7j7j0g B@N*BUO L<8NuHUO&H:>8Dt@g|`BF|f~`~EVJEfX|g|rf( R h*f R0(.or?Bgt?2N \O` |bf R0(0or?Bgt?2N \O`pEf R2(*lrtEfl20 KN r6m^rGf,t2H ЀЁ23 K0N&S@fr0 KN`r0 KN*J@fp?Bgr?4 R02N `\O`| R0(*mp2 K0N J@f`|af AN`8pEg R"h& i (P"R2),KM0rAXWfp0(NHPstxLd %NJ@fd %NJ@gd R@ KN `B@ KN `NlJ@f%gN^J@g%g KN`6* LNJFgR LNŨ.Jghj gr`BA6`* "LrPANŪJ@fpPAN5C `0RC|m`$ j lpP 6PgRj pP ANd` LN@JFgD LN"&Jg~`* "LrPAN0J@fpPAN$5G `SGJGl`0* orP6gSj `20N>|Cg|gXU@g`xJFg p)N6` Np!N6JCgX|XfR KN R"h&(i *TBtr R0(*N KN`&JFgp`B@N`t"RC,2 R0(* KN R R"h&0)|g KNpTOL|NuH0O8 yV"h& i $PG KNjgdHyx KN:XO0 KN6oHpN JN("JANx  R  R"A0N0N4B@Np`B@OL NuH0O8E JNgHyx JNXOB@ JNH6onpNЂ"<A0N p AN€ gB|f0G yV"h&$i "R KNC KN <"KAN:AN0NB@NOL NuH<*HEV R"h&&i (h kBC` _fRCf LN(0H"M SNtr R0(*N LN2L<Nu?/ JgHNJ@f EŘfp`fB@$_6Nu/ / $H&I"yV2).H ЀЁA0( $k "Rf|`|h g1@ BBr yV0(.N |&_$_NuH0$HNJc\vG`"JpPAN.J@g@SClv`pPCANfSC|l"J KNV k@lpP@3PgRk@L NuH8(H6t@fEVr@g0t AXWf0(NGHKMPRSr`Vj`x( R"h& i &P LN R0(,B3tr R0(*N z` LN` LN` LN^ LN`pNz`j0rAXWf^0( NGHPRr44,4<4 LNxB@ LN`& LNB` LN`t"RC,r R0(* LNvp`B@LNuH8]OEV(RGƾ6+x7|x R hNtBApCȁ KN B8$ lN R0(, hN7Cx| grHWHoCA N2POHWC0 KNXOpDH82/o>m H*At"RC,2 R0(* hN R"h&0)|g hN:\OLNu/ UO$H"yV>,tCBA yV0(* JNlTO$_Nu/ $Ht"yVC,BA yV0(* JND$_NuH0$H6JAgNGV Sh*g h*g"h& i PN2H ЀЁA"S#H&"Si*g"h "QAN S1C* JNpL Nu?60BgBA0NJ@fp`B@6NuH $H864<2H ЀЁrfV|gvr fH6`*2H ЀЁ父rf4<2H ЀЁrf62H ЀЁ82|fB@`pLNuH0$H&HBCGRCt2+0 JNFS@f r0 JN`p kgL NuH0$H&HBC8GRDt2+0 JNS@f6p kgJCg r J0NzL NuH0&H"yV$i&6)*BDp jf.ERCt2*0 KNS@fr0 KN4x`p jgJDf KN.L NuH0&H"yV$i&6)*BDESCt2*0 KN`S@fr0 KNx`JCnJDf KNL NuH0&H"yV i&"h $Q KNXB KNzL NuBA` Pf4(|0g|g`0NuRAAt hgpNuH0$H:&HBCN:GRC0+|g| g|g`B0+ H@f80`>4H"ҁ҂22H ЀЁA h f0( H@f0` p kgpL (NuH<*H6(IH"ҁҀE&j Hl0N.XO k f6929y4`69*9y,*k MN2+SAgSAg`2*@SAT` 2*@AT0*l@l0,l`Tg _fSM09@` C _f9@f o0L<NuH>O$H6><>/r&jH$ԂԀI(8,:, rWf|gtDg0/vgHoC K0NXOomomo n/l o ,P*hg _f MN"RA0oHN>` g _gS@SGn yV>(*h,fGg8H?@Br0 KN2Gg o "PAZN`0 KNv|g6H"ҁҀI8,:, pl g `pEf lPg 0,H| frp KN(`pADgrDgtDg|Ef EpWf otgrPDg9E BBr0 JNpDgT><:>2H ЀЁIlf:,<`Ggpl grlgl BBr0 JN` otgpDgp@DfN `2H ЀЁKM<p=@=@BnHn C 0 KN,XO=m=mHoHoC ANPOA 2/0/NJ@g=|BBr0- A J0N`Bnp NN :r@gtn=Br<- A J0BBNpEgrm gpDDgrWg0|` 0`B@`pOFL|Nu/ C 094oH q`"CB@`$Qf J`R@XIy2m$_NuH0&H:8$I6pN>4"J20 KN0B@N*L 8NuHO(H8>N BGVpNL"S )мo4 )мN.&Jo SXHCp"QpT.C LpN B@"SXI LN K@|fbpNvpm?rm?tm?pU?rl?CAtlrlplNÔO B@N&VlVl`<:,<,02,AA9@24,BB9A??,?42,0,Nx\Orp LN0p"SXI LN  cC LB@N  CN:`6 S0(*m LN?-?-?-4rB@ LNX\O S0(*m LNN ,OL8Nu/ / O$H(I0&B@` 2A?R@| o2A?/ "JANXO0op`B@O(_$_NuNNNuH O&H:8/ CN؀XOBB@NXO:R@g|g|2H ЀЁs 0AN0O6L0NuH>O.6*I<&hJBfL hmBH$ԂԀI(M g M"N""`*Hn"N0 KNpXOWVWnpl=@rl=A"NA@N J@gH W8(":, pNRE HjHjHjHRr 0N@O`"J NN J@g`C JN Ar09(NJFm(p???*?*?*4BA K0N O 9E `?*?*?*4r0 KNf\OHjHjHjHRr 0NO0*o2*nn|o9F AHr09(N6`\ W0(oZ" fK@pNf|o$p???-?-?-4BA K0NdO `?-?-?-4r0 KN\OB@NOL|xNuH $H:>BCH$ԂԀ82(:2(<`F2H ЀЁAthg,ph f"Cfh `ph gJGmh `>RC<FnFl0LNuA hf ph g"h -f1|!|Ȃ p hgNu/ / QO&oE(r0Nr0N\r0Nr0N2> 0+@k S@?@2kSA?Ato?BA0NB@PO&_$_NuH/`>/0/ lo`oJGmooBA0N2/Nn>?| Gg /g2/ K"@0N>Gf,0/ g~`"JClJDg >/m `>/m `>oBA0N 2/N>@gJCn"/g K"A2/N>GgA"J""غGo0G`0ER@JDg5@Go 2kj`"rEj`5@Go 2kR`pERJDg7G`7GBBr"J0/$ LNBBr0/" LN?/Z?/"?4/(2/*p LN\Opo f2/ f4/`f"NJCoR0/ l?F `?FZBB6H ЀЃ o&20 | L0NJ?/Z?/"?4/(2/*p LN\O`B@NNO2L6/*Gvhxhzh|h0<NJGg6660E62F6BB6666/ "yA09(rNXO`4B@6666660E62F6/9"LA09(rNrXO0<NOLNuQO>?A?B?o Ar09(NPONuHQO68:09(2/N2/09(N>?D0E?@2o?AA09(NPOL8NuH68:09(2NB209(Nl209(NL8NupNpN|NupNtB@NnNuYOHWHoCAN@POpogHWHoCABBrpNfPOXONu@oNu0Nu@lNu0NuPo0Nu?/86Hx"| |N&XOJCg0D|xm |n|vpCg"h1@H8` "P1@H8||am(|zn| `|fx`|fx`|fx0(6Nu/ v@|1C1A0(@1@1B 1o &Nu/ $H0*@H2*HNv2* HNl$_NuH YO$Hr Pg$Jo&`N&0*rhjHHր JNl8r@g*4*f$HWCA09(NXO0/jg|p Rgr Df N6n| JDg0XOLNu/ $HBB2*0N$_NuH(O$H68:I@"J LNJ@gP>?D?j?jC LNJ@g2I"L JNCAN/9"y L209(NLXOOL8NuHO&HANIf:" f LN"&H g "KAN8` CAN,N>&rA8G CN.ANVS" 7\fB7ANHJlrܲg ANB@`CAN(NpOLNu/ OANvgJN`&HHyCAN|x~p>A=x<p|A>x<|<x<p|<x<y>O<x<y><x<y<x<y@<x<y<x<y@<x<y<x<y<x<x<x<p <x>x@< |>~<>??<x??&@~=D@<<<<<<=@=@>0~0@@x!0&Bq  @ @ A@  8 @xpp@p@ @` 0Np@> @<@8` p @p 0` @p>x` p0j 8UUT@UUUU UUUU@7> 6     !"#$&'( )*+ ,-./01234567 9:; <=>@ABCDE)FGH)JKLMNOQRS TUV YZ[ `ab cdefghijklmnopqrst=& W$$$ @8W E W  ZWVW I$" $ W F WUWR W! K"W##"g5%3$&'W)(('2*W ,++ *4-W/..-80W211013W$443m76605N988 7A;::9T=<<%;O   W         8       ?I  O    $ W""@  @A  @ @  P    O*& W$P6   $ W W W W X  F$ W\ VW]tW^ XW _ n!  $ @W @A@ @W!" 0 $##0 "I&%% $Z('' &A*)) (S++u * OPP v  w  x P y z { | }~  >R^~6WIN_RSC.RSC  !d WinLupe 6.50 9v*Setup Darstellung EchtzeitvergrerungEchtzeitschieberMauszeiger mitvergrernInverse Darstellung Optionen Mauszeiger folgenMauszeiger an-/ausschaltenFenster abrundenKompatibilitts-ModusGrow/Shrink-Boxen zeichnen Vergrerung * 2* 4* 8* 1603stufenloser Zoom (02 - 32) : __9SonstigesAbbruchSetzenOKFreewareInformationDie einzig wahre Lupe(es kann nur eine geben ...)gewidmetEleni AvgetidouVersion X.XXvonChristian GrunenbergTraminerweg 5 - 7141 BeilsteinE-Mail : Christian Grunenberg@S2 (MAUS)Christian_Grunenberg@S2.maus.de (Usenet)OkFaster Than LightHilfe Dialoge Window DialsFlying Dials Zoom-Modus VDI-TransformStandardPixel-PackedInterleaved Frequenz ----- Help InformationenSichern WINLUPE Datei Fenster Information ... ^I----------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 Setup ... P Beenden ^Q ffnen ^O Schlieen ^U Wechseln ^WA:WIN_LUPE.INF[1][ | Konnte kein Fenster | ffnen ! ][ Ok ][1][ | Konnte keine Work- | station ffnen ! ][ Ok ][1][ | Nicht genug Speicher | fr Bildschirmpuffer ! ][ Ok ][1][ | Fehler bei der | Initialisierung ! ][ Ok ][1][ | Konnte WIN_LUPE.INF | nicht ffnen ! ][ Ok ][1][ | Schreib-/Lesefehler ! ][ Ok ]Feb 21 1993Bf 1Y~>f Gn|)=dBXo&<Z;`#LuClt"Ho 3Y<M_".;a#JYhx9Fn 6^,Qu W i n L u p e - faster than light -----------------------------------WinLupe ist ein kleines Utility, wel-ches nach dem Freeware-Prinzip verteiltwird. Dies bedeutet, da jeder das Programm kopieren, benutzen und weiter-geben darf, auer es handelt sich um PD-Versender, denn diese mssen sich beimir eine schriftliche Genehmigung ein-holen.Grundstzlich ist das Programm sauberprogrammiert. Es mte also unter allen(Multi-) TOS-Versionen und auf allen(MEGA) ST-(Book)/STE/TT/FALCON-Computernlaufen, da es keinerlei Annahmen bzgl.des Bildschirmaufbaus macht, wasbedeutet, da es auch Grobildschirme,Grafikkarten und True-Color-Darstellunguntersttzt. Eventuell bzw. wahrschein-lich luft es somit auch unter ST-Emulatoren fr MS-DOS und den Amiga.WinLupe lt sich als Programm oder alsAccessory durch einfaches Umbennen vonAPP nach ACC und umgekehrt startenNun zur Beschreibung der Parameter undOptionen in den Dialogen 'Setup' sowie'Sonstiges' : Setup :========= Darstellung : --------------- Echtzeitvergrerung :Die Vergrerung wird stndig mit derim Dialog 'Sonstiges' eingestelltenFrequenz aktualisiert. Echtzeitschieber :Die Schieber des Vergrerungsfensterswerden der Position des Bildausschnittsbei aktivierter Echtzeitvergrerung und'Mauszeiger folgen' angepat. Dies ver-langsamt die Ausgabe erheblich. Mauszeiger mitvergrern :Der Mauszeiger wird - wie der Name schonsagt - mitvergrert. Inverse Darstellung :Die Darstellung im Vergrerungsfensterwird invertiert. Optionen : ------------ Mauszeiger folgen :Der Ausschnitt im Vergrerungsfensterfolgt bei aktivierter Echtzeitvergr-erung dem Mauszeiger. Mauszeiger an-/ausschalten :Bei deaktivierter Option wird nur dannder Mauszeiger korrekt an-/ausge-schaltet, wenn entweder die Echtzeit-vergrerung deaktiviert ist oder derMauszeiger ber einem sichtbaren Teildes Vergrerungsfensters steht. Diesverhindert in der Regel ein Flackerndes Mauszeigers, kann aber in uerstseltenen Fllen zu minimalen Redraw-Fehlern fhren, welche aber kurzfristigsind und nur an den Rndern von Fensternauftreten knnen. Auerdem mu man frdiesen Fall den Mauszeiger mit maximalerGeschwindigkeit ber den Schirm bewegen,d.h. im normalen Anwendungsalltag kommtes zu keinerlei Problemen. Fenster abrunden :Das Vergrerungsfenster wird auf Word-grenzen gerundet, was die Ausgabe etwasbeschleunigt. Weiterhin wird die Gredes Fensters dem Vergrerungsfaktor an-gepat. Kompatibilitts-Modus :Schaltet den an sich notwendigenwind_update()-Aufruf an. Nur bei ausge-schalteter Option erfolgt auch beiaktiven Dialogen, in der Menleiste oderbeim Verschieben von Desktopelementenbzw. Fenstern eine Vergrerung. Dabeikann es zu Redraw-Fehlern kommen, wennsich das Vergrerungs-Fenster und einDialog bzw. Men berlappen oder wennein Fenster ber das WinLupe-Fenster ge-schoben wird. Diese Option ist nur frdie Echtzeitvergrerung relevant undfunktioniert nicht bei aktiven Echtzeit-schiebern. Grow/Shrink-Boxen zeichnen :Beim ffnen/Schlieen von Dialogenwerden die blichen Grow- bzw. Shrink-Boxen gezeichnet. Dies verlangsamt denDialogaufbau nicht unerheblich. Vergrerung : ----------------Wahl des Vergrerungsfaktors zwischenvorgegebenen Faktoren und beliebigemFaktor zwischen 2 und 32. Je grer derFaktor ist, desto schneller ist die Ver-grerung. Sonstiges :============= Dialoge : -----------Wechsel zwischen Fenster-Dialogen undFlyDials. Fensterdialoge knnen stndiggeffnet bleiben, funktionieren auch imHintergrund und die Vergrerung wirdweiterhin aktualisiert. FlyDials unter-brechen die Vergrerung, bentigenSpeicher fr das Fliegen, belegen aberkeine Fenster. Zoom-Modus : --------------Wahl des Vergrerungsmodus zwischensauberer Vergrerung ber VDI-Trans-form oder schnellen Spezial-Routinen frGrafikkarten mit Pixel-Packed/Inter-leaved-Planes oder dem Standard-Format. Frequenz :Die Vergrerungsfrequenz fr die Echt-zeitvergrerung kann hier zwischen 1 Hzund 100 Hz eingestellt werden, wobeidiese Werte nur bei entsprechend schnel-len Computern/Grafikkarten bzw. kleinemVergrerungsfenster oder Verwendung derschnellen Spezial-Vergrerungsroutinen(Zoom-Modus) erreicht werden knnen.WinLupe wurde mit Pure C vonApplication Systems Heidelberg undmeiner eigenen,erweiterten Dialog-Library EnhancedGEM programmiert.Und zum Schlu mchte ich noch ganzherzlich die netteste Frau in diesemden Spiralarm der Galaxis, nmlichEleni Avgetidou, gren. 0#'OOOO'# 0 0  @@@@   0xxxx@P HD"BBAABBD"HP @?          ?pLdCLdp@@@@@@@  @@<???<<# <#<@` 0    00`` >?~ 6 0v0<????????>0,# 0 > #/>Ž®.>N^.n~NnîþĎĮÎÞv _A ASCII-Table   !"#$%&'()*+,-./0123456789:;<=>? ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Cancel A$     š ů    3  T  u Ɩ  Ʒ  C !W" WYVW8X^VXSCRAP.TXT|XCLIPBRDX:\CLIPBRD\SCRAP.*SCRAP.P|8FL6 "p08Zt ,N.` &0z( b| *fF*$Db 2> D.R,H$(6B  $  ( &,$   00&&0> 4  F   LP >Hv"XtJPj"@$p$ jF $\P D<&(P\(^ * 8$ dF &fRT  hVj W i n L u p e - faster than light ----------------------------------- (inkl. Sourcen in Pure C & ASM) Ein Programm von ... Christian Grunenberg Traminerweg 5 D-7141 Beilstein Tel.: 07062 - 5287 Per E-Mail bin ich folgender erreichbar: Christian Grunenberg@S2 (Maus-Netz) Christian_Grunenberg@S2.maus.de (Usenet) In folgenden Mailboxen sind immer die neuesten Versionen der WinLupe vorzufinden : - QUARK HN - MAUS S/S2/S3 WinLupe ist ein kleines Utility, welches nach dem Freeware-Prinzip verteilt wird. Dies bedeutet, da jeder das Programm inkl. der Sourcen kopieren, be- nutzen und weitergeben darf, auer es handelt sich um PD-Versender, denn diese mssen sich bei mir eine schriftliche Genehmigung einholen. Eine kommerzielle Verwendung der WinLupe ist allerdings untersagt bzw. muss mit mir abgesprochen werden. Ebenso ist es verboten, vernderte Versionen der Sourcen bzw. unvoll- stndige Archive zu verbreiten. Bei vorhandenen Fehlern sollte man sich statt- dessen immer mit genauen Fehlermeldungen an mich wenden. Fr das einwandfreie Funktionieren des Utilities oder eventuell entstehender Schden bernehme ich keinerlei Garantie bzw. Verantwortung. Sollte Ihnen das Programm dennoch gefallen oder Sie wollen die neueste Version der WinLupe, so senden Sie mir einfach eine beliebige PD-Diskette (als Anerkennung) und einen frankierten Rckumschlag (fr die neue Version) zu. Grundstzlich ist das Programm sauber programmiert. Es sollte also unter allen TOS-Versionen und auf allen (MEGA) ST(-Book)/STE/TT/FALCON-Computern laufen, da es keinerlei Annahmen bezglich des Bildschirmaufbaus macht, was bedeutet, da es auch Grobildschirme, Grafikkarten und True-Color-Darstellung unter- sttzt. Eventuell bzw. wahrscheinlich luft es somit auch unter ST-Emulatoren fr MS-DOS und den Amiga. WinLupe lt sich sowohl als Programm als auch als Accessory durch einfaches Umbenennen starten. Die Funktionen des Programmes sollten eigentlich fr sich sprechen bzw. sind in der integrierten Hilfe ausreichend erklrt worden. Der Speicherbedarf des Programms wurde so niedrig wie mglich gehalten, wobei jedoch auf die Geschwindigkeit der Vergrerung Rcksicht genommen werden mute, so da das Programm ca. 8 Kb fr interne Tabellen bentigt. Insgesamt bentigt die WinLupe im Grundzustand etwa 68 KB Speicher (inkl. Programmcode/Daten). Ebenso braucht es zwei Bildschirmpuffer fr die Vergrerung, sofern das Fenster geffnet ist. Dies sind auf einem ST max. 96 KB, auf einem TT max. 456KB und auf einem Falcon/030 bei max. Auflsung ca. 2 MB. Aber ich glaube nicht, da jemand die WinLupe im Overscanned- & Interlaced-True-Color-Modus (768*576*65536 Farben) startet, sofern das das AES berhaupt ermglicht. Bei 640*480*256 Farben sind es dann 'nur' noch 912 KB. Legt man Wert auf ein Maximum an Geschwindigkeit, sollte man die Optionen 'Fenster runden' und 'Mauszeiger mitvergrern' aktivieren und die 'Echt- zeitschieber' deaktivieren. Ebenso sollte man eine der vorgegebenen Ver- grerungen (2/4/8/16) whlen und die Vergrerungsfrequenz auf 100 Hz stellen. Auch empfiehlt es sich, sofern der Grafikaufbau der Grafikkarte bzw. des Computers bekannt ist, den Standard-, Pixelpacked- oder Interleaved-Modus zu aktivieren, wobei Geschwindigkeitssteigerungen zwischen 150% und 3000% gegenber der sauberen Vergrerung ber VDI-Transform erreichbar sind. Dennoch (!) findet kein direkter Zugriff auf den Bildschirm statt. Der Standard-Modus arbeitet in allen Auflsungen, bei denen der Bildschirm- aufbau mit dem VDI-Standard-Format bereinstimmt, also z.B. ST- und TT-High. Der Pixelpacked-Modus arbeitet auf denjenigen Grafikkarten, bei denen die einzelnen Bits der Pixel nicht in Planes, sondern direkt hintereinander im Speicher organisiert sind. Dies ist z.B. bei vielen Grafikkarten im 8/15/16/24/32-Bit-Modus der Fall, was einer Farbanzahl von je 256,32768,65536 oder 16.7 Millionen entspricht. Ebenso gibt es den Interleaved-Modus, der bei einem Grafikaufbau, der denjenigem des ST/TT entspricht, funktioniert, d.h. die Planes der Pixel liegen verschachtelt hintereinander im Speicher. Dies funktioniert in allen ST- und TT-Auflsungen sowie in allen Falcon-Grafik-Modi auer dem True-Color-Modus, bei dem in den Pixel-Packed-Modus geschaltet werden mu. Die Option 'Kompatibilitts-Modus' aktiviert den an sich notwendigen wind_update()-Aufruf. Nur bei deaktivierter Option erfolgt auch bei aktiven Dialogen, in der Menleiste oder beim Verschieben von Desktopelementen bzw. Fenstern eine Vergrerung im Fenster. Dabei kann es zu Redraw-Fehlern kommen, wenn sich das WinLupe-Fenster und ein Dialog/Men berlappen bzw. wenn ein Fenster ber das WinLupe-Fenster geschoben wird. Bei deaktivierter Option 'Mauszeiger an-/ausschalten' wird nur dann der Mauszeiger korrekt an-/ausgeschaltet, wenn entweder die Echtzeitvergrerung deaktiviert ist oder der Mauszeiger ber einem sichtbaren Teil des Fensters steht. Dies verhindert in der Regel ein Flackern des Mauszeigers, kann aber in uerst seltenen Fllen zu minimalen Redraw-Fehlern fhren, welche aber kurz- fristig sind und nur an den Rndern von Fenstern auftreten knnen. Auerdem mu man fr diesen Fall den Mauszeiger mit maximaler Geschwindigkeit ber den Schirm bewegen, d.h. im normalen Anwendungsalltag kommt es zu keinerlei Problemen. WinLupe wurde mit Pure C von Application Systems Heidelberg und meiner eigenen, erweiterten Dialog-Library EnhancedGEM (vergleichbar mit FlyDials, MagicDials,Ruby,XFormDo-Lib,Wega-DK,NeXT-GEM oder Let 'em fly) programmiert. Als Erweiterungen fr WinLupe+ Version 1.00 sind geplant: - Raster ber dem vergrerten Ausschnitt - Anzeige der Mauskoordinaten - Speicherbedarf an aktuelle Fenstergre anpassen Hinweis : Die Infofiles der verschiedenen Versionen sind nicht kompatibel zueinander, d.h. es mssen bei jeder neuen Version die Einstellungen neu vorgenommen und danach ein Infofile erstellt werden. Wichtig : Benutzt man ein altes Infofile weiter, so kann es entweder zu einer Fehlermeldung oder Abstrzen kommen !!! Geschwindigkeit der WinLupe : (alle Zeiten in ms) ================================================= Die u.a. Zeiten wurden in der ST-High-Auflsung gemessen, wobei das WinLupe-Fenster so gro wie der Bildschirm war und die Option 'Fenster runden' ausgeschaltet war. Dies bedeutet, da die Zeiten die langsamsten Anwendungsflle darstellen, denn die Geschwindigkeit der Zoomroutinen kommt erst bei aktivierter 'Fenster runden'-Option zur Geltung. Auch profitieren sie sehr stark von einem Blitter, wodurch bei optimal eingestellten Parametern der WinLupe und vorhandenem Blitter die Geschwindigkeit bis zu 3 mal so hoch ist wie in den unten angegebenen Fllen. Bei einer Fenstergre von etwa einem Viertel des Bildschirms sind Vergrerungsraten von ber 25 Hz auf einem ST ohne Blitter, ber 35 Hz mit Blitter und ber 60 Hz auf einem MEGA/STE erreichbar. Die WinLupe drfte auf einem TT in ST-Auflsungen etwa die zwei- bis dreifache Geschwindigkeit des MEGA/STE erreichen. In TT-Auflsungen wird etwa die gleiche Geschwindigkeit erreicht, da das zu vergrernde Datenvolumen entsprechend grer ist. Vergrerungsmodus : VDI-Transform ---------------------------------- Vergrerung | ATARI ST | MEGA/STE&NVDI | -------------+-------------------+-------------------+ | Zoom | All | Zoom | All | -------------+---------+---------+---------+---------+ 2 | 50 | 325 | 30 | 110 | 3 | 40 | 275 | 25 | 95 | 4 | 30 | 265 | 20 | 85 | 6 | 25 | 250 | 20 | 80 | 8 | 20 | 240 | 15 | 75 | 16 | 20 | 260 | 15 | 85 | Vergrerungsmodus : Standard ---------------------------------- Vergrerung | ATARI ST | MEGA/STE&NVDI | -------------+-------------------+-------------------+ | Zoom | All | Zoom | All | -------------+---------+---------+---------+---------+ 2 | 50 | 280 | 30 | 60 | 3 | 40 | 230 | 25 | 55 | 4 | 30 | 210 | 20 | 45 | 6 | 25 | 205 | 20 | 45 | 8 | 20 | 185 | 15 | 40 | 16 | 20 | 190 | 15 | 40 | Zoom -> eigentliche Vergrerungsroutine All -> kompletter Bildaufbau Die Vergrerungszeiten des Interleaved-Modus sind etwas schlechter als die des Standard-Modus, hingegen sind die des Pixel-Packed-Modus meistens um einige Faktoren besser, wobei man allerdings bedenken mu, da das Datenvolumen im Pixel-Packed-Modus um ein Vielfaches hher ist als in monochromem Auflsungen. Allgemein sind die optimierten Routinen ohne VDI-Transform besonders dann sinnvoll, wenn weder ein Blitter oder Grafikprozessor noch NVDI vorhanden sind. Ebenso hngt die Geschwindigkeit der Pixel-Packed- Routinen stark von der Grafikkarte ab. Bei 2,4 oder 16 Farben sind die Zeiten mit denen des Standard-Modus quivalent, bei mehr Farben sind teilweise entschieden hhere Geschwindigkeiten mglich. Hier einige Beispiele : ST-High/TT-High (evtl. mit Overscan) : Standard monochrome Grafikkarten : Standard ST/TT-Low/Mid (evtl. mit Overscan) : Interleaved Falcon-True-Color-Modus : Pixel-Packed Grafikkarten mit mind. 4 Farben : Pixel-Packed Ciao, Criss ... P.S: Falls jemand nicht wei, wofr er die WinLupe gebrauchen kann, hier ein paar Einsatzgebiete : - Programme,bei denen es auf exakte Mauspositionierung ankommt, also z.B. Grafik- und Zeichenprogramme, aber auch DTP - berprfung von eigenen Grafik- und Zeichenroutinen - Grafikprogramme, die keine eigene bzw. eine zu langsame oder unbrauchbare Lupenfunktion besitzen - genaues Betrachten von Grafiken/Icons,um diese fr eigene Ideen verwenden zu knnen Und zum Schlu noch die blichen Gre und Danksagungen: - Eleni Avgetidou, der nettesten und huebschesten Frau in diesem den Spiralarm der Galaxis, fr ihre Einmaligkeit sowie der Tatsache, da sie mich fast mein Studium gekostet htte, und anderen Sachen, die hier (leider) nicht erwhnt werden knnen - Markus - meinem Bruder - fr seine hbschen Grafiken in den WinLupe-Dialogboxen, harter Kritik und Beta-Testing - Alvar Freude (Alvi Joy) und Peter Scheerer fr unermdliche Kritik, Beta-Testing und moralische Untersttzung - Achim Wilhelm fr die Beta-Tests auf einem Falcon/030 - Frauke Cremer (Sysopine) fr ihre (manchmal) funktionierende Quark in Heilbronn - Gun's Roses,Metallica,AC/DC,Queen,U2,Judas Priest,Warlock und Bon Jovi sowie anderen fr die gute Musik - und alle, die meinen, sie htten hier Erwhnung finden sollen WinLupe Version 6.50 - Faster Than Light,inkl. Quelltexte in Pure C & ASM Vergrerungsfaktor/-frequenz variabel,Fenster-/fliegende Dialoge,Echtzeit- vergrerung,inverse Darstellung,Mauszeiger folgen,optimierte Vergrerungs- routinen fr viele Grafikformate,untersttzt MultiTOS,Bedienung von Fenster- dialogen im (!) Hintergrund,erweiterte Hilfe ******************************************************************** Deze diskette is samengesteld door de Stichting ST, Postbus 11129, 2301 EC Leiden. Onze bibliotheek van public domain programma's omvat op dit moment (herfst 1993) al meer dan negenhonderd disks. Daarop vindt u programma's op elk gebied, van tekstverwerker en database tot de leukste spelletjes, de fraaiste tekenprogramma's en de handigste utilities. Ook bevat onze bibliotheek een speciale afdeling voor public domain disks met Macintosh software, die te gebruiken zijn onder de ALADIN emulator. Deze MAC-PD serie bevat tot nu toe ongeveer vijfendertig disks. ******************************************************************** U vindt in het twee maandelijks tijdschrift "ST" (Onafhankelijk tijd- schrift van en voor gebruikers van Atari ST computers) een overzicht en een bespreking van de inhoud van de nieuwe public-domain diskettes. Dit tijdschrift bevat tevens een bestelkaart zodat U vlot over de software kunt beschikken. De november/december uitgave 1993 bevat een compleet overzicht van de Public Domain bibliotheek op dat moment. De Stichting ST geeft ook een speciale PD catalogus disk (database met filenamen) uit. Deze public domain disk is geproduceerd en gedistribueerd door: ************** Stichting ST afd. Software Bakkersteeg 9A 2311 RH LEIDEN ************** Ondanks onze controle komt het af en toe voor dat een diskje niet goed is gecopieerd.Mocht U dit overkomen, aarzel dan niet en stuur de defecte disk aan ons terug. U krijgt dan direct een vervangende disk toegestuurd. ************************************************************************ Teneinde het voor ons mogelijk te maken om productiefouten op te sporen en vervolgens in de toekomst te vermijden, zijn alle disks, geproduceerd door de Stichting ST, voorzien van een groen productienummer. ************************************************************************