]> git.saurik.com Git - wxWidgets.git/blobdiff - src/aui/dockart.cpp
*wprintf() functions should be extern, not static, when we define them in wxNEED_WPRI...
[wxWidgets.git] / src / aui / dockart.cpp
index 44c84e3b498eb163af30f4fdf78b4eb7a2559ce1..2a0fc70cd91c5f9158dec7b94c9c76461051aa6c 100644 (file)
@@ -75,35 +75,35 @@ wxColor wxAuiStepColour(const wxColor& c, int ialpha)
 {
     if (ialpha == 100)
         return c;
-        
+
     double r = c.Red(), g = c.Green(), b = c.Blue();
     double bg;
-    
+
     // ialpha is 0..200 where 0 is completely black
     // and 200 is completely white and 100 is the same
     // convert that to normal alpha 0.0 - 1.0
     ialpha = wxMin(ialpha, 200);
     ialpha = wxMax(ialpha, 0);
     double alpha = ((double)(ialpha - 100.0))/100.0;
-    
+
     if (ialpha > 100)
     {
         // blend with white
         bg = 255.0;
         alpha = 1.0 - alpha;  // 0 = transparent fg; 1 = opaque fg
     }
-     else
+    else
     {
         // blend with black
         bg = 0.0;
         alpha = 1.0 + alpha;  // 0 = transparent fg; 1 = opaque fg
     }
-    
+
     r = wxAuiBlendColour(r, bg, alpha);
     g = wxAuiBlendColour(g, bg, alpha);
     b = wxAuiBlendColour(b, bg, alpha);
-    
-    return wxColour((int)r, (int)g, (int)b);
+
+    return wxColour((unsigned char)r, (unsigned char)g, (unsigned char)b);
 }
 
 
@@ -130,7 +130,7 @@ wxBitmap wxAuiBitmapFromBits(const unsigned char bits[], int w, int h,
     img.SetMaskColour(123,123,123);
     return wxBitmap(img);
 }
-                             
+
 
 static void DrawGradientRectangle(wxDC& dc,
                                   const wxRect& rect,
@@ -145,17 +145,17 @@ static void DrawGradientRectangle(wxDC& dc,
 
     if (direction == wxAUI_GRADIENT_VERTICAL)
         high = rect.GetHeight()-1;
-         else
+    else
         high = rect.GetWidth()-1;
 
     for (int i = 0; i <= high; ++i)
     {
         int r,g,b;
-        
-        
-        r = start_color.Red() + ((i*rd*100)/high)/100;
-        g = start_color.Green() + ((i*gd*100)/high)/100;
-        b = start_color.Blue() + ((i*bd*100)/high)/100;
+
+
+        r = start_color.Red() + (high <= 0 ? 0 : (((i*rd*100)/high)/100));
+        g = start_color.Green() + (high <= 0 ? 0 : (((i*gd*100)/high)/100));
+        b = start_color.Blue() + (high <= 0 ? 0 : (((i*bd*100)/high)/100));
 
         wxPen p(wxColor((unsigned char)r,
                         (unsigned char)g,
@@ -164,7 +164,7 @@ static void DrawGradientRectangle(wxDC& dc,
 
         if (direction == wxAUI_GRADIENT_VERTICAL)
             dc.DrawLine(rect.x, rect.y+i, rect.x+rect.width, rect.y+i);
-             else
+        else
             dc.DrawLine(rect.x+i, rect.y, rect.x+i, rect.y+rect.height);
     }
 }
@@ -172,23 +172,23 @@ static void DrawGradientRectangle(wxDC& dc,
 wxString wxAuiChopText(wxDC& dc, const wxString& text, int max_size)
 {
     wxCoord x,y;
-    
+
     // first check if the text fits with no problems
     dc.GetTextExtent(text, &x, &y);
     if (x <= max_size)
         return text;
-        
+
     size_t i, len = text.Length();
     size_t last_good_length = 0;
     for (i = 0; i < len; ++i)
     {
         wxString s = text.Left(i);
         s += wxT("...");
-        
+
         dc.GetTextExtent(s, &x, &y);
         if (x > max_size)
             break;
-        
+
         last_good_length = i;
     }
 
@@ -207,11 +207,20 @@ wxAuiDefaultDockArt::wxAuiDefaultDockArt()
     wxColor base_colour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE);
 #endif
 
+    // the base_colour is too pale to use as our base colour,
+    // so darken it a bit --
+    if ((255-base_colour.Red()) +
+        (255-base_colour.Green()) +
+        (255-base_colour.Blue()) < 60)
+    {
+        base_colour = wxAuiStepColour(base_colour, 92);
+    }
+
     m_base_colour = base_colour;
     wxColor darker1_colour = wxAuiStepColour(base_colour, 85);
     wxColor darker2_colour = wxAuiStepColour(base_colour, 75);
     wxColor darker3_colour = wxAuiStepColour(base_colour, 60);
-    wxColor darker4_colour = wxAuiStepColour(base_colour, 50);
+    //wxColor darker4_colour = wxAuiStepColour(base_colour, 50);
     wxColor darker5_colour = wxAuiStepColour(base_colour, 40);
 
     m_active_caption_colour = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT);
@@ -247,11 +256,11 @@ wxAuiDefaultDockArt::wxAuiDefaultDockArt()
          0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0x03, 0xF8, 0x01, 0xF0, 0x19, 0xF3,
          0xB8, 0xE3, 0xF0, 0xE1, 0xE0, 0xE0, 0xF0, 0xE1, 0xB8, 0xE3, 0x19, 0xF3,
          0x01, 0xF0, 0x03, 0xF8, 0x0F, 0xFE, 0xFF, 0xFF };
-#elif defined( __WXGTK__)       
-     static unsigned char close_bits[]={        
-         0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xfb, 0xef, 0xdb, 0xed, 0x8b, 0xe8,        
-         0x1b, 0xec, 0x3b, 0xee, 0x1b, 0xec, 0x8b, 0xe8, 0xdb, 0xed, 0xfb, 0xef,        
-         0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };      
+#elif defined(__WXGTK__)
+     static unsigned char close_bits[]={
+         0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xfb, 0xef, 0xdb, 0xed, 0x8b, 0xe8,
+         0x1b, 0xec, 0x3b, 0xee, 0x1b, 0xec, 0x8b, 0xe8, 0xdb, 0xed, 0xfb, 0xef,
+         0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
 #else
     static unsigned char close_bits[]={
          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf3, 0xcf, 0xf9,
@@ -268,7 +277,7 @@ wxAuiDefaultDockArt::wxAuiDefaultDockArt()
         0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0x1f, 0xf0, 0xdf, 0xf7,
         0x07, 0xf4, 0x07, 0xf4, 0xf7, 0xf5, 0xf7, 0xf1, 0xf7, 0xfd, 0xf7, 0xfd,
         0x07, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-        
+
     static unsigned char pin_bits[]={
         0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0xdf,0xfc,0xdf,0xfc,
         0xdf,0xfc,0xdf,0xfc,0xdf,0xfc,0x0f,0xf8,0x7f,0xff,0x7f,0xff,
@@ -435,6 +444,7 @@ void wxAuiDefaultDockArt::DrawSash(wxDC& dc, wxWindow *window, int orientation,
     dc.SetBrush(m_sash_brush);
     dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
 
+#if 0
     GdkRectangle gdk_rect;
     if (orientation == wxVERTICAL )
     {
@@ -450,6 +460,7 @@ void wxAuiDefaultDockArt::DrawSash(wxDC& dc, wxWindow *window, int orientation,
         gdk_rect.width = rect.width;
         gdk_rect.height = m_sash_size;
     }
+#endif
 
     if (!window) return;
     if (!window->m_wxwindow) return;
@@ -536,7 +547,7 @@ void wxAuiDefaultDockArt::DrawCaptionBackground(wxDC& dc, const wxRect& rect, bo
     {
         if (active)
             dc.SetBrush(wxBrush(m_active_caption_colour));
-             else
+        else
             dc.SetBrush(wxBrush(m_inactive_caption_colour));
 
         dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
@@ -559,7 +570,7 @@ void wxAuiDefaultDockArt::DrawCaptionBackground(wxDC& dc, const wxRect& rect, bo
                                  m_gradient_type);
 #endif
         }
-         else
+        else
         {
 #ifdef __WXMAC__
             // on mac the gradients are expected to become darker from the top
@@ -605,9 +616,9 @@ void wxAuiDefaultDockArt::DrawCaption(wxDC& dc, wxWindow *WXUNUSED(window),
     if (pane.HasCloseButton())
         clip_rect.width -= m_button_size;
     if (pane.HasPinButton())
-        clip_rect.width -= m_button_size;    
+        clip_rect.width -= m_button_size;
     if (pane.HasMaximizeButton())
-        clip_rect.width -= m_button_size;    
+        clip_rect.width -= m_button_size;
 
     wxString draw_text = wxAuiChopText(dc, text, clip_rect.width);
 
@@ -674,19 +685,21 @@ void wxAuiDefaultDockArt::DrawPaneButton(wxDC& dc, wxWindow *WXUNUSED(window),
                                       wxAuiPaneInfo& pane)
 {
     wxBitmap bmp;
+    if (!(&pane))
+        return;
     switch (button)
     {
         default:
         case wxAUI_BUTTON_CLOSE:
             if (pane.state & wxAuiPaneInfo::optionActive)
                 bmp = m_active_close_bitmap;
-                 else
+            else
                 bmp = m_inactive_close_bitmap;
             break;
         case wxAUI_BUTTON_PIN:
             if (pane.state & wxAuiPaneInfo::optionActive)
                 bmp = m_active_pin_bitmap;
-                 else
+            else
                 bmp = m_inactive_pin_bitmap;
             break;
         case wxAUI_BUTTON_MAXIMIZE_RESTORE:
@@ -694,14 +707,14 @@ void wxAuiDefaultDockArt::DrawPaneButton(wxDC& dc, wxWindow *WXUNUSED(window),
             {
                 if (pane.state & wxAuiPaneInfo::optionActive)
                     bmp = m_active_restore_bitmap;
-                     else
+                else
                     bmp = m_inactive_restore_bitmap;
             }
-             else
+            else
             {
                 if (pane.state & wxAuiPaneInfo::optionActive)
                     bmp = m_active_maximize_bitmap;
-                     else
+                else
                     bmp = m_inactive_maximize_bitmap;
             }
             break;
@@ -729,7 +742,7 @@ void wxAuiDefaultDockArt::DrawPaneButton(wxDC& dc, wxWindow *WXUNUSED(window),
             dc.SetBrush(wxBrush(wxAuiStepColour(m_active_caption_colour, 120)));
             dc.SetPen(wxPen(wxAuiStepColour(m_active_caption_colour, 70)));
         }
-         else
+        else
         {
             dc.SetBrush(wxBrush(wxAuiStepColour(m_inactive_caption_colour, 120)));
             dc.SetPen(wxPen(wxAuiStepColour(m_inactive_caption_colour, 70)));