📄 mpe_graphicsf.c
字号:
/* (C) 2001 by Argonne National Laboratory. See COPYRIGHT in top-level directory.*//* mpe_graphics.c *//* Custom Fortran interface file */#include <stdio.h>#include <string.h>#include "mpe_conf.h"#include "mpe_graphics_conf.h"#ifdef POINTER_64_BITS#define MPE_INTERNAL#endif#include "mpe_graphics.h"#include "mpetools.h"#include "basex11.h"#ifndef HAVE_MPI_COMM_F2C#define MPI_Comm_c2f(comm) (MPI_Fint)(comm)#define MPI_Comm_f2c(comm) (MPI_Comm)(comm)#endiftypedef MPI_Fint MPE_Fint;#ifdef POINTER_64_BITS/* Assume Fortran ints are 32 bits */#define MPE_XGraph_c2f(xgraph) (MPE_Fint)(xgraph->fort_index)extern MPE_XGraph MPE_fort_head;static MPE_XGraph MPE_XGraph_f2c( MPE_Fint xgraph ) { MPE_XGraph p = MPE_fort_head; while (p && p->fort_index != xgraph ) p = p->next; return p;}#else#define MPE_XGraph_c2f(xgraph) (MPE_Fint)(xgraph)#define MPE_XGraph_f2c(xgraph) (MPE_XGraph)(xgraph)#endif#define MPE_Color_c2f(color) (MPE_Fint)(color)#define MPE_Color_f2c(color) (MPE_Color)(color)/* In order to suppress warnings about prototypes, each routine is prototyped right before the definition */#ifdef MPI_BUILD_PROFILING#ifdef F77_NAME_UPPER#define mpe_open_graphics_ PMPE_OPEN_GRAPHICS#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_open_graphics_ pmpe_open_graphics__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_open_graphics_ pmpe_open_graphics#else#define mpe_open_graphics_ pmpe_open_graphics_#endif#else#ifdef F77_NAME_UPPER#define mpe_open_graphics_ MPE_OPEN_GRAPHICS#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_open_graphics_ mpe_open_graphics__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_open_graphics_ mpe_open_graphics#endif#endifvoid mpe_open_graphics_( MPE_Fint *, MPE_Fint *, char *, MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint );void mpe_open_graphics_( MPE_Fint *graph, MPE_Fint *comm, char *display, MPE_Fint *x, MPE_Fint *y, MPE_Fint *w, MPE_Fint *h, MPE_Fint *is_collective, MPE_Fint *__ierr, MPE_Fint display_len ){ MPE_XGraph local_graph; char *local_display; int local_display_len; int ii; /* trim the trailing blanks in display */ for ( ii = (int) display_len-1; ii >=0; ii-- ) if ( display[ii] != ' ' ) break; if ( ii < 0 ) { local_display_len = 0; local_display = NULL; } else { local_display_len = ii + 1; local_display = (char *) MALLOC( (local_display_len+1) * sizeof(char) ); strncpy( local_display, display, local_display_len ); local_display[ local_display_len ] = '\0'; } *__ierr = MPE_Open_graphics( &local_graph, MPI_Comm_f2c(*comm), local_display, (int)*x, (int)*y, (int)*w, (int)*h, (int)*is_collective ); *graph = MPE_XGraph_c2f(local_graph); if ( local_display ) FREE( local_display );}#ifdef MPI_BUILD_PROFILING#ifdef F77_NAME_UPPER#define mpe_capturefile_ PMPE_CAPTUREFILE#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_capturefile_ pmpe_capturefile__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_capturefile_ pmpe_capturefile#else#define mpe_capturefile_ pmpe_capturefile_#endif#else#ifdef F77_NAME_UPPER#define mpe_capturefile_ MPE_CAPTUREFILE#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_capturefile_ mpe_capturefile__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_capturefile_ mpe_capturefile#endif#endifvoid mpe_capturefile_( MPE_Fint *, char *, MPE_Fint *, MPE_Fint *, MPE_Fint );void mpe_capturefile_( MPE_Fint *graph, char *fname, MPE_Fint *freq, MPE_Fint *__ierr, MPE_Fint fname_len ){ char *local_fname; int local_fname_len; int ii; /* trim the trailing blanks in fname */ for ( ii = (int) fname_len-1; ii >=0; ii-- ) if ( fname[ii] != ' ' ) break; if ( ii < 0 ) ii = 0; local_fname_len = ii + 1; local_fname = (char *) MALLOC( (local_fname_len+1) * sizeof(char) ); strncpy( local_fname, fname, local_fname_len ); local_fname[ local_fname_len ] = '\0'; *__ierr = MPE_CaptureFile( MPE_XGraph_f2c(*graph), local_fname, (int)*freq ); if ( local_fname ) FREE( local_fname );}#ifdef MPI_BUILD_PROFILING#ifdef F77_NAME_UPPER#define mpe_draw_point_ PMPE_DRAW_POINT#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_draw_point_ pmpe_draw_point__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_draw_point_ pmpe_draw_point#else#define mpe_draw_point_ pmpe_draw_point_#endif#else#ifdef F77_NAME_UPPER#define mpe_draw_point_ MPE_DRAW_POINT#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_draw_point_ mpe_draw_point__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_draw_point_ mpe_draw_point#endif#endifvoid mpe_draw_point_( MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint * );void mpe_draw_point_( MPE_Fint *graph, MPE_Fint *x, MPE_Fint *y, MPE_Fint *color, MPE_Fint *__ierr ){ *__ierr = MPE_Draw_point( MPE_XGraph_f2c(*graph), (int)*x, (int)*y, MPE_Color_f2c(*color) );}#ifdef MPI_BUILD_PROFILING#ifdef F77_NAME_UPPER#define mpe_draw_points_ PMPE_DRAW_POINTS#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_draw_points_ pmpe_draw_points__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_draw_points_ pmpe_draw_points#else#define mpe_draw_points_ pmpe_draw_points_#endif#else#ifdef F77_NAME_UPPER#define mpe_draw_points_ MPE_DRAW_POINTS#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_draw_points_ mpe_draw_points__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_draw_points_ mpe_draw_points#endif#endifvoid mpe_draw_points_( MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint * );void mpe_draw_points_( MPE_Fint *graph, MPE_Fint *points, MPE_Fint *npoints, MPE_Fint *__ierr ){ MPE_Point *local_points; MPE_Fint *fpoint; int Npts; int ii; Npts = (int)*npoints; local_points = ( MPE_Point * ) MALLOC( Npts * sizeof( MPE_Point ) ); fpoint = points; for ( ii = 0; ii < Npts; ii++ ) { local_points[ ii ].x = (int) *fpoint; fpoint ++; local_points[ ii ].y = (int) *fpoint; fpoint ++; local_points[ ii ].c = MPE_Color_f2c(*fpoint); fpoint ++; } *__ierr = MPE_Draw_points( MPE_XGraph_f2c(*graph), local_points, Npts ); if ( local_points ) FREE( local_points );}#ifdef MPI_BUILD_PROFILING#ifdef F77_NAME_UPPER#define mpe_draw_line_ PMPE_DRAW_LINE#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_draw_line_ pmpe_draw_line__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_draw_line_ pmpe_draw_line#else#define mpe_draw_line_ pmpe_draw_line_#endif#else#ifdef F77_NAME_UPPER#define mpe_draw_line_ MPE_DRAW_LINE#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_draw_line_ mpe_draw_line__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_draw_line_ mpe_draw_line#endif#endifvoid mpe_draw_line_( MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint * );void mpe_draw_line_( MPE_Fint *graph, MPE_Fint *x1, MPE_Fint *y1, MPE_Fint *x2, MPE_Fint *y2, MPE_Fint *color, MPE_Fint *__ierr ){ *__ierr = MPE_Draw_line( MPE_XGraph_f2c(*graph),(int)*x1,(int)*y1, (int)*x2, (int) *y2, MPE_Color_f2c(*color) );}#ifdef MPI_BUILD_PROFILING#ifdef F77_NAME_UPPER#define mpe_fill_rectangle_ PMPE_FILL_RECTANGLE#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_fill_rectangle_ pmpe_fill_rectangle__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_fill_rectangle_ pmpe_fill_rectangle#else#define mpe_fill_rectangle_ pmpe_fill_rectangle_#endif#else#ifdef F77_NAME_UPPER#define mpe_fill_rectangle_ MPE_FILL_RECTANGLE#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_fill_rectangle_ mpe_fill_rectangle__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_fill_rectangle_ mpe_fill_rectangle#endif#endifvoid mpe_fill_rectangle_( MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint *, MPE_Fint * );void mpe_fill_rectangle_( MPE_Fint *graph, MPE_Fint *x, MPE_Fint *y, MPE_Fint *w, MPE_Fint *h, MPE_Fint *color, MPE_Fint *__ierr ){ *__ierr = MPE_Fill_rectangle( MPE_XGraph_f2c(*graph), (int)*x, (int)*y, (int)*w, (int)*h, MPE_Color_f2c(*color) );}#ifdef MPI_BUILD_PROFILING#ifdef F77_NAME_UPPER#define mpe_update_ PMPE_UPDATE#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_update_ pmpe_update__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_update_ pmpe_update#else#define mpe_update_ pmpe_update_#endif#else#ifdef F77_NAME_UPPER#define mpe_update_ MPE_UPDATE#elif defined(F77_NAME_LOWER_2USCORE)#define mpe_update_ mpe_update__#elif !defined(F77_NAME_LOWER_USCORE)#define mpe_update_ mpe_update#endif#endifvoid mpe_update_( MPE_Fint *, MPE_Fint * );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -