]> git.saurik.com Git - wxWidgets.git/blobdiff - src/aui/dockart.cpp
use WX_DEFINE_ARRAY_INT for an array of ints (bug 1536482)
[wxWidgets.git] / src / aui / dockart.cpp
index 99f782d50936062b1586dfad96e0937061f18c98..1eab5042d2a609048efc924d169a457ef3f6bdb1 100644 (file)
 
 #if wxUSE_AUI
 
-#include "wx/image.h"
 #include "wx/aui/framemanager.h"
 #include "wx/aui/dockart.h"
 
 #ifndef WX_PRECOMP
     #include "wx/settings.h"
     #include "wx/dcclient.h"
+    #include "wx/image.h"
 #endif
 
+#ifdef __WXMAC__
+#include "wx/mac/private.h"
+#include "wx/graphics.h"
+#endif
+
+#ifdef __WXGTK__
+#include <gtk/gtk.h>
+#include "wx/gtk/win_gtk.h"
+#include "wx/renderer.h"
+#endif
+
+
 // -- wxDefaultDockArt class implementation --
 
 // wxDefaultDockArt is an art provider class which does all of the drawing for
@@ -72,8 +84,8 @@ static wxBitmap BitmapFromBits(const unsigned char bits[], int w, int h,
                                const wxColour& color)
 {
     wxImage img = wxBitmap((const char*)bits, w, h).ConvertToImage();
-    img.Replace(255,255,255,123,123,123);
-    img.Replace(0,0,0,color.Red(),color.Green(),color.Blue());
+    img.Replace(0,0,0,123,123,123);
+    img.Replace(255,255,255,color.Red(),color.Green(),color.Blue());
     img.SetMaskColour(123,123,123);
     return wxBitmap(img);
 }
@@ -158,11 +170,16 @@ wxDefaultDockArt::wxDefaultDockArt()
 #endif
 
     // some built in bitmaps
-#ifdef __WXMAC__
+#if defined( __WXMAC__ )
      static unsigned char close_bits[]={
          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 };
 #else
     static unsigned char close_bits[]={
         0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xfb,0xcf,0xf9,
@@ -189,10 +206,12 @@ wxDefaultDockArt::wxDefaultDockArt()
     m_active_pin_bitmap = BitmapFromBits(pin_bits, 16, 16, m_active_caption_text_colour);
 
     // default metric values
-#ifdef __WXMAC__
+#if defined(__WXMAC__)
     SInt32 height;
     GetThemeMetric( kThemeMetricSmallPaneSplitterHeight , &height );
     m_sash_size = height;
+#elif defined(__WXGTK__)
+    m_sash_size = wxRendererNative::Get().GetSplitterParams(NULL).widthSash;
 #else
     m_sash_size = 4;
 #endif
@@ -288,13 +307,13 @@ wxFont wxDefaultDockArt::GetFont(int id)
     return wxNullFont;
 }
 
-void wxDefaultDockArt::DrawSash(wxDC& dc, int, const wxRect& rect)
+void wxDefaultDockArt::DrawSash(wxDC& dc, wxWindow *window, int orientation, const wxRect& rect)
 {
-#ifdef __WXMAC__
+#if defined(__WXMAC__)
     HIRect splitterRect = CGRectMake( rect.x , rect.y , rect.width , rect.height );
     CGContextRef cgContext ;
 #if wxMAC_USE_CORE_GRAPHICS
-    cgContext = ((wxMacCGContext*)(dc.GetGraphicContext()))->GetNativeContext() ;
+    cgContext = (CGContextRef) dc.GetGraphicsContext()->GetNativeContext() ;
 #else
     Rect bounds ;
     GetPortBounds( (CGrafPtr) dc.m_macPort , &bounds ) ;
@@ -314,7 +333,48 @@ void wxDefaultDockArt::DrawSash(wxDC& dc, int, const wxRect& rect)
     QDEndCGContext( (CGrafPtr) dc.m_macPort , &cgContext ) ;
 #endif
 
+#elif defined(__WXGTK__)
+
+    GdkRectangle gdk_rect;
+    if (orientation == wxVERTICAL )
+    {
+        gdk_rect.x = rect.x;
+        gdk_rect.y = rect.y;
+        gdk_rect.width = m_sash_size;
+        gdk_rect.height = rect.height;
+    }
+    else
+    {
+        gdk_rect.x = rect.x;
+        gdk_rect.y = rect.y;
+        gdk_rect.width = rect.width;
+        gdk_rect.height = m_sash_size;
+    }
+
+    if (!window) return;
+    if (!window->m_wxwindow) return;
+    if (!GTK_PIZZA(window->m_wxwindow)->bin_window) return;
+
+    gtk_paint_handle
+    (
+        window->m_wxwindow->style,
+        GTK_PIZZA(window->m_wxwindow)->bin_window,
+        // flags & wxCONTROL_CURRENT ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL,
+        GTK_STATE_NORMAL,
+        GTK_SHADOW_NONE,
+        NULL /* no clipping */,
+        window->m_wxwindow,
+        "paned",
+        rect.x,
+        rect.y,
+        rect.width,
+        rect.height,
+        (orientation == wxVERTICAL) ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL
+    );
+
 #else
+    wxUnusedVar(window);
+    wxUnusedVar(orientation);
     dc.SetPen(*wxTRANSPARENT_PEN);
     dc.SetBrush(m_sash_brush);
     dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
@@ -322,7 +382,7 @@ void wxDefaultDockArt::DrawSash(wxDC& dc, int, const wxRect& rect)
 }
 
 
-void wxDefaultDockArt::DrawBackground(wxDC& dc, int, const wxRect& rect)
+void wxDefaultDockArt::DrawBackground(wxDC& dc, wxWindow *WXUNUSED(window), int, const wxRect& rect)
 {
     dc.SetPen(*wxTRANSPARENT_PEN);
 #ifdef __WXMAC__
@@ -335,7 +395,7 @@ void wxDefaultDockArt::DrawBackground(wxDC& dc, int, const wxRect& rect)
     dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
 }
 
-void wxDefaultDockArt::DrawBorder(wxDC& dc, const wxRect& _rect,
+void wxDefaultDockArt::DrawBorder(wxDC& dc, wxWindow *WXUNUSED(window), const wxRect& _rect,
                                   wxPaneInfo& pane)
 {
     dc.SetPen(m_border_pen);
@@ -359,7 +419,7 @@ void wxDefaultDockArt::DrawBorder(wxDC& dc, const wxRect& _rect,
             rect.Deflate(1);
         }
     }
-     else
+    else
     {
         for (i = 0; i < border_width; ++i)
         {
@@ -381,7 +441,7 @@ void wxDefaultDockArt::DrawCaptionBackground(wxDC& dc, const wxRect& rect, bool
 
         dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
     }
-     else
+    else
     {
         if (active)
         {
@@ -417,7 +477,7 @@ void wxDefaultDockArt::DrawCaptionBackground(wxDC& dc, const wxRect& rect, bool
 }
 
 
-void wxDefaultDockArt::DrawCaption(wxDC& dc,
+void wxDefaultDockArt::DrawCaption(wxDC& dc, wxWindow *WXUNUSED(window),
                                    const wxString& text,
                                    const wxRect& rect,
                                    wxPaneInfo& pane)
@@ -430,7 +490,7 @@ void wxDefaultDockArt::DrawCaption(wxDC& dc,
 
     if (pane.state & wxPaneInfo::optionActive)
         dc.SetTextForeground(m_active_caption_text_colour);
-     else
+    else
         dc.SetTextForeground(m_inactive_caption_text_colour);
 
 
@@ -442,7 +502,7 @@ void wxDefaultDockArt::DrawCaption(wxDC& dc,
     dc.DestroyClippingRegion();
 }
 
-void wxDefaultDockArt::DrawGripper(wxDC& dc,
+void wxDefaultDockArt::DrawGripper(wxDC& dc, wxWindow *WXUNUSED(window),
                                    const wxRect& rect,
                                    wxPaneInfo& pane)
 {
@@ -493,7 +553,7 @@ void wxDefaultDockArt::DrawGripper(wxDC& dc,
     }
 }
 
-void wxDefaultDockArt::DrawPaneButton(wxDC& dc,
+void wxDefaultDockArt::DrawPaneButton(wxDC& dc, wxWindow *WXUNUSED(window),
                                       int button,
                                       int button_state,
                                       const wxRect& _rect,