octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gl-render.cc: framework OpenGL on MacOSX


From: Thomas Treichl
Subject: Re: gl-render.cc: framework OpenGL on MacOSX
Date: Sun, 08 Feb 2009 22:31:27 +0100
User-agent: Thunderbird 2.0.0.19 (Macintosh/20081209)

Ben Abbott schrieb:
Looks good!

Ok, thanks. I attached the changeset to add support for "framework OpenGL" on 
Macs.

Best regards,

  Thomas
# HG changeset patch
# User Thomas Treichl <address@hidden>
# Date 1234128246 -3600
# Node ID 4dd64abe72da6866f16424836518c38c92257469
# Parent  b227213a70c3c2848af47db7e94f1d7bd63d72ff
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions 
HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework 
OpenGL implementation.

diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-02-08  Thomas Treichl  <address@hidden>
+
+       * aclocal.m4 (OCTAVE_GLUTESSCALLBACK_THREEDOTS): New macro.
+       (OCTAVE_OPENGL): Use it in OpenGL check.
+
 2009-02-07  John W. Eaton  <address@hidden>
 
        * octMakefile.in (all): Display $(prefix) in summary message.
diff --git a/aclocal.m4 b/aclocal.m4
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1014,36 +1014,48 @@
 dnl
 dnl Check for OpenGL. If found, define OPENGL_LIBS
 dnl
-dnl FIXME -- add tests for apple
-dnl
 AC_DEFUN([OCTAVE_OPENGL], [
 OPENGL_LIBS=
-case $canonical_host_type in
-   *-*-mingw32* | *-*-msdosmsvc)
-    AC_CHECK_HEADERS(windows.h)
+
+### On MacOSX systems the OpenGL framework can be used
+OCTAVE_HAVE_FRAMEWORK(OpenGL, [
+#include <OpenGL/gl.h>
+#include <OpenGL/glu.h> ], [GLint par; glGetIntegerv (GL_VIEWPORT, &par);],
+  [have_framework_opengl="yes"], [have_framework_opengl="no"])
+
+if test $have_framework_opengl = "yes"; then
+  AC_DEFINE(HAVE_FRAMEWORK_OPENGL, 1, [Define if framework OPENGL is 
available.])
+  OPENGL_LIBS="-Wl,-framework -Wl,OpenGL"
+  AC_MSG_NOTICE([adding -Wl,-framework -Wl,OpenGL to OPENGL_LIBS])
+  OCTAVE_GLUTESSCALLBACK_THREEDOTS
+else
+  case $canonical_host_type in
+    *-*-mingw32* | *-*-msdosmsvc)
+      AC_CHECK_HEADERS(windows.h)
     ;;
-esac
-have_opengl_incs=no
-AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h], [
-  AC_CHECK_HEADERS([GL/glu.h OpenGL/glu.h], [
-    have_opengl_incs=yes; break], [], [
+  esac
+  have_opengl_incs=no
+  AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h], [
+    AC_CHECK_HEADERS([GL/glu.h OpenGL/glu.h], [
+      have_opengl_incs=yes; break], [], [
 #ifdef HAVE_WINDOWS_H
 #include <windows.h>
 #endif
-])
-break
-], [], [
+    ])
+    break
+    ], [], [
 #ifdef HAVE_WINDOWS_H
 #include <windows.h>
 #endif
-])
-if test "$have_opengl_incs" = "yes"; then
-  case $canonical_host_type in
-    *-*-mingw32* | *-*-msdosmsvc)
-      save_LIBS="$LIBS"
-      LIBS="$LIBS -lopengl32"
-      AC_MSG_CHECKING([for glEnable in -lopengl32])
-      AC_TRY_LINK([
+    ])
+
+  if test "$have_opengl_incs" = "yes"; then
+    case $canonical_host_type in
+      *-*-mingw32* | *-*-msdosmsvc)
+        save_LIBS="$LIBS"
+        LIBS="$LIBS -lopengl32"
+        AC_MSG_CHECKING([for glEnable in -lopengl32])
+        AC_TRY_LINK([
 #if HAVE_WINDOWS_H
 #include <windows.h>
 #endif
@@ -1052,24 +1064,46 @@
 #elif defined (HAVE_OPENGL_GL_H)
 #include <OpenGL/gl.h>
 #endif
-], [
-glEnable(GL_SMOOTH);], OPENGL_LIBS="-lopengl32 -lglu32")
-      LIBS="$save_LIBS"
-      if test "x$OPENGL_LIBS" != "x"; then
-        AC_MSG_RESULT(yes)
-      else
-        AC_MSG_RESULT(no)
-      fi
-      ;;
-    *)
-      save_LDFLAGS="$LDFLAGS"
-      LDFLAGS="$LDFLAGS -L/usr/X11R6/lib"
-      AC_CHECK_LIB(GL, glEnable, OPENGL_LIBS="-L/usr/X11R6/lib -lGL -lGLU")
-      LDFLAGS="$save_LDFLAGS"
-      ;;
-  esac
+], [glEnable(GL_SMOOTH);], OPENGL_LIBS="-lopengl32 -lglu32")
+        LIBS="$save_LIBS"
+        if test "x$OPENGL_LIBS" != "x"; then
+          AC_MSG_RESULT(yes)
+        else
+          AC_MSG_RESULT(no)
+        fi
+        ;;
+      *)
+        save_LDFLAGS="$LDFLAGS"
+        LDFLAGS="$LDFLAGS -L/usr/X11R6/lib"
+        AC_CHECK_LIB(GL, glEnable, OPENGL_LIBS="-L/usr/X11R6/lib -lGL -lGLU")
+        LDFLAGS="$save_LDFLAGS"
+        ;;
+    esac
+  fi
 fi
 AC_SUBST(OPENGL_LIBS)
+])
+dnl
+dnl See if function gluTessCallback is called with "(...)"
+dnl
+dnl OCTAVE_GLUTESSCALLBACK_THREEDOTS
+AC_DEFUN(OCTAVE_GLUTESSCALLBACK_THREEDOTS,
+[AC_CACHE_CHECK([whether gluTessCallback is called with "(...)"],
+octave_cv_glutesscallback_threedots,
+[AC_LANG_PUSH(C++)
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#ifdef HAVE_GL_GLU_H
+#include <GL/glu.h>
+#elif defined HAVE_OPENGL_GLU_H || defined HAVE_FRAMEWORK_OPENGL
+#include <OpenGL/glu.h>
+#endif]],
+[[GLvoid (*func)(...); gluTessCallback(0, 0, func);]])],
+octave_cv_glutesscallback_threedots="yes", 
octave_cv_glutesscallback_threedots="no")])
+AC_LANG_POP(C++)
+if test $octave_cv_glutesscallback_threedots = "yes"; then
+  AC_DEFINE(HAVE_GLUTESSCALLBACK_THREEDOTS, 1, 
+    [Define if gluTessCallback is called with (...)])
+fi
 ])
 dnl
 dnl Configure paths for FreeType2
diff --git a/src/ChangeLog b/src/ChangeLog
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
+2009-02-08  Thomas Treichl  <address@hidden>
+
+       * gl-render.h: Use HAVE_FRAMEWORK_OPENGL.
+       * gl-render.cc (opengl_tesselator, opengl_renderer::draw, 
+       opengl_renderer::init_marker): Use HAVE_FRAMEWORK_OPENGL.
+       
+
 2009-02-07  John W. Eaton  <address@hidden>
 
        * parse.y (eval_string): Use the one true evaluator.
diff --git a/src/gl-render.cc b/src/gl-render.cc
--- a/src/gl-render.cc
+++ b/src/gl-render.cc
@@ -221,7 +221,11 @@
 opengl_tesselator
 {
 public:
+#if defined (HAVE_FRAMEWORK_OPENGL) && defined (HAVE_GLUTESSCALLBACK_THREEDOTS)
+  typedef GLvoid (CALLBACK *fcn) (...);
+#else
   typedef void (CALLBACK *fcn) (void);
+#endif
 
 public:
 
@@ -591,7 +595,12 @@
   xZ1 = x_zlim(0)-(x_zlim(1)-x_zlim(0))/2;
   xZ2 = x_zlim(1)+(x_zlim(1)-x_zlim(0))/2;
 
+#if defined (HAVE_FRAMEWORK_OPENGL)
+  GLint vw[4];
+#else
   int vw[4];
+#endif
+
   glGetIntegerv (GL_VIEWPORT, vw);
 
   glMatrixMode (GL_MODELVIEW);
@@ -2672,7 +2681,11 @@
 void
 opengl_renderer::init_marker (const std::string& m, double size, float width)
 {
+#if defined (HAVE_FRAMEWORK_OPENGL)
+  GLint vw[4];
+#else
   int vw[4];
+#endif
 
   glGetIntegerv (GL_VIEWPORT, vw);
 
diff --git a/src/gl-render.h b/src/gl-render.h
--- a/src/gl-render.h
+++ b/src/gl-render.h
@@ -29,13 +29,13 @@
 
 #ifdef HAVE_GL_GL_H
 #include <GL/gl.h>
-#elif defined HAVE_OPENGL_GL_H
+#elif defined HAVE_OPENGL_GL_H || defined HAVE_FRAMEWORK_OPENGL
 #include <OpenGL/gl.h>
 #endif
 
 #ifdef HAVE_GL_GLU_H
 #include <GL/glu.h>
-#elif defined HAVE_OPENGL_GLU_H
+#elif defined HAVE_OPENGL_GLU_H || defined HAVE_FRAMEWORK_OPENGL
 #include <OpenGL/glu.h>
 #endif
 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]