/* rubyinit.c derived and compiled from `stuff\rgemhndl.c' Copyright (C) 1987, 1992 Markus M. Nick --------------------------------------------------------------- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the documentation `docs\ruby.tex' for more details. --------------------------------------------------------------- Initialisierung, Bereitstellung und Bereinigung der von Ruby ben”tigten globalen Variablen, die auch sonst von allgemeinem Interesse sind. Da die Variablen oft auch von anderen Libraries schon bereit- gestellt werden, kann man sich diesen Source durch bedingte Compilierung sehr leicht anpassen. Anpassung (via Commandline-Parameter beim Compilieren): -DNO_xywhdesk kein xdesk, ydesk, wdesk, hdesk n”tig -DNO_lib_handle kein lib_handle n”tig -DNO_std_fdb kein std_fdb n”tig Verwendung: ruby_init() irgendwo zwischen appl_init() und dem ersten Aufruf einer Ruby-Funktion aufrufen. ruby_init() liefert im Fehlerfall FALSE (Workstation kann nicht ge”ffnet werden o.„.) und TRUE, wenn alles ok ist. ruby_exit() vor appl_exit() aufrufen, um die lib_handle-Workstation zu schliežen. Bitte auch aufrufen, wenn die Funktion evtl. leer ist. ruby_exit() k”nnte irgendwann mal unverhofft Code enthalten, den Sie nicht erwarten. Nutzungsbedingungen: Es gelten die in der Dokumentation `docs\ruby.tex' aufgefhrten Bedingungen. Bringen Sie bitte kein individuell abge„ndertes rubyinit.c ohne deutliche Hinweise auf die Žnderungen in Umlauf. Achten Sie bitte darauf, daž dieser Source zusammen mit Ruby unver„ndert weitergegeben werden muž. Ihr individuelles rubyinit.c k”nnen Sie zusammen mit Ruby gerne zus„tzlich weitergeben, wenn Sie deutlich darauf hinweisen, was Original und was Ihre Fassung ist. Autoren: Markus M. Nick History: 04.04.92 mmn v1.0 got started... */ #define __RUBY_INIT__ 1 #include #include #include #include #include #include "portab.h" #ifndef NO_xywhdesk WORD xdesk, ydesk, wdesk, hdesk; #endif #ifndef NO_std_fdb MFDB std_fdb; /* standard FDB */ #endif #ifndef NO_lib_handle int lib_handle; #endif BOOLEAN ruby_init() { int work_out[57]; int dum; /* Handle der physikalischen Screen-Workstation von AES besorgen */ int phys_handle = graf_handle(&dum, &dum, &dum, &dum); #ifndef NO_lib_handle static int work_in[] = { 1, /* Bildschirmtreiber */ 1, BLACK, /* Linientyp, -farbe */ 1, BLACK, /* Markertyp, -farbe */ 1, BLACK, /* Textstil, -farbe */ FIS_SOLID, 1, WHITE,/* Fuelltyp, Fuellmusterindex, -farbe */ 2 /* Koordinatenflag */ }; work_in[0] = Getrez()+2; lib_handle = phys_handle; v_opnvwk(work_in, &lib_handle, work_out); if (lib_handle <= 0) return FALSE; #endif #ifndef NO_std_fdb std_fdb.fd_w = work_out[0]+1; std_fdb.fd_h = work_out[1]+1; std_fdb.fd_wdwidth = std_fdb.fd_w / 16 /* * std_fdb.fd_nplanes*/ ; std_fdb.fd_addr = NULL; std_fdb.fd_stand = 0; /* Rasterkoordinatensystem */ vq_extnd(phys_handle, TRUE, work_out); std_fdb.fd_nplanes = work_out[4]; #endif #ifndef NO_xywhdesk wind_get(0, WF_WORKXYWH, &xdesk,&ydesk,&wdesk,&hdesk); #endif return TRUE; } void ruby_exit() { #ifndef NO_lib_handle v_clsvwk(lib_handle); #endif } /* -eof- */