Incorporated next version of PUI.
This commit is contained in:
parent
dbcecbd3b8
commit
06ab581edb
5 changed files with 121 additions and 58 deletions
|
@ -32,7 +32,7 @@ puSlider *rspeedSlider;
|
|||
* *
|
||||
\***********************************/
|
||||
|
||||
GLfloat light_diffuse [] = {1.0, 0.0, 0.0, 1.0} ; /* Red diffuse light. */
|
||||
GLfloat light_diffuse [] = {0.0, 1.0, 0.0, 1.0} ; /* Red diffuse light. */
|
||||
GLfloat light_position[] = {1.0, 1.0, 1.0, 0.0} ; /* Infinite light location. */
|
||||
|
||||
GLfloat cube_n[6][3] = /* Normals */
|
||||
|
@ -273,9 +273,11 @@ void sliderCB( puObject *sliderObj)
|
|||
|
||||
int main ( int argc, char **argv )
|
||||
{
|
||||
|
||||
firsttime = TRUE;
|
||||
|
||||
#ifdef VOODOO
|
||||
glutInitWindowPosition( 0, 0 ) ;
|
||||
#endif
|
||||
glutInitWindowSize ( 640, 480 ) ;
|
||||
glutInit ( &argc, argv ) ;
|
||||
glutInitDisplayMode ( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH ) ;
|
||||
|
@ -290,12 +292,12 @@ int main ( int argc, char **argv )
|
|||
|
||||
puInit () ;
|
||||
|
||||
#ifdef USING_3DFX
|
||||
#ifdef VOODOO
|
||||
puShowCursor () ;
|
||||
#endif
|
||||
|
||||
puSetDefaultStyle ( PUSTYLE_SMALL_SHADED ) ;
|
||||
puSetDefaultColourScheme ( 0.8, 0.2, 0.2 ) ;
|
||||
puSetDefaultColourScheme ( 0.8, 0.8, 0.8 ) ;
|
||||
|
||||
timer_text = new puText ( 300, 10 ) ;
|
||||
timer_text -> setColour ( PUCOL_LABEL, 1.0, 1.0, 1.0 ) ;
|
||||
|
|
18
PUI/pu.cxx
18
PUI/pu.cxx
|
@ -223,21 +223,23 @@ void puInit ( void )
|
|||
|
||||
int *tempSize = &fontSize[1];
|
||||
|
||||
if ( ! GetCharWidth32 ( hdc, 1, 255, tempSize ) )
|
||||
if ( ! GetCharWidth32 ( hdc, 1, 255, tempSize ) &&
|
||||
! GetCharWidth ( hdc, 1, 255, tempSize ) )
|
||||
{
|
||||
LPVOID lpMsgBuf ;
|
||||
|
||||
FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||
FORMAT_MESSAGE_FROM_SYSTEM,
|
||||
NULL,
|
||||
GetLastError(),
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||
(LPTSTR) &lpMsgBuf,
|
||||
0, NULL ) ;
|
||||
FORMAT_MESSAGE_FROM_SYSTEM,
|
||||
NULL,
|
||||
GetLastError(),
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||
(LPTSTR) &lpMsgBuf,
|
||||
0, NULL ) ;
|
||||
|
||||
fprintf ( stderr, "PUI: Error: %s\n" (char *)lpMsgBuf ) ;
|
||||
fprintf ( stderr, "PUI: Error: %s\n", (char *)lpMsgBuf ) ;
|
||||
LocalFree ( lpMsgBuf ) ;
|
||||
}
|
||||
|
||||
wglUseFontBitmaps ( hdc, 0, 256, fontBase ) ;
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -117,27 +117,27 @@ void puBox::draw ( int dx, int dy, int style, puColour colour[], int am_default
|
|||
glColor4fv( colour [ mid ] );
|
||||
glVertex2i( dx + min[0] + PU_SMALL_BEVEL , dy + min[1] + PU_SMALL_BEVEL );
|
||||
if(style==PUSTYLE_SMALL_SHADED)
|
||||
glColor4f( colour [mid][0] + (colour[lo][0] - colour[mid][0])/2.0,
|
||||
colour [mid][1] + (colour[lo][1] - colour[mid][1])/2.0,
|
||||
colour [mid][2] + (colour[lo][2] - colour[mid][2])/2.0,
|
||||
glColor4f( colour [mid][0] + (colour[lo][0] - colour[mid][0])/2.0f,
|
||||
colour [mid][1] + (colour[lo][1] - colour[mid][1])/2.0f,
|
||||
colour [mid][2] + (colour[lo][2] - colour[mid][2])/2.0f,
|
||||
colour [lo][3] );
|
||||
else
|
||||
glColor4f( colour [mid][0] + (colour[hi][0] - colour[mid][0])/2.0,
|
||||
colour [mid][1] + (colour[hi][1] - colour[mid][1])/2.0,
|
||||
colour [mid][2] + (colour[hi][2] - colour[mid][2])/2.0,
|
||||
glColor4f( colour [mid][0] + (colour[hi][0] - colour[mid][0])/2.0f,
|
||||
colour [mid][1] + (colour[hi][1] - colour[mid][1])/2.0f,
|
||||
colour [mid][2] + (colour[hi][2] - colour[mid][2])/2.0f,
|
||||
colour [hi][3] );
|
||||
glVertex2i( dx + min[0] + PU_SMALL_BEVEL , dy + max[1] - PU_SMALL_BEVEL );
|
||||
glColor4fv( colour [ mid ] );
|
||||
glVertex2i( dx + max[0] - PU_SMALL_BEVEL , dy + max[1] - PU_SMALL_BEVEL );
|
||||
if(style==-PUSTYLE_SMALL_SHADED)
|
||||
glColor4f( colour [mid][0] + (colour[lo][0] - colour[mid][0])/2.0,
|
||||
colour [mid][1] + (colour[lo][1] - colour[mid][1])/2.0,
|
||||
colour [mid][2] + (colour[lo][2] - colour[mid][2])/2.0,
|
||||
glColor4f( colour [mid][0] + (colour[lo][0] - colour[mid][0])/2.0f,
|
||||
colour [mid][1] + (colour[lo][1] - colour[mid][1])/2.0f,
|
||||
colour [mid][2] + (colour[lo][2] - colour[mid][2])/2.0f,
|
||||
colour [lo][3] );
|
||||
else
|
||||
glColor4f( colour [mid][0] + (colour[hi][0] - colour[mid][0])/2.0,
|
||||
colour [mid][1] + (colour[hi][1] - colour[mid][1])/2.0,
|
||||
colour [mid][2] + (colour[hi][2] - colour[mid][2])/2.0,
|
||||
glColor4f( colour [mid][0] + (colour[hi][0] - colour[mid][0])/2.0f,
|
||||
colour [mid][1] + (colour[hi][1] - colour[mid][1])/2.0f,
|
||||
colour [mid][2] + (colour[hi][2] - colour[mid][2])/2.0f,
|
||||
colour [hi][3] );
|
||||
glVertex2i( dx + max[0] - PU_SMALL_BEVEL , dy + min[1] + PU_SMALL_BEVEL );
|
||||
glEnd();
|
||||
|
@ -201,27 +201,27 @@ void puBox::draw ( int dx, int dy, int style, puColour colour[], int am_default
|
|||
glColor4fv( colour [ mid ] );
|
||||
glVertex2i( dx + min[0] + PU_BEVEL , dy + min[1] + PU_BEVEL );
|
||||
if(style==PUSTYLE_SHADED)
|
||||
glColor4f( colour [mid][0] + (colour[lo][0] - colour[mid][0])/2.0,
|
||||
colour [mid][1] + (colour[lo][1] - colour[mid][1])/2.0,
|
||||
colour [mid][2] + (colour[lo][2] - colour[mid][2])/2.0,
|
||||
glColor4f( colour [mid][0] + (colour[lo][0] - colour[mid][0])/2.0f,
|
||||
colour [mid][1] + (colour[lo][1] - colour[mid][1])/2.0f,
|
||||
colour [mid][2] + (colour[lo][2] - colour[mid][2])/2.0f,
|
||||
colour [lo][3] );
|
||||
else
|
||||
glColor4f( colour [mid][0] + (colour[hi][0] - colour[mid][0])/2.0,
|
||||
colour [mid][1] + (colour[hi][1] - colour[mid][1])/2.0,
|
||||
colour [mid][2] + (colour[hi][2] - colour[mid][2])/2.0,
|
||||
glColor4f( colour [mid][0] + (colour[hi][0] - colour[mid][0])/2.0f,
|
||||
colour [mid][1] + (colour[hi][1] - colour[mid][1])/2.0f,
|
||||
colour [mid][2] + (colour[hi][2] - colour[mid][2])/2.0f,
|
||||
colour [hi][3] );
|
||||
glVertex2i( dx + min[0] + PU_BEVEL , dy + max[1] - PU_BEVEL );
|
||||
glColor4fv( colour [ mid ] );
|
||||
glVertex2i( dx + max[0] - PU_BEVEL , dy + max[1] - PU_BEVEL );
|
||||
if(style==-PUSTYLE_SHADED)
|
||||
glColor4f( colour [mid][0] + (colour[lo][0] - colour[mid][0])/2.0,
|
||||
colour [mid][1] + (colour[lo][1] - colour[mid][1])/2.0,
|
||||
colour [mid][2] + (colour[lo][2] - colour[mid][2])/2.0,
|
||||
glColor4f( colour [mid][0] + (colour[lo][0] - colour[mid][0])/2.0f,
|
||||
colour [mid][1] + (colour[lo][1] - colour[mid][1])/2.0f,
|
||||
colour [mid][2] + (colour[lo][2] - colour[mid][2])/2.0f,
|
||||
colour [lo][3] );
|
||||
else
|
||||
glColor4f( colour [mid][0] + (colour[hi][0] - colour[mid][0])/2.0,
|
||||
colour [mid][1] + (colour[hi][1] - colour[mid][1])/2.0,
|
||||
colour [mid][2] + (colour[hi][2] - colour[mid][2])/2.0,
|
||||
glColor4f( colour [mid][0] + (colour[hi][0] - colour[mid][0])/2.0f,
|
||||
colour [mid][1] + (colour[hi][1] - colour[mid][1])/2.0f,
|
||||
colour [mid][2] + (colour[hi][2] - colour[mid][2])/2.0f,
|
||||
colour [hi][3] );
|
||||
glVertex2i( dx + max[0] - PU_BEVEL , dy + min[1] + PU_BEVEL );
|
||||
glEnd();
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
|
||||
|
||||
#include "puLocal.h"
|
||||
|
||||
void puButton::draw ( int dx, int dy )
|
||||
|
@ -7,8 +8,15 @@ void puButton::draw ( int dx, int dy )
|
|||
|
||||
/* If button is pushed or highlighted - use inverse style for button itself */
|
||||
|
||||
abox . draw ( dx, dy, ( getValue() ^ highlighted ) ? -style : style, colour,
|
||||
isReturnDefault() ) ;
|
||||
int tempStyle;
|
||||
|
||||
if ( parent && ( ( parent->getType() & PUCLASS_POPUPMENU ) ||
|
||||
( parent->getType() & PUCLASS_MENUBAR ) ) )
|
||||
tempStyle = ( getValue() ^ highlighted ) ? PUSTYLE_SMALL_SHADED : style ;
|
||||
else
|
||||
tempStyle = ( getValue() ^ highlighted ) ? -style : style ;
|
||||
|
||||
abox . draw ( dx, dy, tempStyle, colour, isReturnDefault() ) ;
|
||||
|
||||
/* If greyed out then halve the opacity when drawing the label and legend */
|
||||
|
||||
|
@ -33,6 +41,8 @@ void puButton::draw ( int dx, int dy )
|
|||
|
||||
void puButton::doHit ( int button, int updown, int, int )
|
||||
{
|
||||
|
||||
|
||||
if ( button == PU_LEFT_BUTTON )
|
||||
{
|
||||
if ( updown == active_mouse_edge || active_mouse_edge == PU_UP_AND_DOWN )
|
||||
|
@ -48,3 +58,4 @@ void puButton::doHit ( int button, int updown, int, int )
|
|||
lowlight () ;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
#include "puLocal.h"
|
||||
|
||||
#define PUMENU_BUTTON_HEIGHT 25
|
||||
|
@ -26,17 +25,30 @@ void puPopupMenu::close ( void )
|
|||
int widest = 0 ;
|
||||
puObject *ob = dlist ;
|
||||
|
||||
/*
|
||||
* June 17th, 1998, Shammi
|
||||
* There seems to be some mismatch with the
|
||||
* #define pumenusize and the actual size
|
||||
* There seems to be some overlap resulting
|
||||
* in more than one option being highlighted.
|
||||
* By setting the size to the actual values,
|
||||
* the overlap area seems to be less now.
|
||||
*/
|
||||
|
||||
int w, h ;
|
||||
|
||||
for ( ob = dlist ; ob != NULL ; ob = ob -> next )
|
||||
{
|
||||
int w, h ;
|
||||
|
||||
ob -> getSize ( &w, &h ) ;
|
||||
|
||||
if ( w > widest ) widest = w ;
|
||||
}
|
||||
|
||||
for ( ob = dlist ; ob != NULL ; ob = ob -> next )
|
||||
ob -> setSize ( widest, PUMENU_BUTTON_HEIGHT ) ;
|
||||
{
|
||||
ob -> getSize ( &w, &h ) ;
|
||||
ob -> setSize ( widest, h ) ;
|
||||
}
|
||||
|
||||
recalc_bbox () ;
|
||||
}
|
||||
|
@ -84,18 +96,11 @@ int puPopupMenu::checkHit ( int button, int updown, int x, int y )
|
|||
|
||||
int hit = isHit ( x, y ) ;
|
||||
|
||||
if ( updown == active_mouse_edge || active_mouse_edge == PU_UP_AND_DOWN )
|
||||
{
|
||||
hide () ;
|
||||
|
||||
/* Turn everything off ready for next time. */
|
||||
|
||||
for ( puObject *bo = dlist ; bo != NULL ; bo = bo->next )
|
||||
bo -> clrValue () ;
|
||||
}
|
||||
|
||||
if ( ! hit )
|
||||
return FALSE ;
|
||||
/*
|
||||
* June 17th, 1998, Shammi :
|
||||
* There seemed to be a miscalculation with the menus initially
|
||||
* Therefore I moved the recalculation stuff before the clearing.
|
||||
*/
|
||||
|
||||
/*
|
||||
This might be a bit redundant - but it's too hard to keep
|
||||
|
@ -103,19 +108,61 @@ int puPopupMenu::checkHit ( int button, int updown, int x, int y )
|
|||
changing sizes.
|
||||
*/
|
||||
|
||||
recalc_bbox () ;
|
||||
|
||||
puObject *bo ;
|
||||
|
||||
recalc_bbox();
|
||||
x -= abox.min[0] ;
|
||||
y -= abox.min[1] ;
|
||||
|
||||
/*
|
||||
* June 17th, 1998, Shammi :
|
||||
* Also clear the menu when the dragging the mouse and not hit.
|
||||
*/
|
||||
|
||||
if ( updown == active_mouse_edge || active_mouse_edge == PU_UP_AND_DOWN ||
|
||||
( updown == PU_DRAG && !hit ) )
|
||||
{
|
||||
|
||||
/* June 17th, 1998, Shammi :
|
||||
* Do not hide the menu if mouse is dragged out
|
||||
*/
|
||||
|
||||
if ( updown != PU_DRAG )
|
||||
hide () ;
|
||||
|
||||
/* Turn everything off ready for next time. */
|
||||
|
||||
/* June 17th, 1998, Shammi:
|
||||
* Make sure we check for a hit, if the mouse is moved
|
||||
* out of the menu.
|
||||
*/
|
||||
|
||||
for ( puObject *bo = dlist ; bo != NULL ; bo = bo->next )
|
||||
{
|
||||
if ( ! hit )
|
||||
bo -> checkHit ( button, updown, x , y ) ;
|
||||
|
||||
bo -> clrValue () ;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! hit )
|
||||
return FALSE ;
|
||||
|
||||
puObject *bo ;
|
||||
|
||||
/*
|
||||
We have to walk the list backwards to ensure that
|
||||
the click order is the same as the DRAW order.
|
||||
*/
|
||||
|
||||
/* June 17th, 1998, Shammi :
|
||||
* If the mouse is dragged and the menuItem is not hit,
|
||||
* clear it
|
||||
*/
|
||||
|
||||
for ( bo = dlist ; bo->next != NULL ; bo = bo->next )
|
||||
if ( updown == PU_DRAG && ! bo -> checkHit ( button, updown, x, y ) )
|
||||
bo -> clrValue () ;
|
||||
|
||||
/* Find the last object in our list. */ ;
|
||||
|
||||
for ( ; bo != NULL ; bo = bo->prev )
|
||||
|
@ -125,3 +172,4 @@ int puPopupMenu::checkHit ( int button, int updown, int x, int y )
|
|||
return FALSE ;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue