diff --git a/Graphics/ReadImg.cpp b/Graphics/ReadImg.cpp index 50e1544d9f97634723098f243be22c8b22844d4b..c62ac74d6eecc7021db10637ca47281e3316b562 100644 --- a/Graphics/ReadImg.cpp +++ b/Graphics/ReadImg.cpp @@ -1,4 +1,4 @@ -// $Id: ReadImg.cpp,v 1.12 2006-01-28 03:39:44 geuzaine Exp $ +// $Id: ReadImg.cpp,v 1.13 2006-01-28 04:50:36 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -24,12 +24,15 @@ #include "GmshUI.h" #include "Views.h" +#include <FL/Fl_JPEG_Image.H> #include <FL/Fl_PNM_Image.H> - -// from an image, we create a post pro object +#include <FL/Fl_PNG_Image.H> +#include <FL/Fl_BMP_Image.H> + +// from an image, we create a post-procession view -Post_View * Img2Pos(Fl_RGB_Image & img_init, int quads=1, - int resizex=0, int resizey=0) +static Post_View *Img2Pos(Fl_RGB_Image & img_init, int quads=1, + int resizex=0, int resizey=0) { img_init.desaturate(); // convert to grayscale @@ -94,18 +97,41 @@ Post_View * Img2Pos(Fl_RGB_Image & img_init, int quads=1, return v; } +static void EndPos(char *name, Post_View *v) +{ + if(!v) return; + char name2[256]; + strcpy(name2, name); + strcat(name2, ".pos"); + EndView(v, 1, name2, name); + Msg(INFO, "Read file '%s'", name); + Msg(STATUS2N, "Read '%s'", name); +} + void read_pnm(char *name) { Msg(INFO, "Reading PNM file '%s'", name); + Fl_PNM_Image img(name); + EndPos(name, Img2Pos(img)); +} - Fl_PNM_Image theVeryNicePicture(name); - Post_View * v = Img2Pos(theVeryNicePicture); - if(v){ - char name2[256]; - strcpy(name2, name); - strcat(name2, ".pos"); - EndView(v, 1, name2, name); - Msg(INFO, "Read PNM file '%s'", name); - Msg(STATUS2N, "Read '%s'", name); - } +void read_jpeg(char *name) +{ + Msg(INFO, "Reading JPEG file '%s'", name); + Fl_JPEG_Image img(name); + EndPos(name, Img2Pos(img)); +} + +void read_png(char *name) +{ + Msg(INFO, "Reading PNG file '%s'", name); + Fl_PNG_Image img(name); + EndPos(name, Img2Pos(img)); +} + +void read_bmp(char *name) +{ + Msg(INFO, "Reading BMP file '%s'", name); + Fl_BMP_Image img(name); + EndPos(name, Img2Pos(img)); } diff --git a/Graphics/ReadImg.h b/Graphics/ReadImg.h index bd92bc4b2e30d80a77836a044295fb3dcc380c74..e7635e744cf9e1e346685e3eda79ca0f38cf6c7a 100644 --- a/Graphics/ReadImg.h +++ b/Graphics/ReadImg.h @@ -20,6 +20,9 @@ // // Please report all bugs and problems to <gmsh@geuz.org>. -void read_pnm (char *name); +void read_pnm(char *name); +void read_jpeg(char *name); +void read_png(char *name); +void read_bmp(char *name); #endif diff --git a/Parser/OpenFile.cpp b/Parser/OpenFile.cpp index c4b71831954f97badf4c92f35154ad18dbadd929..57bf6cdafed8886b190ffbe53a4548eb27da7297 100644 --- a/Parser/OpenFile.cpp +++ b/Parser/OpenFile.cpp @@ -1,4 +1,4 @@ -// $Id: OpenFile.cpp,v 1.87 2006-01-06 00:34:32 geuzaine Exp $ +// $Id: OpenFile.cpp,v 1.88 2006-01-28 04:50:36 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -267,20 +267,8 @@ int MergeProblem(char *name, int warn_if_missing) } #endif - if(!strcmp(ext, ".ppm") || !strcmp(ext, ".pnm")) { - // An image file is used as an input, we transform it onto a post - // pro file that could be used as a background mesh. We should - // check the first bytes of the file instead of the extension to - // determine the file type. -#if defined(HAVE_FLTK) - read_pnm(name); - SetBoundingBox(); -#endif - status = 0; - } - else if(!strcmp(ext, ".stl") || !strcmp(ext, ".STL") || - !strcmp(ext, ".mesh")) { - if (THEM->bds)delete THEM->bds; + if(!strcmp(ext, ".stl") || !strcmp(ext, ".STL") || !strcmp(ext, ".mesh")) { + if(THEM->bds) delete THEM->bds; THEM->bds = new BDS_Mesh; if(!strcmp(ext, ".mesh")) THEM->bds->read_mesh(name); @@ -294,6 +282,36 @@ int MergeProblem(char *name, int warn_if_missing) SetBoundingBox(); status = THEM->status; } +#if defined(HAVE_FLTK) + else if(!strcmp(ext, ".pnm") || !strcmp(ext, ".PNM") || + !strcmp(ext, ".pbm") || !strcmp(ext, ".PBM") || + !strcmp(ext, ".pgm") || !strcmp(ext, ".PGM") || + !strcmp(ext, ".ppm") || !strcmp(ext, ".PPM")) { + read_pnm(name); + SetBoundingBox(); + status = 0; + } + else if(!strcmp(ext, ".bmp") || !strcmp(ext, ".BMP")) { + read_bmp(name); + SetBoundingBox(); + status = 0; + } +#if defined(HAVE_LIBJPEG) + else if(!strcmp(ext, ".jpg") || !strcmp(ext, ".JPG") || + !strcmp(ext, ".jpeg") || !strcmp(ext, ".JPEG")) { + read_jpeg(name); + SetBoundingBox(); + status = 0; + } +#endif +#if defined(HAVE_LIBPNG) + else if(!strcmp(ext, ".png") || !strcmp(ext, ".PNG")) { + read_png(name); + SetBoundingBox(); + status = 0; + } +#endif +#endif else { fpos_t position; fgetpos(fp, &position); diff --git a/configure b/configure index bb1f617334290d86ef8635b90ecf5d04b9929a24..7e66be69928895a86a484e2d6cb433c4377e2884 100755 --- a/configure +++ b/configure @@ -3502,10 +3502,13 @@ echo "$as_me: error: Could not find fltk-config. Try --with-fltk-prefix?" >&2;} INCLS="${INCLS} `$FLTKCONFIG --use-gl --use-images --cxxflags`" if test "x$enable_jpeg" != "xno"; then - if test "x${JPEG_PREFIX}" != "x"; then - LDFLAGS="-L${JPEG_PREFIX} -L${JPEG_PREFIX}/lib ${LDFLAGS}" - fi - echo "$as_me:$LINENO: checking for main in -ljpeg" >&5 + if expr "${GMSH_LIBS}" : '.*fltk_jpeg.*'; then + FLAGS="-DHAVE_LIBJPEG ${FLAGS}" + else + if test "x${JPEG_PREFIX}" != "x"; then + LDFLAGS="-L${JPEG_PREFIX} -L${JPEG_PREFIX}/lib ${LDFLAGS}" + fi + echo "$as_me:$LINENO: checking for main in -ljpeg" >&5 echo $ECHO_N "checking for main in -ljpeg... $ECHO_C" >&6 if test "${ac_cv_lib_jpeg_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -3569,23 +3572,27 @@ else JPEG="no" fi - if test "x${JPEG}" = "xyes"; then - FLAGS="-DHAVE_LIBJPEG ${FLAGS}" - if test "x${JPEG_PREFIX}" = "x"; then - GMSH_LIBS="${GMSH_LIBS} -ljpeg" - else - GMSH_LIBS="${GMSH_LIBS} -L${JPEG_PREFIX} -L${JPEG_PREFIX}/lib -ljpeg" - INCLS="${INCLS} -I${JPEG_PREFIX} -I${JPEG_PREFIX}/include" + if test "x${JPEG}" = "xyes"; then + FLAGS="-DHAVE_LIBJPEG ${FLAGS}" + if test "x${JPEG_PREFIX}" = "x"; then + GMSH_LIBS="${GMSH_LIBS} -ljpeg" + else + GMSH_LIBS="${GMSH_LIBS} -L${JPEG_PREFIX} -L${JPEG_PREFIX}/lib -ljpeg" + INCLS="${INCLS} -I${JPEG_PREFIX} -I${JPEG_PREFIX}/include" + fi fi fi fi ZLIB="" if test "x$enable_zlib" != "xno"; then - if test "x${ZLIB_PREFIX}" != "x"; then - LDFLAGS="-L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib ${LDFLAGS}" - fi - echo "$as_me:$LINENO: checking for main in -lz" >&5 + if expr "${GMSH_LIBS}" : '.*fltk_z.*'; then + ZLIB="yes" + else + if test "x${ZLIB_PREFIX}" != "x"; then + LDFLAGS="-L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib ${LDFLAGS}" + fi + echo "$as_me:$LINENO: checking for main in -lz" >&5 echo $ECHO_N "checking for main in -lz... $ECHO_C" >&6 if test "${ac_cv_lib_z_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -3649,13 +3656,17 @@ else ZLIB="no" fi + fi fi if test "x$enable_png" != "xno" -a "x${ZLIB}" = "xyes"; then - if test "x${PNG_PREFIX}" != "x"; then - LDFLAGS="-L${PNG_PREFIX} -L${PNG_PREFIX}/lib ${LDFLAGS}" - fi - echo "$as_me:$LINENO: checking for main in -lpng" >&5 + if expr "${GMSH_LIBS}" : '.*fltk_png.*'; then + FLAGS="-DHAVE_LIBPNG ${FLAGS}" + else + if test "x${PNG_PREFIX}" != "x"; then + LDFLAGS="-L${PNG_PREFIX} -L${PNG_PREFIX}/lib ${LDFLAGS}" + fi + echo "$as_me:$LINENO: checking for main in -lpng" >&5 echo $ECHO_N "checking for main in -lpng... $ECHO_C" >&6 if test "${ac_cv_lib_png_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -3719,24 +3730,29 @@ else PNG="no" fi - if test "x${PNG}" = "xyes"; then - FLAGS="-DHAVE_LIBPNG ${FLAGS}" - if test "x${PNG_PREFIX}" = "x"; then - GMSH_LIBS="${GMSH_LIBS} -lpng" - else - GMSH_LIBS="${GMSH_LIBS} -L${PNG_PREFIX} -L${PNG_PREFIX}/lib -lpng" - INCLS="${INCLS} -I${PNG_PREFIX} -I${PNG_PREFIX}/include" + if test "x${PNG}" = "xyes"; then + FLAGS="-DHAVE_LIBPNG ${FLAGS}" + if test "x${PNG_PREFIX}" = "x"; then + GMSH_LIBS="${GMSH_LIBS} -lpng" + else + GMSH_LIBS="${GMSH_LIBS} -L${PNG_PREFIX} -L${PNG_PREFIX}/lib -lpng" + INCLS="${INCLS} -I${PNG_PREFIX} -I${PNG_PREFIX}/include" + fi fi fi fi if test "x${ZLIB}" = "xyes"; then - FLAGS="-DHAVE_LIBZ ${FLAGS}" - if test "x${ZLIB_PREFIX}" = "x"; then - GMSH_LIBS="${GMSH_LIBS} -lz" + if expr "${GMSH_LIBS}" : '.*fltk_z.*'; then + FLAGS="-DHAVE_LIBZ ${FLAGS}" else - GMSH_LIBS="${GMSH_LIBS} -L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib -lz" - INCLS="${INCLS} -I${ZLIB_PREFIX} -I${ZLIB_PREFIX}/include" + FLAGS="-DHAVE_LIBZ ${FLAGS}" + if test "x${ZLIB_PREFIX}" = "x"; then + GMSH_LIBS="${GMSH_LIBS} -lz" + else + GMSH_LIBS="${GMSH_LIBS} -L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib -lz" + INCLS="${INCLS} -I${ZLIB_PREFIX} -I${ZLIB_PREFIX}/include" + fi fi fi diff --git a/configure.in b/configure.in index b7d1c9ae3f748beec060329023548adbb7c03f0c..360a718de42fb2f25e9c77b9ed6370bab7695952 100644 --- a/configure.in +++ b/configure.in @@ -1,4 +1,4 @@ -dnl $Id: configure.in,v 1.85 2006-01-06 00:34:20 geuzaine Exp $ +dnl $Id: configure.in,v 1.86 2006-01-28 04:50:36 geuzaine Exp $ dnl dnl Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle dnl @@ -165,58 +165,78 @@ if test "x$enable_gui" != "xno"; then dnl Check for libjpeg if test "x$enable_jpeg" != "xno"; then - if test "x${JPEG_PREFIX}" != "x"; then - LDFLAGS="-L${JPEG_PREFIX} -L${JPEG_PREFIX}/lib ${LDFLAGS}" - fi - AC_CHECK_LIB(jpeg,main,JPEG="yes",JPEG="no") - if test "x${JPEG}" = "xyes"; then + dnl If provided by FLTK, use that one; otherwise, look for it + if expr "${GMSH_LIBS}" : '.*fltk_jpeg.*'; then FLAGS="-DHAVE_LIBJPEG ${FLAGS}" - if test "x${JPEG_PREFIX}" = "x"; then - GMSH_LIBS="${GMSH_LIBS} -ljpeg" - else - dnl Find the libs/includes even if libjpeg is _not_ properly installed (ugly hack!) - GMSH_LIBS="${GMSH_LIBS} -L${JPEG_PREFIX} -L${JPEG_PREFIX}/lib -ljpeg" - INCLS="${INCLS} -I${JPEG_PREFIX} -I${JPEG_PREFIX}/include" + else + if test "x${JPEG_PREFIX}" != "x"; then + LDFLAGS="-L${JPEG_PREFIX} -L${JPEG_PREFIX}/lib ${LDFLAGS}" fi - fi + AC_CHECK_LIB(jpeg,main,JPEG="yes",JPEG="no") + if test "x${JPEG}" = "xyes"; then + FLAGS="-DHAVE_LIBJPEG ${FLAGS}" + if test "x${JPEG_PREFIX}" = "x"; then + GMSH_LIBS="${GMSH_LIBS} -ljpeg" + else + dnl Find the libs/includes even if libjpeg is _not_ properly installed (ugly hack!) + GMSH_LIBS="${GMSH_LIBS} -L${JPEG_PREFIX} -L${JPEG_PREFIX}/lib -ljpeg" + INCLS="${INCLS} -I${JPEG_PREFIX} -I${JPEG_PREFIX}/include" + fi + fi + fi fi dnl Check for libz ZLIB="" if test "x$enable_zlib" != "xno"; then - if test "x${ZLIB_PREFIX}" != "x"; then - LDFLAGS="-L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib ${LDFLAGS}" + dnl If provided by FLTK, use that one; otherwise, look for it + if expr "${GMSH_LIBS}" : '.*fltk_z.*'; then + ZLIB="yes" + else + if test "x${ZLIB_PREFIX}" != "x"; then + LDFLAGS="-L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib ${LDFLAGS}" + fi + AC_CHECK_LIB(z,main,ZLIB="yes",ZLIB="no") fi - AC_CHECK_LIB(z,main,ZLIB="yes",ZLIB="no") fi dnl Check for libpng (only if libz is available) if test "x$enable_png" != "xno" -a "x${ZLIB}" = "xyes"; then - if test "x${PNG_PREFIX}" != "x"; then - LDFLAGS="-L${PNG_PREFIX} -L${PNG_PREFIX}/lib ${LDFLAGS}" - fi - AC_CHECK_LIB(png,main,PNG="yes",PNG="no") - if test "x${PNG}" = "xyes"; then + dnl If provided by FLTK, use that one; otherwise, look for it + if expr "${GMSH_LIBS}" : '.*fltk_png.*'; then FLAGS="-DHAVE_LIBPNG ${FLAGS}" - if test "x${PNG_PREFIX}" = "x"; then - GMSH_LIBS="${GMSH_LIBS} -lpng" - else - dnl Find the libs/includes even if libjpeg is _not_ properly installed (ugly hack!) - GMSH_LIBS="${GMSH_LIBS} -L${PNG_PREFIX} -L${PNG_PREFIX}/lib -lpng" - INCLS="${INCLS} -I${PNG_PREFIX} -I${PNG_PREFIX}/include" + else + if test "x${PNG_PREFIX}" != "x"; then + LDFLAGS="-L${PNG_PREFIX} -L${PNG_PREFIX}/lib ${LDFLAGS}" + fi + AC_CHECK_LIB(png,main,PNG="yes",PNG="no") + if test "x${PNG}" = "xyes"; then + FLAGS="-DHAVE_LIBPNG ${FLAGS}" + if test "x${PNG_PREFIX}" = "x"; then + GMSH_LIBS="${GMSH_LIBS} -lpng" + else + dnl Find the libs/includes even if libjpeg is _not_ properly installed (ugly hack!) + GMSH_LIBS="${GMSH_LIBS} -L${PNG_PREFIX} -L${PNG_PREFIX}/lib -lpng" + INCLS="${INCLS} -I${PNG_PREFIX} -I${PNG_PREFIX}/include" + fi fi fi fi dnl Complete zlib link line (zlib must be linked in after libpng) if test "x${ZLIB}" = "xyes"; then - FLAGS="-DHAVE_LIBZ ${FLAGS}" - if test "x${ZLIB_PREFIX}" = "x"; then - GMSH_LIBS="${GMSH_LIBS} -lz" + dnl If provided by FLTK, use that one; otherwise, look for it + if expr "${GMSH_LIBS}" : '.*fltk_z.*'; then + FLAGS="-DHAVE_LIBZ ${FLAGS}" else - dnl Find the libs/includes even if libjpeg is _not_ properly installed (ugly hack!) - GMSH_LIBS="${GMSH_LIBS} -L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib -lz" - INCLS="${INCLS} -I${ZLIB_PREFIX} -I${ZLIB_PREFIX}/include" + FLAGS="-DHAVE_LIBZ ${FLAGS}" + if test "x${ZLIB_PREFIX}" = "x"; then + GMSH_LIBS="${GMSH_LIBS} -lz" + else + dnl Find the libs/includes even if libjpeg is _not_ properly installed (ugly hack!) + GMSH_LIBS="${GMSH_LIBS} -L${ZLIB_PREFIX} -L${ZLIB_PREFIX}/lib -lz" + INCLS="${INCLS} -I${ZLIB_PREFIX} -I${ZLIB_PREFIX}/include" + fi fi fi