00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <stdio.h>
00020 #include <math.h>
00021 #include <string.h>
00022 #include <stdlib.h>
00023 #include "defines.h"
00024 #include "cd.h"
00025
00026 #define CD_CHECK_RETURN( x ) \
00027 if ( !( x ) ) \
00028 { \
00029 cdImageDestroy( im ); \
00030 fclose( outf ); \
00031 return 1; \
00032 }
00033
00034
00035 int main()
00036 {
00037
00038
00039 cdImagePtr im;
00040 cdPoint points[2];
00041
00042
00043 FILE *outf;
00044
00045
00046
00047 int black, white, blue;
00048
00049
00050 im = cdImageStartCgm();
00051
00052 outf = fopen( "cdexp1.cgm", "wb" );
00053 if ( !outf )
00054 {
00055 cdImageDestroy( im );
00056 return 1;
00057 }
00058
00059 CD_CHECK_RETURN( cdImageSetSize( im, 500, 500 ) );
00060
00061
00062 CD_CHECK_RETURN( cdImageSetLineSpec( im, 0 ) );
00063 CD_CHECK_RETURN( cdImageSetMarkerSpec( im, 0 ) );
00064 CD_CHECK_RETURN( cdImageSetEdgeSpec( im, 0 ) );
00065
00066 CD_CHECK_RETURN( cdImageClearFonts( im ) );
00067 CD_CHECK_RETURN( cdImageAddFont( im, "TIMES_ROMAN" ) );
00068
00069 CD_CHECK_RETURN( cdCgmHeader( im ) );
00070 CD_CHECK_RETURN( cdCgmPic( im, 2 ) );
00071
00072
00073
00074
00075 white = cdImageColorAllocate( im, 255, 255, 255 );
00076 black = cdImageColorAllocate( im, 0, 0, 0 );
00077 blue = cdImageColorAllocate( im, 0, 0, 255 );
00078
00079
00080 CD_CHECK_RETURN( cdSetShapeFillAttrib( im, 4, -1, -1 ) );
00081
00082
00083 CD_CHECK_RETURN( cdSetShapeEdgeAttrib( im, 2, 3, blue, 1 ) );
00084
00085
00086 CD_CHECK_RETURN( cdSetTextAttrib( im, 1, black, 25 ) );
00087
00088
00089 CD_CHECK_RETURN( cdSetLineAttrib( im, 1, 5, black ) );
00090
00091
00092 CD_CHECK_RETURN( cdSetMarkerAttrib( im, 2, 3, black ) );
00093
00094
00095
00096
00097 CD_CHECK_RETURN( cdRectangle( im, 10, 450, 350, 350 ) );
00098
00099 CD_CHECK_RETURN( cdLine( im, 300, 100, 400, 100 ) );
00100
00101
00102 CD_CHECK_RETURN( cdMarker( im, 325, 150 ) );
00103 CD_CHECK_RETURN( cdMarker( im, 375, 150 ) );
00104
00105
00106
00107 CD_CHECK_RETURN( cdText( im, 100, 100, "Hello World" ) );
00108
00109
00110
00111
00112
00113 CD_CHECK_RETURN( cdImageEndPic( im ) );
00114
00115 CD_CHECK_RETURN( cdImageSetLineSpec( im, 1 ) );
00116 CD_CHECK_RETURN( cdImageSetMarkerSpec( im, 1 ) );
00117 CD_CHECK_RETURN( cdImageSetEdgeSpec( im, 1 ) );
00118
00119
00120 CD_CHECK_RETURN( cdCgmPic( im, 1 ) );
00121
00122
00123
00124
00125 CD_CHECK_RETURN( cdRectangle( im, 10, 450, 350, 350 ) );
00126
00127
00128 CD_CHECK_RETURN( cdLine( im, 300, 100, 400, 100 ) );
00129
00130
00131
00132 points[0].x = 325;
00133 points[0].y = 150;
00134 points[1].x = 375;
00135 points[1].y = 150;
00136 CD_CHECK_RETURN( cdPolyMarker( im, points, 2 ) );
00137
00138
00139
00140 CD_CHECK_RETURN( cdText( im, 100, 100, "Hello World" ) );
00141
00142 cdImageCgm( im, outf );
00143 fclose( outf );
00144 outf = 0;
00145
00146
00147 cdImageDestroy( im );
00148 im = 0;
00149
00150 printf( "I am a CGM expert!!!\n" );
00151
00152 return 0;
00153 }