47 |
import java.awt.Rectangle; |
import java.awt.Rectangle; |
48 |
import java.awt.Window; |
import java.awt.Window; |
49 |
import java.awt.event.PaintEvent; |
import java.awt.event.PaintEvent; |
50 |
|
import java.awt.image.ColorModel; |
51 |
import java.awt.peer.FramePeer; |
import java.awt.peer.FramePeer; |
52 |
import java.awt.peer.MenuBarPeer; |
import java.awt.peer.MenuBarPeer; |
53 |
|
|
144 |
|
|
145 |
setTitle (frame.getTitle ()); |
setTitle (frame.getTitle ()); |
146 |
setResizable (frame.isResizable ()); |
setResizable (frame.isResizable ()); |
147 |
|
setIconImage(frame.getIconImage()); |
148 |
} |
} |
149 |
|
|
150 |
|
native void nativeSetIconImageFromDecoder (GdkPixbufDecoder decoder); |
151 |
|
native void nativeSetIconImageFromData (int[] pixels, int width, int height); |
152 |
public void setIconImage (Image image) |
public void setIconImage (Image image) |
153 |
{ |
{ |
154 |
/* TODO: Waiting on Toolkit Image routines */ |
if (image != null) |
155 |
|
{ |
156 |
|
GtkImage img = (GtkImage) image; |
157 |
|
// FIXME: Image should be loaded, but if not, do image loading here. |
158 |
|
if (img.isLoaded()) |
159 |
|
{ |
160 |
|
if (img.getSource() instanceof GdkPixbufDecoder) |
161 |
|
{ |
162 |
|
nativeSetIconImageFromDecoder((GdkPixbufDecoder) img.getSource()); |
163 |
|
} |
164 |
|
else |
165 |
|
{ |
166 |
|
int[] pixels = img.getPixelCache(); |
167 |
|
ColorModel model = img.getColorModel(); |
168 |
|
int[] data = new int[pixels.length * 4]; |
169 |
|
for (int i = 0; i < pixels.length; i++) |
170 |
|
{ |
171 |
|
data[i * 4] = model.getRed(pixels[i]); |
172 |
|
data[i * 4 + 1] = model.getGreen(pixels[i]); |
173 |
|
data[i * 4 + 2] = model.getBlue(pixels[i]); |
174 |
|
data[i * 4 + 3] = model.getAlpha(pixels[i]); |
175 |
|
} |
176 |
|
nativeSetIconImageFromData(data, img.getWidth(null), img.getHeight(null)); |
177 |
|
} |
178 |
|
} |
179 |
|
} |
180 |
} |
} |
181 |
|
|
182 |
public Graphics getGraphics () |
public Graphics getGraphics () |