GraphColumnView3D.st
author ca
Thu, 05 Mar 1998 20:43:24 +0100
changeset 802 c8848a173815
parent 754 c55a5727bf04
child 803 5ff79f80245e
permissions -rw-r--r--
lock redraw, delete of objects
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
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
     3
		rotateYHolder rotateZHolder zoomZ zoomZHolder showAxis'
741
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
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
    10
	instanceVariableNames:'graph colorMap glxObjGraphs glxObjFcts glxObjRefs glxObjGrid
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
    11
		glxObjAxis maxY minY removeGraphs removeFcts removeRefs
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
    12
		removeGrid removeAxis redrawLock'
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    13
	classVariableNames:''
1d91a0437471 initial checkin
ca
parents:
diff changeset
    14
	poolDictionaries:''
1d91a0437471 initial checkin
ca
parents:
diff changeset
    15
	privateIn:GraphColumnView3D
1d91a0437471 initial checkin
ca
parents:
diff changeset
    16
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    17
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    18
!GraphColumnView3D class methodsFor:'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
documentation
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    21
"
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    22
    The class provides all the functionality for showing, scrolling and manipulating graphs
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    23
    described through to a GraphColumn description. Each change in a graph description
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    24
    immediately take affect.
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    25
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    26
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    27
    [See also:]
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    28
        GraphColumn
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    29
        GraphColumnView
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    30
        GraphColumnView2D
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    31
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    32
    [Author:]
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    33
        Claus Atzkern
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    34
"
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    35
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
    36
! !
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    37
1d91a0437471 initial checkin
ca
parents:
diff changeset
    38
!GraphColumnView3D class methodsFor:'menu'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    39
1d91a0437471 initial checkin
ca
parents:
diff changeset
    40
defaultMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    41
    "this window spec was automatically generated by the ST/X MenuEditor"
1d91a0437471 initial checkin
ca
parents:
diff changeset
    42
1d91a0437471 initial checkin
ca
parents:
diff changeset
    43
    "do not manually edit this - the builder may not be able to
1d91a0437471 initial checkin
ca
parents:
diff changeset
    44
     handle the specification if its corrupted."
1d91a0437471 initial checkin
ca
parents:
diff changeset
    45
1d91a0437471 initial checkin
ca
parents:
diff changeset
    46
    "
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
    47
     MenuEditor new openOnClass:GraphColumnView3D andSelector:#defaultMenu
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
    48
     (Menu new fromLiteralArrayEncoding:(GraphColumnView3D defaultMenu)) startUp
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    49
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    50
1d91a0437471 initial checkin
ca
parents:
diff changeset
    51
    <resource: #menu>
1d91a0437471 initial checkin
ca
parents:
diff changeset
    52
1d91a0437471 initial checkin
ca
parents:
diff changeset
    53
    ^
1d91a0437471 initial checkin
ca
parents:
diff changeset
    54
     
1d91a0437471 initial checkin
ca
parents:
diff changeset
    55
       #(#Menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    56
          
1d91a0437471 initial checkin
ca
parents:
diff changeset
    57
           #(
1d91a0437471 initial checkin
ca
parents:
diff changeset
    58
             #(#MenuItem
1d91a0437471 initial checkin
ca
parents:
diff changeset
    59
                #'label:' 'Show Columns'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    60
                #'indication:' #'showGraph:'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    61
            )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    62
             #(#MenuItem
1d91a0437471 initial checkin
ca
parents:
diff changeset
    63
                #'label:' 'Show Grid'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    64
                #'indication:' #'showGrid:'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    65
            )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    66
             #(#MenuItem
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
    67
                #'label:' 'Show Axis'
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
    68
                #'indication:' #'showAxis:'
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
    69
            )
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
    70
             #(#MenuItem
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
    71
                #'label:' 'Show References'
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
    72
                #'indication:' #'showReferences:'
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
    73
            )
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
    74
             #(#MenuItem
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    75
                #'label:' '-'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    76
            )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    77
             #(#MenuItem
1d91a0437471 initial checkin
ca
parents:
diff changeset
    78
                #'label:' 'Zoom Y'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    79
                #'submenuChannel:' #subMenuZoomY
1d91a0437471 initial checkin
ca
parents:
diff changeset
    80
            )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    81
          ) nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
    82
          nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
    83
      )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    84
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
    85
1d91a0437471 initial checkin
ca
parents:
diff changeset
    86
!GraphColumnView3D class methodsFor:'test'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    87
1d91a0437471 initial checkin
ca
parents:
diff changeset
    88
test
1d91a0437471 initial checkin
ca
parents:
diff changeset
    89
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
    90
self test
1d91a0437471 initial checkin
ca
parents:
diff changeset
    91
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
    92
    |top list view x|
1d91a0437471 initial checkin
ca
parents:
diff changeset
    93
1d91a0437471 initial checkin
ca
parents:
diff changeset
    94
    top  := StandardSystemView extent:800 @ 400.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    95
    view := GraphColumnView3D origin:0@0 extent:1.0@1.0 in:top.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    96
    list := OrderedCollection new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    97
1d91a0437471 initial checkin
ca
parents:
diff changeset
    98
    top label:'2D-View'.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    99
1d91a0437471 initial checkin
ca
parents:
diff changeset
   100
    #(  red green yellow blue 
1d91a0437471 initial checkin
ca
parents:
diff changeset
   101
     ) keysAndValuesDo:[:idx :aColor|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   102
        |col|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   103
1d91a0437471 initial checkin
ca
parents:
diff changeset
   104
        col := GraphColumn name:idx.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   105
        col foregroundColor:(Color perform:aColor).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   106
1d91a0437471 initial checkin
ca
parents:
diff changeset
   107
        col functionYblock:[:start :anArray|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   108
            x := (start - 1) * 0.2.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   109
            (idx == 1 or:[idx == 3]) ifTrue:[
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   110
                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
   111
            ] ifFalse:[
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   112
                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
   113
            ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   114
            anArray
1d91a0437471 initial checkin
ca
parents:
diff changeset
   115
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   116
        list add:col
1d91a0437471 initial checkin
ca
parents:
diff changeset
   117
    ].
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   118
"/    view rotateX:0.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   119
"/    view rotateY:0.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   120
    view showGrid:true.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   121
    view columns:list.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   122
    top open.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   123
1d91a0437471 initial checkin
ca
parents:
diff changeset
   124
1d91a0437471 initial checkin
ca
parents:
diff changeset
   125
1d91a0437471 initial checkin
ca
parents:
diff changeset
   126
1d91a0437471 initial checkin
ca
parents:
diff changeset
   127
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   128
!
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   129
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   130
test1
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   131
"
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   132
self test1
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   133
"
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   134
    |top list view x|
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   135
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   136
    top  := StandardSystemView extent:800 @ 400.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   137
    view := GraphColumnView3D origin:0@0 extent:1.0@1.0 in:top.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   138
    list := OrderedCollection new.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   139
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   140
    top label:'3D-View'.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   141
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   142
    #(  red green yellow blue 
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   143
     ) keysAndValuesDo:[:idx :aColor|
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   144
        |col|
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   145
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   146
        col := GraphColumn name:idx.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   147
        col foregroundColor:(Color perform:aColor).
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   148
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   149
        col functionYblock:[:start :anArray|
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   150
            x := (start - 1) * 0.2.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   151
            (idx == 1 or:[idx == 3]) ifTrue:[
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   152
                1 to:(anArray size) do:[:i| anArray at:i put:20 * (x sin). x := x + 0.2 ].
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   153
            ] ifFalse:[
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   154
                1 to:(anArray size) do:[:i| anArray at:i put:20 * (x cos). x := x + 0.2 ].
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   155
            ].
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   156
            anArray
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   157
        ].
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   158
        list add:col
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   159
    ].
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   160
    view showGrid:true.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   161
    view columns:list.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   162
    view showDefaultMenu:true.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   163
    top openAndWait.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   164
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   165
    [   |o i|
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   166
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   167
        i := 0.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   168
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   169
        [top shown] whileTrue:[
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   170
            view rotateX:i.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   171
            i := i + 10.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   172
            o := view removeFirst.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   173
            view add:o.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   174
            Delay waitForSeconds:0.2.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   175
        ]
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   176
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   177
    ] forkAt:7.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   178
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   179
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   180
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   181
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   182
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   183
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   184
1d91a0437471 initial checkin
ca
parents:
diff changeset
   185
!GraphColumnView3D methodsFor:'accessing look'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   186
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   187
showAxis
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   188
    "show or hide the x/y/z axis
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   189
    "
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   190
    ^ showAxis
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   191
!
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   192
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   193
showAxis:aBool
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   194
    "show or hide the x/y/z axis
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   195
    "
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   196
    showAxis ~~ aBool ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   197
        showAxis := aBool.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   198
        self doInvalidateGraph.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   199
    ].
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   200
!
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   201
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   202
showGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   203
    "show or hide columns; if the grid is enabled, only the grid will be
1d91a0437471 initial checkin
ca
parents:
diff changeset
   204
     shown
1d91a0437471 initial checkin
ca
parents:
diff changeset
   205
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   206
    ^ showGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   207
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   208
1d91a0437471 initial checkin
ca
parents:
diff changeset
   209
showGraph:aBool
1d91a0437471 initial checkin
ca
parents:
diff changeset
   210
    "show or hide columns; if the grid is enabled, only the grid will be
1d91a0437471 initial checkin
ca
parents:
diff changeset
   211
     shown
1d91a0437471 initial checkin
ca
parents:
diff changeset
   212
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   213
    showGraph ~~ aBool ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   214
        showGraph := aBool.
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   215
        self doInvalidateGraph.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   216
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   217
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   218
1d91a0437471 initial checkin
ca
parents:
diff changeset
   219
zoomZ
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   220
    "returns the current zoom Z factor
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   221
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   222
    ^ zoomZ
1d91a0437471 initial checkin
ca
parents:
diff changeset
   223
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   224
1d91a0437471 initial checkin
ca
parents:
diff changeset
   225
zoomZ:aValue
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   226
    "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
   227
     default zoom Z factor is set (1).
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   228
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   229
    |zZ|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   230
1d91a0437471 initial checkin
ca
parents:
diff changeset
   231
    (zZ := self floatFrom:aValue onError:[1]) <= 0 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   232
        zZ := 1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   233
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   234
1d91a0437471 initial checkin
ca
parents:
diff changeset
   235
    zZ = zoomZ ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   236
        zoomZ := zZ.
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   237
        self doInvalidateGraph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   238
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   239
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   240
1d91a0437471 initial checkin
ca
parents:
diff changeset
   241
!GraphColumnView3D methodsFor:'accessing mvc'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   242
1d91a0437471 initial checkin
ca
parents:
diff changeset
   243
rotateXHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   244
    "returns the valueHolder, which holds the rotation X value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   245
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   246
    ^ rotateXHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   247
1d91a0437471 initial checkin
ca
parents:
diff changeset
   248
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   249
1d91a0437471 initial checkin
ca
parents:
diff changeset
   250
rotateXHolder:aHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   251
    "set the valueHolder, which holds the rotation X value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   252
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   253
    rotateXHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   254
        rotateXHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   255
            rotateXHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   256
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   257
        (rotateXHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   258
            rotateXHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   259
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   260
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   261
    self rotateX:(rotateXHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   262
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   263
1d91a0437471 initial checkin
ca
parents:
diff changeset
   264
rotateYHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   265
    "returns the valueHolder, which holds the rotation Y value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   266
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   267
    ^ rotateYHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   268
1d91a0437471 initial checkin
ca
parents:
diff changeset
   269
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   270
1d91a0437471 initial checkin
ca
parents:
diff changeset
   271
rotateYHolder:aHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   272
    "set the valueHolder, which holds the rotation Y value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   273
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   274
    rotateYHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   275
        rotateYHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   276
            rotateYHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   277
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   278
        (rotateYHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   279
            rotateYHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   280
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   281
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   282
    self rotateY:(rotateYHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   283
1d91a0437471 initial checkin
ca
parents:
diff changeset
   284
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   285
1d91a0437471 initial checkin
ca
parents:
diff changeset
   286
rotateZHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   287
    "returns the valueHolder, which holds the rotation Z value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   288
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   289
    ^ rotateZHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   290
1d91a0437471 initial checkin
ca
parents:
diff changeset
   291
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   292
1d91a0437471 initial checkin
ca
parents:
diff changeset
   293
rotateZHolder:aHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   294
    "set the valueHolder, which holds the rotation Z value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   295
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   296
    rotateZHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   297
        rotateZHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   298
            rotateZHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   299
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   300
        (rotateZHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   301
            rotateZHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   302
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   303
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   304
    self rotateZ:(rotateZHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   305
1d91a0437471 initial checkin
ca
parents:
diff changeset
   306
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   307
1d91a0437471 initial checkin
ca
parents:
diff changeset
   308
zoomZHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   309
    "returns the valueHolder, which holds the zoom Z factor
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   310
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   311
    ^ zoomZHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   312
1d91a0437471 initial checkin
ca
parents:
diff changeset
   313
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   314
1d91a0437471 initial checkin
ca
parents:
diff changeset
   315
zoomZHolder:aHolder
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   316
    "set the valueHolder, which holds the zoom Z factor
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   317
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   318
    zoomZHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   319
        zoomZHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   320
            zoomZHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   321
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   322
        (zoomZHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   323
            zoomZHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   324
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   325
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   326
    self zoomZ:(zoomZHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   327
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   328
1d91a0437471 initial checkin
ca
parents:
diff changeset
   329
!GraphColumnView3D methodsFor:'change & update'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   330
1d91a0437471 initial checkin
ca
parents:
diff changeset
   331
update:what with:aPara from:chgObj
1d91a0437471 initial checkin
ca
parents:
diff changeset
   332
    "catch and handle a change notification of any object
1d91a0437471 initial checkin
ca
parents:
diff changeset
   333
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   334
    chgObj == rotateXHolder ifTrue:[ ^ self rotateX:(rotateXHolder value) ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   335
    chgObj == rotateYHolder ifTrue:[ ^ self rotateY:(rotateYHolder value) ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   336
    chgObj == rotateZHolder ifTrue:[ ^ self rotateZ:(rotateZHolder value) ].
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   337
    chgObj == zoomZHolder   ifTrue:[ ^ self   zoomZ:(zoomZHolder value)   ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   338
1d91a0437471 initial checkin
ca
parents:
diff changeset
   339
    super update:what with:aPara from:chgObj
1d91a0437471 initial checkin
ca
parents:
diff changeset
   340
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   341
1d91a0437471 initial checkin
ca
parents:
diff changeset
   342
!GraphColumnView3D methodsFor:'converting'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   343
1d91a0437471 initial checkin
ca
parents:
diff changeset
   344
rotateValueFrom:aNumber
1d91a0437471 initial checkin
ca
parents:
diff changeset
   345
    "converts a value to a valid rotation value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   346
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   347
    |r|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   348
1d91a0437471 initial checkin
ca
parents:
diff changeset
   349
    r := self unsignedIntegerFrom:aNumber onError:[0].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   350
  ^ r < 360 ifTrue:[r] ifFalse:[r \\ 360]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   351
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   352
1d91a0437471 initial checkin
ca
parents:
diff changeset
   353
!GraphColumnView3D methodsFor:'initialization'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   354
1d91a0437471 initial checkin
ca
parents:
diff changeset
   355
destroy
1d91a0437471 initial checkin
ca
parents:
diff changeset
   356
    "remove dependencies
1d91a0437471 initial checkin
ca
parents:
diff changeset
   357
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   358
    super destroy.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   359
1d91a0437471 initial checkin
ca
parents:
diff changeset
   360
    rotateXHolder removeDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   361
    rotateYHolder removeDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   362
    rotateZHolder removeDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   363
    zoomZHolder   removeDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   364
1d91a0437471 initial checkin
ca
parents:
diff changeset
   365
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   366
1d91a0437471 initial checkin
ca
parents:
diff changeset
   367
initialize
1d91a0437471 initial checkin
ca
parents:
diff changeset
   368
    "setup default values
1d91a0437471 initial checkin
ca
parents:
diff changeset
   369
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   370
    super initialize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   371
1d91a0437471 initial checkin
ca
parents:
diff changeset
   372
    rotateX  := 45.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   373
    rotateY  := 45.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   374
    rotateZ  := 0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   375
    zoomZ    := 1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   376
1d91a0437471 initial checkin
ca
parents:
diff changeset
   377
    showGraph := true.
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   378
    showAxis  := false.
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   379
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   380
    glxView   := GLXGraph extent:(1.0 @ 1.0) in:self.
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   381
    glxView for:self.
741
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
!GraphColumnView3D methodsFor:'protocol'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   386
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   387
doInvalidateGraph
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   388
    "set graph to invalidate
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   389
    "
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   390
    glxView redraw
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   391
!
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   392
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   393
doRecomputeGraph
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   394
    "called to recompute drawable objects and to set the
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   395
     graph to invalidate
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   396
    "
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   397
    glxView deleteAllObjects.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   398
    self doInvalidateGraph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   399
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   400
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   401
updateColumns:what with:oldValue from:aColumn
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   402
    "called if the list of columns changed
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   403
         #size      the size of the columns
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   404
         #color:    color changed
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   405
     or a specific column:( aColumn notNil )
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   406
         #insert:   insert a new column
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   407
         #remove:   remove a column
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   408
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   409
        or a specific attribute derived from the
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   410
        changed column.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   411
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   412
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   413
    (what == #color or:[what == #foregroundColor]) ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   414
        glxView deleteColumns.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   415
      ^ self doInvalidateGraph.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   416
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   417
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   418
    (   aColumn isNil
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   419
      or:[what == #shown
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   420
      or:[what == #insert:
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   421
      or:[what == #remove:]]]
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   422
    ) ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   423
        ^ self doRecomputeGraph
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   424
    ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   425
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   426
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   427
updateGrid:what
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   428
    "called if the grid changed
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   429
     #color     the color of the grid changed
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   430
     #state     the visibility state of the grid changed
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   431
    "
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   432
    what == #color ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   433
        glxView deleteGrid
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   434
    ].
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   435
    self doInvalidateGraph.
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   436
!
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   437
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   438
updateReferences:what atRelX:aPhysX
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   439
    "called when the list of references changed.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   440
        #remove:        the reference at the relative X index is removed
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   441
        #insert:        a reference is inserted at the relative X index
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   442
        #size           the list of references changed
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   443
        #state          visibility state changed
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   444
        #color          the foreground color changed
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   445
    "
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   446
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   447
    what == #state ifFalse:[
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   448
        glxView deleteReferences
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   449
    ].
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   450
    self doInvalidateGraph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   451
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   452
1d91a0437471 initial checkin
ca
parents:
diff changeset
   453
!GraphColumnView3D methodsFor:'rotation'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   454
1d91a0437471 initial checkin
ca
parents:
diff changeset
   455
rotateX
1d91a0437471 initial checkin
ca
parents:
diff changeset
   456
    "returns the rotation X value; range: 0 .. 360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   457
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   458
    ^ rotateX
1d91a0437471 initial checkin
ca
parents:
diff changeset
   459
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   460
1d91a0437471 initial checkin
ca
parents:
diff changeset
   461
rotateX:aValue
1d91a0437471 initial checkin
ca
parents:
diff changeset
   462
    "set the rotation X value; range: 0 .. 360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   463
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   464
    |r|
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   465
"/ Transcript showCR:aValue.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   466
1d91a0437471 initial checkin
ca
parents:
diff changeset
   467
    (r := self rotateValueFrom:aValue) ~~ rotateX ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   468
        rotateX := r.
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   469
        self doInvalidateGraph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   470
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   471
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   472
1d91a0437471 initial checkin
ca
parents:
diff changeset
   473
rotateY
1d91a0437471 initial checkin
ca
parents:
diff changeset
   474
    "returns the rotation Y value; range: 0 .. 360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   475
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   476
    ^ rotateY
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
rotateY:aValue
1d91a0437471 initial checkin
ca
parents:
diff changeset
   481
    "set the rotation Y value; range: 0 .. 360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   482
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   483
    |r|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   484
1d91a0437471 initial checkin
ca
parents:
diff changeset
   485
    (r := self rotateValueFrom:aValue) ~~ rotateY ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   486
        rotateY := r.
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   487
        self doInvalidateGraph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   488
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   489
1d91a0437471 initial checkin
ca
parents:
diff changeset
   490
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   491
1d91a0437471 initial checkin
ca
parents:
diff changeset
   492
rotateZ
1d91a0437471 initial checkin
ca
parents:
diff changeset
   493
    "returns the rotation Z value; range: 0 .. 360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   494
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   495
    ^ rotateZ
1d91a0437471 initial checkin
ca
parents:
diff changeset
   496
1d91a0437471 initial checkin
ca
parents:
diff changeset
   497
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   498
1d91a0437471 initial checkin
ca
parents:
diff changeset
   499
rotateZ:aValue
1d91a0437471 initial checkin
ca
parents:
diff changeset
   500
    "set the rotation Z value; range: 0 .. 360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   501
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   502
    |r|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   503
1d91a0437471 initial checkin
ca
parents:
diff changeset
   504
    (r := self rotateValueFrom:aValue) ~~ rotateZ ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   505
        rotateZ := r.
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   506
        self doInvalidateGraph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   507
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   508
1d91a0437471 initial checkin
ca
parents:
diff changeset
   509
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   510
1d91a0437471 initial checkin
ca
parents:
diff changeset
   511
!GraphColumnView3D::GLXGraph methodsFor:'drawing'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   512
1d91a0437471 initial checkin
ca
parents:
diff changeset
   513
redraw
1d91a0437471 initial checkin
ca
parents:
diff changeset
   514
    "redraw
1d91a0437471 initial checkin
ca
parents:
diff changeset
   515
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   516
    shown ifTrue:[
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   517
        self freeObjectsDo:[
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   518
            self redrawInBackBuffer.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   519
            self swapBuffers.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   520
        ]
741
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
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   525
redrawAxisFor:aListOfVisibleCols
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   526
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   527
    |y0 x0 z0 x1 y1 z1|
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   528
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   529
    x0 := 0.0.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   530
    z0 := 0.0.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   531
    y0 := minY asFloat.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   532
    y1 := maxY asFloat.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   533
    x1 := graph windowSize asFloat.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   534
    z1 := aListOfVisibleCols size - 1.0.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   535
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   536
    self setColor:(Color red).
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   537
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   538
    device glxBeginLineIn:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   539
    device glxV3fX:x0  y:y0  z:z0   in:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   540
    device glxV3fX:x1  y:y0  z:z0   in:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   541
    device glxEndLineIn:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   542
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   543
    device glxBeginLineIn:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   544
    device glxV3fX:x0  y:y0  z:z0   in:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   545
    device glxV3fX:x0  y:y1  z:z0   in:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   546
    device glxEndLineIn:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   547
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   548
    device glxBeginLineIn:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   549
    device glxV3fX:x0  y:y0  z:z0 in:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   550
    device glxV3fX:x0  y:y0  z:z1 in:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   551
    device glxEndLineIn:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   552
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   553
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   554
!
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   555
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   556
redrawGraphFor:aListOfCols
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   557
    "draw the graph and spawn the grid dependend on the enabled
1d91a0437471 initial checkin
ca
parents:
diff changeset
   558
     attributes
1d91a0437471 initial checkin
ca
parents:
diff changeset
   559
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   560
    |y z x data yVal
1d91a0437471 initial checkin
ca
parents:
diff changeset
   561
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   562
     colNr   "{ Class:SmallInteger }"
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   563
     noRows  "| Class:SmallInteger }"
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   564
     r       "{ Class:SmallInteger }"
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   565
     firstX  "{ Class:SmallInteger }"
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   566
    |
1d91a0437471 initial checkin
ca
parents:
diff changeset
   567
    noRows := graph windowSize.
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   568
    firstX := graph graphOriginX.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   569
    z      := 0.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   570
    data   := Array new:noRows.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   571
    maxY   := nil.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   572
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   573
    aListOfCols do:[:aCol|
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   574
        yVal := aCol yValuesStartAt:firstX into:data.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   575
        x    := 0.0.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   576
        r    := 1.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   577
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   578
        maxY isNil ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   579
            maxY := minY := yVal at:r
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   580
        ].
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   581
        self setColor:(aCol foregroundColor).
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   582
        device glxBeginLineIn:drawableId.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   583
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   584
        noRows timesRepeat:[
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   585
            y    := yVal at:r.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   586
            maxY := maxY max:y.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   587
            minY := minY min:y.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   588
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   589
            device glxV3fX:x y:y z:z in:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   590
            x := x + 1.0.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   591
            r := r + 1.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   592
        ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   593
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   594
        device glxEndLineIn:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   595
        z := z + 1.0.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   596
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   597
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   598
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   599
redrawGridFor:aListOfCols
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   600
    "draw the graph and spawn the grid dependend on the enabled
1d91a0437471 initial checkin
ca
parents:
diff changeset
   601
     attributes
1d91a0437471 initial checkin
ca
parents:
diff changeset
   602
    "
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   603
    |y z x data
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   604
     noRows "| Class:SmallInteger }"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   605
     r      "{ Class:SmallInteger }"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   606
    |
1d91a0437471 initial checkin
ca
parents:
diff changeset
   607
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   608
    aListOfCols size < 2 ifTrue:[
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   609
        ^ self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   610
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   611
    noRows := graph windowSize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   612
    x      := 0.0.
752
271edd188ab6 add text and new functionality
ca
parents: 741
diff changeset
   613
    r      := graph graphOriginX.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   614
    data   := Array new:1.
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   615
    maxY   := minY := (aListOfCols at:1) yValueAt:1.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   616
1d91a0437471 initial checkin
ca
parents:
diff changeset
   617
    self setColor:(graph gridColor).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   618
1d91a0437471 initial checkin
ca
parents:
diff changeset
   619
    noRows timesRepeat:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   620
        device glxBeginLineIn:drawableId.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   621
        z := 0.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   622
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   623
        aListOfCols do:[:aCol|
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   624
            y    := aCol yValueAt:r.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   625
            maxY := maxY max:y.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   626
            minY := minY min:y.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   627
1d91a0437471 initial checkin
ca
parents:
diff changeset
   628
            device glxV3fX:x y:y z:z in:drawableId.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   629
            z := z + 1.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   630
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   631
1d91a0437471 initial checkin
ca
parents:
diff changeset
   632
        device glxEndLineIn:drawableId.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   633
        x := x + 1.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   634
        r := r + 1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   635
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   636
1d91a0437471 initial checkin
ca
parents:
diff changeset
   637
1d91a0437471 initial checkin
ca
parents:
diff changeset
   638
1d91a0437471 initial checkin
ca
parents:
diff changeset
   639
1d91a0437471 initial checkin
ca
parents:
diff changeset
   640
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   641
1d91a0437471 initial checkin
ca
parents:
diff changeset
   642
redrawInBackBuffer
1d91a0437471 initial checkin
ca
parents:
diff changeset
   643
    "redraw in back
1d91a0437471 initial checkin
ca
parents:
diff changeset
   644
    "
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   645
    |sY sX sZ noCols dY winSize w2 refList loCols|
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   646
1d91a0437471 initial checkin
ca
parents:
diff changeset
   647
    self setColor:(graph backgroundColor).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   648
    self clear.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   649
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   650
    (loCols := graph listOfVisibleColumns) isEmpty ifTrue:[       "/ no shown columns
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   651
        ^ self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   652
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   653
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   654
    noCols  := loCols size.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   655
    winSize := graph windowSize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   656
1d91a0437471 initial checkin
ca
parents:
diff changeset
   657
    (graph showGrid and:[glxObjGrid isNil]) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   658
        self makeObject:(glxObjGrid := self newObjectId).
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   659
        self redrawGridFor:loCols.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   660
        self closeObject.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   661
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   662
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   663
    (graph showGraph and:[glxObjFcts isNil]) ifTrue:[
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   664
        self makeObject:(glxObjFcts := self newObjectId).
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   665
        self redrawGraphFor:loCols.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   666
        self closeObject.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   667
    ].
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   668
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   669
    (graph showAxis and:[glxObjAxis isNil]) ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   670
        self makeObject:(glxObjAxis := self newObjectId).
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   671
        self redrawAxisFor:loCols.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   672
        self closeObject.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   673
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   674
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   675
    (graph showReferences and:[glxObjRefs isNil]) ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   676
        refList := graph listOfVisibleRefIndices.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   677
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   678
        refList notEmpty ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   679
            self makeObject:(glxObjRefs := self newObjectId).
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   680
            self redrawReferences:refList for:loCols.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   681
            self closeObject.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   682
        ]
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   683
    ].
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   684
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   685
    sZ := graph zoomZ * (1.0 / noCols).
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   686
    w2 := width // 2.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   687
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   688
"/  calculate scaleX dependent on height and scaleZ
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   689
"/         and:#glxOrthoLeft:right:bottom:top:near:10.0 far:-10.0
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   690
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   691
    sX := height // 2 * noCols * graph zoomZ / (20.0 sqrt).
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   692
    sX := (((w2 * w2) + (sX raisedTo:2)) sqrt) - w2.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   693
    sX := sX / (width / winSize).
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   694
    sX := 2.0 / (winSize + sX).
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   695
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   696
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   697
    dY := (maxY - minY) / 2.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   698
    sY := ((0.5 / (dY max:2.0)) min:sX) * graph zoomY.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   699
1d91a0437471 initial checkin
ca
parents:
diff changeset
   700
    self pushMatrix.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   701
1d91a0437471 initial checkin
ca
parents:
diff changeset
   702
    self rotateX:(graph rotateX) y:(graph rotateY) z:(graph rotateZ).
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   703
    self  scaleX:sX y:sY z:sZ.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   704
1d91a0437471 initial checkin
ca
parents:
diff changeset
   705
    self translateX:(winSize / -2.0)            "/ rotate center line
1d91a0437471 initial checkin
ca
parents:
diff changeset
   706
                  y:(dY - maxY)                 "/ translate to center
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   707
                  z:(noCols - 1 / -2.0).        "/ rotate center line
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   708
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   709
    graph showGrid       ifTrue:[ self callObject:glxObjGrid ].
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   710
    graph showGraph      ifTrue:[ self callObject:glxObjFcts ].
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   711
    graph showAxis       ifTrue:[ self callObject:glxObjAxis ].
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   712
    graph showReferences ifTrue:[ self callObject:glxObjRefs ].
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   713
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   714
    self popMatrix.
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   715
!
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   716
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   717
redrawReferences:aListOfReferences for:aListOfCols
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   718
    "redraw current visible references
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   719
    "
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   720
    |y0 y1 z0 z1 x0|
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   721
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   722
    y0 := minY asFloat.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   723
    y1 := maxY asFloat.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   724
    z0 := -0.1.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   725
    z1 := aListOfCols size - 0.9.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   726
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   727
    self setColor:(graph referenceColor).
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   728
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   729
    aListOfReferences do:[:anIndex|
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   730
        x0 := anIndex asFloat.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   731
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   732
        device glxBeginLineIn:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   733
        device glxV3fX:x0  y:y1  z:z0  in:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   734
        device glxV3fX:x0  y:y0  z:z0  in:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   735
        device glxEndLineIn:drawableId.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   736
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   737
        device glxBeginLineIn:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   738
        device glxV3fX:x0  y:y1  z:z1  in:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   739
        device glxV3fX:x0  y:y0  z:z1  in:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   740
        device glxEndLineIn:drawableId.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   741
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   742
        aListOfCols do:[:aCol||y|
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   743
            y := (aCol yValueAt:anIndex) asFloat.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   744
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   745
            device glxBeginLineIn:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   746
            device glxV3fX:x0  y:y  z:z0   in:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   747
            device glxV3fX:x0  y:y  z:z1   in:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   748
            device glxEndLineIn:drawableId.
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   749
        ]
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   750
    ]
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   751
        
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   752
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   753
1d91a0437471 initial checkin
ca
parents:
diff changeset
   754
!GraphColumnView3D::GLXGraph methodsFor:'event handling'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   755
1d91a0437471 initial checkin
ca
parents:
diff changeset
   756
buttonPress:button x:x y:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
   757
    "delegate button to graph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   758
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   759
    graph buttonPress:button x:x y:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
   760
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   761
1d91a0437471 initial checkin
ca
parents:
diff changeset
   762
!GraphColumnView3D::GLXGraph methodsFor:'initialization'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   763
1d91a0437471 initial checkin
ca
parents:
diff changeset
   764
destroy
1d91a0437471 initial checkin
ca
parents:
diff changeset
   765
    "remove dependencies
1d91a0437471 initial checkin
ca
parents:
diff changeset
   766
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   767
    super destroy.
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   768
    self  deleteAllObjects.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   769
    self  freeObjectsDo:nil.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   770
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   771
1d91a0437471 initial checkin
ca
parents:
diff changeset
   772
for:aGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   773
    graph := aGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   774
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   775
1d91a0437471 initial checkin
ca
parents:
diff changeset
   776
initialize
1d91a0437471 initial checkin
ca
parents:
diff changeset
   777
    "setup default values
1d91a0437471 initial checkin
ca
parents:
diff changeset
   778
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   779
    super initialize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   780
1d91a0437471 initial checkin
ca
parents:
diff changeset
   781
    type     := #colorIndexDoubleBuffer.      "/ works on any device
1d91a0437471 initial checkin
ca
parents:
diff changeset
   782
    colorMap := Dictionary new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   783
    maxY     :=  1.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   784
    minY     := -1.0.
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   785
    removeFcts := false.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   786
    removeRefs := false.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   787
    removeGrid := false.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   788
    removeAxis := false.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   789
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   790
    redrawLock := Semaphore forMutualExclusion.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   791
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   792
1d91a0437471 initial checkin
ca
parents:
diff changeset
   793
realize
1d91a0437471 initial checkin
ca
parents:
diff changeset
   794
    "define orthogonal projection; switch to back buffer drawing
1d91a0437471 initial checkin
ca
parents:
diff changeset
   795
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   796
    super realize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   797
    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
   798
    self backBuffer.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   799
1d91a0437471 initial checkin
ca
parents:
diff changeset
   800
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   801
1d91a0437471 initial checkin
ca
parents:
diff changeset
   802
unrealize
1d91a0437471 initial checkin
ca
parents:
diff changeset
   803
    "clear colorMap and objects
1d91a0437471 initial checkin
ca
parents:
diff changeset
   804
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   805
    super unrealize.
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   806
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   807
    self deleteAllObjects.
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   808
    self freeObjectsDo:[
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   809
        colorMap := Dictionary new.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   810
    ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   811
1d91a0437471 initial checkin
ca
parents:
diff changeset
   812
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   813
1d91a0437471 initial checkin
ca
parents:
diff changeset
   814
!GraphColumnView3D::GLXGraph methodsFor:'private'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   815
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   816
freeObjectsDo:aBlock
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   817
    |id|
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   818
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   819
    redrawLock critical:[
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   820
        id := glxObjFcts printString.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   821
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   822
        (removeFcts and:[glxObjFcts notNil]) ifTrue:[
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   823
            self deleteObject:glxObjFcts.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   824
            glxObjFcts := nil.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   825
        ].
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   826
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   827
        (removeRefs and:[glxObjRefs notNil]) ifTrue:[
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   828
            self deleteObject:glxObjRefs.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   829
            glxObjRefs := nil.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   830
        ].
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   831
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   832
        (removeGrid and:[glxObjGrid notNil]) ifTrue:[
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   833
            self deleteObject:glxObjGrid.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   834
            glxObjGrid := nil.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   835
        ].
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   836
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   837
        (removeAxis and:[glxObjAxis notNil]) ifTrue:[
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   838
            self deleteObject:glxObjAxis.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   839
            glxObjAxis := nil.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   840
        ].
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   841
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   842
        removeAxis := removeGrid := removeRefs := removeFcts := false.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   843
        aBlock value.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   844
    ]
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   845
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   846
!
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   847
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   848
setColor:aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   849
    |index useCol|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   850
1d91a0437471 initial checkin
ca
parents:
diff changeset
   851
    useCol := aColor ? graph foregroundColor.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   852
1d91a0437471 initial checkin
ca
parents:
diff changeset
   853
    index := colorMap at:useCol ifAbsent:nil.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   854
1d91a0437471 initial checkin
ca
parents:
diff changeset
   855
    index isNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   856
        index := colorMap size + self class numberOfStandardColors.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   857
        colorMap at:(useCol on:device) put:index.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   858
1d91a0437471 initial checkin
ca
parents:
diff changeset
   859
        self colorRed:(useCol red) green:(useCol green) blue:(useCol blue).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   860
1d91a0437471 initial checkin
ca
parents:
diff changeset
   861
        self mapColor:index
1d91a0437471 initial checkin
ca
parents:
diff changeset
   862
                  red:(useCol redByte)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   863
                green:(useCol greenByte)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   864
                 blue:(useCol blueByte).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   865
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   866
    self color:index.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   867
1d91a0437471 initial checkin
ca
parents:
diff changeset
   868
1d91a0437471 initial checkin
ca
parents:
diff changeset
   869
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   870
1d91a0437471 initial checkin
ca
parents:
diff changeset
   871
stepZ
1d91a0437471 initial checkin
ca
parents:
diff changeset
   872
    ^ 1.0
1d91a0437471 initial checkin
ca
parents:
diff changeset
   873
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   874
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   875
!GraphColumnView3D::GLXGraph methodsFor:'removing'!
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   876
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   877
deleteAllObjects
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   878
    "delete all graphical objects
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   879
    "
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   880
    removeGrid := removeAxis := removeFcts := removeRefs := true.
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   881
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   882
!
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   883
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   884
deleteAxis
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   885
    removeAxis := true.
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   886
!
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   887
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   888
deleteColumns
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   889
    "delete the columns
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   890
    "
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   891
    removeFcts := true.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   892
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   893
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   894
deleteGrid
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   895
    "delete the grid
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   896
    "
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   897
    removeGrid := true.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   898
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   899
754
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   900
deleteReferences
c55a5727bf04 add more functionality
ca
parents: 752
diff changeset
   901
    "delete the references
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   902
    "
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   903
    removeRefs := true.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   904
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   905
1d91a0437471 initial checkin
ca
parents:
diff changeset
   906
!GraphColumnView3D class methodsFor:'documentation'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   907
1d91a0437471 initial checkin
ca
parents:
diff changeset
   908
version
802
c8848a173815 lock redraw, delete of objects
ca
parents: 754
diff changeset
   909
    ^ '$Header: /cvs/stx/stx/libwidg2/GraphColumnView3D.st,v 1.4 1998-03-05 19:43:24 ca Exp $'
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   910
! !