mirror of
https://github.com/2003scape/deep-c-rsc.git
synced 2024-03-22 05:49:51 -04:00
113 lines
3.1 KiB
Java
113 lines
3.1 KiB
Java
![]() |
/*
|
||
|
* This file is modified by Ivan Maidanski <ivmai@ivmaisoft.com>
|
||
|
* Project name: JCGO-SUNAWT (http://www.ivmaisoft.com/jcgo/)
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* @(#)WEmbeddedFrame.java 1.22 03/01/23
|
||
|
*
|
||
|
* Copyright 2003 Sun Microsystems, Inc. All rights reserved.
|
||
|
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
||
|
*/
|
||
|
|
||
|
package sun.awt.windows;
|
||
|
|
||
|
import sun.awt.*;
|
||
|
import java.awt.*;
|
||
|
import java.awt.event.*;
|
||
|
import java.awt.peer.ComponentPeer;
|
||
|
import java.util.*;
|
||
|
import java.awt.color.*;
|
||
|
import java.awt.image.*;
|
||
|
import sun.awt.image.ByteInterleavedRaster;
|
||
|
|
||
|
|
||
|
public class WEmbeddedFrame extends EmbeddedFrame {
|
||
|
|
||
|
static {
|
||
|
initIDs();
|
||
|
}
|
||
|
|
||
|
private long handle;
|
||
|
|
||
|
private int bandWidth = 0;
|
||
|
private int bandHeight = 0;
|
||
|
private BufferedImage bandImage = null;
|
||
|
private static final int MAX_BAND_SIZE = (1024*768);
|
||
|
|
||
|
public WEmbeddedFrame() {
|
||
|
this((long)0);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @deprecated This constructor will be removed in 1.5
|
||
|
*/
|
||
|
public WEmbeddedFrame(int handle) {
|
||
|
this((long)handle);
|
||
|
}
|
||
|
|
||
|
public WEmbeddedFrame(long handle) {
|
||
|
this.handle = handle;
|
||
|
WToolkit toolkit = (WToolkit)Toolkit.getDefaultToolkit();
|
||
|
setPeer(toolkit.createEmbeddedFrame(this));
|
||
|
show();
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Print the embedded frame and its children using the specified HDC.
|
||
|
*/
|
||
|
|
||
|
void print(int hdc) {
|
||
|
int frameHeight = getHeight();
|
||
|
if (bandImage == null) {
|
||
|
bandWidth = getWidth();
|
||
|
if (bandWidth % 4 != 0) {
|
||
|
bandWidth += (4 - (bandWidth % 4));
|
||
|
}
|
||
|
if (bandWidth <= 0) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
bandHeight = Math.min(MAX_BAND_SIZE/bandWidth, frameHeight);
|
||
|
bandImage = new BufferedImage(bandWidth, bandHeight,
|
||
|
BufferedImage.TYPE_3BYTE_BGR);
|
||
|
}
|
||
|
|
||
|
Graphics clearGraphics = bandImage.getGraphics();
|
||
|
clearGraphics.setColor(Color.white);
|
||
|
Graphics g2d = bandImage.getGraphics();
|
||
|
|
||
|
ByteInterleavedRaster ras = (ByteInterleavedRaster)bandImage.getRaster();
|
||
|
byte[] data = ras.getDataStorage();
|
||
|
|
||
|
for (int bandTop = 0; bandTop < frameHeight; bandTop += bandHeight) {
|
||
|
clearGraphics.fillRect(0, 0, bandWidth, bandHeight);
|
||
|
|
||
|
printComponents(g2d);
|
||
|
|
||
|
int currBandHeight = bandHeight;
|
||
|
if ((bandTop+bandHeight) > frameHeight) {
|
||
|
// last band
|
||
|
currBandHeight = frameHeight - bandTop;
|
||
|
}
|
||
|
printBand((long)hdc, data, 0, bandTop, bandWidth, currBandHeight);
|
||
|
g2d.translate(0, -bandHeight);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void synthesizeWindowActivation(boolean doActivate) {
|
||
|
synthesizeWmActivate(handle, doActivate);
|
||
|
}
|
||
|
|
||
|
private static native void synthesizeWmActivate(long handle,
|
||
|
boolean doActivate);
|
||
|
|
||
|
protected native void printBand(long hdc, byte[] data, int x, int y,
|
||
|
int width, int height);
|
||
|
|
||
|
/**
|
||
|
* Initialize JNI field IDs
|
||
|
*/
|
||
|
private static native void initIDs();
|
||
|
}
|