ATLAS Offline Software
Loading...
Searching...
No Matches
gl2ps.h File Reference
#include <stdio.h>
#include <stdlib.h>
#include <GL/gl.h>
Include dependency graph for gl2ps.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define GL2PSDLL_API
#define GL2PS_MAJOR_VERSION   1
#define GL2PS_MINOR_VERSION   3
#define GL2PS_PATCH_VERSION   5
#define GL2PS_EXTRA_VERSION   ""
#define GL2PS_VERSION
#define GL2PS_COPYRIGHT   "(C) 1999-2009 C. Geuzaine"
#define GL2PS_PS   0
#define GL2PS_EPS   1
#define GL2PS_TEX   2
#define GL2PS_PDF   3
#define GL2PS_SVG   4
#define GL2PS_PGF   5
#define GL2PS_NO_SORT   1
#define GL2PS_SIMPLE_SORT   2
#define GL2PS_BSP_SORT   3
#define GL2PS_SUCCESS   0
#define GL2PS_INFO   1
#define GL2PS_WARNING   2
#define GL2PS_ERROR   3
#define GL2PS_NO_FEEDBACK   4
#define GL2PS_OVERFLOW   5
#define GL2PS_UNINITIALIZED   6
#define GL2PS_NONE   0
#define GL2PS_DRAW_BACKGROUND   (1<<0)
#define GL2PS_SIMPLE_LINE_OFFSET   (1<<1)
#define GL2PS_SILENT   (1<<2)
#define GL2PS_BEST_ROOT   (1<<3)
#define GL2PS_OCCLUSION_CULL   (1<<4)
#define GL2PS_NO_TEXT   (1<<5)
#define GL2PS_LANDSCAPE   (1<<6)
#define GL2PS_NO_PS3_SHADING   (1<<7)
#define GL2PS_NO_PIXMAP   (1<<8)
#define GL2PS_USE_CURRENT_VIEWPORT   (1<<9)
#define GL2PS_COMPRESS   (1<<10)
#define GL2PS_NO_BLENDING   (1<<11)
#define GL2PS_TIGHT_BOUNDING_BOX   (1<<12)
#define GL2PS_POLYGON_OFFSET_FILL   1
#define GL2PS_POLYGON_BOUNDARY   2
#define GL2PS_LINE_STIPPLE   3
#define GL2PS_BLEND   4
#define GL2PS_TEXT_C   1
#define GL2PS_TEXT_CL   2
#define GL2PS_TEXT_CR   3
#define GL2PS_TEXT_B   4
#define GL2PS_TEXT_BL   5
#define GL2PS_TEXT_BR   6
#define GL2PS_TEXT_T   7
#define GL2PS_TEXT_TL   8
#define GL2PS_TEXT_TR   9

Typedefs

typedef GLfloat GL2PSrgba[4]

Functions

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 gl2psEndPage (void)
GL2PSDLL_API GLint gl2psSetOptions (GLint options)
GL2PSDLL_API GLint gl2psGetOptions (GLint *options)
GL2PSDLL_API GLint gl2psBeginViewport (GLint viewport[4])
GL2PSDLL_API GLint gl2psEndViewport (void)
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 gl2psSpecial (GLint format, const char *str)
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 gl2psDisable (GLint mode)
GL2PSDLL_API GLint gl2psPointSize (GLfloat value)
GL2PSDLL_API GLint gl2psLineWidth (GLfloat value)
GL2PSDLL_API GLint gl2psBlendFunc (GLenum sfactor, GLenum dfactor)
GL2PSDLL_API GLint gl2psDrawImageMap (GLsizei width, GLsizei height, const GLfloat position[3], const unsigned char *imagemap)
GL2PSDLL_API const char * gl2psGetFileExtension (GLint format)
GL2PSDLL_API const char * gl2psGetFormatDescription (GLint format)

Macro Definition Documentation

◆ GL2PS_BEST_ROOT

#define GL2PS_BEST_ROOT   (1<<3)

Definition at line 123 of file gl2ps.h.

◆ GL2PS_BLEND

#define GL2PS_BLEND   4

Definition at line 139 of file gl2ps.h.

◆ GL2PS_BSP_SORT

#define GL2PS_BSP_SORT   3

Definition at line 105 of file gl2ps.h.

◆ GL2PS_COMPRESS

#define GL2PS_COMPRESS   (1<<10)

Definition at line 130 of file gl2ps.h.

◆ GL2PS_COPYRIGHT

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

Definition at line 90 of file gl2ps.h.

◆ GL2PS_DRAW_BACKGROUND

#define GL2PS_DRAW_BACKGROUND   (1<<0)

Definition at line 120 of file gl2ps.h.

◆ GL2PS_EPS

#define GL2PS_EPS   1

Definition at line 95 of file gl2ps.h.

◆ GL2PS_ERROR

#define GL2PS_ERROR   3

Definition at line 112 of file gl2ps.h.

◆ GL2PS_EXTRA_VERSION

#define GL2PS_EXTRA_VERSION   ""

Definition at line 84 of file gl2ps.h.

◆ GL2PS_INFO

#define GL2PS_INFO   1

Definition at line 110 of file gl2ps.h.

◆ GL2PS_LANDSCAPE

#define GL2PS_LANDSCAPE   (1<<6)

Definition at line 126 of file gl2ps.h.

◆ GL2PS_LINE_STIPPLE

#define GL2PS_LINE_STIPPLE   3

Definition at line 138 of file gl2ps.h.

◆ GL2PS_MAJOR_VERSION

#define GL2PS_MAJOR_VERSION   1

Definition at line 81 of file gl2ps.h.

◆ GL2PS_MINOR_VERSION

#define GL2PS_MINOR_VERSION   3

Definition at line 82 of file gl2ps.h.

◆ GL2PS_NO_BLENDING

#define GL2PS_NO_BLENDING   (1<<11)

Definition at line 131 of file gl2ps.h.

◆ GL2PS_NO_FEEDBACK

#define GL2PS_NO_FEEDBACK   4

Definition at line 113 of file gl2ps.h.

◆ GL2PS_NO_PIXMAP

#define GL2PS_NO_PIXMAP   (1<<8)

Definition at line 128 of file gl2ps.h.

◆ GL2PS_NO_PS3_SHADING

#define GL2PS_NO_PS3_SHADING   (1<<7)

Definition at line 127 of file gl2ps.h.

◆ GL2PS_NO_SORT

#define GL2PS_NO_SORT   1

Definition at line 103 of file gl2ps.h.

◆ GL2PS_NO_TEXT

#define GL2PS_NO_TEXT   (1<<5)

Definition at line 125 of file gl2ps.h.

◆ GL2PS_NONE

#define GL2PS_NONE   0

Definition at line 119 of file gl2ps.h.

◆ GL2PS_OCCLUSION_CULL

#define GL2PS_OCCLUSION_CULL   (1<<4)

Definition at line 124 of file gl2ps.h.

◆ GL2PS_OVERFLOW

#define GL2PS_OVERFLOW   5

Definition at line 114 of file gl2ps.h.

◆ GL2PS_PATCH_VERSION

#define GL2PS_PATCH_VERSION   5

Definition at line 83 of file gl2ps.h.

◆ GL2PS_PDF

#define GL2PS_PDF   3

Definition at line 97 of file gl2ps.h.

◆ GL2PS_PGF

#define GL2PS_PGF   5

Definition at line 99 of file gl2ps.h.

◆ GL2PS_POLYGON_BOUNDARY

#define GL2PS_POLYGON_BOUNDARY   2

Definition at line 137 of file gl2ps.h.

◆ GL2PS_POLYGON_OFFSET_FILL

#define GL2PS_POLYGON_OFFSET_FILL   1

Definition at line 136 of file gl2ps.h.

◆ GL2PS_PS

#define GL2PS_PS   0

Definition at line 94 of file gl2ps.h.

◆ GL2PS_SILENT

#define GL2PS_SILENT   (1<<2)

Definition at line 122 of file gl2ps.h.

◆ GL2PS_SIMPLE_LINE_OFFSET

#define GL2PS_SIMPLE_LINE_OFFSET   (1<<1)

Definition at line 121 of file gl2ps.h.

◆ GL2PS_SIMPLE_SORT

#define GL2PS_SIMPLE_SORT   2

Definition at line 104 of file gl2ps.h.

◆ GL2PS_SUCCESS

#define GL2PS_SUCCESS   0

Definition at line 109 of file gl2ps.h.

◆ GL2PS_SVG

#define GL2PS_SVG   4

Definition at line 98 of file gl2ps.h.

◆ GL2PS_TEX

#define GL2PS_TEX   2

Definition at line 96 of file gl2ps.h.

◆ GL2PS_TEXT_B

#define GL2PS_TEXT_B   4

Definition at line 150 of file gl2ps.h.

◆ GL2PS_TEXT_BL

#define GL2PS_TEXT_BL   5

Definition at line 151 of file gl2ps.h.

◆ GL2PS_TEXT_BR

#define GL2PS_TEXT_BR   6

Definition at line 152 of file gl2ps.h.

◆ GL2PS_TEXT_C

#define GL2PS_TEXT_C   1

Definition at line 147 of file gl2ps.h.

◆ GL2PS_TEXT_CL

#define GL2PS_TEXT_CL   2

Definition at line 148 of file gl2ps.h.

◆ GL2PS_TEXT_CR

#define GL2PS_TEXT_CR   3

Definition at line 149 of file gl2ps.h.

◆ GL2PS_TEXT_T

#define GL2PS_TEXT_T   7

Definition at line 153 of file gl2ps.h.

◆ GL2PS_TEXT_TL

#define GL2PS_TEXT_TL   8

Definition at line 154 of file gl2ps.h.

◆ GL2PS_TEXT_TR

#define GL2PS_TEXT_TR   9

Definition at line 155 of file gl2ps.h.

◆ GL2PS_TIGHT_BOUNDING_BOX

#define GL2PS_TIGHT_BOUNDING_BOX   (1<<12)

Definition at line 132 of file gl2ps.h.

◆ GL2PS_UNINITIALIZED

#define GL2PS_UNINITIALIZED   6

Definition at line 115 of file gl2ps.h.

◆ GL2PS_USE_CURRENT_VIEWPORT

#define GL2PS_USE_CURRENT_VIEWPORT   (1<<9)

Definition at line 129 of file gl2ps.h.

◆ GL2PS_VERSION

#define GL2PS_VERSION
Value:
#define GL2PS_PATCH_VERSION
Definition gl2ps.h:83
#define GL2PS_MAJOR_VERSION
Definition gl2ps.h:81
#define GL2PS_MINOR_VERSION
Definition gl2ps.h:82

Definition at line 86 of file gl2ps.h.

86#define GL2PS_VERSION (GL2PS_MAJOR_VERSION + \
87 0.01 * GL2PS_MINOR_VERSION + \
88 0.0001 * GL2PS_PATCH_VERSION)

◆ GL2PS_WARNING

#define GL2PS_WARNING   2

Definition at line 111 of file gl2ps.h.

◆ GL2PSDLL_API

#define GL2PSDLL_API

Definition at line 60 of file gl2ps.h.

Typedef Documentation

◆ GL2PSrgba

typedef GLfloat GL2PSrgba[4]

Definition at line 157 of file gl2ps.h.

Function Documentation

◆ 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 5584 of file gl2ps.cxx.

5590{
5591 GLint index;
5592 int i;
5593
5594 if(gl2ps){
5595 gl2psMsg(GL2PS_ERROR, "gl2psBeginPage called in wrong program state");
5596 return GL2PS_ERROR;
5597 }
5598
5600
5601 if(format >= 0 && format < (GLint)(sizeof(gl2psbackends) / sizeof(gl2psbackends[0]))){
5602 gl2ps->format = format;
5603 }
5604 else {
5605 gl2psMsg(GL2PS_ERROR, "Unknown output format: %d", format);
5607 gl2ps = NULL;
5608 return GL2PS_ERROR;
5609 }
5610
5611 switch(sort){
5612 case GL2PS_NO_SORT :
5613 case GL2PS_SIMPLE_SORT :
5614 case GL2PS_BSP_SORT :
5615 gl2ps->sort = sort;
5616 break;
5617 default :
5618 gl2psMsg(GL2PS_ERROR, "Unknown sorting algorithm: %d", sort);
5620 gl2ps = NULL;
5621 return GL2PS_ERROR;
5622 }
5623
5624 if(stream){
5625 gl2ps->stream = stream;
5626 }
5627 else{
5628 gl2psMsg(GL2PS_ERROR, "Bad file pointer");
5630 gl2ps = NULL;
5631 return GL2PS_ERROR;
5632 }
5633
5634 gl2ps->header = GL_TRUE;
5635 gl2ps->maxbestroot = 10;
5636 gl2ps->options = options;
5637 gl2ps->compress = NULL;
5638 gl2ps->imagemap_head = NULL;
5639 gl2ps->imagemap_tail = NULL;
5640
5641 if(gl2ps->options & GL2PS_USE_CURRENT_VIEWPORT){
5642 glGetIntegerv(GL_VIEWPORT, gl2ps->viewport);
5643 }
5644 else{
5645 for(i = 0; i < 4; i++){
5646 gl2ps->viewport[i] = viewport[i];
5647 }
5648 }
5649
5650 if(!gl2ps->viewport[2] || !gl2ps->viewport[3]){
5651 gl2psMsg(GL2PS_ERROR, "Incorrect viewport (x=%d, y=%d, width=%d, height=%d)",
5652 gl2ps->viewport[0], gl2ps->viewport[1],
5653 gl2ps->viewport[2], gl2ps->viewport[3]);
5655 gl2ps = NULL;
5656 return GL2PS_ERROR;
5657 }
5658
5659 gl2ps->threshold[0] = nr ? 1.0F / (GLfloat)nr : 0.064F;
5660 gl2ps->threshold[1] = ng ? 1.0F / (GLfloat)ng : 0.034F;
5661 gl2ps->threshold[2] = nb ? 1.0F / (GLfloat)nb : 0.100F;
5662 gl2ps->colormode = colormode;
5663 gl2ps->buffersize = buffersize > 0 ? buffersize : 2048 * 2048;
5664 for(i = 0; i < 3; i++){
5665 gl2ps->lastvertex.xyz[i] = -1.0F;
5666 }
5667 for(i = 0; i < 4; i++){
5668 gl2ps->lastvertex.rgba[i] = -1.0F;
5669 gl2ps->lastrgba[i] = -1.0F;
5670 }
5671 gl2ps->lastlinewidth = -1.0F;
5672 gl2ps->lastpattern = 0;
5673 gl2ps->lastfactor = 0;
5674 gl2ps->imagetree = NULL;
5675 gl2ps->primitivetoadd = NULL;
5676 gl2ps->zerosurfacearea = GL_FALSE;
5677 gl2ps->pdfprimlist = NULL;
5678 gl2ps->pdfgrouplist = NULL;
5679 gl2ps->xreflist = NULL;
5680
5681 /* get default blending mode from current OpenGL state (enabled by
5682 default for SVG) */
5683 gl2ps->blending = (gl2ps->format == GL2PS_SVG) ? GL_TRUE : glIsEnabled(GL_BLEND);
5684 glGetIntegerv(GL_BLEND_SRC, &gl2ps->blendfunc[0]);
5685 glGetIntegerv(GL_BLEND_DST, &gl2ps->blendfunc[1]);
5686
5687 if(gl2ps->colormode == GL_RGBA){
5688 gl2ps->colorsize = 0;
5689 gl2ps->colormap = NULL;
5690 glGetFloatv(GL_COLOR_CLEAR_VALUE, gl2ps->bgcolor);
5691 }
5692 else if(gl2ps->colormode == GL_COLOR_INDEX){
5693 if(!colorsize || !colormap){
5694 gl2psMsg(GL2PS_ERROR, "Missing colormap for GL_COLOR_INDEX rendering");
5696 gl2ps = NULL;
5697 return GL2PS_ERROR;
5698 }
5699 gl2ps->colorsize = colorsize;
5700 gl2ps->colormap = (GL2PSrgba*)gl2psMalloc(gl2ps->colorsize * sizeof(GL2PSrgba));
5701 memcpy(gl2ps->colormap, colormap, gl2ps->colorsize * sizeof(GL2PSrgba));
5702 glGetIntegerv(GL_INDEX_CLEAR_VALUE, &index);
5703 gl2ps->bgcolor[0] = gl2ps->colormap[index][0];
5704 gl2ps->bgcolor[1] = gl2ps->colormap[index][1];
5705 gl2ps->bgcolor[2] = gl2ps->colormap[index][2];
5706 gl2ps->bgcolor[3] = 1.0F;
5707 }
5708 else{
5709 gl2psMsg(GL2PS_ERROR, "Unknown color mode in gl2psBeginPage");
5711 gl2ps = NULL;
5712 return GL2PS_ERROR;
5713 }
5714
5715 if(!title){
5716 gl2ps->title = (char*)gl2psMalloc(sizeof(char));
5717 gl2ps->title[0] = '\0';
5718 }
5719 else{
5720 gl2ps->title = (char*)gl2psMalloc((strlen(title)+1)*sizeof(char));
5721 strcpy(gl2ps->title, title);
5722 }
5723
5724 if(!producer){
5725 gl2ps->producer = (char*)gl2psMalloc(sizeof(char));
5726 gl2ps->producer[0] = '\0';
5727 }
5728 else{
5729 gl2ps->producer = (char*)gl2psMalloc((strlen(producer)+1)*sizeof(char));
5730 strcpy(gl2ps->producer, producer);
5731 }
5732
5733 if(!filename){
5734 gl2ps->filename = (char*)gl2psMalloc(sizeof(char));
5735 gl2ps->filename[0] = '\0';
5736 }
5737 else{
5738 gl2ps->filename = (char*)gl2psMalloc((strlen(filename)+1)*sizeof(char));
5739 strcpy(gl2ps->filename, filename);
5740 }
5741
5742 gl2ps->primitives = gl2psListCreate(500, 500, sizeof(GL2PSprimitive*));
5743 gl2ps->auxprimitives = gl2psListCreate(100, 100, sizeof(GL2PSprimitive*));
5744 gl2ps->feedback = (GLfloat*)gl2psMalloc(gl2ps->buffersize * sizeof(GLfloat));
5745 glFeedbackBuffer(gl2ps->buffersize, GL_3D_COLOR, gl2ps->feedback);
5746 glRenderMode(GL_FEEDBACK);
5747
5748 return GL2PS_SUCCESS;
5749}
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
static GL2PSbackend * gl2psbackends[]
Definition gl2ps.cxx:5476
static GL2PScontext * gl2ps
Definition gl2ps.cxx:266
static void * gl2psMalloc(size_t size)
Definition gl2ps.cxx:296
static void gl2psFree(void *ptr)
Definition gl2ps.cxx:320
static void gl2psMsg(GLint level, const char *fmt,...)
Definition gl2ps.cxx:278
static GL2PSlist * gl2psListCreate(GLint n, GLint incr, GLint size)
Definition gl2ps.cxx:527
#define GL2PS_SVG
Definition gl2ps.h:98
#define GL2PS_SIMPLE_SORT
Definition gl2ps.h:104
#define GL2PS_ERROR
Definition gl2ps.h:112
#define GL2PS_BSP_SORT
Definition gl2ps.h:105
GLfloat GL2PSrgba[4]
Definition gl2ps.h:157
#define GL2PS_SUCCESS
Definition gl2ps.h:109
#define GL2PS_NO_SORT
Definition gl2ps.h:103
#define GL2PS_USE_CURRENT_VIEWPORT
Definition gl2ps.h:129
Definition index.py:1

◆ gl2psBeginViewport()

GL2PSDLL_API GLint gl2psBeginViewport ( GLint viewport[4])

Definition at line 5778 of file gl2ps.cxx.

5779{
5780 if(!gl2ps) return GL2PS_UNINITIALIZED;
5781
5782 (gl2psbackends[gl2ps->format]->beginViewport)(viewport);
5783
5784 return GL2PS_SUCCESS;
5785}
#define GL2PS_UNINITIALIZED
Definition gl2ps.h:115

◆ gl2psBlendFunc()

GL2PSDLL_API GLint gl2psBlendFunc ( GLenum sfactor,
GLenum dfactor )

Definition at line 6002 of file gl2ps.cxx.

6003{
6004 if(!gl2ps) return GL2PS_UNINITIALIZED;
6005
6006 if(GL_FALSE == gl2psSupportedBlendMode(sfactor, dfactor))
6007 return GL2PS_WARNING;
6008
6009 glPassThrough(GL2PS_SRC_BLEND_TOKEN);
6010 glPassThrough((GLfloat)sfactor);
6011 glPassThrough(GL2PS_DST_BLEND_TOKEN);
6012 glPassThrough((GLfloat)dfactor);
6013
6014 return GL2PS_SUCCESS;
6015}
#define GL2PS_DST_BLEND_TOKEN
Definition gl2ps.cxx:112
#define GL2PS_SRC_BLEND_TOKEN
Definition gl2ps.cxx:111
static GLboolean gl2psSupportedBlendMode(GLenum sfactor, GLenum dfactor)
Definition gl2ps.cxx:913
#define GL2PS_WARNING
Definition gl2ps.h:111

◆ gl2psDisable()

GL2PSDLL_API GLint gl2psDisable ( GLint mode)

Definition at line 5957 of file gl2ps.cxx.

5958{
5959 if(!gl2ps) return GL2PS_UNINITIALIZED;
5960
5961 switch(mode){
5963 glPassThrough(GL2PS_END_OFFSET_TOKEN);
5964 break;
5966 glPassThrough(GL2PS_END_BOUNDARY_TOKEN);
5967 break;
5968 case GL2PS_LINE_STIPPLE :
5969 glPassThrough(GL2PS_END_STIPPLE_TOKEN);
5970 break;
5971 case GL2PS_BLEND :
5972 glPassThrough(GL2PS_END_BLEND_TOKEN);
5973 break;
5974 default :
5975 gl2psMsg(GL2PS_WARNING, "Unknown mode in gl2psDisable: %d", mode);
5976 return GL2PS_WARNING;
5977 }
5978
5979 return GL2PS_SUCCESS;
5980}
#define GL2PS_END_STIPPLE_TOKEN
Definition gl2ps.cxx:106
#define GL2PS_END_BLEND_TOKEN
Definition gl2ps.cxx:110
#define GL2PS_END_OFFSET_TOKEN
Definition gl2ps.cxx:102
#define GL2PS_END_BOUNDARY_TOKEN
Definition gl2ps.cxx:104
#define GL2PS_LINE_STIPPLE
Definition gl2ps.h:138
#define GL2PS_POLYGON_BOUNDARY
Definition gl2ps.h:137
#define GL2PS_POLYGON_OFFSET_FILL
Definition gl2ps.h:136
#define GL2PS_BLEND
Definition gl2ps.h:139

◆ gl2psDrawImageMap()

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

Definition at line 5898 of file gl2ps.cxx.

5900 {
5901 int size, i;
5902 int sizeoffloat = sizeof(GLfloat);
5903
5904 if(!gl2ps || !imagemap) return GL2PS_UNINITIALIZED;
5905
5906 if((width <= 0) || (height <= 0)) return GL2PS_ERROR;
5907
5908 size = height + height * ((width - 1) / 8);
5909 glPassThrough(GL2PS_IMAGEMAP_TOKEN);
5910 glBegin(GL_POINTS);
5911 glVertex3f(position[0], position[1],position[2]);
5912 glEnd();
5913 glPassThrough((GLfloat)width);
5914 glPassThrough((GLfloat)height);
5915 for(i = 0; i < size; i += sizeoffloat){
5916 // cppcheck-suppress invalidPointerCast
5917 const float *value = reinterpret_cast<const float*>(imagemap);
5918 glPassThrough(*value);
5919 imagemap += sizeoffloat;
5920 }
5921 return GL2PS_SUCCESS;
5922}
const double width
#define GL2PS_IMAGEMAP_TOKEN
Definition gl2ps.cxx:113

◆ gl2psDrawPixels()

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

Definition at line 5817 of file gl2ps.cxx.

5821{
5822 int size, i;
5823 GLfloat pos[4], *piv;
5824 GL2PSprimitive *prim;
5825 GLboolean valid;
5826
5827 if(!gl2ps || !pixels) return GL2PS_UNINITIALIZED;
5828
5829 if((width <= 0) || (height <= 0)) return GL2PS_ERROR;
5830
5831 if(gl2ps->options & GL2PS_NO_PIXMAP) return GL2PS_SUCCESS;
5832
5833 if((format != GL_RGB && format != GL_RGBA) || type != GL_FLOAT){
5834 gl2psMsg(GL2PS_ERROR, "gl2psDrawPixels only implemented for "
5835 "GL_RGB/GL_RGBA, GL_FLOAT pixels");
5836 return GL2PS_ERROR;
5837 }
5838
5839 glGetBooleanv(GL_CURRENT_RASTER_POSITION_VALID, &valid);
5840 if(GL_FALSE == valid) return GL2PS_SUCCESS; /* the primitive is culled */
5841
5842 glGetFloatv(GL_CURRENT_RASTER_POSITION, pos);
5843
5844 prim = (GL2PSprimitive*)gl2psMalloc(sizeof(GL2PSprimitive));
5845 prim->type = GL2PS_PIXMAP;
5846 prim->boundary = 0;
5847 prim->numverts = 1;
5848 prim->verts = (GL2PSvertex*)gl2psMalloc(sizeof(GL2PSvertex));
5849 prim->verts[0].xyz[0] = pos[0] + xorig;
5850 prim->verts[0].xyz[1] = pos[1] + yorig;
5851 prim->verts[0].xyz[2] = pos[2];
5852 prim->culled = 0;
5853 prim->offset = 0;
5854 prim->pattern = 0;
5855 prim->factor = 0;
5856 prim->width = 1;
5857 glGetFloatv(GL_CURRENT_RASTER_COLOR, prim->verts[0].rgba);
5858 prim->data.image = (GL2PSimage*)gl2psMalloc(sizeof(GL2PSimage));
5859 prim->data.image->width = width;
5860 prim->data.image->height = height;
5861 prim->data.image->format = format;
5862 prim->data.image->type = type;
5863
5864 switch(format){
5865 case GL_RGBA:
5866 if(gl2ps->options & GL2PS_NO_BLENDING || !gl2ps->blending){
5867 /* special case: blending turned off */
5868 prim->data.image->format = GL_RGB;
5869 size = height * width * 3;
5870 prim->data.image->pixels = (GLfloat*)gl2psMalloc(size * sizeof(GLfloat));
5871 piv = (GLfloat*)pixels;
5872 for(i = 0; i < size; ++i, ++piv){
5873 prim->data.image->pixels[i] = *piv;
5874 if(!((i+1)%3))
5875 ++piv;
5876 }
5877 }
5878 else{
5879 size = height * width * 4;
5880 prim->data.image->pixels = (GLfloat*)gl2psMalloc(size * sizeof(GLfloat));
5881 memcpy(prim->data.image->pixels, pixels, size * sizeof(GLfloat));
5882 }
5883 break;
5884 case GL_RGB:
5885 default:
5886 size = height * width * 3;
5887 prim->data.image->pixels = (GLfloat*)gl2psMalloc(size * sizeof(GLfloat));
5888 memcpy(prim->data.image->pixels, pixels, size * sizeof(GLfloat));
5889 break;
5890 }
5891
5892 gl2psListAdd(gl2ps->auxprimitives, &prim);
5893 glPassThrough(GL2PS_DRAW_PIXELS_TOKEN);
5894
5895 return GL2PS_SUCCESS;
5896}
#define GL2PS_PIXMAP
Definition gl2ps.cxx:80
static void gl2psListAdd(GL2PSlist *list, void *data)
Definition gl2ps.cxx:556
#define GL2PS_DRAW_PIXELS_TOKEN
Definition gl2ps.cxx:114
#define GL2PS_NO_BLENDING
Definition gl2ps.h:131
#define GL2PS_NO_PIXMAP
Definition gl2ps.h:128
list valid
Definition calibdata.py:44
GLfloat * pixels
Definition gl2ps.cxx:174
GLenum type
Definition gl2ps.cxx:173
GLsizei width
Definition gl2ps.cxx:169
GLenum format
Definition gl2ps.cxx:173
GLsizei height
Definition gl2ps.cxx:169
GLshort numverts
Definition gl2ps.cxx:185
union GL2PSprimitive::@040324153072217261054023207035000330116237114065 data
GLushort pattern
Definition gl2ps.cxx:186
GLshort type
Definition gl2ps.cxx:185
GL2PSvertex * verts
Definition gl2ps.cxx:190
GL2PSimage * image
Definition gl2ps.cxx:193
GLfloat width
Definition gl2ps.cxx:189
GL2PSxyz xyz
Definition gl2ps.cxx:150
GL2PSrgba rgba
Definition gl2ps.cxx:151

◆ gl2psEnable()

GL2PSDLL_API GLint gl2psEnable ( GLint mode)

Definition at line 5924 of file gl2ps.cxx.

5925{
5926 GLint tmp;
5927
5928 if(!gl2ps) return GL2PS_UNINITIALIZED;
5929
5930 switch(mode){
5932 glPassThrough(GL2PS_BEGIN_OFFSET_TOKEN);
5933 glGetFloatv(GL_POLYGON_OFFSET_FACTOR, &gl2ps->offset[0]);
5934 glGetFloatv(GL_POLYGON_OFFSET_UNITS, &gl2ps->offset[1]);
5935 break;
5937 glPassThrough(GL2PS_BEGIN_BOUNDARY_TOKEN);
5938 break;
5939 case GL2PS_LINE_STIPPLE :
5940 glPassThrough(GL2PS_BEGIN_STIPPLE_TOKEN);
5941 glGetIntegerv(GL_LINE_STIPPLE_PATTERN, &tmp);
5942 glPassThrough((GLfloat)tmp);
5943 glGetIntegerv(GL_LINE_STIPPLE_REPEAT, &tmp);
5944 glPassThrough((GLfloat)tmp);
5945 break;
5946 case GL2PS_BLEND :
5947 glPassThrough(GL2PS_BEGIN_BLEND_TOKEN);
5948 break;
5949 default :
5950 gl2psMsg(GL2PS_WARNING, "Unknown mode in gl2psEnable: %d", mode);
5951 return GL2PS_WARNING;
5952 }
5953
5954 return GL2PS_SUCCESS;
5955}
#define GL2PS_BEGIN_OFFSET_TOKEN
Definition gl2ps.cxx:101
#define GL2PS_BEGIN_STIPPLE_TOKEN
Definition gl2ps.cxx:105
#define GL2PS_BEGIN_BLEND_TOKEN
Definition gl2ps.cxx:109
#define GL2PS_BEGIN_BOUNDARY_TOKEN
Definition gl2ps.cxx:103

◆ gl2psEndPage()

GL2PSDLL_API GLint gl2psEndPage ( void )

Definition at line 5751 of file gl2ps.cxx.

5752{
5753 GLint res;
5754
5755 if(!gl2ps) return GL2PS_UNINITIALIZED;
5756
5758
5759 if(res != GL2PS_OVERFLOW)
5760 (gl2psbackends[gl2ps->format]->printFooter)();
5761
5762 fflush(gl2ps->stream);
5763
5764 gl2psListDelete(gl2ps->primitives);
5765 gl2psListDelete(gl2ps->auxprimitives);
5766 gl2psFreeImagemap(gl2ps->imagemap_head);
5767 gl2psFree(gl2ps->colormap);
5768 gl2psFree(gl2ps->title);
5769 gl2psFree(gl2ps->producer);
5770 gl2psFree(gl2ps->filename);
5771 gl2psFree(gl2ps->feedback);
5773 gl2ps = NULL;
5774
5775 return res;
5776}
std::pair< std::vector< unsigned int >, bool > res
static GLint gl2psPrintPrimitives(void)
Definition gl2ps.cxx:5504
static void gl2psListDelete(GL2PSlist *list)
Definition gl2ps.cxx:549
static void gl2psFreeImagemap(GL2PSimagemap *list)
Definition gl2ps.cxx:1452
#define GL2PS_OVERFLOW
Definition gl2ps.h:114

◆ gl2psEndViewport()

GL2PSDLL_API GLint gl2psEndViewport ( void )

Definition at line 5787 of file gl2ps.cxx.

5788{
5789 GLint res;
5790
5791 if(!gl2ps) return GL2PS_UNINITIALIZED;
5792
5793 res = (gl2psbackends[gl2ps->format]->endViewport)();
5794
5795 /* reset last used colors, line widths */
5796 gl2ps->lastlinewidth = -1.0F;
5797
5798 return res;
5799}

◆ gl2psGetFileExtension()

GL2PSDLL_API const char * gl2psGetFileExtension ( GLint format)

Definition at line 6038 of file gl2ps.cxx.

6039{
6040 if(format >= 0 && format < (GLint)(sizeof(gl2psbackends) / sizeof(gl2psbackends[0])))
6041 return gl2psbackends[format]->file_extension;
6042 else
6043 return "Unknown format";
6044}

◆ gl2psGetFormatDescription()

GL2PSDLL_API const char * gl2psGetFormatDescription ( GLint format)

Definition at line 6046 of file gl2ps.cxx.

6047{
6048 if(format >= 0 && format < (GLint)(sizeof(gl2psbackends) / sizeof(gl2psbackends[0])))
6049 return gl2psbackends[format]->description;
6050 else
6051 return "Unknown format";
6052}

◆ gl2psGetOptions()

GL2PSDLL_API GLint gl2psGetOptions ( GLint * options)

Definition at line 6026 of file gl2ps.cxx.

6027{
6028 if(!gl2ps) {
6029 *options = 0;
6030 return GL2PS_UNINITIALIZED;
6031 }
6032
6033 *options = gl2ps->options;
6034
6035 return GL2PS_SUCCESS;
6036}

◆ gl2psLineWidth()

GL2PSDLL_API GLint gl2psLineWidth ( GLfloat value)

Definition at line 5992 of file gl2ps.cxx.

5993{
5994 if(!gl2ps) return GL2PS_UNINITIALIZED;
5995
5996 glPassThrough(GL2PS_LINE_WIDTH_TOKEN);
5997 glPassThrough(value);
5998
5999 return GL2PS_SUCCESS;
6000}
#define GL2PS_LINE_WIDTH_TOKEN
Definition gl2ps.cxx:108

◆ gl2psPointSize()

GL2PSDLL_API GLint gl2psPointSize ( GLfloat value)

Definition at line 5982 of file gl2ps.cxx.

5983{
5984 if(!gl2ps) return GL2PS_UNINITIALIZED;
5985
5986 glPassThrough(GL2PS_POINT_SIZE_TOKEN);
5987 glPassThrough(value);
5988
5989 return GL2PS_SUCCESS;
5990}
#define GL2PS_POINT_SIZE_TOKEN
Definition gl2ps.cxx:107

◆ gl2psSetOptions()

GL2PSDLL_API GLint gl2psSetOptions ( GLint options)

Definition at line 6017 of file gl2ps.cxx.

6018{
6019 if(!gl2ps) return GL2PS_UNINITIALIZED;
6020
6021 gl2ps->options = options;
6022
6023 return GL2PS_SUCCESS;
6024}

◆ gl2psSpecial()

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

Definition at line 5812 of file gl2ps.cxx.

5813{
5814 return gl2psAddText(GL2PS_SPECIAL, str, "", 0, format, 0.0F);
5815}
#define GL2PS_SPECIAL
Definition gl2ps.cxx:84
static GLint gl2psAddText(GLint type, const char *str, const char *fontname, GLshort fontsize, GLint alignment, GLfloat angle)
Definition gl2ps.cxx:843

◆ gl2psText()

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

Definition at line 5807 of file gl2ps.cxx.

5808{
5809 return gl2psAddText(GL2PS_TEXT, str, fontname, fontsize, GL2PS_TEXT_BL, 0.0F);
5810}
#define GL2PS_TEXT
Definition gl2ps.cxx:75
#define GL2PS_TEXT_BL
Definition gl2ps.h:151

◆ gl2psTextOpt()

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

Definition at line 5801 of file gl2ps.cxx.

5803{
5804 return gl2psAddText(GL2PS_TEXT, str, fontname, fontsize, alignment, angle);
5805}
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)