File: cdtext.c

package info (click to toggle)
plplot 5.10.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 26,280 kB
  • ctags: 13,512
  • sloc: ansic: 83,001; xml: 27,081; ada: 18,878; cpp: 15,966; tcl: 11,651; python: 7,075; f90: 7,058; ml: 6,974; java: 6,665; perl: 5,029; sh: 2,210; makefile: 199; lisp: 75; sed: 25; fortran: 7
file content (178 lines) | stat: -rw-r--r-- 4,703 bytes parent folder | download | duplicates (7)
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;
}