Added GLUT_ALLOW_NEGATIVE_WINDOW_POSITION so windows can be created with negative position coordinates.
(cherry picked from commite7f38b763f
) (cherry picked from commite7f38b763f
) git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1775 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
f0facfc489
commit
d898bfe4c6
@ -90,6 +90,8 @@
|
|||||||
|
|
||||||
#define GLUT_STROKE_FONT_DRAW_JOIN_DOTS 0x0206 /* Draw dots between line segments of stroke fonts? */
|
#define GLUT_STROKE_FONT_DRAW_JOIN_DOTS 0x0206 /* Draw dots between line segments of stroke fonts? */
|
||||||
|
|
||||||
|
#define GLUT_ALLOW_NEGATIVE_WINDOW_POSITION 0x0207 /* GLUT doesn't allow negative window positions by default */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* New tokens for glutInitDisplayMode.
|
* New tokens for glutInitDisplayMode.
|
||||||
* Only one GLUT_AUXn bit may be used at a time.
|
* Only one GLUT_AUXn bit may be used at a time.
|
||||||
|
@ -88,6 +88,7 @@ SFG_State fgState = { { -1, -1, GL_FALSE }, /* Position */
|
|||||||
4, /* SampleNumber */
|
4, /* SampleNumber */
|
||||||
GL_FALSE, /* SkipStaleMotion */
|
GL_FALSE, /* SkipStaleMotion */
|
||||||
GL_FALSE, /* StrokeFontDrawJoinDots */
|
GL_FALSE, /* StrokeFontDrawJoinDots */
|
||||||
|
GL_FALSE, /* AllowNegativeWindowPosition */
|
||||||
1, /* OpenGL context MajorVersion */
|
1, /* OpenGL context MajorVersion */
|
||||||
0, /* OpenGL context MinorVersion */
|
0, /* OpenGL context MinorVersion */
|
||||||
0, /* OpenGL ContextFlags */
|
0, /* OpenGL ContextFlags */
|
||||||
@ -370,10 +371,10 @@ void FGAPIENTRY glutInit( int* pargc, char** argv )
|
|||||||
if( (mask & (WidthValue|HeightValue)) == (WidthValue|HeightValue) )
|
if( (mask & (WidthValue|HeightValue)) == (WidthValue|HeightValue) )
|
||||||
fgState.Size.Use = GL_TRUE;
|
fgState.Size.Use = GL_TRUE;
|
||||||
|
|
||||||
if( mask & XNegative )
|
if( ( mask & XNegative ) && !fgState.AllowNegativeWindowPosition )
|
||||||
fgState.Position.X += fgDisplay.ScreenWidth - fgState.Size.X;
|
fgState.Position.X += fgDisplay.ScreenWidth - fgState.Size.X;
|
||||||
|
|
||||||
if( mask & YNegative )
|
if( ( mask & YNegative ) && !fgState.AllowNegativeWindowPosition )
|
||||||
fgState.Position.Y += fgDisplay.ScreenHeight - fgState.Size.Y;
|
fgState.Position.Y += fgDisplay.ScreenHeight - fgState.Size.Y;
|
||||||
|
|
||||||
if( (mask & (XValue|YValue)) == (XValue|YValue) )
|
if( (mask & (XValue|YValue)) == (XValue|YValue) )
|
||||||
@ -397,7 +398,7 @@ void FGAPIENTRY glutInitWindowPosition( int x, int y )
|
|||||||
fgState.Position.X = x;
|
fgState.Position.X = x;
|
||||||
fgState.Position.Y = y;
|
fgState.Position.Y = y;
|
||||||
|
|
||||||
if( ( x >= 0 ) && ( y >= 0 ) )
|
if( ( ( x >= 0 ) && ( y >= 0 ) ) || fgState.AllowNegativeWindowPosition )
|
||||||
fgState.Position.Use = GL_TRUE;
|
fgState.Position.Use = GL_TRUE;
|
||||||
else
|
else
|
||||||
fgState.Position.Use = GL_FALSE;
|
fgState.Position.Use = GL_FALSE;
|
||||||
|
@ -354,6 +354,7 @@ struct tagSFG_State
|
|||||||
GLboolean SkipStaleMotion; /* skip stale motion events */
|
GLboolean SkipStaleMotion; /* skip stale motion events */
|
||||||
|
|
||||||
GLboolean StrokeFontDrawJoinDots;/* Draw dots between line segments of stroke fonts? */
|
GLboolean StrokeFontDrawJoinDots;/* Draw dots between line segments of stroke fonts? */
|
||||||
|
GLboolean AllowNegativeWindowPosition; /* GLUT, by default, doesn't allow negative window positions. Enable it? */
|
||||||
|
|
||||||
int MajorVersion; /* Major OpenGL context version */
|
int MajorVersion; /* Major OpenGL context version */
|
||||||
int MinorVersion; /* Minor OpenGL context version */
|
int MinorVersion; /* Minor OpenGL context version */
|
||||||
|
@ -122,6 +122,10 @@ void FGAPIENTRY glutSetOption( GLenum eWhat, int value )
|
|||||||
fgState.StrokeFontDrawJoinDots = !!value;
|
fgState.StrokeFontDrawJoinDots = !!value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case GLUT_ALLOW_NEGATIVE_WINDOW_POSITION:
|
||||||
|
fgState.AllowNegativeWindowPosition = !!value;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fgWarning( "glutSetOption(): missing enum handle %d", eWhat );
|
fgWarning( "glutSetOption(): missing enum handle %d", eWhat );
|
||||||
break;
|
break;
|
||||||
@ -225,6 +229,9 @@ int FGAPIENTRY glutGet( GLenum eWhat )
|
|||||||
case GLUT_STROKE_FONT_DRAW_JOIN_DOTS:
|
case GLUT_STROKE_FONT_DRAW_JOIN_DOTS:
|
||||||
return fgState.StrokeFontDrawJoinDots;
|
return fgState.StrokeFontDrawJoinDots;
|
||||||
|
|
||||||
|
case GLUT_ALLOW_NEGATIVE_WINDOW_POSITION:
|
||||||
|
return fgState.AllowNegativeWindowPosition;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return fgPlatformGlutGet ( eWhat );
|
return fgPlatformGlutGet ( eWhat );
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user