Doxygen Source Code Documentation
plot_ps2.c File Reference
#include "coxplot.h"
Go to the source code of this file.
Defines | |
#define | PSIZE 4096 |
Functions | |
void | memplot_to_postscript (char *fname, MEM_plotdata *mp) |
Define Documentation
|
Definition at line 16 of file plot_ps2.c. Referenced by memplot_to_postscript(). |
Function Documentation
|
Definition at line 18 of file plot_ps2.c. References COL_TO_BBB, COL_TO_GGG, COL_TO_RRR, MEMPLOT_COL, MEMPLOT_NLINE, MEMPLOT_TH, MEMPLOT_X1, MEMPLOT_X2, MEMPLOT_Y1, MEMPLOT_Y2, mp, ps_circle(), ps_closepl(), ps_line(), ps_openpl(), ps_rect(), ps_setrgb(), ps_setwidth(), ps_space(), PSIZE, skip, x2, and y1. Referenced by main(), psfinalize_CB(), and psprint_CB().
00019 { 00020 int ii , nline ; 00021 float old_thick , old_color , new_color , new_thick ; 00022 int x1,y1 , x2,y2 ; 00023 int skip ; 00024 00025 /*-- sanity checks --*/ 00026 00027 if( fname == NULL || fname[0] == '\0' || mp == NULL ) return ; 00028 00029 nline = MEMPLOT_NLINE(mp) ; if( nline < 1 ) return ; 00030 00031 /*-- open the output file --*/ 00032 00033 if( ! ps_openpl(fname) ) return ; 00034 ps_space( 0,0,PSIZE,PSIZE ) ; 00035 00036 old_color = -1.0 ; 00037 old_thick = -THCODE_INVALID ; 00038 00039 /*-- loop over lines, scale and plot --*/ 00040 00041 for( ii=0 ; ii < nline ; ii++ ){ 00042 00043 skip = 0 ; 00044 00045 /* check if need to change color or thickness of line */ 00046 00047 new_color = MEMPLOT_COL(mp,ii) ; 00048 if( new_color != old_color ){ 00049 float rr=COL_TO_RRR(new_color) , 00050 gg=COL_TO_GGG(new_color) , bb=COL_TO_BBB(new_color) ; 00051 ps_setrgb( rr , gg , bb ) ; 00052 old_color = new_color ; 00053 } 00054 new_thick = MEMPLOT_TH(mp,ii) ; 00055 if( new_thick < 0.0 ){ /* 21 Mar 2001: negative thickness codes */ 00056 int thc = (int)(-new_thick) ; 00057 switch( thc ){ 00058 case THCODE_RECT:{ /* rectangle */ 00059 x1 = 0.499 + PSIZE * (1.0 - MEMPLOT_Y1(mp,ii)) ; 00060 x2 = 0.499 + PSIZE * (1.0 - MEMPLOT_Y2(mp,ii)) ; 00061 y1 = 0.499 + PSIZE * MEMPLOT_X1(mp,ii) ; 00062 y2 = 0.499 + PSIZE * MEMPLOT_X2(mp,ii) ; 00063 ps_rect( x1,y1 , x2,y2 ) ; 00064 skip = 1 ; 00065 } 00066 break ; 00067 00068 case THCODE_CIRC:{ /* circle */ 00069 x1 = 0.499 + PSIZE * (1.0 - MEMPLOT_Y1(mp,ii)) ; 00070 y1 = 0.499 + PSIZE * MEMPLOT_X1(mp,ii) ; 00071 x2 = 0.499 + PSIZE * MEMPLOT_X2(mp,ii) ; 00072 ps_circle( x1,y1 , x2 ) ; 00073 skip = 1 ; 00074 } 00075 break ; 00076 } 00077 } else if( new_thick != old_thick ){ /* old code to change line thickness */ 00078 float th = PSIZE * new_thick ; 00079 if( th <= 0.0 ) th = 1.0 ; 00080 ps_setwidth( th ) ; 00081 old_thick = new_thick ; 00082 } 00083 00084 if( !skip ){ 00085 /* scale coords (also see zzphph.f) */ 00086 00087 x1 = 0.499 + PSIZE * (1.0 - MEMPLOT_Y1(mp,ii)) ; 00088 x2 = 0.499 + PSIZE * (1.0 - MEMPLOT_Y2(mp,ii)) ; 00089 y1 = 0.499 + PSIZE * MEMPLOT_X1(mp,ii) ; 00090 y2 = 0.499 + PSIZE * MEMPLOT_X2(mp,ii) ; 00091 00092 ps_line( x1,y1 , x2,y2 ) ; 00093 } 00094 } 00095 00096 /*-- done --*/ 00097 00098 ps_closepl() ; 00099 return ; 00100 } |