From 779e5947143ef97a0183b692cf5fd6b694b14d0f Mon Sep 17 00:00:00 2001 From: angryziber Date: Thu, 19 Mar 2009 22:15:34 +0000 Subject: [PATCH] another (ugly) version, compiles on 64bit platform, but doesn't fully work git-svn-id: https://ipscan.svn.sourceforge.net/svnroot/ipscan/trunk@444 375186e5-ef17-0410-b0b6-91563547dcda --- .../azib/ipscan/platform/linux/GTKHelper.java | 109 ++++++++++++------ 1 file changed, 75 insertions(+), 34 deletions(-) diff --git a/src/net/azib/ipscan/platform/linux/GTKHelper.java b/src/net/azib/ipscan/platform/linux/GTKHelper.java index cb5f88a3..e5655ccc 100644 --- a/src/net/azib/ipscan/platform/linux/GTKHelper.java +++ b/src/net/azib/ipscan/platform/linux/GTKHelper.java @@ -6,6 +6,9 @@ package net.azib.ipscan.platform.linux; +import java.lang.reflect.Field; +import java.lang.reflect.Method; + import net.azib.ipscan.platform.SWTHelper; import org.eclipse.swt.SWT; @@ -15,6 +18,7 @@ import org.eclipse.swt.graphics.PaletteData; import org.eclipse.swt.internal.Converter; import org.eclipse.swt.internal.gtk.OS; import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Display; /** * Helper class used internally by SWTHelper to extend functionality of SWT in some ways @@ -49,42 +53,79 @@ public class GTKHelper { return; } - // copy-paste from Display.setImage() follows, with replaced GTK_ICON_SIZE_MENU + + // copy-paste from Display.createImage() follows, with replaced GTK_ICON_SIZE_MENU - int /*long*/ style = OS.gtk_widget_get_default_style (); - byte[] buffer = Converter.wcsToMbcs (null, name, true); - int /*long*/ pixbuf = OS.gtk_icon_set_render_icon ( - OS.gtk_icon_factory_lookup_default (buffer), style, - OS.GTK_TEXT_DIR_NONE, OS.GTK_STATE_NORMAL, OS.GTK_ICON_SIZE_LARGE_TOOLBAR+1 /* OS.GTK_ICON_SIZE_BUTTON */, 0, 0); - if (pixbuf == 0) return; - int width = OS.gdk_pixbuf_get_width (pixbuf); - int height = OS.gdk_pixbuf_get_height (pixbuf); - int stride = OS.gdk_pixbuf_get_rowstride (pixbuf); - boolean hasAlpha = OS.gdk_pixbuf_get_has_alpha (pixbuf); - int /*long*/ pixels = OS.gdk_pixbuf_get_pixels (pixbuf); - byte [] data = new byte [stride * height]; - OS.memmove (data, pixels, data.length); - OS.g_object_unref (pixbuf); - ImageData imageData = null; - if (hasAlpha) { - PaletteData palette = new PaletteData (0xFF000000, 0xFF0000, 0xFF00); - imageData = new ImageData (width, height, 32, palette); - byte [] alpha = new byte [stride * height]; - for (int y=0; y