compilation warning fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14903 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -17,13 +17,13 @@
|
|||||||
#pragma hdrstop
|
#pragma hdrstop
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/defs.h"
|
|
||||||
|
|
||||||
#if wxUSE_IMAGE
|
#if wxUSE_IMAGE
|
||||||
|
|
||||||
#include "wx/image.h"
|
#include "wx/image.h"
|
||||||
#include "wx/brush.h"
|
|
||||||
#include "wx/pen.h"
|
#ifndef WX_PRECOMP
|
||||||
|
#include "wx/brush.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
// DoFloodFill
|
// DoFloodFill
|
||||||
// Fills with the colour extracted from fillBrush, starting at x,y until either
|
// Fills with the colour extracted from fillBrush, starting at x,y until either
|
||||||
|
@@ -147,72 +147,77 @@ wxCursor::wxCursor( const wxCursor &cursor )
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if wxUSE_IMAGE
|
#if wxUSE_IMAGE
|
||||||
|
|
||||||
wxCursor::wxCursor( const wxImage & image )
|
wxCursor::wxCursor( const wxImage & image )
|
||||||
{
|
{
|
||||||
unsigned char * rgbBits = image.GetData();
|
unsigned char * rgbBits = image.GetData();
|
||||||
int w = image.GetWidth() ;
|
int w = image.GetWidth() ;
|
||||||
int h = image.GetHeight() ;
|
int h = image.GetHeight();
|
||||||
bool bHasMask = image.HasMask() ;
|
bool bHasMask = image.HasMask();
|
||||||
int imagebitcount = (w*h)/8;
|
int imagebitcount = (w*h)/8;
|
||||||
|
|
||||||
unsigned char r, g, b ;
|
|
||||||
unsigned char * bits = new unsigned char [imagebitcount];
|
unsigned char * bits = new unsigned char [imagebitcount];
|
||||||
unsigned char * maskBits = new unsigned char [imagebitcount];
|
unsigned char * maskBits = new unsigned char [imagebitcount];
|
||||||
|
|
||||||
int i,j, i8; unsigned char c, cMask;
|
int i, j, i8; unsigned char c, cMask;
|
||||||
for (i=0; i<imagebitcount; i++)
|
for (i=0; i<imagebitcount; i++)
|
||||||
{
|
{
|
||||||
bits[i] = 0;
|
bits[i] = 0;
|
||||||
i8 = i * 8;
|
i8 = i * 8;
|
||||||
|
|
||||||
cMask = 1;
|
cMask = 1;
|
||||||
for (j=0; j<8; j++)
|
for (j=0; j<8; j++)
|
||||||
{
|
{
|
||||||
// possible overflow if we do the summation first ?
|
// possible overflow if we do the summation first ?
|
||||||
c = rgbBits[(i8+j)*3]/3 + rgbBits[(i8+j)*3+1]/3 + rgbBits[(i8+j)*3+2]/3 ;
|
c = rgbBits[(i8+j)*3]/3 + rgbBits[(i8+j)*3+1]/3 + rgbBits[(i8+j)*3+2]/3;
|
||||||
//if average value is > mid grey
|
//if average value is > mid grey
|
||||||
if (c>127)
|
if (c>127)
|
||||||
bits[i] = bits[i] | cMask ;
|
bits[i] = bits[i] | cMask;
|
||||||
cMask = cMask * 2 ;
|
cMask = cMask * 2;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long keyMaskColor;
|
||||||
if (bHasMask)
|
if (bHasMask)
|
||||||
{
|
{
|
||||||
r = image.GetMaskRed() ;
|
unsigned char
|
||||||
g = image.GetMaskGreen() ;
|
r = image.GetMaskRed(),
|
||||||
b = image.GetMaskBlue() ;
|
g = image.GetMaskGreen(),
|
||||||
|
b = image.GetMaskBlue();
|
||||||
|
|
||||||
for (i=0; i<imagebitcount; i++)
|
for (i=0; i<imagebitcount; i++)
|
||||||
{
|
{
|
||||||
maskBits[i] = 0x0;
|
maskBits[i] = 0x0;
|
||||||
i8 = i * 8;
|
i8 = i * 8;
|
||||||
|
|
||||||
cMask = 1;
|
cMask = 1;
|
||||||
for (j=0; j<8; j++)
|
for (j=0; j<8; j++)
|
||||||
{
|
{
|
||||||
if (rgbBits[(i8+j)*3] != r || rgbBits[(i8+j)*3+1] != g || rgbBits[(i8+j)*3+2] != b)
|
if (rgbBits[(i8+j)*3] != r || rgbBits[(i8+j)*3+1] != g || rgbBits[(i8+j)*3+2] != b)
|
||||||
maskBits[i] = maskBits[i] | cMask ;
|
maskBits[i] = maskBits[i] | cMask;
|
||||||
cMask = cMask * 2 ;
|
cMask = cMask * 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
keyMaskColor = (r << 16) | (g << 8) | b;
|
||||||
{
|
}
|
||||||
|
else // no mask
|
||||||
|
{
|
||||||
for (i=0; i<imagebitcount; i++)
|
for (i=0; i<imagebitcount; i++)
|
||||||
maskBits[i]= 0xFF ;
|
maskBits[i] = 0xFF;
|
||||||
}
|
|
||||||
//find the most frequent color(s)
|
// init it to avoid compiler warnings
|
||||||
//it seems a waste of effort to copy the image
|
keyMaskColor = 0;
|
||||||
//but otherwise we need to remove the const modifier ??
|
}
|
||||||
|
|
||||||
|
// find the most frequent color(s) it seems a waste of effort to copy the
|
||||||
|
// image but otherwise we need to remove the const modifier ??
|
||||||
wxImage tmpImage = image.Copy();
|
wxImage tmpImage = image.Copy();
|
||||||
wxImageHistogram histogram;
|
wxImageHistogram histogram;
|
||||||
|
|
||||||
//colors as rrggbb
|
// colors as rrggbb
|
||||||
unsigned long key;
|
unsigned long key;
|
||||||
unsigned long value;
|
unsigned long value;
|
||||||
unsigned long keyMaskColor = 0;
|
|
||||||
if (bHasMask)
|
|
||||||
keyMaskColor = (r << 16) | (g << 8) | b;
|
|
||||||
|
|
||||||
tmpImage.ComputeHistogram(histogram);
|
tmpImage.ComputeHistogram(histogram);
|
||||||
|
|
||||||
@@ -243,11 +248,11 @@ wxCursor::wxCursor( const wxImage & image )
|
|||||||
|
|
||||||
wxColour fg = wxColour ( (unsigned char)(MostFreqCol >> 16),
|
wxColour fg = wxColour ( (unsigned char)(MostFreqCol >> 16),
|
||||||
(unsigned char)(MostFreqCol >> 8),
|
(unsigned char)(MostFreqCol >> 8),
|
||||||
(unsigned char)(MostFreqCol) ) ;
|
(unsigned char)(MostFreqCol) );
|
||||||
|
|
||||||
wxColour bg = wxColour ( (unsigned char)(NextFreqCol >> 16),
|
wxColour bg = wxColour ( (unsigned char)(NextFreqCol >> 16),
|
||||||
(unsigned char)(NextFreqCol >> 8),
|
(unsigned char)(NextFreqCol >> 8),
|
||||||
(unsigned char)(NextFreqCol) ) ;
|
(unsigned char)(NextFreqCol) );
|
||||||
|
|
||||||
int hotSpotX=0;
|
int hotSpotX=0;
|
||||||
int hotSpotY=0;
|
int hotSpotY=0;
|
||||||
@@ -274,10 +279,11 @@ wxCursor::wxCursor( const wxImage & image )
|
|||||||
|
|
||||||
gdk_bitmap_unref( data );
|
gdk_bitmap_unref( data );
|
||||||
gdk_bitmap_unref( mask );
|
gdk_bitmap_unref( mask );
|
||||||
delete [] bits ;
|
delete [] bits;
|
||||||
delete [] maskBits;
|
delete [] maskBits;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
#endif // wxUSE_IMAGE
|
||||||
|
|
||||||
wxCursor::~wxCursor()
|
wxCursor::~wxCursor()
|
||||||
{
|
{
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
#include "wx/utils.h"
|
#include "wx/utils.h"
|
||||||
#include "wx/dialog.h"
|
#include "wx/dialog.h"
|
||||||
#include "wx/msgdlg.h"
|
#include "wx/msgdlg.h"
|
||||||
|
#include "wx/module.h"
|
||||||
|
|
||||||
#if wxUSE_DRAG_AND_DROP
|
#if wxUSE_DRAG_AND_DROP
|
||||||
#include "wx/dnd.h"
|
#include "wx/dnd.h"
|
||||||
@@ -39,7 +40,7 @@
|
|||||||
#endif // wxUSE_CARET
|
#endif // wxUSE_CARET
|
||||||
|
|
||||||
#if wxUSE_TEXTCTRL
|
#if wxUSE_TEXTCTRL
|
||||||
#include "wx/textctrl.h"
|
#include "wx/textctrl.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/menu.h"
|
#include "wx/menu.h"
|
||||||
@@ -487,8 +488,8 @@ gint gtk_window_own_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_even
|
|||||||
#ifdef __WXGTK20__
|
#ifdef __WXGTK20__
|
||||||
|
|
||||||
(* GTK_WIDGET_CLASS (pizza_parent_class)->expose_event) (widget, gdk_event);
|
(* GTK_WIDGET_CLASS (pizza_parent_class)->expose_event) (widget, gdk_event);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -829,12 +830,12 @@ static int gtk_window_expose_callback( GtkWidget *widget,
|
|||||||
|
|
||||||
// Actual redrawing takes place in idle time.
|
// Actual redrawing takes place in idle time.
|
||||||
win->Update();
|
win->Update();
|
||||||
|
|
||||||
#ifdef __WXGTK20__
|
#ifdef __WXGTK20__
|
||||||
|
|
||||||
(* GTK_WIDGET_CLASS (pizza_parent_class)->expose_event) (widget, gdk_event);
|
(* GTK_WIDGET_CLASS (pizza_parent_class)->expose_event) (widget, gdk_event);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -934,7 +935,7 @@ static void gtk_window_draw_callback( GtkWidget *widget,
|
|||||||
win->GetUpdateRegion().Union( rect->x, rect->y, rect->width, rect->height );
|
win->GetUpdateRegion().Union( rect->x, rect->y, rect->width, rect->height );
|
||||||
|
|
||||||
// Actual redrawing takes place in idle time.
|
// Actual redrawing takes place in idle time.
|
||||||
|
|
||||||
win->Update();
|
win->Update();
|
||||||
|
|
||||||
#ifndef __WXUNIVERSAL__
|
#ifndef __WXUNIVERSAL__
|
||||||
@@ -2366,7 +2367,7 @@ bool wxWindowGTK::Create( wxWindow *parent,
|
|||||||
m_vAdjust = gtk_range_get_adjustment( GTK_RANGE(scrolledWindow->vscrollbar) );
|
m_vAdjust = gtk_range_get_adjustment( GTK_RANGE(scrolledWindow->vscrollbar) );
|
||||||
|
|
||||||
m_wxwindow = gtk_pizza_new();
|
m_wxwindow = gtk_pizza_new();
|
||||||
|
|
||||||
#ifndef __WXUNIVERSAL__
|
#ifndef __WXUNIVERSAL__
|
||||||
GtkPizza *pizza = GTK_PIZZA(m_wxwindow);
|
GtkPizza *pizza = GTK_PIZZA(m_wxwindow);
|
||||||
|
|
||||||
@@ -2547,7 +2548,7 @@ void wxWindowGTK::PostCreation()
|
|||||||
#ifndef __WXGTK20__
|
#ifndef __WXGTK20__
|
||||||
gtk_signal_connect( GTK_OBJECT(m_wxwindow), "draw",
|
gtk_signal_connect( GTK_OBJECT(m_wxwindow), "draw",
|
||||||
GTK_SIGNAL_FUNC(gtk_window_draw_callback), (gpointer)this );
|
GTK_SIGNAL_FUNC(gtk_window_draw_callback), (gpointer)this );
|
||||||
|
|
||||||
if (HasFlag(wxNO_FULL_REPAINT_ON_RESIZE))
|
if (HasFlag(wxNO_FULL_REPAINT_ON_RESIZE))
|
||||||
{
|
{
|
||||||
gtk_signal_connect( GTK_OBJECT(m_wxwindow), "event",
|
gtk_signal_connect( GTK_OBJECT(m_wxwindow), "event",
|
||||||
@@ -2773,7 +2774,7 @@ void wxWindowGTK::OnInternalIdle()
|
|||||||
{
|
{
|
||||||
// Update invalidated regions.
|
// Update invalidated regions.
|
||||||
Update();
|
Update();
|
||||||
|
|
||||||
// Synthetize activate events.
|
// Synthetize activate events.
|
||||||
if ( g_sendActivateEvent != -1 )
|
if ( g_sendActivateEvent != -1 )
|
||||||
{
|
{
|
||||||
@@ -3387,14 +3388,14 @@ void wxWindowGTK::GtkSendPaintEvents()
|
|||||||
{
|
{
|
||||||
wxWindowDC dc( (wxWindow*)this );
|
wxWindowDC dc( (wxWindow*)this );
|
||||||
dc.SetClippingRegion( m_clearRegion );
|
dc.SetClippingRegion( m_clearRegion );
|
||||||
|
|
||||||
wxEraseEvent erase_event( GetId(), &dc );
|
wxEraseEvent erase_event( GetId(), &dc );
|
||||||
erase_event.SetEventObject( this );
|
erase_event.SetEventObject( this );
|
||||||
|
|
||||||
if (!GetEventHandler()->ProcessEvent(erase_event))
|
if (!GetEventHandler()->ProcessEvent(erase_event))
|
||||||
{
|
{
|
||||||
gdk_gc_set_foreground( g_eraseGC, m_backgroundColour.GetColor() );
|
gdk_gc_set_foreground( g_eraseGC, m_backgroundColour.GetColor() );
|
||||||
|
|
||||||
wxRegionIterator upd( m_clearRegion );
|
wxRegionIterator upd( m_clearRegion );
|
||||||
while (upd)
|
while (upd)
|
||||||
{
|
{
|
||||||
@@ -3421,9 +3422,9 @@ void wxWindowGTK::GtkSendPaintEvents()
|
|||||||
// The following code will result in all window-less widgets
|
// The following code will result in all window-less widgets
|
||||||
// being redrawn because the wxWindows class is allowed to
|
// being redrawn because the wxWindows class is allowed to
|
||||||
// paint over the window-less widgets.
|
// paint over the window-less widgets.
|
||||||
|
|
||||||
GtkPizza *pizza = GTK_PIZZA(m_wxwindow);
|
GtkPizza *pizza = GTK_PIZZA(m_wxwindow);
|
||||||
|
|
||||||
GList *children = pizza->children;
|
GList *children = pizza->children;
|
||||||
while (children)
|
while (children)
|
||||||
{
|
{
|
||||||
@@ -3435,12 +3436,12 @@ void wxWindowGTK::GtkSendPaintEvents()
|
|||||||
{
|
{
|
||||||
// Get intersection of widget area and update region
|
// Get intersection of widget area and update region
|
||||||
wxRegion region( m_updateRegion );
|
wxRegion region( m_updateRegion );
|
||||||
|
|
||||||
GdkEventExpose gdk_event;
|
GdkEventExpose gdk_event;
|
||||||
gdk_event.type = GDK_EXPOSE;
|
gdk_event.type = GDK_EXPOSE;
|
||||||
gdk_event.window = pizza->bin_window;
|
gdk_event.window = pizza->bin_window;
|
||||||
gdk_event.count = 0;
|
gdk_event.count = 0;
|
||||||
|
|
||||||
wxRegionIterator upd( m_updateRegion );
|
wxRegionIterator upd( m_updateRegion );
|
||||||
while (upd)
|
while (upd)
|
||||||
{
|
{
|
||||||
@@ -3449,12 +3450,12 @@ void wxWindowGTK::GtkSendPaintEvents()
|
|||||||
rect.y = upd.GetY();
|
rect.y = upd.GetY();
|
||||||
rect.width = upd.GetWidth();
|
rect.width = upd.GetWidth();
|
||||||
rect.height = upd.GetHeight();
|
rect.height = upd.GetHeight();
|
||||||
|
|
||||||
if (gtk_widget_intersect (child->widget, &rect, &gdk_event.area))
|
if (gtk_widget_intersect (child->widget, &rect, &gdk_event.area))
|
||||||
{
|
{
|
||||||
gtk_widget_event (child->widget, (GdkEvent*) &gdk_event);
|
gtk_widget_event (child->widget, (GdkEvent*) &gdk_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
upd ++;
|
upd ++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4063,42 +4064,42 @@ void wxWindowGTK::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
|
|||||||
|
|
||||||
// No scrolling requested.
|
// No scrolling requested.
|
||||||
if ((dx == 0) && (dy == 0)) return;
|
if ((dx == 0) && (dy == 0)) return;
|
||||||
|
|
||||||
#ifndef __WXGTK20__
|
#ifndef __WXGTK20__
|
||||||
if (!m_updateRegion.IsEmpty())
|
if (!m_updateRegion.IsEmpty())
|
||||||
{
|
{
|
||||||
m_updateRegion.Offset( dx, dy );
|
m_updateRegion.Offset( dx, dy );
|
||||||
|
|
||||||
int cw = 0;
|
int cw = 0;
|
||||||
int ch = 0;
|
int ch = 0;
|
||||||
GetClientSize( &cw, &ch );
|
GetClientSize( &cw, &ch );
|
||||||
m_updateRegion.Intersect( 0, 0, cw, ch );
|
m_updateRegion.Intersect( 0, 0, cw, ch );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_clearRegion.IsEmpty())
|
if (!m_clearRegion.IsEmpty())
|
||||||
{
|
{
|
||||||
m_clearRegion.Offset( dx, dy );
|
m_clearRegion.Offset( dx, dy );
|
||||||
|
|
||||||
int cw = 0;
|
int cw = 0;
|
||||||
int ch = 0;
|
int ch = 0;
|
||||||
GetClientSize( &cw, &ch );
|
GetClientSize( &cw, &ch );
|
||||||
m_clearRegion.Intersect( 0, 0, cw, ch );
|
m_clearRegion.Intersect( 0, 0, cw, ch );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_clipPaintRegion = TRUE;
|
m_clipPaintRegion = TRUE;
|
||||||
|
|
||||||
gtk_pizza_scroll( GTK_PIZZA(m_wxwindow), -dx, -dy );
|
gtk_pizza_scroll( GTK_PIZZA(m_wxwindow), -dx, -dy );
|
||||||
|
|
||||||
m_clipPaintRegion = FALSE;
|
m_clipPaintRegion = FALSE;
|
||||||
#else
|
#else
|
||||||
|
|
||||||
gdk_window_scroll( GTK_PIZZA(m_wxwindow)->bin_window, dx, dy );
|
gdk_window_scroll( GTK_PIZZA(m_wxwindow)->bin_window, dx, dy );
|
||||||
|
|
||||||
GTK_PIZZA(m_wxwindow)->xoffset += dx;
|
GTK_PIZZA(m_wxwindow)->xoffset += dx;
|
||||||
GTK_PIZZA(m_wxwindow)->yoffset += dy;
|
GTK_PIZZA(m_wxwindow)->yoffset += dy;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -4163,7 +4164,7 @@ bool wxWinModule::OnInit()
|
|||||||
{
|
{
|
||||||
g_eraseGC = gdk_gc_new( GDK_ROOT_PARENT() );
|
g_eraseGC = gdk_gc_new( GDK_ROOT_PARENT() );
|
||||||
gdk_gc_set_fill( g_eraseGC, GDK_SOLID );
|
gdk_gc_set_fill( g_eraseGC, GDK_SOLID );
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -147,72 +147,77 @@ wxCursor::wxCursor( const wxCursor &cursor )
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if wxUSE_IMAGE
|
#if wxUSE_IMAGE
|
||||||
|
|
||||||
wxCursor::wxCursor( const wxImage & image )
|
wxCursor::wxCursor( const wxImage & image )
|
||||||
{
|
{
|
||||||
unsigned char * rgbBits = image.GetData();
|
unsigned char * rgbBits = image.GetData();
|
||||||
int w = image.GetWidth() ;
|
int w = image.GetWidth() ;
|
||||||
int h = image.GetHeight() ;
|
int h = image.GetHeight();
|
||||||
bool bHasMask = image.HasMask() ;
|
bool bHasMask = image.HasMask();
|
||||||
int imagebitcount = (w*h)/8;
|
int imagebitcount = (w*h)/8;
|
||||||
|
|
||||||
unsigned char r, g, b ;
|
|
||||||
unsigned char * bits = new unsigned char [imagebitcount];
|
unsigned char * bits = new unsigned char [imagebitcount];
|
||||||
unsigned char * maskBits = new unsigned char [imagebitcount];
|
unsigned char * maskBits = new unsigned char [imagebitcount];
|
||||||
|
|
||||||
int i,j, i8; unsigned char c, cMask;
|
int i, j, i8; unsigned char c, cMask;
|
||||||
for (i=0; i<imagebitcount; i++)
|
for (i=0; i<imagebitcount; i++)
|
||||||
{
|
{
|
||||||
bits[i] = 0;
|
bits[i] = 0;
|
||||||
i8 = i * 8;
|
i8 = i * 8;
|
||||||
|
|
||||||
cMask = 1;
|
cMask = 1;
|
||||||
for (j=0; j<8; j++)
|
for (j=0; j<8; j++)
|
||||||
{
|
{
|
||||||
// possible overflow if we do the summation first ?
|
// possible overflow if we do the summation first ?
|
||||||
c = rgbBits[(i8+j)*3]/3 + rgbBits[(i8+j)*3+1]/3 + rgbBits[(i8+j)*3+2]/3 ;
|
c = rgbBits[(i8+j)*3]/3 + rgbBits[(i8+j)*3+1]/3 + rgbBits[(i8+j)*3+2]/3;
|
||||||
//if average value is > mid grey
|
//if average value is > mid grey
|
||||||
if (c>127)
|
if (c>127)
|
||||||
bits[i] = bits[i] | cMask ;
|
bits[i] = bits[i] | cMask;
|
||||||
cMask = cMask * 2 ;
|
cMask = cMask * 2;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long keyMaskColor;
|
||||||
if (bHasMask)
|
if (bHasMask)
|
||||||
{
|
{
|
||||||
r = image.GetMaskRed() ;
|
unsigned char
|
||||||
g = image.GetMaskGreen() ;
|
r = image.GetMaskRed(),
|
||||||
b = image.GetMaskBlue() ;
|
g = image.GetMaskGreen(),
|
||||||
|
b = image.GetMaskBlue();
|
||||||
|
|
||||||
for (i=0; i<imagebitcount; i++)
|
for (i=0; i<imagebitcount; i++)
|
||||||
{
|
{
|
||||||
maskBits[i] = 0x0;
|
maskBits[i] = 0x0;
|
||||||
i8 = i * 8;
|
i8 = i * 8;
|
||||||
|
|
||||||
cMask = 1;
|
cMask = 1;
|
||||||
for (j=0; j<8; j++)
|
for (j=0; j<8; j++)
|
||||||
{
|
{
|
||||||
if (rgbBits[(i8+j)*3] != r || rgbBits[(i8+j)*3+1] != g || rgbBits[(i8+j)*3+2] != b)
|
if (rgbBits[(i8+j)*3] != r || rgbBits[(i8+j)*3+1] != g || rgbBits[(i8+j)*3+2] != b)
|
||||||
maskBits[i] = maskBits[i] | cMask ;
|
maskBits[i] = maskBits[i] | cMask;
|
||||||
cMask = cMask * 2 ;
|
cMask = cMask * 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
keyMaskColor = (r << 16) | (g << 8) | b;
|
||||||
{
|
}
|
||||||
|
else // no mask
|
||||||
|
{
|
||||||
for (i=0; i<imagebitcount; i++)
|
for (i=0; i<imagebitcount; i++)
|
||||||
maskBits[i]= 0xFF ;
|
maskBits[i] = 0xFF;
|
||||||
}
|
|
||||||
//find the most frequent color(s)
|
// init it to avoid compiler warnings
|
||||||
//it seems a waste of effort to copy the image
|
keyMaskColor = 0;
|
||||||
//but otherwise we need to remove the const modifier ??
|
}
|
||||||
|
|
||||||
|
// find the most frequent color(s) it seems a waste of effort to copy the
|
||||||
|
// image but otherwise we need to remove the const modifier ??
|
||||||
wxImage tmpImage = image.Copy();
|
wxImage tmpImage = image.Copy();
|
||||||
wxImageHistogram histogram;
|
wxImageHistogram histogram;
|
||||||
|
|
||||||
//colors as rrggbb
|
// colors as rrggbb
|
||||||
unsigned long key;
|
unsigned long key;
|
||||||
unsigned long value;
|
unsigned long value;
|
||||||
unsigned long keyMaskColor = 0;
|
|
||||||
if (bHasMask)
|
|
||||||
keyMaskColor = (r << 16) | (g << 8) | b;
|
|
||||||
|
|
||||||
tmpImage.ComputeHistogram(histogram);
|
tmpImage.ComputeHistogram(histogram);
|
||||||
|
|
||||||
@@ -243,11 +248,11 @@ wxCursor::wxCursor( const wxImage & image )
|
|||||||
|
|
||||||
wxColour fg = wxColour ( (unsigned char)(MostFreqCol >> 16),
|
wxColour fg = wxColour ( (unsigned char)(MostFreqCol >> 16),
|
||||||
(unsigned char)(MostFreqCol >> 8),
|
(unsigned char)(MostFreqCol >> 8),
|
||||||
(unsigned char)(MostFreqCol) ) ;
|
(unsigned char)(MostFreqCol) );
|
||||||
|
|
||||||
wxColour bg = wxColour ( (unsigned char)(NextFreqCol >> 16),
|
wxColour bg = wxColour ( (unsigned char)(NextFreqCol >> 16),
|
||||||
(unsigned char)(NextFreqCol >> 8),
|
(unsigned char)(NextFreqCol >> 8),
|
||||||
(unsigned char)(NextFreqCol) ) ;
|
(unsigned char)(NextFreqCol) );
|
||||||
|
|
||||||
int hotSpotX=0;
|
int hotSpotX=0;
|
||||||
int hotSpotY=0;
|
int hotSpotY=0;
|
||||||
@@ -274,10 +279,11 @@ wxCursor::wxCursor( const wxImage & image )
|
|||||||
|
|
||||||
gdk_bitmap_unref( data );
|
gdk_bitmap_unref( data );
|
||||||
gdk_bitmap_unref( mask );
|
gdk_bitmap_unref( mask );
|
||||||
delete [] bits ;
|
delete [] bits;
|
||||||
delete [] maskBits;
|
delete [] maskBits;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
#endif // wxUSE_IMAGE
|
||||||
|
|
||||||
wxCursor::~wxCursor()
|
wxCursor::~wxCursor()
|
||||||
{
|
{
|
||||||
|
@@ -25,6 +25,7 @@
|
|||||||
#include "wx/utils.h"
|
#include "wx/utils.h"
|
||||||
#include "wx/dialog.h"
|
#include "wx/dialog.h"
|
||||||
#include "wx/msgdlg.h"
|
#include "wx/msgdlg.h"
|
||||||
|
#include "wx/module.h"
|
||||||
|
|
||||||
#if wxUSE_DRAG_AND_DROP
|
#if wxUSE_DRAG_AND_DROP
|
||||||
#include "wx/dnd.h"
|
#include "wx/dnd.h"
|
||||||
@@ -39,7 +40,7 @@
|
|||||||
#endif // wxUSE_CARET
|
#endif // wxUSE_CARET
|
||||||
|
|
||||||
#if wxUSE_TEXTCTRL
|
#if wxUSE_TEXTCTRL
|
||||||
#include "wx/textctrl.h"
|
#include "wx/textctrl.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/menu.h"
|
#include "wx/menu.h"
|
||||||
@@ -487,8 +488,8 @@ gint gtk_window_own_expose_callback( GtkWidget *widget, GdkEventExpose *gdk_even
|
|||||||
#ifdef __WXGTK20__
|
#ifdef __WXGTK20__
|
||||||
|
|
||||||
(* GTK_WIDGET_CLASS (pizza_parent_class)->expose_event) (widget, gdk_event);
|
(* GTK_WIDGET_CLASS (pizza_parent_class)->expose_event) (widget, gdk_event);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -829,12 +830,12 @@ static int gtk_window_expose_callback( GtkWidget *widget,
|
|||||||
|
|
||||||
// Actual redrawing takes place in idle time.
|
// Actual redrawing takes place in idle time.
|
||||||
win->Update();
|
win->Update();
|
||||||
|
|
||||||
#ifdef __WXGTK20__
|
#ifdef __WXGTK20__
|
||||||
|
|
||||||
(* GTK_WIDGET_CLASS (pizza_parent_class)->expose_event) (widget, gdk_event);
|
(* GTK_WIDGET_CLASS (pizza_parent_class)->expose_event) (widget, gdk_event);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -934,7 +935,7 @@ static void gtk_window_draw_callback( GtkWidget *widget,
|
|||||||
win->GetUpdateRegion().Union( rect->x, rect->y, rect->width, rect->height );
|
win->GetUpdateRegion().Union( rect->x, rect->y, rect->width, rect->height );
|
||||||
|
|
||||||
// Actual redrawing takes place in idle time.
|
// Actual redrawing takes place in idle time.
|
||||||
|
|
||||||
win->Update();
|
win->Update();
|
||||||
|
|
||||||
#ifndef __WXUNIVERSAL__
|
#ifndef __WXUNIVERSAL__
|
||||||
@@ -2366,7 +2367,7 @@ bool wxWindowGTK::Create( wxWindow *parent,
|
|||||||
m_vAdjust = gtk_range_get_adjustment( GTK_RANGE(scrolledWindow->vscrollbar) );
|
m_vAdjust = gtk_range_get_adjustment( GTK_RANGE(scrolledWindow->vscrollbar) );
|
||||||
|
|
||||||
m_wxwindow = gtk_pizza_new();
|
m_wxwindow = gtk_pizza_new();
|
||||||
|
|
||||||
#ifndef __WXUNIVERSAL__
|
#ifndef __WXUNIVERSAL__
|
||||||
GtkPizza *pizza = GTK_PIZZA(m_wxwindow);
|
GtkPizza *pizza = GTK_PIZZA(m_wxwindow);
|
||||||
|
|
||||||
@@ -2547,7 +2548,7 @@ void wxWindowGTK::PostCreation()
|
|||||||
#ifndef __WXGTK20__
|
#ifndef __WXGTK20__
|
||||||
gtk_signal_connect( GTK_OBJECT(m_wxwindow), "draw",
|
gtk_signal_connect( GTK_OBJECT(m_wxwindow), "draw",
|
||||||
GTK_SIGNAL_FUNC(gtk_window_draw_callback), (gpointer)this );
|
GTK_SIGNAL_FUNC(gtk_window_draw_callback), (gpointer)this );
|
||||||
|
|
||||||
if (HasFlag(wxNO_FULL_REPAINT_ON_RESIZE))
|
if (HasFlag(wxNO_FULL_REPAINT_ON_RESIZE))
|
||||||
{
|
{
|
||||||
gtk_signal_connect( GTK_OBJECT(m_wxwindow), "event",
|
gtk_signal_connect( GTK_OBJECT(m_wxwindow), "event",
|
||||||
@@ -2773,7 +2774,7 @@ void wxWindowGTK::OnInternalIdle()
|
|||||||
{
|
{
|
||||||
// Update invalidated regions.
|
// Update invalidated regions.
|
||||||
Update();
|
Update();
|
||||||
|
|
||||||
// Synthetize activate events.
|
// Synthetize activate events.
|
||||||
if ( g_sendActivateEvent != -1 )
|
if ( g_sendActivateEvent != -1 )
|
||||||
{
|
{
|
||||||
@@ -3387,14 +3388,14 @@ void wxWindowGTK::GtkSendPaintEvents()
|
|||||||
{
|
{
|
||||||
wxWindowDC dc( (wxWindow*)this );
|
wxWindowDC dc( (wxWindow*)this );
|
||||||
dc.SetClippingRegion( m_clearRegion );
|
dc.SetClippingRegion( m_clearRegion );
|
||||||
|
|
||||||
wxEraseEvent erase_event( GetId(), &dc );
|
wxEraseEvent erase_event( GetId(), &dc );
|
||||||
erase_event.SetEventObject( this );
|
erase_event.SetEventObject( this );
|
||||||
|
|
||||||
if (!GetEventHandler()->ProcessEvent(erase_event))
|
if (!GetEventHandler()->ProcessEvent(erase_event))
|
||||||
{
|
{
|
||||||
gdk_gc_set_foreground( g_eraseGC, m_backgroundColour.GetColor() );
|
gdk_gc_set_foreground( g_eraseGC, m_backgroundColour.GetColor() );
|
||||||
|
|
||||||
wxRegionIterator upd( m_clearRegion );
|
wxRegionIterator upd( m_clearRegion );
|
||||||
while (upd)
|
while (upd)
|
||||||
{
|
{
|
||||||
@@ -3421,9 +3422,9 @@ void wxWindowGTK::GtkSendPaintEvents()
|
|||||||
// The following code will result in all window-less widgets
|
// The following code will result in all window-less widgets
|
||||||
// being redrawn because the wxWindows class is allowed to
|
// being redrawn because the wxWindows class is allowed to
|
||||||
// paint over the window-less widgets.
|
// paint over the window-less widgets.
|
||||||
|
|
||||||
GtkPizza *pizza = GTK_PIZZA(m_wxwindow);
|
GtkPizza *pizza = GTK_PIZZA(m_wxwindow);
|
||||||
|
|
||||||
GList *children = pizza->children;
|
GList *children = pizza->children;
|
||||||
while (children)
|
while (children)
|
||||||
{
|
{
|
||||||
@@ -3435,12 +3436,12 @@ void wxWindowGTK::GtkSendPaintEvents()
|
|||||||
{
|
{
|
||||||
// Get intersection of widget area and update region
|
// Get intersection of widget area and update region
|
||||||
wxRegion region( m_updateRegion );
|
wxRegion region( m_updateRegion );
|
||||||
|
|
||||||
GdkEventExpose gdk_event;
|
GdkEventExpose gdk_event;
|
||||||
gdk_event.type = GDK_EXPOSE;
|
gdk_event.type = GDK_EXPOSE;
|
||||||
gdk_event.window = pizza->bin_window;
|
gdk_event.window = pizza->bin_window;
|
||||||
gdk_event.count = 0;
|
gdk_event.count = 0;
|
||||||
|
|
||||||
wxRegionIterator upd( m_updateRegion );
|
wxRegionIterator upd( m_updateRegion );
|
||||||
while (upd)
|
while (upd)
|
||||||
{
|
{
|
||||||
@@ -3449,12 +3450,12 @@ void wxWindowGTK::GtkSendPaintEvents()
|
|||||||
rect.y = upd.GetY();
|
rect.y = upd.GetY();
|
||||||
rect.width = upd.GetWidth();
|
rect.width = upd.GetWidth();
|
||||||
rect.height = upd.GetHeight();
|
rect.height = upd.GetHeight();
|
||||||
|
|
||||||
if (gtk_widget_intersect (child->widget, &rect, &gdk_event.area))
|
if (gtk_widget_intersect (child->widget, &rect, &gdk_event.area))
|
||||||
{
|
{
|
||||||
gtk_widget_event (child->widget, (GdkEvent*) &gdk_event);
|
gtk_widget_event (child->widget, (GdkEvent*) &gdk_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
upd ++;
|
upd ++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4063,42 +4064,42 @@ void wxWindowGTK::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
|
|||||||
|
|
||||||
// No scrolling requested.
|
// No scrolling requested.
|
||||||
if ((dx == 0) && (dy == 0)) return;
|
if ((dx == 0) && (dy == 0)) return;
|
||||||
|
|
||||||
#ifndef __WXGTK20__
|
#ifndef __WXGTK20__
|
||||||
if (!m_updateRegion.IsEmpty())
|
if (!m_updateRegion.IsEmpty())
|
||||||
{
|
{
|
||||||
m_updateRegion.Offset( dx, dy );
|
m_updateRegion.Offset( dx, dy );
|
||||||
|
|
||||||
int cw = 0;
|
int cw = 0;
|
||||||
int ch = 0;
|
int ch = 0;
|
||||||
GetClientSize( &cw, &ch );
|
GetClientSize( &cw, &ch );
|
||||||
m_updateRegion.Intersect( 0, 0, cw, ch );
|
m_updateRegion.Intersect( 0, 0, cw, ch );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_clearRegion.IsEmpty())
|
if (!m_clearRegion.IsEmpty())
|
||||||
{
|
{
|
||||||
m_clearRegion.Offset( dx, dy );
|
m_clearRegion.Offset( dx, dy );
|
||||||
|
|
||||||
int cw = 0;
|
int cw = 0;
|
||||||
int ch = 0;
|
int ch = 0;
|
||||||
GetClientSize( &cw, &ch );
|
GetClientSize( &cw, &ch );
|
||||||
m_clearRegion.Intersect( 0, 0, cw, ch );
|
m_clearRegion.Intersect( 0, 0, cw, ch );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_clipPaintRegion = TRUE;
|
m_clipPaintRegion = TRUE;
|
||||||
|
|
||||||
gtk_pizza_scroll( GTK_PIZZA(m_wxwindow), -dx, -dy );
|
gtk_pizza_scroll( GTK_PIZZA(m_wxwindow), -dx, -dy );
|
||||||
|
|
||||||
m_clipPaintRegion = FALSE;
|
m_clipPaintRegion = FALSE;
|
||||||
#else
|
#else
|
||||||
|
|
||||||
gdk_window_scroll( GTK_PIZZA(m_wxwindow)->bin_window, dx, dy );
|
gdk_window_scroll( GTK_PIZZA(m_wxwindow)->bin_window, dx, dy );
|
||||||
|
|
||||||
GTK_PIZZA(m_wxwindow)->xoffset += dx;
|
GTK_PIZZA(m_wxwindow)->xoffset += dx;
|
||||||
GTK_PIZZA(m_wxwindow)->yoffset += dy;
|
GTK_PIZZA(m_wxwindow)->yoffset += dy;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -4163,7 +4164,7 @@ bool wxWinModule::OnInit()
|
|||||||
{
|
{
|
||||||
g_eraseGC = gdk_gc_new( GDK_ROOT_PARENT() );
|
g_eraseGC = gdk_gc_new( GDK_ROOT_PARENT() );
|
||||||
gdk_gc_set_fill( g_eraseGC, GDK_SOLID );
|
gdk_gc_set_fill( g_eraseGC, GDK_SOLID );
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -59,6 +59,12 @@ void wxSetIconsX11( WXDisplay* display, WXWindow window,
|
|||||||
gMask = image.GetMaskGreen();
|
gMask = image.GetMaskGreen();
|
||||||
bMask = image.GetMaskBlue();
|
bMask = image.GetMaskBlue();
|
||||||
}
|
}
|
||||||
|
else // no mask, but still init the variables to avoid warnings
|
||||||
|
{
|
||||||
|
rMask =
|
||||||
|
gMask =
|
||||||
|
bMask = 0;
|
||||||
|
}
|
||||||
|
|
||||||
*ptr++ = width;
|
*ptr++ = width;
|
||||||
*ptr++ = height;
|
*ptr++ = height;
|
||||||
|
Reference in New Issue
Block a user