Geant4-11
Data Structures | Macros | Typedefs | Functions
gl2ps.h File Reference
#include <stdio.h>
#include <stdlib.h>
#include <GL/gl.h>

Go to the source code of this file.

Data Structures

struct  GL2PSvertex
 

Macros

#define GL2PS_BEST_ROOT   (1<<3)
 
#define GL2PS_BLEND   4
 
#define GL2PS_BSP_SORT   3
 
#define GL2PS_COMPRESS   (1<<10)
 
#define GL2PS_COPYRIGHT   "(C) 1999-2020 C. Geuzaine"
 
#define GL2PS_DRAW_BACKGROUND   (1<<0)
 
#define GL2PS_EPS   1
 
#define GL2PS_ERROR   3
 
#define GL2PS_EXTRA_VERSION   ""
 
#define GL2PS_IMAGEMAP   7
 
#define GL2PS_IMAGEMAP_VISIBLE   9
 
#define GL2PS_IMAGEMAP_WRITTEN   8
 
#define GL2PS_INFO   1
 
#define GL2PS_LANDSCAPE   (1<<6)
 
#define GL2PS_LINE   3
 
#define GL2PS_LINE_CAP_BUTT   0
 
#define GL2PS_LINE_CAP_ROUND   1
 
#define GL2PS_LINE_CAP_SQUARE   2
 
#define GL2PS_LINE_JOIN_BEVEL   2
 
#define GL2PS_LINE_JOIN_MITER   0
 
#define GL2PS_LINE_JOIN_ROUND   1
 
#define GL2PS_LINE_STIPPLE   3
 
#define GL2PS_MAJOR_VERSION   1
 
#define GL2PS_MINOR_VERSION   4
 
#define GL2PS_NO_BLENDING   (1<<11)
 
#define GL2PS_NO_FEEDBACK   4
 
#define GL2PS_NO_OPENGL_CONTEXT   (1<<13)
 
#define GL2PS_NO_PIXMAP   (1<<8)
 
#define GL2PS_NO_PS3_SHADING   (1<<7)
 
#define GL2PS_NO_SORT   1
 
#define GL2PS_NO_TEX_FONTSIZE   (1<<14)
 
#define GL2PS_NO_TEXT   (1<<5)
 
#define GL2PS_NO_TYPE   -1
 
#define GL2PS_NONE   0
 
#define GL2PS_OCCLUSION_CULL   (1<<4)
 
#define GL2PS_OVERFLOW   5
 
#define GL2PS_PATCH_VERSION   2
 
#define GL2PS_PDF   3
 
#define GL2PS_PGF   5
 
#define GL2PS_PIXMAP   6
 
#define GL2PS_POINT   2
 
#define GL2PS_POLYGON_BOUNDARY   2
 
#define GL2PS_POLYGON_OFFSET_FILL   1
 
#define GL2PS_PS   0
 
#define GL2PS_QUADRANGLE   4
 
#define GL2PS_SILENT   (1<<2)
 
#define GL2PS_SIMPLE_LINE_OFFSET   (1<<1)
 
#define GL2PS_SIMPLE_SORT   2
 
#define GL2PS_SPECIAL   10
 
#define GL2PS_SUCCESS   0
 
#define GL2PS_SVG   4
 
#define GL2PS_TEX   2
 
#define GL2PS_TEXT   1
 
#define GL2PS_TEXT_B   4
 
#define GL2PS_TEXT_BL   5
 
#define GL2PS_TEXT_BR   6
 
#define GL2PS_TEXT_C   1
 
#define GL2PS_TEXT_CL   2
 
#define GL2PS_TEXT_CR   3
 
#define GL2PS_TEXT_T   7
 
#define GL2PS_TEXT_TL   8
 
#define GL2PS_TEXT_TR   9
 
#define GL2PS_TIGHT_BOUNDING_BOX   (1<<12)
 
#define GL2PS_TRIANGLE   5
 
#define GL2PS_UNINITIALIZED   6
 
#define GL2PS_USE_CURRENT_VIEWPORT   (1<<9)
 
#define GL2PS_VERSION
 
#define GL2PS_WARNING   2
 
#define GL2PSDLL_API
 

Typedefs

typedef GLfloat GL2PSrgba[4]
 
typedef GLfloat GL2PSxyz[3]
 

Functions

GL2PSDLL_API void gl2psAddPolyPrimitive (GLshort type, GLshort numverts, GL2PSvertex *verts, GLint offset, GLfloat ofactor, GLfloat ounits, GLushort pattern, GLint factor, GLfloat width, GLint linecap, GLint linejoin, char boundary)
 
GL2PSDLL_API GLint gl2psBeginPage (const char *title, const char *producer, GLint viewport[4], GLint format, GLint sort, GLint options, GLint colormode, GLint colorsize, GL2PSrgba *colormap, GLint nr, GLint ng, GLint nb, GLint buffersize, FILE *stream, const char *filename)
 
GL2PSDLL_API GLint gl2psBeginViewport (GLint viewport[4])
 
GL2PSDLL_API GLint gl2psBlendFunc (GLenum sfactor, GLenum dfactor)
 
GL2PSDLL_API GLint gl2psDisable (GLint mode)
 
GL2PSDLL_API GLint gl2psDrawImageMap (GLsizei width, GLsizei height, const GLfloat position[3], const unsigned char *imagemap)
 
GL2PSDLL_API GLint gl2psDrawPixels (GLsizei width, GLsizei height, GLint xorig, GLint yorig, GLenum format, GLenum type, const void *pixels)
 
GL2PSDLL_API GLint gl2psEnable (GLint mode)
 
GL2PSDLL_API GLint gl2psEndPage (void)
 
GL2PSDLL_API GLint gl2psEndViewport (void)
 
GL2PSDLL_API GLint gl2psForceRasterPos (GL2PSvertex *vert)
 
GL2PSDLL_API const char * gl2psGetFileExtension (GLint format)
 
GL2PSDLL_API GLint gl2psGetFileFormat ()
 
GL2PSDLL_API const char * gl2psGetFormatDescription (GLint format)
 
GL2PSDLL_API GLint gl2psGetOptions (GLint *options)
 
GL2PSDLL_API GLint gl2psLineCap (GLint value)
 
GL2PSDLL_API GLint gl2psLineJoin (GLint value)
 
GL2PSDLL_API GLint gl2psLineWidth (GLfloat value)
 
GL2PSDLL_API GLint gl2psPointSize (GLfloat value)
 
GL2PSDLL_API GLint gl2psSetOptions (GLint options)
 
GL2PSDLL_API GLint gl2psSetTexScaling (GLfloat scaling)
 
GL2PSDLL_API GLint gl2psSorting (GLint mode)
 
GL2PSDLL_API GLint gl2psSpecial (GLint format, const char *str)
 
GL2PSDLL_API GLint gl2psSpecialColor (GLint format, const char *str, GL2PSrgba rgba)
 
GL2PSDLL_API GLint gl2psText (const char *str, const char *fontname, GLshort fontsize)
 
GL2PSDLL_API GLint gl2psTextOpt (const char *str, const char *fontname, GLshort fontsize, GLint align, GLfloat angle)
 
GL2PSDLL_API GLint gl2psTextOptColor (const char *str, const char *fontname, GLshort fontsize, GLint align, GLfloat angle, GL2PSrgba color)
 
GL2PSDLL_API GLint gl2psTextOptColorBL (const char *str, const char *fontname, GLshort fontsize, GLint align, GLfloat angle, GL2PSrgba color, GLfloat blx, GLfloat bly)
 

Macro Definition Documentation

◆ GL2PS_BEST_ROOT

#define GL2PS_BEST_ROOT   (1<<3)

Definition at line 158 of file gl2ps.h.

◆ GL2PS_BLEND

#define GL2PS_BLEND   4

Definition at line 176 of file gl2ps.h.

◆ GL2PS_BSP_SORT

#define GL2PS_BSP_SORT   3

Definition at line 140 of file gl2ps.h.

◆ GL2PS_COMPRESS

#define GL2PS_COMPRESS   (1<<10)

Definition at line 165 of file gl2ps.h.

◆ GL2PS_COPYRIGHT

#define GL2PS_COPYRIGHT   "(C) 1999-2020 C. Geuzaine"

Definition at line 125 of file gl2ps.h.

◆ GL2PS_DRAW_BACKGROUND

#define GL2PS_DRAW_BACKGROUND   (1<<0)

Definition at line 155 of file gl2ps.h.

◆ GL2PS_EPS

#define GL2PS_EPS   1

Definition at line 130 of file gl2ps.h.

◆ GL2PS_ERROR

#define GL2PS_ERROR   3

Definition at line 147 of file gl2ps.h.

◆ GL2PS_EXTRA_VERSION

#define GL2PS_EXTRA_VERSION   ""

Definition at line 119 of file gl2ps.h.

◆ GL2PS_IMAGEMAP

#define GL2PS_IMAGEMAP   7

Definition at line 220 of file gl2ps.h.

◆ GL2PS_IMAGEMAP_VISIBLE

#define GL2PS_IMAGEMAP_VISIBLE   9

Definition at line 222 of file gl2ps.h.

◆ GL2PS_IMAGEMAP_WRITTEN

#define GL2PS_IMAGEMAP_WRITTEN   8

Definition at line 221 of file gl2ps.h.

◆ GL2PS_INFO

#define GL2PS_INFO   1

Definition at line 145 of file gl2ps.h.

◆ GL2PS_LANDSCAPE

#define GL2PS_LANDSCAPE   (1<<6)

Definition at line 161 of file gl2ps.h.

◆ GL2PS_LINE

#define GL2PS_LINE   3

Definition at line 216 of file gl2ps.h.

◆ GL2PS_LINE_CAP_BUTT

#define GL2PS_LINE_CAP_BUTT   0

Definition at line 180 of file gl2ps.h.

◆ GL2PS_LINE_CAP_ROUND

#define GL2PS_LINE_CAP_ROUND   1

Definition at line 181 of file gl2ps.h.

◆ GL2PS_LINE_CAP_SQUARE

#define GL2PS_LINE_CAP_SQUARE   2

Definition at line 182 of file gl2ps.h.

◆ GL2PS_LINE_JOIN_BEVEL

#define GL2PS_LINE_JOIN_BEVEL   2

Definition at line 186 of file gl2ps.h.

◆ GL2PS_LINE_JOIN_MITER

#define GL2PS_LINE_JOIN_MITER   0

Definition at line 184 of file gl2ps.h.

◆ GL2PS_LINE_JOIN_ROUND

#define GL2PS_LINE_JOIN_ROUND   1

Definition at line 185 of file gl2ps.h.

◆ GL2PS_LINE_STIPPLE

#define GL2PS_LINE_STIPPLE   3

Definition at line 175 of file gl2ps.h.

◆ GL2PS_MAJOR_VERSION

#define GL2PS_MAJOR_VERSION   1

Definition at line 116 of file gl2ps.h.

◆ GL2PS_MINOR_VERSION

#define GL2PS_MINOR_VERSION   4

Definition at line 117 of file gl2ps.h.

◆ GL2PS_NO_BLENDING

#define GL2PS_NO_BLENDING   (1<<11)

Definition at line 166 of file gl2ps.h.

◆ GL2PS_NO_FEEDBACK

#define GL2PS_NO_FEEDBACK   4

Definition at line 148 of file gl2ps.h.

◆ GL2PS_NO_OPENGL_CONTEXT

#define GL2PS_NO_OPENGL_CONTEXT   (1<<13)

Definition at line 168 of file gl2ps.h.

◆ GL2PS_NO_PIXMAP

#define GL2PS_NO_PIXMAP   (1<<8)

Definition at line 163 of file gl2ps.h.

◆ GL2PS_NO_PS3_SHADING

#define GL2PS_NO_PS3_SHADING   (1<<7)

Definition at line 162 of file gl2ps.h.

◆ GL2PS_NO_SORT

#define GL2PS_NO_SORT   1

Definition at line 138 of file gl2ps.h.

◆ GL2PS_NO_TEX_FONTSIZE

#define GL2PS_NO_TEX_FONTSIZE   (1<<14)

Definition at line 169 of file gl2ps.h.

◆ GL2PS_NO_TEXT

#define GL2PS_NO_TEXT   (1<<5)

Definition at line 160 of file gl2ps.h.

◆ GL2PS_NO_TYPE

#define GL2PS_NO_TYPE   -1

Definition at line 213 of file gl2ps.h.

◆ GL2PS_NONE

#define GL2PS_NONE   0

Definition at line 154 of file gl2ps.h.

◆ GL2PS_OCCLUSION_CULL

#define GL2PS_OCCLUSION_CULL   (1<<4)

Definition at line 159 of file gl2ps.h.

◆ GL2PS_OVERFLOW

#define GL2PS_OVERFLOW   5

Definition at line 149 of file gl2ps.h.

◆ GL2PS_PATCH_VERSION

#define GL2PS_PATCH_VERSION   2

Definition at line 118 of file gl2ps.h.

◆ GL2PS_PDF

#define GL2PS_PDF   3

Definition at line 132 of file gl2ps.h.

◆ GL2PS_PGF

#define GL2PS_PGF   5

Definition at line 134 of file gl2ps.h.

◆ GL2PS_PIXMAP

#define GL2PS_PIXMAP   6

Definition at line 219 of file gl2ps.h.

◆ GL2PS_POINT

#define GL2PS_POINT   2

Definition at line 215 of file gl2ps.h.

◆ GL2PS_POLYGON_BOUNDARY

#define GL2PS_POLYGON_BOUNDARY   2

Definition at line 174 of file gl2ps.h.

◆ GL2PS_POLYGON_OFFSET_FILL

#define GL2PS_POLYGON_OFFSET_FILL   1

Definition at line 173 of file gl2ps.h.

◆ GL2PS_PS

#define GL2PS_PS   0

Definition at line 129 of file gl2ps.h.

◆ GL2PS_QUADRANGLE

#define GL2PS_QUADRANGLE   4

Definition at line 217 of file gl2ps.h.

◆ GL2PS_SILENT

#define GL2PS_SILENT   (1<<2)

Definition at line 157 of file gl2ps.h.

◆ GL2PS_SIMPLE_LINE_OFFSET

#define GL2PS_SIMPLE_LINE_OFFSET   (1<<1)

Definition at line 156 of file gl2ps.h.

◆ GL2PS_SIMPLE_SORT

#define GL2PS_SIMPLE_SORT   2

Definition at line 139 of file gl2ps.h.

◆ GL2PS_SPECIAL

#define GL2PS_SPECIAL   10

Definition at line 223 of file gl2ps.h.

◆ GL2PS_SUCCESS

#define GL2PS_SUCCESS   0

Definition at line 144 of file gl2ps.h.

◆ GL2PS_SVG

#define GL2PS_SVG   4

Definition at line 133 of file gl2ps.h.

◆ GL2PS_TEX

#define GL2PS_TEX   2

Definition at line 131 of file gl2ps.h.

◆ GL2PS_TEXT

#define GL2PS_TEXT   1

Definition at line 214 of file gl2ps.h.

◆ GL2PS_TEXT_B

#define GL2PS_TEXT_B   4

Definition at line 197 of file gl2ps.h.

◆ GL2PS_TEXT_BL

#define GL2PS_TEXT_BL   5

Definition at line 198 of file gl2ps.h.

◆ GL2PS_TEXT_BR

#define GL2PS_TEXT_BR   6

Definition at line 199 of file gl2ps.h.

◆ GL2PS_TEXT_C

#define GL2PS_TEXT_C   1

Definition at line 194 of file gl2ps.h.

◆ GL2PS_TEXT_CL

#define GL2PS_TEXT_CL   2

Definition at line 195 of file gl2ps.h.

◆ GL2PS_TEXT_CR

#define GL2PS_TEXT_CR   3

Definition at line 196 of file gl2ps.h.

◆ GL2PS_TEXT_T

#define GL2PS_TEXT_T   7

Definition at line 200 of file gl2ps.h.

◆ GL2PS_TEXT_TL

#define GL2PS_TEXT_TL   8

Definition at line 201 of file gl2ps.h.

◆ GL2PS_TEXT_TR

#define GL2PS_TEXT_TR   9

Definition at line 202 of file gl2ps.h.

◆ GL2PS_TIGHT_BOUNDING_BOX

#define GL2PS_TIGHT_BOUNDING_BOX   (1<<12)

Definition at line 167 of file gl2ps.h.

◆ GL2PS_TRIANGLE

#define GL2PS_TRIANGLE   5

Definition at line 218 of file gl2ps.h.

◆ GL2PS_UNINITIALIZED

#define GL2PS_UNINITIALIZED   6

Definition at line 150 of file gl2ps.h.

◆ GL2PS_USE_CURRENT_VIEWPORT

#define GL2PS_USE_CURRENT_VIEWPORT   (1<<9)

Definition at line 164 of file gl2ps.h.

◆ GL2PS_VERSION

#define GL2PS_VERSION
Value:
#define GL2PS_PATCH_VERSION
Definition: gl2ps.h:118
#define GL2PS_MAJOR_VERSION
Definition: gl2ps.h:116
#define GL2PS_MINOR_VERSION
Definition: gl2ps.h:117

Definition at line 121 of file gl2ps.h.

◆ GL2PS_WARNING

#define GL2PS_WARNING   2

Definition at line 146 of file gl2ps.h.

◆ GL2PSDLL_API

#define GL2PSDLL_API

Definition at line 91 of file gl2ps.h.

Typedef Documentation

◆ GL2PSrgba

typedef GLfloat GL2PSrgba[4]

Definition at line 204 of file gl2ps.h.

◆ GL2PSxyz

typedef GLfloat GL2PSxyz[3]

Definition at line 205 of file gl2ps.h.

Function Documentation

◆ gl2psAddPolyPrimitive()

GL2PSDLL_API void gl2psAddPolyPrimitive ( GLshort  type,
GLshort  numverts,
GL2PSvertex verts,
GLint  offset,
GLfloat  ofactor,
GLfloat  ounits,
GLushort  pattern,
GLint  factor,
GLfloat  width,
GLint  linecap,
GLint  linejoin,
char  boundary 
)

Definition at line 2263 of file gl2ps.cc.

2269{
2270 GL2PSprimitive *prim;
2271
2272 prim = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
2273 prim->type = type;
2274 prim->numverts = numverts;
2275 prim->verts = (GL2PSvertex*)gl2psMalloc(numverts * sizeof(GL2PSvertex));
2276 memcpy(prim->verts, verts, numverts * sizeof(GL2PSvertex));
2277 prim->boundary = boundary;
2278 prim->offset = (char)offset;
2279 prim->ofactor = ofactor;
2280 prim->ounits = ounits;
2281 prim->pattern = pattern;
2282 prim->factor = factor;
2283 prim->width = width;
2284 prim->linecap = linecap;
2285 prim->linejoin = linejoin;
2286 prim->culled = 0;
2287
2288 /* FIXME: here we should have an option to split stretched
2289 tris/quads to enhance SIMPLE_SORT */
2290
2291 gl2psListAdd(gl2ps->primitives, &prim);
2292}
static GL2PScontext * gl2ps
Definition: gl2ps.cc:278
static void * gl2psMalloc(size_t size)
Definition: gl2ps.cc:308
static void gl2psListAdd(GL2PSlist *list, void *data)
Definition: gl2ps.cc:594
GL2PSlist * primitives
Definition: gl2ps.cc:229
GLshort numverts
Definition: gl2ps.cc:191
char offset
Definition: gl2ps.cc:193
char boundary
Definition: gl2ps.cc:193
GLint linecap
Definition: gl2ps.cc:194
char culled
Definition: gl2ps.cc:193
GLushort pattern
Definition: gl2ps.cc:192
GLint factor
Definition: gl2ps.cc:194
GLfloat ounits
Definition: gl2ps.cc:195
GLshort type
Definition: gl2ps.cc:191
GL2PSvertex * verts
Definition: gl2ps.cc:196
GLint linejoin
Definition: gl2ps.cc:194
GLfloat ofactor
Definition: gl2ps.cc:195
GLfloat width
Definition: gl2ps.cc:195

References GL2PSprimitive::boundary, GL2PSprimitive::culled, GL2PSprimitive::factor, gl2ps, gl2psListAdd(), gl2psMalloc(), GL2PSprimitive::linecap, GL2PSprimitive::linejoin, GL2PSprimitive::numverts, GL2PSprimitive::ofactor, GL2PSprimitive::offset, GL2PSprimitive::ounits, GL2PSprimitive::pattern, GL2PScontext::primitives, GL2PSprimitive::type, GL2PSprimitive::verts, and GL2PSprimitive::width.

Referenced by gl2psParseFeedbackBuffer().

◆ gl2psBeginPage()

GL2PSDLL_API GLint gl2psBeginPage ( const char *  title,
const char *  producer,
GLint  viewport[4],
GLint  format,
GLint  sort,
GLint  options,
GLint  colormode,
GLint  colorsize,
GL2PSrgba colormap,
GLint  nr,
GLint  ng,
GLint  nb,
GLint  buffersize,
FILE *  stream,
const char *  filename 
)

Definition at line 6002 of file gl2ps.cc.

6008{
6009 GLint idx;
6010 int i;
6011
6012 if(gl2ps){
6013 gl2psMsg(GL2PS_ERROR, "gl2psBeginPage called in wrong program state");
6014 return GL2PS_ERROR;
6015 }
6016
6018
6019 /* Validate options */
6020 if (gl2psCheckOptions(options, colormode) == GL_FALSE) {
6022 gl2ps = NULL;
6023 return GL2PS_ERROR;
6024 }
6025
6026 if(format >= 0 && format < (GLint)(sizeof(gl2psbackends) / sizeof(gl2psbackends[0]))){
6027 gl2ps->format = format;
6028 }
6029 else {
6030 gl2psMsg(GL2PS_ERROR, "Unknown output format: %d", format);
6032 gl2ps = NULL;
6033 return GL2PS_ERROR;
6034 }
6035
6036 switch(sort){
6037 case GL2PS_NO_SORT :
6038 case GL2PS_SIMPLE_SORT :
6039 case GL2PS_BSP_SORT :
6040 gl2ps->sort = sort;
6041 break;
6042 default :
6043 gl2psMsg(GL2PS_ERROR, "Unknown sorting algorithm: %d", sort);
6045 gl2ps = NULL;
6046 return GL2PS_ERROR;
6047 }
6048
6049 if(stream){
6050 gl2ps->stream = stream;
6051 }
6052 else{
6053 gl2psMsg(GL2PS_ERROR, "Bad file pointer");
6055 gl2ps = NULL;
6056 return GL2PS_ERROR;
6057 }
6058
6059 gl2ps->header = GL_TRUE;
6060 gl2ps->forcerasterpos = GL_FALSE;
6061 gl2ps->maxbestroot = 10;
6062 gl2ps->options = options;
6063 gl2ps->compress = NULL;
6064 gl2ps->imagemap_head = NULL;
6065 gl2ps->imagemap_tail = NULL;
6066
6068 glGetIntegerv(GL_VIEWPORT, gl2ps->viewport);
6069 }
6070 else{
6071 for(i = 0; i < 4; i++){
6072 gl2ps->viewport[i] = viewport[i];
6073 }
6074 }
6075
6076 if(!gl2ps->viewport[2] || !gl2ps->viewport[3]){
6077 gl2psMsg(GL2PS_ERROR, "Incorrect viewport (x=%d, y=%d, width=%d, height=%d)",
6078 gl2ps->viewport[0], gl2ps->viewport[1],
6079 gl2ps->viewport[2], gl2ps->viewport[3]);
6081 gl2ps = NULL;
6082 return GL2PS_ERROR;
6083 }
6084
6085 gl2ps->threshold[0] = nr ? 1.0F / (GLfloat)nr : 0.064F;
6086 gl2ps->threshold[1] = ng ? 1.0F / (GLfloat)ng : 0.034F;
6087 gl2ps->threshold[2] = nb ? 1.0F / (GLfloat)nb : 0.100F;
6088 gl2ps->colormode = colormode;
6089 gl2ps->buffersize = buffersize > 0 ? buffersize : 2048 * 2048;
6090 for(i = 0; i < 3; i++){
6091 gl2ps->lastvertex.xyz[i] = -1.0F;
6092 }
6093 for(i = 0; i < 4; i++){
6094 gl2ps->lastvertex.rgba[i] = -1.0F;
6095 gl2ps->lastrgba[i] = -1.0F;
6096 }
6097 gl2ps->lastlinewidth = -1.0F;
6098 gl2ps->lastlinecap = 0;
6099 gl2ps->lastlinejoin = 0;
6100 gl2ps->lastpattern = 0;
6101 gl2ps->lastfactor = 0;
6102 gl2ps->imagetree = NULL;
6103 gl2ps->primitivetoadd = NULL;
6104 gl2ps->zerosurfacearea = GL_FALSE;
6105 gl2ps->pdfprimlist = NULL;
6106 gl2ps->pdfgrouplist = NULL;
6107 gl2ps->xreflist = NULL;
6108
6109 /* get default blending mode from current OpenGL state (enabled by
6110 default for SVG) */
6112 gl2ps->blending = (gl2ps->format == GL2PS_SVG) ? GL_TRUE
6113 : glIsEnabled(GL_BLEND);
6114 glGetIntegerv(GL_BLEND_SRC, &gl2ps->blendfunc[0]);
6115 glGetIntegerv(GL_BLEND_DST, &gl2ps->blendfunc[1]);
6116 }
6117 else {
6118 gl2ps->blending = GL_FALSE;
6119 }
6120
6121 if(gl2ps->colormode == GL_RGBA){
6122 gl2ps->colorsize = 0;
6123 gl2ps->colormap = NULL;
6125 glGetFloatv(GL_COLOR_CLEAR_VALUE, gl2ps->bgcolor);
6126 }
6127 }
6128 else if(gl2ps->colormode == GL_COLOR_INDEX){
6129 if(!colorsize || !colormap){
6130 gl2psMsg(GL2PS_ERROR, "Missing colormap for GL_COLOR_INDEX rendering");
6132 gl2ps = NULL;
6133 return GL2PS_ERROR;
6134 }
6135 gl2ps->colorsize = colorsize;
6137 memcpy(gl2ps->colormap, colormap, gl2ps->colorsize * sizeof(GL2PSrgba));
6138 glGetIntegerv(GL_INDEX_CLEAR_VALUE, &idx);
6139 gl2ps->bgcolor[0] = gl2ps->colormap[idx][0];
6140 gl2ps->bgcolor[1] = gl2ps->colormap[idx][1];
6141 gl2ps->bgcolor[2] = gl2ps->colormap[idx][2];
6142 gl2ps->bgcolor[3] = 1.0F;
6143 }
6144 else{
6145 gl2psMsg(GL2PS_ERROR, "Unknown color mode in gl2psBeginPage");
6147 gl2ps = NULL;
6148 return GL2PS_ERROR;
6149 }
6150
6151 if(!title){
6152 gl2ps->title = (char*)gl2psMalloc(sizeof(char));
6153 gl2ps->title[0] = '\0';
6154 }
6155 else{
6156 gl2ps->title = (char*)gl2psMalloc((strlen(title)+1)*sizeof(char));
6157 strcpy(gl2ps->title, title);
6158 }
6159
6160 if(!producer){
6161 gl2ps->producer = (char*)gl2psMalloc(sizeof(char));
6162 gl2ps->producer[0] = '\0';
6163 }
6164 else{
6165 gl2ps->producer = (char*)gl2psMalloc((strlen(producer)+1)*sizeof(char));
6166 strcpy(gl2ps->producer, producer);
6167 }
6168
6169 if(!filename){
6170 gl2ps->filename = (char*)gl2psMalloc(sizeof(char));
6171 gl2ps->filename[0] = '\0';
6172 }
6173 else{
6174 gl2ps->filename = (char*)gl2psMalloc((strlen(filename)+1)*sizeof(char));
6175 strcpy(gl2ps->filename, filename);
6176 }
6177
6178 gl2ps->primitives = gl2psListCreate(500, 500, sizeof(GL2PSprimitive*));
6179 gl2ps->auxprimitives = gl2psListCreate(100, 100, sizeof(GL2PSprimitive*));
6180
6182 gl2ps->feedback = (GLfloat*)gl2psMalloc(gl2ps->buffersize * sizeof(GLfloat));
6183 glFeedbackBuffer(gl2ps->buffersize, GL_3D_COLOR, gl2ps->feedback);
6184 glRenderMode(GL_FEEDBACK);
6185 }
6186 else {
6187 gl2ps->feedback = NULL;
6188 gl2ps->buffersize = 0;
6189 }
6190
6191 gl2ps->tex_scaling = 1.;
6192
6193 return GL2PS_SUCCESS;
6194}
static GL2PSbackend * gl2psbackends[]
Definition: gl2ps.cc:5863
static GLboolean gl2psCheckOptions(GLint options, GLint colormode)
Definition: gl2ps.cc:5968
static void gl2psFree(void *ptr)
Definition: gl2ps.cc:334
static void gl2psMsg(GLint level, const char *fmt,...)
Definition: gl2ps.cc:290
static GL2PSlist * gl2psListCreate(GLint n, GLint incr, GLint size)
Definition: gl2ps.cc:565
#define GL2PS_SVG
Definition: gl2ps.h:133
#define GL2PS_SIMPLE_SORT
Definition: gl2ps.h:139
#define GL2PS_NO_BLENDING
Definition: gl2ps.h:166
#define GL2PS_ERROR
Definition: gl2ps.h:147
#define GL2PS_BSP_SORT
Definition: gl2ps.h:140
#define GL2PS_NO_OPENGL_CONTEXT
Definition: gl2ps.h:168
GLfloat GL2PSrgba[4]
Definition: gl2ps.h:204
#define GL2PS_SUCCESS
Definition: gl2ps.h:144
#define GL2PS_NONE
Definition: gl2ps.h:154
#define GL2PS_NO_SORT
Definition: gl2ps.h:138
#define GL2PS_USE_CURRENT_VIEWPORT
Definition: gl2ps.h:164
GLint maxbestroot
Definition: gl2ps.cc:237
GLboolean zerosurfacearea
Definition: gl2ps.cc:240
GLint sort
Definition: gl2ps.cc:220
GL2PSimagemap * imagemap_head
Definition: gl2ps.cc:257
GL2PSlist * pdfgrouplist
Definition: gl2ps.cc:246
char * producer
Definition: gl2ps.cc:222
GL2PSimagemap * imagemap_tail
Definition: gl2ps.cc:258
GLint format
Definition: gl2ps.cc:220
GLint viewport[4]
Definition: gl2ps.cc:225
GLushort lastpattern
Definition: gl2ps.cc:227
GL2PSrgba threshold
Definition: gl2ps.cc:226
GLint blendfunc[2]
Definition: gl2ps.cc:225
GLboolean blending
Definition: gl2ps.cc:223
GLint colormode
Definition: gl2ps.cc:220
GL2PSvertex lastvertex
Definition: gl2ps.cc:228
char * title
Definition: gl2ps.cc:222
GL2PSprimitive * primitivetoadd
Definition: gl2ps.cc:242
GLint options
Definition: gl2ps.cc:220
GLboolean forcerasterpos
Definition: gl2ps.cc:234
GLint lastfactor
Definition: gl2ps.cc:225
GLfloat * feedback
Definition: gl2ps.cc:224
GLint lastlinecap
Definition: gl2ps.cc:221
GL2PSrgba bgcolor
Definition: gl2ps.cc:226
GL2PSrgba lastrgba
Definition: gl2ps.cc:226
GL2PScompress * compress
Definition: gl2ps.cc:231
char * filename
Definition: gl2ps.cc:222
GL2PSrgba * colormap
Definition: gl2ps.cc:226
GLint colorsize
Definition: gl2ps.cc:220
GL2PSbsptree2d * imagetree
Definition: gl2ps.cc:241
GL2PSlist * pdfprimlist
Definition: gl2ps.cc:246
FILE * stream
Definition: gl2ps.cc:230
GL2PSlist * auxprimitives
Definition: gl2ps.cc:229
GLboolean header
Definition: gl2ps.cc:232
GLint buffersize
Definition: gl2ps.cc:220
GLfloat tex_scaling
Definition: gl2ps.cc:261
int * xreflist
Definition: gl2ps.cc:247
GLfloat lastlinewidth
Definition: gl2ps.cc:224
GLint lastlinejoin
Definition: gl2ps.cc:221
GL2PSxyz xyz
Definition: gl2ps.h:208
GL2PSrgba rgba
Definition: gl2ps.h:209

References GL2PScontext::auxprimitives, GL2PScontext::bgcolor, GL2PScontext::blendfunc, GL2PScontext::blending, GL2PScontext::buffersize, GL2PScontext::colormap, GL2PScontext::colormode, GL2PScontext::colorsize, GL2PScontext::compress, GL2PScontext::feedback, GL2PScontext::filename, GL2PScontext::forcerasterpos, GL2PScontext::format, gl2ps, GL2PS_BSP_SORT, GL2PS_ERROR, GL2PS_NO_BLENDING, GL2PS_NO_OPENGL_CONTEXT, GL2PS_NO_SORT, GL2PS_NONE, GL2PS_SIMPLE_SORT, GL2PS_SUCCESS, GL2PS_SVG, GL2PS_USE_CURRENT_VIEWPORT, gl2psbackends, gl2psCheckOptions(), gl2psFree(), gl2psListCreate(), gl2psMalloc(), gl2psMsg(), GL2PScontext::header, GL2PScontext::imagemap_head, GL2PScontext::imagemap_tail, GL2PScontext::imagetree, GL2PScontext::lastfactor, GL2PScontext::lastlinecap, GL2PScontext::lastlinejoin, GL2PScontext::lastlinewidth, GL2PScontext::lastpattern, GL2PScontext::lastrgba, GL2PScontext::lastvertex, GL2PScontext::maxbestroot, GL2PScontext::options, GL2PScontext::pdfgrouplist, GL2PScontext::pdfprimlist, GL2PScontext::primitives, GL2PScontext::primitivetoadd, GL2PScontext::producer, GL2PSvertex::rgba, GL2PScontext::sort, GL2PScontext::stream, GL2PScontext::tex_scaling, GL2PScontext::threshold, GL2PScontext::title, GL2PScontext::viewport, GL2PScontext::xreflist, GL2PSvertex::xyz, and GL2PScontext::zerosurfacearea.

◆ gl2psBeginViewport()

GL2PSDLL_API GLint gl2psBeginViewport ( GLint  viewport[4])

Definition at line 6223 of file gl2ps.cc.

6224{
6225 if(!gl2ps) return GL2PS_UNINITIALIZED;
6226
6227 (gl2psbackends[gl2ps->format]->beginViewport)(viewport);
6228
6229 return GL2PS_SUCCESS;
6230}
#define GL2PS_UNINITIALIZED
Definition: gl2ps.h:150
void(* beginViewport)(GLint viewport[4])
Definition: gl2ps.cc:267

References GL2PSbackend::beginViewport, GL2PScontext::format, gl2ps, GL2PS_SUCCESS, GL2PS_UNINITIALIZED, and gl2psbackends.

◆ gl2psBlendFunc()

GL2PSDLL_API GLint gl2psBlendFunc ( GLenum  sfactor,
GLenum  dfactor 
)

Definition at line 6552 of file gl2ps.cc.

6553{
6554 if(!gl2ps) return GL2PS_UNINITIALIZED;
6555
6556 if(GL_FALSE == gl2psSupportedBlendMode(sfactor, dfactor))
6557 return GL2PS_WARNING;
6558
6559 glPassThrough(GL2PS_SRC_BLEND_TOKEN);
6560 glPassThrough((GLfloat)sfactor);
6561 glPassThrough(GL2PS_DST_BLEND_TOKEN);
6562 glPassThrough((GLfloat)dfactor);
6563
6564 return GL2PS_SUCCESS;
6565}
#define GL2PS_DST_BLEND_TOKEN
Definition: gl2ps.cc:123
#define GL2PS_SRC_BLEND_TOKEN
Definition: gl2ps.cc:122
static GLboolean gl2psSupportedBlendMode(GLenum sfactor, GLenum dfactor)
Definition: gl2ps.cc:1003
#define GL2PS_WARNING
Definition: gl2ps.h:146

References gl2ps, GL2PS_DST_BLEND_TOKEN, GL2PS_SRC_BLEND_TOKEN, GL2PS_SUCCESS, GL2PS_UNINITIALIZED, GL2PS_WARNING, and gl2psSupportedBlendMode().

◆ gl2psDisable()

GL2PSDLL_API GLint gl2psDisable ( GLint  mode)

Definition at line 6487 of file gl2ps.cc.

6488{
6489 if(!gl2ps) return GL2PS_UNINITIALIZED;
6490
6491 switch(mode){
6493 glPassThrough(GL2PS_END_OFFSET_TOKEN);
6494 break;
6496 glPassThrough(GL2PS_END_BOUNDARY_TOKEN);
6497 break;
6498 case GL2PS_LINE_STIPPLE :
6499 glPassThrough(GL2PS_END_STIPPLE_TOKEN);
6500 break;
6501 case GL2PS_BLEND :
6502 glPassThrough(GL2PS_END_BLEND_TOKEN);
6503 break;
6504 default :
6505 gl2psMsg(GL2PS_WARNING, "Unknown mode in gl2psDisable: %d", mode);
6506 return GL2PS_WARNING;
6507 }
6508
6509 return GL2PS_SUCCESS;
6510}
#define GL2PS_END_STIPPLE_TOKEN
Definition: gl2ps.cc:115
#define GL2PS_END_BLEND_TOKEN
Definition: gl2ps.cc:121
#define GL2PS_END_OFFSET_TOKEN
Definition: gl2ps.cc:111
#define GL2PS_END_BOUNDARY_TOKEN
Definition: gl2ps.cc:113
#define GL2PS_LINE_STIPPLE
Definition: gl2ps.h:175
#define GL2PS_POLYGON_BOUNDARY
Definition: gl2ps.h:174
#define GL2PS_POLYGON_OFFSET_FILL
Definition: gl2ps.h:173
#define GL2PS_BLEND
Definition: gl2ps.h:176

References gl2ps, GL2PS_BLEND, GL2PS_END_BLEND_TOKEN, GL2PS_END_BOUNDARY_TOKEN, GL2PS_END_OFFSET_TOKEN, GL2PS_END_STIPPLE_TOKEN, GL2PS_LINE_STIPPLE, GL2PS_POLYGON_BOUNDARY, GL2PS_POLYGON_OFFSET_FILL, GL2PS_SUCCESS, GL2PS_UNINITIALIZED, GL2PS_WARNING, and gl2psMsg().

◆ gl2psDrawImageMap()

GL2PSDLL_API GLint gl2psDrawImageMap ( GLsizei  width,
GLsizei  height,
const GLfloat  position[3],
const unsigned char *  imagemap 
)

Definition at line 6426 of file gl2ps.cc.

6428 {
6429 int size, i;
6430 int sizeoffloat = sizeof(GLfloat);
6431
6432 if(!gl2ps || !imagemap) return GL2PS_UNINITIALIZED;
6433
6434 if((width <= 0) || (height <= 0)) return GL2PS_ERROR;
6435
6436 size = height + height * ((width - 1) / 8);
6437 glPassThrough(GL2PS_IMAGEMAP_TOKEN);
6438 glBegin(GL_POINTS);
6439 glVertex3f(position[0], position[1],position[2]);
6440 glEnd();
6441 glPassThrough((GLfloat)width);
6442 glPassThrough((GLfloat)height);
6443 for(i = 0; i < size; i += sizeoffloat){
6444 const float *value = (const float*)imagemap;
6445 glPassThrough(*value);
6446 imagemap += sizeoffloat;
6447 }
6448 return GL2PS_SUCCESS;
6449}
#define GL2PS_IMAGEMAP_TOKEN
Definition: gl2ps.cc:124

References gl2ps, GL2PS_ERROR, GL2PS_IMAGEMAP_TOKEN, GL2PS_SUCCESS, and GL2PS_UNINITIALIZED.

◆ gl2psDrawPixels()

GL2PSDLL_API GLint gl2psDrawPixels ( GLsizei  width,
GLsizei  height,
GLint  xorig,
GLint  yorig,
GLenum  format,
GLenum  type,
const void *  pixels 
)

Definition at line 6312 of file gl2ps.cc.

6316{
6317 int size, i;
6318 const GLfloat *piv;
6319 GLfloat pos[4], zoom_x, zoom_y;
6320 GL2PSprimitive *prim;
6321 GLboolean valid;
6322
6323 if(!gl2ps || !pixels) return GL2PS_UNINITIALIZED;
6324
6325 if((width <= 0) || (height <= 0)) return GL2PS_ERROR;
6326
6328
6329 if((format != GL_RGB && format != GL_RGBA) || type != GL_FLOAT){
6330 gl2psMsg(GL2PS_ERROR, "gl2psDrawPixels only implemented for "
6331 "GL_RGB/GL_RGBA, GL_FLOAT pixels");
6332 return GL2PS_ERROR;
6333 }
6334
6335 if (gl2ps->forcerasterpos) {
6336 pos[0] = gl2ps->rasterpos.xyz[0];
6337 pos[1] = gl2ps->rasterpos.xyz[1];
6338 pos[2] = gl2ps->rasterpos.xyz[2];
6339 pos[3] = 1.f;
6340 /* Hardcode zoom factors (for now?) */
6341 zoom_x = 1.f;
6342 zoom_y = 1.f;
6343 }
6344 else {
6345 glGetBooleanv(GL_CURRENT_RASTER_POSITION_VALID, &valid);
6346 if(GL_FALSE == valid) return GL2PS_SUCCESS; /* the primitive is culled */
6347 glGetFloatv(GL_CURRENT_RASTER_POSITION, pos);
6348 glGetFloatv(GL_ZOOM_X, &zoom_x);
6349 glGetFloatv(GL_ZOOM_Y, &zoom_y);
6350 }
6351
6352 prim = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
6353 prim->type = GL2PS_PIXMAP;
6354 prim->boundary = 0;
6355 prim->numverts = 1;
6356 prim->verts = (GL2PSvertex*)gl2psMalloc(sizeof(GL2PSvertex));
6357 prim->verts[0].xyz[0] = pos[0] + xorig;
6358 prim->verts[0].xyz[1] = pos[1] + yorig;
6359 prim->verts[0].xyz[2] = pos[2];
6360 prim->culled = 0;
6361 prim->offset = 0;
6362 prim->ofactor = 0.0;
6363 prim->ounits = 0.0;
6364 prim->pattern = 0;
6365 prim->factor = 0;
6366 prim->width = 1;
6367 if (gl2ps->forcerasterpos) {
6368 prim->verts[0].rgba[0] = gl2ps->rasterpos.rgba[0];
6369 prim->verts[0].rgba[1] = gl2ps->rasterpos.rgba[1];
6370 prim->verts[0].rgba[2] = gl2ps->rasterpos.rgba[2];
6371 prim->verts[0].rgba[3] = gl2ps->rasterpos.rgba[3];
6372 }
6373 else {
6374 glGetFloatv(GL_CURRENT_RASTER_COLOR, prim->verts[0].rgba);
6375 }
6376 prim->data.image = (GL2PSimage*)gl2psMalloc(sizeof(GL2PSimage));
6377 prim->data.image->width = width;
6378 prim->data.image->height = height;
6379 prim->data.image->zoom_x = zoom_x;
6380 prim->data.image->zoom_y = zoom_y;
6381 prim->data.image->format = format;
6382 prim->data.image->type = type;
6383
6384 gl2ps->forcerasterpos = GL_FALSE;
6385
6386 switch(format){
6387 case GL_RGBA:
6389 /* special case: blending turned off */
6390 prim->data.image->format = GL_RGB;
6391 size = height * width * 3;
6392 prim->data.image->pixels = (GLfloat*)gl2psMalloc(size * sizeof(GLfloat));
6393 piv = (const GLfloat*)pixels;
6394 for(i = 0; i < size; ++i, ++piv){
6395 prim->data.image->pixels[i] = *piv;
6396 if(!((i + 1) % 3))
6397 ++piv;
6398 }
6399 }
6400 else{
6401 size = height * width * 4;
6402 prim->data.image->pixels = (GLfloat*)gl2psMalloc(size * sizeof(GLfloat));
6403 memcpy(prim->data.image->pixels, pixels, size * sizeof(GLfloat));
6404 }
6405 break;
6406 case GL_RGB:
6407 default:
6408 size = height * width * 3;
6409 prim->data.image->pixels = (GLfloat*)gl2psMalloc(size * sizeof(GLfloat));
6410 memcpy(prim->data.image->pixels, pixels, size * sizeof(GLfloat));
6411 break;
6412 }
6413
6414 /* If no OpenGL context, just add directly to primitives */
6417 glPassThrough(GL2PS_DRAW_PIXELS_TOKEN);
6418 }
6419 else {
6420 gl2psListAdd(gl2ps->primitives, &prim);
6421 }
6422
6423 return GL2PS_SUCCESS;
6424}
static const G4double pos
#define GL2PS_DRAW_PIXELS_TOKEN
Definition: gl2ps.cc:125
#define GL2PS_PIXMAP
Definition: gl2ps.h:219
#define GL2PS_NO_PIXMAP
Definition: gl2ps.h:163
GL2PSvertex rasterpos
Definition: gl2ps.cc:233
GLfloat * pixels
Definition: gl2ps.cc:180
GLfloat zoom_y
Definition: gl2ps.cc:179
GLenum type
Definition: gl2ps.cc:178
GLsizei width
Definition: gl2ps.cc:174
GLenum format
Definition: gl2ps.cc:178
GLfloat zoom_x
Definition: gl2ps.cc:179
GLsizei height
Definition: gl2ps.cc:174
union GL2PSprimitive::@106 data
GL2PSimage * image
Definition: gl2ps.cc:199

References GL2PScontext::auxprimitives, GL2PScontext::blending, GL2PSprimitive::boundary, GL2PSprimitive::culled, GL2PSprimitive::data, GL2PSprimitive::factor, GL2PScontext::forcerasterpos, GL2PSimage::format, gl2ps, GL2PS_DRAW_PIXELS_TOKEN, GL2PS_ERROR, GL2PS_NO_BLENDING, GL2PS_NO_OPENGL_CONTEXT, GL2PS_NO_PIXMAP, GL2PS_NONE, GL2PS_PIXMAP, GL2PS_SUCCESS, GL2PS_UNINITIALIZED, gl2psListAdd(), gl2psMalloc(), gl2psMsg(), GL2PSimage::height, GL2PSprimitive::image, GL2PSprimitive::numverts, GL2PSprimitive::ofactor, GL2PSprimitive::offset, GL2PScontext::options, GL2PSprimitive::ounits, GL2PSprimitive::pattern, GL2PSimage::pixels, pos, GL2PScontext::primitives, GL2PScontext::rasterpos, GL2PSvertex::rgba, GL2PSimage::type, GL2PSprimitive::type, GL2PSprimitive::verts, GL2PSimage::width, GL2PSprimitive::width, GL2PSvertex::xyz, GL2PSimage::zoom_x, and GL2PSimage::zoom_y.

◆ gl2psEnable()

GL2PSDLL_API GLint gl2psEnable ( GLint  mode)

Definition at line 6451 of file gl2ps.cc.

6452{
6453 GLint tmp;
6454 GLfloat tmp2;
6455
6456 if(!gl2ps) return GL2PS_UNINITIALIZED;
6457
6458 switch(mode){
6460 glPassThrough(GL2PS_BEGIN_OFFSET_TOKEN);
6461 glGetFloatv(GL_POLYGON_OFFSET_FACTOR, &tmp2);
6462 glPassThrough(tmp2);
6463 glGetFloatv(GL_POLYGON_OFFSET_UNITS, &tmp2);
6464 glPassThrough(tmp2);
6465 break;
6467 glPassThrough(GL2PS_BEGIN_BOUNDARY_TOKEN);
6468 break;
6469 case GL2PS_LINE_STIPPLE :
6470 glPassThrough(GL2PS_BEGIN_STIPPLE_TOKEN);
6471 glGetIntegerv(GL_LINE_STIPPLE_PATTERN, &tmp);
6472 glPassThrough((GLfloat)tmp);
6473 glGetIntegerv(GL_LINE_STIPPLE_REPEAT, &tmp);
6474 glPassThrough((GLfloat)tmp);
6475 break;
6476 case GL2PS_BLEND :
6477 glPassThrough(GL2PS_BEGIN_BLEND_TOKEN);
6478 break;
6479 default :
6480 gl2psMsg(GL2PS_WARNING, "Unknown mode in gl2psEnable: %d", mode);
6481 return GL2PS_WARNING;
6482 }
6483
6484 return GL2PS_SUCCESS;
6485}
#define GL2PS_BEGIN_OFFSET_TOKEN
Definition: gl2ps.cc:110
#define GL2PS_BEGIN_STIPPLE_TOKEN
Definition: gl2ps.cc:114
#define GL2PS_BEGIN_BLEND_TOKEN
Definition: gl2ps.cc:120
#define GL2PS_BEGIN_BOUNDARY_TOKEN
Definition: gl2ps.cc:112

References gl2ps, GL2PS_BEGIN_BLEND_TOKEN, GL2PS_BEGIN_BOUNDARY_TOKEN, GL2PS_BEGIN_OFFSET_TOKEN, GL2PS_BEGIN_STIPPLE_TOKEN, GL2PS_BLEND, GL2PS_LINE_STIPPLE, GL2PS_POLYGON_BOUNDARY, GL2PS_POLYGON_OFFSET_FILL, GL2PS_SUCCESS, GL2PS_UNINITIALIZED, GL2PS_WARNING, and gl2psMsg().

◆ gl2psEndPage()

GL2PSDLL_API GLint gl2psEndPage ( void  )

Definition at line 6196 of file gl2ps.cc.

6197{
6198 GLint res;
6199
6200 if(!gl2ps) return GL2PS_UNINITIALIZED;
6201
6202 res = gl2psPrintPrimitives();
6203
6204 if(res != GL2PS_OVERFLOW)
6206
6207 fflush(gl2ps->stream);
6208
6218 gl2ps = NULL;
6219
6220 return res;
6221}
static GLint gl2psPrintPrimitives(void)
Definition: gl2ps.cc:5891
static void gl2psListDelete(GL2PSlist *list)
Definition: gl2ps.cc:587
static void gl2psFreeImagemap(GL2PSimagemap *list)
Definition: gl2ps.cc:1559
#define GL2PS_OVERFLOW
Definition: gl2ps.h:149
void(* printFooter)(void)
Definition: gl2ps.cc:266

References GL2PScontext::auxprimitives, GL2PScontext::colormap, GL2PScontext::feedback, GL2PScontext::filename, GL2PScontext::format, gl2ps, GL2PS_OVERFLOW, GL2PS_UNINITIALIZED, gl2psbackends, gl2psFree(), gl2psFreeImagemap(), gl2psListDelete(), gl2psPrintPrimitives(), GL2PScontext::imagemap_head, GL2PScontext::primitives, GL2PSbackend::printFooter, GL2PScontext::producer, GL2PScontext::stream, and GL2PScontext::title.

◆ gl2psEndViewport()

GL2PSDLL_API GLint gl2psEndViewport ( void  )

Definition at line 6232 of file gl2ps.cc.

6233{
6234 GLint res;
6235
6236 if(!gl2ps) return GL2PS_UNINITIALIZED;
6237
6239
6240 /* reset last used colors, line widths */
6242
6243 return res;
6244}
static void gl2psResetLineProperties(void)
Definition: gl2ps.cc:1092
GLint(* endViewport)(void)
Definition: gl2ps.cc:268

References GL2PSbackend::endViewport, GL2PScontext::format, gl2ps, GL2PS_UNINITIALIZED, gl2psbackends, and gl2psResetLineProperties().

◆ gl2psForceRasterPos()

GL2PSDLL_API GLint gl2psForceRasterPos ( GL2PSvertex vert)

Definition at line 6617 of file gl2ps.cc.

6618{
6619
6620 if(!gl2ps) {
6621 return GL2PS_UNINITIALIZED;
6622 }
6623
6624 gl2ps->forcerasterpos = GL_TRUE;
6625 gl2ps->rasterpos.xyz[0] = vert->xyz[0];
6626 gl2ps->rasterpos.xyz[1] = vert->xyz[1];
6627 gl2ps->rasterpos.xyz[2] = vert->xyz[2];
6628 gl2ps->rasterpos.rgba[0] = vert->rgba[0];
6629 gl2ps->rasterpos.rgba[1] = vert->rgba[1];
6630 gl2ps->rasterpos.rgba[2] = vert->rgba[2];
6631 gl2ps->rasterpos.rgba[3] = vert->rgba[3];
6632
6633 return GL2PS_SUCCESS;
6634}

References GL2PScontext::forcerasterpos, gl2ps, GL2PS_SUCCESS, GL2PS_UNINITIALIZED, GL2PScontext::rasterpos, GL2PSvertex::rgba, and GL2PSvertex::xyz.

◆ gl2psGetFileExtension()

GL2PSDLL_API const char * gl2psGetFileExtension ( GLint  format)

Definition at line 6592 of file gl2ps.cc.

6593{
6594 if(format >= 0 && format < (GLint)(sizeof(gl2psbackends) / sizeof(gl2psbackends[0])))
6595 return gl2psbackends[format]->file_extension;
6596 else
6597 return "Unknown format";
6598}
const char * file_extension
Definition: gl2ps.cc:271

References GL2PSbackend::file_extension, and gl2psbackends.

◆ gl2psGetFileFormat()

GL2PSDLL_API GLint gl2psGetFileFormat ( )

Definition at line 6608 of file gl2ps.cc.

6609{
6610 if(!gl2ps) {
6611 return GL2PS_UNINITIALIZED;
6612 }
6613
6614 return gl2ps->format;
6615}

References GL2PScontext::format, gl2ps, and GL2PS_UNINITIALIZED.

◆ gl2psGetFormatDescription()

GL2PSDLL_API const char * gl2psGetFormatDescription ( GLint  format)

Definition at line 6600 of file gl2ps.cc.

6601{
6602 if(format >= 0 && format < (GLint)(sizeof(gl2psbackends) / sizeof(gl2psbackends[0])))
6603 return gl2psbackends[format]->description;
6604 else
6605 return "Unknown format";
6606}
const char * description
Definition: gl2ps.cc:272

References GL2PSbackend::description, and gl2psbackends.

◆ gl2psGetOptions()

GL2PSDLL_API GLint gl2psGetOptions ( GLint *  options)

Definition at line 6580 of file gl2ps.cc.

6581{
6582 if(!gl2ps) {
6583 *options = 0;
6584 return GL2PS_UNINITIALIZED;
6585 }
6586
6587 *options = gl2ps->options;
6588
6589 return GL2PS_SUCCESS;
6590}

References gl2ps, GL2PS_SUCCESS, GL2PS_UNINITIALIZED, and GL2PScontext::options.

◆ gl2psLineCap()

GL2PSDLL_API GLint gl2psLineCap ( GLint  value)

Definition at line 6522 of file gl2ps.cc.

6523{
6524 if(!gl2ps) return GL2PS_UNINITIALIZED;
6525
6526 glPassThrough(GL2PS_LINE_CAP_TOKEN);
6527 glPassThrough(value);
6528
6529 return GL2PS_SUCCESS;
6530}
#define GL2PS_LINE_CAP_TOKEN
Definition: gl2ps.cc:117

References gl2ps, GL2PS_LINE_CAP_TOKEN, GL2PS_SUCCESS, and GL2PS_UNINITIALIZED.

◆ gl2psLineJoin()

GL2PSDLL_API GLint gl2psLineJoin ( GLint  value)

Definition at line 6532 of file gl2ps.cc.

6533{
6534 if(!gl2ps) return GL2PS_UNINITIALIZED;
6535
6536 glPassThrough(GL2PS_LINE_JOIN_TOKEN);
6537 glPassThrough(value);
6538
6539 return GL2PS_SUCCESS;
6540}
#define GL2PS_LINE_JOIN_TOKEN
Definition: gl2ps.cc:118

References gl2ps, GL2PS_LINE_JOIN_TOKEN, GL2PS_SUCCESS, and GL2PS_UNINITIALIZED.

◆ gl2psLineWidth()

GL2PSDLL_API GLint gl2psLineWidth ( GLfloat  value)

Definition at line 6542 of file gl2ps.cc.

6543{
6544 if(!gl2ps) return GL2PS_UNINITIALIZED;
6545
6546 glPassThrough(GL2PS_LINE_WIDTH_TOKEN);
6547 glPassThrough(value);
6548
6549 return GL2PS_SUCCESS;
6550}
#define GL2PS_LINE_WIDTH_TOKEN
Definition: gl2ps.cc:119

References gl2ps, GL2PS_LINE_WIDTH_TOKEN, GL2PS_SUCCESS, and GL2PS_UNINITIALIZED.

◆ gl2psPointSize()

GL2PSDLL_API GLint gl2psPointSize ( GLfloat  value)

Definition at line 6512 of file gl2ps.cc.

6513{
6514 if(!gl2ps) return GL2PS_UNINITIALIZED;
6515
6516 glPassThrough(GL2PS_POINT_SIZE_TOKEN);
6517 glPassThrough(value);
6518
6519 return GL2PS_SUCCESS;
6520}
#define GL2PS_POINT_SIZE_TOKEN
Definition: gl2ps.cc:116

References gl2ps, GL2PS_POINT_SIZE_TOKEN, GL2PS_SUCCESS, and GL2PS_UNINITIALIZED.

◆ gl2psSetOptions()

GL2PSDLL_API GLint gl2psSetOptions ( GLint  options)

Definition at line 6567 of file gl2ps.cc.

6568{
6569 if(!gl2ps) return GL2PS_UNINITIALIZED;
6570
6571 if(gl2psCheckOptions(options, gl2ps->colormode) == GL_FALSE) {
6572 return GL2PS_ERROR;
6573 }
6574
6575 gl2ps->options = options;
6576
6577 return GL2PS_SUCCESS;
6578}

References GL2PScontext::colormode, gl2ps, GL2PS_ERROR, GL2PS_SUCCESS, GL2PS_UNINITIALIZED, gl2psCheckOptions(), and GL2PScontext::options.

◆ gl2psSetTexScaling()

GL2PSDLL_API GLint gl2psSetTexScaling ( GLfloat  scaling)

Definition at line 6636 of file gl2ps.cc.

6637{
6638
6639 if(!gl2ps) {
6640 return GL2PS_UNINITIALIZED;
6641 }
6642 gl2ps->tex_scaling = scaling;
6643
6644 return GL2PS_SUCCESS;
6645}

References gl2ps, GL2PS_SUCCESS, GL2PS_UNINITIALIZED, and GL2PScontext::tex_scaling.

◆ gl2psSorting()

GL2PSDLL_API GLint gl2psSorting ( GLint  mode)

Definition at line 6246 of file gl2ps.cc.

6247{
6248 GLint res;
6249
6250 if(!gl2ps) return GL2PS_UNINITIALIZED;
6251
6252 switch(mode){
6253 case GL2PS_NO_SORT :
6254 case GL2PS_SIMPLE_SORT :
6255 case GL2PS_BSP_SORT :
6256 gl2ps->sort = mode;
6257 res = GL2PS_SUCCESS;
6258 break;
6259 default :
6260 gl2psMsg(GL2PS_ERROR, "Unknown sorting algorithm: %d", mode);
6262 gl2ps = NULL;
6263 res = GL2PS_ERROR;
6264 }
6265
6266 return res;
6267}

References gl2ps, GL2PS_BSP_SORT, GL2PS_ERROR, GL2PS_NO_SORT, GL2PS_SIMPLE_SORT, GL2PS_SUCCESS, GL2PS_UNINITIALIZED, gl2psFree(), gl2psMsg(), and GL2PScontext::sort.

◆ gl2psSpecial()

GL2PSDLL_API GLint gl2psSpecial ( GLint  format,
const char *  str 
)

Definition at line 6302 of file gl2ps.cc.

6303{
6304 return gl2psAddText(GL2PS_SPECIAL, str, "", 0, format, 0.0F, NULL, GL_FALSE, 0, 0);
6305}
static GLint gl2psAddText(GLint type, const char *str, const char *fontname, GLshort fontsize, GLint alignment, GLfloat angle, GL2PSrgba color, GLboolean setblpos, GLfloat blx, GLfloat bly)
Definition: gl2ps.cc:893
#define GL2PS_SPECIAL
Definition: gl2ps.h:223

References GL2PS_SPECIAL, and gl2psAddText().

◆ gl2psSpecialColor()

GL2PSDLL_API GLint gl2psSpecialColor ( GLint  format,
const char *  str,
GL2PSrgba  rgba 
)

Definition at line 6307 of file gl2ps.cc.

6308{
6309 return gl2psAddText(GL2PS_SPECIAL, str, "", 0, format, 0.0F, rgba, GL_FALSE, 0, 0);
6310}

References GL2PS_SPECIAL, and gl2psAddText().

◆ gl2psText()

GL2PSDLL_API GLint gl2psText ( const char *  str,
const char *  fontname,
GLshort  fontsize 
)

Definition at line 6296 of file gl2ps.cc.

6297{
6298 return gl2psAddText(GL2PS_TEXT, str, fontname, fontsize, GL2PS_TEXT_BL, 0.0F,
6299 NULL, GL_FALSE, 0, 0);
6300}
#define GL2PS_TEXT
Definition: gl2ps.h:214
#define GL2PS_TEXT_BL
Definition: gl2ps.h:198

References GL2PS_TEXT, GL2PS_TEXT_BL, and gl2psAddText().

◆ gl2psTextOpt()

GL2PSDLL_API GLint gl2psTextOpt ( const char *  str,
const char *  fontname,
GLshort  fontsize,
GLint  align,
GLfloat  angle 
)

Definition at line 6290 of file gl2ps.cc.

6292{
6293 return gl2psAddText(GL2PS_TEXT, str, fontname, fontsize, alignment, angle, NULL, GL_FALSE, 0, 0);
6294}
static const G4double angle[DIMMOTT]

References angle, GL2PS_TEXT, and gl2psAddText().

◆ gl2psTextOptColor()

GL2PSDLL_API GLint gl2psTextOptColor ( const char *  str,
const char *  fontname,
GLshort  fontsize,
GLint  align,
GLfloat  angle,
GL2PSrgba  color 
)

Definition at line 6269 of file gl2ps.cc.

6272{
6273 return gl2psAddText(GL2PS_TEXT, str, fontname, fontsize, alignment, angle,
6274 color, GL_FALSE, 0, 0);
6275}

References angle, GL2PS_TEXT, and gl2psAddText().

◆ gl2psTextOptColorBL()

GL2PSDLL_API GLint gl2psTextOptColorBL ( const char *  str,
const char *  fontname,
GLshort  fontsize,
GLint  alignment,
GLfloat  angle,
GL2PSrgba  color,
GLfloat  blx,
GLfloat  bly 
)

This version of gl2psTextOptColor is used to go around the fact that PDF does not support text alignment. The extra parameters (blx, bly) represent the bottom left corner of the text bounding box.

Definition at line 6282 of file gl2ps.cc.

6285{
6286 return gl2psAddText(GL2PS_TEXT, str, fontname, fontsize, alignment, angle,
6287 color, GL_TRUE, blx, bly);
6288}

References angle, GL2PS_TEXT, and gl2psAddText().