aboutsummaryrefslogtreecommitdiffstats
path: root/gl4java/jau/awt/motif/X11HandleAccess.java
blob: f07e111f842c37e6ce7c6b2e56a949fdf1be2614 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*
 * @(#) X11HandleAccess.java
 */

package gl4java.jau.awt.motif;

import sun.awt.X11DrawingSurface;
import sun.awt.DrawingSurface;
import sun.awt.DrawingSurfaceInfo;  

/**
 * The unix-x11 implementation for accessing the native window handle
 *
 * This class has no user servicable parts inside.  It is
 * used internally by GLFrame and by our package spoofed
 * sun.awt classes that give us internal access to window
 * variables that we need to set up the OpenGL drawing
 * ontext 
 *
 * @see WinHandleAccess
 * @version 	0.1, 7. JULY 1998
 * @author      Sven Goethel
 * 
 */
public class X11HandleAccess 
	implements gl4java.jau.awt.WinHandleAccess
{
  protected DrawingSurfaceInfo dsi;
  protected X11DrawingSurface wds;
  protected int window, depth;

  protected void achieveData(java.awt.Component c, java.awt.Graphics g)
  {
	/* outta java3d */
	dsi=null;
	wds=null;
	window=0; depth=0;

        dsi = ((DrawingSurface)(c.getPeer())).getDrawingSurfaceInfo();
	if(dsi!=null)
	{
		dsi.lock();
		wds = (X11DrawingSurface)dsi.getSurface();  
		dsi.unlock();
	}
	if(wds!=null)
	{
		dsi.lock();
		window = wds.getDrawable();
		depth = wds.getDepth();

		/*
			System.out.println("wds.Depth ="+wds.getDepth());
			System.out.println("wds.VisualID ="+wds.getVisualID());
			System.out.println("wds.Display ="+wds.getDisplay());
			System.out.println("wds.window ="+window);
			System.out.println("");
		*/

		dsi.unlock();
	}
	if(wds==null)
		System.out.println("X11HandleAccess.getWinHandle failed, because the given Component is NOT a Motif-Component\n");
  }

/**
 *
 * gets some structure for windows, and drawable on X11
 */
  public int getWinHandle(java.awt.Component c, java.awt.Graphics g)
  {
      achieveData(c, g);
      return window;
  }

/**
 *
 * gets some structure for windows, and drawable on X11
 */
  public int getWinDepth(java.awt.Component c, java.awt.Graphics g)
  {
  	achieveData(c, g);
	return depth;
  }
}