Changeset 123 for trunk/src


Ignore:
Timestamp:
Jun 28, 2008, 12:25:13 AM (17 years ago)
Author:
lpino
Message:

New API calls and structures implemented

Location:
trunk/src/plugins/org.eclipse.swt/Eclipse SWT PI/pm/library
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/plugins/org.eclipse.swt/Eclipse SWT PI/pm/library/structs.c

    r78 r123  
    172172ACCEL_FID_CACHE ACCELFc;
    173173ACCELTABLE_FID_CACHE ACCELTABLEFc;
     174CURSORINFO_FID_CACHE CURSORINFOFc;
     175POINTL_FID_CACHE POINTLFc;
    174176
    175177/*@@TODO (dmik): remove
     
    14621464}
    14631465
    1464 /* ACCELTABLE struct */
     1466/***************************************** ACCELTABLE struct ***************************************/
    14651467
    14661468void cacheACCELTABLEFids(JNIEnv *env, jobject lpObject, PACCELTABLE_FID_CACHE lpCache)
     
    15111513}
    15121514
    1513 /* FACENAMEDESC struct */
     1515/******************************************** CURSORINFO struct *************************************/
     1516
     1517void cacheCURSORINFOFids(JNIEnv *env, jobject lpObject, PCURSORINFO_FID_CACHE lpCache)
     1518{
     1519    if (lpCache->cached) return;
     1520    lpCache->clazz = (*env)->GetObjectClass(env, lpObject);
     1521    lpCache->hwnd = (*env)->GetFieldID(env, lpCache->clazz, "hwnd", "I");
     1522    lpCache->x = (*env)->GetFieldID(env, lpCache->clazz, "x", "I");
     1523    lpCache->y = (*env)->GetFieldID(env, lpCache->clazz, "y", "I");
     1524    lpCache->cx = (*env)->GetFieldID(env, lpCache->clazz, "cx", "I");
     1525    lpCache->cy = (*env)->GetFieldID(env, lpCache->clazz, "cy", "I");
     1526    lpCache->fs = (*env)->GetFieldID(env, lpCache->clazz, "fs", "I");
     1527    lpCache->rclClip = (*env)->GetFieldID(env, lpCache->clazz, "rclClip", "Lorg/eclipse/swt/internal/pm/RECTL;");
     1528    lpCache->cached = 1;
     1529}
     1530
     1531PCURSORINFO getCURSORINFOFields(JNIEnv *env, jobject lpObject, PCURSORINFO lpStruct, PCURSORINFO_FID_CACHE lpCache)
     1532{
     1533    if (!lpCache->cached) cacheCURSORINFOFids(env, lpObject, lpCache);
     1534    lpStruct->hwnd = (*env)->GetIntField(env, lpObject, lpCache->hwnd);
     1535    lpStruct->x = (*env)->GetIntField(env, lpObject, lpCache->x);
     1536    lpStruct->y = (*env)->GetIntField(env, lpObject, lpCache->y);
     1537    lpStruct->cx = (*env)->GetIntField(env, lpObject, lpCache->cx);
     1538    lpStruct->cy = (*env)->GetIntField(env, lpObject, lpCache->cy);
     1539    lpStruct->fs = (*env)->GetIntField(env, lpObject, lpCache->fs);
     1540    {
     1541        jobject prclClip = (*env)->GetObjectField(env, lpObject, lpCache->rclClip);
     1542        if (prclClip){
     1543                if(&(lpStruct->rclClip)){
     1544                        getRECTLFields(env, prclClip, &(lpStruct->rclClip), &PGLOB(RECTLFc));
     1545                }
     1546        }
     1547    }   
     1548    return lpStruct;
     1549}
     1550
     1551void setCURSORINFOFields(JNIEnv *env, jobject lpObject, PCURSORINFO lpStruct, PCURSORINFO_FID_CACHE lpCache)
     1552{
     1553    if (!lpCache->cached) cacheCURSORINFOFids(env, lpObject, lpCache);
     1554    (*env)->SetIntField(env, lpObject, lpCache->hwnd, lpStruct->hwnd);
     1555    (*env)->SetIntField(env, lpObject, lpCache->x, lpStruct->x);
     1556    (*env)->SetIntField(env, lpObject, lpCache->y, lpStruct->y);
     1557    (*env)->SetIntField(env, lpObject, lpCache->cx, lpStruct->cx);
     1558    (*env)->SetIntField(env, lpObject, lpCache->cy, lpStruct->cy);
     1559    (*env)->SetIntField(env, lpObject, lpCache->fs, lpStruct->fs);
     1560    {
     1561        jobject prclClip = (*env)->GetObjectField(env, lpObject, lpCache->rclClip);
     1562        if (prclClip && &(lpStruct->rclClip))
     1563                setRECTLFields(env, prclClip, &(lpStruct->rclClip), &PGLOB(RECTLFc));
     1564    }
     1565}
     1566
     1567/***************************************** POINTL struct ***************************************/
     1568
     1569void cachePOINTLFids(JNIEnv *env, jobject lpObject, PPOINTL_FID_CACHE lpCache)
     1570{
     1571    if (lpCache->cached) return;
     1572    lpCache->clazz = (*env)->GetObjectClass(env, lpObject);
     1573    lpCache->x = (*env)->GetFieldID(env, lpCache->clazz, "x", "I");
     1574    lpCache->y = (*env)->GetFieldID(env, lpCache->clazz, "y", "I");
     1575    lpCache->cached = 1;
     1576}
     1577
     1578PPOINTL getPOINTLFields(JNIEnv *env, jobject lpObject, PPOINTL lpStruct, PPOINTL_FID_CACHE lpCache)
     1579{
     1580    if (!lpCache->cached) cachePOINTLFids(env, lpObject, lpCache);
     1581    lpStruct->x = (*env)->GetIntField(env, lpObject, lpCache->x);
     1582    lpStruct->y = (*env)->GetIntField(env, lpObject, lpCache->y);
     1583    return lpStruct;
     1584}
     1585
     1586void setPOINTLFields(JNIEnv *env, jobject lpObject, PPOINTL lpStruct, PPOINTL_FID_CACHE lpCache)
     1587{
     1588    if (!lpCache->cached) cachePOINTLFids(env, lpObject, lpCache);
     1589    (*env)->SetIntField(env, lpObject, lpCache->x, lpStruct->x);
     1590    (*env)->SetIntField(env, lpObject, lpCache->y, lpStruct->y);
     1591}
     1592
     1593/***************************************** FACENAMEDESC struct ********************************************/
    15141594/*@@TODO (dmik): don't need, remove!
    15151595void cacheFACENAMEDESCFids(JNIEnv *env, jobject lpObject, PFACENAMEDESC_FID_CACHE lpCache)
  • trunk/src/plugins/org.eclipse.swt/Eclipse SWT PI/pm/library/structs.h

    r79 r123  
    11/*
    22 * OS/2 version.
    3  * Copyright (c) 2002, 2004 EclipseOS2 Team.
     3 * Copyright (c) 2002, 2008 EclipseOS2 Team.
    44 */
    55
     
    533533void setACCELTABLEFields(JNIEnv *env, jobject lpObject, PACCELTABLE lpStruct, PACCELTABLE_FID_CACHE lpCache);
    534534
     535/* CURSORINFO struct */
     536typedef struct CURSORINFO_FID_CACHE {
     537    int cached;
     538    jclass clazz;
     539    jfieldID
     540        hwnd,     
     541        x,       
     542        y,       
     543        cx,       
     544        cy,       
     545        fs,     
     546        rclClip;
     547} CURSORINFO_FID_CACHE;
     548typedef CURSORINFO_FID_CACHE *PCURSORINFO_FID_CACHE;
     549
     550void cacheCURSORINFOFids(JNIEnv *env, jobject lpObject, PCURSORINFO_FID_CACHE lpCache);
     551PCURSORINFO getCURSORINFOFields(JNIEnv *env, jobject lpObject, PCURSORINFO lpStruct, PCURSORINFO_FID_CACHE lpCache);
     552void setCURSORINFOFields(JNIEnv *env, jobject lpObject, PCURSORINFO lpStruct, PCURSORINFO_FID_CACHE lpCache);
     553
     554/* POINTL struct */
     555typedef struct POINTL_FID_CACHE {
     556    int cached;
     557    jclass clazz;
     558    jfieldID
     559        x,       
     560        y;       
     561} POINTL_FID_CACHE;
     562typedef POINTL_FID_CACHE *PPOINTL_FID_CACHE;
     563
     564void cachePOINTLFids(JNIEnv *env, jobject lpObject, PPOINTL_FID_CACHE lpCache);
     565PPOINTL getPOINTLFields(JNIEnv *env, jobject lpObject, PPOINTL lpStruct, PPOINTL_FID_CACHE lpCache);
     566void setPOINTLFields(JNIEnv *env, jobject lpObject, PPOINTL lpStruct, PPOINTL_FID_CACHE lpCache);
     567
     568
    535569/* FACENAMEDESC struct */
    536570/*@@TODO (dmik): remove!
     
    576610extern ACCEL_FID_CACHE ACCELFc;
    577611extern ACCELTABLE_FID_CACHE ACCELTABLEFc;
     612extern CURSORINFO_FID_CACHE CURSORINFOFc;
     613extern POINTL_FID_CACHE POINTLFc;
    578614/*@@TODO (dmik): remove!
    579615extern FACENAMEDESC_FID_CACHE FACENAMEDESCFc;
  • trunk/src/plugins/org.eclipse.swt/Eclipse SWT PI/pm/library/swt.c

    r120 r123  
    14931493    return rc;
    14941494}
    1495 
     1495JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_pm_OS_WinQueryCursorInfo
     1496        (JNIEnv *env, jclass that, jint hwndDeskTop, jobject pcsriCursorInfo)
     1497{
     1498    CURSORINFO c_pcsriCursorInfo, *c_ppcsriCursorInfo = NULL;
     1499    jboolean rc;
     1500    DEBUG_CALL("WinQueryCursorInfo\n")
     1501
     1502    if (pcsriCursorInfo) c_ppcsriCursorInfo = getCURSORINFOFields(env, pcsriCursorInfo, &c_pcsriCursorInfo, &PGLOB(CURSORINFOFc));
     1503
     1504    rc = (jboolean)WinQueryCursorInfo((HWND)hwndDeskTop, c_ppcsriCursorInfo);
     1505
     1506    if (pcsriCursorInfo) setCURSORINFOFields(env, pcsriCursorInfo, c_ppcsriCursorInfo, &PGLOB(CURSORINFOFc));
     1507
     1508    return rc;
     1509}
     1510JNIEXPORT jboolean JNICALL Java_org_eclipse_swt_internal_pm_OS_WinWindowFromPoint
     1511        (JNIEnv *env, jclass that, jint hab, jint hwndParent, jobject pptlPoint, jboolean fEnumChildren)
     1512{
     1513    POINTL c_pptlPoint, *c_ppptlPoint = NULL;
     1514    jint rc;
     1515    DEBUG_CALL("WinWindowFromPoint\n")
     1516
     1517    if (pptlPoint) c_ppptlPoint = getPOINTLFields(env, pptlPoint, &c_pptlPoint, &PGLOB(POINTLFc));
     1518
     1519    rc = (jint)WinWindowFromPoint((HWND)hwndParent, c_ppptlPoint, fEnumChildren);
     1520
     1521    if (pptlPoint) setPOINTLFields(env, pptlPoint, c_ppptlPoint, &PGLOB(POINTLFc));
     1522
     1523    return rc;
     1524
     1525}
    14961526JNIEXPORT jboolean JNICALL Java_org_eclipse_swt_internal_pm_OS_PrfQueryProfileSize
    14971527        (JNIEnv *env, jclass that, jint hini, jobject pszApp, jobject pszKey,
Note: See TracChangeset for help on using the changeset viewer.