Merge remote-tracking branch 'svn/trunk' into git_master
This commit is contained in:
commit
04390fdd5c
@ -228,6 +228,9 @@ IF(WIN32)
|
|||||||
SET( CMAKE_DEBUG_POSTFIX "d" )
|
SET( CMAKE_DEBUG_POSTFIX "d" )
|
||||||
ENDIF(MSVC)
|
ENDIF(MSVC)
|
||||||
|
|
||||||
|
# enable the use of Win2000 APIs (needed for really old compilers like MSVC6)
|
||||||
|
ADD_DEFINITIONS(-D_WIN32_WINNT=0x0500)
|
||||||
|
ADD_DEFINITIONS(-DWINVER=0x0500)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
IF(CMAKE_COMPILER_IS_GNUCC)
|
IF(CMAKE_COMPILER_IS_GNUCC)
|
||||||
|
@ -3,6 +3,10 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "glmatrix.h"
|
#include "glmatrix.h"
|
||||||
|
|
||||||
|
#ifndef M_PI
|
||||||
|
#define M_PI 3.141592653589793
|
||||||
|
#endif
|
||||||
|
|
||||||
#define MMODE_IDX(x) ((x) - GL_MODELVIEW)
|
#define MMODE_IDX(x) ((x) - GL_MODELVIEW)
|
||||||
#define MAT_STACK_SIZE 32
|
#define MAT_STACK_SIZE 32
|
||||||
#define MAT_IDENT {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}
|
#define MAT_IDENT {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}
|
||||||
@ -114,17 +118,17 @@ void gl_scalef(float x, float y, float z)
|
|||||||
gl_mult_matrixf(mat);
|
gl_mult_matrixf(mat);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gl_ortho(float left, float right, float bottom, float top, float near, float far)
|
void gl_ortho(float left, float right, float bottom, float top, float znear, float zfar)
|
||||||
{
|
{
|
||||||
float mat[] = MAT_IDENT;
|
float mat[] = MAT_IDENT;
|
||||||
|
|
||||||
float dx = right - left;
|
float dx = right - left;
|
||||||
float dy = top - bottom;
|
float dy = top - bottom;
|
||||||
float dz = far - near;
|
float dz = zfar - znear;
|
||||||
|
|
||||||
float tx = -(right + left) / dx;
|
float tx = -(right + left) / dx;
|
||||||
float ty = -(top + bottom) / dy;
|
float ty = -(top + bottom) / dy;
|
||||||
float tz = -(far + near) / dz;
|
float tz = -(zfar + znear) / dz;
|
||||||
|
|
||||||
float sx = 2.f / dx;
|
float sx = 2.f / dx;
|
||||||
float sy = 2.f / dy;
|
float sy = 2.f / dy;
|
||||||
@ -140,21 +144,21 @@ void gl_ortho(float left, float right, float bottom, float top, float near, floa
|
|||||||
gl_mult_matrixf(mat);
|
gl_mult_matrixf(mat);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gl_frustum(float left, float right, float bottom, float top, float near, float far)
|
void gl_frustum(float left, float right, float bottom, float top, float znear, float zfar)
|
||||||
{
|
{
|
||||||
float mat[] = MAT_IDENT;
|
float mat[] = MAT_IDENT;
|
||||||
|
|
||||||
float dx = right - left;
|
float dx = right - left;
|
||||||
float dy = top - bottom;
|
float dy = top - bottom;
|
||||||
float dz = far - near;
|
float dz = zfar - znear;
|
||||||
|
|
||||||
float a = (right + left) / dx;
|
float a = (right + left) / dx;
|
||||||
float b = (top + bottom) / dy;
|
float b = (top + bottom) / dy;
|
||||||
float c = -(far + near) / dz;
|
float c = -(zfar + znear) / dz;
|
||||||
float d = -2.f * far * near / dz;
|
float d = -2.f * zfar * znear / dz;
|
||||||
|
|
||||||
mat[0] = 2.f * near / dx;
|
mat[0] = 2.f * znear / dx;
|
||||||
mat[5] = 2.f * near / dy;
|
mat[5] = 2.f * znear / dy;
|
||||||
mat[8] = a;
|
mat[8] = a;
|
||||||
mat[9] = b;
|
mat[9] = b;
|
||||||
mat[10] = c;
|
mat[10] = c;
|
||||||
@ -165,11 +169,11 @@ void gl_frustum(float left, float right, float bottom, float top, float near, fl
|
|||||||
gl_mult_matrixf(mat);
|
gl_mult_matrixf(mat);
|
||||||
}
|
}
|
||||||
|
|
||||||
void glu_perspective(float vfov, float aspect, float near, float far)
|
void glu_perspective(float vfov, float aspect, float znear, float zfar)
|
||||||
{
|
{
|
||||||
float vfov_rad = (float)M_PI * vfov / 180.f;
|
float vfov_rad = (float)M_PI * vfov / 180.f;
|
||||||
float x = near * (float)tan(vfov_rad / 2.f);
|
float x = znear * (float)tan(vfov_rad / 2.f);
|
||||||
gl_frustum(-aspect * x, aspect * x, -x, x, near, far);
|
gl_frustum(-aspect * x, aspect * x, -x, x, znear, zfar);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return the matrix (16 elements, 4x4 matrix, row-major order */
|
/* return the matrix (16 elements, 4x4 matrix, row-major order */
|
||||||
|
@ -20,9 +20,9 @@ void gl_mult_matrixf(const float *mat);
|
|||||||
void gl_translatef(float x, float y, float z);
|
void gl_translatef(float x, float y, float z);
|
||||||
void gl_rotatef(float angle, float x, float y, float z);
|
void gl_rotatef(float angle, float x, float y, float z);
|
||||||
void gl_scalef(float x, float y, float z);
|
void gl_scalef(float x, float y, float z);
|
||||||
void gl_ortho(float left, float right, float bottom, float top, float near, float far);
|
void gl_ortho(float left, float right, float bottom, float top, float znear, float zfar);
|
||||||
void gl_frustum(float left, float right, float bottom, float top, float near, float far);
|
void gl_frustum(float left, float right, float bottom, float top, float znear, float zfar);
|
||||||
void glu_perspective(float vfov, float aspect, float near, float far);
|
void glu_perspective(float vfov, float aspect, float znear, float zfar);
|
||||||
|
|
||||||
/* getters */
|
/* getters */
|
||||||
float* get_matrix(int mm);
|
float* get_matrix(int mm);
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
#include "glmatrix.h"
|
#include "glmatrix.h"
|
||||||
|
|
||||||
|
@ -184,7 +184,7 @@ static struct WM_MESSAGE_MAP allMessages[] =
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
# if(_WIN32_WINNT >= 0x0500)
|
# if(_WIN32_WINNT >= 0x0500) && defined(WM_NCXBUTTONDOWN)
|
||||||
DEFINE_MESSAGE(WM_NCXBUTTONDOWN),
|
DEFINE_MESSAGE(WM_NCXBUTTONDOWN),
|
||||||
DEFINE_MESSAGE(WM_NCXBUTTONUP),
|
DEFINE_MESSAGE(WM_NCXBUTTONUP),
|
||||||
DEFINE_MESSAGE(WM_NCXBUTTONDBLCLK),
|
DEFINE_MESSAGE(WM_NCXBUTTONDBLCLK),
|
||||||
@ -241,7 +241,7 @@ static struct WM_MESSAGE_MAP allMessages[] =
|
|||||||
DEFINE_MESSAGE(WM_UNINITMENUPOPUP),
|
DEFINE_MESSAGE(WM_UNINITMENUPOPUP),
|
||||||
DEFINE_MESSAGE(WM_MENUCOMMAND),
|
DEFINE_MESSAGE(WM_MENUCOMMAND),
|
||||||
|
|
||||||
# if(_WIN32_WINNT >= 0x0500)
|
# if(_WIN32_WINNT >= 0x0500) && defined(WM_CHANGEUISTATE)
|
||||||
DEFINE_MESSAGE(WM_CHANGEUISTATE),
|
DEFINE_MESSAGE(WM_CHANGEUISTATE),
|
||||||
DEFINE_MESSAGE(WM_UPDATEUISTATE),
|
DEFINE_MESSAGE(WM_UPDATEUISTATE),
|
||||||
DEFINE_MESSAGE(WM_QUERYUISTATE),
|
DEFINE_MESSAGE(WM_QUERYUISTATE),
|
||||||
@ -272,7 +272,7 @@ static struct WM_MESSAGE_MAP allMessages[] =
|
|||||||
# if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
|
# if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
|
||||||
DEFINE_MESSAGE(WM_MOUSEWHEEL),
|
DEFINE_MESSAGE(WM_MOUSEWHEEL),
|
||||||
# endif
|
# endif
|
||||||
# if (_WIN32_WINNT >= 0x0500)
|
# if (_WIN32_WINNT >= 0x0500) && defined(WM_XBUTTONDOWN)
|
||||||
DEFINE_MESSAGE(WM_XBUTTONDOWN),
|
DEFINE_MESSAGE(WM_XBUTTONDOWN),
|
||||||
DEFINE_MESSAGE(WM_XBUTTONUP),
|
DEFINE_MESSAGE(WM_XBUTTONUP),
|
||||||
DEFINE_MESSAGE(WM_XBUTTONDBLCLK),
|
DEFINE_MESSAGE(WM_XBUTTONDBLCLK),
|
||||||
@ -364,7 +364,7 @@ static struct WM_MESSAGE_MAP allMessages[] =
|
|||||||
DEFINE_MESSAGE(WM_MOUSEHOVER),
|
DEFINE_MESSAGE(WM_MOUSEHOVER),
|
||||||
DEFINE_MESSAGE(WM_MOUSELEAVE),
|
DEFINE_MESSAGE(WM_MOUSELEAVE),
|
||||||
# endif
|
# endif
|
||||||
# if(WINVER >= 0x0500)
|
# if(WINVER >= 0x0500) && defined(WM_NCMOUSEHOVER)
|
||||||
DEFINE_MESSAGE(WM_NCMOUSEHOVER),
|
DEFINE_MESSAGE(WM_NCMOUSEHOVER),
|
||||||
DEFINE_MESSAGE(WM_NCMOUSELEAVE),
|
DEFINE_MESSAGE(WM_NCMOUSELEAVE),
|
||||||
# endif /* WINVER >= 0x0500 */
|
# endif /* WINVER >= 0x0500 */
|
||||||
@ -398,7 +398,7 @@ static struct WM_MESSAGE_MAP allMessages[] =
|
|||||||
DEFINE_MESSAGE(WM_PRINTCLIENT),
|
DEFINE_MESSAGE(WM_PRINTCLIENT),
|
||||||
# endif /* WINVER >= 0x0400 */
|
# endif /* WINVER >= 0x0400 */
|
||||||
|
|
||||||
# if(_WIN32_WINNT >= 0x0500)
|
# if(_WIN32_WINNT >= 0x0500) && defined(WM_APPCOMMAND)
|
||||||
DEFINE_MESSAGE(WM_APPCOMMAND),
|
DEFINE_MESSAGE(WM_APPCOMMAND),
|
||||||
# endif /* _WIN32_WINNT >= 0x0500 */
|
# endif /* _WIN32_WINNT >= 0x0500 */
|
||||||
|
|
||||||
@ -1283,7 +1283,7 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
|||||||
*/
|
*/
|
||||||
#else
|
#else
|
||||||
/* int modkeys = GET_KEYSTATE_WPARAM( wParam ); */
|
/* int modkeys = GET_KEYSTATE_WPARAM( wParam ); */
|
||||||
short ticks = GET_WHEEL_DELTA_WPARAM( wParam );
|
short ticks = HIWORD( wParam );
|
||||||
/* commented out as should not be needed here, mouse motion is processed in WM_MOUSEMOVE first:
|
/* commented out as should not be needed here, mouse motion is processed in WM_MOUSEMOVE first:
|
||||||
window->State.MouseX = GET_X_LPARAM( lParam );
|
window->State.MouseX = GET_X_LPARAM( lParam );
|
||||||
window->State.MouseY = GET_Y_LPARAM( lParam );
|
window->State.MouseY = GET_Y_LPARAM( lParam );
|
||||||
|
@ -352,17 +352,16 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title,
|
|||||||
|
|
||||||
XSetWMProtocols( fgDisplay.pDisplay.Display, window->Window.Handle,
|
XSetWMProtocols( fgDisplay.pDisplay.Display, window->Window.Handle,
|
||||||
&fgDisplay.pDisplay.DeleteWindow, 1 );
|
&fgDisplay.pDisplay.DeleteWindow, 1 );
|
||||||
|
|
||||||
if (!isSubWindow && !window->IsMenu &&
|
if (!isSubWindow && !window->IsMenu &&
|
||||||
((fgState.DisplayMode & GLUT_BORDERLESS) || (fgState.DisplayMode & GLUT_CAPTIONLESS)))
|
((fgState.DisplayMode & GLUT_BORDERLESS) || (fgState.DisplayMode & GLUT_CAPTIONLESS)))
|
||||||
{
|
{
|
||||||
/* _MOTIF_WM_HINTS is replaced by _NET_WM_WINDOW_TYPE, but that property does not allow precise
|
/* _MOTIF_WM_HINTS is replaced by _NET_WM_WINDOW_TYPE, but that property does not allow precise
|
||||||
* control over the visual style of the window, which is what we are trying to achieve here.
|
* control over the visual style of the window, which is what we are trying to achieve here.
|
||||||
* Stick with Motif and hope for the best... */
|
* Stick with Motif and hope for the best... */
|
||||||
MotifWmHints hints = {0};
|
MotifWmHints hints = {0};
|
||||||
hints.flags = MWM_HINTS_DECORATIONS;
|
hints.flags = MWM_HINTS_DECORATIONS;
|
||||||
hints.decorations = (fgState.DisplayMode & GLUT_CAPTIONLESS) ? MWM_DECOR_BORDER:0;
|
hints.decorations = (fgState.DisplayMode & GLUT_CAPTIONLESS) ? MWM_DECOR_BORDER:0;
|
||||||
printf("%i\n",hints.decorations);
|
|
||||||
|
|
||||||
XChangeProperty(fgDisplay.pDisplay.Display, window->Window.Handle,
|
XChangeProperty(fgDisplay.pDisplay.Display, window->Window.Handle,
|
||||||
XInternAtom( fgDisplay.pDisplay.Display, "_MOTIF_WM_HINTS", False ),
|
XInternAtom( fgDisplay.pDisplay.Display, "_MOTIF_WM_HINTS", False ),
|
||||||
@ -370,7 +369,7 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title,
|
|||||||
PropModeReplace,
|
PropModeReplace,
|
||||||
(unsigned char*) &hints,
|
(unsigned char*) &hints,
|
||||||
sizeof(MotifWmHints) / sizeof(long));
|
sizeof(MotifWmHints) / sizeof(long));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (fgDisplay.pDisplay.NetWMSupported
|
if (fgDisplay.pDisplay.NetWMSupported
|
||||||
|
Reference in New Issue
Block a user