GraphColumnView3D.st
author ca
Mon, 09 Feb 1998 12:31:14 +0100
changeset 752 271edd188ab6
parent 741 1d91a0437471
child 754 c55a5727bf04
permissions -rw-r--r--
add text and new functionality
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
     1
GraphColumnView subclass:#GraphColumnView3D
1d91a0437471 initial checkin
ca
parents:
diff changeset
     2
	instanceVariableNames:'glxView showGraph rotateX rotateY rotateZ rotateXHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
     3
		rotateYHolder rotateZHolder zoomZ zoomZHolder'
1d91a0437471 initial checkin
ca
parents:
diff changeset
     4
	classVariableNames:''
1d91a0437471 initial checkin
ca
parents:
diff changeset
     5
	poolDictionaries:''
1d91a0437471 initial checkin
ca
parents:
diff changeset
     6
	category:'Views-Graphs'
1d91a0437471 initial checkin
ca
parents:
diff changeset
     7
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
     8
1d91a0437471 initial checkin
ca
parents:
diff changeset
     9
GLXView subclass:#GLXGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
    10
	instanceVariableNames:'graph colorMap glxObjGraphs glxObjGrid maxY minY'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    11
	classVariableNames:''
1d91a0437471 initial checkin
ca
parents:
diff changeset
    12
	poolDictionaries:''
1d91a0437471 initial checkin
ca
parents:
diff changeset
    13
	privateIn:GraphColumnView3D
1d91a0437471 initial checkin
ca
parents:
diff changeset
    14
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    15
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    16
!GraphColumnView3D class methodsFor:'documentation'!
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    17
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    18
documentation
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    19
"
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    20
    The class provides all the functionality for showing, scrolling and manipulating graphs
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    21
    described through to a GraphColumn description. Each change in a graph description
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    22
    immediately take affect.
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    23
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    24
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    25
    [See also:]
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    26
        GraphColumn
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    27
        GraphColumnView
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    28
        GraphColumnView2D
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    29
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    30
    [Author:]
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    31
        Claus Atzkern
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    32
"
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    33
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    34
! !
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    35
1d91a0437471 initial checkin
ca
parents:
diff changeset
    36
!GraphColumnView3D class methodsFor:'menu'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    37
1d91a0437471 initial checkin
ca
parents:
diff changeset
    38
defaultMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    39
    "this window spec was automatically generated by the ST/X MenuEditor"
1d91a0437471 initial checkin
ca
parents:
diff changeset
    40
1d91a0437471 initial checkin
ca
parents:
diff changeset
    41
    "do not manually edit this - the builder may not be able to
1d91a0437471 initial checkin
ca
parents:
diff changeset
    42
     handle the specification if its corrupted."
1d91a0437471 initial checkin
ca
parents:
diff changeset
    43
1d91a0437471 initial checkin
ca
parents:
diff changeset
    44
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    45
     MenuEditor new openOnClass:self andSelector:#defaultMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    46
     (Menu new fromLiteralArrayEncoding:(self defaultMenu)) startUp
1d91a0437471 initial checkin
ca
parents:
diff changeset
    47
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    48
1d91a0437471 initial checkin
ca
parents:
diff changeset
    49
    <resource: #menu>
1d91a0437471 initial checkin
ca
parents:
diff changeset
    50
1d91a0437471 initial checkin
ca
parents:
diff changeset
    51
    ^
1d91a0437471 initial checkin
ca
parents:
diff changeset
    52
     
1d91a0437471 initial checkin
ca
parents:
diff changeset
    53
       #(#Menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    54
          
1d91a0437471 initial checkin
ca
parents:
diff changeset
    55
           #(
1d91a0437471 initial checkin
ca
parents:
diff changeset
    56
             #(#MenuItem
1d91a0437471 initial checkin
ca
parents:
diff changeset
    57
                #'label:' 'Show Columns'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    58
                #'indication:' #'showGraph:'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    59
            )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    60
             #(#MenuItem
1d91a0437471 initial checkin
ca
parents:
diff changeset
    61
                #'label:' 'Show Grid'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    62
                #'indication:' #'showGrid:'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    63
            )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    64
             #(#MenuItem
1d91a0437471 initial checkin
ca
parents:
diff changeset
    65
                #'label:' '-'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    66
            )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    67
             #(#MenuItem
1d91a0437471 initial checkin
ca
parents:
diff changeset
    68
                #'label:' 'Zoom Y'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    69
                #'submenuChannel:' #subMenuZoomY
1d91a0437471 initial checkin
ca
parents:
diff changeset
    70
            )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    71
          ) nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
    72
          nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
    73
      )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    74
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
    75
1d91a0437471 initial checkin
ca
parents:
diff changeset
    76
!GraphColumnView3D class methodsFor:'test'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    77
1d91a0437471 initial checkin
ca
parents:
diff changeset
    78
test
1d91a0437471 initial checkin
ca
parents:
diff changeset
    79
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
    80
self test
1d91a0437471 initial checkin
ca
parents:
diff changeset
    81
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
    82
    |top list view x|
1d91a0437471 initial checkin
ca
parents:
diff changeset
    83
1d91a0437471 initial checkin
ca
parents:
diff changeset
    84
    top  := StandardSystemView extent:800 @ 400.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    85
    view := GraphColumnView3D origin:0@0 extent:1.0@1.0 in:top.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    86
    list := OrderedCollection new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    87
1d91a0437471 initial checkin
ca
parents:
diff changeset
    88
    top label:'2D-View'.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    89
1d91a0437471 initial checkin
ca
parents:
diff changeset
    90
    #(  red green yellow blue 
1d91a0437471 initial checkin
ca
parents:
diff changeset
    91
     ) keysAndValuesDo:[:idx :aColor|
1d91a0437471 initial checkin
ca
parents:
diff changeset
    92
        |col|
1d91a0437471 initial checkin
ca
parents:
diff changeset
    93
1d91a0437471 initial checkin
ca
parents:
diff changeset
    94
        col := GraphColumn name:idx.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    95
        col foregroundColor:(Color perform:aColor).
1d91a0437471 initial checkin
ca
parents:
diff changeset
    96
1d91a0437471 initial checkin
ca
parents:
diff changeset
    97
        col functionYblock:[:start :anArray|
1d91a0437471 initial checkin
ca
parents:
diff changeset
    98
            x := (start - 1) * 0.2.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    99
            (idx == 1 or:[idx == 3]) ifTrue:[
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   100
                1 to:(anArray size) do:[:i| anArray at:i put:20 * (x sin). x := x + 0.2 ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   101
            ] ifFalse:[
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   102
                1 to:(anArray size) do:[:i| anArray at:i put:20 * (x cos). x := x + 0.2 ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   103
            ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   104
            anArray
1d91a0437471 initial checkin
ca
parents:
diff changeset
   105
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   106
        list add:col
1d91a0437471 initial checkin
ca
parents:
diff changeset
   107
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   108
1d91a0437471 initial checkin
ca
parents:
diff changeset
   109
    view showGrid:true.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   110
    view columns:list.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   111
    top open.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   112
1d91a0437471 initial checkin
ca
parents:
diff changeset
   113
1d91a0437471 initial checkin
ca
parents:
diff changeset
   114
1d91a0437471 initial checkin
ca
parents:
diff changeset
   115
1d91a0437471 initial checkin
ca
parents:
diff changeset
   116
1d91a0437471 initial checkin
ca
parents:
diff changeset
   117
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   118
1d91a0437471 initial checkin
ca
parents:
diff changeset
   119
!GraphColumnView3D methodsFor:'accessing look'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   120
1d91a0437471 initial checkin
ca
parents:
diff changeset
   121
showGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   122
    "show or hide columns; if the grid is enabled, only the grid will be
1d91a0437471 initial checkin
ca
parents:
diff changeset
   123
     shown
1d91a0437471 initial checkin
ca
parents:
diff changeset
   124
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   125
    ^ showGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   126
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   127
1d91a0437471 initial checkin
ca
parents:
diff changeset
   128
showGraph:aBool
1d91a0437471 initial checkin
ca
parents:
diff changeset
   129
    "show or hide columns; if the grid is enabled, only the grid will be
1d91a0437471 initial checkin
ca
parents:
diff changeset
   130
     shown
1d91a0437471 initial checkin
ca
parents:
diff changeset
   131
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   132
    showGraph ~~ aBool ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   133
        showGraph := aBool.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   134
        glxView recomputeGraph.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   135
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   136
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   137
1d91a0437471 initial checkin
ca
parents:
diff changeset
   138
zoomZ
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   139
    "returns the current zoom Z factor
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   140
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   141
    ^ zoomZ
1d91a0437471 initial checkin
ca
parents:
diff changeset
   142
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   143
1d91a0437471 initial checkin
ca
parents:
diff changeset
   144
zoomZ:aValue
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   145
    "set the zoom Z factor; if the argument is nil or not valid, the
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   146
     default zoom Z factor is set (1).
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   147
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   148
    |zZ|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   149
1d91a0437471 initial checkin
ca
parents:
diff changeset
   150
    (zZ := self floatFrom:aValue onError:[1]) <= 0 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   151
        zZ := 1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   152
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   153
1d91a0437471 initial checkin
ca
parents:
diff changeset
   154
    zZ = zoomZ ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   155
        zoomZ := zZ.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   156
        self invalidateGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   157
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   158
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   159
1d91a0437471 initial checkin
ca
parents:
diff changeset
   160
!GraphColumnView3D methodsFor:'accessing mvc'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   161
1d91a0437471 initial checkin
ca
parents:
diff changeset
   162
rotateXHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   163
    "returns the valueHolder, which holds the rotation X value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   164
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   165
    ^ rotateXHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   166
1d91a0437471 initial checkin
ca
parents:
diff changeset
   167
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   168
1d91a0437471 initial checkin
ca
parents:
diff changeset
   169
rotateXHolder:aHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   170
    "set the valueHolder, which holds the rotation X value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   171
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   172
    rotateXHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   173
        rotateXHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   174
            rotateXHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   175
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   176
        (rotateXHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   177
            rotateXHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   178
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   179
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   180
    self rotateX:(rotateXHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   181
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   182
1d91a0437471 initial checkin
ca
parents:
diff changeset
   183
rotateYHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   184
    "returns the valueHolder, which holds the rotation Y value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   185
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   186
    ^ rotateYHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   187
1d91a0437471 initial checkin
ca
parents:
diff changeset
   188
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   189
1d91a0437471 initial checkin
ca
parents:
diff changeset
   190
rotateYHolder:aHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   191
    "set the valueHolder, which holds the rotation Y value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   192
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   193
    rotateYHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   194
        rotateYHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   195
            rotateYHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   196
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   197
        (rotateYHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   198
            rotateYHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   199
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   200
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   201
    self rotateY:(rotateYHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   202
1d91a0437471 initial checkin
ca
parents:
diff changeset
   203
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   204
1d91a0437471 initial checkin
ca
parents:
diff changeset
   205
rotateZHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   206
    "returns the valueHolder, which holds the rotation Z value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   207
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   208
    ^ rotateZHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   209
1d91a0437471 initial checkin
ca
parents:
diff changeset
   210
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   211
1d91a0437471 initial checkin
ca
parents:
diff changeset
   212
rotateZHolder:aHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   213
    "set the valueHolder, which holds the rotation Z value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   214
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   215
    rotateZHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   216
        rotateZHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   217
            rotateZHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   218
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   219
        (rotateZHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   220
            rotateZHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   221
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   222
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   223
    self rotateZ:(rotateZHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   224
1d91a0437471 initial checkin
ca
parents:
diff changeset
   225
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   226
1d91a0437471 initial checkin
ca
parents:
diff changeset
   227
zoomZHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   228
    "returns the valueHolder, which holds the zoom Z factor
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   229
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   230
    ^ zoomZHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   231
1d91a0437471 initial checkin
ca
parents:
diff changeset
   232
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   233
1d91a0437471 initial checkin
ca
parents:
diff changeset
   234
zoomZHolder:aHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   235
    "set the valueHolder, which holds the zoom Z factor
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   236
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   237
    zoomZHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   238
        zoomZHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   239
            zoomZHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   240
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   241
        (zoomZHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   242
            zoomZHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   243
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   244
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   245
    self zoomZ:(zoomZHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   246
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   247
1d91a0437471 initial checkin
ca
parents:
diff changeset
   248
!GraphColumnView3D methodsFor:'change & update'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   249
1d91a0437471 initial checkin
ca
parents:
diff changeset
   250
update:what with:aPara from:chgObj
1d91a0437471 initial checkin
ca
parents:
diff changeset
   251
    "catch and handle a change notification of any object
1d91a0437471 initial checkin
ca
parents:
diff changeset
   252
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   253
    chgObj == rotateXHolder ifTrue:[ ^ self rotateX:(rotateXHolder value) ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   254
    chgObj == rotateYHolder ifTrue:[ ^ self rotateY:(rotateYHolder value) ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   255
    chgObj == rotateZHolder ifTrue:[ ^ self rotateZ:(rotateZHolder value) ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   256
1d91a0437471 initial checkin
ca
parents:
diff changeset
   257
    chgObj == zoomZHolder   ifTrue:[ ^ self zoomZ:(zoomZHolder value) ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   258
1d91a0437471 initial checkin
ca
parents:
diff changeset
   259
    super update:what with:aPara from:chgObj
1d91a0437471 initial checkin
ca
parents:
diff changeset
   260
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   261
1d91a0437471 initial checkin
ca
parents:
diff changeset
   262
!GraphColumnView3D methodsFor:'converting'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   263
1d91a0437471 initial checkin
ca
parents:
diff changeset
   264
rotateValueFrom:aNumber
1d91a0437471 initial checkin
ca
parents:
diff changeset
   265
    "converts a value to a valid rotation value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   266
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   267
    |r|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   268
1d91a0437471 initial checkin
ca
parents:
diff changeset
   269
    r := self unsignedIntegerFrom:aNumber onError:[0].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   270
  ^ r < 360 ifTrue:[r] ifFalse:[r \\ 360]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   271
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   272
1d91a0437471 initial checkin
ca
parents:
diff changeset
   273
!GraphColumnView3D methodsFor:'initialization'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   274
1d91a0437471 initial checkin
ca
parents:
diff changeset
   275
destroy
1d91a0437471 initial checkin
ca
parents:
diff changeset
   276
    "remove dependencies
1d91a0437471 initial checkin
ca
parents:
diff changeset
   277
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   278
    super destroy.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   279
1d91a0437471 initial checkin
ca
parents:
diff changeset
   280
    rotateXHolder removeDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   281
    rotateYHolder removeDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   282
    rotateZHolder removeDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   283
    zoomZHolder   removeDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   284
1d91a0437471 initial checkin
ca
parents:
diff changeset
   285
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   286
1d91a0437471 initial checkin
ca
parents:
diff changeset
   287
initialize
1d91a0437471 initial checkin
ca
parents:
diff changeset
   288
    "setup default values
1d91a0437471 initial checkin
ca
parents:
diff changeset
   289
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   290
    super initialize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   291
1d91a0437471 initial checkin
ca
parents:
diff changeset
   292
    rotateX  := 45.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   293
    rotateY  := 45.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   294
    rotateZ  := 0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   295
    zoomZ    := 1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   296
1d91a0437471 initial checkin
ca
parents:
diff changeset
   297
    showGraph := true.
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   298
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   299
    glxView   := GLXGraph extent:(1.0 @ 1.0) in:self.
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   300
    glxView for:self.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   301
1d91a0437471 initial checkin
ca
parents:
diff changeset
   302
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   303
1d91a0437471 initial checkin
ca
parents:
diff changeset
   304
!GraphColumnView3D methodsFor:'protocol'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   305
1d91a0437471 initial checkin
ca
parents:
diff changeset
   306
colorChanged:what
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   307
    "called if any color changed; the argument to the change notification
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   308
     specifies the color which has changed:
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   309
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   310
        #foreground     the foreground color 
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   311
        #background     the background color
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   312
        #grid           the color of the grid
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   313
        #vLines         the color of the vertical lines
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   314
    "
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   315
    what == #foreground ifTrue:[ ^ glxView recomputeGraph ].
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   316
    what == #background ifTrue:[ ^ glxView invalidate ].
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   317
    what == #grid       ifTrue:[ ^ glxView recomputeGrid ].
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   318
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   319
    Transcript showCR:'VERTICAL LINES NOT YET SUPPORTED'.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   320
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   321
1d91a0437471 initial checkin
ca
parents:
diff changeset
   322
columnChanged:what with:oldValue from:aColumn
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   323
    "a column has changed one of its attributes; the arguments to the
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   324
     notification are passed by the column.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   325
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   326
    (
1d91a0437471 initial checkin
ca
parents:
diff changeset
   327
        #( lineStyle  lineWidth
1d91a0437471 initial checkin
ca
parents:
diff changeset
   328
           hLineStyle hLineWidth hLineFgColor hLineList
1d91a0437471 initial checkin
ca
parents:
diff changeset
   329
           scaleY relativeXaxis
1d91a0437471 initial checkin
ca
parents:
diff changeset
   330
           transY
1d91a0437471 initial checkin
ca
parents:
diff changeset
   331
         ) includesIdentical:what
1d91a0437471 initial checkin
ca
parents:
diff changeset
   332
    ) ifTrue:[
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   333
        Transcript showCR:what printString, ': NOT YET SUPPORTED'.
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   334
      ^ self
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   335
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   336
1d91a0437471 initial checkin
ca
parents:
diff changeset
   337
    what == #foregroundColor ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   338
        ^ glxView recomputeGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   339
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   340
1d91a0437471 initial checkin
ca
parents:
diff changeset
   341
    glxView recomputeWholeGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   342
1d91a0437471 initial checkin
ca
parents:
diff changeset
   343
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   344
1d91a0437471 initial checkin
ca
parents:
diff changeset
   345
invalidateGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   346
    "called to set the glxView to invalidate, to force a redraw
1d91a0437471 initial checkin
ca
parents:
diff changeset
   347
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   348
    glxView invalidate
1d91a0437471 initial checkin
ca
parents:
diff changeset
   349
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   350
1d91a0437471 initial checkin
ca
parents:
diff changeset
   351
recomputeWholeGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   352
    "called to force the glxView to recompute all columns and the grid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   353
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   354
    glxView recomputeWholeGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   355
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   356
!
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   357
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   358
vLinesSizeChanged:what atX:aPhysX
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   359
    "called if the list of vertical lines changed; a new lineIndex is inserted (#insert:)
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   360
     or removed (#remove:) from the list
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   361
    "
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   362
    Transcript showCR:'VERTICAL LINES NOT YET SUPPORTED'.
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   363
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   364
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   365
1d91a0437471 initial checkin
ca
parents:
diff changeset
   366
!GraphColumnView3D methodsFor:'rotation'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   367
1d91a0437471 initial checkin
ca
parents:
diff changeset
   368
rotateX
1d91a0437471 initial checkin
ca
parents:
diff changeset
   369
    "returns the rotation X value; range: 0 .. 360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   370
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   371
    ^ rotateX
1d91a0437471 initial checkin
ca
parents:
diff changeset
   372
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   373
1d91a0437471 initial checkin
ca
parents:
diff changeset
   374
rotateX:aValue
1d91a0437471 initial checkin
ca
parents:
diff changeset
   375
    "set the rotation X value; range: 0 .. 360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   376
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   377
    |r|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   378
1d91a0437471 initial checkin
ca
parents:
diff changeset
   379
    (r := self rotateValueFrom:aValue) ~~ rotateX ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   380
        rotateX := r.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   381
        self invalidateGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   382
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   383
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   384
1d91a0437471 initial checkin
ca
parents:
diff changeset
   385
rotateY
1d91a0437471 initial checkin
ca
parents:
diff changeset
   386
    "returns the rotation Y value; range: 0 .. 360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   387
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   388
    ^ rotateY
1d91a0437471 initial checkin
ca
parents:
diff changeset
   389
1d91a0437471 initial checkin
ca
parents:
diff changeset
   390
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   391
1d91a0437471 initial checkin
ca
parents:
diff changeset
   392
rotateY:aValue
1d91a0437471 initial checkin
ca
parents:
diff changeset
   393
    "set the rotation Y value; range: 0 .. 360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   394
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   395
    |r|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   396
1d91a0437471 initial checkin
ca
parents:
diff changeset
   397
    (r := self rotateValueFrom:aValue) ~~ rotateY ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   398
        rotateY := r.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   399
        self invalidateGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   400
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   401
1d91a0437471 initial checkin
ca
parents:
diff changeset
   402
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   403
1d91a0437471 initial checkin
ca
parents:
diff changeset
   404
rotateZ
1d91a0437471 initial checkin
ca
parents:
diff changeset
   405
    "returns the rotation Z value; range: 0 .. 360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   406
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   407
    ^ rotateZ
1d91a0437471 initial checkin
ca
parents:
diff changeset
   408
1d91a0437471 initial checkin
ca
parents:
diff changeset
   409
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   410
1d91a0437471 initial checkin
ca
parents:
diff changeset
   411
rotateZ:aValue
1d91a0437471 initial checkin
ca
parents:
diff changeset
   412
    "set the rotation Z value; range: 0 .. 360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   413
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   414
    |r|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   415
1d91a0437471 initial checkin
ca
parents:
diff changeset
   416
    (r := self rotateValueFrom:aValue) ~~ rotateZ ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   417
        rotateZ := r.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   418
        self invalidateGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   419
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   420
1d91a0437471 initial checkin
ca
parents:
diff changeset
   421
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   422
1d91a0437471 initial checkin
ca
parents:
diff changeset
   423
!GraphColumnView3D::GLXGraph methodsFor:'drawing'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   424
1d91a0437471 initial checkin
ca
parents:
diff changeset
   425
redraw
1d91a0437471 initial checkin
ca
parents:
diff changeset
   426
    "redraw
1d91a0437471 initial checkin
ca
parents:
diff changeset
   427
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   428
    shown ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   429
        self redrawInBackBuffer.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   430
        self swapBuffers.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   431
        self sensor flushExposeEventsFor:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   432
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   433
1d91a0437471 initial checkin
ca
parents:
diff changeset
   434
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   435
1d91a0437471 initial checkin
ca
parents:
diff changeset
   436
redrawGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   437
    "draw the graph and spawn the grid dependend on the enabled
1d91a0437471 initial checkin
ca
parents:
diff changeset
   438
     attributes
1d91a0437471 initial checkin
ca
parents:
diff changeset
   439
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   440
    |y z x data yVal
1d91a0437471 initial checkin
ca
parents:
diff changeset
   441
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   442
     colNr   "{ Class:SmallInteger }"
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   443
     noRows  "| Class:SmallInteger }"
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   444
     r       "{ Class:SmallInteger }"
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   445
     firstX  "{ Class:SmallInteger }"
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   446
    |
1d91a0437471 initial checkin
ca
parents:
diff changeset
   447
    noRows := graph windowSize.
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   448
    firstX := graph graphOriginX.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   449
    z      := 0.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   450
    data   := Array new:noRows.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   451
    maxY   := nil.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   452
1d91a0437471 initial checkin
ca
parents:
diff changeset
   453
    graph columns do:[:aCol|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   454
        aCol shown ifTrue:[
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   455
            yVal := aCol yValuesStartAt:firstX into:data.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   456
            x    := 0.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   457
            r    := 1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   458
1d91a0437471 initial checkin
ca
parents:
diff changeset
   459
            maxY isNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   460
                maxY := minY := yVal at:r
1d91a0437471 initial checkin
ca
parents:
diff changeset
   461
            ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   462
            self setColor:(aCol foregroundColor).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   463
            device glxBeginLineIn:drawableId.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   464
1d91a0437471 initial checkin
ca
parents:
diff changeset
   465
            noRows timesRepeat:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   466
                y    := yVal at:r.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   467
                maxY := maxY max:y.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   468
                minY := minY min:y.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   469
1d91a0437471 initial checkin
ca
parents:
diff changeset
   470
                device glxV3fX:x y:y z:z in:drawableId.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   471
                x := x + 1.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   472
                r := r + 1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   473
            ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   474
1d91a0437471 initial checkin
ca
parents:
diff changeset
   475
            device glxEndLineIn:drawableId.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   476
            z := z + 1.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   477
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   478
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   479
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   480
1d91a0437471 initial checkin
ca
parents:
diff changeset
   481
redrawGrid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   482
    "draw the graph and spawn the grid dependend on the enabled
1d91a0437471 initial checkin
ca
parents:
diff changeset
   483
     attributes
1d91a0437471 initial checkin
ca
parents:
diff changeset
   484
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   485
    |y z x visCols data
1d91a0437471 initial checkin
ca
parents:
diff changeset
   486
     noRows "| Class:SmallInteger }"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   487
     r      "{ Class:SmallInteger }"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   488
    |
1d91a0437471 initial checkin
ca
parents:
diff changeset
   489
    visCols := graph columns select:[:c| c shown ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   490
1d91a0437471 initial checkin
ca
parents:
diff changeset
   491
    visCols size < 2 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   492
        ^ self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   493
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   494
    noRows := graph windowSize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   495
    x      := 0.0.
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   496
    r      := graph graphOriginX.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   497
    data   := Array new:1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   498
    maxY   := minY := (visCols at:1) yValueAt:1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   499
1d91a0437471 initial checkin
ca
parents:
diff changeset
   500
    self setColor:(graph gridColor).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   501
1d91a0437471 initial checkin
ca
parents:
diff changeset
   502
    noRows timesRepeat:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   503
        device glxBeginLineIn:drawableId.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   504
        z := 0.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   505
1d91a0437471 initial checkin
ca
parents:
diff changeset
   506
        visCols do:[:aCol|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   507
            y    := aCol yValueAt:r.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   508
            maxY := maxY max:y.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   509
            minY := minY min:y.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   510
1d91a0437471 initial checkin
ca
parents:
diff changeset
   511
            device glxV3fX:x y:y z:z in:drawableId.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   512
            z := z + 1.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   513
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   514
1d91a0437471 initial checkin
ca
parents:
diff changeset
   515
        device glxEndLineIn:drawableId.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   516
        x := x + 1.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   517
        r := r + 1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   518
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   519
1d91a0437471 initial checkin
ca
parents:
diff changeset
   520
1d91a0437471 initial checkin
ca
parents:
diff changeset
   521
1d91a0437471 initial checkin
ca
parents:
diff changeset
   522
1d91a0437471 initial checkin
ca
parents:
diff changeset
   523
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   524
1d91a0437471 initial checkin
ca
parents:
diff changeset
   525
redrawInBackBuffer
1d91a0437471 initial checkin
ca
parents:
diff changeset
   526
    "redraw in back
1d91a0437471 initial checkin
ca
parents:
diff changeset
   527
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   528
    |sY sX noCols dY winSize|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   529
1d91a0437471 initial checkin
ca
parents:
diff changeset
   530
    self setColor:(graph backgroundColor).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   531
    self clear.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   532
1d91a0437471 initial checkin
ca
parents:
diff changeset
   533
    (noCols := graph numberOfVisibleColumns) == 0 ifTrue:[      "/ no shown columns
1d91a0437471 initial checkin
ca
parents:
diff changeset
   534
        ^ self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   535
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   536
1d91a0437471 initial checkin
ca
parents:
diff changeset
   537
    winSize := graph windowSize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   538
1d91a0437471 initial checkin
ca
parents:
diff changeset
   539
    (graph showGrid and:[glxObjGrid isNil]) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   540
        self makeObject:(glxObjGrid := self newObjectId).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   541
        self redrawGrid.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   542
        self closeObject.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   543
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   544
1d91a0437471 initial checkin
ca
parents:
diff changeset
   545
    (graph showGraph and:[glxObjGraphs isNil]) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   546
        self makeObject:(glxObjGraphs := self newObjectId).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   547
        self redrawGraph.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   548
        self closeObject.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   549
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   550
1d91a0437471 initial checkin
ca
parents:
diff changeset
   551
    dY := (maxY - minY) / 2.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   552
    sX := 1.9 / winSize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   553
    sY := ((0.5 / (dY max:2.0)) min:sX) * graph zoomY.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   554
1d91a0437471 initial checkin
ca
parents:
diff changeset
   555
1d91a0437471 initial checkin
ca
parents:
diff changeset
   556
    self pushMatrix.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   557
1d91a0437471 initial checkin
ca
parents:
diff changeset
   558
    self rotateX:(graph rotateX) y:(graph rotateY) z:(graph rotateZ).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   559
    self scaleX:sX y:sY z:(graph zoomZ * (1.0 / noCols)).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   560
1d91a0437471 initial checkin
ca
parents:
diff changeset
   561
    self translateX:(winSize / -2.0)            "/ rotate center line
1d91a0437471 initial checkin
ca
parents:
diff changeset
   562
                  y:(dY - maxY)                 "/ translate to center
1d91a0437471 initial checkin
ca
parents:
diff changeset
   563
                  z:(noCols  / -2.0).           "/ rotate center line
1d91a0437471 initial checkin
ca
parents:
diff changeset
   564
1d91a0437471 initial checkin
ca
parents:
diff changeset
   565
    graph showGrid  ifTrue:[ self callObject:glxObjGrid ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   566
    graph showGraph ifTrue:[ self callObject:glxObjGraphs ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   567
    self popMatrix.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   568
1d91a0437471 initial checkin
ca
parents:
diff changeset
   569
1d91a0437471 initial checkin
ca
parents:
diff changeset
   570
1d91a0437471 initial checkin
ca
parents:
diff changeset
   571
1d91a0437471 initial checkin
ca
parents:
diff changeset
   572
1d91a0437471 initial checkin
ca
parents:
diff changeset
   573
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   574
1d91a0437471 initial checkin
ca
parents:
diff changeset
   575
!GraphColumnView3D::GLXGraph methodsFor:'event handling'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   576
1d91a0437471 initial checkin
ca
parents:
diff changeset
   577
buttonPress:button x:x y:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
   578
    "delegate button to graph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   579
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   580
    graph buttonPress:button x:x y:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
   581
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   582
1d91a0437471 initial checkin
ca
parents:
diff changeset
   583
!GraphColumnView3D::GLXGraph methodsFor:'initialization'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   584
1d91a0437471 initial checkin
ca
parents:
diff changeset
   585
destroy
1d91a0437471 initial checkin
ca
parents:
diff changeset
   586
    "remove dependencies
1d91a0437471 initial checkin
ca
parents:
diff changeset
   587
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   588
    super destroy.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   589
    self  deleteAllObjects.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   590
1d91a0437471 initial checkin
ca
parents:
diff changeset
   591
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   592
1d91a0437471 initial checkin
ca
parents:
diff changeset
   593
for:aGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   594
    graph := aGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   595
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   596
1d91a0437471 initial checkin
ca
parents:
diff changeset
   597
initialize
1d91a0437471 initial checkin
ca
parents:
diff changeset
   598
    "setup default values
1d91a0437471 initial checkin
ca
parents:
diff changeset
   599
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   600
    super initialize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   601
1d91a0437471 initial checkin
ca
parents:
diff changeset
   602
    type     := #colorIndexDoubleBuffer.      "/ works on any device
1d91a0437471 initial checkin
ca
parents:
diff changeset
   603
    colorMap := Dictionary new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   604
    maxY     :=  1.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   605
    minY     := -1.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   606
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   607
1d91a0437471 initial checkin
ca
parents:
diff changeset
   608
realize
1d91a0437471 initial checkin
ca
parents:
diff changeset
   609
    "define orthogonal projection; switch to back buffer drawing
1d91a0437471 initial checkin
ca
parents:
diff changeset
   610
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   611
    super realize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   612
    device glxOrthoLeft:-1.0 right:1.0 bottom:-1.0 top:1.0 near:10.0 far:-10.0 in:drawableId.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   613
    self backBuffer.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   614
1d91a0437471 initial checkin
ca
parents:
diff changeset
   615
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   616
1d91a0437471 initial checkin
ca
parents:
diff changeset
   617
unrealize
1d91a0437471 initial checkin
ca
parents:
diff changeset
   618
    "clear colorMap and objects
1d91a0437471 initial checkin
ca
parents:
diff changeset
   619
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   620
    super unrealize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   621
    self  deleteAllObjects.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   622
1d91a0437471 initial checkin
ca
parents:
diff changeset
   623
    colorMap := Dictionary new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   624
1d91a0437471 initial checkin
ca
parents:
diff changeset
   625
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   626
1d91a0437471 initial checkin
ca
parents:
diff changeset
   627
!GraphColumnView3D::GLXGraph methodsFor:'private'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   628
1d91a0437471 initial checkin
ca
parents:
diff changeset
   629
deleteAllObjects
1d91a0437471 initial checkin
ca
parents:
diff changeset
   630
    "delete all graphical objects
1d91a0437471 initial checkin
ca
parents:
diff changeset
   631
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   632
    glxObjGraphs notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   633
        self deleteObject:glxObjGraphs.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   634
        glxObjGraphs := nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   635
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   636
1d91a0437471 initial checkin
ca
parents:
diff changeset
   637
    glxObjGrid notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   638
        self deleteObject:glxObjGrid.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   639
        glxObjGrid := nil.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   640
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   641
1d91a0437471 initial checkin
ca
parents:
diff changeset
   642
    colorMap do:[:aColIndex|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   643
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   644
1d91a0437471 initial checkin
ca
parents:
diff changeset
   645
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   646
1d91a0437471 initial checkin
ca
parents:
diff changeset
   647
setColor:aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   648
    |index useCol|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   649
1d91a0437471 initial checkin
ca
parents:
diff changeset
   650
    useCol := aColor ? graph foregroundColor.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   651
1d91a0437471 initial checkin
ca
parents:
diff changeset
   652
    index := colorMap at:useCol ifAbsent:nil.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   653
1d91a0437471 initial checkin
ca
parents:
diff changeset
   654
    index isNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   655
        index := colorMap size + self class numberOfStandardColors.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   656
        colorMap at:(useCol on:device) put:index.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   657
1d91a0437471 initial checkin
ca
parents:
diff changeset
   658
        self colorRed:(useCol red) green:(useCol green) blue:(useCol blue).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   659
1d91a0437471 initial checkin
ca
parents:
diff changeset
   660
        self mapColor:index
1d91a0437471 initial checkin
ca
parents:
diff changeset
   661
                  red:(useCol redByte)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   662
                green:(useCol greenByte)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   663
                 blue:(useCol blueByte).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   664
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   665
    self color:index.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   666
1d91a0437471 initial checkin
ca
parents:
diff changeset
   667
1d91a0437471 initial checkin
ca
parents:
diff changeset
   668
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   669
1d91a0437471 initial checkin
ca
parents:
diff changeset
   670
stepZ
1d91a0437471 initial checkin
ca
parents:
diff changeset
   671
    ^ 1.0
1d91a0437471 initial checkin
ca
parents:
diff changeset
   672
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   673
1d91a0437471 initial checkin
ca
parents:
diff changeset
   674
!GraphColumnView3D::GLXGraph methodsFor:'recomputation'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   675
1d91a0437471 initial checkin
ca
parents:
diff changeset
   676
recomputeGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   677
    "recompute graph and redraw the graph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   678
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   679
    glxObjGraphs notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   680
        self deleteObject:glxObjGraphs.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   681
        glxObjGraphs := nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   682
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   683
    self invalidate.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   684
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   685
1d91a0437471 initial checkin
ca
parents:
diff changeset
   686
recomputeGrid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   687
    "recompute graph and redraw the graph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   688
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   689
    glxObjGrid notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   690
        self deleteObject:glxObjGrid.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   691
        glxObjGrid := nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   692
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   693
    self invalidate.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   694
1d91a0437471 initial checkin
ca
parents:
diff changeset
   695
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   696
1d91a0437471 initial checkin
ca
parents:
diff changeset
   697
recomputeWholeGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   698
    "recompute columns and grid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   699
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   700
    self deleteAllObjects.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   701
    self invalidate
1d91a0437471 initial checkin
ca
parents:
diff changeset
   702
1d91a0437471 initial checkin
ca
parents:
diff changeset
   703
1d91a0437471 initial checkin
ca
parents:
diff changeset
   704
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   705
1d91a0437471 initial checkin
ca
parents:
diff changeset
   706
!GraphColumnView3D class methodsFor:'documentation'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   707
1d91a0437471 initial checkin
ca
parents:
diff changeset
   708
version
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   709
    ^ '$Header: /cvs/stx/stx/libwidg2/GraphColumnView3D.st,v 1.2 1998-02-09 11:31:14 ca Exp $'
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   710
! !