00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef TRIALDISPLAY_STANDALONEDISPLAYAPP_H
00029 #define TRIALDISPLAY_STANDALONEDISPLAYAPP_H
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 extern "C" {
00051
00052 #if defined(__APPLE__)
00053
00054
00055 extern void (*late_binding_pgplot_driver_1)(int *, float *, int *, char *,
00056 int *, int);
00057 extern void (*late_binding_pgplot_driver_2)(int *, float *, int *, char *,
00058 int *, int);
00059 extern void (*late_binding_pgplot_driver_3)(int *, float *, int *, char *,
00060 int *, int);
00061 #if defined(__USE_WS_X11__) || defined(__MAC_10_6)
00062 extern void add_late_binding_pgdriver(void (*driver)(int *, float *, int *, char *, int *, int *, int));
00063 extern void wcdriv_(int *, float *, int *, char *, int *, int *, int);
00064 #define INITIALIZE_PGPLOT add_late_binding_pgdriver(wcdriv_);
00065 #else
00066 extern void wcdriv_(int *, float *, int *, char *, int *, int);
00067 #define INITIALIZE_PGPLOT \
00068 if ( ! late_binding_pgplot_driver_1 ) \
00069 late_binding_pgplot_driver_1 = wcdriv_; \
00070 else if ( ! late_binding_pgplot_driver_2 ) \
00071 late_binding_pgplot_driver_2 = wcdriv_; \
00072 else if ( ! late_binding_pgplot_driver_3 ) \
00073 late_binding_pgplot_driver_3 = wcdriv_; \
00074 else \
00075 std::cerr << "no free late-binding driver slots" << std::endl;
00076
00077 #endif
00078
00079
00080 #else
00081 #define INITIALIZE_PGPLOT
00082
00083
00084
00085 void wcdriv_(int *, float *, int *, char *, int*, int *, int);
00086
00087 void nudriv_(int *, float *, int *, char *, int *, int);
00088
00089
00090
00091
00092 int grexec_(int *idev, int *ifunc, float *rbuf, int *nbuf,
00093 char *chr, int *lchr, int len) {
00094 static int one = 1;
00095 switch (*idev) {
00096 case 0:
00097 rbuf[0] = float(2);
00098 *nbuf = 1;
00099 break;
00100 case 1:
00101 nudriv_(ifunc, rbuf, nbuf, chr, lchr, len);
00102 break;
00103 case 2:
00104 wcdriv_(ifunc, rbuf, nbuf, chr, lchr, &one, len);
00105 break;
00106 default:
00107 std::cerr << "StandAloneDisplayApp: unknown pgplot device " << *idev
00108 << std::endl;
00109 break;
00110 }
00111 return 0;
00112 }
00113 #endif
00114
00115 }
00116
00117
00118
00119 #endif