GLXWorkstation.st
author claus
Sat, 08 Jan 1994 18:17:39 +0100
changeset 24 e810b1be068b
parent 20 ab35d92b9a4b
child 29 c218ef0ae2b0
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
48194c26a46c Initial revision
claus
parents:
diff changeset
     1
"
48194c26a46c Initial revision
claus
parents:
diff changeset
     2
COPYRIGHT (c) 1993 by Claus Gittinger
48194c26a46c Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
48194c26a46c Initial revision
claus
parents:
diff changeset
     4
48194c26a46c Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
48194c26a46c Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
48194c26a46c Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
48194c26a46c Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
48194c26a46c Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
48194c26a46c Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
48194c26a46c Initial revision
claus
parents:
diff changeset
    11
"
48194c26a46c Initial revision
claus
parents:
diff changeset
    12
48194c26a46c Initial revision
claus
parents:
diff changeset
    13
XWorkstation subclass:#GLXWorkstation
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
    14
       instanceVariableNames:'activeWindow'
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    15
       classVariableNames:   ''
48194c26a46c Initial revision
claus
parents:
diff changeset
    16
       poolDictionaries:''
48194c26a46c Initial revision
claus
parents:
diff changeset
    17
       category:'Interface-Graphics'
48194c26a46c Initial revision
claus
parents:
diff changeset
    18
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    19
48194c26a46c Initial revision
claus
parents:
diff changeset
    20
GLXWorkstation comment:'
48194c26a46c Initial revision
claus
parents:
diff changeset
    21
48194c26a46c Initial revision
claus
parents:
diff changeset
    22
COPYRIGHT (c) 1993 by Claus Gittinger
48194c26a46c Initial revision
claus
parents:
diff changeset
    23
              All Rights Reserved
48194c26a46c Initial revision
claus
parents:
diff changeset
    24
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    25
$Header: /cvs/stx/stx/libview/GLXWorkstation.st,v 1.6 1994-01-08 17:16:42 claus Exp $
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    26
written dec 93 by claus
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    27
'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    28
48194c26a46c Initial revision
claus
parents:
diff changeset
    29
%{
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    30
/*
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    31
 * on SGI, this class is compiled with -DGLX, while
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    32
 * for simulation, this is compiled with -DVGL
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    33
 */
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    34
/*
48194c26a46c Initial revision
claus
parents:
diff changeset
    35
 * this is stupid, GLX defines String, which is also defined here ...
48194c26a46c Initial revision
claus
parents:
diff changeset
    36
 */
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    37
#define String GLX_String
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    38
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    39
#ifdef GLX
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    40
# include <gl/glws.h>
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
    41
# include <gl/sphere.h>
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    42
#else
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    43
# include <vogl.h>
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    44
# include <X11/Xlib.h>
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    45
#endif
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    46
48194c26a46c Initial revision
claus
parents:
diff changeset
    47
typedef enum {
48194c26a46c Initial revision
claus
parents:
diff changeset
    48
    GLXcolorIndexSingleBuffer,
48194c26a46c Initial revision
claus
parents:
diff changeset
    49
    GLXcolorIndexDoubleBuffer,
48194c26a46c Initial revision
claus
parents:
diff changeset
    50
    GLXrgbSingleBuffer,
48194c26a46c Initial revision
claus
parents:
diff changeset
    51
    GLXrgbDoubleBuffer
48194c26a46c Initial revision
claus
parents:
diff changeset
    52
} GLXWindowType;
48194c26a46c Initial revision
claus
parents:
diff changeset
    53
48194c26a46c Initial revision
claus
parents:
diff changeset
    54
extern Window GLXCreateWindow(Display*,Window,int,int,int,int,int,GLXWindowType);
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    55
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    56
#undef String
48194c26a46c Initial revision
claus
parents:
diff changeset
    57
48194c26a46c Initial revision
claus
parents:
diff changeset
    58
/*
48194c26a46c Initial revision
claus
parents:
diff changeset
    59
 * some defines - tired of typing ...
48194c26a46c Initial revision
claus
parents:
diff changeset
    60
 */
48194c26a46c Initial revision
claus
parents:
diff changeset
    61
#define MKDPY(o)       (Display *)(_intVal(o))
48194c26a46c Initial revision
claus
parents:
diff changeset
    62
#define MKWIN(o)       (Window)(_intVal(o))
48194c26a46c Initial revision
claus
parents:
diff changeset
    63
#define MKGC(o)        (GC)(_intVal(o))
48194c26a46c Initial revision
claus
parents:
diff changeset
    64
#define MKCURS(o)      (Cursor)(_intVal(o))
48194c26a46c Initial revision
claus
parents:
diff changeset
    65
#define MKFONT(o)      (XFontStruct *)(_intVal(o))
48194c26a46c Initial revision
claus
parents:
diff changeset
    66
#define MKDPSContext(o)      (DPSContext)(_intVal(o))
48194c26a46c Initial revision
claus
parents:
diff changeset
    67
48194c26a46c Initial revision
claus
parents:
diff changeset
    68
#define myDpy MKDPY(_INST(displayId))
48194c26a46c Initial revision
claus
parents:
diff changeset
    69
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
    70
#define SETWIN(aGLXWindowId)                             \
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
    71
    if (_INST(activeWindow) != aGLXWindowId) {           \
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
    72
        if (GLXwinset(myDpy, MKWIN(aGLXWindowId)) < 0) { \
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
    73
            RETURN (false);                              \
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
    74
        }                                                \
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
    75
        _INST(activeWindow) = aGLXWindowId;              \
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
    76
    }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
    77
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    78
#define _COORD_(arg, dst)               \
48194c26a46c Initial revision
claus
parents:
diff changeset
    79
    if (_isFloat(arg))                  \
48194c26a46c Initial revision
claus
parents:
diff changeset
    80
        dst = (Coord)(_floatVal(arg));  \
48194c26a46c Initial revision
claus
parents:
diff changeset
    81
    else if (_isSmallInteger(arg))      \
48194c26a46c Initial revision
claus
parents:
diff changeset
    82
        dst = (Coord)(_intVal(arg));    \
48194c26a46c Initial revision
claus
parents:
diff changeset
    83
    else break;
48194c26a46c Initial revision
claus
parents:
diff changeset
    84
48194c26a46c Initial revision
claus
parents:
diff changeset
    85
#define _FLOAT_(arg, dst)               \
48194c26a46c Initial revision
claus
parents:
diff changeset
    86
    if (_isFloat(arg))                  \
48194c26a46c Initial revision
claus
parents:
diff changeset
    87
        dst = (float)(_floatVal(arg));  \
48194c26a46c Initial revision
claus
parents:
diff changeset
    88
    else if (_isSmallInteger(arg))      \
48194c26a46c Initial revision
claus
parents:
diff changeset
    89
        dst = (float)(_intVal(arg));    \
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    90
    else if (_isFraction(arg)             \
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    91
          && _isSmallInteger(_FractionInstPtr(arg)->f_numerator)      \
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    92
          && _isSmallInteger(_FractionInstPtr(arg)->f_denominator)) { \
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    93
        float n, d;                                                   \
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    94
        n = (float)(_intVal(_FractionInstPtr(arg)->f_numerator));     \
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    95
        d = (float)(_intVal(_FractionInstPtr(arg)->f_denominator));   \
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    96
        dst = n / d;                                                  \
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
    97
    } else break;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    98
48194c26a46c Initial revision
claus
parents:
diff changeset
    99
#define _ANGLE_(arg, dst)               \
48194c26a46c Initial revision
claus
parents:
diff changeset
   100
    if (_isSmallInteger(arg))           \
48194c26a46c Initial revision
claus
parents:
diff changeset
   101
        dst = (Angle)(_intVal(arg));    \
48194c26a46c Initial revision
claus
parents:
diff changeset
   102
    else break;
48194c26a46c Initial revision
claus
parents:
diff changeset
   103
48194c26a46c Initial revision
claus
parents:
diff changeset
   104
#define _INT_(arg, dst)                 \
48194c26a46c Initial revision
claus
parents:
diff changeset
   105
    if (_isSmallInteger(arg))           \
48194c26a46c Initial revision
claus
parents:
diff changeset
   106
        dst = (int)(_intVal(arg));      \
48194c26a46c Initial revision
claus
parents:
diff changeset
   107
    else break;
48194c26a46c Initial revision
claus
parents:
diff changeset
   108
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   109
/*
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   110
 * helper to fetch count floats from the object obj
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   111
 * space is provided in vec.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   112
 * returns a pointer to the floats,
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   113
 * which is obj itself, if it is a FloatArray
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   114
 * the object may be a FloatArray, DoubleArray or an array of
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   115
 * floats/smallintegers
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   116
 */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   117
static float *
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   118
getFloatsFromInto(obj, vec, count)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   119
   OBJ obj;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   120
   float *vec;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   121
{
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   122
    OBJ cls;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   123
    int nByte;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   124
    OBJ o;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   125
    int i, ninstVars, nInstBytes;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   126
    char *pElem;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   127
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   128
    if (! _isNonNilObject(obj)) return (float *)0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   129
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   130
    cls = _qClass(obj);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   131
    ninstVars = _intVal(_ClassInstPtr(cls)->c_ninstvars);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   132
    nInstBytes = OHDR_SIZE + ninstVars * sizeof(OBJ);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   133
    nByte = _qSize(obj) - nInstBytes;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   134
    pElem = (char *)(_InstPtr(obj)) + nInstBytes;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   135
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   136
    switch (_intVal(_ClassInstPtr(cls)->c_flags) & ARRAYMASK) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   137
      case FLOATARRAY:
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   138
        /* 
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   139
         * best speed for float array 
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   140
         * - the data is already as we want it 
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   141
         */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   142
        if (nByte < (count * sizeof(float))) return (float *)0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   143
        return (float *)pElem;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   144
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   145
      case DOUBLEARRAY:
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   146
        /*
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   147
         * for double array, have to copy-and-cast
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   148
         */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   149
        if (nByte < (count * sizeof(double))) return (float *)0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   150
        for (i=0; i<count; i++) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   151
            vec[i] = *((double *)pElem);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   152
            pElem += sizeof(double);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   153
        }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   154
        return vec;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   155
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   156
      case POINTERARRAY:
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   157
        /*
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   158
         * for other array, have to fetch, check and store
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   159
         * the elements can be floats, smallintegers or fractions
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   160
         */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   161
        if (nByte < (count * sizeof(OBJ))) return (float *)0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   162
        /* get elements one-by-one */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   163
        for (i=0; i<count; i++) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   164
            o = *(OBJ *)pElem;
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   165
            if (_isFloat(o)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   166
                vec[i] = _floatVal(o);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   167
            } else if (_isSmallInteger(o)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   168
                vec[i] = (float)(_intVal(o));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   169
            } else if (_isFraction(o) 
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   170
                    && _isSmallInteger(_FractionInstPtr(o)->f_numerator)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   171
                    && _isSmallInteger(_FractionInstPtr(o)->f_denominator)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   172
                float n, d;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   173
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   174
                n = (float)(_intVal(_FractionInstPtr(o)->f_numerator));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   175
                d = (float)(_intVal(_FractionInstPtr(o)->f_denominator));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   176
                vec[i] = n / d;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   177
            } else 
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   178
                return 0;
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   179
            pElem += sizeof(OBJ);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   180
        }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   181
        return vec;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   182
    }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   183
    return (float *)0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   184
}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   185
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   186
static
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   187
putFloatsFromInto(vec, obj, count)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   188
   OBJ obj;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   189
   float *vec;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   190
{
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   191
    OBJ cls;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   192
    int nByte;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   193
    OBJ o;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   194
    int i, ninstVars, nInstBytes;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   195
    char *pElem;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   196
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   197
    if (! _isNonNilObject(obj)) return 0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   198
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   199
    cls = _qClass(obj);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   200
    ninstVars = _intVal(_ClassInstPtr(cls)->c_ninstvars);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   201
    nInstBytes = OHDR_SIZE + ninstVars * sizeof(OBJ);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   202
    nByte = _qSize(obj) - nInstBytes;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   203
    pElem = (char *)(_InstPtr(obj)) + nInstBytes;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   204
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   205
    switch (_intVal(_ClassInstPtr(cls)->c_flags) & ARRAYMASK) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   206
      case FLOATARRAY:
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   207
        if (nByte < (count * sizeof(float))) return 0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   208
        for (i=0; i<count; i++) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   209
            *(float *)pElem = vec[i];
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   210
            pElem += sizeof(float);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   211
        }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   212
        return 1;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   213
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   214
      case DOUBLEARRAY:
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   215
        if (nByte < (count * sizeof(float))) return 0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   216
        for (i=0; i<count; i++) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   217
            *(double *)pElem = vec[i];
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   218
            pElem += sizeof(double);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   219
        }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   220
        return 1;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   221
    }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   222
    /* not implemented for others */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   223
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   224
    return 0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   225
}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   226
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   227
/*
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   228
 * helper to fetch a matrix with 16 floats from an object
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   229
 */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   230
static Matrix*
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   231
getFloatsFromMatrixInto(obj, mp)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   232
    OBJ obj;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   233
    Matrix *mp;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   234
{
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   235
    OBJ cls;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   236
    extern OBJ FloatArray, DoubleArray, Array;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   237
    int nByte;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   238
    OBJ o;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   239
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   240
    if (! _isNonNilObject(obj)) return (Matrix *)0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   241
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   242
    cls = _qClass(obj);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   243
    nByte = _qSize(obj) - OHDR_SIZE;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   244
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   245
    if (cls == FloatArray) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   246
        int x = 0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   247
        int i,j;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   248
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   249
        if (nByte < (16 * sizeof(float))) return (Matrix *)0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   250
        return (Matrix *) _FloatArrayInstPtr(obj)->f_element;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   251
    }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   252
    
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   253
    if (cls == DoubleArray) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   254
        int x = 0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   255
        int i,j;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   256
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   257
        if (nByte < (16 * sizeof(double))) return (Matrix *)0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   258
        for (i=0; i<4; i++) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   259
            for (j=0; j<4; j++) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   260
                (*mp)[i][j] = _DoubleArrayInstPtr(obj)->d_element[x];
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   261
                x++;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   262
            }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   263
        }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   264
        return mp;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   265
    }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   266
    
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   267
    if (cls == Array) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   268
        int x = 0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   269
        int i,j;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   270
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   271
        if (nByte < (16 * sizeof(OBJ))) return (Matrix *)0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   272
        /* get elements one-by-one */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   273
        for (i=0; i<4; i++) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   274
            for (j=0; j<4; j++) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   275
                o = _ArrayInstPtr(obj)->a_element[x];
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   276
                if (_isFloat(o)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   277
                    (*mp)[i][j] = _floatVal(o);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   278
                } else if (_isSmallInteger(o)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   279
                    (*mp)[i][j] = (float)(_intVal(o));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   280
                } else if (_isFraction(o) 
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   281
                        && _isSmallInteger(_FractionInstPtr(o)->f_numerator)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   282
                        && _isSmallInteger(_FractionInstPtr(o)->f_denominator)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   283
                    float n, d;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   284
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   285
                    n = (float)(_intVal(_FractionInstPtr(o)->f_numerator));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   286
                    d = (float)(_intVal(_FractionInstPtr(o)->f_denominator));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   287
                    (*mp)[i][j] = n / d;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   288
                } else {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   289
                    return (Matrix *)0;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   290
                }
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   291
                x++;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   292
            }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   293
        }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   294
        return mp;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   295
    }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   296
    return (Matrix *)0;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   297
}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   298
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   299
/*
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   300
 * helper for rotation
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   301
 */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   302
static OBJ
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   303
doRotate(angle, axis)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   304
    OBJ angle;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   305
    char axis;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   306
{
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   307
    Angle a_angle;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   308
    float f_angle;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   309
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   310
    if (_isFloat(angle)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   311
        f_angle = (float)(_floatVal(angle));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   312
        rot(f_angle, axis);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   313
        return (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   314
    }
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   315
    if (_isFraction(angle)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   316
     && _isSmallInteger(_FractionInstPtr(angle)->f_numerator)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   317
     && _isSmallInteger(_FractionInstPtr(angle)->f_denominator)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   318
        float n, d;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   319
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   320
        n = (float)(_intVal(_FractionInstPtr(angle)->f_numerator));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   321
        d = (float)(_intVal(_FractionInstPtr(angle)->f_denominator));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   322
        f_angle = n / d;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   323
        rot(f_angle, axis);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   324
        return (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   325
    }
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   326
    if (_isSmallInteger(angle)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   327
        a_angle = (Angle)(_intVal(angle));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   328
        rotate(a_angle, axis);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   329
        return (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   330
    }
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   331
    return false;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   332
}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   333
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   334
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   335
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   336
!GLXWorkstation methodsFor:'queries'!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   337
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   338
supportsRGB
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   339
    "return true, if this gl workstation supports rgb
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   340
     (in addition to indexed) colors."
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   341
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   342
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   343
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   344
#ifdef VGL
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   345
    RETURN ( false );
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   346
#endif
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   347
#ifdef GLX
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   348
    RETURN ( true );
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   349
#endif
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   350
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   351
! !
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   352
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   353
!GLXWorkstation methodsFor:'window creation'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   354
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   355
createGLXWindowFor:aView left:xpos top:ypos width:wwidth height:wheight type:glxType
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   356
    |ext minWidth minHeight maxWidth maxHeight 
48194c26a46c Initial revision
claus
parents:
diff changeset
   357
     bWidth bColor viewBg viewBgId wsuperView wsuperViewId wcreateOnTop 
48194c26a46c Initial revision
claus
parents:
diff changeset
   358
     winputOnly wlabel wcursor wcursorId wicon wiconId windowId
48194c26a46c Initial revision
claus
parents:
diff changeset
   359
     weventMask wiconView wiconViewId bitGravity viewGravity vBgColor
48194c26a46c Initial revision
claus
parents:
diff changeset
   360
     vBgForm deepForm|
48194c26a46c Initial revision
claus
parents:
diff changeset
   361
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   362
    "{ Symbol: colorIndexSingleBuffer }"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   363
    "{ Symbol: colorIndexDoubleBuffer }"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   364
    "{ Symbol: rgbSingleBuffer }"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   365
    "{ Symbol: rgbDoubleBuffer }"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   366
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   367
    wsuperView := aView superView.
48194c26a46c Initial revision
claus
parents:
diff changeset
   368
    wsuperView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   369
        wsuperViewId := wsuperView id
48194c26a46c Initial revision
claus
parents:
diff changeset
   370
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   371
48194c26a46c Initial revision
claus
parents:
diff changeset
   372
%{
48194c26a46c Initial revision
claus
parents:
diff changeset
   373
    Display *dpy = myDpy;
48194c26a46c Initial revision
claus
parents:
diff changeset
   374
    int screen = _intVal(_INST(screen));
48194c26a46c Initial revision
claus
parents:
diff changeset
   375
    Window newWindow, parentWindow;
48194c26a46c Initial revision
claus
parents:
diff changeset
   376
    extern Window GLXCreateWindow();
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   377
    int t;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   378
48194c26a46c Initial revision
claus
parents:
diff changeset
   379
    if (_isSmallInteger(xpos) && _isSmallInteger(ypos)
48194c26a46c Initial revision
claus
parents:
diff changeset
   380
     && _isSmallInteger(wwidth) && _isSmallInteger(wheight)) {
48194c26a46c Initial revision
claus
parents:
diff changeset
   381
        if (_isSmallInteger(wsuperViewId)) {
48194c26a46c Initial revision
claus
parents:
diff changeset
   382
            parentWindow = MKWIN(wsuperViewId);
48194c26a46c Initial revision
claus
parents:
diff changeset
   383
        } else {
48194c26a46c Initial revision
claus
parents:
diff changeset
   384
            parentWindow = RootWindow(dpy, screen);
48194c26a46c Initial revision
claus
parents:
diff changeset
   385
        }
48194c26a46c Initial revision
claus
parents:
diff changeset
   386
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   387
        if (glxType == _colorIndexSingleBuffer)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   388
            t = GLXcolorIndexSingleBuffer;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   389
        else if (glxType == _colorIndexDoubleBuffer)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   390
            t = GLXcolorIndexDoubleBuffer;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   391
        else if (glxType == _rgbSingleBuffer)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   392
            t = GLXrgbSingleBuffer;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   393
        else if (glxType == _rgbDoubleBuffer)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   394
            t = GLXrgbDoubleBuffer;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   395
        else {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   396
            RETURN ( nil );
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   397
        }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   398
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   399
        newWindow = GLXCreateWindow(dpy, parentWindow,
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   400
                                    _intVal(xpos), _intVal(ypos),
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   401
                                    _intVal(wwidth), _intVal(wheight),
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   402
                                    0, t);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   403
48194c26a46c Initial revision
claus
parents:
diff changeset
   404
        if (! newWindow) {
48194c26a46c Initial revision
claus
parents:
diff changeset
   405
            RETURN ( nil );
48194c26a46c Initial revision
claus
parents:
diff changeset
   406
        }
48194c26a46c Initial revision
claus
parents:
diff changeset
   407
48194c26a46c Initial revision
claus
parents:
diff changeset
   408
        windowId = MKOBJ(newWindow);
48194c26a46c Initial revision
claus
parents:
diff changeset
   409
    }
48194c26a46c Initial revision
claus
parents:
diff changeset
   410
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   411
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   412
    windowId notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   413
        self addKnownView:aView withId:windowId.
48194c26a46c Initial revision
claus
parents:
diff changeset
   414
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   415
    ^ windowId
20
ab35d92b9a4b *** empty log message ***
claus
parents: 19
diff changeset
   416
!
ab35d92b9a4b *** empty log message ***
claus
parents: 19
diff changeset
   417
ab35d92b9a4b *** empty log message ***
claus
parents: 19
diff changeset
   418
unlinkGLXView:aGLXWindowId
ab35d92b9a4b *** empty log message ***
claus
parents: 19
diff changeset
   419
    "remove X/GLX link"
ab35d92b9a4b *** empty log message ***
claus
parents: 19
diff changeset
   420
%{
ab35d92b9a4b *** empty log message ***
claus
parents: 19
diff changeset
   421
    if (_isSmallInteger(aGLXWindowId))
ab35d92b9a4b *** empty log message ***
claus
parents: 19
diff changeset
   422
        GLXUnlinkWindow(myDpy, MKWIN(aGLXWindowId));
ab35d92b9a4b *** empty log message ***
claus
parents: 19
diff changeset
   423
%}
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   424
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   425
48194c26a46c Initial revision
claus
parents:
diff changeset
   426
!GLXWorkstation methodsFor:'glx access'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   427
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   428
glxPerspectiveFovy:fovy aspect:aspect near:near far:far in:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   429
    "define perspective projection"
48194c26a46c Initial revision
claus
parents:
diff changeset
   430
48194c26a46c Initial revision
claus
parents:
diff changeset
   431
%{  /* NOCONTEXT */
48194c26a46c Initial revision
claus
parents:
diff changeset
   432
48194c26a46c Initial revision
claus
parents:
diff changeset
   433
    Angle a_fovy;
48194c26a46c Initial revision
claus
parents:
diff changeset
   434
    Coord c_near, c_far;
48194c26a46c Initial revision
claus
parents:
diff changeset
   435
    float f_aspect;
48194c26a46c Initial revision
claus
parents:
diff changeset
   436
48194c26a46c Initial revision
claus
parents:
diff changeset
   437
    do {
48194c26a46c Initial revision
claus
parents:
diff changeset
   438
        _ANGLE_ (fovy, a_fovy);
48194c26a46c Initial revision
claus
parents:
diff changeset
   439
        _FLOAT_ (aspect, f_aspect);
48194c26a46c Initial revision
claus
parents:
diff changeset
   440
        _COORD_ (near, c_near);
48194c26a46c Initial revision
claus
parents:
diff changeset
   441
        _COORD_ (far, c_far);
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   442
        SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   443
        perspective(a_fovy, f_aspect, c_near, c_far);
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   444
        RETURN (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   445
    } while(0);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   446
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   447
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   448
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   449
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   450
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   451
glxWindowLeft:left right:right top:top bottom:bottom near:near far:far in:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   452
    "define perspective viewing pyramid"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   453
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   454
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   455
    Coord c_left, c_right, c_top, c_bot, c_near, c_far;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   456
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   457
    do {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   458
        _COORD_ (left, c_left);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   459
        _COORD_ (right, c_right);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   460
        _COORD_ (top, c_top);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   461
        _COORD_ (bottom, c_bot);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   462
        _COORD_ (near, c_near);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   463
        _COORD_ (far, c_far);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   464
        SETWIN(aGLXWindowId)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   465
        window(c_left, c_right, c_bot, c_top, c_near, c_far);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   466
48194c26a46c Initial revision
claus
parents:
diff changeset
   467
        RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   468
    } while(0);
48194c26a46c Initial revision
claus
parents:
diff changeset
   469
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   470
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   471
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   472
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   473
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   474
glxTranslateX:x y:y z:z in:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   475
    "translate current matrix"
48194c26a46c Initial revision
claus
parents:
diff changeset
   476
48194c26a46c Initial revision
claus
parents:
diff changeset
   477
%{  /* NOCONTEXT */
48194c26a46c Initial revision
claus
parents:
diff changeset
   478
48194c26a46c Initial revision
claus
parents:
diff changeset
   479
    Coord c_x, c_y, c_z;
48194c26a46c Initial revision
claus
parents:
diff changeset
   480
48194c26a46c Initial revision
claus
parents:
diff changeset
   481
    do {
48194c26a46c Initial revision
claus
parents:
diff changeset
   482
        _COORD_ (x, c_x);
48194c26a46c Initial revision
claus
parents:
diff changeset
   483
        _COORD_ (y, c_y);
48194c26a46c Initial revision
claus
parents:
diff changeset
   484
        _COORD_ (z, c_z);
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   485
        SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   486
        translate(c_x, c_y, c_z);
48194c26a46c Initial revision
claus
parents:
diff changeset
   487
        RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   488
    } while(0);
48194c26a46c Initial revision
claus
parents:
diff changeset
   489
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   490
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   491
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   492
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   493
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   494
glxScaleX:x y:y z:z in:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   495
    "scale & mirror current matrix"
48194c26a46c Initial revision
claus
parents:
diff changeset
   496
48194c26a46c Initial revision
claus
parents:
diff changeset
   497
%{  /* NOCONTEXT */
48194c26a46c Initial revision
claus
parents:
diff changeset
   498
48194c26a46c Initial revision
claus
parents:
diff changeset
   499
    float f_x, f_y, f_z;
48194c26a46c Initial revision
claus
parents:
diff changeset
   500
48194c26a46c Initial revision
claus
parents:
diff changeset
   501
    do {
48194c26a46c Initial revision
claus
parents:
diff changeset
   502
        _FLOAT_ (x, f_x);
48194c26a46c Initial revision
claus
parents:
diff changeset
   503
        _FLOAT_ (y, f_y);
48194c26a46c Initial revision
claus
parents:
diff changeset
   504
        _FLOAT_ (z, f_z);
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   505
        SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   506
        scale(f_x, f_y, f_z);
48194c26a46c Initial revision
claus
parents:
diff changeset
   507
        RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   508
    } while(0);
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   509
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   510
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   511
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   512
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   513
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   514
glxRotateX:angle in:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   515
    "rotate the current matrix on x axis"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   516
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   517
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   518
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   519
    SETWIN(aGLXWindowId)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   520
    RETURN (doRotate(angle, 'x'));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   521
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   522
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   523
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   524
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   525
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   526
glxRotateY:angle in:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   527
    "rotate the current matrix on y axis"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   528
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   529
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   530
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   531
    SETWIN(aGLXWindowId)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   532
    RETURN (doRotate(angle, 'y'));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   533
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   534
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   535
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   536
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   537
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   538
glxRotateZ:angle in:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   539
    "rotate the current matrix on z axis"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   540
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   541
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   542
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   543
    SETWIN(aGLXWindowId)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   544
    RETURN (doRotate(angle, 'z'));
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   545
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   546
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   547
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   548
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   549
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   550
glxRotate:angle axis:axis in:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   551
    "rotate the current matrix"
48194c26a46c Initial revision
claus
parents:
diff changeset
   552
48194c26a46c Initial revision
claus
parents:
diff changeset
   553
    "{ Symbol: x }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   554
    "{ Symbol: y }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   555
    "{ Symbol: z }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   556
48194c26a46c Initial revision
claus
parents:
diff changeset
   557
%{  /* NOCONTEXT */
48194c26a46c Initial revision
claus
parents:
diff changeset
   558
48194c26a46c Initial revision
claus
parents:
diff changeset
   559
    char c_axis;
48194c26a46c Initial revision
claus
parents:
diff changeset
   560
48194c26a46c Initial revision
claus
parents:
diff changeset
   561
    do {
48194c26a46c Initial revision
claus
parents:
diff changeset
   562
        if (axis == _x)
48194c26a46c Initial revision
claus
parents:
diff changeset
   563
            c_axis = 'x';
48194c26a46c Initial revision
claus
parents:
diff changeset
   564
        else if (axis == _y)
48194c26a46c Initial revision
claus
parents:
diff changeset
   565
            c_axis = 'y';
48194c26a46c Initial revision
claus
parents:
diff changeset
   566
        else if (axis == _z)
48194c26a46c Initial revision
claus
parents:
diff changeset
   567
            c_axis = 'z';
48194c26a46c Initial revision
claus
parents:
diff changeset
   568
        else break;
48194c26a46c Initial revision
claus
parents:
diff changeset
   569
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   570
        SETWIN(aGLXWindowId)
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   571
        RETURN ( doRotate(angle, c_axis) );
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   572
    } while(0);
48194c26a46c Initial revision
claus
parents:
diff changeset
   573
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   574
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   575
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   576
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   577
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   578
glxRotateX:xAngle y:yAngle z:zAngle in:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   579
    "rotate the current matrix on all axis"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   580
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   581
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   582
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   583
    SETWIN(aGLXWindowId)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   584
    if ( doRotate(xAngle, 'x') == true) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   585
        if ( doRotate(yAngle, 'y') == true) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   586
            RETURN (doRotate(zAngle, 'z'));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   587
        }
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   588
    }
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   589
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   590
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   591
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   592
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   593
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   594
glxLookatVx:vx vy:vy vz:vz px:px py:py pz:pz twist:twist in:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   595
    "define viewing transformation"
48194c26a46c Initial revision
claus
parents:
diff changeset
   596
48194c26a46c Initial revision
claus
parents:
diff changeset
   597
%{  /* NOCONTEXT */
48194c26a46c Initial revision
claus
parents:
diff changeset
   598
48194c26a46c Initial revision
claus
parents:
diff changeset
   599
    Coord f_vx, f_vy, f_vz, f_px, f_py, f_pz;
48194c26a46c Initial revision
claus
parents:
diff changeset
   600
    Angle a_twist;
48194c26a46c Initial revision
claus
parents:
diff changeset
   601
48194c26a46c Initial revision
claus
parents:
diff changeset
   602
    do {
48194c26a46c Initial revision
claus
parents:
diff changeset
   603
        _COORD_ (vx, f_vx);
48194c26a46c Initial revision
claus
parents:
diff changeset
   604
        _COORD_ (vy, f_vy);
48194c26a46c Initial revision
claus
parents:
diff changeset
   605
        _COORD_ (vz, f_vz);
48194c26a46c Initial revision
claus
parents:
diff changeset
   606
        _COORD_ (px, f_px);
48194c26a46c Initial revision
claus
parents:
diff changeset
   607
        _COORD_ (py, f_py);
48194c26a46c Initial revision
claus
parents:
diff changeset
   608
        _COORD_ (pz, f_pz);
48194c26a46c Initial revision
claus
parents:
diff changeset
   609
        _ANGLE_ (twist, a_twist);
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   610
        SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   611
        lookat(f_vx, f_vy, f_vz, f_px, f_py, f_pz, a_twist);
48194c26a46c Initial revision
claus
parents:
diff changeset
   612
        RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   613
    } while(0);
48194c26a46c Initial revision
claus
parents:
diff changeset
   614
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   615
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   616
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   617
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   618
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   619
glxLmdef:what index:index np:np props:props in:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   620
    "define a material, light source or lighting model;
48194c26a46c Initial revision
claus
parents:
diff changeset
   621
     props must be a FloatArray"
48194c26a46c Initial revision
claus
parents:
diff changeset
   622
48194c26a46c Initial revision
claus
parents:
diff changeset
   623
    "{ Symbol: material }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   624
    "{ Symbol: light }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   625
    "{ Symbol: lightModel }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   626
48194c26a46c Initial revision
claus
parents:
diff changeset
   627
%{  /* NOCONTEXT */
48194c26a46c Initial revision
claus
parents:
diff changeset
   628
#ifdef GLX
48194c26a46c Initial revision
claus
parents:
diff changeset
   629
    short defType;
48194c26a46c Initial revision
claus
parents:
diff changeset
   630
    short i_index, i_np;
48194c26a46c Initial revision
claus
parents:
diff changeset
   631
    extern OBJ FloatArray;
48194c26a46c Initial revision
claus
parents:
diff changeset
   632
    float *fp;
48194c26a46c Initial revision
claus
parents:
diff changeset
   633
48194c26a46c Initial revision
claus
parents:
diff changeset
   634
    do {
48194c26a46c Initial revision
claus
parents:
diff changeset
   635
        if (what == _material)
48194c26a46c Initial revision
claus
parents:
diff changeset
   636
            defType = DEFMATERIAL;
48194c26a46c Initial revision
claus
parents:
diff changeset
   637
        else if (what == _light)
48194c26a46c Initial revision
claus
parents:
diff changeset
   638
            defType = DEFLIGHT;
48194c26a46c Initial revision
claus
parents:
diff changeset
   639
        else if (what == _lightModel)
48194c26a46c Initial revision
claus
parents:
diff changeset
   640
            defType = DEFLMODEL;
48194c26a46c Initial revision
claus
parents:
diff changeset
   641
        else break;
48194c26a46c Initial revision
claus
parents:
diff changeset
   642
48194c26a46c Initial revision
claus
parents:
diff changeset
   643
        _INT_ (index, i_index);
48194c26a46c Initial revision
claus
parents:
diff changeset
   644
        _INT_ (np, i_np);
48194c26a46c Initial revision
claus
parents:
diff changeset
   645
48194c26a46c Initial revision
claus
parents:
diff changeset
   646
        if (props == nil) fp = NULL;
48194c26a46c Initial revision
claus
parents:
diff changeset
   647
        else if (_Class(props) == FloatArray)
48194c26a46c Initial revision
claus
parents:
diff changeset
   648
            fp = _FloatArrayInstPtr(props)->f_element;
48194c26a46c Initial revision
claus
parents:
diff changeset
   649
        else break;
48194c26a46c Initial revision
claus
parents:
diff changeset
   650
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   651
        SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   652
        lmdef(defType, i_index, i_np, fp);
48194c26a46c Initial revision
claus
parents:
diff changeset
   653
        RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   654
    } while(0);
48194c26a46c Initial revision
claus
parents:
diff changeset
   655
#endif
48194c26a46c Initial revision
claus
parents:
diff changeset
   656
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   657
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   658
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   659
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   660
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   661
glxLmbind:target index:index in:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   662
    "select a material, lighyt or lighting model"
48194c26a46c Initial revision
claus
parents:
diff changeset
   663
48194c26a46c Initial revision
claus
parents:
diff changeset
   664
    "{ Symbol: material }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   665
    "{ Symbol: backMaterial }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   666
    "{ Symbol: light0 }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   667
    "{ Symbol: light1 }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   668
    "{ Symbol: light2 }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   669
    "{ Symbol: light3 }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   670
    "{ Symbol: light4 }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   671
    "{ Symbol: light5 }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   672
    "{ Symbol: light6 }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   673
    "{ Symbol: light7 }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   674
    "{ Symbol: lightModel }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   675
48194c26a46c Initial revision
claus
parents:
diff changeset
   676
%{  /* NOCONTEXT */
48194c26a46c Initial revision
claus
parents:
diff changeset
   677
#ifdef GLX
48194c26a46c Initial revision
claus
parents:
diff changeset
   678
    short defType;
48194c26a46c Initial revision
claus
parents:
diff changeset
   679
    short i_index;
48194c26a46c Initial revision
claus
parents:
diff changeset
   680
48194c26a46c Initial revision
claus
parents:
diff changeset
   681
    do {
48194c26a46c Initial revision
claus
parents:
diff changeset
   682
        if (target == _material)
48194c26a46c Initial revision
claus
parents:
diff changeset
   683
            defType = MATERIAL;
48194c26a46c Initial revision
claus
parents:
diff changeset
   684
        else if (target == _backMaterial)
48194c26a46c Initial revision
claus
parents:
diff changeset
   685
            defType = BACKMATERIAL;
48194c26a46c Initial revision
claus
parents:
diff changeset
   686
        else if (target == _light0)
48194c26a46c Initial revision
claus
parents:
diff changeset
   687
            defType = LIGHT0;
48194c26a46c Initial revision
claus
parents:
diff changeset
   688
        else if (target == _light1)
48194c26a46c Initial revision
claus
parents:
diff changeset
   689
            defType = LIGHT1;
48194c26a46c Initial revision
claus
parents:
diff changeset
   690
        else if (target == _light2)
48194c26a46c Initial revision
claus
parents:
diff changeset
   691
            defType = LIGHT2;
48194c26a46c Initial revision
claus
parents:
diff changeset
   692
        else if (target == _light3)
48194c26a46c Initial revision
claus
parents:
diff changeset
   693
            defType = LIGHT3;
48194c26a46c Initial revision
claus
parents:
diff changeset
   694
        else if (target == _light4)
48194c26a46c Initial revision
claus
parents:
diff changeset
   695
            defType = LIGHT4;
48194c26a46c Initial revision
claus
parents:
diff changeset
   696
        else if (target == _light5)
48194c26a46c Initial revision
claus
parents:
diff changeset
   697
            defType = LIGHT5;
48194c26a46c Initial revision
claus
parents:
diff changeset
   698
        else if (target == _light6)
48194c26a46c Initial revision
claus
parents:
diff changeset
   699
            defType = LIGHT6;
48194c26a46c Initial revision
claus
parents:
diff changeset
   700
        else if (target == _light7)
48194c26a46c Initial revision
claus
parents:
diff changeset
   701
            defType = LIGHT7;
48194c26a46c Initial revision
claus
parents:
diff changeset
   702
        else if (target == _lightModel)
48194c26a46c Initial revision
claus
parents:
diff changeset
   703
            defType = LMODEL;
48194c26a46c Initial revision
claus
parents:
diff changeset
   704
        else break;
48194c26a46c Initial revision
claus
parents:
diff changeset
   705
48194c26a46c Initial revision
claus
parents:
diff changeset
   706
        _INT_ (index, i_index);
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   707
        SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   708
        lmbind(defType, i_index);
48194c26a46c Initial revision
claus
parents:
diff changeset
   709
        RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   710
    } while(0);
48194c26a46c Initial revision
claus
parents:
diff changeset
   711
#endif
48194c26a46c Initial revision
claus
parents:
diff changeset
   712
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   713
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   714
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   715
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   716
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   717
glxColor:index in:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   718
    "set color, for non gouraud shading, we dont care if the
48194c26a46c Initial revision
claus
parents:
diff changeset
   719
     argument is integer or float; otherwise, better results are
48194c26a46c Initial revision
claus
parents:
diff changeset
   720
     expected with float values."
48194c26a46c Initial revision
claus
parents:
diff changeset
   721
48194c26a46c Initial revision
claus
parents:
diff changeset
   722
%{  /* NOCONTEXT */
48194c26a46c Initial revision
claus
parents:
diff changeset
   723
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   724
    SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   725
    if (_isSmallInteger(index)) {
48194c26a46c Initial revision
claus
parents:
diff changeset
   726
        color((Colorindex)(_intVal(index)));
48194c26a46c Initial revision
claus
parents:
diff changeset
   727
        RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   728
    }
48194c26a46c Initial revision
claus
parents:
diff changeset
   729
    if (_isFloat(index)) {
48194c26a46c Initial revision
claus
parents:
diff changeset
   730
        colorf((float)(_floatVal(index)));
48194c26a46c Initial revision
claus
parents:
diff changeset
   731
        RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   732
    }
48194c26a46c Initial revision
claus
parents:
diff changeset
   733
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   734
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   735
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   736
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   737
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   738
glxColorRed:r green:g blue:b in:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   739
    "set color, args must be integer values"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   740
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   741
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   742
#ifdef GLX
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   743
    short s_r, s_g, s_b;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   744
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   745
    do {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   746
        _INT_(r, s_r);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   747
        _INT_(g, s_g);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   748
        _INT_(b, s_b);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   749
        SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   750
        RGBcolor(s_r, s_g, s_b);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   751
        RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   752
    } while(0);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   753
#endif
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   754
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   755
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   756
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   757
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   758
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   759
glxClearIn:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   760
    "clear to current color"
48194c26a46c Initial revision
claus
parents:
diff changeset
   761
48194c26a46c Initial revision
claus
parents:
diff changeset
   762
%{  /* NOCONTEXT */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   763
    SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   764
    clear();
48194c26a46c Initial revision
claus
parents:
diff changeset
   765
    RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   766
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   767
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   768
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   769
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   770
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   771
glxZClearIn:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   772
    "clear z buffer"
48194c26a46c Initial revision
claus
parents:
diff changeset
   773
48194c26a46c Initial revision
claus
parents:
diff changeset
   774
%{  /* NOCONTEXT */
48194c26a46c Initial revision
claus
parents:
diff changeset
   775
#ifdef GLX
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   776
    SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   777
    zclear();
48194c26a46c Initial revision
claus
parents:
diff changeset
   778
    RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   779
#endif
48194c26a46c Initial revision
claus
parents:
diff changeset
   780
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   781
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   782
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   783
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   784
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   785
glxPushmatrixIn:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   786
    "push down transformation stack"
48194c26a46c Initial revision
claus
parents:
diff changeset
   787
48194c26a46c Initial revision
claus
parents:
diff changeset
   788
%{  /* NOCONTEXT */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   789
    SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   790
    pushmatrix();
48194c26a46c Initial revision
claus
parents:
diff changeset
   791
    RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   792
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   793
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   794
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   795
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   796
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   797
glxPopmatrixIn:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   798
    "pop transformation stack"
48194c26a46c Initial revision
claus
parents:
diff changeset
   799
48194c26a46c Initial revision
claus
parents:
diff changeset
   800
%{  /* NOCONTEXT */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   801
    SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   802
    popmatrix();
48194c26a46c Initial revision
claus
parents:
diff changeset
   803
    RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   804
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   805
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   806
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   807
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   808
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   809
glxSwapBuffersIn:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   810
    "swap double buffers"
48194c26a46c Initial revision
claus
parents:
diff changeset
   811
48194c26a46c Initial revision
claus
parents:
diff changeset
   812
%{  /* NOCONTEXT */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   813
    SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   814
    swapbuffers();
48194c26a46c Initial revision
claus
parents:
diff changeset
   815
    RETURN (true);
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   816
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   817
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   818
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   819
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   820
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   821
glxFrontBufferIn:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   822
    "switch to front buffer"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   823
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   824
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   825
    SETWIN(aGLXWindowId)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   826
#ifdef GLX
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   827
    backbuffer(FALSE);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   828
#endif
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   829
    frontbuffer(TRUE);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   830
    RETURN (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   831
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   832
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   833
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   834
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   835
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   836
glxBackBufferIn:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   837
    "switch to back buffer"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   838
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   839
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   840
    SETWIN(aGLXWindowId)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   841
#ifdef GLX
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   842
    frontbuffer(FALSE);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   843
#endif
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   844
    backbuffer(TRUE);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   845
    RETURN (true);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   846
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   847
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   848
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   849
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   850
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   851
glxRGBmodeIn:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   852
    "set true color mode (no colormap)"
48194c26a46c Initial revision
claus
parents:
diff changeset
   853
48194c26a46c Initial revision
claus
parents:
diff changeset
   854
%{  /* NOCONTEXT */
48194c26a46c Initial revision
claus
parents:
diff changeset
   855
#ifdef GLX
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   856
    SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   857
    RGBmode();
48194c26a46c Initial revision
claus
parents:
diff changeset
   858
    RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   859
#endif
48194c26a46c Initial revision
claus
parents:
diff changeset
   860
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   861
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   862
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   863
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   864
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   865
glxDoubleBufferIn:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   866
    "set double buffer mode"
48194c26a46c Initial revision
claus
parents:
diff changeset
   867
48194c26a46c Initial revision
claus
parents:
diff changeset
   868
%{  /* NOCONTEXT */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   869
    SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   870
    doublebuffer();
48194c26a46c Initial revision
claus
parents:
diff changeset
   871
    RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   872
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   873
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   874
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   875
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   876
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   877
glxGconfigIn:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   878
    "must be sent after RGBmode, doubleBuffer etc. to have these
48194c26a46c Initial revision
claus
parents:
diff changeset
   879
     changes really take effect. See GLX manual"
48194c26a46c Initial revision
claus
parents:
diff changeset
   880
48194c26a46c Initial revision
claus
parents:
diff changeset
   881
%{  /* NOCONTEXT */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   882
    SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   883
    gconfig();
48194c26a46c Initial revision
claus
parents:
diff changeset
   884
    RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   885
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   886
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   887
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   888
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   889
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   890
glxZbuffer:aBoolean in:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   891
    "enable/disable z-buffer operation"
48194c26a46c Initial revision
claus
parents:
diff changeset
   892
48194c26a46c Initial revision
claus
parents:
diff changeset
   893
%{  /* NOCONTEXT */
48194c26a46c Initial revision
claus
parents:
diff changeset
   894
#ifdef GLX
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   895
    SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   896
    zbuffer(aBoolean == false ? FALSE : TRUE);
48194c26a46c Initial revision
claus
parents:
diff changeset
   897
    RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   898
#endif
48194c26a46c Initial revision
claus
parents:
diff changeset
   899
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   900
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   901
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   902
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   903
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   904
glxBackFace:aBoolean in:aGLXWindowId
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   905
    "enable/disable backface"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   906
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   907
%{  /* NOCONTEXT */
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
   908
    SETWIN(aGLXWindowId)                                     
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   909
    backface(aBoolean == false ? FALSE : TRUE);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   910
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   911
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   912
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   913
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   914
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   915
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   916
glxNmode:aSymbol in:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   917
    "set normalize mode: #auto, #normalize"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   918
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   919
    "{ Symbol: auto }"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   920
    "{ Symbol: normalize }"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   921
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   922
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   923
#ifdef GLX
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   924
    if (aSymbol == _auto) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   925
        nmode(NAUTO);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   926
        RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   927
    }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   928
    if (aSymbol == _normalize) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   929
        nmode(NNORMALIZE);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   930
        RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   931
    }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   932
#endif
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   933
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   934
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   935
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   936
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   937
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   938
glxMmode:aSymbol in:aGLXWindowId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   939
    "set matrix mode: #single, #viewing, #projection or #texture"
48194c26a46c Initial revision
claus
parents:
diff changeset
   940
48194c26a46c Initial revision
claus
parents:
diff changeset
   941
    "{ Symbol: single }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   942
    "{ Symbol: viewing }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   943
    "{ Symbol: projection }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   944
    "{ Symbol: texture }"
48194c26a46c Initial revision
claus
parents:
diff changeset
   945
48194c26a46c Initial revision
claus
parents:
diff changeset
   946
%{  /* NOCONTEXT */
48194c26a46c Initial revision
claus
parents:
diff changeset
   947
#ifdef GLX
48194c26a46c Initial revision
claus
parents:
diff changeset
   948
    if (aSymbol == _single) {
48194c26a46c Initial revision
claus
parents:
diff changeset
   949
        mmode(MSINGLE);
48194c26a46c Initial revision
claus
parents:
diff changeset
   950
        RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   951
    }
48194c26a46c Initial revision
claus
parents:
diff changeset
   952
    if (aSymbol == _viewing) {
48194c26a46c Initial revision
claus
parents:
diff changeset
   953
        mmode(MVIEWING);
48194c26a46c Initial revision
claus
parents:
diff changeset
   954
        RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   955
    }
48194c26a46c Initial revision
claus
parents:
diff changeset
   956
    if (aSymbol == _projection) {
48194c26a46c Initial revision
claus
parents:
diff changeset
   957
        mmode(MPROJECTION);
48194c26a46c Initial revision
claus
parents:
diff changeset
   958
        RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   959
    }
48194c26a46c Initial revision
claus
parents:
diff changeset
   960
    if (aSymbol == _texture) {
48194c26a46c Initial revision
claus
parents:
diff changeset
   961
        mmode(MTEXTURE);
48194c26a46c Initial revision
claus
parents:
diff changeset
   962
        RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   963
    }
48194c26a46c Initial revision
claus
parents:
diff changeset
   964
#endif
48194c26a46c Initial revision
claus
parents:
diff changeset
   965
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   966
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   967
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   968
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   969
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   970
glxBeginPolygonIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   971
    "start a polygon"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   972
48194c26a46c Initial revision
claus
parents:
diff changeset
   973
%{  /* NOCONTEXT */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   974
    SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   975
    bgnpolygon();
48194c26a46c Initial revision
claus
parents:
diff changeset
   976
    RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   977
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   978
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   979
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   980
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   981
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   982
glxEndPolygonIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   983
    "end a polygon"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   984
48194c26a46c Initial revision
claus
parents:
diff changeset
   985
%{  /* NOCONTEXT */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   986
    SETWIN(aGLXWindowId)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   987
    endpolygon();
48194c26a46c Initial revision
claus
parents:
diff changeset
   988
    RETURN (true);
48194c26a46c Initial revision
claus
parents:
diff changeset
   989
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
   990
.
48194c26a46c Initial revision
claus
parents:
diff changeset
   991
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   992
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   993
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   994
glxBeginPointIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   995
    "start a point-group"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   996
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   997
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   998
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
   999
    bgnpoint();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1000
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1001
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1002
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1003
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1004
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1005
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1006
glxEndPointIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1007
    "end a point group"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1008
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1009
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1010
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1011
    endpoint();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1012
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1013
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1014
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1015
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1016
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1017
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1018
glxBeginClosedLineIn:aGLXWindowId
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1019
    "start a closed line"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1020
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1021
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1022
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1023
    bgnclosedline();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1024
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1025
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1026
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1027
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1028
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1029
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1030
glxEndClosedLineIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1031
    "end a closed line"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1032
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1033
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1034
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1035
    endclosedline();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1036
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1037
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1038
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1039
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1040
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1041
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1042
glxBeginLineIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1043
    "start a line group"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1044
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1045
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1046
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1047
    bgnline();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1048
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1049
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1050
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1051
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1052
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1053
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1054
glxEndLineIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1055
    "end a line group"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1056
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1057
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1058
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1059
    endline();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1060
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1061
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1062
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1063
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1064
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1065
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1066
glxBeginTriangleMeshIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1067
    "start a triangle mesh"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1068
48194c26a46c Initial revision
claus
parents:
diff changeset
  1069
%{  /* NOCONTEXT */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1070
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1071
    bgntmesh();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1072
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1073
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1074
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1075
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1076
!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1077
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1078
glxEndTriangleMeshIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1079
    "end a triangle mesh"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1080
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1081
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1082
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1083
    endtmesh();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1084
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1085
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1086
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1087
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1088
!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1089
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1090
glxBeginSurfaceIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1091
    "start a NURBS surface def"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1092
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1093
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1094
#ifdef GLX
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1095
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1096
    bgnsurface();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1097
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1098
#endif
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1099
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1100
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1101
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1102
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1103
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1104
glxEndSurfaceIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1105
    "end a NURBS surface def"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1106
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1107
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1108
#ifdef GLX
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1109
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1110
    endsurface();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1111
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1112
#endif
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1113
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1114
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1115
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1116
!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1117
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1118
glxBeginQuadrilateralStripIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1119
    "start a quadrilateral strip"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1120
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1121
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1122
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1123
    bgnqstrip();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1124
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1125
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1126
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1127
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1128
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1129
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1130
glxEndQuadrilateralStripIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1131
    "end a quadrilateral strip"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1132
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1133
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1134
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1135
    endqstrip();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1136
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1137
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1138
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1139
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1140
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1141
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1142
glxBeginCurveIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1143
    "start a NURBS curve def"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1144
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1145
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1146
#ifdef GLX
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1147
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1148
    bgncurve();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1149
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1150
#endif
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1151
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1152
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1153
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1154
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1155
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1156
glxEndCurveIn:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1157
    "end a NURBS curve def"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1158
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1159
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1160
#ifdef GLX
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1161
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1162
    endcurve();
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1163
    RETURN (true);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1164
#endif
48194c26a46c Initial revision
claus
parents:
diff changeset
  1165
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
  1166
.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1167
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
  1168
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1169
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1170
glxMoveX:x y:y z:z in:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1171
    "arguments must specify a point"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1172
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1173
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1174
    if (_isFloat(x) && _isFloat(y) && _isFloat(z)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1175
        SETWIN(aGLXWindowId)                                     
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1176
        move( (float)_floatVal(x), (float)_floatVal(y), (float)_floatVal(z) );
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1177
        RETURN (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1178
    }
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1179
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1180
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1181
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1182
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1183
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1184
glxMove:arrayOf3Floats in:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1185
    "argument must be an array of 3 floats containing the point"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1186
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1187
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1188
    float vec[3], *v;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1189
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1190
    if (! (v = getFloatsFromInto(arrayOf3Floats, vec, 3))) RETURN(false);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1191
    SETWIN(aGLXWindowId)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1192
    move( v[0], v[1], v[2] );
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1193
    RETURN (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1194
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1195
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1196
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1197
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1198
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1199
glxDrawX:x y:y z:z in:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1200
    "arguments must specify a point"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1201
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1202
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1203
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1204
    if (_isFloat(x) && _isFloat(y) && _isFloat(z)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1205
        SETWIN(aGLXWindowId)                                     
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1206
        draw( (float)_floatVal(x), (float)_floatVal(y), (float)_floatVal(z) );
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1207
        RETURN (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1208
    }
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1209
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1210
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1211
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1212
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1213
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1214
glxDraw:arrayOf3Floats in:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1215
    "argument must be an array of 3 floats containing the point"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1216
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1217
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1218
    float vec[3], *v;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1219
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1220
    if (! (v = getFloatsFromInto(arrayOf3Floats, vec, 3))) RETURN(false);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1221
    SETWIN(aGLXWindowId)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1222
    draw( v[0], v[1], v[2]);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1223
    RETURN (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1224
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1225
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1226
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1227
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1228
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1229
glxRectX1:x1 y1:y1 x2:x2 y2:y2 in:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1230
    "arguments must specify 2 opposite corners of the rectangle"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1231
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1232
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1233
    float f_x1, f_x2, f_y1, f_y2;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1234
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1235
    if (_isFloat(x1) && _isFloat(x2) && _isFloat(y1) && _isFloat(y2)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1236
        SETWIN(aGLXWindowId)                                     
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1237
        rect( (float)_floatVal(x1), (float)_floatVal(y1), (float)_floatVal(x2), (float)_floatVal(y2) );
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1238
        RETURN (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1239
    }
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1240
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1241
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1242
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1243
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1244
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1245
glxRectFX1:x1 y1:y1 x2:x2 y2:y2 in:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1246
    "arguments must specify 2 opposite corners of the filled rectangle"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1247
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1248
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1249
    float f_x1, f_x2, f_y1, f_y2;
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1250
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1251
    if (_isFloat(x1) && _isFloat(x2) && _isFloat(y1) && _isFloat(y2)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1252
        SETWIN(aGLXWindowId)                                     
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1253
        rectf( (float)_floatVal(x1), (float)_floatVal(y1), (float)_floatVal(x2), (float)_floatVal(y2) );
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1254
        RETURN (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1255
    }
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1256
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1257
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1258
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1259
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1260
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1261
glxSphDraw:arrayOf4Floats in:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1262
    "argument must be an array(a matrix) of 4 floats containing the
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1263
     sphere"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1264
48194c26a46c Initial revision
claus
parents:
diff changeset
  1265
%{  /* NOCONTEXT */
48194c26a46c Initial revision
claus
parents:
diff changeset
  1266
#ifdef GLX
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1267
    float vec[4], *v;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1268
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1269
    if (! (v = getFloatsFromInto(arrayOf4Floats, vec, 4))) RETURN(false);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1270
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1271
    sphdraw(v);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1272
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1273
#endif
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1274
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1275
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1276
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1277
!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1278
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1279
glxDefBasis:id mat:aMatrix in:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1280
    "define the basis"
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1281
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1282
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1283
    Matrix matrix;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1284
    Matrix *m;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1285
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1286
    if (! (m = getFloatsFromMatrixInto(aMatrix, &matrix))) RETURN (false);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1287
    if (_isSmallInteger(id)) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1288
        SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1289
        defbasis((short)(_intVal(id)), *m);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1290
        RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1291
    }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1292
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1293
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1294
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1295
!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1296
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1297
glxPatchCurvesU:u v:v in:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1298
    "set the number of curves in a patch"
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1299
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1300
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1301
    if (_isSmallInteger(u) && _isSmallInteger(v)) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1302
        SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1303
        patchcurves((long)_intVal(u), (long)_intVal(v));
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1304
        RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1305
    }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1306
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1307
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1308
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1309
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1310
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1311
glxPatchPrecisionU:u v:v in:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1312
    "set the patch precision"
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1313
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1314
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1315
    if (_isSmallInteger(u) && _isSmallInteger(v)) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1316
        SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1317
        patchprecision((long)_intVal(u), (long)_intVal(v));
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1318
        RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1319
    }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1320
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1321
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1322
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1323
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1324
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1325
glxPatchBasisU:u v:v in:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1326
    "set the current basis matrices"
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1327
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1328
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1329
    if (_isSmallInteger(u) && _isSmallInteger(v)) {
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1330
        SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1331
        patchbasis((long)_intVal(u), (long)_intVal(v));
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1332
        RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1333
    }
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1334
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1335
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1336
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1337
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1338
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1339
glxPatchX:arrayOf16XFloats y:arrayOf16YFloats z:arrayOf16ZFloats in:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1340
    "arguments must be arrays of 16 floats containing the patch"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1341
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1342
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1343
    Matrix matrixX, matrixY, matrixZ;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1344
    Matrix *mX, *mY, *mZ;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1345
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1346
    if (! (mX = getFloatsFromMatrixInto(arrayOf16XFloats, &matrixX))) RETURN (false);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1347
    if (! (mY = getFloatsFromMatrixInto(arrayOf16YFloats, &matrixY))) RETURN (false);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1348
    if (! (mZ = getFloatsFromMatrixInto(arrayOf16ZFloats, &matrixZ))) RETURN (false);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1349
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1350
    patch(*mX, *mY, *mZ);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1351
    RETURN (true);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1352
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
  1353
.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1354
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
  1355
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1356
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1357
glxGetMatrix:arrayOf16Floats in:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1358
    "argument must be an array(a matrix) of 16 floats containing the
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1359
     matrix"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1360
48194c26a46c Initial revision
claus
parents:
diff changeset
  1361
%{  /* NOCONTEXT */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1362
    Matrix matrix;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1363
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1364
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1365
    getmatrix(matrix);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1366
    if (! putFloatsFromInto(matrix, arrayOf16Floats, 16)) RETURN(false);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1367
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1368
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1369
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1370
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1371
!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1372
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1373
glxLoadMatrix:arrayOf16Floats in:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1374
    "argument must be an array(a matrix) of 16 floats containing the
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1375
     transformation matrix"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1376
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1377
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1378
    Matrix matrix;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1379
    Matrix *m;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1380
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1381
    if (! (m = getFloatsFromMatrixInto(arrayOf16Floats, &matrix))) RETURN (false);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1382
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1383
    loadmatrix(*m);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1384
    RETURN (true);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1385
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
  1386
.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1387
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
  1388
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1389
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1390
glxMultMatrix:arrayOf16Floats in:aGLXWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1391
    "argument must be an array(a matrix) of 16 floats containing the
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1392
     matrix"
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1393
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1394
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1395
    Matrix matrix;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1396
    Matrix *m;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1397
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1398
    if (! (m = getFloatsFromMatrixInto(arrayOf16Floats, &matrix))) RETURN (false);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1399
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1400
    multmatrix(*m);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1401
    RETURN (true);
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1402
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1403
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1404
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1405
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1406
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1407
glxMakeObject:id in:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1408
    "start object definition"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1409
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1410
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1411
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1412
    if (_isSmallInteger(id)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1413
        SETWIN(aGLXWindowId)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1414
        makeobj(_intVal(id));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1415
        RETURN (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1416
    }
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1417
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1418
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1419
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1420
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1421
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1422
glxCloseObjectIn:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1423
    "end object defnition"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1424
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1425
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1426
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1427
    SETWIN(aGLXWindowId)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1428
    closeobj();
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1429
    RETURN (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1430
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1431
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1432
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1433
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1434
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1435
glxCallObject:id in:aGLXWindowId
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1436
    "do objects definition"
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1437
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1438
%{  /* NOCONTEXT */
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1439
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1440
    if (_isSmallInteger(id)) {
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1441
        SETWIN(aGLXWindowId)
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1442
        callobj(_intVal(id));
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1443
        RETURN (true);
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1444
    }
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1445
%}
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1446
.
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1447
    ^ false
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1448
!
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1449
 
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1450
glxN3f:arrayOf3Floats in:aGLXWindowId
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1451
    "argument must be an indexable object with 3 floats,
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1452
     containing the current vertex normal"
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1453
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1454
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1455
#ifdef GLX
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1456
    float vec[3], *v;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1457
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1458
    if (! (v = getFloatsFromInto(arrayOf3Floats, vec, 3))) RETURN(false);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1459
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1460
    n3f(v);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1461
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1462
#endif
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1463
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1464
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1465
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1466
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1467
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1468
glxC3f:arrayOf3Floats in:aGLXWindowId
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1469
    "argument must be an indexable object with 3 floats,
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1470
     containing the color"
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1471
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1472
%{  /* NOCONTEXT */
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1473
#ifdef GLX
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1474
    float vec[3], *v;
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1475
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1476
    if (! (v = getFloatsFromInto(arrayOf3Floats, vec, 3))) RETURN(false);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1477
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1478
    c3f(v);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1479
    RETURN (true);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1480
#endif
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1481
%}
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1482
.
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1483
    ^ false
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1484
!
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1485
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1486
glxV3f:arrayOf3Floats in:aGLXWindowId
24
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1487
    "argument must be an indexable object with 3 floats,
e810b1be068b *** empty log message ***
claus
parents: 20
diff changeset
  1488
     containing the vertex"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1489
48194c26a46c Initial revision
claus
parents:
diff changeset
  1490
%{  /* NOCONTEXT */
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1491
    float vec[3], *v;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1492
12
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1493
    if (! (v = getFloatsFromInto(arrayOf3Floats, vec, 3))) RETURN(false);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1494
    SETWIN(aGLXWindowId)
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1495
    v3f(v);
9f0995fac1fa *** empty log message ***
claus
parents: 5
diff changeset
  1496
    RETURN (true);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1497
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
  1498
.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1499
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
  1500
! !