Function:font2tex
From S2PLOT
(Difference between revisions)
Revision as of 22:06, 16 December 2007 S2plot admin (Talk | contribs) ← Previous diff |
Current revision S2plot admin (Talk | contribs) |
||
Line 1: | Line 1: | ||
==font2tex== | ==font2tex== | ||
- | Use a named freetype2 font to create a texture map. | + | Use a named freetype font to create a texture map. |
==Prototype== | ==Prototype== | ||
Line 9: | Line 9: | ||
==Description== | ==Description== | ||
+ | Load a named freetype font, where fontfilename includes the full pathname to the font, to generate a texture map from the input text. Argument fontsizepx controls the font size, and an optional border can be drawn around the text using border > 0. | ||
- | This function is only available if the [[ | + | This function is only available if the [[S2PLOT:Environment_Variables | S2FREETYPE]] environment variable has been set to 'yes'. |
== See Also == | == See Also == | ||
Line 22: | Line 23: | ||
#include "s2plot.h" | #include "s2plot.h" | ||
+ | unsigned int tid; | ||
+ | |||
+ | void cb(double *t, int *kc) | ||
+ | { | ||
+ | XYZ xyz = {0.0, 0.3, 0.4}; /* Location */ | ||
+ | float isize = 0.02; /* Texture scale */ | ||
+ | XYZ str = { 0.0, 0.0, 0.0}; /* No stretch */ | ||
+ | COLOUR col = { 1.0, 1.0, 0.0 }; /* Yellow */ | ||
+ | float alpha = 0.9; /* Alpha channel */ | ||
+ | char trans = 's'; /* Transparency */ | ||
+ | |||
+ | ds2vbb(xyz, str, isize, col, tid, alpha, trans); /* Draw the billboard */ | ||
+ | } | ||
int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | ||
{ | { | ||
- | fprintf(stderr,"Press <shift>-<w> to write VRML\n"); | + | s2opend("/?",argc,argv); /* Open the display */ |
- | fprintf(stderr,"Creates VRML file: test.wrl\n"); | + | s2svp(-1.0,1.0, -1.0,1.0, -1.0,1.0); /* Set the viewport coords */ |
+ | s2swin(-1.0,1.0, -1.0,1.0, -1.0,1.0); /* Set the window coordinates */ | ||
+ | s2box("BCDE",0,0,"BCDE",0,0,"BCDE",0,0); /* Draw a bounding box */ | ||
- | s2opend("/s2mono", argc, argv); /* Open in mono mode */ | + | char font[64]; /* Allocate font name string */ |
- | s2swin(-1.,1., -1.,1., -1.,1.); /* Set the window coordinates */ | + | |
- | pushVRMLname("BOX"); /* Create a new VRML object name */ | + | sprintf(font,"/Library/Fonts/Arial Black"); /* Path to font */ |
- | s2box("BCDE",0,0,"BCDE",0,0,"BCDE",0,0); | + | /* NOTE: This depends on your local system config */ |
- | /* This will not appear in the VRML */ | + | |
- | int i, N = 100; /* Loop variables */ | + | tid = font2tex(font,"s2plot",32,4); /* Create the texture */ |
- | XYZ xyz; /* Point location */ | + | |
- | COLOUR col; /* Point colour */ | + | |
- | pushVRMLname("POINTS"); /* Create a new VRML object name */ | + | cs2scb(&cb); /* Install a callback */ |
- | for (i=0;i<N;i++) { | + | |
- | xyz.x = drand48()*2.0 - 1.0; /* Random positions */ | + | |
- | xyz.y = drand48()*2.0 - 1.0; | + | |
- | xyz.z = drand48()*2.0 - 1.0; | + | |
- | col.r = drand48()*2.0 - 1.0; /* Random colours */ | + | |
- | col.g = drand48()*2.0 - 1.0; | + | |
- | col.b = drand48()*2.0 - 1.0; | + | |
- | ns2vthpoint(xyz, col, 2); /* Draw current point */ | + | |
- | } | + | |
- | pushVRMLname("ANON"); /* Restore default VRML object name */ | + | |
- | s2show(1); /* Open the s2plot window */ | + | s2show(1); /* Open the s2plot window */ |
return 1; | return 1; |
Current revision
font2tex
Use a named freetype font to create a texture map.
Prototype
unsigned int font2tex(char *fontfilename, char *text, int fontsizepx, int border);
Description
Load a named freetype font, where fontfilename includes the full pathname to the font, to generate a texture map from the input text. Argument fontsizepx controls the font size, and an optional border can be drawn around the text using border > 0.
This function is only available if the S2FREETYPE environment variable has been set to 'yes'.
See Also
Code Example
#include <stdio.h>
#include <stdlib.h>
#include "s2plot.h"
unsigned int tid;
void cb(double *t, int *kc)
{
XYZ xyz = {0.0, 0.3, 0.4}; /* Location */
float isize = 0.02; /* Texture scale */
XYZ str = { 0.0, 0.0, 0.0}; /* No stretch */
COLOUR col = { 1.0, 1.0, 0.0 }; /* Yellow */
float alpha = 0.9; /* Alpha channel */
char trans = 's'; /* Transparency */
ds2vbb(xyz, str, isize, col, tid, alpha, trans); /* Draw the billboard */
}
int main(int argc, char *argv[])
{
s2opend("/?",argc,argv); /* Open the display */
s2svp(-1.0,1.0, -1.0,1.0, -1.0,1.0); /* Set the viewport coords */
s2swin(-1.0,1.0, -1.0,1.0, -1.0,1.0); /* Set the window coordinates */
s2box("BCDE",0,0,"BCDE",0,0,"BCDE",0,0); /* Draw a bounding box */
char font[64]; /* Allocate font name string */
sprintf(font,"/Library/Fonts/Arial Black"); /* Path to font */
/* NOTE: This depends on your local system config */
tid = font2tex(font,"s2plot",32,4); /* Create the texture */
cs2scb(&cb); /* Install a callback */
s2show(1); /* Open the s2plot window */
return 1;
}
Back to S2PLOT function list.