Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

xxx.c

Go to the documentation of this file.
00001 #include "coxplot.h"
00002 
00003 #include <X11/Intrinsic.h>
00004 #include <X11/StringDefs.h>
00005 #include <X11/Shell.h>
00006 #include <Xm/XmAll.h>
00007 
00008 /*************************************************************************
00009  *************************************************************************
00010  *************************************************************************/
00011 
00012 static char * vcl[] =  { "StaticGray"  , "GrayScale" , "StaticColor" ,
00013                          "PseudoColor" , "TrueColor" , "DirectColor"  } ;
00014 
00015 static XImage * xim    = NULL ;
00016 static int      xim_ww = 0 ;
00017 static int      xim_hh = 0 ;
00018 
00019 #include "math.h"
00020 
00021 static int need_plot = 1 ;
00022 
00023 #define STATUS(str) fprintf(stderr,"-- " str "\n")
00024 
00025 void make_plot(void)
00026 {
00027    integer ii,jj,kk,ll ;
00028    float a,b,c,d,e,f,g,h ;
00029 
00030    /*----- make the graph plot -----*/
00031 
00032 STATUS("enter make_plot") ;
00033 
00034    ii = create_memplot( "Elvis" , 0.0 ) ;
00035    if( ii != 0 ){ fprintf(stderr,"Can't create memplot Elvis!\n") ; exit(1) ; }
00036 
00037 STATUS("created Elvis") ;
00038 
00039    set_color_memplot( 0.0 , 0.0 , 0.0 ) ;
00040    set_thick_memplot( 0.0 ) ;
00041 
00042 STATUS("set color and thickness") ;
00043 
00044    plotpak_set( 0.1,1.25 , 0.1,0.95 , 0.0,10.0 , 0.0,5.0 , 1 ) ;
00045 
00046 STATUS("plotpak_set") ;
00047 
00048    plotpak_periml( 5,10 , 5,10 ) ;
00049 
00050 STATUS("drew perimeter") ;
00051 
00052    set_color_memplot( 0.0 , 0.0 , 0.9 ) ;
00053    set_thick_memplot( 0.002 ) ;
00054    plotpak_frstpt( 0.0 , 0.0 ) ;
00055    for( ii=0 ; ii < 1000 ; ii++ ){
00056       a = 0.01 * ii ; b = sin(a) ; b = 5.0 * b * b / (1.0+0.1*a) ;
00057       plotpak_vector( a , b ) ;
00058    }
00059 
00060 STATUS("drew sin") ;
00061 
00062    set_color_memplot( 0.9 , 0.0 , 0.0 ) ;
00063    set_thick_memplot( 0.005 ) ;
00064    plotpak_frstpt( 0.0 , 5.0 ) ;
00065    for( ii=0 ; ii < 1000 ; ii++ ){
00066       a = 0.01 * ii ; b = cos(a) ; b = 5.0 * b * b / (1.0+0.1*a) ;
00067       plotpak_vector( a , b ) ;
00068    }
00069 
00070 STATUS("drew cos") ;
00071 
00072    fprintf(stderr,"-- Created memplot Elvis: %d\n",nline_active_memplot()) ;
00073 
00074 #if 1
00075    /*----- make the surface plot -----*/
00076 
00077    ii = create_memplot( "Pelvis" , 1.0 ) ;
00078    if( ii != 0 ){ fprintf(stderr,"Can't create memplot Pelvis!\n") ; exit(1) ; }
00079 
00080 STATUS("created Pelvis") ;
00081 
00082 #define NX 90
00083 #define NY 90
00084    { float * x , * y , * z , dx , dy ;
00085      x = (float *) malloc( sizeof(float) * NX ) ;
00086      y = (float *) malloc( sizeof(float) * NY ) ;
00087      z = (float *) malloc( sizeof(float) * NX*NY ) ;
00088      dx = 2.0/(NX-1.0) ; dy = 2.0/(NY-1.0) ;
00089      for( ii=0 ; ii < NX ; ii++ ) x[ii] = -1.0 + ii * dx ;
00090      for( ii=0 ; ii < NY ; ii++ ) y[ii] = -1.0 + ii * dy ;
00091      for( jj=0 ; jj < NY ; jj++ ){
00092         for( ii=0 ; ii < NX ; ii++ )
00093            z[ii+jj*NX] = sin( 3.0*(x[ii]-y[jj]) + 10.0*x[ii]*y[jj] )
00094                         / ( 1.0 + x[ii]*x[ii] + y[jj]*y[jj] ) ;
00095      }
00096 
00097 STATUS("created srface arrays") ;
00098 
00099      set_thick_memplot( 0.0 ) ;
00100      set_color_memplot( 0.0 , 0.0 , 0.0 ) ;
00101      plotpak_srface( x , y , z , NX , NY , 45.0 , 33.0 ) ;
00102 
00103 STATUS("plotpak_srface") ;
00104      free((char *)x) ; free((char *)y) ; free((char *)z) ;
00105 STATUS("free srface arrays") ;
00106 
00107      set_color_memplot( 1.0 , 0.0 , 0.0 ) ;
00108      plotpak_set( 0.0,1.0 , 0.0,1.0 , 0.0,1.0 , 0.0,1.0 , 1 ) ;
00109      plotpak_pwritf( 0.5 , 0.94 , "Sample Surface Plot" , 20 , 0 , 0 ) ;
00110 STATUS("pwritf") ;
00111 
00112      fprintf(stderr,"-- Created memplot Pelvis: %d\n",nline_active_memplot()) ;
00113    }
00114 #endif
00115 
00116    need_plot = 0 ;
00117    return ;
00118 }
00119 
00120 void elvis_CB( Widget w , XtPointer cd , XtPointer cb )
00121 {
00122    XmDrawingAreaCallbackStruct * cbs = (XmDrawingAreaCallbackStruct *) cb ;
00123    XExposeEvent * ev = (XExposeEvent *) cbs->event ;
00124    int start , end ;
00125    static int ncall = 0 ;
00126 
00127    if( cbs->reason != XmCR_EXPOSE || ev->count > 0 ) return ;
00128 
00129 STATUS("enter elvis_CB") ;
00130 
00131    if( need_plot ){
00132       make_plot() ;
00133       set_X11_background( XtDisplay(w) , XtWindow(w) , 255,255,255 ) ;
00134    }
00135    XClearWindow( XtDisplay(w) , XtWindow(w) ) ;
00136 
00137 #if 1
00138    if( ncall%2 == 0 ) set_active_memplot( "Elvis" ) ;
00139    else               set_active_memplot( "Pelvis" ) ;
00140    ncall++ ;
00141 #endif
00142 
00143 STATUS("XClearWindow") ;
00144 
00145    start = end = 0 ;
00146 #if 0
00147    memplot_to_X11( XtDisplay(w) , XtWindow(w) ) ;
00148 #else
00149    memplot_to_X11_free( XtDisplay(w) , XtWindow(w) ) ;
00150 #endif
00151    return ;
00152 }
00153 
00154 #define DEATH
00155 void fred_CB( Widget w , XtPointer qd , XtPointer qb )
00156 {
00157 #ifdef DEATH
00158    exit(0) ;
00159 #else
00160    X11_colordef * cd ;
00161 
00162    cd = get_X11_colordef( XtDisplay(w) , XtWindow(w) ) ;
00163 
00164    if( cd == NULL ){
00165       fprintf(stderr,"get_X11_colordef fails!\n") ; return ;
00166    }
00167 
00168    if( cd->classKRH == TrueColor ){
00169       fprintf(stderr,"get_X11_colordef: visual class=TrueColor depth=%d\n"
00170                      "  masks:  red = %x  green = %x  blue = %x\n"
00171                      "  shifts: red = %d  green = %d  blue = %d\n",
00172                      cd->depth ,
00173                      cd->rrmask , cd->ggmask , cd->bbmask ,
00174                      cd->rrshift , cd->ggshift , cd->bbshift ) ;
00175 
00176    } else if ( cd->classKRH == PseudoColor ){
00177       int ii ;
00178       fprintf(stderr,"get_X11_colordef: visual class=PseudoColor depth=%d colors=%d\n",
00179                      cd->depth , cd->ncolors ) ;
00180       for( ii=0 ; ii < cd->ncolors ; ii++ ){
00181          fprintf(stderr,"  %3d: r=%4x g=%4x b=%4x\n",
00182                         ii,cd->rr[ii],cd->gg[ii],cd->bb[ii]) ;
00183       }
00184    }
00185 
00186    FREE_X11_colordef(cd) ;
00187 #endif /* DEATH */
00188 }
00189 
00190 int main( int argc , char * argv[] )
00191 {
00192         XtAppContext    app;            /* the application context */
00193         Display         *dpy;           /* display */
00194         Colormap        colormap;       /* created colormap */
00195         XVisualInfo     vinfo;          /* template for find visual */
00196         Visual          *vis ;          /* the Visual itself */
00197         XVisualInfo     *vinfo_list;    /* returned list of visuals */
00198         int             count;          /* number of matchs (only 1?) */
00199         int             vid , stat ;
00200         Widget          fred , fff , top ;
00201 
00202         if( argc < 2 ){ fprintf(stderr,"Usage: xxx visid\n") ; exit(0) ; }
00203 
00204         top = XtVaAppInitialize( &app , "xxx" , NULL , 0 , &argc,argv , NULL,NULL ) ;
00205         dpy = XtDisplay (top);
00206 
00207 STATUS("XtVaAppInitialize") ;
00208 
00209         vid = strtol( argv[1] , NULL , 0 ) ;
00210         vinfo.visualid = (VisualID) vid ;
00211         vinfo_list = XGetVisualInfo (dpy, VisualIDMask, &vinfo, &count);
00212         if( count == 0 || vinfo_list == NULL ){
00213            fprintf(stderr,"no such visual\n");exit(1);
00214         }
00215         vinfo = vinfo_list[0] ;
00216 
00217 STATUS("XGetVisualInfo") ;
00218 
00219         vid = vinfo.visualid ;
00220         vis = vinfo.visual ;
00221 
00222         if( vis != DefaultVisual(dpy,vinfo.screen) ){
00223            colormap = XCreateColormap( dpy, RootWindowOfScreen(XtScreen(top)) ,
00224                                        vis , AllocNone ) ;
00225 STATUS("XCreateColormap") ;
00226         } else {
00227            colormap = DefaultColormap(dpy,vinfo.screen) ;
00228 STATUS("DefaultColormap") ;
00229         }
00230 
00231         XtVaSetValues( top ,
00232                           XtNborderColor , 0 ,
00233                           XtNbackground  , 0 ,
00234                           XtNdepth       , vinfo.depth ,
00235                           XtNcolormap    , colormap ,
00236                           XtNvisual      , vis ,
00237                        NULL ) ;
00238 
00239 STATUS("XtVaSetValues") ;
00240 
00241         fff = XtVaCreateWidget( "dialog" , xmFormWidgetClass , top ,
00242                                    XmNborderWidth , 0 ,
00243                                 NULL ) ;
00244 
00245 STATUS("XtVaCreateWidget") ;
00246 
00247 #ifndef LABEL_ARG
00248 #define LABEL_ARG(str) \
00249   XtVaTypedArg , XmNlabelString , XmRString , (str) , strlen(str)+1
00250 #endif
00251 
00252         fred = XtVaCreateManagedWidget( "dialog" , xmPushButtonWidgetClass , fff ,
00253                                           LABEL_ARG("Death") ,
00254                                           XmNtopAttachment    , XmATTACH_FORM ,
00255                                           XmNleftAttachment   , XmATTACH_FORM ,
00256                                           XmNrightAttachment  , XmATTACH_FORM ,
00257                                          NULL ) ;
00258         XtAddCallback( fred , XmNactivateCallback , fred_CB , NULL ) ;
00259 
00260 STATUS("XtVaCreateManagedWidget: button") ;
00261 
00262         fred = XtVaCreateManagedWidget( "dialog" , xmDrawingAreaWidgetClass , fff ,
00263                                           XmNtopAttachment    , XmATTACH_WIDGET ,
00264                                           XmNtopWidget        , fred ,
00265                                           XmNleftAttachment   , XmATTACH_FORM ,
00266                                           XmNrightAttachment  , XmATTACH_FORM ,
00267                                           XmNbottomAttachment , XmATTACH_FORM ,
00268                                         NULL ) ;
00269 
00270         XtAddCallback( fred , XmNexposeCallback , elvis_CB , NULL ) ;
00271 
00272 STATUS("XtVaCreateManagedWidget: drawing area") ;
00273 
00274         xim_ww = xim_hh = 77 ;
00275 
00276         XtVaSetValues( top ,
00277                          XmNwidth , xim_ww ,
00278                          XmNheight , xim_hh+40 ,
00279                        NULL ) ;
00280 
00281         XtManageChild(fff) ;
00282         XtRealizeWidget(top);
00283 
00284 STATUS("XtVaCreateManagedWidget: realize") ;
00285 
00286         XtAppMainLoop(app);
00287 
00288         exit(0); /* never reached */
00289 }
 

Powered by Plone

This site conforms to the following standards: