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
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef __PLPLOTP_H__
00038 #define __PLPLOTP_H__
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066 #ifdef _HPUX
00067 #define _HPUX_SOURCE
00068 #endif
00069
00070
00071 #ifdef _AIX
00072 #define _ALL_SOURCE
00073 #endif
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100 #include "plConfig.h"
00101 #ifdef caddr_t
00102 #undef caddr_t
00103 #ifndef __USE_BSD
00104 typedef char * caddr_t;
00105 #endif
00106 #endif
00107
00108
00109
00110 #include <ctype.h>
00111 #include <math.h>
00112 #include <string.h>
00113 #include <limits.h>
00114 #include <float.h>
00115 #ifdef PL_HAVE_UNISTD_H
00116 #include <unistd.h>
00117 #endif
00118
00119 #include <locale.h>
00120
00121
00122
00123 #if !defined ( M_PI )
00124 #define M_PI 3.14159265358979323846
00125 #endif
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136 #ifdef STDC_FPOS_T
00137 #undef STDC_FPOS_T
00138 #endif
00139
00140 #ifdef STDC_FPOS_T
00141 #define FPOS_T fpos_t
00142 #define pl_fsetpos( a, b ) fsetpos( a, b )
00143 #define pl_fgetpos( a, b ) fgetpos( a, b )
00144
00145 #else
00146 #define FPOS_T long
00147 #define pl_fsetpos( a, b ) fseek( a, *b, 0 )
00148 #define pl_fgetpos( a, b ) ( -1L == ( *b = ftell( a ) ) )
00149 #endif
00150
00151 #include "pldll.h"
00152
00153
00154
00155
00156 #include "plplot.h"
00157
00158
00159
00160 #include "plstrm.h"
00161
00162
00163
00164 #ifndef __PLCORE_H__
00165 #ifdef __cplusplus
00166 extern "C" {
00167 #endif
00168
00169 extern PLDLLIMPEXP_DATA( PLStream * ) plsc;
00170 #ifdef __cplusplus
00171 }
00172 #endif
00173 #include "pldebug.h"
00174 #endif
00175
00176
00177
00178
00179
00180 #ifndef TRUE
00181 #define TRUE 1
00182 #define FALSE 0
00183 #endif
00184
00185
00186
00187 #define free_mem( a ) \
00188 if ( a != NULL ) { free( (void *) a ); a = NULL; }
00189
00190
00191
00192 #define plsetvar( a, b ) \
00193 if ( b != PL_NOTSET ) a = b;
00194
00195
00196
00197 #ifndef MAX
00198 #define MAX( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) )
00199 #endif
00200 #ifndef MIN
00201 #define MIN( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) )
00202 #endif
00203 #ifndef ABS
00204 #define ABS( a ) ( ( a ) < 0 ? -( a ) : ( a ) )
00205 #endif
00206 #ifndef ROUND
00207 #define ROUND( a ) (PLINT) ( ( a ) < 0. ? ( ( a ) - .5 ) : ( ( a ) + .5 ) )
00208 #endif
00209 #ifndef BETW
00210 #define BETW( ix, ia, ib ) ( ( ( ix ) <= ( ia ) && ( ix ) >= ( ib ) ) || ( ( ix ) >= ( ia ) && ( ix ) <= ( ib ) ) )
00211 #endif
00212 #ifndef SSQR
00213 #define SSQR( a, b ) sqrt( ( a ) * ( a ) + ( b ) * ( b ) )
00214 #endif
00215 #ifndef SIGN
00216 #define SIGN( a ) ( ( a ) < 0 ? -1 : 1 )
00217 #endif
00218 #ifndef TRANSFORM
00219 #define TRANSFORM( x, y, xnew, ynew ) if ( plsc->coordinate_transform ) { plsc->coordinate_transform( ( x ), ( y ), ( xnew ), ( ynew ), plsc->coordinate_transform_data ); } else { *xnew = x; *ynew = y; }
00220 #endif
00221
00222
00223
00224 #define PL_UNDEFINED -9999999
00225
00226
00227
00228 #ifdef PL_HAVE_SNPRINTF
00229
00230
00231 #ifdef _PL_HAVE_SNPRINTF
00232 #define snprintf _snprintf
00233 #define snscanf _snscanf
00234 #endif // _PL_HAVE_SNPRINTF
00235 #else // !PL_HAVE_SNPRINTF
00236
00237
00238 int plsnprintf( char *buffer, int n, const char *format, ... );
00239 int plsnscanf( const char *buffer, int n, const char *format, ... );
00240 #define snprintf plsnprintf
00241 #define snscanf plsnscanf
00242 #endif // PL_HAVE_SNPRINTF
00243
00244
00245
00246
00247
00248 #if defined ( PL__HAVE_ISNAN )
00249 # define isnan _isnan
00250 # if defined ( _MSC_VER )
00251 # include <float.h>
00252 # endif
00253 #endif
00254 #if defined ( PL__HAVE_ISINF )
00255 # define isinf _isinf
00256 #endif
00257 #if defined ( PL__HAVE_FINITE )
00258 # define finite _finite
00259 #endif
00260
00261
00262
00263 #if !defined ( PL_HAVE_ISNAN )
00264 # define isnan( x ) ( ( x ) != ( x ) )
00265 #endif
00266 #if !defined ( PL_HAVE_ISINF )
00267 # define isinf( x ) ( !isnan( x ) && isnan( x - x ) )
00268 #endif
00269 #if !defined ( PL_HAVE_FINITE )
00270 # define finite( x ) ( !isnan( x - x ) )
00271 #endif
00272
00273
00274
00275 #ifndef HUGE_VAL
00276 #define HUGE_VAL ( 1.0 / 0.0 )
00277 #endif
00278
00279
00280
00281
00282
00283
00284
00285 #define PL_MAXPOLY 256 // Max segments in polyline or polygon
00286 #define PL_NSTREAMS 100 // Max number of concurrent streams.
00287 #define PL_RGB_COLOR -1 // A hack
00288
00289 #define TEXT_MODE 0
00290 #define GRAPHICS_MODE 1
00291 #ifndef PI
00292 #define PI 3.1415926535897932384
00293 #endif
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306 #define PIXELS_X 32768 // Number of virtual pixels in x
00307 #define PIXELS_Y 24576 // Number of virtual pixels in x
00308 #define DPMM 4. // dots per mm
00309 #define VDPMM ( DPMM * 32 ) // virtual dots per mm
00310 #define LPAGE_X ( PIXELS_X / VDPMM ) // virtual page length in x in mm (256)
00311 #define LPAGE_Y ( PIXELS_Y / VDPMM ) // virtual page length in y in mm (192)
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322 #define ORIENTATION 3
00323
00324
00325
00326 #define PLSTATE_WIDTH 1 // pen width
00327 #define PLSTATE_COLOR0 2 // change to color in cmap 0
00328 #define PLSTATE_COLOR1 3 // change to color in cmap 1
00329 #define PLSTATE_FILL 4 // set area fill attribute
00330 #define PLSTATE_CMAP0 5 // change to cmap 0
00331 #define PLSTATE_CMAP1 6 // change to cmap 1
00332
00333
00334
00335 #define PLDI_MAP 0x01
00336 #define PLDI_ORI 0x02
00337 #define PLDI_PLT 0x04
00338 #define PLDI_DEV 0x08
00339
00340
00341
00342 #ifndef PL_FILESIZE_KB
00343 #define PL_FILESIZE_KB 1000
00344 #endif
00345
00346
00347
00348 #define PLPLOT5_FONTS
00349
00350 #ifdef PLPLOT5_FONTS
00351 #define PL_XFONT "plxtnd5.fnt"
00352 #define PL_SFONT "plstnd5.fnt"
00353 #else
00354 #define PL_XFONT "plxtnd4.fnt"
00355 #define PL_SFONT "plstnd4.fnt"
00356 #endif
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397 #define PLPLOT_BIN_ENV "PLPLOT_BIN"
00398 #define PLPLOT_LIB_ENV "PLPLOT_LIB"
00399 #define PLPLOT_TCL_ENV "PLPLOT_TCL"
00400 #define PLPLOT_HOME_ENV "PLPLOT_HOME"
00401
00402
00403 #define PLPLOT_MAX_PATH 1024
00404
00405
00406
00407
00408
00409
00410
00411 #ifndef __PLSYM_H__
00412
00413 typedef struct
00414 {
00415 unsigned int Hershey;
00416 PLUNICODE Unicode;
00417 char Font;
00418 } Hershey_to_Unicode_table;
00419
00420 extern int number_of_entries_in_hershey_to_unicode_table;
00421 extern Hershey_to_Unicode_table hershey_to_unicode_lookup_table[];
00422
00423
00424 #endif
00425
00426
00427 extern const char plP_greek_mnemonic[];
00428
00429
00430
00431
00432
00433
00434
00435 #ifdef __cplusplus
00436 extern "C" {
00437 #endif
00438
00439
00440
00441 #define NAFFINE 6
00442
00443
00444
00445 PLDLLIMPEXP void
00446 plP_affine_identity( PLFLT *affine_vector );
00447
00448
00449
00450 PLDLLIMPEXP void
00451 plP_affine_translate( PLFLT *affine_vector, PLFLT xtranslate, PLFLT ytranslate );
00452
00453
00454
00455 PLDLLIMPEXP void
00456 plP_affine_scale( PLFLT *affine_vector, PLFLT xscale, PLFLT yscale );
00457
00458
00459
00460
00461 PLDLLIMPEXP void
00462 plP_affine_rotate( PLFLT *affine_vector, PLFLT angle );
00463
00464
00465
00466
00467 PLDLLIMPEXP void
00468 plP_affine_xskew( PLFLT *affine_vector, PLFLT angle );
00469
00470
00471
00472
00473 PLDLLIMPEXP void
00474 plP_affine_yskew( PLFLT *affine_vector, PLFLT angle );
00475
00476
00477
00478
00479
00480
00481
00482 PLDLLIMPEXP void
00483 plP_affine_multiply(
00484 PLFLT *affine_vectorA,
00485 const PLFLT *affine_vectorB,
00486 const PLFLT *affine_vectorC );
00487
00488
00489
00490 void
00491 pldtik( PLFLT vmin, PLFLT vmax, PLFLT *tick, PLINT *nsubt, PLBOOL ld );
00492
00493
00494
00495 void
00496 label_box_custom( const char *xopt, PLINT n_xticks, const PLFLT *xticks, const char *yopt, PLINT n_yticks, const PLFLT *yticks );
00497
00498
00499
00500
00501 void
00502 pldtfac( PLFLT vmin, PLFLT vmax, PLFLT *factor, PLFLT *tstart );
00503
00504
00505
00506 void
00507 pldprec( PLFLT vmin, PLFLT vmax, PLFLT tick, PLINT lf,
00508 PLINT *mode, PLINT *prec, PLINT digmax, PLINT *scale );
00509
00510
00511
00512 void
00513 plP_pllclp( PLINT *x, PLINT *y, PLINT npts,
00514 PLINT xmin, PLINT xmax, PLINT ymin, PLINT ymax,
00515 void ( *draw )( short *, short *, PLINT ) );
00516
00517
00518
00519 void
00520 plP_plfclp( PLINT *x, PLINT *y, PLINT npts,
00521 PLINT xmin, PLINT xmax, PLINT ymin, PLINT ymax,
00522 void ( *draw )( short *, short *, PLINT ) );
00523
00524
00525 int
00526 plP_clip_poly( int Ni, PLFLT *Vi[3], int axis, PLFLT dir, PLFLT offset );
00527
00528
00529
00530 int
00531 plP_clipline( PLINT *p_x1, PLINT *p_y1, PLINT *p_x2, PLINT *p_y2,
00532 PLINT xmin, PLINT xmax, PLINT ymin, PLINT ymax );
00533
00534
00535 void
00536 plP_hex2fci( unsigned char hexdigit, unsigned char hexpower, PLUNICODE *pfci );
00537
00538
00539 PLDLLIMPEXP void
00540 plP_fci2hex( PLUNICODE fci, unsigned char *phexdigit, unsigned char hexpower );
00541
00542
00543
00544 PLDLLIMPEXP void
00545 plfill_soft( short *x, short *y, PLINT npts );
00546
00547
00548
00549
00550 PLDLLIMPEXP void
00551 plexit( const char *errormsg );
00552
00553
00554
00555 void
00556 pl_exit( void );
00557
00558
00559
00560 PLDLLIMPEXP void
00561 plwarn( const char *errormsg );
00562
00563
00564
00565 PLDLLIMPEXP void
00566 plabort( const char *errormsg );
00567
00568
00569
00570 void
00571 plfntld( PLINT fnt );
00572
00573
00574
00575 void
00576 plfontrel( void );
00577
00578
00579
00580 PLDLLIMPEXP char *
00581 plstrdup( const char *src );
00582
00583
00584
00585 PLDLLIMPEXP void
00586 plcmap1_calc( void );
00587
00588
00589
00590
00591 void
00592 plstik( PLFLT mx, PLFLT my, PLFLT dx, PLFLT dy );
00593
00594
00595
00596
00597 void
00598 plstr( PLINT base, PLFLT *xform, PLINT refx, PLINT refy, const char *string );
00599
00600
00601
00602 void
00603 plxtik( PLINT x, PLINT y, PLINT below, PLINT above );
00604
00605
00606
00607 void
00608 plytik( PLINT x, PLINT y, PLINT left, PLINT right );
00609
00610
00611
00612
00613 PLDLLIMPEXP void
00614 difilt( PLINT *, PLINT *, PLINT,
00615 PLINT *, PLINT *, PLINT *, PLINT * );
00616
00617
00618
00619
00620 PLDLLIMPEXP void
00621 difilt_clip( PLINT *, PLINT * );
00622
00623
00624
00625
00626 PLDLLIMPEXP void
00627 plP_script_scale( PLBOOL ifupper, PLINT *level,
00628 PLFLT *old_scale, PLFLT *scale,
00629 PLFLT *old_offset, PLFLT *offset );
00630
00631
00632
00633 void
00634 plP_text( PLINT base, PLFLT just, PLFLT *xform, PLINT x, PLINT y,
00635 PLINT refx, PLINT refy, const char *string );
00636
00637
00638
00639
00640 PLDLLIMPEXP char *
00641 plsave_set_locale( void );
00642
00643
00644
00645 PLDLLIMPEXP void
00646 plrestore_locale( char * save_lc_numeric_locale );
00647
00648
00649
00650
00651
00652 typedef struct
00653 {
00654 PLINT base;
00655 PLFLT just;
00656 PLFLT *xform;
00657 PLINT x;
00658 PLINT y;
00659 PLINT refx;
00660 PLINT refy;
00661 char font_face;
00662
00663
00664 PLUNICODE n_fci;
00665 PLUNICODE n_char;
00666 PLINT n_ctrl_char;
00667 PLUNICODE unicode_char;
00668 PLUNICODE *unicode_array;
00669 unsigned short unicode_array_len;
00670 const char *string;
00671 }EscText;
00672
00673
00674
00675
00676
00677
00678 typedef struct
00679 {
00680 const char *opt;
00681 PLINT type;
00682 void *var_ptr;
00683 const char *hlp_msg;
00684 } DrvOpt;
00685
00686
00687
00688 enum { DRV_INT, DRV_FLT, DRV_STR };
00689
00690
00691
00692 PLDLLIMPEXP int
00693 plParseDrvOpts( DrvOpt * );
00694
00695
00696
00697 void
00698 plHelpDrvOpts( DrvOpt * );
00699
00700
00701
00702
00703
00704 #define LINE_ITEMS 20
00705
00706 typedef struct cont_line
00707 {
00708 PLFLT *x;
00709 PLFLT *y;
00710 PLINT npts;
00711 struct cont_line *next;
00712 } CONT_LINE;
00713
00714 typedef struct cont_level
00715 {
00716
00717 PLFLT level;
00718 struct cont_line *line;
00719 struct cont_level *next;
00720
00721 } CONT_LEVEL;
00722
00723 void
00724 cont_store( const PLFLT **f, PLINT nx, PLINT ny,
00725 PLINT kx, PLINT lx, PLINT ky, PLINT ly,
00726 const PLFLT *clevel, PLINT nlevel,
00727 void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
00728 PLPointer pltr_data,
00729 CONT_LEVEL **contour );
00730
00731 void
00732 cont_clean_store( CONT_LEVEL *ct );
00733
00734
00735
00736 void
00737 plP_xgvpw( PLFLT *p_xmin, PLFLT *p_xmax, PLFLT *p_ymin, PLFLT *p_ymax );
00738
00739
00740
00741 void
00742 plP_gdom( PLFLT *p_xmin, PLFLT *p_xmax, PLFLT *p_ymin, PLFLT *p_ymax );
00743
00744
00745
00746 void
00747 plP_grange( PLFLT *p_zscl, PLFLT *p_zmin, PLFLT *p_zmax );
00748
00749
00750
00751 void
00752 plP_gw3wc( PLFLT *p_dxx, PLFLT *p_dxy, PLFLT *p_dyx, PLFLT *p_dyy,
00753 PLFLT *p_dyz );
00754
00755
00756
00757 void
00758 plP_gclp( PLINT *p_ixmin, PLINT *p_ixmax, PLINT *p_iymin, PLINT *p_iymax );
00759
00760
00761
00762 void
00763 plP_sclp( PLINT ixmin, PLINT ixmax, PLINT iymin, PLINT iymax );
00764
00765
00766
00767 PLDLLIMPEXP void
00768 plP_gphy( PLINT *p_ixmin, PLINT *p_ixmax, PLINT *p_iymin, PLINT *p_iymax );
00769
00770
00771
00772 PLDLLIMPEXP void
00773 plP_gsub( PLINT *p_nx, PLINT *p_ny, PLINT *p_cs );
00774
00775
00776
00777 PLDLLIMPEXP void
00778 plP_ssub( PLINT nx, PLINT ny, PLINT cs );
00779
00780
00781
00782 void
00783 plP_subpInit( void );
00784
00785
00786
00787 PLDLLIMPEXP void
00788 plP_gpixmm( PLFLT *p_x, PLFLT *p_y );
00789
00790
00791
00792 PLDLLIMPEXP void
00793 plP_setpxl( PLFLT xpmm0, PLFLT ypmm0 );
00794
00795
00796
00797 void
00798 plP_gzback( PLINT **zbf, PLINT **zbc, PLFLT **zbt, PLINT **zbw );
00799
00800
00801
00802 void
00803 plP_movphy( PLINT x, PLINT y );
00804
00805
00806
00807 void
00808 plP_draphy( PLINT x, PLINT y );
00809
00810
00811
00812 void
00813 plP_movwor( PLFLT x, PLFLT y );
00814
00815
00816
00817 void
00818 plP_drawor( PLFLT x, PLFLT y );
00819
00820
00821
00822 void
00823 plP_draphy_poly( PLINT *x, PLINT *y, PLINT n );
00824
00825
00826
00827 void
00828 plP_drawor_poly( const PLFLT *x, const PLFLT *y, PLINT n );
00829
00830
00831
00832 PLDLLIMPEXP void
00833 plP_setphy( PLINT xmin, PLINT xmax, PLINT ymin, PLINT ymax );
00834
00835
00836
00837 PLDLLIMPEXP void
00838 plP_setsub( void );
00839
00840
00841
00842 void
00843 plP_gprec( PLINT *p_setp, PLINT *p_prec );
00844
00845
00846
00847 const char *
00848 plP_gtimefmt();
00849
00850
00851
00852 PLFLT
00853 plstrl( const char *string );
00854
00855
00856
00857 PLINT
00858 plP_stindex( const char *str1, const char *str2 );
00859
00860
00861
00862 PLDLLIMPEXP PLINT
00863 plP_strpos( const char *str, int chr );
00864
00865
00866
00867 PLBOOL
00868 plP_stsearch( const char *str, int chr );
00869
00870
00871
00872
00873
00874 PLINT
00875 plP_dcpcx( PLFLT x );
00876
00877
00878
00879 PLINT
00880 plP_dcpcy( PLFLT y );
00881
00882
00883
00884 PLINT
00885 plP_mmpcx( PLFLT x );
00886
00887
00888
00889 PLINT
00890 plP_mmpcy( PLFLT y );
00891
00892
00893
00894 PLINT
00895 plP_wcpcx( PLFLT x );
00896
00897
00898
00899 PLINT
00900 plP_wcpcy( PLFLT y );
00901
00902
00903
00904 PLFLT
00905 plP_pcdcx( PLINT x );
00906
00907
00908
00909 PLFLT
00910 plP_pcdcy( PLINT y );
00911
00912
00913
00914 PLFLT
00915 plP_mmdcx( PLFLT x );
00916
00917
00918
00919 PLFLT
00920 plP_mmdcy( PLFLT y );
00921
00922
00923
00924 PLFLT
00925 plP_wcdcx( PLFLT x );
00926
00927
00928
00929 PLFLT
00930 plP_wcdcy( PLFLT y );
00931
00932
00933
00934 PLFLT
00935 plP_scdcx( PLFLT x );
00936
00937
00938
00939 PLFLT
00940 plP_scdcy( PLFLT y );
00941
00942
00943
00944 PLFLT
00945 plP_dcmmx( PLFLT x );
00946
00947
00948
00949 PLFLT
00950 plP_dcmmy( PLFLT y );
00951
00952
00953
00954 PLFLT
00955 plP_wcmmx( PLFLT x );
00956
00957
00958
00959 PLFLT
00960 plP_wcmmy( PLFLT y );
00961
00962
00963
00964 PLFLT
00965 plP_dcscx( PLFLT x );
00966
00967
00968
00969 PLFLT
00970 plP_dcscy( PLFLT y );
00971
00972
00973
00974 PLFLT
00975 plP_w3wcx( PLFLT x, PLFLT y, PLFLT z );
00976
00977
00978
00979 PLFLT
00980 plP_w3wcy( PLFLT x, PLFLT y, PLFLT z );
00981
00982
00983
00984 PLFLT
00985 plP_w3wcz( PLFLT x, PLFLT y, PLFLT z );
00986
00987
00988
00989 PLDLLIMPEXP void
00990 plRotationShear( PLFLT *xFormMatrix, PLFLT *rotation, PLFLT *shear, PLFLT *stride );
00991
00992
00993 int
00994 plP_pointinpolygon( PLINT n, const PLFLT *x, const PLFLT *y,
00995 PLFLT xp, PLFLT yp );
00996
00997
00998
00999
01000
01001 void
01002 plP_init( void );
01003
01004
01005
01006 void
01007 plP_line( short *x, short *y );
01008
01009
01010
01011 void
01012 plP_polyline( short *x, short *y, PLINT npts );
01013
01014
01015
01016 void
01017 plP_fill( short *x, short *y, PLINT npts );
01018
01019
01020
01021 void
01022 plP_gradient( short *x, short *y, PLINT npts );
01023
01024
01025
01026 void
01027 plP_image( PLFLT *z, PLINT nx, PLINT ny, PLFLT xmin, PLFLT ymin, PLFLT dx, PLFLT dy,
01028 void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ), PLPointer pltr_data );
01029
01030
01031 typedef struct
01032 {
01033 PLFLT x;
01034 PLFLT y;
01035 PLFLT a;
01036 PLFLT b;
01037 PLFLT angle1;
01038 PLFLT angle2;
01039 PLFLT rotate;
01040 PLBOOL fill;
01041 } arc_struct;
01042
01043
01044
01045 PLDLLIMPEXP void
01046 plP_eop( void );
01047
01048
01049
01050 PLDLLIMPEXP void
01051 plP_bop( void );
01052
01053
01054
01055 void
01056 plP_tidy( void );
01057
01058
01059
01060 PLDLLIMPEXP void
01061 plP_state( PLINT op );
01062
01063
01064
01065 PLDLLIMPEXP void
01066 plP_esc( PLINT op, void *ptr );
01067
01068
01069
01070 void
01071 plP_swin( PLWindow *plwin );
01072
01073
01074
01075 FILE *
01076 plLibOpen( const char *fn );
01077
01078
01079
01080 PLDLLIMPEXP void
01081 pllib_init( void );
01082
01083
01084
01085 PLDLLIMPEXP void
01086 pllib_devinit( void );
01087
01088
01089
01090 PLDLLIMPEXP void
01091 pl_cpcolor( PLColor *to, PLColor *from );
01092
01093
01094
01095 void
01096 plstrm_init( void );
01097
01098
01099
01100 void
01101 PLDLLIMPEXP plP_getinitdriverlist( char *names );
01102
01103
01104
01105 PLINT
01106 plP_checkdriverinit( char *names );
01107
01108
01109 void
01110 NoBufferNoPixmap( void );
01111
01112
01113 void
01114 RestoreWrite2BufferPixmap( void );
01115
01116 void
01117 grimage( short *x, short *y, unsigned short *z, PLINT nx, PLINT ny );
01118
01119 PLDLLIMPEXP int
01120 plInBuildTree();
01121
01122 void
01123 plimageslow( PLFLT *idata, PLINT nx, PLINT ny,
01124 PLFLT xmin, PLFLT ymin, PLFLT dx, PLFLT dy,
01125 void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
01126 PLPointer pltr_data );
01127
01128 typedef struct
01129 {
01130 PLFLT xmin, ymin, dx, dy;
01131 } IMG_DT;
01132
01133
01134
01135
01136
01137
01138
01139
01140 PLDLLIMPEXP void
01141 plfvect( PLFLT ( *plf2eval )( PLINT, PLINT, PLPointer ),
01142 PLPointer f2evalv_data, PLPointer f2evalc_data,
01143 PLINT nx, PLINT ny, PLFLT scale,
01144 void ( *pltr )( PLFLT, PLFLT, PLFLT *, PLFLT *, PLPointer ),
01145 PLPointer pltr_data );
01146
01147
01148
01149
01150 int
01151 plhershey2unicode( int in );
01152
01153
01154 typedef struct
01155 {
01156 PLUNICODE fci;
01157 unsigned char *pfont;
01158 } FCI_to_FontName_Table;
01159
01160
01161 PLDLLIMPEXP char *
01162 plP_FCI2FontName( PLUNICODE fci,
01163 const FCI_to_FontName_Table lookup[], const int nlookup );
01164
01165
01166
01167 void
01168 plP_FreeDrvOpts();
01169
01170
01171 PLDLLIMPEXP int
01172 ucs4_to_utf8( PLUNICODE unichar, char *ptr );
01173
01174
01175
01176
01177
01178
01179
01180 void
01181 plio_fwrite( void *, size_t, size_t, FILE * );
01182
01183
01184
01185 void
01186 plio_fread( void *, size_t, size_t, FILE * );
01187
01188
01189
01190 void
01191 plio_fgets( char *, int, FILE * );
01192
01193
01194
01195 #ifdef ENABLE_DYNDRIVERS
01196 PLDLLIMPEXP char*
01197 plGetDrvDir( void );
01198 #endif
01199
01200 #ifdef HAVE_FREETYPE
01201 PLDLLIMPEXP void
01202 plD_FreeType_init( PLStream * );
01203
01204 PLDLLIMPEXP void
01205 plD_render_freetype_text( PLStream *, EscText * );
01206
01207 PLDLLIMPEXP void
01208 plD_FreeType_Destroy( PLStream * );
01209
01210 PLDLLIMPEXP void
01211 pl_set_extended_cmap0( PLStream *, int, int );
01212
01213 #endif
01214
01215
01216 PLDLLIMPEXP FILE *
01217 pl_create_tempfile( char **fname );
01218
01219 #ifdef __cplusplus
01220 }
01221 #endif
01222
01223 #endif // __PLPLOTP_H__