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