diff --git a/Graphics/gl2jpeg.cpp b/Graphics/gl2jpeg.cpp new file mode 100644 index 0000000000000000000000000000000000000000..06b98873f565a1511b3f20445a62c2da51eab3c3 --- /dev/null +++ b/Graphics/gl2jpeg.cpp @@ -0,0 +1,59 @@ + +#include "Gmsh.h" +#include "GmshUI.h" +#include "Context.h" + +#include "jpeglib.h" +#include "jerror.h" + +extern Context_T CTX ; + +void my_output_message (j_common_ptr cinfo){ + char buffer[JMSG_LENGTH_MAX]; + + /* Create the message */ + (*cinfo->err->format_message) (cinfo, buffer); + + Msg(DEBUG, "%s", buffer); +} + +void create_jpeg(FILE *outfile, int width, int height){ + int i; + unsigned char *pixels; + struct jpeg_compress_struct cinfo; + struct jpeg_error_mgr jerr; + JSAMPROW row_pointer[1]; /* pointer to JSAMPLE row[s] */ + int row_stride; /* physical row width in image buffer */ + + cinfo.err = jpeg_std_error(&jerr); + cinfo.err->output_message = my_output_message; + + jpeg_create_compress(&cinfo); + jpeg_stdio_dest(&cinfo, outfile); + cinfo.image_width = width; /* image width and height, in pixels */ + cinfo.image_height = height; + cinfo.input_components = 3; /* # of color components per pixel */ + cinfo.in_color_space = JCS_RGB; /* colorspace of input image */ + jpeg_set_defaults(&cinfo); + jpeg_set_quality(&cinfo, CTX.print.jpeg_quality, TRUE /* limit to baseline-JPEG values */); + jpeg_start_compress(&cinfo, TRUE); + + pixels=(unsigned char *)Malloc(height*width*3); + glReadPixels(0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE,pixels); + + row_stride = width * 3; + i=cinfo.image_height-1; + while (i >= 0) { + /* jpeg_write_scanlines expects an array of pointers to scanlines. + * Here the array is only one element long, but you could pass + * more than one scanline at a time if that's more convenient. + */ + row_pointer[0] = &pixels[i * row_stride]; + (void) jpeg_write_scanlines(&cinfo, row_pointer, 1); + i--; + } + jpeg_finish_compress(&cinfo); + jpeg_destroy_compress(&cinfo); + + Free(pixels); +} diff --git a/Graphics/gl2jpeg.h b/Graphics/gl2jpeg.h new file mode 100644 index 0000000000000000000000000000000000000000..340ca518041c18e24e6daa82b084755ca0ce5378 --- /dev/null +++ b/Graphics/gl2jpeg.h @@ -0,0 +1,6 @@ +#ifndef _GL2JPEG_H_ +#define _GL2JPEG_H_ + +void create_jpeg(FILE *outfile, int width, int height); + +#endif diff --git a/Makefile b/Makefile index d1420a0e9106b5eac13b055b9ae4ce644822e3f2..2312bb61500147181356aea82ef53944958ea36c 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.26 2000-12-18 14:54:46 geuzaine Exp $ +# $Id: Makefile,v 1.27 2000-12-20 10:40:28 geuzaine Exp $ # ---------------------------------------------------------------------- # Makefile for Gmsh # ---------------------------------------------------------------------- @@ -25,8 +25,9 @@ MOTIF_LIB = -L/usr/local/lib -L/usr/X11R6/LessTif/Motif1.2/lib -lXm X_LIB = -L/usr/X11R6/lib -lXt -lX11 -lXext THREAD_LIB = -L/usr/lib -lpthread + JPEG_LIB = jpeg/libjpeg.a - GMSH_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Unix + GMSH_DIR = Adapt Common DataStr Geo Graphics Mesh Parser Unix jpeg GMSH_DISTRIB_DIR = $(GMSH_DIR) utils GMSH_BOX_DIR = Adapt Box Common DataStr Geo Mesh Parser GMSH_BIN_DIR = bin @@ -36,7 +37,7 @@ GMSH_DISTRIB_DIR = $(GMSH_DIR) utils GMSH_TUTOR_DIR = tutorial GMSH_ARCHIVE_DIR = archives GMSH_LIB = -L$(GMSH_LIB_DIR) -lUnix -lGraphics -lParser -lMesh -lGeo\ - -lAdapt -lCommon -lDataStr + -lAdapt -lCommon -lDataStr $(JPEG_LIB) GMSH_BOX_LIB = -L$(GMSH_LIB_DIR) -lBox -lParser -lMesh -lGeo\ -lAdapt -lCommon -lDataStr GMSH_ARCHIVE = $(GMSH_ARCHIVE_DIR)/gmsh-`date "+%Y.%m.%d"` diff --git a/jpeg/Makefile~ b/jpeg/Makefile~ deleted file mode 100644 index 551d58ea52bb29832a7a1813469dfd3379d770b7..0000000000000000000000000000000000000000 --- a/jpeg/Makefile~ +++ /dev/null @@ -1,240 +0,0 @@ -# Generated automatically from Makefile.auto by configure. -# Makefile for Independent JPEG Group's software - -# makefile.auto is edited by configure to produce a custom Makefile. - -# Read installation instructions before saying "make" !! - -# For compiling with source and object files in different directories. -srcdir = . -VPATH = . - -# Where to install the programs and man pages. -prefix = /usr/cluster -exec_prefix = $(prefix) -bindir = $(exec_prefix)/bin -libdir = $(exec_prefix)/lib -includedir = $(prefix)/include -mandir = $(prefix)/man/man1 -binprefix = -manprefix = -manext = 1 - -# The name of your C compiler: -CC= gcc - -# You may need to adjust these cc options: -CFLAGS= -O -I$(srcdir) -# Generally, we recommend defining any configuration symbols in jconfig.h, -# NOT via -D switches here. -# However, any special defines for ansi2knr.c may be included here: -ANSI2KNRFLAGS= - -# Link-time cc options: -LDFLAGS= - -# To link any special libraries, add the necessary -l commands here. -LDLIBS= - -# Put here the object file name for the correct system-dependent memory -# manager file. For Unix this is usually jmemnobs.o, but you may want -# to use jmemansi.o or jmemname.o if you have limited swap space. -SYSDEPMEM= jmemnobs.o - -# miscellaneous OS-dependent stuff -SHELL= /bin/sh -# linker -LN= $(CC) -# file deletion command -RM= rm -f -# file rename command -MV= mv -# library (.a) file creation command -AR= ar rc -# second step in .a creation (use "touch" if not needed) -AR2= ranlib -# installation program -INSTALL= /bin/install -c -INSTALL_PROGRAM= $(INSTALL) -INSTALL_DATA= $(INSTALL) -m 644 - -# End of configurable options. - - -# source files: JPEG library proper -LIBSOURCES= jcapi.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c jcmainct.c \ - jcmarker.c jcmaster.c jcomapi.c jcparam.c jcprepct.c jcsample.c \ - jdapi.c jdatasrc.c jdatadst.c jdcoefct.c jdcolor.c jddctmgr.c \ - jdhuff.c jdmainct.c jdmarker.c jdmaster.c jdpostct.c jdsample.c \ - jerror.c jutils.c jfdctfst.c jfdctflt.c jfdctint.c jidctfst.c \ - jidctflt.c jidctint.c jidctred.c jquant1.c jquant2.c jdmerge.c \ - jmemmgr.c jmemansi.c jmemname.c jmemnobs.c jmemdos.c -# source files: cjpeg/djpeg applications, also rdjpgcom/wrjpgcom -APPSOURCES= cjpeg.c djpeg.c rdcolmap.c rdppm.c wrppm.c rdgif.c wrgif.c \ - rdtarga.c wrtarga.c rdbmp.c wrbmp.c rdrle.c wrrle.c rdjpgcom.c \ - wrjpgcom.c -SOURCES= $(LIBSOURCES) $(APPSOURCES) -# files included by source files -INCLUDES= jdct.h jerror.h jinclude.h jmemsys.h jmorecfg.h jpegint.h \ - jpeglib.h jversion.h cdjpeg.h cderror.h -# documentation, test, and support files -DOCS= README install.doc usage.doc cjpeg.1 djpeg.1 rdjpgcom.1 wrjpgcom.1 \ - example.c libjpeg.doc structure.doc coderules.doc filelist.doc \ - change.log -MKFILES= configure makefile.auto makefile.ansi makefile.unix makefile.manx \ - makefile.sas makcjpeg.st makdjpeg.st makljpeg.st makefile.bcc \ - makefile.mc6 makefile.dj makefile.mms makefile.vms makvms.opt -CONFIGFILES= jconfig.auto jconfig.manx jconfig.sas jconfig.st jconfig.bcc \ - jconfig.mc6 jconfig.dj jconfig.vms -OTHERFILES= jconfig.doc ckconfig.c ansi2knr.c ansi2knr.1 jmemdosa.asm -TESTFILES= testorig.jpg testimg.ppm testimg.gif testimg.jpg -DISTFILES= $(DOCS) $(MKFILES) $(CONFIGFILES) $(SOURCES) $(INCLUDES) \ - $(OTHERFILES) $(TESTFILES) -# library object files common to compression and decompression -COMOBJECTS= jcomapi.o jutils.o jerror.o jmemmgr.o $(SYSDEPMEM) -# compression library object files -CLIBOBJECTS= jcapi.o jcparam.o jdatadst.o jcmaster.o jcmarker.o jcmainct.o \ - jcprepct.o jccoefct.o jccolor.o jcsample.o jchuff.o jcdctmgr.o \ - jfdctfst.o jfdctflt.o jfdctint.o -# decompression library object files -DLIBOBJECTS= jdapi.o jdatasrc.o jdmaster.o jdmarker.o jdmainct.o jdcoefct.o \ - jdpostct.o jddctmgr.o jidctfst.o jidctflt.o jidctint.o jidctred.o \ - jdhuff.o jdsample.o jdcolor.o jquant1.o jquant2.o jdmerge.o -# These objectfiles are included in libjpeg.a -LIBOBJECTS= $(CLIBOBJECTS) $(DLIBOBJECTS) $(COMOBJECTS) -# object files for cjpeg and djpeg applications (excluding library files) -COBJECTS= cjpeg.o rdppm.o rdgif.o rdtarga.o rdrle.o rdbmp.o -DOBJECTS= djpeg.o wrppm.o wrgif.o wrtarga.o wrrle.o wrbmp.o rdcolmap.o - - -#all: libjpeg.a cjpeg djpeg rdjpgcom wrjpgcom -all: libjpeg.a - -# This rule causes ansi2knr to be invoked. -# .c.o: -# ./ansi2knr $(srcdir)/$*.c T$*.c -# $(CC) $(CFLAGS) -c T$*.c -# $(RM) T$*.c $*.o -# $(MV) T$*.o $*.o - -ansi2knr: ansi2knr.c - $(CC) $(CFLAGS) $(ANSI2KNRFLAGS) -o ansi2knr ansi2knr.c - -libjpeg.a: $(LIBOBJECTS) - $(RM) libjpeg.a - $(AR) libjpeg.a $(LIBOBJECTS) - $(AR2) libjpeg.a - -cjpeg: $(COBJECTS) libjpeg.a - $(LN) $(LDFLAGS) -o cjpeg $(COBJECTS) libjpeg.a $(LDLIBS) - -djpeg: $(DOBJECTS) libjpeg.a - $(LN) $(LDFLAGS) -o djpeg $(DOBJECTS) libjpeg.a $(LDLIBS) - -rdjpgcom: rdjpgcom.o - $(LN) $(LDFLAGS) -o rdjpgcom rdjpgcom.o $(LDLIBS) - -wrjpgcom: wrjpgcom.o - $(LN) $(LDFLAGS) -o wrjpgcom wrjpgcom.o $(LDLIBS) - -jconfig.h: jconfig.doc - echo You must prepare a system-dependent jconfig.h file. - echo Please read the installation directions in install.doc. - exit 1 - -install: cjpeg djpeg rdjpgcom wrjpgcom - $(INSTALL_PROGRAM) cjpeg $(bindir)/$(binprefix)cjpeg - $(INSTALL_PROGRAM) djpeg $(bindir)/$(binprefix)djpeg - $(INSTALL_PROGRAM) rdjpgcom $(bindir)/$(binprefix)rdjpgcom - $(INSTALL_PROGRAM) wrjpgcom $(bindir)/$(binprefix)wrjpgcom - $(INSTALL_DATA) $(srcdir)/cjpeg.1 $(mandir)/$(manprefix)cjpeg.$(manext) - $(INSTALL_DATA) $(srcdir)/djpeg.1 $(mandir)/$(manprefix)djpeg.$(manext) - $(INSTALL_DATA) $(srcdir)/rdjpgcom.1 $(mandir)/$(manprefix)rdjpgcom.$(manext) - $(INSTALL_DATA) $(srcdir)/wrjpgcom.1 $(mandir)/$(manprefix)wrjpgcom.$(manext) - -install-lib: libjpeg.a jconfig.h - $(INSTALL_DATA) libjpeg.a $(libdir)/$(binprefix)libjpeg.a - $(INSTALL_DATA) jconfig.h $(includedir)/jconfig.h - $(INSTALL_DATA) $(srcdir)/jpeglib.h $(includedir)/jpeglib.h - $(INSTALL_DATA) $(srcdir)/jmorecfg.h $(includedir)/jmorecfg.h - $(INSTALL_DATA) $(srcdir)/jerror.h $(includedir)/jerror.h - -clean: - $(RM) *.o cjpeg djpeg libjpeg.a rdjpgcom wrjpgcom ansi2knr core testout.* - -distribute: - $(RM) jpegsrc.tar* - tar cvf jpegsrc.tar $(DISTFILES) - compress -v jpegsrc.tar - -test: cjpeg djpeg - $(RM) testout.ppm testout.gif testout.jpg - ./djpeg -dct int -ppm -outfile testout.ppm testorig.jpg - ./djpeg -dct int -gif -outfile testout.gif testorig.jpg - ./cjpeg -dct int -outfile testout.jpg testimg.ppm - cmp testimg.ppm testout.ppm - cmp testimg.gif testout.gif - cmp testimg.jpg testout.jpg - -check: test - -# GNU Make likes to know which target names are not really files to be made: -.PHONY: all install install-lib clean distribute test check - - -jcapi.o : jcapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jccoefct.o : jccoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jccolor.o : jccolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jcdctmgr.o : jcdctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h -jchuff.o : jchuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jcmainct.o : jcmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jcmarker.o : jcmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jcmaster.o : jcmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jcomapi.o : jcomapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jcparam.o : jcparam.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jcprepct.o : jcprepct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jcsample.o : jcsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jdapi.o : jdapi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jdatasrc.o : jdatasrc.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h -jdatadst.o : jdatadst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h -jdcoefct.o : jdcoefct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jdcolor.o : jdcolor.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jddctmgr.o : jddctmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h -jdhuff.o : jdhuff.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jdmainct.o : jdmainct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jdmarker.o : jdmarker.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jdmaster.o : jdmaster.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jdpostct.o : jdpostct.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jdsample.o : jdsample.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jerror.o : jerror.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jversion.h jerror.h -jutils.o : jutils.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jfdctfst.o : jfdctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h -jfdctflt.o : jfdctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h -jfdctint.o : jfdctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h -jidctfst.o : jidctfst.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h -jidctflt.o : jidctflt.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h -jidctint.o : jidctint.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h -jidctred.o : jidctred.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jdct.h -jquant1.o : jquant1.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jquant2.o : jquant2.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jdmerge.o : jdmerge.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h -jmemmgr.o : jmemmgr.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h -jmemansi.o : jmemansi.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h -jmemname.o : jmemname.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h -jmemnobs.o : jmemnobs.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h -jmemdos.o : jmemdos.c jinclude.h jconfig.h jpeglib.h jmorecfg.h jpegint.h jerror.h jmemsys.h -cjpeg.o : cjpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h -djpeg.o : djpeg.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h jversion.h -rdcolmap.o : rdcolmap.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h -rdppm.o : rdppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h -wrppm.o : wrppm.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h -rdgif.o : rdgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h -wrgif.o : wrgif.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h -rdtarga.o : rdtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h -wrtarga.o : wrtarga.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h -rdbmp.o : rdbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h -wrbmp.o : wrbmp.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h -rdrle.o : rdrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h -wrrle.o : wrrle.c cdjpeg.h jinclude.h jconfig.h jpeglib.h jmorecfg.h jerror.h cderror.h -rdjpgcom.o : rdjpgcom.c jinclude.h jconfig.h -wrjpgcom.o : wrjpgcom.c jinclude.h jconfig.h diff --git a/tutorial/t8.geo b/tutorial/t8.geo index d03b84fc07a7a351be4119e57f6fa46a75acf4d5..2cddb640a9521e9885f52e9bebb3cc41695e9c59 100644 --- a/tutorial/t8.geo +++ b/tutorial/t8.geo @@ -87,11 +87,12 @@ EndFor // Here is the list of available scripting commands: // -// Merge string; (to merge a file) -// Draw; (to draw the scene) -// Mesh int; (to perform the mesh generation; 'int' = 0, 1, 2 or 3) -// Save string; (to save the mesh) -// Print string; (to print the graphic window) -// Sleep expr; (to sleep during expr seconds) -// Delete View[int] (to free the view int) -// Delete Meshes (to free all meshes) +// Merge string; (to merge a file) +// Draw; (to draw the scene) +// Mesh int; (to perform the mesh generation; 'int' = 0, 1, 2 or 3) +// Save string; (to save the mesh) +// Print string; (to print the graphic window) +// Sleep expr; (to sleep during expr seconds) +// Delete View[int]; (to free the view int) +// Delete Meshes; (to free all meshes) +// System string; (to execute a system call)