1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski #include <X11/Xlib.h>
25*b1cdbd2cSJim Jagielski #include <X11/Xutil.h>
26*b1cdbd2cSJim Jagielski #include <X11/Intrinsic.h>
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielski #include "jawt.h"
29*b1cdbd2cSJim Jagielski #include "jawt_md.h"
30*b1cdbd2cSJim Jagielski #include "nativeview.h"
31*b1cdbd2cSJim Jagielski
32*b1cdbd2cSJim Jagielski #define MY_ASSERT(X,S) if (!X) { fprintf(stderr,S); return 0L;}
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski #define SYSTEM_WIN32 1
35*b1cdbd2cSJim Jagielski #define SYSTEM_WIN16 2
36*b1cdbd2cSJim Jagielski #define SYSTEM_JAVA 3
37*b1cdbd2cSJim Jagielski #define SYSTEM_OS2 4
38*b1cdbd2cSJim Jagielski #define SYSTEM_MAC 5
39*b1cdbd2cSJim Jagielski #define SYSTEM_XWINDOW 6
40*b1cdbd2cSJim Jagielski
41*b1cdbd2cSJim Jagielski /*****************************************************************************/
42*b1cdbd2cSJim Jagielski /*
43*b1cdbd2cSJim Jagielski * Class: NativeView
44*b1cdbd2cSJim Jagielski * Method: getNativeWindowSystemType
45*b1cdbd2cSJim Jagielski * Signature: ()I
46*b1cdbd2cSJim Jagielski */
Java_NativeView_getNativeWindowSystemType(JNIEnv * env,jobject obj_this)47*b1cdbd2cSJim Jagielski JNIEXPORT jint JNICALL Java_NativeView_getNativeWindowSystemType
48*b1cdbd2cSJim Jagielski (JNIEnv * env, jobject obj_this)
49*b1cdbd2cSJim Jagielski {
50*b1cdbd2cSJim Jagielski return (SYSTEM_XWINDOW);
51*b1cdbd2cSJim Jagielski }
52*b1cdbd2cSJim Jagielski
53*b1cdbd2cSJim Jagielski /*****************************************************************************/
54*b1cdbd2cSJim Jagielski /*
55*b1cdbd2cSJim Jagielski * Class: NativeView
56*b1cdbd2cSJim Jagielski * Method: getNativeWindow
57*b1cdbd2cSJim Jagielski * Signature: ()J
58*b1cdbd2cSJim Jagielski */
Java_NativeView_getNativeWindow(JNIEnv * env,jobject obj_this)59*b1cdbd2cSJim Jagielski JNIEXPORT jlong JNICALL Java_NativeView_getNativeWindow
60*b1cdbd2cSJim Jagielski (JNIEnv * env, jobject obj_this)
61*b1cdbd2cSJim Jagielski {
62*b1cdbd2cSJim Jagielski jboolean result ;
63*b1cdbd2cSJim Jagielski jint lock ;
64*b1cdbd2cSJim Jagielski JAWT awt ;
65*b1cdbd2cSJim Jagielski JAWT_DrawingSurface* ds ;
66*b1cdbd2cSJim Jagielski JAWT_DrawingSurfaceInfo* dsi ;
67*b1cdbd2cSJim Jagielski JAWT_X11DrawingSurfaceInfo* dsi_x11 ;
68*b1cdbd2cSJim Jagielski Drawable drawable;
69*b1cdbd2cSJim Jagielski Display* display ;
70*b1cdbd2cSJim Jagielski
71*b1cdbd2cSJim Jagielski /* Get the AWT */
72*b1cdbd2cSJim Jagielski awt.version = JAWT_VERSION_1_3;
73*b1cdbd2cSJim Jagielski result = JAWT_GetAWT(env, &awt);
74*b1cdbd2cSJim Jagielski MY_ASSERT(result != JNI_FALSE,"wrong jawt version");
75*b1cdbd2cSJim Jagielski
76*b1cdbd2cSJim Jagielski /* Get the drawing surface */
77*b1cdbd2cSJim Jagielski if ((ds = awt.GetDrawingSurface(env, obj_this)) == NULL)
78*b1cdbd2cSJim Jagielski return 0L;
79*b1cdbd2cSJim Jagielski
80*b1cdbd2cSJim Jagielski /* Lock the drawing surface */
81*b1cdbd2cSJim Jagielski lock = ds->Lock(ds);
82*b1cdbd2cSJim Jagielski MY_ASSERT((lock & JAWT_LOCK_ERROR)==0,"can't lock the drawing surface");
83*b1cdbd2cSJim Jagielski
84*b1cdbd2cSJim Jagielski /* Get the drawing surface info */
85*b1cdbd2cSJim Jagielski dsi = ds->GetDrawingSurfaceInfo(ds);
86*b1cdbd2cSJim Jagielski
87*b1cdbd2cSJim Jagielski /* Get the platform-specific drawing info */
88*b1cdbd2cSJim Jagielski dsi_x11 = (JAWT_X11DrawingSurfaceInfo*)dsi->platformInfo;
89*b1cdbd2cSJim Jagielski drawable = dsi_x11->drawable;
90*b1cdbd2cSJim Jagielski display = dsi_x11->display;
91*b1cdbd2cSJim Jagielski
92*b1cdbd2cSJim Jagielski /* Free the drawing surface info */
93*b1cdbd2cSJim Jagielski ds->FreeDrawingSurfaceInfo(dsi);
94*b1cdbd2cSJim Jagielski /* Unlock the drawing surface */
95*b1cdbd2cSJim Jagielski ds->Unlock(ds);
96*b1cdbd2cSJim Jagielski /* Free the drawing surface */
97*b1cdbd2cSJim Jagielski awt.FreeDrawingSurface(ds);
98*b1cdbd2cSJim Jagielski
99*b1cdbd2cSJim Jagielski return ((jlong)drawable);
100*b1cdbd2cSJim Jagielski }
101