1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
|
//
// cdtext is an example program that uses the text attribute commands
// cdSetTextPath and cdSetTextOrient
//
//
// cdtext.c: test program for the cgmdraw module.
//
// Written by G. Edward Johnson <mailto:lorax@nist.gov>
// Date: May 1996
// Copyright: cd software produced by NIST, an agency of the
// U.S. government, is by statute not subject to copyright
// in the United States. Recipients of this software assume all
// responsibilities associated with its operation, modification
// and maintenance.
//
//
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include "defines.h"
#include "cd.h"
int main()
{
// you must create a pointer to the image(s) that you will be using
// not suprisingly, it is of type cdImagePtr
cdImagePtr im;
// this is a pointer to the output file you will be using
FILE *outf;
// these will be index's into the color palette containing
// the corresponding colors
int black, white, blue;
// Create an image 800 pixels wide by 400 pixels high
im = cdImageCreate( 800, 400 );
// allocate some colors (isn't this fun?)
// the first color allocated is the background color
white = cdImageColorAllocate( im, 255, 255, 255 );
black = cdImageColorAllocate( im, 0, 0, 0 );
blue = cdImageColorAllocate( im, 0, 0, 255 );
// set the text attributes
// font, colorindex, and size respectivily
// font is the style the text is written in. 1 is for Times,
// 5 is for Helvetica.
// we will have black text for this one
// Size is a tough one, but larger numbers give larger text.
//
if ( !( cdSetTextAttrib( im, 5, black, 20 ) ) )
return 1;
// Set some line attributes, lets make lines solid, width 1, and blue
//
if ( !( cdSetLineAttrib( im, 1, 1, blue ) ) )
return 1;
// Draw a couple of grid lines
if ( !( cdLine( im, 0, 200, 799, 200 ) ) )
return 1;
if ( !( cdLine( im, 200, 0, 200, 399 ) ) )
return 1;
if ( !( cdLine( im, 600, 0, 600, 399 ) ) )
return 1;
// Show Text going left, up, down, and right, all starting
// from the same point
// Text going to the left
if ( !( cdSetTextPath( im, 1 ) ) )
return 1;
if ( !( cdText( im, 200, 200, "Text Left" ) ) )
return 1;
// Text going UP
if ( !( cdSetTextPath( im, 2 ) ) )
return 1;
if ( !( cdText( im, 200, 200, "Text Up" ) ) )
return 1;
// Text going DOWN
if ( !( cdSetTextPath( im, 3 ) ) )
return 1;
if ( !( cdText( im, 200, 200, "Text Down" ) ) )
return 1;
// Text going to the RIGHT
if ( !( cdSetTextPath( im, 0 ) ) )
return 1;
if ( !( cdText( im, 200, 200, "Text Right" ) ) )
return 1;
// Show text going at an angle of 0, 45, 90, 135, 180 Degrees
//
// Text at no angle
if ( !( cdText( im, 600, 200, "CGM Draw" ) ) )
return 1;
// Text, 45 Degree Angle
if ( !( cdSetTextOrient( im, -1, 1, 1, 1 ) ) )
return 1;
if ( !( cdText( im, 600, 200, "CGM Draw" ) ) )
return 1;
// Text, 90 Degree Angle
if ( !( cdSetTextOrient( im, -1, 0, 0, 1 ) ) )
return 1;
if ( !( cdText( im, 600, 200, "CGM Draw" ) ) )
return 1;
// Text, 135 Degree Angle
if ( !( cdSetTextOrient( im, -1, -1, -1, 1 ) ) )
return 1;
if ( !( cdText( im, 600, 200, "CGM Draw" ) ) )
return 1;
// Text, 180 Degree Angle
if ( !( cdSetTextOrient( im, 0, -1, -1, 0 ) ) )
return 1;
if ( !( cdText( im, 600, 200, "CGM Draw" ) ) )
return 1;
// Skewed Text, No Angle
if ( !( cdSetTextOrient( im, 1, 1, 1, 0 ) ) )
{
return 1;
}
if ( !( cdSetTextAttrib( im, -1, -1, 40 ) ) )
{
return 1;
}
if ( !( cdText( im, 300, 300, "CGM Draw" ) ) )
{
return 1;
}
// show some lines around it
if ( !( cdLine( im, 300, 300, 500, 300 ) ) )
return 1;
if ( !( cdLine( im, 300, 300, 340, 340 ) ) )
return 1;
// reset the text to 0 angle
if ( !( cdSetTextOrient( im, 0, 1, 1, 0 ) ) )
return 1;
if ( !( cdSetTextAttrib( im, 5, -1, 20 ) ) )
return 1;
if ( !( cdText( im, 5, 5, "G. Edward Johnson" ) ) )
return 1;
// now write the file out, lets call it cdtext.cgm
outf = fopen( "cdtext.cgm", "wb" );
if ( !outf )
return 1;
cdImageCgm( im, outf );
fclose( outf );
outf = 0;
// Remember to destroy the image when you are done
cdImageDestroy( im );
im = 0;
printf( "CGM Text Example!!!\n" );
return 0;
}
|