diff --git a/Graphics/Makefile b/Graphics/Makefile
index db83f8f7a05eb5d45030769279e9a712f71617fb..6e67694134735b18e9d31216ecfe273e8e49a568 100644
--- a/Graphics/Makefile
+++ b/Graphics/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.8 2000-12-21 08:02:05 geuzaine Exp $
+# $Id: Makefile,v 1.9 2000-12-26 17:40:18 geuzaine Exp $
 #
 # Makefile for "libGraphics.a"
 #
@@ -37,7 +37,8 @@ SRC = Draw.cpp \
       gl2ps.cpp\
       gl2gif.cpp\
       gl2jpeg.cpp\
-      gl2ppm.cpp
+      gl2ppm.cpp\
+      gl2yuv.cpp
 
 
 OBJ = $(SRC:.cpp=.o)
@@ -66,64 +67,73 @@ depend:
 	$(RM) $(RMFLAGS) Makefile.new
 
 # DO NOT DELETE THIS LINE
-Draw.o: Draw.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \
- ../Common/Const.h ../Common/ColorTable.h ../Common/Context.h \
- ../Geo/MinMax.h ../Unix/CbGeneral.h ../Unix/Widgets.h \
- ../Unix/XContext.h
-Mesh.o: Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \
- ../Common/Const.h ../Common/ColorTable.h ../Common/Context.h \
- ../Geo/MinMax.h gl2ps.h ../Geo/Verif.h ../Mesh/Numeric.h
-Geom.o: Geom.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \
- ../Common/Const.h ../Common/ColorTable.h ../Common/Context.h \
- ../Geo/Verif.h ../Mesh/Interpolation.h ../Mesh/Numeric.h
-Post.o: Post.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \
- ../Common/Const.h ../Common/ColorTable.h ../Common/Context.h
+Draw.o: Draw.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshUI.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
+  ../Mesh/Metric.h Draw.h ../Common/Views.h ../Common/Const.h \
+  ../Common/ColorTable.h ../Common/Context.h ../Geo/MinMax.h \
+  ../Unix/CbGeneral.h ../Unix/Widgets.h ../Unix/XContext.h
+Mesh.o: Mesh.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshUI.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
+  ../Mesh/Metric.h Draw.h ../Common/Views.h ../Common/Const.h \
+  ../Common/ColorTable.h ../Common/Context.h ../Geo/MinMax.h gl2ps.h \
+  ../Geo/Verif.h ../Mesh/Numeric.h
+Geom.o: Geom.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshUI.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
+  ../Mesh/Metric.h Draw.h ../Common/Views.h ../Common/Const.h \
+  ../Common/ColorTable.h ../Common/Context.h ../Geo/Verif.h \
+  ../Mesh/Interpolation.h ../Mesh/Numeric.h
+Post.o: Post.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshUI.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
+  ../Mesh/Metric.h Draw.h ../Common/Views.h ../Common/Const.h \
+  ../Common/ColorTable.h ../Common/Context.h
 PostSimplex.o: PostSimplex.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \
- ../Common/Const.h ../Common/ColorTable.h Iso.h ../Common/Context.h
-Iso.o: Iso.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
- ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
- ../Mesh/Metric.h Draw.h ../Common/Views.h ../Common/Const.h \
- ../Common/ColorTable.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
+  ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \
+  ../Common/Const.h ../Common/ColorTable.h Iso.h ../Common/Context.h
+Iso.o: Iso.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \
+  ../Common/Const.h ../Common/ColorTable.h
 Entity.o: Entity.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \
- ../Common/Const.h ../Common/ColorTable.h ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Mesh/Mesh.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h ../Common/Views.h \
+  ../Common/Const.h ../Common/ColorTable.h ../Common/Context.h
 Scale.o: Scale.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Const.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h gl2ps.h \
- ../Unix/XContext.h
-Axes.o: Axes.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Const.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
+  ../Common/Const.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h Draw.h \
+  ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h gl2ps.h \
+  ../Unix/XContext.h
+Axes.o: Axes.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshUI.h ../Common/Const.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
+  ../Mesh/Metric.h Draw.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/Context.h
 gl2ps.o: gl2ps.cpp gl2ps.h
 gl2gif.o: gl2gif.cpp gl2gif.h
+gl2jpeg.o: gl2jpeg.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
+  ../Common/Context.h ../jpeg/jpeglib.h ../jpeg/jconfig.h \
+  ../jpeg/jmorecfg.h ../jpeg/jerror.h
+gl2ppm.o: gl2ppm.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h
+gl2yuv.o: gl2yuv.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h
diff --git a/Graphics/gl2yuv.cpp b/Graphics/gl2yuv.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bf09ded7029ff6cffa65d2771199fdfa4b8f27f2
--- /dev/null
+++ b/Graphics/gl2yuv.cpp
@@ -0,0 +1,147 @@
+/* $Id: gl2yuv.cpp,v 1.1 2000-12-26 17:40:18 geuzaine Exp $ */
+
+#include "Gmsh.h"
+#include "GmshUI.h"
+
+void create_yuv(FILE *outfile, int width, int height){
+
+  register int x, y;
+  register unsigned char *dy0, *dy1;
+  register unsigned char *dcr, *dcb;
+  register unsigned char *src0, *src1;
+  register int cdivisor;
+
+  static int first = 1;
+  static float mult299[1024], mult587[1024], mult114[1024];
+  static float mult16874[1024], mult33126[1024], mult5[1024];
+  static float mult41869[1024], mult08131[1024];
+
+  unsigned char  *pixels;
+  unsigned char  **orig_y, **orig_cr, **orig_cb;
+  int row_stride;
+  
+  if (first){
+    register int index;
+    register int maxValue;
+    
+    maxValue = 255;
+
+    for (index = 0; index <= maxValue; index++){
+      mult299[index] = index*0.29900;
+      mult587[index] = index*0.58700;
+      mult114[index] = index*0.11400;
+      mult16874[index] = -0.16874*index;
+      mult33126[index] = -0.33126*index;
+      mult5[index] = index*0.50000;
+      mult41869[index] = -0.41869*index;
+      mult08131[index] = -0.08131*index;
+    }
+   
+    first = 0;
+  }
+
+  /* yuv format assumes even number of rows and columns */
+  if(height%2) height--;
+  if(width%2) width--;
+
+  pixels=(unsigned char *)Malloc(height*width*3);
+  glReadPixels(0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE,pixels);
+  row_stride = width * 3;
+
+  orig_y = (unsigned char **) Malloc(sizeof(unsigned char *) * height);
+  for (y = 0; y < height; y++) {
+    orig_y[y] = (unsigned char *) Malloc(sizeof(unsigned char) * width);
+  }
+
+  orig_cr = (unsigned char **) Malloc(sizeof(char *) * height / 2);
+  for (y = 0; y < height / 2; y++) {
+    orig_cr[y] = (unsigned char *) Malloc(sizeof(char) * width / 2);
+  }
+  
+  orig_cb = (unsigned char **) Malloc(sizeof(char *) * height / 2);
+  for (y = 0; y < height / 2; y++) {
+    orig_cb[y] = (unsigned char *) Malloc(sizeof(char) * width / 2);
+  }
+  
+  /* assume ydivisor = 1, so cdivisor = 4 */
+  cdivisor = 4;
+  
+  for (y = 0; y < height; y += 2){
+    src0 = &(pixels[y * row_stride]);
+    src1 = &(pixels[(y+1) * row_stride]);
+    dy0 = orig_y[y];
+    dy1 = orig_y[y + 1];
+    dcr = orig_cr[y / 2];
+    dcb = orig_cb[y / 2];
+    
+    for (x = 0; x < width; x += 2, dy0 += 2, dy1 += 2, dcr++,
+                                   dcb++, src0 += 6, src1 += 6){
+      *dy0 = (unsigned char)(mult299[*src0] +
+			     mult587[src0[1]] +
+			     mult114[src0[2]]);
+      
+      *dy1 = (unsigned char)(mult299[*src1] +
+			     mult587[src1[1]] +
+			     mult114[src1[2]]);
+      
+      dy0[1] = (unsigned char)(mult299[src0[3]] +
+			       mult587[src0[4]] +
+			       mult114[src0[5]]);
+      
+      dy1[1] = (unsigned char)(mult299[src1[3]] +
+			       mult587[src1[4]] +
+			       mult114[src1[5]]);
+      
+      *dcb = (unsigned char)((mult16874[*src0] +
+			      mult33126[src0[1]] +
+			      mult5[src0[2]] +
+			      mult16874[*src1] +
+			      mult33126[src1[1]] +
+			      mult5[src1[2]] +
+			      mult16874[src0[3]] +
+			      mult33126[src0[4]] +
+			      mult5[src0[5]] +
+			      mult16874[src1[3]] +
+			      mult33126[src1[4]] +
+			      mult5[src1[5]]) / cdivisor) + 128;
+      
+      *dcr = (unsigned char)((mult5[*src0] +
+			      mult41869[src0[1]] +
+			      mult08131[src0[2]] +
+			      mult5[*src1] +
+			      mult41869[src1[1]] +
+			      mult08131[src1[2]] +
+			      mult5[src0[3]] +
+			      mult41869[src0[4]] +
+			      mult08131[src0[5]] +
+			      mult5[src1[3]] +
+			      mult41869[src1[4]] +
+			      mult08131[src1[5]]) / cdivisor) + 128;
+    }
+  }
+
+  for (y = height-1; y >=0; y--)                      /* Y */
+    fwrite(orig_y[y], 1, width, outfile);
+  
+  for (y = height/2-1; y >=0; y--)                    /* U */
+    fwrite(orig_cb[y], 1, width / 2, outfile);
+  
+  for (y = height/2-1; y >=0; y--)                    /* V */
+    fwrite(orig_cr[y], 1, width / 2, outfile);
+
+  Free(pixels);
+
+  for (y = 0; y < height; y++)
+    Free(orig_y[y]);
+  Free(orig_y);
+
+  for (y = 0; y < height / 2; y++)
+    Free(orig_cr[y]);
+  Free(orig_cr);
+  
+  for (y = 0; y < height / 2; y++)
+    Free(orig_cb[y]);
+  Free(orig_cb);
+
+}
+
diff --git a/Graphics/gl2yuv.h b/Graphics/gl2yuv.h
new file mode 100644
index 0000000000000000000000000000000000000000..2921e67be195f097379bcb5f622f0d99cfda1944
--- /dev/null
+++ b/Graphics/gl2yuv.h
@@ -0,0 +1,6 @@
+#ifndef _GL2YUV_H_
+#define _GL2YUV_H_
+
+void create_yuv(FILE *outfile, int width, int height);
+
+#endif
diff --git a/Mesh/Mesh.h b/Mesh/Mesh.h
index bd9a331ada9dc9d8e105ea9f9735c056c9d9edac..4286e9ff9e482c63ce225e1c30be7a17fdf42e7e 100644
--- a/Mesh/Mesh.h
+++ b/Mesh/Mesh.h
@@ -1,4 +1,4 @@
-/* $Id: Mesh.h,v 1.10 2000-12-21 08:02:05 geuzaine Exp $ */
+/* $Id: Mesh.h,v 1.11 2000-12-26 17:40:18 geuzaine Exp $ */
 #ifndef _MESH_H_
 #define _MESH_H_
 
@@ -18,6 +18,7 @@
 #define FORMAT_JPEG    9
 #define FORMAT_AUTO    10
 #define FORMAT_PPM     11
+#define FORMAT_YUV     12
 
 #define CONV_VALUE    0.8
 
diff --git a/Unix/CbFile.cpp b/Unix/CbFile.cpp
index 8561bf29ce3a814bf8a57b10f20ebdc7a4576030..d7c5364f36513a9bd0edb5da6da7aa41fe15779f 100644
--- a/Unix/CbFile.cpp
+++ b/Unix/CbFile.cpp
@@ -1,4 +1,4 @@
-/* $Id: CbFile.cpp,v 1.16 2000-12-21 14:53:10 geuzaine Exp $ */
+/* $Id: CbFile.cpp,v 1.17 2000-12-26 17:40:18 geuzaine Exp $ */
 
 #include <unistd.h>
 
@@ -19,6 +19,7 @@
 #include "gl2gif.h"
 #include "gl2jpeg.h"
 #include "gl2ppm.h"
+#include "gl2yuv.h"
 
 extern Context_T   CTX;
 extern XContext_T  XCTX;
@@ -74,6 +75,7 @@ void CreateFile (char *name, int format) {
       else if(!strcmp(ext,".eps")) CreateFile(name, FORMAT_EPS);
       else if(!strcmp(ext,".xpm")) CreateFile(name, FORMAT_XPM);
       else if(!strcmp(ext,".ppm")) CreateFile(name, FORMAT_PPM);
+      else if(!strcmp(ext,".yuv")) CreateFile(name, FORMAT_YUV);
       else {
 	if(strlen(name) < 5)
 	  Msg(ERROR, "Unknown Extension for Automatic Format Detection");
@@ -155,6 +157,19 @@ void CreateFile (char *name, int format) {
     fclose(fp);
     break;
 
+  case FORMAT_YUV :
+    if(!(fp = fopen(name,"wb"))) {
+      Msg(WARNING, "Unable to Open File '%s'", name); 
+      return;
+    }
+    Replot();
+    create_yuv(fp, CTX.viewport[2]-CTX.viewport[0],
+	       CTX.viewport[3]-CTX.viewport[1]);
+    Msg(INFOS, "YUV Creation Complete '%s'", name);
+    Msg (INFO, "Wrote File '%s'", name);
+    fclose(fp);
+    break;
+
   case FORMAT_EPS :
 
     switch(CTX.print.eps_quality){
diff --git a/Unix/CbOptions.cpp b/Unix/CbOptions.cpp
index 27c05d8cb5f13aab19afcad5f2801fd3a96d51dc..97fb15ab4da1c7e52782683ca14e6b1952756494 100644
--- a/Unix/CbOptions.cpp
+++ b/Unix/CbOptions.cpp
@@ -1,4 +1,4 @@
-/* $Id: CbOptions.cpp,v 1.17 2000-12-22 20:08:20 geuzaine Exp $ */
+/* $Id: CbOptions.cpp,v 1.18 2000-12-26 17:40:18 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -140,6 +140,7 @@ void OptionsCb (Widget w, XtPointer client_data, XtPointer call_data){
   case OPTIONS_SAVE_GIF        : CTX.print.format = FORMAT_GIF; break;
   case OPTIONS_SAVE_JPEG       : CTX.print.format = FORMAT_JPEG; break;
   case OPTIONS_SAVE_PPM        : CTX.print.format = FORMAT_PPM; break;
+  case OPTIONS_SAVE_YUV        : CTX.print.format = FORMAT_YUV; break;
   case OPTIONS_SAVE_EPS_SIMPLE : CTX.print.format = FORMAT_EPS; 
                                  CTX.print.eps_quality = 1; break;
   case OPTIONS_SAVE_EPS_COMPLEX: CTX.print.format = FORMAT_EPS; 
diff --git a/Unix/CbOptions.h b/Unix/CbOptions.h
index 477d091e6dfd5bc5d92ff97099f1c503bd211f6e..1833fa8e18b788e1f761cd1a39ebdd07b415aa3e 100644
--- a/Unix/CbOptions.h
+++ b/Unix/CbOptions.h
@@ -1,4 +1,4 @@
-/* $Id: CbOptions.h,v 1.11 2000-12-21 08:02:06 geuzaine Exp $ */
+/* $Id: CbOptions.h,v 1.12 2000-12-26 17:40:18 geuzaine Exp $ */
 #ifndef _CB_OPTIONS_H_
 #define _CB_OPTIONS_H_
 
@@ -107,6 +107,7 @@
 #define  OPTIONS_SAVE_GEO                      409
 #define  OPTIONS_SAVE_JPEG                     410
 #define  OPTIONS_SAVE_PPM                      411
+#define  OPTIONS_SAVE_YUV                      412
 
 
 
diff --git a/Unix/Register.cpp b/Unix/Register.cpp
index f823d3ff19c66955564deba5f0ef96a173d716cd..a84b7100d1f00b4b2f104243a724980a17b06491 100644
--- a/Unix/Register.cpp
+++ b/Unix/Register.cpp
@@ -1,4 +1,4 @@
-/* $Id: Register.cpp,v 1.17 2000-12-21 14:53:10 geuzaine Exp $ */
+/* $Id: Register.cpp,v 1.18 2000-12-26 17:40:18 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -147,6 +147,7 @@ void RegisterCallbacks_FD(Widgets_T *w){
   register_activate_cb (w->FD.saveAsButt[8],  OptionsCb, OPTIONS_SAVE_JPEG);
   register_activate_cb (w->FD.saveAsButt[9],  OptionsCb, OPTIONS_SAVE_GIF);
   register_activate_cb (w->FD.saveAsButt[10], OptionsCb, OPTIONS_SAVE_PPM);
+  register_activate_cb (w->FD.saveAsButt[11], OptionsCb, OPTIONS_SAVE_YUV);
 
   register_ok_cb       (w->FD.saveOptionsAsDialog,   FileCb,    FILE_SAVE_OPTIONS_AS);
   register_cancel_cb   (w->FD.saveOptionsAsDialog,   ManageCb,  w->FD.saveOptionsAsDialog);
diff --git a/Unix/Widgets.cpp b/Unix/Widgets.cpp
index 16d1586bc15cfe1347a6bc69907d7fc8ee244429..46cafa5cf2b55bbb3dd58ea05d97795ebd7bfc19 100644
--- a/Unix/Widgets.cpp
+++ b/Unix/Widgets.cpp
@@ -1,4 +1,4 @@
-/* $Id: Widgets.cpp,v 1.24 2000-12-26 08:13:19 geuzaine Exp $ */
+/* $Id: Widgets.cpp,v 1.25 2000-12-26 17:40:18 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -672,6 +672,10 @@ void CreateWidgets_FD(Widgets_T *w){
   XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("PPM")); i++;
   w->FD.saveAsButt[10] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt10", arg, i);
   XtManageChild(w->FD.saveAsButt[10]);
+  i=0;
+  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("YUV")); i++;
+  w->FD.saveAsButt[11] = XmCreatePushButton(w->FD.saveAsPane[0], "MsaveAsButt11", arg, i);
+  XtManageChild(w->FD.saveAsButt[11]);
 
   i=0;
   XtSetArg(arg[i], XmNsubMenuId, w->FD.saveAsPane[0]); i++;
diff --git a/tutorial/t8.par b/tutorial/t8.par
index 66b9d984c95d8e4520723f72bbe15c3ab26e5f02..b557546775f6b4b8717883cb41cf6dc731818ca0 100644
--- a/tutorial/t8.par
+++ b/tutorial/t8.par
@@ -1,12 +1,17 @@
 #
-# parameter file fpr mpeg_encode 
+# parameter file for mpeg_encode 
 #
 
 PATTERN          I
+# PATTERN          IB
 # PATTERN          IBBBP
 # PATTERN          IBBPBBPBBPBBPBB
+
 BASE_FILE_FORMAT JPEG
 # BASE_FILE_FORMAT PPM
+# BASE_FILE_FORMAT YUV
+# YUV_SIZE         320x240
+
 GOP_SIZE         30
 SLICES_PER_FRAME 1
 PIXEL            HALF
@@ -26,5 +31,6 @@ INPUT_DIR       .
 INPUT
 t8-*.jpg [01-50]
 # t8-*.ppm [01-50]
+# t8-*.yuv [01-50]
 END_INPUT
 
diff --git a/www/gmsh.html b/www/gmsh.html
index 069b9a1e9b8e022cfa929739d8f32cae7e0bebee..582b0adba608ec5c98a7a7e1cc07cc4f78f795fc 100644
--- a/www/gmsh.html
+++ b/www/gmsh.html
@@ -303,8 +303,8 @@ files.
 
   <td><font face="Helvetica, Arial" size=-1> 
 
-New in 1.00: Added PPM output; Corrected nested If/Endif; Corrected
-seg. fault on repeated saves;
+New in 1.00: Added PPM and YUV output; Corrected nested If/Endif;
+Corrected seg. fault on repeated saves;
 <p>
 New in 0.999: Added JPEG output and easy MPEG generation (see t8.geo in the
 tutorial); Clean up of export functions; small fixes; Linux versions