]> git.mxchange.org Git - flightgear.git/commitdiff
Incorporated next version of PUI.
authorcurt <curt>
Mon, 13 Jul 1998 20:59:34 +0000 (20:59 +0000)
committercurt <curt>
Mon, 13 Jul 1998 20:59:34 +0000 (20:59 +0000)
PUI/complex.cxx
PUI/pu.cxx
PUI/puBox.cxx
PUI/puButton.cxx
PUI/puPopupMenu.cxx

index 8610bb2238c5ad78b790ff2f704ee2ec557f33ba..6c5d93a735461f47b6d124cd8b831979874e24d2 100644 (file)
@@ -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 ) ;
index ea197f7451aa1ccbc93e2c55455872d75e52918f..5e47cf054701261318f6f73f2742197b18bf6c43 100644 (file)
@@ -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 ) ;
-
-      fprintf ( stderr, "PUI: Error: %s\n" (char *)lpMsgBuf ) ;
+                     FORMAT_MESSAGE_FROM_SYSTEM,
+                     NULL,
+                     GetLastError(),
+                     MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+                     (LPTSTR) &lpMsgBuf,
+                     0, NULL ) ;
+
+      fprintf ( stderr, "PUI: Error: %s\n", (char *)lpMsgBuf ) ;
       LocalFree ( lpMsgBuf ) ;
     }
+
     wglUseFontBitmaps ( hdc, 0, 256, fontBase ) ;
 #endif
   }
index 842af2a1fe0161b6fe6052e22a4831e7eeebec00..d0d9262851826c0790dc72e552265a48ebd1b77d 100644 (file)
@@ -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();
index 612d09cbaebf0ed900c38e519153a897ed01ea9e..66ded922b3eaa14a32293182c6965dd8ab887437 100644 (file)
@@ -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 () ;
 }
 
+
index 52ffbd9ac3d5815c0d5d6dabc4da32486492b009..0eed102316cf61b9660bec0670b017ffdae63c79 100644 (file)
@@ -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,38 +96,73 @@ 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 )
+  /*
+   * 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
+    track of changing abox sizes when daughter objects are
+    changing sizes.
+  */
+
+  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 ) )
   {
-    hide () ;
+
+    /* 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 ;
 
-  /*
-    This might be a bit redundant - but it's too hard to keep
-    track of changing abox sizes when daughter objects are
-    changing sizes.
-  */
-
-  recalc_bbox () ;
-
   puObject *bo ;
-
-  x -= abox.min[0] ;
-  y -= abox.min[1] ;
-
+  
   /*
     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 ;
 }
 
+