diff --git a/Common/Context.h b/Common/Context.h index 97d034a0874fc72aa74acb31db390c72f474e71f..ee31682287493193517d71d58d478608e818cc7e 100644 --- a/Common/Context.h +++ b/Common/Context.h @@ -1,4 +1,4 @@ -/* $Id: Context.h,v 1.20 2000-12-11 22:09:42 geuzaine Exp $ */ +/* $Id: Context.h,v 1.21 2000-12-20 10:40:49 geuzaine Exp $ */ #ifndef _CONTEXT_H_ #define _CONTEXT_H_ @@ -140,9 +140,10 @@ class Context_T { /* print options */ struct{ - int format, type; + int format; + int eps_quality, jpeg_quality; char *font; - int font_size; + int font_size, gl_fonts; } print; // trackball functions diff --git a/Common/Options.h b/Common/Options.h index 1e0f47b1d66d418cc29cb47225a98e299936f4b2..82a066af97b0e95073af78c6184e74549671a378 100644 --- a/Common/Options.h +++ b/Common/Options.h @@ -1,4 +1,4 @@ -/* $Id: Options.h,v 1.6 2000-12-11 22:09:42 geuzaine Exp $ */ +/* $Id: Options.h,v 1.7 2000-12-20 10:40:49 geuzaine Exp $ */ #ifndef _OPTIONS_H_ #define _OPTIONS_H_ @@ -190,10 +190,11 @@ StringXNumber PostProcessingOptions_Number[] = { } ; StringXNumber PrintOptions_Number[] = { - { "Type" , GMSH_INT, (void*)&CTX.print.type , PRINT_GL2PS_SIMPLE }, - { "Format" , GMSH_INT, (void*)&CTX.print.format , FORMAT_EPS }, - { "FontSize" , GMSH_INT, (void*)&CTX.print.font_size , 12. }, - { NULL , GMSH_DOUBLE, NULL , 0. } + { "Format" , GMSH_INT, (void*)&CTX.print.format , FORMAT_AUTO }, + { "EpsQuality" , GMSH_INT, (void*)&CTX.print.eps_quality , 1 }, + { "JpegQuality" , GMSH_INT, (void*)&CTX.print.jpeg_quality , 100 }, + { "FontSize" , GMSH_INT, (void*)&CTX.print.font_size , 12. }, + { NULL , GMSH_DOUBLE, NULL , 0. } } ; // COLORS diff --git a/Graphics/Draw.h b/Graphics/Draw.h index 535ebe40b33a8ba4bfcfd72fba20c63fe7c58ddd..ffa7065c0961b480f2568ff6f8ae83b0e8be043e 100644 --- a/Graphics/Draw.h +++ b/Graphics/Draw.h @@ -1,4 +1,4 @@ -/* $Id: Draw.h,v 1.7 2000-11-27 10:58:54 geuzaine Exp $ */ +/* $Id: Draw.h,v 1.8 2000-12-20 10:40:52 geuzaine Exp $ */ #ifndef _DRAW_H_ #define _DRAW_H_ @@ -11,12 +11,6 @@ #define TO_SCREEN 1 #define TO_FILE 2 -#define PRINT_XDUMP 1 -#define PRINT_GL2PS_SIMPLE 2 -#define PRINT_GL2PS_RECURSIVE 3 -#define PRINT_GL2PS_IMAGE 4 -#define PRINT_GL2GIF 5 - void Init(void); void InitOv(void); void InitShading(void); diff --git a/Graphics/Makefile b/Graphics/Makefile index 0e5e2cd44425a9075459aa0c44e2add434012ee4..8eb73afff5fd77be68264677b564f1f21e5a24a0 100644 --- a/Graphics/Makefile +++ b/Graphics/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.6 2000-12-18 08:31:45 geuzaine Exp $ +# $Id: Makefile,v 1.7 2000-12-20 10:40:52 geuzaine Exp $ # # Makefile for "libGraphics.a" # @@ -20,7 +20,7 @@ RM = rm RMFLAGS = -f LIB = ../lib/libGraphics.a -INCLUDE = -I../Common -I../DataStr -I../Geo -I../Graphics -I../Unix -I../Mesh +INCLUDE = -I../Common -I../DataStr -I../Geo -I../Graphics -I../Unix -I../Mesh -I../jpeg CFLAGS = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)\ $(GL_INCLUDE) $(MOTIF_INCLUDE) @@ -35,7 +35,8 @@ SRC = Draw.cpp \ Scale.cpp \ Axes.cpp \ gl2ps.cpp\ - gl2gif.cpp + gl2gif.cpp\ + gl2jpeg.cpp OBJ = $(SRC:.cpp=.o) diff --git a/Graphics/Scale.cpp b/Graphics/Scale.cpp index 90e650c3750bc78c43d014d7c075662889079cf1..a4587aace2ef22faaecab1763b19bbccc783eeaa 100644 --- a/Graphics/Scale.cpp +++ b/Graphics/Scale.cpp @@ -1,4 +1,4 @@ -/* $Id: Scale.cpp,v 1.9 2000-12-18 08:31:45 geuzaine Exp $ */ +/* $Id: Scale.cpp,v 1.10 2000-12-20 10:40:52 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -32,8 +32,7 @@ extern List_T *Post_ViewList; void Draw_String(char *s){ if(CTX.stream == TO_FILE){ - if(CTX.print.type == PRINT_GL2PS_SIMPLE || - CTX.print.type == PRINT_GL2PS_RECURSIVE) { + if(!CTX.print.gl_fonts && CTX.print.eps_quality > 0){ gl2psText(s,CTX.print.font,CTX.print.font_size); return ; } diff --git a/Mesh/Mesh.h b/Mesh/Mesh.h index 546c07bf4baf0a0cac422f26fd2202782ec35623..4f8e460791b0153359a44cab611ff32798357a44 100644 --- a/Mesh/Mesh.h +++ b/Mesh/Mesh.h @@ -1,4 +1,4 @@ -/* $Id: Mesh.h,v 1.7 2000-11-28 06:55:11 geuzaine Exp $ */ +/* $Id: Mesh.h,v 1.8 2000-12-20 10:40:54 geuzaine Exp $ */ #ifndef _MESH_H_ #define _MESH_H_ @@ -15,6 +15,8 @@ #define FORMAT_BMP 6 #define FORMAT_GIF 7 #define FORMAT_GEO 8 +#define FORMAT_JPEG 9 +#define FORMAT_AUTO 10 #define CONV_VALUE 0.8 diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index ad550afa137c62f1ba60311b4de1c59c320cd5ec..2a4719d8541f2265eae8e497d5d3ffd79813052b 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -168,7 +168,7 @@ #define UNARYPREC 418 #line 1 "Gmsh.y" - /* $Id: Gmsh.tab.cpp,v 1.51 2000-12-19 09:01:13 geuzaine Exp $ */ + /* $Id: Gmsh.tab.cpp,v 1.52 2000-12-20 10:40:56 geuzaine Exp $ */ #include <stdarg.h> @@ -595,21 +595,21 @@ static const short yyrline[] = { 0, 1328, 1344, 1351, 1357, 1363, 1369, 1375, 1394, 1406, 1412, 1431, 1452, 1460, 1466, 1472, 1478, 1490, 1496, 1502, 1514, 1520, 1525, 1530, 1537, 1539, 1540, 1543, 1548, 1559, 1577, - 1585, 1589, 1600, 1672, 1692, 1696, 1715, 1731, 1745, 1770, - 1795, 1821, 1827, 1832, 1837, 1841, 1851, 1857, 1863, 1867, - 1871, 1875, 1879, 1884, 1891, 1895, 1900, 1918, 1928, 1946, - 1963, 1980, 2001, 2021, 2041, 2058, 2082, 2087, 2098, 2100, - 2103, 2105, 2106, 2107, 2108, 2111, 2113, 2114, 2115, 2116, - 2117, 2118, 2119, 2120, 2127, 2128, 2129, 2130, 2131, 2132, - 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, - 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, - 2153, 2154, 2155, 2156, 2157, 2158, 2163, 2168, 2172, 2184, - 2202, 2214, 2232, 2244, 2264, 2285, 2309, 2330, 2354, 2375, - 2400, 2407, 2420, 2427, 2431, 2435, 2439, 2444, 2449, 2453, - 2457, 2463, 2467, 2472, 2476, 2481, 2485, 2489, 2495, 2501, - 2507, 2511, 2517, 2532, 2539, 2545, 2554, 2566, 2570, 2578, - 2591, 2596, 2600, 2605, 2610, 2628, 2633, 2654, 2663, 2669, - 2674, 2678 + 1585, 1589, 1600, 1655, 1675, 1679, 1698, 1714, 1728, 1753, + 1778, 1804, 1810, 1815, 1820, 1824, 1834, 1840, 1846, 1850, + 1854, 1858, 1862, 1867, 1874, 1878, 1883, 1901, 1911, 1929, + 1946, 1963, 1984, 2004, 2024, 2041, 2065, 2070, 2081, 2083, + 2086, 2088, 2089, 2090, 2091, 2094, 2096, 2097, 2098, 2099, + 2100, 2101, 2102, 2103, 2110, 2111, 2112, 2113, 2114, 2115, + 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, + 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, + 2136, 2137, 2138, 2139, 2140, 2141, 2146, 2151, 2155, 2167, + 2185, 2197, 2215, 2227, 2247, 2268, 2292, 2313, 2337, 2358, + 2383, 2390, 2403, 2410, 2414, 2418, 2422, 2427, 2432, 2436, + 2440, 2446, 2450, 2455, 2459, 2464, 2468, 2472, 2478, 2484, + 2490, 2494, 2500, 2515, 2522, 2528, 2537, 2549, 2553, 2561, + 2574, 2579, 2583, 2588, 2593, 2611, 2616, 2637, 2646, 2652, + 2657, 2661 }; #endif @@ -4591,31 +4591,8 @@ case 203: else if(!strcmp(yyvsp[-2].c, "Print")){ if(!CTX.interactive){ // we're in interactive mode - char ext[6]; - strcpy(ext,yyvsp[-1].c+(strlen(yyvsp[-1].c)-4)); - Replot(); - extern void CreateImage (char *name, FILE *fp); - FILE *fp = 0; - if(!strcmp(ext,".gif")){ - fp = fopen(yyvsp[-1].c,"wb"); - CTX.print.type = PRINT_GL2GIF; - } - else if(!strcmp(ext,".eps")){ - fp = fopen(yyvsp[-1].c,"w"); - CTX.print.type = PRINT_GL2PS_RECURSIVE; - } - else if(!strcmp(ext,".xpm")){ - fp = fopen(yyvsp[-1].c,"wb"); - CTX.print.type = PRINT_XDUMP; - CTX.print.format = FORMAT_XPM; - } - if(fp){ - CreateImage(yyvsp[-1].c,fp); - fclose(fp); - } - else{ - vyyerror("Unable to Open File '%s'", yyvsp[-1].c); - } + void CreateImage (char *name, int format); + CreateImage(yyvsp[-1].c, CTX.print.format); } } @@ -4630,13 +4607,19 @@ case 203: Print_Mesh(THEM, yyvsp[-1].c, CTX.mesh.format); + } + else if(!strcmp(yyvsp[-2].c, "System")){ + + Msg(PARSER_INFO, "Executing System Call \"%s\""); + system(yyvsp[-1].c); + } else vyyerror("Unknown Command '%s'", yyvsp[-2].c); ; break;} case 204: -#line 1673 "Gmsh.y" +#line 1656 "Gmsh.y" { if(!strcmp(yyvsp[-2].c, "Sleep")){ @@ -4658,13 +4641,13 @@ case 204: ; break;} case 205: -#line 1693 "Gmsh.y" +#line 1676 "Gmsh.y" { exit(0); ; break;} case 206: -#line 1697 "Gmsh.y" +#line 1680 "Gmsh.y" { if(!CTX.interactive){ // we're in interactive mode if(Tree_Nbr(THEM->Points) != Last_NumberOfPoints){ @@ -4679,7 +4662,7 @@ case 206: ; break;} case 207: -#line 1718 "Gmsh.y" +#line 1701 "Gmsh.y" { FILE* ff; if(RecursionLevel) @@ -4695,7 +4678,7 @@ case 207: ; break;} case 208: -#line 1732 "Gmsh.y" +#line 1715 "Gmsh.y" { FILE* ff; if(RecursionLevel) @@ -4711,7 +4694,7 @@ case 208: ; break;} case 209: -#line 1746 "Gmsh.y" +#line 1729 "Gmsh.y" { FILE* ff; if(RecursionLevel) @@ -4738,7 +4721,7 @@ case 209: ; break;} case 210: -#line 1771 "Gmsh.y" +#line 1754 "Gmsh.y" { FILE* ff; if(RecursionLevel) @@ -4765,7 +4748,7 @@ case 210: ; break;} case 211: -#line 1796 "Gmsh.y" +#line 1779 "Gmsh.y" { if(LoopControlVariablesTab[ImbricatedLoop-1][1] > LoopControlVariablesTab[ImbricatedLoop-1][0]){ @@ -4793,7 +4776,7 @@ case 211: ; break;} case 212: -#line 1822 "Gmsh.y" +#line 1805 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction(yyvsp[0].c,yyin,yylineno)) vyyerror("Redefinition of function %s",yyvsp[0].c); @@ -4801,39 +4784,39 @@ case 212: ; break;} case 213: -#line 1828 "Gmsh.y" +#line 1811 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction(&yyin,yylineno)) vyyerror("Error while exiting function"); ; break;} case 214: -#line 1833 "Gmsh.y" +#line 1816 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c,&yyin,yylineno)) vyyerror("Unknown Function %s",yyvsp[-1].c); ; break;} case 215: -#line 1838 "Gmsh.y" +#line 1821 "Gmsh.y" { if(!yyvsp[-1].d) skip_until("EndIf"); ; break;} case 216: -#line 1842 "Gmsh.y" +#line 1825 "Gmsh.y" { ; break;} case 217: -#line 1853 "Gmsh.y" +#line 1836 "Gmsh.y" { Curve *pc, *prc; Extrude_ProtudePoint(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,&pc,&prc,NULL); ; break;} case 218: -#line 1858 "Gmsh.y" +#line 1841 "Gmsh.y" { Curve *pc, *prc; Extrude_ProtudePoint(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d, @@ -4841,55 +4824,55 @@ case 218: ; break;} case 219: -#line 1864 "Gmsh.y" +#line 1847 "Gmsh.y" { Extrude_ProtudeCurve(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,NULL); ; break;} case 220: -#line 1868 "Gmsh.y" +#line 1851 "Gmsh.y" { Extrude_ProtudeCurve(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,NULL); ; break;} case 221: -#line 1872 "Gmsh.y" +#line 1855 "Gmsh.y" { Extrude_ProtudeSurface(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,0,NULL); ; break;} case 222: -#line 1876 "Gmsh.y" +#line 1859 "Gmsh.y" { Extrude_ProtudeSurface(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL); ; break;} case 223: -#line 1880 "Gmsh.y" +#line 1863 "Gmsh.y" { int vol = NEWREG(); Extrude_ProtudeSurface(1,(int)yyvsp[-7].d,yyvsp[-5].v[0],yyvsp[-5].v[1],yyvsp[-5].v[2],0.,0.,0.,0.,vol,&extr); ; break;} case 224: -#line 1885 "Gmsh.y" +#line 1868 "Gmsh.y" { int vol = NEWREG(); Extrude_ProtudeSurface(0,(int)yyvsp[-11].d,yyvsp[-9].v[0],yyvsp[-9].v[1],yyvsp[-9].v[2],yyvsp[-7].v[0],yyvsp[-7].v[1],yyvsp[-7].v[2],yyvsp[-5].d,vol,&extr); ; break;} case 225: -#line 1893 "Gmsh.y" +#line 1876 "Gmsh.y" { ; break;} case 226: -#line 1896 "Gmsh.y" +#line 1879 "Gmsh.y" { ; break;} case 227: -#line 1902 "Gmsh.y" +#line 1885 "Gmsh.y" { double d; int j; @@ -4908,13 +4891,13 @@ case 227: ; break;} case 228: -#line 1919 "Gmsh.y" +#line 1902 "Gmsh.y" { extr.mesh.Recombine = true; ; break;} case 229: -#line 1930 "Gmsh.y" +#line 1913 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -4933,7 +4916,7 @@ case 229: ; break;} case 230: -#line 1947 "Gmsh.y" +#line 1930 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -4952,7 +4935,7 @@ case 230: ; break;} case 231: -#line 1964 "Gmsh.y" +#line 1947 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -4971,7 +4954,7 @@ case 231: ; break;} case 232: -#line 1981 "Gmsh.y" +#line 1964 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -4994,7 +4977,7 @@ case 232: ; break;} case 233: -#line 2002 "Gmsh.y" +#line 1985 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -5016,7 +4999,7 @@ case 233: ; break;} case 234: -#line 2022 "Gmsh.y" +#line 2005 "Gmsh.y" { Volume *v = FindVolume((int)yyvsp[-4].d,THEM); if(!v) @@ -5038,7 +5021,7 @@ case 234: ; break;} case 235: -#line 2042 "Gmsh.y" +#line 2025 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -5057,7 +5040,7 @@ case 235: ; break;} case 236: -#line 2059 "Gmsh.y" +#line 2042 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ @@ -5076,79 +5059,79 @@ case 236: ; break;} case 237: -#line 2084 "Gmsh.y" +#line 2067 "Gmsh.y" { Coherence_PS(); ; break;} case 238: -#line 2088 "Gmsh.y" +#line 2071 "Gmsh.y" { IntersectAllSegmentsTogether(); ; break;} case 239: -#line 2099 "Gmsh.y" +#line 2082 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 240: -#line 2100 "Gmsh.y" +#line 2083 "Gmsh.y" { yyval.d = -yyvsp[0].d; ; break;} case 241: -#line 2104 "Gmsh.y" +#line 2087 "Gmsh.y" {yyval.i = 1;; break;} case 242: -#line 2105 "Gmsh.y" +#line 2088 "Gmsh.y" {yyval.i = 0;; break;} case 243: -#line 2106 "Gmsh.y" +#line 2089 "Gmsh.y" {yyval.i = -1;; break;} case 244: -#line 2107 "Gmsh.y" +#line 2090 "Gmsh.y" {yyval.i = -1;; break;} case 245: -#line 2108 "Gmsh.y" +#line 2091 "Gmsh.y" {yyval.i = -1;; break;} case 246: -#line 2112 "Gmsh.y" +#line 2095 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 247: -#line 2113 "Gmsh.y" +#line 2096 "Gmsh.y" { yyval.d = yyvsp[-1].d ; ; break;} case 248: -#line 2114 "Gmsh.y" +#line 2097 "Gmsh.y" { yyval.d = -yyvsp[0].d ; ; break;} case 249: -#line 2115 "Gmsh.y" +#line 2098 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 250: -#line 2116 "Gmsh.y" +#line 2099 "Gmsh.y" { yyval.d = !yyvsp[0].d ; ; break;} case 251: -#line 2117 "Gmsh.y" +#line 2100 "Gmsh.y" { yyval.d = yyvsp[-2].d - yyvsp[0].d ; ; break;} case 252: -#line 2118 "Gmsh.y" +#line 2101 "Gmsh.y" { yyval.d = yyvsp[-2].d + yyvsp[0].d ; ; break;} case 253: -#line 2119 "Gmsh.y" +#line 2102 "Gmsh.y" { yyval.d = yyvsp[-2].d * yyvsp[0].d ; ; break;} case 254: -#line 2121 "Gmsh.y" +#line 2104 "Gmsh.y" { if(!yyvsp[0].d) vyyerror("Division by Zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d); @@ -5157,143 +5140,143 @@ case 254: ; break;} case 255: -#line 2127 "Gmsh.y" +#line 2110 "Gmsh.y" { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ; ; break;} case 256: -#line 2128 "Gmsh.y" +#line 2111 "Gmsh.y" { yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ; ; break;} case 257: -#line 2129 "Gmsh.y" +#line 2112 "Gmsh.y" { yyval.d = yyvsp[-2].d < yyvsp[0].d ; ; break;} case 258: -#line 2130 "Gmsh.y" +#line 2113 "Gmsh.y" { yyval.d = yyvsp[-2].d > yyvsp[0].d ; ; break;} case 259: -#line 2131 "Gmsh.y" +#line 2114 "Gmsh.y" { yyval.d = yyvsp[-2].d <= yyvsp[0].d ; ; break;} case 260: -#line 2132 "Gmsh.y" +#line 2115 "Gmsh.y" { yyval.d = yyvsp[-2].d >= yyvsp[0].d ; ; break;} case 261: -#line 2133 "Gmsh.y" +#line 2116 "Gmsh.y" { yyval.d = yyvsp[-2].d == yyvsp[0].d ; ; break;} case 262: -#line 2134 "Gmsh.y" +#line 2117 "Gmsh.y" { yyval.d = yyvsp[-2].d != yyvsp[0].d ; ; break;} case 263: -#line 2135 "Gmsh.y" +#line 2118 "Gmsh.y" { yyval.d = yyvsp[-2].d && yyvsp[0].d ; ; break;} case 264: -#line 2136 "Gmsh.y" +#line 2119 "Gmsh.y" { yyval.d = yyvsp[-2].d || yyvsp[0].d ; ; break;} case 265: -#line 2137 "Gmsh.y" +#line 2120 "Gmsh.y" { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ; break;} case 266: -#line 2138 "Gmsh.y" +#line 2121 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} case 267: -#line 2139 "Gmsh.y" +#line 2122 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} case 268: -#line 2140 "Gmsh.y" +#line 2123 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} case 269: -#line 2141 "Gmsh.y" +#line 2124 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} case 270: -#line 2142 "Gmsh.y" +#line 2125 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} case 271: -#line 2143 "Gmsh.y" +#line 2126 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} case 272: -#line 2144 "Gmsh.y" +#line 2127 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} case 273: -#line 2145 "Gmsh.y" +#line 2128 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} case 274: -#line 2146 "Gmsh.y" +#line 2129 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} case 275: -#line 2147 "Gmsh.y" +#line 2130 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} case 276: -#line 2148 "Gmsh.y" +#line 2131 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ; break;} case 277: -#line 2149 "Gmsh.y" +#line 2132 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} case 278: -#line 2150 "Gmsh.y" +#line 2133 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} case 279: -#line 2151 "Gmsh.y" +#line 2134 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} case 280: -#line 2152 "Gmsh.y" +#line 2135 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} case 281: -#line 2153 "Gmsh.y" +#line 2136 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} case 282: -#line 2154 "Gmsh.y" +#line 2137 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} case 283: -#line 2155 "Gmsh.y" +#line 2138 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} case 284: -#line 2156 "Gmsh.y" +#line 2139 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} case 285: -#line 2157 "Gmsh.y" +#line 2140 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} case 286: -#line 2158 "Gmsh.y" +#line 2141 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} case 287: -#line 2167 "Gmsh.y" +#line 2150 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 288: -#line 2168 "Gmsh.y" +#line 2151 "Gmsh.y" { yyval.d = 3.141592653589793; ; break;} case 289: -#line 2173 "Gmsh.y" +#line 2156 "Gmsh.y" { TheSymbol.Name = yyvsp[0].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5307,7 +5290,7 @@ case 289: ; break;} case 290: -#line 2185 "Gmsh.y" +#line 2168 "Gmsh.y" { TheSymbol.Name = yyvsp[-3].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5326,7 +5309,7 @@ case 290: ; break;} case 291: -#line 2203 "Gmsh.y" +#line 2186 "Gmsh.y" { TheSymbol.Name = yyvsp[-1].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5340,7 +5323,7 @@ case 291: ; break;} case 292: -#line 2215 "Gmsh.y" +#line 2198 "Gmsh.y" { TheSymbol.Name = yyvsp[-4].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5359,7 +5342,7 @@ case 292: ; break;} case 293: -#line 2233 "Gmsh.y" +#line 2216 "Gmsh.y" { TheSymbol.Name = yyvsp[-1].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5373,7 +5356,7 @@ case 293: ; break;} case 294: -#line 2245 "Gmsh.y" +#line 2228 "Gmsh.y" { TheSymbol.Name = yyvsp[-4].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5392,7 +5375,7 @@ case 294: ; break;} case 295: -#line 2265 "Gmsh.y" +#line 2248 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){ vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-2].c); @@ -5415,7 +5398,7 @@ case 295: ; break;} case 296: -#line 2286 "Gmsh.y" +#line 2269 "Gmsh.y" { if(strcmp(yyvsp[-7].c, "PostProcessing")){ vyyerror("Unknown View Option Class '%s'", yyvsp[-7].c); @@ -5440,7 +5423,7 @@ case 296: ; break;} case 297: -#line 2310 "Gmsh.y" +#line 2293 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){ vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-3].c); @@ -5463,7 +5446,7 @@ case 297: ; break;} case 298: -#line 2331 "Gmsh.y" +#line 2314 "Gmsh.y" { if(strcmp(yyvsp[-8].c, "PostProcessing")){ vyyerror("Unknown View Option Class '%s'", yyvsp[-8].c); @@ -5488,7 +5471,7 @@ case 298: ; break;} case 299: -#line 2355 "Gmsh.y" +#line 2338 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){ vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-3].c); @@ -5511,7 +5494,7 @@ case 299: ; break;} case 300: -#line 2376 "Gmsh.y" +#line 2359 "Gmsh.y" { if(strcmp(yyvsp[-8].c, "PostProcessing")){ vyyerror("Unknown View Option Class '%s'", yyvsp[-8].c); @@ -5536,7 +5519,7 @@ case 300: ; break;} case 301: -#line 2402 "Gmsh.y" +#line 2385 "Gmsh.y" { ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; for(d=yyvsp[-2].d ; (yyvsp[-2].d<yyvsp[0].d)?(d<=yyvsp[0].d):(d>=yyvsp[0].d) ; (yyvsp[-2].d<yyvsp[0].d)?(d+=1.):(d-=1.)) @@ -5544,7 +5527,7 @@ case 301: ; break;} case 302: -#line 2408 "Gmsh.y" +#line 2391 "Gmsh.y" { ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; if(!yyvsp[0].d || (yyvsp[-4].d<yyvsp[-2].d && yyvsp[0].d<0) || (yyvsp[-4].d>yyvsp[-2].d && yyvsp[0].d>0)){ @@ -5557,7 +5540,7 @@ case 302: ; break;} case 303: -#line 2422 "Gmsh.y" +#line 2405 "Gmsh.y" { memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)) ; //??? Avec ce qui suit, bison se plante sur DEC @@ -5565,110 +5548,110 @@ case 303: ; break;} case 304: -#line 2428 "Gmsh.y" +#line 2411 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = -yyvsp[0].v[i] ; ; break;} case 305: -#line 2432 "Gmsh.y" +#line 2415 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[0].v[i]; ; break;} case 306: -#line 2436 "Gmsh.y" +#line 2419 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i] ; ; break;} case 307: -#line 2440 "Gmsh.y" +#line 2423 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i] ; ; break;} case 308: -#line 2446 "Gmsh.y" +#line 2429 "Gmsh.y" { yyval.v[0]=yyvsp[-9].d; yyval.v[1]=yyvsp[-7].d; yyval.v[2]=yyvsp[-5].d; yyval.v[3]=yyvsp[-3].d; yyval.v[4]=yyvsp[-1].d; ; break;} case 309: -#line 2450 "Gmsh.y" +#line 2433 "Gmsh.y" { yyval.v[0]=yyvsp[-7].d; yyval.v[1]=yyvsp[-5].d; yyval.v[2]=yyvsp[-3].d; yyval.v[3]=yyvsp[-1].d; yyval.v[4]=1.0; ; break;} case 310: -#line 2454 "Gmsh.y" +#line 2437 "Gmsh.y" { yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; yyval.v[2]=yyvsp[-1].d; yyval.v[3]=0.0; yyval.v[4]=1.0; ; break;} case 311: -#line 2458 "Gmsh.y" +#line 2441 "Gmsh.y" { yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; yyval.v[2]=yyvsp[-1].d; yyval.v[3]=0.0; yyval.v[4]=1.0; ; break;} case 312: -#line 2465 "Gmsh.y" +#line 2448 "Gmsh.y" { ; break;} case 313: -#line 2468 "Gmsh.y" +#line 2451 "Gmsh.y" { ; break;} case 314: -#line 2474 "Gmsh.y" +#line 2457 "Gmsh.y" { ; break;} case 315: -#line 2477 "Gmsh.y" +#line 2460 "Gmsh.y" { ; break;} case 316: -#line 2483 "Gmsh.y" +#line 2466 "Gmsh.y" { ; break;} case 317: -#line 2486 "Gmsh.y" +#line 2469 "Gmsh.y" { yyval.l=ListOfListOfDouble_L; ; break;} case 318: -#line 2490 "Gmsh.y" +#line 2473 "Gmsh.y" { yyval.l=ListOfListOfDouble_L; ; break;} case 319: -#line 2497 "Gmsh.y" +#line 2480 "Gmsh.y" { ListOfListOfDouble_L = List_Create(2,1,sizeof(List_T*)) ; List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ; ; break;} case 320: -#line 2502 "Gmsh.y" +#line 2485 "Gmsh.y" { List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ; ; break;} case 321: -#line 2509 "Gmsh.y" +#line 2492 "Gmsh.y" { ; break;} case 322: -#line 2512 "Gmsh.y" +#line 2495 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; List_Add(ListOfDouble_L, &(yyvsp[0].d)) ; @@ -5676,7 +5659,7 @@ case 322: ; break;} case 323: -#line 2518 "Gmsh.y" +#line 2501 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; @@ -5693,20 +5676,20 @@ case 323: ; break;} case 324: -#line 2533 "Gmsh.y" +#line 2516 "Gmsh.y" { yyval.l=ListOfDouble_L; ; break;} case 325: -#line 2541 "Gmsh.y" +#line 2524 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; List_Add(ListOfDouble_L, &(yyvsp[0].d)) ; ; break;} case 326: -#line 2546 "Gmsh.y" +#line 2529 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){ @@ -5717,7 +5700,7 @@ case 326: ; break;} case 327: -#line 2555 "Gmsh.y" +#line 2538 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; @@ -5731,13 +5714,13 @@ case 327: ; break;} case 328: -#line 2567 "Gmsh.y" +#line 2550 "Gmsh.y" { List_Add(ListOfDouble_L, &(yyvsp[0].d)) ; ; break;} case 329: -#line 2571 "Gmsh.y" +#line 2554 "Gmsh.y" { for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){ List_Read(ListOfDouble2_L, i, &d) ; @@ -5747,7 +5730,7 @@ case 329: ; break;} case 330: -#line 2579 "Gmsh.y" +#line 2562 "Gmsh.y" { TheSymbol.Name = yyvsp[-2].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5760,33 +5743,33 @@ case 330: ; break;} case 331: -#line 2593 "Gmsh.y" +#line 2576 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d); ; break;} case 332: -#line 2597 "Gmsh.y" +#line 2580 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255); ; break;} case 333: -#line 2601 "Gmsh.y" +#line 2584 "Gmsh.y" { yyval.u = Get_ColorForString(ColorString, (int)yyvsp[-1].d, yyvsp[-3].c, &flag); if(flag) vyyerror("Unknown Color '%s'", yyvsp[-3].c); ; break;} case 334: -#line 2606 "Gmsh.y" +#line 2589 "Gmsh.y" { yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag); if(flag) vyyerror("Unknown Color '%s'", yyvsp[0].c); ; break;} case 335: -#line 2611 "Gmsh.y" +#line 2594 "Gmsh.y" { if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){ vyyerror("Unknown Color Option Class '%s'", yyvsp[-4].c); @@ -5804,13 +5787,13 @@ case 335: ; break;} case 336: -#line 2630 "Gmsh.y" +#line 2613 "Gmsh.y" { yyval.l = ListOfColor_L; ; break;} case 337: -#line 2634 "Gmsh.y" +#line 2617 "Gmsh.y" { if(!ListOfColor_L) ListOfColor_L = List_Create(256,10,sizeof(unsigned int)) ; @@ -5831,7 +5814,7 @@ case 337: ; break;} case 338: -#line 2656 "Gmsh.y" +#line 2639 "Gmsh.y" { if(!ListOfColor_L) ListOfColor_L = List_Create(256,10,sizeof(unsigned int)) ; @@ -5841,25 +5824,25 @@ case 338: ; break;} case 339: -#line 2664 "Gmsh.y" +#line 2647 "Gmsh.y" { List_Add(ListOfColor_L, &(yyvsp[0].u)) ; ; break;} case 340: -#line 2671 "Gmsh.y" +#line 2654 "Gmsh.y" { yyval.c = yyvsp[0].c; ; break;} case 341: -#line 2675 "Gmsh.y" +#line 2658 "Gmsh.y" { yyval.c = yyvsp[-1].c; ; break;} case 342: -#line 2679 "Gmsh.y" +#line 2662 "Gmsh.y" { for(i = 0 ; i<List_Nbr(ListOfDouble_L) ; i++){ if(!i){ @@ -6081,7 +6064,7 @@ yyerrhandle: yystate = yyn; goto yynewstate; } -#line 2703 "Gmsh.y" +#line 2686 "Gmsh.y" void InitSymbols(void){ diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 16d96e8022114d08f367518aa3e23df2114c7c72..448833a7beac4c01dd2c7227e0786e97e29d9152 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,4 +1,4 @@ -%{ /* $Id: Gmsh.y,v 1.46 2000-12-18 08:32:08 geuzaine Exp $ */ +%{ /* $Id: Gmsh.y,v 1.47 2000-12-20 10:40:56 geuzaine Exp $ */ #include <stdarg.h> @@ -1626,31 +1626,8 @@ Command : else if(!strcmp($1, "Print")){ if(!CTX.interactive){ // we're in interactive mode - char ext[6]; - strcpy(ext,$2+(strlen($2)-4)); - Replot(); - extern void CreateImage (char *name, FILE *fp); - FILE *fp = 0; - if(!strcmp(ext,".gif")){ - fp = fopen($2,"wb"); - CTX.print.type = PRINT_GL2GIF; - } - else if(!strcmp(ext,".eps")){ - fp = fopen($2,"w"); - CTX.print.type = PRINT_GL2PS_RECURSIVE; - } - else if(!strcmp(ext,".xpm")){ - fp = fopen($2,"wb"); - CTX.print.type = PRINT_XDUMP; - CTX.print.format = FORMAT_XPM; - } - if(fp){ - CreateImage($2,fp); - fclose(fp); - } - else{ - vyyerror("Unable to Open File '%s'", $2); - } + void CreateImage (char *name, int format); + CreateImage($2, CTX.print.format); } } @@ -1665,6 +1642,12 @@ Command : Print_Mesh(THEM, $2, CTX.mesh.format); + } + else if(!strcmp($1, "System")){ + + Msg(PARSER_INFO, "Executing System Call \"%s\""); + system($2); + } else vyyerror("Unknown Command '%s'", $1); diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index c78da5a552abbe12e76e0991ebb857a34c5ae53f..4273caf57820ac4b4b87d347e172c526821f6c16 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -2,7 +2,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.51 2000-12-19 09:01:13 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.52 2000-12-20 10:40:56 geuzaine Exp $ */ #define FLEX_SCANNER diff --git a/Unix/CbFile.cpp b/Unix/CbFile.cpp index 0c3ca50cb9434a820f7a15fdbd5b4a2109c617e2..2e566ca170f134131290cf8633237c28b461bf23 100644 --- a/Unix/CbFile.cpp +++ b/Unix/CbFile.cpp @@ -1,4 +1,4 @@ -/* $Id: CbFile.cpp,v 1.12 2000-12-17 21:17:30 remacle Exp $ */ +/* $Id: CbFile.cpp,v 1.13 2000-12-20 10:40:58 geuzaine Exp $ */ #include <unistd.h> @@ -17,6 +17,7 @@ #include "XDump.h" #include "gl2ps.h" #include "gl2gif.h" +#include "gl2jpeg.h" extern Context_T CTX; extern XContext_T XCTX; @@ -30,7 +31,7 @@ static int WARNING_OVERRIDE = 0; /* ------------------------------------------------------------------------ */ void SaveToDisk (char *FileName, Widget warning, - void (*function)(char *filename, FILE *file)){ + void (*function)(char *filename, int format)){ FILE *fp ; static char KeepFileName[256]; @@ -48,82 +49,138 @@ void SaveToDisk (char *FileName, Widget warning, } } - if(!(fp = fopen(KeepFileName,"w"))) { - Msg(WARNING, "Unable to Open File '%s'", KeepFileName); - WARNING_OVERRIDE = 0; - return; - } - - function(KeepFileName, fp); - - fclose(fp); + function(KeepFileName, CTX.print.format); WARNING_OVERRIDE = 0; } -void CreateImage (char *name, FILE *fp) { - FILE *tmp; +void CreateImage (char *name, int format) { + FILE *tmp, *fp; GLint size3d; - char cmd[1000]; + char cmd[1000], ext[6]; char *tmpFileName="tmp.xwd"; int res; - switch(CTX.print.type){ - - case PRINT_XDUMP : - switch(CTX.print.format){ - case FORMAT_XPM : - Window_Dump(XCTX.display, XCTX.scrnum, XtWindow(WID.G.glw), fp); - break; - case FORMAT_EPS : - tmp = fopen(tmpFileName,"w"); - Window_Dump(XCTX.display, XCTX.scrnum, XtWindow(WID.G.glw), tmp); - fclose(tmp); - sprintf(cmd, "xpr -device ps -gray 4 %s >%s", tmpFileName, name); - Msg(INFOS, "Executing '%s'", cmd); - system(cmd); - unlink(tmpFileName); - break; + CTX.print.gl_fonts = 1; + + switch(format){ + + case FORMAT_AUTO : + strcpy(ext,name+(strlen(name)-4)); + if (!strcmp(ext,".gif")) CreateImage(name, FORMAT_GIF); + else if(!strcmp(ext,".jpg")) CreateImage(name, FORMAT_JPEG); + else if(!strcmp(ext,".eps")) CreateImage(name, FORMAT_EPS); + else if(!strcmp(ext,".xpm")) CreateImage(name, FORMAT_XPM); + else if(!strcmp(ext,".geo")) CreateImage(name, FORMAT_GEO); + else Msg(ERROR, "Unknown Extension \"%s\" for Automatic Format Detection"); + break; + + case FORMAT_XPM : + if(!(fp = fopen(name,"wb"))) { + Msg(WARNING, "Unable to Open File '%s'", name); + WARNING_OVERRIDE = 0; + return; } + Window_Dump(XCTX.display, XCTX.scrnum, XtWindow(WID.G.glw), fp); Msg(INFOS, "XPM Creation Complete '%s'", name); Msg (INFO, "Wrote File '%s'", name); - break ; + fclose(fp); + break; + + case FORMAT_JPEG : + if(!(fp = fopen(name,"wb"))) { + Msg(WARNING, "Unable to Open File '%s'", name); + WARNING_OVERRIDE = 0; + return; + } + Replot(); + create_jpeg(fp, CTX.viewport[2]-CTX.viewport[0], + CTX.viewport[3]-CTX.viewport[1]); + Msg(INFOS, "JPEG Creation Complete '%s'", name); + Msg (INFO, "Wrote File '%s'", name); + fclose(fp); + break; - case PRINT_GL2GIF : + case FORMAT_GIF : // have to replot for filling again buffer ... + if(!(fp = fopen(name,"wb"))) { + Msg(WARNING, "Unable to Open File '%s'", name); + WARNING_OVERRIDE = 0; + return; + } Replot(); create_gif(fp, CTX.viewport[2]-CTX.viewport[0], CTX.viewport[3]-CTX.viewport[1]); Msg(INFOS, "GIF Creation Complete '%s'", name); Msg (INFO, "Wrote File '%s'", name); + fclose(fp); break; - case PRINT_GL2PS_SIMPLE : - case PRINT_GL2PS_RECURSIVE : - size3d = 0 ; - res = GL2PS_OVERFLOW ; - while(res == GL2PS_OVERFLOW){ - size3d += 2048*2048 ; - gl2psBeginPage(TheBaseFileName, "Gmsh", - (CTX.print.type == PRINT_GL2PS_SIMPLE ? - GL2PS_SIMPLE_SORT : GL2PS_BSP_SORT), - GL2PS_SIMPLE_LINE_OFFSET | GL2PS_DRAW_BACKGROUND, - GL_RGBA, 0, NULL, size3d, fp); - CTX.stream = TO_FILE ; - Init(); - Draw(); - CTX.stream = TO_SCREEN ; - res = gl2psEndPage(); + case FORMAT_EPS : + + switch(CTX.print.eps_quality){ + + case 0 : // Bitmap EPS + if(!(fp = fopen(name,"w"))) { + Msg(WARNING, "Unable to Open File '%s'", name); + WARNING_OVERRIDE = 0; + return; + } + if(!(tmp = fopen(tmpFileName,"w"))){ + Msg(WARNING, "Unable to Open File '%s'", tmpFileName); + return; + } + Window_Dump(XCTX.display, XCTX.scrnum, XtWindow(WID.G.glw), tmp); + fclose(tmp); + sprintf(cmd, "xpr -device ps -gray 4 %s >%s", tmpFileName, name); + Msg(INFOS, "Executing '%s'", cmd); + system(cmd); + unlink(tmpFileName); + Msg(INFOS, "Bitmap EPS Creation Complete '%s'", name); + Msg (INFO, "Wrote File '%s'", name); + fclose(fp); + break; + + default : // Vector EPS + if(!(fp = fopen(name,"w"))) { + Msg(WARNING, "Unable to Open File '%s'", name); + WARNING_OVERRIDE = 0; + return; + } + CTX.print.gl_fonts = 0; + size3d = 0 ; + res = GL2PS_OVERFLOW ; + while(res == GL2PS_OVERFLOW){ + size3d += 2048*2048 ; + gl2psBeginPage(TheBaseFileName, "Gmsh", + (CTX.print.eps_quality == 1 ? GL2PS_SIMPLE_SORT : GL2PS_BSP_SORT), + GL2PS_SIMPLE_LINE_OFFSET | GL2PS_DRAW_BACKGROUND, + GL_RGBA, 0, NULL, size3d, fp); + CTX.stream = TO_FILE ; + Init(); + Draw(); + CTX.stream = TO_SCREEN ; + res = gl2psEndPage(); + } + Msg(INFOS, "EPS Creation Complete '%s'", name); + Msg (INFO, "Wrote File '%s'", name); + fclose(fp); + CTX.print.gl_fonts = 1; + break; + } - Msg(INFOS, "EPS Creation Complete '%s'", name); - Msg (INFO, "Wrote File '%s'", name); + break ; + + case FORMAT_GEO : + Print_Geo(&M, name); break; - + default : - Msg(WARNING, "Unknown Print Type"); + Msg(WARNING, "Unknown Print Format"); break; } + } /* ------------------------------------------------------------------------ */ @@ -150,12 +207,8 @@ void FileCb(Widget w, XtPointer client_data, XtPointer call_data){ case FILE_SAVE_OPTIONS_AS : Print_Context(c); break; case FILE_CANCEL : WARNING_OVERRIDE = 0; break; case FILE_PRINT : - if(CTX.print.format == FORMAT_GEO) - Print_Geo(&M, c); - else{ - SaveToDisk(c, WID.ED.printDialog, CreateImage); - Init(); Draw(); - } + SaveToDisk(c, WID.ED.printDialog, CreateImage); + Init(); Draw(); break; default : Msg(WARNING, "Unknown event in FileCb : %d", (long int)client_data); diff --git a/Unix/CbOptions.cpp b/Unix/CbOptions.cpp index 8f37a7fc4a313a2798a91a3e9c8ec32f3f2c0691..30f987709aa36e11ec3f5005d7fbdb1dea8ad6fa 100644 --- a/Unix/CbOptions.cpp +++ b/Unix/CbOptions.cpp @@ -1,4 +1,4 @@ -/* $Id: CbOptions.cpp,v 1.12 2000-12-08 11:16:55 geuzaine Exp $ */ +/* $Id: CbOptions.cpp,v 1.13 2000-12-20 10:40:58 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -131,18 +131,17 @@ void OptionsCb (Widget w, XtPointer client_data, XtPointer call_data){ /* print */ - case OPTIONS_PRINT_XDUMP : - CTX.print.type = PRINT_XDUMP; CTX.print.format = FORMAT_XPM; break; - case OPTIONS_PRINT_GL2GIF : - CTX.print.type = PRINT_GL2GIF; CTX.print.format = FORMAT_GIF; break; - case OPTIONS_PRINT_GL2PS_SIMPLE : - CTX.print.type = PRINT_GL2PS_SIMPLE; CTX.print.format = FORMAT_EPS;break; - case OPTIONS_PRINT_GL2PS_COMPLEX: - CTX.print.type = PRINT_GL2PS_RECURSIVE; CTX.print.format = FORMAT_EPS;break; - case OPTIONS_PRINT_GL2PS_IMAGE : - CTX.print.type = PRINT_XDUMP; CTX.print.format = FORMAT_EPS;break; - case OPTIONS_PRINT_GEO : - CTX.print.type = -1; CTX.print.format = FORMAT_GEO;break; + case OPTIONS_PRINT_AUTO : CTX.print.format = FORMAT_AUTO; break; + case OPTIONS_PRINT_XDUMP : CTX.print.format = FORMAT_XPM; break; + case OPTIONS_PRINT_GL2GIF : CTX.print.format = FORMAT_GIF; break; + case OPTIONS_PRINT_GL2JPEG : CTX.print.format = FORMAT_JPEG; break; + case OPTIONS_PRINT_GL2PS_SIMPLE : CTX.print.format = FORMAT_EPS; + CTX.print.eps_quality = 1; break; + case OPTIONS_PRINT_GL2PS_COMPLEX: CTX.print.format = FORMAT_EPS; + CTX.print.eps_quality = 2; break; + case OPTIONS_PRINT_GL2PS_IMAGE : CTX.print.format = FORMAT_EPS; + CTX.print.eps_quality = 0; break; + case OPTIONS_PRINT_GEO : CTX.print.format = FORMAT_GEO; break; /* geometrie */ diff --git a/Unix/CbOptions.h b/Unix/CbOptions.h index 141993e258a30e786cabb65b8b22029670392f12..d517bd2e5c25e764e944650c48d1f978d5556278 100644 --- a/Unix/CbOptions.h +++ b/Unix/CbOptions.h @@ -1,4 +1,4 @@ -/* $Id: CbOptions.h,v 1.8 2000-12-05 19:03:21 geuzaine Exp $ */ +/* $Id: CbOptions.h,v 1.9 2000-12-20 10:40:58 geuzaine Exp $ */ #ifndef _CB_OPTIONS_H_ #define _CB_OPTIONS_H_ @@ -98,11 +98,15 @@ /* options print */ -#define OPTIONS_PRINT_XDUMP 400 -#define OPTIONS_PRINT_GL2PS_SIMPLE 401 -#define OPTIONS_PRINT_GL2PS_COMPLEX 402 -#define OPTIONS_PRINT_GL2PS_IMAGE 403 -#define OPTIONS_PRINT_GL2GIF 404 -#define OPTIONS_PRINT_GEO 405 - +#define OPTIONS_PRINT_AUTO 400 +#define OPTIONS_PRINT_XDUMP 401 +#define OPTIONS_PRINT_GL2PS_SIMPLE 402 +#define OPTIONS_PRINT_GL2PS_COMPLEX 403 +#define OPTIONS_PRINT_GL2PS_IMAGE 404 +#define OPTIONS_PRINT_GL2GIF 405 +#define OPTIONS_PRINT_GEO 406 +#define OPTIONS_PRINT_GL2JPEG 407 + + + #endif diff --git a/Unix/Register.cpp b/Unix/Register.cpp index 4bc3d6b2fed0c31d78660645bc2033fc179bc616..e08c258a5991f572b694a042071eb159164c1371 100644 --- a/Unix/Register.cpp +++ b/Unix/Register.cpp @@ -1,4 +1,4 @@ -/* $Id: Register.cpp,v 1.13 2000-12-13 13:57:00 geuzaine Exp $ */ +/* $Id: Register.cpp,v 1.14 2000-12-20 10:40:58 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -147,11 +147,13 @@ void RegisterCallbacks_FD(Widgets_T *w){ register_ok_cb (w->FD.printDialog, FileCb, FILE_PRINT); register_cancel_cb (w->FD.printDialog, ManageCb, w->FD.printDialog); - register_activate_cb (w->FD.printButt[0], OptionsCb, OPTIONS_PRINT_GL2PS_SIMPLE); - register_activate_cb (w->FD.printButt[1], OptionsCb, OPTIONS_PRINT_GL2PS_COMPLEX); - register_activate_cb (w->FD.printButt[2], OptionsCb, OPTIONS_PRINT_XDUMP); - register_activate_cb (w->FD.printButt[3], OptionsCb, OPTIONS_PRINT_GL2GIF); - register_activate_cb (w->FD.printButt[4], OptionsCb, OPTIONS_PRINT_GEO); + register_activate_cb (w->FD.printButt[0], OptionsCb, OPTIONS_PRINT_AUTO); + register_activate_cb (w->FD.printButt[1], OptionsCb, OPTIONS_PRINT_GL2PS_SIMPLE); + register_activate_cb (w->FD.printButt[2], OptionsCb, OPTIONS_PRINT_GL2PS_COMPLEX); + register_activate_cb (w->FD.printButt[3], OptionsCb, OPTIONS_PRINT_XDUMP); + register_activate_cb (w->FD.printButt[4], OptionsCb, OPTIONS_PRINT_GL2JPEG); + register_activate_cb (w->FD.printButt[5], OptionsCb, OPTIONS_PRINT_GL2GIF); + register_activate_cb (w->FD.printButt[6], OptionsCb, OPTIONS_PRINT_GEO); } void RegisterCallbacks_OD(Widgets_T *w){ diff --git a/Unix/Widgets.cpp b/Unix/Widgets.cpp index 29c99b66c69ad74c130b12f6888f80adcba5138e..f8375a614bf96e44476bd34c7ad740234f15f468 100644 --- a/Unix/Widgets.cpp +++ b/Unix/Widgets.cpp @@ -1,4 +1,4 @@ -/* $Id: Widgets.cpp,v 1.18 2000-12-13 13:57:00 geuzaine Exp $ */ +/* $Id: Widgets.cpp,v 1.19 2000-12-20 10:40:58 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -655,7 +655,7 @@ void CreateWidgets_FD(Widgets_T *w){ /* print */ i=0 ; - XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Print Image to File")); i++; + XtSetArg(arg[i], XmNdialogTitle, XmStringCreateSimple("Print to File")); i++; XtSetArg(arg[i], XmNnoMatchString, XmStringCreateSimple("[ NONE ]")); i++; XtSetArg(arg[i], XmNdirMask, XmStringCreateSimple("*")); i++; XtSetArg(arg[i], XmNautoUnmanage, False); i++; /* + pratique qd on sauve des animations */ @@ -683,25 +683,33 @@ void CreateWidgets_FD(Widgets_T *w){ w->FD.printPane[0] = XmCreatePulldownMenu(w->FD.printRowCol, "FDprintPane0", arg, i); i=0; - XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("EPS (fast)")); i++; + XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("By Extension")); i++; w->FD.printButt[0] = XmCreatePushButton(w->FD.printPane[0], "MprintButt0", arg, i); XtManageChild(w->FD.printButt[0]); i=0; - XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("EPS (accurate)")); i++; + XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("EPS Simple Sort")); i++; w->FD.printButt[1] = XmCreatePushButton(w->FD.printPane[0], "MprintButt1", arg, i); XtManageChild(w->FD.printButt[1]); i=0; - XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("XPM")); i++; + XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("EPS Accurate Sort")); i++; w->FD.printButt[2] = XmCreatePushButton(w->FD.printPane[0], "MprintButt2", arg, i); XtManageChild(w->FD.printButt[2]); i=0; - XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("GIF")); i++; + XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("XPM")); i++; w->FD.printButt[3] = XmCreatePushButton(w->FD.printPane[0], "MprintButt3", arg, i); XtManageChild(w->FD.printButt[3]); i=0; - XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("GEO")); i++; + XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("JPEG")); i++; w->FD.printButt[4] = XmCreatePushButton(w->FD.printPane[0], "MprintButt4", arg, i); XtManageChild(w->FD.printButt[4]); + i=0; + XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("GIF")); i++; + w->FD.printButt[5] = XmCreatePushButton(w->FD.printPane[0], "MprintButt5", arg, i); + XtManageChild(w->FD.printButt[5]); + i=0; + XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("GEO")); i++; + w->FD.printButt[6] = XmCreatePushButton(w->FD.printPane[0], "MprintButt6", arg, i); + XtManageChild(w->FD.printButt[6]); i=0; XtSetArg(arg[i], XmNsubMenuId, w->FD.printPane[0]); i++;