00001 ÿþ# i n c l u d e " m a i n . h "
00002
00003
00004
00005 # i n c l u d e " c o m m o n . h "
00006
00007 # i n c l u d e " T i m e r . h "
00008
00009
00010
00011 # i n c l u d e < w i n d o w s . h >
00012
00013 # i n c l u d e < i o . h >
00014
00015
00016
00017 # i n c l u d e < i l . h >
00018
00019 # i n c l u d e < m a t h . h >
00020
00021
00022
00023
00024
00025 # i n c l u d e < g l u i . h >
00026
00027
00028
00029 # i n c l u d e " S h a d e r M a n a g e r . h p p "
00030
00031 # i n c l u d e " u t i l i t y . h "
00032
00033 # i n c l u d e " C o l o u r s . h "
00034
00035
00036
00037 # i n c l u d e " H i s t o g r a m D r a w . h "
00038
00039 # i n c l u d e " T r a n s f e r F u n c t i o n G U I . h "
00040
00041 # i n c l u d e " T r a n s f e r F u n c t i o n T e x t u r e . h "
00042
00043 # i n c l u d e " C o l o u r P i c k e r . h "
00044
00045
00046
00047 u s i n g n a m e s p a c e C o l o u r s ;
00048
00049
00050
00051 s t a t i c c o n s t s t d : : s t r i n g S H A D E R _ P R O G R A M _ D I R = " . . / . . / R e s o u r c e s / S h a d e r P r o g r a m s / " ;
00052
00053
00054
00055 f l o a t g _ f U 0 , g _ f U 1 , g _ f V 0 , g _ f V 1 ;
00056
00057
00058
00059 / / O u r g l u t I d l e F u n c
00060
00061 v o i d g l u t I d l e ( v o i d )
00062
00063 {
00064
00065 g l u t S e t W i n d o w ( g _ r e n d e r W i n d o w I D ) ;
00066
00067
00068
00069 / / t r i g g e r t h e d i s p l a y f u n c t i o n ( g l u t D i s p l a y i s c a l l e d i n t h e n e x t i t e r a t i o n o f t h e g l u t M a i n L o o p )
00070
00071 g l u t P o s t R e d i s p l a y ( ) ;
00072
00073 }
00074
00075
00076
00077 v o i d r e n d e r R e n d e r W i n d o w ( )
00078
00079 {
00080
00081 s t a t i c T i m e r t i m T i m e r ;
00082
00083 t i m T i m e r . s t a r t ( ) ;
00084
00085
00086
00087 p r e p a r e R e n d e r W i n d o w R e n d e r i n g ( ) ;
00088
00089
00090
00091 s t a r t F B O P e r s p e c t i v e ( ) ;
00092
00093 r e f r e s h F B O s ( ) ;
00094
00095
00096
00097 s t a r t R e n d e r V i e w P e r s p e c t i v e ( ) ;
00098
00099
00100
00101 / / d r a w C e n t e r C r o s s ( ) ;
00102
00103
00104
00105 s t a r t S h a d i n g ( ) ;
00106
00107 r e f r e s h S h a d e r D a t a ( ) ;
00108
00109 r e n d e r T o F u l l s c r e e n Q u a d ( ) ;
00110
00111 s t o p S h a d i n g ( ) ;
00112
00113
00114
00115
00116
00117 g l u t S w a p B u f f e r s ( ) ;
00118
00119
00120
00121 / / e s t i m a t e f p s
00122
00123 c o n s t d o u b l e d T i m e P e r F r a m e = d o u b l e ( t i m T i m e r ) ;
00124
00125 c o n s t d o u b l e d F r a m e s P e r S e c o n d = d T i m e P e r F r a m e > 0 . 0 ? 1 . 0 / d T i m e P e r F r a m e : 0 . 0 ;
00126
00127 p r i n t f ( " - % 0 6 . 2 f f r a m e s / s e c o n d \ r " , d F r a m e s P e r S e c o n d ) ;
00128
00129
00130
00131 g e t _ e r r o r s ( ) ;
00132
00133
00134
00135 t i m T i m e r . s t o p ( ) ;
00136
00137 }
00138
00139
00140
00141
00142
00143 v o i d r e n d e r R i g h t W i n d o w ( )
00144
00145 {
00146
00147 g l C l e a r C o l o r ( 0 . 5 0 f , 0 . 5 7 f , 0 . 5 4 f , 0 . f ) ;
00148
00149 g l C l e a r ( G L _ C O L O R _ B U F F E R _ B I T | G L _ D E P T H _ B U F F E R _ B I T | G L _ S T E N C I L _ B U F F E R _ B I T ) ;
00150
00151
00152
00153 g l u t S w a p B u f f e r s ( ) ;
00154
00155 }
00156
00157
00158
00159 v o i d r e n d e r B o t t o m W i n d o w ( )
00160
00161 {
00162
00163 g l C l e a r C o l o r ( 0 . 5 0 f , 0 . 5 7 f , 0 . 5 4 f , 0 . f ) ;
00164
00165 g l C l e a r ( G L _ C O L O R _ B U F F E R _ B I T | G L _ D E P T H _ B U F F E R _ B I T | G L _ S T E N C I L _ B U F F E R _ B I T ) ;
00166
00167
00168
00169 i n t w i n d o w W i d t h = g _ i M a i n W i n d o w W i d t h - g _ r i g h t W i n d o w W i d t h ;
00170
00171 i n t w i n d o w H e i g h t = g _ b o t t o m W i n d o w H e i g h t ;
00172
00173
00174
00175 g l M a t r i x M o d e ( G L _ P R O J E C T I O N ) ;
00176
00177 g l L o a d I d e n t i t y ( ) ;
00178
00179 g l O r t h o ( ( G L d o u b l e ) 0 , ( G L d o u b l e ) w i n d o w W i d t h , ( G L d o u b l e ) 0 , ( G L d o u b l e ) w i n d o w H e i g h t , - 1 . 0 , 1 . 0 ) ;
00180
00181 g l M a t r i x M o d e ( G L _ M O D E L V I E W ) ;
00182
00183 g l L o a d I d e n t i t y ( ) ;
00184
00185
00186
00187 g l V i e w p o r t ( 0 , 0 , w i n d o w W i d t h , w i n d o w H e i g h t ) ;
00188
00189
00190
00191 g e t _ e r r o r s ( ) ;
00192
00193
00194
00195 r e f r e s h B o t t o m W i n d o w D a t a ( ) ;
00196
00197
00198
00199
00200
00201 d r a w T r a n s f e r T e x t u r e ( w i n d o w W i d t h , w i n d o w H e i g h t , ( f l o a t ) g _ i T r a n s f e r F u n c t i o n P i c k e r X O f f s e t , ( f l o a t ) g _ i T r a n s f e r F u n c t i o n P i c k e r Y O f f s e t ) ;
00202
00203
00204
00205 / / N o r m a l s p a c e
00206
00207 d r a w T r a n s f e r F u n c P i c k e r ( w i n d o w W i d t h , w i n d o w H e i g h t , g _ i T r a n s f e r F u n c t i o n P i c k e r X O f f s e t , g _ i T r a n s f e r F u n c t i o n P i c k e r Y O f f s e t ) ;
00208
00209
00210
00211 / / O r t h o g o n a l s p a c e
00212
00213 d r a w H i s t o g r a m ( w i n d o w W i d t h , w i n d o w H e i g h t , g _ i T r a n s f e r F u n c t i o n P i c k e r X O f f s e t , g _ i T r a n s f e r F u n c t i o n P i c k e r Y O f f s e t ) ;
00214
00215
00216
00217 d r a w C o n t r o l P o i n t s ( w i n d o w W i d t h , w i n d o w H e i g h t , g _ i T r a n s f e r F u n c t i o n P i c k e r X O f f s e t , g _ i T r a n s f e r F u n c t i o n P i c k e r Y O f f s e t ) ;
00218
00219
00220
00221 d r a w C o l o u r P i c k e r ( w i n d o w W i d t h , w i n d o w H e i g h t , g _ i T r a n s f e r F u n c t i o n P i c k e r X O f f s e t , g _ i T r a n s f e r F u n c t i o n P i c k e r Y O f f s e t ) ;
00222
00223 d r a w C o l o u r P i c k e r C u r s o r ( w i n d o w W i d t h , w i n d o w H e i g h t , g _ i T r a n s f e r F u n c t i o n P i c k e r X O f f s e t , g _ i T r a n s f e r F u n c t i o n P i c k e r Y O f f s e t ) ;
00224
00225
00226
00227 g l u t S w a p B u f f e r s ( ) ;
00228
00229
00230
00231 }
00232
00233
00234
00235 v o i d r e s h a p e F u n c B o t t o m W i n d o w ( i n t w i d t h , i n t h e i g h t )
00236
00237 {
00238
00239 p o s i t i o n B o t t o m W i n d o w ( w i d t h , h e i g h t ) ;
00240
00241 }
00242
00243
00244
00245 v o i d r e s h a p e F u n c R e n d e r W i n d o w ( i n t w i d t h , i n t h e i g h t )
00246
00247 {
00248
00249 p o s i t i o n R e n d e r W i n d o w ( w i d t h , h e i g h t ) ;
00250
00251 }
00252
00253
00254
00255 v o i d r e s h a p e F u n c R i g h t W i n d o w ( i n t w i d t h , i n t h e i g h t )
00256
00257 {
00258
00259 p o s i t i o n R i g h t W i n d o w ( w i d t h , h e i g h t ) ;
00260
00261 }
00262
00263
00264
00265 v o i d g l u i M a s t e r S p e c i a l ( i n t a , i n t b , i n t c )
00266
00267 {
00268
00269 }
00270
00271
00272
00273
00274
00275 / / O u r g l u t R e s h a p e F u n c
00276
00277 v o i d r e s h a p e M a i n W i n d o w ( i n t w i d t h , i n t h e i g h t )
00278
00279 {
00280
00281 / / g l u t S e t W i n d o w ( g _ m a i n W i n d o w I D ) ;
00282
00283 g _ i M a i n W i n d o w W i d t h = w i d t h ;
00284
00285 g _ i M a i n W i n d o w H e i g h t = h e i g h t ;
00286
00287
00288
00289 g _ i R e n d e r W i n d o w W i d t h = g _ i M a i n W i n d o w W i d t h - g _ r i g h t W i n d o w W i d t h ;
00290
00291 g _ i R e n d e r W i n d o w H e i g h t = g _ i M a i n W i n d o w H e i g h t - g _ b o t t o m W i n d o w H e i g h t ;
00292
00293 g _ f R a t i o _ r w = ( f l o a t ) g _ i R e n d e r W i n d o w H e i g h t / ( f l o a t ) g _ i R e n d e r W i n d o w W i d t h ;
00294
00295
00296
00297 r e s h a p e R e n d e r W i n d o w ( g _ i R e n d e r W i n d o w W i d t h , g _ i R e n d e r W i n d o w H e i g h t ) ;
00298
00299 p o s i t i o n R e n d e r W i n d o w ( 0 , 0 ) ;
00300
00301 r e s h a p e B o t t o m W i n d o w ( g _ i M a i n W i n d o w W i d t h , g _ b o t t o m W i n d o w H e i g h t ) ;
00302
00303 p o s i t i o n B o t t o m W i n d o w ( w i d t h , h e i g h t ) ;
00304
00305 r e s h a p e R i g h t W i n d o w ( g _ r i g h t W i n d o w W i d t h , g _ i M a i n W i n d o w H e i g h t - g _ b o t t o m W i n d o w H e i g h t ) ;
00306
00307 p o s i t i o n R i g h t W i n d o w ( w i d t h , h e i g h t ) ;
00308
00309
00310
00311 / / t o d o : r e s h a p e r e n d e r i n g v i e w p o r t h e r e
00312
00313 G L U I _ M a s t e r . a u t o _ s e t _ v i e w p o r t ( ) ;
00314
00315 g l u t P o s t R e d i s p l a y ( ) ;
00316
00317 }
00318
00319
00320
00321 / / O u r g l u t M o u s e F u n c
00322
00323 v o i d m a i n W i n d o w M o u s e C a l l b a c k ( i n t b u t t o n , i n t s t a t e , i n t x , i n t y )
00324
00325 {
00326
00327 / / t o d o : d o m o u s e i n t e r a c t i o n h e r e
00328
00329 }
00330
00331
00332
00333 v o i d m o u s e W h e e l F u n c R e n d e r W i n d o w ( i n t b u t t o n , i n t d i r , i n t x , i n t y )
00334
00335 {
00336
00337 i f ( g _ i S l i c e D i r = = 3 )
00338
00339 {
00340
00341 i f ( d i r > 0 )
00342
00343 {
00344
00345 z o o m - = . 0 5 f ;
00346
00347 }
00348
00349 e l s e
00350
00351 {
00352
00353 z o o m + = . 0 5 f ;
00354
00355 }
00356
00357 u p d a t e R e n d e r W i n d o w ( 0 ) ;
00358
00359 }
00360
00361 }
00362
00363
00364
00365 v o i d m o u s e M o t i o n R e n d e r W i n d o w ( i n t x , i n t y )
00366
00367 {
00368
00369 i f ( v i e w R o t a t i o n D r a g g i n g )
00370
00371 u p d a t e V i e w R o t a t i o n W i t h D r a g P o s i t i o n ( x , y ) ;
00372
00373 }
00374
00375
00376
00377 v o i d m o u s e M o t i o n B o t t o m W i n d o w ( i n t x , i n t y )
00378
00379 {
00380
00381 i n t t r a n s f e r F u n c S p a c e X = x ;
00382
00383 i n t t r a n s f e r F u n c S p a c e Y = y ;
00384
00385 t r a n s f o r m C o o r d i n a t e s T o T r a n s f e r F u n c t i o n P i c k e r S p a c e ( t r a n s f e r F u n c S p a c e X , t r a n s f e r F u n c S p a c e Y ) ;
00386
00387
00388
00389 T F C o n t r o l P o i n t : : g _ b M o u s e I n s i d e B o t t o m W i n d o w = ( x < = g _ i R e n d e r W i n d o w W i d t h & & y < = g _ b o t t o m W i n d o w H e i g h t ) ;
00390
00391
00392
00393 T r a n s f e r F u n c t i o n G U I : : u p d a t e C o n t r o l P o i n t D r a g M o v e m e n t ( t r a n s f e r F u n c S p a c e X , t r a n s f e r F u n c S p a c e Y ) ;
00394
00395
00396
00397 i f ( g _ b D r a g g i n g C o l o u r P i c k e r C u r s o r )
00398
00399 u p d a t e C o l o u r P i c k e r C u r s o r M o v e m e n t ( x , y ) ;
00400
00401
00402
00403 u p d a t e B o t t o m W i n d o w ( 0 ) ;
00404
00405 }
00406
00407
00408
00409
00410
00411 / / O u r g l u t K e y b o a r d F u n c
00412
00413 v o i d g l u t K e y b o a r d ( u n s i g n e d c h a r k e y , i n t x , i n t y )
00414
00415 {
00416
00417 / / t o d o : d o k e y b o a r d i n t e r a c t i o n h e r e
00418
00419 s w i t c h ( k e y ) {
00420
00421 c a s e ' w ' :
00422
00423 g _ f C o o r d X Y Z + = g _ f I n c r e m e n t ;
00424
00425 s t d : : c o u t < < g _ f C o o r d X Y Z < < " ; " ;
00426
00427 b r e a k ;
00428
00429 c a s e ' s ' :
00430
00431 g _ f C o o r d X Y Z - = g _ f I n c r e m e n t ;
00432
00433 b r e a k ;
00434
00435 c a s e ' d ' :
00436
00437 g _ i S l i c e D i r = ( g _ i S l i c e D i r + 1 ) % 3 ;
00438
00439 b r e a k ;
00440
00441 }
00442
00443
00444
00445
00446
00447 / / t h i s s a v e s a s c r e e n s h o t o f t h e O p e n G L w i n d o w i f C t r l + G i s p r e s s e d
00448
00449 i f ( k e y = = u n s i g n e d c h a r ( 7 ) & & ( g l u t G e t M o d i f i e r s ( ) & G L U T _ A C T I V E _ C T R L ) ) / / C t r l + G t o s a v e s c r e e n s h o t s
00450
00451 {
00452
00453 g l u t S e t W i n d o w ( g _ r e n d e r W i n d o w I D ) ;
00454
00455 u n s i g n e d i n t u I m a g e = 0 ;
00456
00457 s t d : : v e c t o r < u n s i g n e d c h a r > v e c I m a g e ;
00458
00459
00460
00461 c h a r v c F i l e n a m e [ 1 0 2 4 ] ;
00462
00463 / / C h e c k f o r n e x t f r e e f i l e n a m e , s i n c e w e d o n ' t w a n t t o o v e r w r i t e e x i s t i n g i m a g e s
00464
00465 / / i m a g e s w i l l b e s a v e d a s ' V i s L u F r a m e w o r k 0 0 0 0 . p n g ' , ' V i s L u F r a m e w o r k 0 0 0 1 . p n g ' , ' V i s L u F r a m e w o r k 0 0 0 2 . p n g ' , e t c .
00466
00467 f o r ( i n t i = 0 ; i < 9 9 9 9 ; i + + )
00468
00469 {
00470
00471 s p r i n t f _ s ( v c F i l e n a m e , 1 0 2 4 , " V i s L u F r a m e w o r k % 0 4 d . p n g " , i ) ;
00472
00473
00474
00475 / / c h e c k i f f i l e d o e s n o t e x i s t
00476
00477 i f ( ( _ a c c e s s ( v c F i l e n a m e , 0 ) ) = = - 1 )
00478
00479 b r e a k ;
00480
00481 }
00482
00483
00484
00485 s t d : : c o u t < < " - S a v i n g s c r e e n s h o t t o ' " < < v c F i l e n a m e < < " ' . . . " < < s t d : : e n d l ;
00486
00487
00488
00489 v e c I m a g e . r e s i z e ( g _ i R e n d e r W i n d o w W i d t h * g _ i R e n d e r W i n d o w H e i g h t * 4 ) ;
00490
00491
00492
00493 / / R e a d t h e O p e n G L f r a m e b u f f e r
00494
00495 g l P u s h A t t r i b ( G L _ P I X E L _ M O D E _ B I T ) ;
00496
00497 g l R e a d B u f f e r ( G L _ F R O N T ) ;
00498
00499
00500
00501 g l R e a d P i x e l s ( 0 , 0 , g _ i R e n d e r W i n d o w W i d t h , g _ i R e n d e r W i n d o w H e i g h t , G L _ R G B A , G L _ U N S I G N E D _ B Y T E , ( v o i d * ) & ( v e c I m a g e . f r o n t ( ) ) ) ;
00502
00503 c o n s t G L e n u m g l E r r o r = g l G e t E r r o r ( ) ;
00504
00505
00506
00507 g l P o p A t t r i b ( ) ;
00508
00509
00510
00511 i f ( g l E r r o r ! = G L _ N O _ E R R O R )
00512
00513 {
00514
00515 s t d : : c e r r < < " U n a b l e t o r e a d f r a m e b u f f e r " < < g l u E r r o r S t r i n g ( g l E r r o r ) < < s t d : : e n d l ;
00516
00517 }
00518
00519 e l s e
00520
00521 {
00522
00523 i l G e n I m a g e s ( 1 , & u I m a g e ) ;
00524
00525
00526
00527 i f ( i l G e t E r r o r ( ) ! = I L _ N O _ E R R O R )
00528
00529 {
00530
00531 s t d : : c e r r < < " U n a b l e t o c r e a t e i m a g e " < < s t d : : e n d l ;
00532
00533 }
00534
00535 e l s e
00536
00537 {
00538
00539 i l B i n d I m a g e ( u I m a g e ) ;
00540
00541
00542
00543 i f ( i l G e t E r r o r ( ) ! = I L _ N O _ E R R O R )
00544
00545 {
00546
00547 s t d : : c e r r < < " U n a b l e t o b i n d i m a g e " < < s t d : : e n d l ;
00548
00549 }
00550
00551 e l s e
00552
00553 {
00554
00555 i l T e x I m a g e ( g _ i R e n d e r W i n d o w W i d t h , g _ i R e n d e r W i n d o w H e i g h t , 1 , 4 , I L _ R G B A , I L _ U N S I G N E D _ B Y T E , ( v o i d * ) & ( v e c I m a g e . f r o n t ( ) ) ) ;
00556
00557
00558
00559 i f ( i l G e t E r r o r ( ) ! = I L _ N O _ E R R O R )
00560
00561 {
00562
00563 s t d : : c e r r < < " U n a b l e t o s t o r e i m a g e " < < s t d : : e n d l ;
00564
00565 }
00566
00567 e l s e
00568
00569 {
00570
00571 / / U s e D e v I L t o s a v e a s c r e e n s h o t o f t h e O p e n G L w i n d o w
00572
00573 i l S a v e I m a g e ( v c F i l e n a m e ) ;
00574
00575
00576
00577 i f ( i l G e t E r r o r ( ) ! = I L _ N O _ E R R O R )
00578
00579 {
00580
00581 s t d : : c e r r < < " U n a b l e t o s a v e i m a g e " < < s t d : : e n d l ;
00582
00583 }
00584
00585 e l s e
00586
00587 {
00588
00589 s t d : : c o u t < < " - S c r e e n s h o t s a v e d . " < < s t d : : e n d l ;
00590
00591 }
00592
00593 }
00594
00595 }
00596
00597 }
00598
00599 }
00600
00601 i f ( u I m a g e )
00602
00603 {
00604
00605 i l B i n d I m a g e ( 0 ) ;
00606
00607 i l D e l e t e I m a g e s ( 1 , & u I m a g e ) ;
00608
00609 }
00610
00611 }
00612
00613
00614
00615
00616
00617 / / D e l e t i o n o f c o n t r o l p o i n t s v i a d e l e t e k e y
00618
00619 i f ( k e y = = 1 2 7 )
00620
00621 {
00622
00623 T r a n s f e r F u n c t i o n G U I : : d e l e t e S e l e c t e d C o n t r o l P o i n t ( ) ;
00624
00625 u p d a t e B o t t o m W i n d o w ( 0 ) ;
00626
00627 }
00628
00629 }
00630
00631
00632
00633 / / E x i t f u n c t i o n ( s o m e c l e a n u p )
00634
00635 v o i d g l u t C l o s e ( )
00636
00637 {
00638
00639 / / t o d o : c l e a n u p
00640
00641 }
00642
00643
00644
00645
00646
00647 c o n s t i n t G e t N e x t P o w e r O f T w o ( c o n s t i n t i N u m b e r )
00648
00649 {
00650
00651 i n t i P o w e r O f T w o = 1 ;
00652
00653
00654
00655 w h i l e ( i P o w e r O f T w o < i N u m b e r )
00656
00657 i P o w e r O f T w o = i P o w e r O f T w o * 2 ;
00658
00659
00660
00661 r e t u r n i P o w e r O f T w o ;
00662
00663 } ;
00664
00665
00666
00667
00668
00669 / / E n t r y p o i n t
00670
00671 i n t m a i n ( i n t a r g c , c h a r * * a r g v )
00672
00673 {
00674
00675 s t d : : c o u t < < " V i s u a l i s i e r u n g 2 0 1 0 \ n \ n T h o m a s R i t t l e r < 0 1 2 5 7 2 8 > , L u k a s M e i n d l < 1 0 2 8 1 6 0 > \ n " < < s t d : : e n d l ;
00676
00677
00678
00679 i f ( i n i t i a l i z a t i o n ( a r g c , a r g v ) ! = E X I T _ S U C C E S S )
00680
00681 r e t u r n E X I T _ F A I L U R E ;
00682
00683
00684
00685 e n t e r M a i n L o o p ( ) ;
00686
00687
00688
00689 s t d : : c o u t < < " - M a i n l o o p t e r m i n a t e d . " < < s t d : : e n d l < < s t d : : e n d l ;
00690
00691 r e t u r n E X I T _ S U C C E S S ;
00692
00693 }
00694
00695
00696
00697 v o i d i n i t G L U I F u n c s M a i n ( )
00698
00699 {
00700
00701 G L U I _ M a s t e r . s e t _ g l u t R e s h a p e F u n c ( r e s h a p e M a i n W i n d o w ) ;
00702
00703 G L U I _ M a s t e r . s e t _ g l u t K e y b o a r d F u n c ( g l u t K e y b o a r d ) ;
00704
00705 G L U I _ M a s t e r . s e t _ g l u t M o u s e F u n c ( m a i n W i n d o w M o u s e C a l l b a c k ) ;
00706
00707 G L U I _ M a s t e r . s e t _ g l u t S p e c i a l F u n c ( g l u i M a s t e r S p e c i a l ) ;
00708
00709
00710
00711 G L U I _ M a s t e r . s e t _ g l u t I d l e F u n c ( g l u t I d l e ) ;
00712
00713 }
00714
00715
00716
00717 v o i d i n i t G L U I F u n c s B o t t o m W i n d o w ( )
00718
00719 {
00720
00721 G L U I _ M a s t e r . s e t _ g l u t R e s h a p e F u n c ( r e s h a p e F u n c B o t t o m W i n d o w ) ;
00722
00723 G L U I _ M a s t e r . s e t _ g l u t K e y b o a r d F u n c ( g l u t B o t t o m W i n d o w K e y b o a r d ) ;
00724
00725 G L U I _ M a s t e r . s e t _ g l u t M o u s e F u n c ( m o u s e A c t i o n B o t t o m W i n d o w ) ;
00726
00727 G L U I _ M a s t e r . s e t _ g l u t S p e c i a l F u n c ( g l u i M a s t e r S p e c i a l ) ;
00728
00729
00730
00731 G L U I _ M a s t e r . s e t _ g l u t I d l e F u n c ( g l u t I d l e ) ;
00732
00733 }
00734
00735
00736
00737 v o i d i n i t G L U I F u n c s R e n d e r W i n d o w ( )
00738
00739 {
00740
00741 G L U I _ M a s t e r . s e t _ g l u t R e s h a p e F u n c ( r e s h a p e F u n c R e n d e r W i n d o w ) ;
00742
00743 G L U I _ M a s t e r . s e t _ g l u t K e y b o a r d F u n c ( g l u t K e y b o a r d ) ;
00744
00745 G L U I _ M a s t e r . s e t _ g l u t M o u s e F u n c ( m o u s e A c t i o n R e n d e r W i n d o w ) ;
00746
00747 G L U I _ M a s t e r . s e t _ g l u t S p e c i a l F u n c ( g l u i M a s t e r S p e c i a l ) ;
00748
00749
00750
00751 G L U I _ M a s t e r . s e t _ g l u t I d l e F u n c ( g l u t I d l e ) ;
00752
00753 }
00754
00755
00756
00757 v o i d i n i t G L U I F u n c s R i g h t W i n d o w ( )
00758
00759 {
00760
00761 G L U I _ M a s t e r . s e t _ g l u t R e s h a p e F u n c ( r e s h a p e F u n c R i g h t W i n d o w ) ;
00762
00763 G L U I _ M a s t e r . s e t _ g l u t K e y b o a r d F u n c ( g l u t K e y b o a r d ) ;
00764
00765 G L U I _ M a s t e r . s e t _ g l u t M o u s e F u n c ( m a i n W i n d o w M o u s e C a l l b a c k ) ;
00766
00767 G L U I _ M a s t e r . s e t _ g l u t S p e c i a l F u n c ( g l u i M a s t e r S p e c i a l ) ;
00768
00769
00770
00771 G L U I _ M a s t e r . s e t _ g l u t I d l e F u n c ( g l u t I d l e ) ;
00772
00773 }
00774
00775
00776
00777 v o i d e n t e r M a i n L o o p ( )
00778
00779 {
00780
00781 s t d : : c o u t < < " - E n t e r i n g m a i n l o o p . . . " < < s t d : : e n d l < < s t d : : e n d l ;
00782
00783
00784
00785 s t d : : c o u t < < " K e y b o a r d : " < < s t d : : e n d l ;
00786
00787 s t d : : c o u t < < " [ C T R L + G ] s a v e s c r e e n s h o t " < < s t d : : e n d l < < s t d : : e n d l ;
00788
00789
00790
00791 / / E n t e r t h e m a i n l o o p
00792
00793 g l u t M a i n L o o p ( ) ;
00794
00795
00796
00797 g l u t C l o s e ( ) ;
00798
00799 }
00800
00801
00802
00803 v o i d i n i t G l u t M a i n W i n d o w ( i n t a r g c , c h a r * * a r g v )
00804
00805 {
00806
00807 / / I n i t i a l i z e G L U T a n d c r e a t e w i n d o w
00808
00809 s t d : : c o u t < < " - I n i t i a l i z i n g G L U T . . . " < < s t d : : e n d l ;
00810
00811 g l u t I n i t ( & a r g c , a r g v ) ;
00812
00813
00814
00815 / / g l u t S e t O p t i o n ( G L U T _ A C T I O N _ O N _ W I N D O W _ C L O S E , G L U T _ A C T I O N _ G L U T M A I N L O O P _ R E T U R N S ) ;
00816
00817 g l u t I n i t W i n d o w S i z e ( g _ i M a i n W i n d o w W i d t h , g _ i M a i n W i n d o w H e i g h t ) ;
00818
00819 g l u t I n i t D i s p l a y M o d e ( G L U T _ R G B | G L U T _ D O U B L E | G L U T _ D E P T H | G L U T _ A L P H A ) ;
00820
00821
00822
00823 g _ m a i n W i n d o w I D = g l u t C r e a t e W i n d o w ( " V i s u a l i s i e r u n g 2 0 1 0 - T h o m a s R i t t l e r < 0 1 2 5 7 2 8 > , L u k a s M e i n d l < 1 0 2 8 1 6 0 > " ) ;
00824
00825 g _ h M a i n W i n d o w = F i n d W i n d o w ( 0 , " V i s u a l i s i e r u n g 2 0 1 0 - T h o m a s R i t t l e r < 0 1 2 5 7 2 8 > , L u k a s M e i n d l < 1 0 2 8 1 6 0 > " ) ;
00826
00827 g l u t C l o s e F u n c ( g l u t C l o s e ) ;
00828
00829
00830
00831 s t d : : c o u t < < " - G L U T i n i t i a l i z e d . " < < s t d : : e n d l < < s t d : : e n d l ;
00832
00833 }
00834
00835
00836
00837
00838
00839 i n t i n i t D e v i l ( )
00840
00841 {
00842
00843 / / I n i t i a l i z e D e v I L ( a n i m a g e l i b r a r y )
00844
00845 s t d : : c o u t < < " - I n i t i a l i z i n g D e v I L . . . " < < s t d : : e n d l ;
00846
00847 i l I n i t ( ) ;
00848
00849
00850
00851 i f ( i l G e t E r r o r ( ) ! = I L _ N O _ E R R O R )
00852
00853 {
00854
00855 s t d : : c e r r < < " E r r o r i n i t i a l i z i n g D e v I L " < < s t d : : e n d l ;
00856
00857 r e t u r n E X I T _ F A I L U R E ;
00858
00859 }
00860
00861
00862
00863 i l E n a b l e ( I L _ O R I G I N _ S E T ) ;
00864
00865 i l O r i g i n F u n c ( I L _ O R I G I N _ L O W E R _ L E F T ) ;
00866
00867 s t d : : c o u t < < " - D e v I L i n i t i a l i z e d . " < < s t d : : e n d l < < s t d : : e n d l ;
00868
00869
00870
00871 r e t u r n E X I T _ S U C C E S S ;
00872
00873 }
00874
00875
00876
00877 v o i d p r o c e s s S l i c e O f D a t a ( s t d : : s t r i n g s t r D a t a F i l e )
00878
00879 {
00880
00881 g l u t S e t W i n d o w ( g _ r e n d e r W i n d o w I D ) ;
00882
00883
00884
00885 G L e n u m g l E r r o r = G L _ N O _ E R R O R ;
00886
00887
00888
00889 / / l o a d v o l u m e
00890
00891 g _ V o l u m e . l o a d ( s t r D a t a F i l e ) ;
00892
00893
00894
00895 / / c r e a t e t e x t u r e
00896
00897 i f ( g _ u E x a m p l e T e x t u r e = = 0 )
00898
00899 {
00900
00901 g l G e n T e x t u r e s ( 1 , & g _ u E x a m p l e T e x t u r e ) ;
00902
00903 g l E r r o r = g l G e t E r r o r ( ) ;
00904
00905 }
00906
00907
00908
00909 i f ( g l E r r o r ! = G L _ N O _ E R R O R )
00910
00911 {
00912
00913 s t d : : c e r r < < " E r r o r g e n e r a t i n g t e x t u r e : " < < g l u E r r o r S t r i n g ( g l E r r o r ) < < s t d : : e n d l ;
00914
00915 }
00916
00917 e l s e i f ( g _ u E x a m p l e T e x t u r e )
00918
00919 {
00920
00921
00922
00923 i f ( G L E W _ E X T _ t e x t u r e 3 D )
00924
00925 {
00926
00927 s a v e D a t a T o 3 D T e x t u r e ( ) ;
00928
00929 }
00930
00931 e l s e
00932
00933 {
00934
00935 s a v e S l i c e T o 2 D T e x t u r e ( ) ;
00936
00937 }
00938
00939 }
00940
00941
00942
00943 s t d : : c o u t < < s t d : : e n d l ;
00944
00945
00946
00947 g l C l e a r ( G L _ C O L O R _ B U F F E R _ B I T | G L _ D E P T H _ B U F F E R _ B I T ) ;
00948
00949 g l u t S w a p B u f f e r s ( ) ;
00950
00951 }
00952
00953
00954
00955
00956
00957 v o i d i n i t R i g h t W i n d o w ( )
00958
00959 {
00960
00961 i n i t I n t e r f a c e R i g h t ( ) ;
00962
00963 }
00964
00965
00966
00967 i n t i n i t i a l i z a t i o n ( i n t a r g c , c h a r * * a r g v )
00968
00969 {
00970
00971 G l e w C o n t e n t M a n a g e m e n t * g l e w C o n t e n t M a n a g e r = G l e w C o n t e n t M a n a g e m e n t : : g e t I n s t a n c e ( ) ;
00972
00973
00974
00975 i n i t G l u t M a i n W i n d o w ( a r g c , a r g v ) ;
00976
00977 i n i t G L U I F u n c s M a i n ( ) ;
00978
00979 g l u t M o u s e W h e e l F u n c ( m o u s e W h e e l F u n c R e n d e r W i n d o w ) ;
00980
00981 g l e w C o n t e n t M a n a g e r - > i n i t M a i n W i n d o w C o n t e x t ( ) ;
00982
00983
00984
00985 i n i t G l u t S u b W i n d o w R e n d e r i n g ( ) ;
00986
00987 i n i t G L U I F u n c s R e n d e r W i n d o w ( ) ;
00988
00989 g l e w C o n t e n t M a n a g e r - > i n i t R e n d e r W i n d o w C o n t e x t ( ) ;
00990
00991
00992
00993 i n i t G l u t S u b W i n d o w B o t t o m ( ) ;
00994
00995 i n i t G L U I F u n c s B o t t o m W i n d o w ( ) ;
00996
00997 g l e w C o n t e n t M a n a g e r - > i n i t B o t t o m W i n d o w C o n t e x t ( ) ;
00998
00999
01000
01001 i n i t G l u t S u b W i n d o w R i g h t ( ) ;
01002
01003 i n i t G L U I F u n c s R i g h t W i n d o w ( ) ;
01004
01005 g l e w C o n t e n t M a n a g e r - > i n i t R i g h t W i n d o w C o n t e x t ( ) ;
01006
01007
01008
01009 i f ( i n i t D e v i l ( ) ! = E X I T _ S U C C E S S )
01010
01011 r e t u r n E X I T _ F A I L U R E ;
01012
01013
01014
01015 g e t _ e r r o r s ( ) ;
01016
01017 i n i t R e n d e r W i n d o w ( ) ;
01018
01019 i n i t B o t t o m W i n d o w ( ) ;
01020
01021 i n i t R i g h t W i n d o w ( ) ;
01022
01023
01024
01025 g _ H i s t o g r a m D r a w = H i s t o g r a m D r a w : : g e t I n s t a n c e ( ) ;
01026
01027
01028
01029 b o o l s u c c e s s = i n i t S h a d e r s ( ) ;
01030
01031 i f ( ! s u c c e s s )
01032
01033 r e t u r n E X I T _ F A I L U R E ;
01034
01035
01036
01037 i n i t F B O s ( ) ;
01038
01039
01040
01041
01042
01043
01044
01045 r e t u r n E X I T _ S U C C E S S ;
01046
01047 }
01048
01049
01050
01051 v o i d i n i t G l u t S u b W i n d o w R e n d e r i n g ( )
01052
01053 {
01054
01055 g _ r e n d e r W i n d o w I D = g l u t C r e a t e S u b W i n d o w ( g _ m a i n W i n d o w I D , 0 , 0 , 1 , 1 ) ;
01056
01057
01058
01059 g _ i R e n d e r W i n d o w W i d t h = g _ i M a i n W i n d o w W i d t h - g _ r i g h t W i n d o w W i d t h ;
01060
01061 g _ i R e n d e r W i n d o w H e i g h t = g _ i M a i n W i n d o w H e i g h t - g _ b o t t o m W i n d o w H e i g h t ;
01062
01063 g _ f R a t i o _ r w = ( f l o a t ) g _ i R e n d e r W i n d o w H e i g h t / ( f l o a t ) g _ i R e n d e r W i n d o w W i d t h ;
01064
01065
01066
01067 / / p o s i t i o n R e n d e r W i n d o w ( w i d t h , h e i g h t ) ;
01068
01069 r e s h a p e R e n d e r W i n d o w ( g _ i R e n d e r W i n d o w W i d t h , g _ i R e n d e r W i n d o w H e i g h t ) ;
01070
01071
01072
01073 g l u t I n i t D i s p l a y M o d e ( G L U T _ R G B | G L U T _ D O U B L E | G L U T _ D E P T H | G L U T _ A L P H A ) ;
01074
01075 g l C l e a r ( G L _ C O L O R _ B U F F E R _ B I T | G L _ D E P T H _ B U F F E R _ B I T ) ;
01076
01077
01078
01079 g l V i e w p o r t ( 0 , 0 , g _ i R e n d e r W i n d o w W i d t h , g _ i R e n d e r W i n d o w H e i g h t ) ;
01080
01081
01082
01083 g l M a t r i x M o d e ( G L _ P R O J E C T I O N ) ;
01084
01085 g l L o a d I d e n t i t y ( ) ;
01086
01087 g l u O r t h o 2 D ( 0 , g _ i R e n d e r W i n d o w W i d t h , g _ i R e n d e r W i n d o w H e i g h t , 0 ) ;
01088
01089 g l M a t r i x M o d e ( G L _ M O D E L V I E W ) ;
01090
01091 g l L o a d I d e n t i t y ( ) ;
01092
01093
01094
01095 c o n s t u n s i g n e d c h a r v p M e s s a g e [ ] = { " I n i t i a l i z i n g ( s e e c o n s o l e f o r d e t a i l s ) . . . " } ;
01096
01097 c o n s t i n t i M e s s a g e W i d t h = g l u t B i t m a p L e n g t h ( G L U T _ B I T M A P _ H E L V E T I C A _ 1 2 , v p M e s s a g e ) ;
01098
01099 c o n s t i n t i M e s s a g e H e i g h t = g l u t B i t m a p H e i g h t ( G L U T _ B I T M A P _ H E L V E T I C A _ 1 2 ) ;
01100
01101
01102
01103 g l C o l o r 4 f ( 1 . 0 f , 1 . 0 f , 1 . 0 f , 1 . 0 f ) ;
01104
01105 g l R a s t e r P o s 2 f ( - ( f l o a t ( i M e s s a g e W i d t h ) / f l o a t ( g _ i M a i n W i n d o w W i d t h ) ) , ( f l o a t ( i M e s s a g e H e i g h t ) / f l o a t ( g _ i M a i n W i n d o w H e i g h t ) ) ) ;
01106
01107 g l u t B i t m a p S t r i n g ( G L U T _ B I T M A P _ H E L V E T I C A _ 1 2 , v p M e s s a g e ) ;
01108
01109 g l R a s t e r P o s 2 f ( 0 . 0 f , 0 . 0 f ) ;
01110
01111 g l u t S w a p B u f f e r s ( ) ;
01112
01113
01114
01115 / / s e t g l u t ( c a l l b a c k - ) f u n c t i o n s
01116
01117 g l u t D i s p l a y F u n c ( r e n d e r R e n d e r W i n d o w ) ;
01118
01119 g l u t M o t i o n F u n c ( m o u s e M o t i o n R e n d e r W i n d o w ) ;
01120
01121 g l u t M o u s e W h e e l F u n c ( m o u s e W h e e l F u n c R e n d e r W i n d o w ) ;
01122
01123 }
01124
01125
01126
01127 v o i d i n i t G l u t S u b W i n d o w B o t t o m ( )
01128
01129 {
01130
01131 g _ b o t t o m W i n d o w I D = g l u t C r e a t e S u b W i n d o w ( g _ m a i n W i n d o w I D , 0 , 0 , 1 , 1 ) ;
01132
01133
01134
01135 u n s i g n e d i n t w i d t h = g _ i M a i n W i n d o w W i d t h ;
01136
01137 u n s i g n e d i n t h e i g h t = g _ b o t t o m W i n d o w H e i g h t ;
01138
01139
01140
01141 r e s h a p e B o t t o m W i n d o w ( w i d t h , h e i g h t ) ;
01142
01143
01144
01145 g l u t D i s p l a y F u n c ( r e n d e r B o t t o m W i n d o w ) ;
01146
01147 g l u t M o t i o n F u n c ( m o u s e M o t i o n B o t t o m W i n d o w ) ;
01148
01149 }
01150
01151
01152
01153
01154
01155 v o i d i n i t G l u t S u b W i n d o w R i g h t ( )
01156
01157 {
01158
01159 g _ r i g h t W i n d o w I D = g l u t C r e a t e S u b W i n d o w ( g _ m a i n W i n d o w I D , 0 , 0 , 1 , 1 ) ;
01160
01161
01162
01163 u n s i g n e d i n t w i d t h = g _ r i g h t W i n d o w W i d t h ;
01164
01165 u n s i g n e d i n t h e i g h t = g _ i M a i n W i n d o w H e i g h t - g _ b o t t o m W i n d o w H e i g h t ;
01166
01167
01168
01169
01170
01171 r e s h a p e R i g h t W i n d o w ( w i d t h , h e i g h t ) ;
01172
01173 g l u t D i s p l a y F u n c ( r e n d e r R i g h t W i n d o w ) ;
01174
01175 }
01176
01177
01178
01179 v o i d p o s i t i o n R e n d e r W i n d o w ( i n t w i d t h , i n t h e i g h t )
01180
01181 {
01182
01183 g l u t S e t W i n d o w ( g _ r e n d e r W i n d o w I D ) ;
01184
01185 g l u t P o s i t i o n W i n d o w ( 0 , 0 ) ;
01186
01187 g l u t P o s t R e d i s p l a y ( ) ;
01188
01189 }
01190
01191
01192
01193 v o i d p o s i t i o n B o t t o m W i n d o w ( i n t w i d t h , i n t h e i g h t )
01194
01195 {
01196
01197 u n s i g n e d i n t b o t t o m W i n d o w V e r t i c a l P o s = g _ i M a i n W i n d o w H e i g h t - g _ b o t t o m W i n d o w H e i g h t ;
01198
01199
01200
01201 g l u t S e t W i n d o w ( g _ b o t t o m W i n d o w I D ) ;
01202
01203 g l u t P o s i t i o n W i n d o w ( 0 , b o t t o m W i n d o w V e r t i c a l P o s ) ;
01204
01205 g l u t P o s t R e d i s p l a y ( ) ;
01206
01207 }
01208
01209
01210
01211 v o i d p o s i t i o n R i g h t W i n d o w ( i n t w i d t h , i n t h e i g h t )
01212
01213 {
01214
01215 u n s i g n e d i n t r i g h t W i n d o w H o r i z o n t i c a l P o s = g _ i M a i n W i n d o w W i d t h - g _ r i g h t W i n d o w W i d t h ;
01216
01217
01218
01219 g l u t S e t W i n d o w ( g _ r i g h t W i n d o w I D ) ;
01220
01221 g l u t P o s i t i o n W i n d o w ( r i g h t W i n d o w H o r i z o n t i c a l P o s , 0 ) ;
01222
01223 g l u t P o s t R e d i s p l a y ( ) ;
01224
01225 }
01226
01227
01228
01229 v o i d r e s h a p e R e n d e r W i n d o w ( i n t w i d t h , i n t h e i g h t )
01230
01231 {
01232
01233 g l u t S e t W i n d o w ( g _ r e n d e r W i n d o w I D ) ;
01234
01235 g l u t R e s h a p e W i n d o w ( w i d t h , h e i g h t ) ;
01236
01237
01238
01239 / / G L U I _ M a s t e r . a u t o _ s e t _ v i e w p o r t ( ) ;
01240
01241 }
01242
01243
01244
01245
01246
01247 v o i d r e s h a p e R i g h t W i n d o w ( i n t w i d t h , i n t h e i g h t )
01248
01249 {
01250
01251 g l u t S e t W i n d o w ( g _ r i g h t W i n d o w I D ) ;
01252
01253 g l u t R e s h a p e W i n d o w ( w i d t h , h e i g h t ) ;
01254
01255
01256
01257 G L U I _ M a s t e r . a u t o _ s e t _ v i e w p o r t ( ) ;
01258
01259 }
01260
01261
01262
01263 v o i d r e s h a p e B o t t o m W i n d o w ( i n t w i d t h , i n t h e i g h t )
01264
01265 {
01266
01267 g l u t S e t W i n d o w ( g _ b o t t o m W i n d o w I D ) ;
01268
01269 g l u t R e s h a p e W i n d o w ( w i d t h , h e i g h t ) ;
01270
01271
01272
01273 G L U I _ M a s t e r . a u t o _ s e t _ v i e w p o r t ( ) ;
01274
01275 }
01276
01277
01278
01279 v o i d s a v e S l i c e T o 2 D T e x t u r e ( )
01280
01281 {
01282
01283 s t d : : c o u t < < " 3 D t e x t u r e s n o t s u p p o r t e d ! " < < s t d : : e n d l ;
01284
01285
01286
01287 / / b i n d t e x t u r e
01288
01289 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , g _ u E x a m p l e T e x t u r e ) ;
01290
01291
01292
01293 G L e n u m g l E r r o r = g l G e t E r r o r ( ) ;
01294
01295 i f ( g l E r r o r ! = G L _ N O _ E R R O R )
01296
01297 {
01298
01299 s t d : : c e r r < < " C o u l d n o t b i n d t e x t u r e : " < < g l u E r r o r S t r i n g ( g l E r r o r ) < < s t d : : e n d l ;
01300
01301 }
01302
01303 e l s e
01304
01305 {
01306
01307 i n t i T e x t u r e W i d t h = g _ V o l u m e . G e t W i d t h ( ) ;
01308
01309 i n t i T e x t u r e H e i g h t = g _ V o l u m e . G e t H e i g h t ( ) ;
01310
01311 i n t i T e x t u r e D e p t h = g _ V o l u m e . G e t D e p t h ( ) ;
01312
01313
01314
01315 i f ( ! G L E W _ A R B _ t e x t u r e _ n o n _ p o w e r _ o f _ t w o )
01316
01317 {
01318
01319 i T e x t u r e W i d t h = G e t N e x t P o w e r O f T w o ( g _ V o l u m e . G e t W i d t h ( ) ) ;
01320
01321 i T e x t u r e H e i g h t = G e t N e x t P o w e r O f T w o ( g _ V o l u m e . G e t H e i g h t ( ) ) ;
01322
01323 i T e x t u r e D e p t h = G e t N e x t P o w e r O f T w o ( g _ V o l u m e . G e t D e p t h ( ) ) ;
01324
01325 }
01326
01327
01328
01329 / / u p l o a d
01330
01331 g l T e x I m a g e 2 D ( G L _ T E X T U R E _ 2 D , 0 , G L _ L U M I N A N C E , i T e x t u r e W i d t h , i T e x t u r e H e i g h t , 0 , G L _ L U M I N A N C E , G L _ F L O A T , N U L L ) ;
01332
01333 g l T e x S u b I m a g e 2 D ( G L _ T E X T U R E _ 2 D , 0 , 0 , 0 , g _ V o l u m e . G e t W i d t h ( ) , g _ V o l u m e . G e t H e i g h t ( ) , G L _ L U M I N A N C E , G L _ F L O A T , ( v o i d * ) & ( g _ V o l u m e . G e t ( 0 , 0 , i n t ( f l o a t ( g _ V o l u m e . G e t D e p t h ( ) ) * 0 . 5 f ) ) ) ) ;
01334
01335
01336
01337 g l T e x P a r a m e t e r i ( G L _ T E X T U R E _ 2 D , G L _ T E X T U R E _ M I N _ F I L T E R , G L _ L I N E A R ) ;
01338
01339 g l T e x P a r a m e t e r i ( G L _ T E X T U R E _ 2 D , G L _ T E X T U R E _ M A G _ F I L T E R , G L _ L I N E A R ) ;
01340
01341
01342
01343 g l E r r o r = g l G e t E r r o r ( ) ;
01344
01345 i f ( g l E r r o r ! = G L _ N O _ E R R O R )
01346
01347 {
01348
01349 s t d : : c e r r < < " C o u l d n o t u p l o a d t e x t u r e : " < < g l u E r r o r S t r i n g ( g l E r r o r ) < < s t d : : e n d l ;
01350
01351 }
01352
01353 }
01354
01355 }
01356
01357
01358
01359 v o i d s a v e D a t a T o 3 D T e x t u r e ( )
01360
01361 {
01362
01363 g _ f I n c r e m e n t = 1 . f / f l o a t ( g _ V o l u m e . G e t D e p t h ( ) - 1 ) ;
01364
01365
01366
01367 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 3 D , g _ u E x a m p l e T e x t u r e ) ;
01368
01369
01370
01371 G L e n u m g l E r r o r = g l G e t E r r o r ( ) ;
01372
01373 i f ( g l E r r o r ! = G L _ N O _ E R R O R )
01374
01375 {
01376
01377 s t d : : c e r r < < " C o u l d n o t b i n d t e x t u r e : " < < g l u E r r o r S t r i n g ( g l E r r o r ) < < s t d : : e n d l ;
01378
01379 }
01380
01381 e l s e
01382
01383 {
01384
01385 i n t i T e x t u r e W i d t h = g _ V o l u m e . G e t W i d t h ( ) ;
01386
01387 i n t i T e x t u r e H e i g h t = g _ V o l u m e . G e t H e i g h t ( ) ;
01388
01389 i n t i T e x t u r e D e p t h = g _ V o l u m e . G e t D e p t h ( ) ;
01390
01391
01392
01393 i f ( ! G L E W _ A R B _ t e x t u r e _ n o n _ p o w e r _ o f _ t w o )
01394
01395 {
01396
01397 i T e x t u r e W i d t h = G e t N e x t P o w e r O f T w o ( g _ V o l u m e . G e t W i d t h ( ) ) ;
01398
01399 i T e x t u r e H e i g h t = G e t N e x t P o w e r O f T w o ( g _ V o l u m e . G e t H e i g h t ( ) ) ;
01400
01401 i T e x t u r e D e p t h = G e t N e x t P o w e r O f T w o ( g _ V o l u m e . G e t D e p t h ( ) ) ;
01402
01403 }
01404
01405
01406
01407 / / u p l o a d t e x t u r e
01408
01409
01410
01411 g l T e x I m a g e 3 D ( G L _ T E X T U R E _ 3 D _ E X T , 0 , G L _ L U M I N A N C E , i T e x t u r e W i d t h , i T e x t u r e H e i g h t , i T e x t u r e D e p t h , 0 , G L _ L U M I N A N C E , G L _ F L O A T , N U L L ) ;
01412
01413 g l T e x S u b I m a g e 3 D ( G L _ T E X T U R E _ 3 D _ E X T , 0 , 0 , 0 , 0 , g _ V o l u m e . G e t W i d t h ( ) , g _ V o l u m e . G e t H e i g h t ( ) , g _ V o l u m e . G e t D e p t h ( ) , G L _ L U M I N A N C E , G L _ F L O A T , ( v o i d * ) g _ V o l u m e . G e t ( ) ) ;
01414
01415
01416
01417 g l T e x P a r a m e t e r i ( G L _ T E X T U R E _ 3 D , G L _ T E X T U R E _ M I N _ F I L T E R , G L _ L I N E A R ) ;
01418
01419 g l T e x P a r a m e t e r i ( G L _ T E X T U R E _ 3 D , G L _ T E X T U R E _ M A G _ F I L T E R , G L _ L I N E A R ) ;
01420
01421 g l T e x P a r a m e t e r i ( G L _ T E X T U R E _ 3 D , G L _ T E X T U R E _ W R A P _ R , G L _ C L A M P _ T O _ B O R D E R ) ;
01422
01423 g l T e x P a r a m e t e r i ( G L _ T E X T U R E _ 3 D , G L _ T E X T U R E _ W R A P _ S , G L _ C L A M P _ T O _ B O R D E R ) ;
01424
01425 g l T e x P a r a m e t e r i ( G L _ T E X T U R E _ 3 D , G L _ T E X T U R E _ W R A P _ T , G L _ C L A M P _ T O _ B O R D E R ) ;
01426
01427
01428
01429 g _ f R a t i o _ x y = ( f l o a t ) i T e x t u r e H e i g h t / ( f l o a t ) i T e x t u r e W i d t h ;
01430
01431 g _ f R a t i o _ x z = ( f l o a t ) i T e x t u r e D e p t h / ( f l o a t ) i T e x t u r e W i d t h ;
01432
01433 g _ f R a t i o _ y z = ( f l o a t ) i T e x t u r e D e p t h / ( f l o a t ) i T e x t u r e H e i g h t ;
01434
01435
01436
01437 f l o a t x d = 1 . 0 f ;
01438
01439 f l o a t y d = 1 . 0 f ;
01440
01441 f l o a t z d = 1 . 0 f ;
01442
01443
01444
01445 i f ( i T e x t u r e W i d t h > = i T e x t u r e H e i g h t & & i T e x t u r e W i d t h > = i T e x t u r e D e p t h ) {
01446
01447 y d = 1 . 0 f / g _ f R a t i o _ x y ;
01448
01449 z d = 1 . 0 f / g _ f R a t i o _ x z ;
01450
01451 } e l s e i f ( i T e x t u r e H e i g h t > = i T e x t u r e W i d t h & & i T e x t u r e H e i g h t > = i T e x t u r e D e p t h ) {
01452
01453 x d = g _ f R a t i o _ x y ;
01454
01455 z d = 1 . 0 f / g _ f R a t i o _ y z ;
01456
01457 } e l s e i f ( i T e x t u r e D e p t h > = i T e x t u r e W i d t h & & i T e x t u r e D e p t h > = i T e x t u r e H e i g h t ) {
01458
01459 x d = g _ f R a t i o _ x y ;
01460
01461 y d = g _ f R a t i o _ y z ;
01462
01463 }
01464
01465
01466
01467 f l o a t m a x d = ( f l o a t ) m a x ( i T e x t u r e W i d t h , i T e x t u r e H e i g h t ) ;
01468
01469 m a x d = m a x ( m a x d , ( f l o a t ) i T e x t u r e D e p t h ) ;
01470
01471
01472
01473 g _ f C u b e D i m e n s i o n N o r m e d X = i T e x t u r e W i d t h / m a x d ;
01474
01475 g _ f C u b e D i m e n s i o n N o r m e d Y = i T e x t u r e H e i g h t / m a x d ;
01476
01477 g _ f C u b e D i m e n s i o n N o r m e d Z = i T e x t u r e D e p t h / m a x d ;
01478
01479
01480
01481 g l E r r o r = g l G e t E r r o r ( ) ;
01482
01483 i f ( g l E r r o r ! = G L _ N O _ E R R O R )
01484
01485 {
01486
01487 s t d : : c e r r < < " C o u l d n o t u p l o a d t e x t u r e : " < < g l u E r r o r S t r i n g ( g l E r r o r ) < < s t d : : e n d l ;
01488
01489 }
01490
01491 }
01492
01493 }
01494
01495
01496
01497 v o i d t e x t u r e A s p e c t R a t i o ( )
01498
01499 {
01500
01501 f l o a t d i f f 1 = 0 . f , d i f f 2 = 0 . f ;
01502
01503 s w i t c h ( g _ i S l i c e D i r )
01504
01505 {
01506
01507 c a s e 0 :
01508
01509 d i f f 1 = ( g _ f R a t i o _ r w / g _ f R a t i o _ x y ) / 2 ;
01510
01511 d i f f 2 = ( g _ f R a t i o _ x y / g _ f R a t i o _ r w ) / 2 ;
01512
01513 g _ f U 1 = 1 . 0 f + d i f f 2 ;
01514
01515 g _ f U 0 = 0 . 0 f - d i f f 2 ;
01516
01517 g _ f V 1 = 1 . 0 f ; / / + d i f f 1 ;
01518
01519 g _ f V 0 = 0 . 0 f ; / / - d i f f 1 ;
01520
01521 b r e a k ;
01522
01523
01524
01525 c a s e 1 :
01526
01527 d i f f 1 = ( g _ f R a t i o _ r w / g _ f R a t i o _ y z ) / 2 ;
01528
01529 d i f f 2 = ( g _ f R a t i o _ y z / g _ f R a t i o _ r w ) / 2 ;
01530
01531 g _ f U 1 = 1 . 0 f ; / / + d i f f 2 ;
01532
01533 g _ f U 0 = 0 . 0 f ; / / - d i f f 2 ;
01534
01535 g _ f V 1 = 1 . 0 f + d i f f 1 ;
01536
01537 g _ f V 1 = 0 . 0 f - d i f f 1 ;
01538
01539 b r e a k ;
01540
01541
01542
01543 c a s e 2 :
01544
01545 d i f f 1 = ( g _ f R a t i o _ r w / g _ f R a t i o _ x z ) / 2 ;
01546
01547 d i f f 2 = ( g _ f R a t i o _ x z / g _ f R a t i o _ r w ) / 2 ;
01548
01549 g _ f U 1 = 1 . 0 f ; / / + d i f f 2 ;
01550
01551 g _ f U 0 = 0 . 0 f ; / / - d i f f 2 ;
01552
01553 g _ f V 1 = 1 . 0 f + d i f f 1 ;
01554
01555 g _ f V 0 = 0 . 0 f - d i f f 1 ;
01556
01557 b r e a k ;
01558
01559 }
01560
01561 }
01562
01563
01564
01565 v o i d i n i t I n t e r f a c e B o t t o m ( )
01566
01567 {
01568
01569 G L U I * c p _ g l u i = G L U I _ M a s t e r . c r e a t e _ g l u i _ s u b w i n d o w ( g _ b o t t o m W i n d o w I D , G L U I _ S U B W I N D O W _ R I G H T ) ;
01570
01571 c p _ g l u i - > s e t _ m a i n _ g f x _ w i n d o w ( g _ m a i n W i n d o w I D ) ;
01572
01573
01574
01575 g _ p C o l o u r P i c k e r S l i d e r T e x t = c p _ g l u i - > a d d _ s t a t i c t e x t ( " " ) ;
01576
01577 g _ p C o l o u r P i c k e r S l i d e r T e x t - > s e t _ a l i g n m e n t ( G L U I _ A L I G N _ C E N T E R ) ;
01578
01579 g _ p C o l o u r P i c k e r S l i d e r = n e w G L U I _ S c r o l l b a r ( c p _ g l u i , " " , G L U I _ S C R O L L _ V E R T I C A L , & C o l o u r P i c k e r : : c o l o u r P i c k e r S l i d e r V a l u e , 0 , h a n d l e C o l o u r P i c k e r S l i d e r C h a n g e ) ;
01580
01581 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ f l o a t _ l i m i t s ( 0 . f , 1 0 0 . f ) ;
01582
01583 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ f l o a t _ v a l ( 8 8 . f ) ;
01584
01585 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ a l i g n m e n t ( G L U I _ A L I G N _ C E N T E R ) ;
01586
01587
01588
01589 G L U I _ S t a t i c T e x t * c o l o u r P i c k e r S w i t c h e r T e x t = c p _ g l u i - > a d d _ s t a t i c t e x t ( " C o l o u r c o m p o n e n t " ) ;
01590
01591 c o l o u r P i c k e r S w i t c h e r T e x t - > s e t _ a l i g n m e n t ( G L U I _ A L I G N _ C E N T E R ) ;
01592
01593 L a b S w i t c h e r F o r C o l o u r P i c k e r = c p _ g l u i - > a d d _ r a d i o g r o u p ( N U L L , 0 , h a n d l e C o l o u r P i c k e r S l i d e r M o d e C h a n g e ) ;
01594
01595 L a b S w i t c h e r F o r C o l o u r P i c k e r - > s e t _ a l i g n m e n t ( G L U I _ A L I G N _ C E N T E R ) ;
01596
01597 c p _ g l u i - > a d d _ r a d i o b u t t o n _ t o _ g r o u p ( L a b S w i t c h e r F o r C o l o u r P i c k e r , " L " ) ;
01598
01599 c p _ g l u i - > a d d _ r a d i o b u t t o n _ t o _ g r o u p ( L a b S w i t c h e r F o r C o l o u r P i c k e r , " a " ) ;
01600
01601 c p _ g l u i - > a d d _ r a d i o b u t t o n _ t o _ g r o u p ( L a b S w i t c h e r F o r C o l o u r P i c k e r , " b " ) ;
01602
01603
01604
01605 c p _ g l u i - > a d d _ c o l u m n ( ) ;
01606
01607 c p _ g l u i - > a d d _ s t a t i c t e x t ( " L a b " ) ;
01608
01609 g _ C o l o u r S p i n n e r L a b L = c p _ g l u i - > a d d _ s p i n n e r ( " L " , G L U I _ S P I N N E R _ F L O A T , & g _ f C o l o u r L a b L , 0 , h a n d l e G U I C o l o u r L a b L C h a n g e ) ;
01610
01611 g _ C o l o u r S p i n n e r L a b L - > s e t _ f l o a t _ l i m i t s ( 0 . f , 1 0 0 . f , G L U I _ L I M I T _ C L A M P ) ;
01612
01613 g _ C o l o u r S p i n n e r L a b L - > s e t _ a l i g n m e n t ( G L U I _ A L I G N _ C E N T E R ) ;
01614
01615 g _ C o l o u r S p i n n e r L a b A = c p _ g l u i - > a d d _ s p i n n e r ( " a " , G L U I _ S P I N N E R _ F L O A T , & g _ f C o l o u r L a b A , 0 , h a n d l e G U I C o l o u r L a b A C h a n g e ) ;
01616
01617 g _ C o l o u r S p i n n e r L a b A - > s e t _ f l o a t _ l i m i t s ( - 1 3 0 . f , 1 3 0 . f , G L U I _ L I M I T _ C L A M P ) ;
01618
01619 g _ C o l o u r S p i n n e r L a b A - > s e t _ a l i g n m e n t ( G L U I _ A L I G N _ C E N T E R ) ;
01620
01621 g _ C o l o u r S p i n n e r L a b B = c p _ g l u i - > a d d _ s p i n n e r ( " b " , G L U I _ S P I N N E R _ F L O A T , & g _ f C o l o u r L a b B , 0 , h a n d l e G U I C o l o u r L a b B C h a n g e ) ;
01622
01623 g _ C o l o u r S p i n n e r L a b B - > s e t _ f l o a t _ l i m i t s ( - 1 3 0 . f , 1 3 0 . f , G L U I _ L I M I T _ C L A M P ) ;
01624
01625 g _ C o l o u r S p i n n e r L a b B - > s e t _ a l i g n m e n t ( G L U I _ A L I G N _ C E N T E R ) ;
01626
01627
01628
01629
01630
01631 c p _ g l u i - > a d d _ s t a t i c t e x t ( " R G B " ) ;
01632
01633 g _ C o l o u r S p i n n e r R g b R = c p _ g l u i - > a d d _ s p i n n e r ( " R : " , G L U I _ S P I N N E R _ I N T , & g _ i C o l o u r R g b R , 0 , h a n d l e G U I C o l o u r R g b C h a n g e ) ;
01634
01635 g _ C o l o u r S p i n n e r R g b R - > s e t _ i n t _ l i m i t s ( 0 , 2 5 5 , G L U I _ L I M I T _ C L A M P ) ;
01636
01637 g _ C o l o u r S p i n n e r R g b R - > s e t _ a l i g n m e n t ( G L U I _ A L I G N _ C E N T E R ) ;
01638
01639 g _ C o l o u r S p i n n e r R g b G = c p _ g l u i - > a d d _ s p i n n e r ( " G : " , G L U I _ S P I N N E R _ I N T , & g _ i C o l o u r R g b G , 0 , h a n d l e G U I C o l o u r R g b C h a n g e ) ;
01640
01641 g _ C o l o u r S p i n n e r R g b G - > s e t _ i n t _ l i m i t s ( 0 , 2 5 5 , G L U I _ L I M I T _ C L A M P ) ;
01642
01643 g _ C o l o u r S p i n n e r R g b G - > s e t _ a l i g n m e n t ( G L U I _ A L I G N _ C E N T E R ) ;
01644
01645 g _ C o l o u r S p i n n e r R g b B = c p _ g l u i - > a d d _ s p i n n e r ( " B : " , G L U I _ S P I N N E R _ I N T , & g _ i C o l o u r R g b B , 0 , h a n d l e G U I C o l o u r R g b C h a n g e ) ;
01646
01647 g _ C o l o u r S p i n n e r R g b B - > s e t _ i n t _ l i m i t s ( 0 , 2 5 5 , G L U I _ L I M I T _ C L A M P ) ;
01648
01649 g _ C o l o u r S p i n n e r R g b B - > s e t _ a l i g n m e n t ( G L U I _ A L I G N _ C E N T E R ) ;
01650
01651
01652
01653 c p _ g l u i - > a d d _ s t a t i c t e x t ( " T r a n s p a r e n c y " ) ;
01654
01655 g _ C o l o u r T r a n s p a r e n c y S p i n n e r = c p _ g l u i - > a d d _ s p i n n e r ( " A l p h a : " , G L U I _ S P I N N E R _ I N T , & g _ i C o l o u r A l p h a , 0 , h a n d l e G U I S p e c i f i e d C o l o u r C h a n g e ) ;
01656
01657 g _ C o l o u r T r a n s p a r e n c y S p i n n e r - > s e t _ i n t _ l i m i t s ( 0 , 2 5 5 , G L U I _ L I M I T _ C L A M P ) ;
01658
01659 g _ C o l o u r T r a n s p a r e n c y S p i n n e r - > s e t _ a l i g n m e n t ( G L U I _ A L I G N _ C E N T E R ) ;
01660
01661 g _ C o l o u r T r a n s p a r e n c y S p i n n e r - > d i s a b l e ( ) ;
01662
01663
01664
01665
01666
01667 c p _ g l u i - > a d d _ c o l u m n ( ) ;
01668
01669
01670
01671
01672
01673 c p _ g l u i - > a d d _ s t a t i c t e x t ( " I n t e r p o l a t i o n " ) ;
01674
01675 c o l o u r S p a c e L i s t b o x = c p _ g l u i - > a d d _ l i s t b o x ( " " , N U L L , - 1 , h a n d l e C o l o u r S p a c e L i s t b o x C h a n g e ) ;
01676
01677 c o l o u r S p a c e L i s t b o x - > a d d _ i t e m ( 0 , " R G B " ) ;
01678
01679 c o l o u r S p a c e L i s t b o x - > a d d _ i t e m ( 1 , " L a b " ) ;
01680
01681 c o l o u r S p a c e L i s t b o x - > d o _ s e l e c t i o n ( 1 ) ;
01682
01683
01684
01685 c p _ g l u i - > a d d _ s e p a r a t o r ( ) ;
01686
01687
01688
01689 c p _ g l u i - > a d d _ s t a t i c t e x t ( " H i s t o g r a m " ) ;
01690
01691 g _ h i s t o g r a m D r a w T y p e L i s t b o x = c p _ g l u i - > a d d _ l i s t b o x ( " " , N U L L , - 1 , h a n d l e H i s t o G r a m D r a w T y p e L i s t b o x C h a n g e ) ;
01692
01693 g _ h i s t o g r a m D r a w T y p e L i s t b o x - > a d d _ i t e m ( 0 , " N o n e " ) ;
01694
01695 g _ h i s t o g r a m D r a w T y p e L i s t b o x - > a d d _ i t e m ( 1 , " L i n e a r " ) ;
01696
01697 g _ h i s t o g r a m D r a w T y p e L i s t b o x - > a d d _ i t e m ( 2 , " L o g a r i t h m i c " ) ;
01698
01699 g _ h i s t o g r a m D r a w T y p e L i s t b o x - > d o _ s e l e c t i o n ( 2 ) ;
01700
01701
01702
01703 c p _ g l u i - > a d d _ s e p a r a t o r ( ) ;
01704
01705
01706
01707 G L U I _ B u t t o n * s a v e B u t t o n = c p _ g l u i - > a d d _ b u t t o n ( " S a v e P o i n t s " , 5 , h a n d l e S a v e T r a n s f e r F u n c t i o n C o n t r o l P o i n t s ) ;
01708
01709 G L U I _ B u t t o n * l o a d B u t t o n = c p _ g l u i - > a d d _ b u t t o n ( " L o a d P o i n t s " , 6 , h a n d l e L o a d T r a n s f e r F u n c t i o n C o n t r o l P o i n t s ) ;
01710
01711
01712
01713
01714
01715 i n i t I n t e r f a c e B o t t o m V a l u e s ( ) ;
01716
01717
01718
01719 }
01720
01721
01722
01723 v o i d h a n d l e S a v e T r a n s f e r F u n c t i o n C o n t r o l P o i n t s ( i n t )
01724
01725 {
01726
01727 O P E N F I L E N A M E o f n ;
01728
01729 c h a r s z F i l e N a m e [ M A X _ P A T H ] = " " ;
01730
01731
01732
01733 Z e r o M e m o r y ( & o f n , s i z e o f ( o f n ) ) ;
01734
01735
01736
01737 o f n . l S t r u c t S i z e = s i z e o f ( o f n ) ;
01738
01739 o f n . h w n d O w n e r = g _ h M a i n W i n d o w ;
01740
01741 o f n . l p s t r F i l t e r = " C o n t r o l P o i n t F i l e s ( * . t f p ) \ 0 * . t f p \ 0 A l l F i l e s ( * . * ) \ 0 * . * \ 0 " ;
01742
01743 o f n . l p s t r F i l e = s z F i l e N a m e ;
01744
01745 o f n . n M a x F i l e = M A X _ P A T H ;
01746
01747 o f n . F l a g s = O F N _ E X P L O R E R | O F N _ F I L E M U S T E X I S T ;
01748
01749 o f n . l p s t r D e f E x t = " t f p " ;
01750
01751
01752
01753 i f ( G e t S a v e F i l e N a m e ( & o f n ) )
01754
01755 {
01756
01757 T r a n s f e r F u n c t i o n G U I : : s a v e T r a n s f e r F u n c t i o n C o n t r o l P o i n t s ( s z F i l e N a m e ) ;
01758
01759 }
01760
01761
01762
01763 }
01764
01765
01766
01767 v o i d h a n d l e L o a d T r a n s f e r F u n c t i o n C o n t r o l P o i n t s ( i n t )
01768
01769 {
01770
01771 O P E N F I L E N A M E o f n ;
01772
01773 c h a r s z F i l e N a m e [ M A X _ P A T H ] = " " ;
01774
01775
01776
01777 Z e r o M e m o r y ( & o f n , s i z e o f ( o f n ) ) ;
01778
01779
01780
01781 o f n . l S t r u c t S i z e = s i z e o f ( o f n ) ;
01782
01783 o f n . h w n d O w n e r = g _ h M a i n W i n d o w ;
01784
01785 o f n . l p s t r F i l t e r = " C o n t r o l P o i n t F i l e s ( * . t f p ) \ 0 * . t f p \ 0 A l l F i l e s ( * . * ) \ 0 * . * \ 0 " ;
01786
01787 o f n . l p s t r F i l e = s z F i l e N a m e ;
01788
01789 o f n . n M a x F i l e = M A X _ P A T H ;
01790
01791 o f n . F l a g s = O F N _ E X P L O R E R | O F N _ F I L E M U S T E X I S T ;
01792
01793 o f n . l p s t r D e f E x t = " t f p " ;
01794
01795
01796
01797 i f ( G e t O p e n F i l e N a m e ( & o f n ) )
01798
01799 {
01800
01801 T r a n s f e r F u n c t i o n G U I : : l o a d T r a n s f e r F u n c t i o n C o n t r o l P o i n t s ( s t d : : s t r i n g ( s z F i l e N a m e ) ) ;
01802
01803 p o s t R e d i s p l a y B o t t o m W i n d o w ( ) ;
01804
01805 }
01806
01807 }
01808
01809
01810
01811
01812
01813 v o i d i n i t I n t e r f a c e R i g h t ( )
01814
01815 {
01816
01817 G L U I * i n t e r f a c e R i g h t = G L U I _ M a s t e r . c r e a t e _ g l u i _ s u b w i n d o w ( g _ r i g h t W i n d o w I D , G L U I _ S U B W I N D O W ) ;
01818
01819 i n t e r f a c e R i g h t - > s e t _ m a i n _ g f x _ w i n d o w ( g _ m a i n W i n d o w I D ) ;
01820
01821 G L U I _ B u t t o n * f i l e _ b u t t o n = i n t e r f a c e R i g h t - > a d d _ b u t t o n ( " O p e n F i l e " , 0 , o p e n F i l e ) ;
01822
01823
01824
01825 i n t e r f a c e R i g h t - > a d d _ s e p a r a t o r ( ) ;
01826
01827 G L U I _ P a n e l * s l i c e _ p a n e l = i n t e r f a c e R i g h t - > a d d _ p a n e l ( " S l i c e s / 3 D v i e w " ) ;
01828
01829 G L U I _ R a d i o G r o u p * r a d i o _ g r o u p = i n t e r f a c e R i g h t - > a d d _ r a d i o g r o u p _ t o _ p a n e l ( s l i c e _ p a n e l , & g _ i S l i c e D i r , 0 , u p d a t e R e n d e r W i n d o w ) ;
01830
01831 i n t e r f a c e R i g h t - > a d d _ r a d i o b u t t o n _ t o _ g r o u p ( r a d i o _ g r o u p , " T r a n s v e r s e " ) ;
01832
01833 i n t e r f a c e R i g h t - > a d d _ r a d i o b u t t o n _ t o _ g r o u p ( r a d i o _ g r o u p , " S a g i t t a l " ) ;
01834
01835 i n t e r f a c e R i g h t - > a d d _ r a d i o b u t t o n _ t o _ g r o u p ( r a d i o _ g r o u p , " C o r o n a l " ) ;
01836
01837 i n t e r f a c e R i g h t - > a d d _ r a d i o b u t t o n _ t o _ g r o u p ( r a d i o _ g r o u p , " 3 D " ) ;
01838
01839 g _ p G L U I _ S l i d e r S l i c e = n e w G L U I _ S c r o l l b a r ( i n t e r f a c e R i g h t , " S l i c e l e v e l " , G L U I _ S C R O L L _ H O R I Z O N T A L , & g _ f C o o r d X Y Z , 0 , u p d a t e R e n d e r W i n d o w ) ; / / c a l l b a c k ! ! !
01840
01841 g _ p G L U I _ S l i d e r S l i c e - > s e t _ f l o a t _ l i m i t s ( 0 , 1 ) ;
01842
01843 i n t e r f a c e R i g h t - > a d d _ s e p a r a t o r ( ) ;
01844
01845
01846
01847 g _ v i e w R o t a t i o n G L U I = i n t e r f a c e R i g h t - > a d d _ r o t a t i o n ( " R o t a t e V o l u m e " , g _ p R o t a t e , 0 , u p d a t e R e n d e r W i n d o w ) ;
01848
01849
01850
01851
01852
01853 G L U I _ P a n e l * s a m p l e R a t e _ p a n e l = i n t e r f a c e R i g h t - > a d d _ p a n e l ( " S a m p l e r a t e " ) ;
01854
01855 g _ p G L U I _ S l i d e r S a m p l e R a t e = n e w G L U I _ S c r o l l b a r ( s a m p l e R a t e _ p a n e l , " S a m p l e r a t e " , G L U I _ S C R O L L _ H O R I Z O N T A L , & g _ i S a m p l e R a t e , 0 , u p d a t e R e n d e r W i n d o w ) ;
01856
01857 g _ p G L U I _ S l i d e r S a m p l e R a t e - > s e t _ i n t _ l i m i t s ( 1 0 , 1 0 0 0 ) ;
01858
01859 g _ p G L U I _ S l i d e r S a m p l e R a t e - > s e t _ i n t _ v a l ( 2 0 0 ) ;
01860
01861 g _ p G L U I _ S p i n n e r S a m p l e R a t e = n e w G L U I _ S p i n n e r ( s a m p l e R a t e _ p a n e l , " " , G L U I _ S P I N N E R _ I N T , & g _ i S a m p l e R a t e , 0 , u p d a t e R e n d e r W i n d o w ) ;
01862
01863 g _ p G L U I _ S p i n n e r S a m p l e R a t e - > s e t _ i n t _ l i m i t s ( 1 0 , 1 0 0 0 ) ;
01864
01865 g _ p G L U I _ S p i n n e r S a m p l e R a t e - > s e t _ i n t _ v a l ( 2 0 0 ) ;
01866
01867
01868
01869 i n t e r f a c e R i g h t - > a d d _ s e p a r a t o r ( ) ;
01870
01871 G L U I _ P a n e l * c o m b i n a t i o n T y p e _ p a n e l = i n t e r f a c e R i g h t - > a d d _ p a n e l ( " C o m b i n a t i o n T y p e " ) ;
01872
01873 G L U I _ R a d i o G r o u p * c o m b i n a t i o n R a d i o G r o u p = i n t e r f a c e R i g h t - > a d d _ r a d i o g r o u p _ t o _ p a n e l ( c o m b i n a t i o n T y p e _ p a n e l , & g _ i C o m b i n a t i o n T y p e , 0 , u p d a t e R e n d e r W i n d o w ) ;
01874
01875 i n t e r f a c e R i g h t - > a d d _ r a d i o b u t t o n _ t o _ g r o u p ( c o m b i n a t i o n R a d i o G r o u p , " C o m p o s i t i n g " ) ;
01876
01877 i n t e r f a c e R i g h t - > a d d _ r a d i o b u t t o n _ t o _ g r o u p ( c o m b i n a t i o n R a d i o G r o u p , " M I P " ) ;
01878
01879
01880
01881 i n t e r f a c e R i g h t - > a d d _ s e p a r a t o r ( ) ;
01882
01883 G L U I _ P a n e l * p e r s p e c t i v e D e c i s i o n _ p a n e l = i n t e r f a c e R i g h t - > a d d _ p a n e l ( " P r o j e c t i o n M o d e " ) ;
01884
01885 G L U I _ R a d i o G r o u p * p e r s p e c t i v e R a d i o G r o u p = i n t e r f a c e R i g h t - > a d d _ r a d i o g r o u p _ t o _ p a n e l ( p e r s p e c t i v e D e c i s i o n _ p a n e l , & g _ i P e r s p e c t i v e T y p e , 0 , u p d a t e R e n d e r W i n d o w ) ;
01886
01887 i n t e r f a c e R i g h t - > a d d _ r a d i o b u t t o n _ t o _ g r o u p ( p e r s p e c t i v e R a d i o G r o u p , " O r t h o g o n a l " ) ;
01888
01889 i n t e r f a c e R i g h t - > a d d _ r a d i o b u t t o n _ t o _ g r o u p ( p e r s p e c t i v e R a d i o G r o u p , " P e r s p e c t i v e " ) ;
01890
01891 }
01892
01893
01894
01895 v o i d u p d a t e R e n d e r W i n d o w ( i n t )
01896
01897 {
01898
01899 i n t i = g _ i S a m p l e R a t e ;
01900
01901 i n t j = g _ i S l i c e D i r ;
01902
01903 G L U I _ M a s t e r . s y n c _ l i v e _ a l l ( ) ;
01904
01905 g l u t S e t W i n d o w ( g _ r e n d e r W i n d o w I D ) ;
01906
01907 g l u t P o s t R e d i s p l a y ( ) ;
01908
01909 }
01910
01911
01912
01913
01914
01915 v o i d u p d a t e B o t t o m W i n d o w ( i n t )
01916
01917 {
01918
01919 g l u t S e t W i n d o w ( g _ b o t t o m W i n d o w I D ) ;
01920
01921 g l u t P o s t R e d i s p l a y ( ) ;
01922
01923 }
01924
01925
01926
01927 v o i d d r a w T r a n s f e r F u n c P i c k e r ( i n t w i n d o w W i d t h , i n t w i n d o w H e i g h t , i n t t r a n s f e r F u n c X O f f s e t , i n t t r a n s f e r F u n c Y O f f s e t )
01928
01929 {
01930
01931 d r a w T r a n s f e r F u n c P i c k e r B a c k g r o u n d ( w i n d o w W i d t h , w i n d o w H e i g h t , t r a n s f e r F u n c X O f f s e t , t r a n s f e r F u n c Y O f f s e t ) ;
01932
01933 d r a w T r a n s f e r F u n c P i c k e r F o r e g r o u n d ( t r a n s f e r F u n c X O f f s e t , t r a n s f e r F u n c Y O f f s e t ) ;
01934
01935 }
01936
01937
01938
01939
01940
01941 v o i d o r t h o g o n a l S t a r t ( i n t w i d t h , i n t h e i g h t )
01942
01943 {
01944
01945 g l M a t r i x M o d e ( G L _ P R O J E C T I O N ) ;
01946
01947 g l P u s h M a t r i x ( ) ;
01948
01949 g l L o a d I d e n t i t y ( ) ;
01950
01951 g l u O r t h o 2 D ( 0 , w i d t h , 0 , h e i g h t ) ;
01952
01953 g l S c a l e f ( 1 , - 1 , 1 ) ;
01954
01955 g l T r a n s l a t e f ( 0 . f , - ( f l o a t ) h e i g h t , 0 . f ) ;
01956
01957 g l M a t r i x M o d e ( G L _ M O D E L V I E W ) ;
01958
01959 }
01960
01961
01962
01963 v o i d o r t h o g o n a l E n d ( )
01964
01965 {
01966
01967 g l M a t r i x M o d e ( G L _ P R O J E C T I O N ) ;
01968
01969 g l P o p M a t r i x ( ) ;
01970
01971 g l M a t r i x M o d e ( G L _ M O D E L V I E W ) ;
01972
01973 }
01974
01975
01976
01977 v o i d m o u s e A c t i o n R e n d e r W i n d o w ( i n t b u t t o n , i n t s t a t e , i n t x , i n t y )
01978
01979 {
01980
01981 i f ( b u t t o n = = 2 & & s t a t e = = 1 )
01982
01983 {
01984
01985 u p d a t e V i e w R o t a t i o n W i t h D r a g P o s i t i o n ( x , y ) ;
01986
01987
01988
01989 v i e w R o t a t i o n D r a g g i n g = f a l s e ;
01990
01991 }
01992
01993
01994
01995 i f ( b u t t o n = = 2 & & s t a t e = = 0 )
01996
01997 {
01998
01999 v i e w R o t a t i o n D r a g S t a r t X = x ;
02000
02001 v i e w R o t a t i o n D r a g S t a r t Y = y ;
02002
02003
02004
02005 v i e w R o t a t i o n D r a g g i n g = t r u e ;
02006
02007 }
02008
02009 }
02010
02011
02012
02013 v o i d m o u s e A c t i o n B o t t o m W i n d o w ( i n t b u t t o n , i n t s t a t e , i n t x , i n t y )
02014
02015 {
02016
02017 T F C o n t r o l P o i n t : : g _ b M o u s e I n s i d e B o t t o m W i n d o w = ( x < = g _ i R e n d e r W i n d o w W i d t h & & y < = g _ b o t t o m W i n d o w H e i g h t ) ;
02018
02019
02020
02021
02022
02023 i n t t r a n s f e r F u n c S p a c e X = x ;
02024
02025 i n t t r a n s f e r F u n c S p a c e Y = y ;
02026
02027 t r a n s f o r m C o o r d i n a t e s T o T r a n s f e r F u n c t i o n P i c k e r S p a c e ( t r a n s f e r F u n c S p a c e X , t r a n s f e r F u n c S p a c e Y ) ;
02028
02029
02030
02031 b o o l h i t S o m e t h i n g = f a l s e ;
02032
02033
02034
02035 b o o l d r a g g i n g = f a l s e ;
02036
02037 i f ( T r a n s f e r F u n c t i o n G U I : : g e t S e l e c t e d C o n t r o l P o i n t ( ) ! = N U L L )
02038
02039 d r a g g i n g = T r a n s f e r F u n c t i o n G U I : : g e t S e l e c t e d C o n t r o l P o i n t ( ) - > i s B e i n g D r a g g e d ( ) ;
02040
02041
02042
02043 i f ( ! h i t S o m e t h i n g & & ! d r a g g i n g )
02044
02045 h i t S o m e t h i n g = c h e c k F o r C o l o u r P i c k e r A c t i o n ( b u t t o n , s t a t e , x , y ) ;
02046
02047
02048
02049 i f ( ! h i t S o m e t h i n g & & ! g _ b D r a g g i n g C o l o u r P i c k e r C u r s o r )
02050
02051 h i t S o m e t h i n g = T r a n s f e r F u n c t i o n G U I : : c h e c k F o r C o n t r o l P o i n t s A c t i o n ( b u t t o n , s t a t e , t r a n s f e r F u n c S p a c e X , t r a n s f e r F u n c S p a c e Y ) ;
02052
02053 i f ( h i t S o m e t h i n g )
02054
02055 u p d a t e G U I C o l o u r W i t h S e l e c t e d C o n t r o l P o i n t C o l o u r ( ) ;
02056
02057
02058
02059
02060
02061
02062
02063 i f ( ! h i t S o m e t h i n g )
02064
02065 {
02066
02067 L a b _ C o l o u r c o l o u r ( g _ f C o l o u r L a b L , g _ f C o l o u r L a b A , g _ f C o l o u r L a b B ) ;
02068
02069 h i t S o m e t h i n g = T r a n s f e r F u n c t i o n G U I : : c h e c k F o r C o n t r o l P o i n t s C r e a t i o n ( b u t t o n , s t a t e , t r a n s f e r F u n c S p a c e X , t r a n s f e r F u n c S p a c e Y , c o l o u r ) ;
02070
02071 }
02072
02073
02074
02075
02076
02077 }
02078
02079
02080
02081 v o i d g l u t B o t t o m W i n d o w K e y b o a r d ( u n s i g n e d c h a r k e y , i n t x , i n t y )
02082
02083 {
02084
02085 }
02086
02087
02088
02089 v o i d d r a w T r a n s f e r T e x t u r e ( i n t w i n d o w W i d t h , i n t w i n d o w H e i g h t , f l o a t x O f f s e t , f l o a t y O f f s e t )
02090
02091 {
02092
02093 f l o a t x B e g i n = x O f f s e t ;
02094
02095 f l o a t x E n d = x B e g i n + T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r W i d t h ;
02096
02097
02098
02099 f l o a t y B e g i n = y O f f s e t - T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c t i o n T e x t u r e D i s p l a y Y O f f s e t + T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r H e i g h t ;
02100
02101 f l o a t y E n d = y B e g i n + T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c t i o n T e x t u r e D i s p l a y H e i g h t ;
02102
02103
02104
02105 f l o a t b g T e x C o o r d X E n d = T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r W i d t h / ( f l o a t ) g _ i T r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e W i d t h ;
02106
02107 f l o a t b g T e x C o o r d Y E n d = T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c t i o n T e x t u r e D i s p l a y H e i g h t / ( f l o a t ) g _ i T r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e H e i g h t ;
02108
02109
02110
02111 o r t h o g o n a l S t a r t ( w i n d o w W i d t h , w i n d o w H e i g h t ) ;
02112
02113
02114
02115 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , t r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e ) ;
02116
02117 g l E n a b l e ( G L _ T E X T U R E _ 2 D ) ;
02118
02119
02120
02121 / / d r a w q u a d w i t h 2 d t e x t u r e
02122
02123 g l B e g i n ( G L _ Q U A D S ) ;
02124
02125 g l C o l o r 4 f ( 1 . f , 1 . f , 1 . f , 1 . f ) ;
02126
02127 g l T e x C o o r d 2 f ( 0 . f , b g T e x C o o r d Y E n d ) ;
02128
02129 g l V e r t e x 2 f ( x B e g i n , y E n d ) ;
02130
02131 g l T e x C o o r d 2 f ( 0 . f , 0 . f ) ;
02132
02133 g l V e r t e x 2 f ( x B e g i n , y B e g i n ) ;
02134
02135 g l T e x C o o r d 2 f ( b g T e x C o o r d X E n d , 0 . f ) ;
02136
02137 g l V e r t e x 2 f ( x E n d , y B e g i n ) ;
02138
02139 g l T e x C o o r d 2 f ( b g T e x C o o r d X E n d , b g T e x C o o r d Y E n d ) ;
02140
02141 g l V e r t e x 2 f ( x E n d , y E n d ) ;
02142
02143 g l E n d ( ) ;
02144
02145
02146
02147 g l D i s a b l e ( G L _ T E X T U R E _ 2 D ) ;
02148
02149
02150
02151 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 1 D , T r a n s f e r F u n c t i o n T e x t u r e : : b o t t o m W i n d o w T r a n s f e r F u n c t i o n T e x t u r e I D ) ;
02152
02153 g l E n a b l e ( G L _ T E X T U R E _ 1 D ) ;
02154
02155
02156
02157
02158
02159 g l E n a b l e ( G L _ B L E N D ) ;
02160
02161 g l B l e n d F u n c ( G L _ S R C _ A L P H A , G L _ O N E _ M I N U S _ S R C _ A L P H A ) ;
02162
02163
02164
02165
02166
02167 / / d r a w q u a d w i t h 2 d t e x t u r e
02168
02169 g l B e g i n ( G L _ Q U A D S ) ;
02170
02171 g l C o l o r 4 f ( 1 . f , 1 . f , 1 . f , 1 . f ) ;
02172
02173 g l T e x C o o r d 1 f ( 0 . 0 f ) ;
02174
02175 g l V e r t e x 2 f ( x B e g i n , y E n d ) ;
02176
02177 g l T e x C o o r d 1 f ( 0 . 0 f ) ;
02178
02179 g l V e r t e x 2 f ( x B e g i n , y B e g i n ) ;
02180
02181 g l T e x C o o r d 1 f ( 1 . 0 f ) ;
02182
02183 g l V e r t e x 2 f ( x E n d , y B e g i n ) ;
02184
02185 g l T e x C o o r d 1 f ( 1 . 0 f ) ;
02186
02187 g l V e r t e x 2 f ( x E n d , y E n d ) ;
02188
02189 g l E n d ( ) ;
02190
02191
02192
02193 g l D i s a b l e ( G L _ T E X T U R E _ 1 D ) ;
02194
02195 g l D i s a b l e ( G L _ B L E N D ) ;
02196
02197
02198
02199 o r t h o g o n a l E n d ( ) ;
02200
02201 }
02202
02203
02204
02205 v o i d d r a w C o n t r o l P o i n t s ( i n t w i n d o w W i d t h , i n t w i n d o w H e i g h t , i n t x O f f s e t , i n t y O f f s e t )
02206
02207 {
02208
02209 i n t x B e g i n = x O f f s e t ;
02210
02211 i n t x E n d = x B e g i n + T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r W i d t h ;
02212
02213
02214
02215 o r t h o g o n a l S t a r t ( w i n d o w W i d t h , w i n d o w H e i g h t ) ;
02216
02217
02218
02219 g l E n a b l e ( G L _ B L E N D ) ;
02220
02221 g l B l e n d F u n c ( G L _ S R C _ A L P H A , G L _ O N E _ M I N U S _ S R C _ A L P H A ) ;
02222
02223
02224
02225 g l P u s h M a t r i x ( ) ;
02226
02227 g l T r a n s l a t e f ( ( f l o a t ) x O f f s e t , w i n d o w H e i g h t - ( f l o a t ) y O f f s e t , 0 . f ) ;
02228
02229 T r a n s f e r F u n c t i o n G U I : : d r a w C o n t r o l P o i n t s C o n n e c t i o n ( ) ;
02230
02231 T r a n s f e r F u n c t i o n G U I : : d r a w C o n t r o l P o i n t s R e l a t i v e ( ) ;
02232
02233 g l P o p M a t r i x ( ) ;
02234
02235
02236
02237 g l D i s a b l e ( G L _ B L E N D ) ;
02238
02239
02240
02241 o r t h o g o n a l E n d ( ) ;
02242
02243 }
02244
02245
02246
02247 v o i d h a n d l e C o l o u r S p a c e L i s t b o x C h a n g e ( i n t i d )
02248
02249 {
02250
02251 i n t c o l o u r S p a c e I D = c o l o u r S p a c e L i s t b o x - > g e t _ i n t _ v a l ( ) ;
02252
02253 T r a n s f e r F u n c t i o n G U I : : t r a n s f e r F u n c t i o n T e x t u r e C o l o r S p a c e = ( C o l o u r S p a c e ) c o l o u r S p a c e I D ;
02254
02255
02256
02257 u p d a t e B o t t o m W i n d o w ( 0 ) ;
02258
02259 }
02260
02261
02262
02263
02264
02265 v o i d h a n d l e H i s t o G r a m D r a w T y p e L i s t b o x C h a n g e ( i n t i d )
02266
02267 {
02268
02269 i n t h i s t o g r a m D r a w T y p e = g _ h i s t o g r a m D r a w T y p e L i s t b o x - > g e t _ i n t _ v a l ( ) ;
02270
02271 g _ H i s t o g r a m D r a w - > s e t D r a w T y p e ( ( H i s t o g r a m D r a w T y p e ) h i s t o g r a m D r a w T y p e ) ;
02272
02273
02274
02275 u p d a t e B o t t o m W i n d o w ( 0 ) ;
02276
02277 }
02278
02279
02280
02281 v o i d i n i t T r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e ( )
02282
02283 {
02284
02285 / / l o a d i n g o u r b a c k g r o u n d t e x t u r e w h i c h i s u s e d f r t h e t r a n s f e r f u n c t i o n p i c k e r a s b a c k g r o u n d t o d i s p l a y t r a n s p a r e n c y b e t t e r
02286
02287
02288
02289
02290
02291 g l u t S e t W i n d o w ( g _ b o t t o m W i n d o w I D ) ;
02292
02293
02294
02295 i l G e n I m a g e s ( 1 , & t r a n s f e r F u n c t i o n B a c k g r o u n d I m a g e ) ; / * G e n e r a t i o n o f o n e i m a g e n a m e * /
02296
02297 i l B i n d I m a g e ( t r a n s f e r F u n c t i o n B a c k g r o u n d I m a g e ) ; / * B i n d i n g o f i m a g e n a m e * /
02298
02299 I L b o o l e a n s u c c e s s = i l L o a d I m a g e ( " b g . p n g " ) ; / * L o a d i n g o f i m a g e " i m a g e . j p g " * /
02300
02301 i f ( s u c c e s s )
02302
02303 {
02304
02305 s u c c e s s = i l C o n v e r t I m a g e ( I L _ R G B A , I L _ U N S I G N E D _ B Y T E ) ;
02306
02307 i f ( ! s u c c e s s )
02308
02309 {
02310
02311 r e t u r n ;
02312
02313 }
02314
02315 g l G e n T e x t u r e s ( 1 , & t r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e ) ;
02316
02317
02318
02319 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , t r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e ) ;
02320
02321
02322
02323 g l T e x P a r a m e t e r i ( G L _ T E X T U R E _ 2 D , G L _ T E X T U R E _ M A G _ F I L T E R , G L _ N E A R E S T ) ;
02324
02325 g l T e x P a r a m e t e r i ( G L _ T E X T U R E _ 2 D , G L _ T E X T U R E _ M I N _ F I L T E R , G L _ N E A R E S T ) ;
02326
02327
02328
02329 g l T e x P a r a m e t e r f ( G L _ T E X T U R E _ 2 D , G L _ T E X T U R E _ W R A P _ S , G L _ R E P E A T ) ;
02330
02331 g l T e x P a r a m e t e r f ( G L _ T E X T U R E _ 2 D , G L _ T E X T U R E _ W R A P _ T , G L _ R E P E A T ) ;
02332
02333
02334
02335 g _ i T r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e W i d t h = i l G e t I n t e g e r ( I L _ I M A G E _ W I D T H ) ;
02336
02337 g _ i T r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e H e i g h t = i l G e t I n t e g e r ( I L _ I M A G E _ H E I G H T ) ;
02338
02339
02340
02341 g l T e x I m a g e 2 D ( G L _ T E X T U R E _ 2 D , 0 , i l G e t I n t e g e r ( I L _ I M A G E _ B P P ) , g _ i T r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e W i d t h , g _ i T r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e H e i g h t ,
02342
02343 0 , i l G e t I n t e g e r ( I L _ I M A G E _ F O R M A T ) , G L _ U N S I G N E D _ B Y T E ,
02344
02345 i l G e t D a t a ( ) ) ;
02346
02347 }
02348
02349 e l s e
02350
02351 c o u t < < " L o a d i n g b g . p n g h a s f a i l e d " < < e n d l ;
02352
02353
02354
02355 g e t _ e r r o r s ( ) ;
02356
02357 }
02358
02359
02360
02361 v o i d d e i n i t T r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e ( )
02362
02363 {
02364
02365 g l D e l e t e T e x t u r e s ( 1 , & t r a n s f e r F u n c t i o n B a c k g r o u n d I m a g e ) ;
02366
02367 }
02368
02369
02370
02371 v o i d d r a w T r a n s f e r F u n c P i c k e r B a c k g r o u n d ( i n t w i n d o w W i d t h , i n t w i n d o w H e i g h t , i n t x O f f s e t , i n t y O f f s e t )
02372
02373 {
02374
02375 / / B a c k g r o u n d f o r t r a n s p a r e n c y
02376
02377 f l o a t x B e g i n = ( f l o a t ) x O f f s e t ;
02378
02379 f l o a t x E n d = ( f l o a t ) x B e g i n + T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r W i d t h ;
02380
02381
02382
02383 f l o a t y B e g i n = ( f l o a t ) w i n d o w H e i g h t - y O f f s e t ;
02384
02385 f l o a t y E n d = ( f l o a t ) y B e g i n - T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r H e i g h t ;
02386
02387
02388
02389 o r t h o g o n a l S t a r t ( w i n d o w W i d t h , w i n d o w H e i g h t ) ;
02390
02391
02392
02393 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , t r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e ) ;
02394
02395 g l E n a b l e ( G L _ T E X T U R E _ 2 D ) ;
02396
02397
02398
02399 f l o a t t e x W i d t h = T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r W i d t h / ( f l o a t ) g _ i T r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e W i d t h ;
02400
02401 f l o a t t e x H e i g h t = T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r H e i g h t / ( f l o a t ) g _ i T r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e H e i g h t ;
02402
02403
02404
02405 / / d r a w q u a d w i t h 2 d t e x t u r e
02406
02407 g l B e g i n ( G L _ Q U A D S ) ;
02408
02409 g l C o l o r 4 f ( 1 . f , 1 . f , 1 . f , 1 . f ) ;
02410
02411 g l T e x C o o r d 2 f ( 0 . f , t e x H e i g h t ) ;
02412
02413 g l V e r t e x 2 f ( x B e g i n , y E n d ) ;
02414
02415 g l T e x C o o r d 2 f ( 0 . f , 0 . f ) ;
02416
02417 g l V e r t e x 2 f ( x B e g i n , y B e g i n ) ;
02418
02419 g l T e x C o o r d 2 f ( t e x W i d t h , 0 . f ) ;
02420
02421 g l V e r t e x 2 f ( x E n d , y B e g i n ) ;
02422
02423 g l T e x C o o r d 2 f ( t e x W i d t h , t e x H e i g h t ) ;
02424
02425 g l V e r t e x 2 f ( x E n d , y E n d ) ;
02426
02427 g l E n d ( ) ;
02428
02429
02430
02431 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , 0 ) ;
02432
02433 g l D i s a b l e ( G L _ T E X T U R E _ 2 D ) ;
02434
02435
02436
02437
02438
02439 o r t h o g o n a l E n d ( ) ;
02440
02441 }
02442
02443
02444
02445 v o i d d r a w T r a n s f e r F u n c P i c k e r F o r e g r o u n d ( i n t x O f f s e t , i n t y O f f s e t )
02446
02447 {
02448
02449 g l R a s t e r P o s 2 i ( x O f f s e t , y O f f s e t ) ;
02450
02451
02452
02453 / / T r a n s f e r f u n c t i o n d i s p l a y
02454
02455 g l E n a b l e ( G L _ B L E N D ) ;
02456
02457 g l B l e n d F u n c ( G L _ S R C _ A L P H A , G L _ O N E _ M I N U S _ S R C _ A L P H A ) ;
02458
02459
02460
02461 g l D r a w P i x e l s ( T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r W i d t h , T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r H e i g h t , G L _ R G B A ,
02462
02463 G L _ U N S I G N E D _ B Y T E , T r a n s f e r F u n c t i o n G U I : : t r a n s f e r F u n c t i o n P i c k e r D a t a ) ;
02464
02465
02466
02467 g l D i s a b l e ( G L _ B L E N D ) ;
02468
02469 }
02470
02471
02472
02473 v o i d d r a w C o l o u r P i c k e r ( i n t w i n d o w W i d t h , i n t w i n d o w H e i g h t , i n t x O f f s e t , i n t y O f f s e t )
02474
02475 {
02476
02477 / / B a c k g r o u n d f o r t r a n s p a r e n c y
02478
02479 o r t h o g o n a l S t a r t ( w i n d o w W i d t h , w i n d o w H e i g h t ) ;
02480
02481
02482
02483 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , C o l o u r P i c k e r : : c o l o u r P i c k e r T e x t u r e I D ) ;
02484
02485 g l E n a b l e ( G L _ T E X T U R E _ 2 D ) ;
02486
02487
02488
02489 / / d r a w q u a d w i t h 2 d t e x t u r e
02490
02491 g l B e g i n ( G L _ Q U A D S ) ;
02492
02493 g l C o l o r 4 f ( 1 . f , 1 . f , 1 . f , 1 . f ) ;
02494
02495 g l T e x C o o r d 2 i ( 0 , 1 ) ;
02496
02497 g l V e r t e x 2 i ( g _ i C o l o u r P i c k e r _ x B e g i n , g _ i C o l o u r P i c k e r _ y E n d ) ;
02498
02499 g l T e x C o o r d 2 i ( 0 , 0 ) ;
02500
02501 g l V e r t e x 2 i ( g _ i C o l o u r P i c k e r _ x B e g i n , g _ i C o l o u r P i c k e r _ y B e g i n ) ;
02502
02503 g l T e x C o o r d 2 i ( 1 , 0 ) ;
02504
02505 g l V e r t e x 2 i ( g _ i C o l o u r P i c k e r _ x E n d , g _ i C o l o u r P i c k e r _ y B e g i n ) ;
02506
02507 g l T e x C o o r d 2 i ( 1 , 1 ) ;
02508
02509 g l V e r t e x 2 i ( g _ i C o l o u r P i c k e r _ x E n d , g _ i C o l o u r P i c k e r _ y E n d ) ;
02510
02511 g l E n d ( ) ;
02512
02513
02514
02515 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , 0 ) ;
02516
02517 g l D i s a b l e ( G L _ T E X T U R E _ 2 D ) ;
02518
02519
02520
02521 o r t h o g o n a l E n d ( ) ;
02522
02523 }
02524
02525
02526
02527 v o i d d r a w C o l o u r P i c k e r C u r s o r ( i n t w i n d o w W i d t h , i n t w i n d o w H e i g h t , i n t x O f f s e t , i n t y O f f s e t )
02528
02529 {
02530
02531 i n t f r e e C e n t e r D i a m e t e r = 4 ;
02532
02533 i n t c u r s o r L e n g t h = 3 ;
02534
02535
02536
02537 f l o a t a b s P o s X = g _ i C o l o u r P i c k e r _ x B e g i n + g _ C o l o r P i c k e r C u r s o r X P o s ;
02538
02539 f l o a t a b s P o s Y = g _ i C o l o u r P i c k e r _ y B e g i n + g _ C o l o r P i c k e r C u r s o r Y P o s ;
02540
02541
02542
02543 o r t h o g o n a l S t a r t ( w i n d o w W i d t h , w i n d o w H e i g h t ) ;
02544
02545
02546
02547 g l P u s h M a t r i x ( ) ;
02548
02549 g l T r a n s l a t e f ( ( f l o a t ) a b s P o s X , ( f l o a t ) a b s P o s Y , 0 . f ) ;
02550
02551
02552
02553 / / d r a w q u a d w i t h 2 d t e x t u r e
02554
02555 g l B e g i n ( G L _ L I N E S ) ;
02556
02557 f l o a t L = g _ f C o l o u r L a b L / 1 0 0 . f ;
02558
02559 i f ( g _ f C o l o u r L a b L > = 5 0 . f )
02560
02561 g l C o l o r 3 f ( L - 0 . 5 f , L - 0 . 5 f , L - 0 . 5 f ) ;
02562
02563 e l s e
02564
02565 g l C o l o r 3 f ( 1 . f - L , 1 . f - L , 1 . f - L ) ;
02566
02567
02568
02569 g l V e r t e x 2 f ( - f r e e C e n t e r D i a m e t e r * 0 . 5 f - c u r s o r L e n g t h , 0 . f ) ;
02570
02571 g l V e r t e x 2 f ( - f r e e C e n t e r D i a m e t e r * 0 . 5 f , 0 . f ) ;
02572
02573
02574
02575 g l V e r t e x 2 f ( f r e e C e n t e r D i a m e t e r * 0 . 5 f + c u r s o r L e n g t h , 0 . f ) ;
02576
02577 g l V e r t e x 2 f ( f r e e C e n t e r D i a m e t e r * 0 . 5 f , 0 . f ) ;
02578
02579
02580
02581 g l V e r t e x 2 f ( 0 . f , - f r e e C e n t e r D i a m e t e r * 0 . 5 f - c u r s o r L e n g t h ) ;
02582
02583 g l V e r t e x 2 f ( 0 . f , - f r e e C e n t e r D i a m e t e r * 0 . 5 f ) ;
02584
02585
02586
02587 g l V e r t e x 2 f ( 0 . f , f r e e C e n t e r D i a m e t e r * 0 . 5 f + c u r s o r L e n g t h ) ;
02588
02589 g l V e r t e x 2 f ( 0 . f , f r e e C e n t e r D i a m e t e r * 0 . 5 f ) ;
02590
02591 g l E n d ( ) ;
02592
02593
02594
02595 g l P o p M a t r i x ( ) ;
02596
02597
02598
02599 o r t h o g o n a l E n d ( ) ;
02600
02601 }
02602
02603
02604
02605 v o i d h a n d l e C o l o u r P i c k e r S l i d e r M o d e C h a n g e ( i n t i d )
02606
02607 {
02608
02609 C o l o u r P i c k e r : : g _ i C o l o u r P i c k e r L a b S w i t c h M o d e = ( C o l o u r P i c k e r S l i d e r M o d e ) L a b S w i t c h e r F o r C o l o u r P i c k e r - > g e t _ i n t _ v a l ( ) ;
02610
02611
02612
02613 s w i t c h ( C o l o u r P i c k e r : : g _ i C o l o u r P i c k e r L a b S w i t c h M o d e )
02614
02615 {
02616
02617 c a s e C o l o u r P i c k e r S l i d e r M o d e _ L :
02618
02619 g _ p C o l o u r P i c k e r S l i d e r T e x t - > s e t _ t e x t ( " L u m i n o s i t y v a l u e " ) ;
02620
02621 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ t e x t ( " L " ) ;
02622
02623 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ f l o a t _ l i m i t s ( 0 . f , 1 0 0 . f ) ;
02624
02625 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ f l o a t _ v a l ( g _ f C o l o u r L a b L ) ;
02626
02627 b r e a k ;
02628
02629 c a s e C o l o u r P i c k e r S l i d e r M o d e _ A :
02630
02631 g _ p C o l o u r P i c k e r S l i d e r T e x t - > s e t _ t e x t ( " G r e e n - R e d v a l u e " ) ;
02632
02633 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ t e x t ( " a " ) ;
02634
02635 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ f l o a t _ l i m i t s ( - 1 3 0 . f , 1 3 0 . f ) ;
02636
02637 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ f l o a t _ v a l ( g _ f C o l o u r L a b A ) ;
02638
02639 b r e a k ;
02640
02641 c a s e C o l o u r P i c k e r S l i d e r M o d e _ B :
02642
02643 g _ p C o l o u r P i c k e r S l i d e r T e x t - > s e t _ t e x t ( " B l u e - Y e l l o w v a l u e " ) ;
02644
02645 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ t e x t ( " b " ) ;
02646
02647 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ f l o a t _ l i m i t s ( - 1 3 0 . f , 1 3 0 . f ) ;
02648
02649 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ f l o a t _ v a l ( g _ f C o l o u r L a b B ) ;
02650
02651 b r e a k ;
02652
02653 }
02654
02655
02656
02657 C o l o u r P i c k e r : : r e f r e s h C o l o u r P i c k e r T e x t u r e ( g _ b o t t o m W i n d o w I D ) ;
02658
02659
02660
02661 u p d a t e C o l o u r P i c k e r C u r s o r P o s B a s e d O n S e l e c t e d C o l o u r ( ) ;
02662
02663
02664
02665 p o s t R e d i s p l a y B o t t o m W i n d o w ( ) ;
02666
02667 }
02668
02669
02670
02671 v o i d h a n d l e C o l o u r P i c k e r S l i d e r C h a n g e ( i n t i d )
02672
02673 {
02674
02675 C o l o u r P i c k e r : : r e f r e s h C o l o u r P i c k e r T e x t u r e ( g _ b o t t o m W i n d o w I D ) ;
02676
02677 u p d a t e G U I C o l o u r W i t h C o l o u r P i c k e r V a l u e ( ) ;
02678
02679 u p d a t e S e l e c t e d C o n t r o l P o i n t C o l o u r W i t h G U I C o l o u r ( ) ;
02680
02681
02682
02683 p o s t R e d i s p l a y B o t t o m W i n d o w ( ) ;
02684
02685 }
02686
02687
02688
02689 b o o l c h e c k F o r C o l o u r P i c k e r A c t i o n ( i n t b u t t o n , i n t s t a t e , i n t x , i n t y )
02690
02691 {
02692
02693 i f ( b u t t o n = = 0 & & s t a t e = = 0 )
02694
02695 {
02696
02697 i f ( x > = g _ i C o l o u r P i c k e r _ x B e g i n & & x < = g _ i C o l o u r P i c k e r _ x E n d
02698
02699 & & y > = g _ i C o l o u r P i c k e r _ y B e g i n & & y < = g _ i C o l o u r P i c k e r _ y E n d )
02700
02701 {
02702
02703 u p d a t e C o l o u r P i c k e r C u r s o r P o s B a s e d O n M o u s e C o o r d i n a t e s ( x , y ) ;
02704
02705
02706
02707 u p d a t e G U I C o l o u r W i t h C o l o u r P i c k e r V a l u e ( ) ;
02708
02709 u p d a t e S e l e c t e d C o n t r o l P o i n t C o l o u r W i t h G U I C o l o u r ( ) ;
02710
02711
02712
02713 g _ b D r a g g i n g C o l o u r P i c k e r C u r s o r = t r u e ;
02714
02715
02716
02717 r e t u r n t r u e ;
02718
02719 }
02720
02721 }
02722
02723
02724
02725 i f ( b u t t o n = = 0 & & s t a t e = = 1 )
02726
02727 {
02728
02729 i f ( g _ b D r a g g i n g C o l o u r P i c k e r C u r s o r )
02730
02731 {
02732
02733 g _ b D r a g g i n g C o l o u r P i c k e r C u r s o r = f a l s e ;
02734
02735 r e t u r n t r u e ;
02736
02737 }
02738
02739 }
02740
02741
02742
02743 r e t u r n f a l s e ;
02744
02745
02746
02747 }
02748
02749
02750
02751 v o i d o p e n F i l e ( i n t )
02752
02753 {
02754
02755 O P E N F I L E N A M E o f n ;
02756
02757 c h a r s z F i l e N a m e [ M A X _ P A T H ] = " " ;
02758
02759
02760
02761 Z e r o M e m o r y ( & o f n , s i z e o f ( o f n ) ) ;
02762
02763
02764
02765 o f n . l S t r u c t S i z e = s i z e o f ( o f n ) ;
02766
02767 o f n . h w n d O w n e r = g _ h M a i n W i n d o w ;
02768
02769 o f n . l p s t r F i l t e r = " D a t a F i l e s ( * . d a t ) \ 0 * . d a t \ 0 A l l F i l e s ( * . * ) \ 0 * . * \ 0 " ;
02770
02771 o f n . l p s t r F i l e = s z F i l e N a m e ;
02772
02773 o f n . n M a x F i l e = M A X _ P A T H ;
02774
02775 o f n . F l a g s = O F N _ E X P L O R E R | O F N _ F I L E M U S T E X I S T ;
02776
02777 o f n . l p s t r D e f E x t = " d a t " ;
02778
02779
02780
02781 i f ( G e t O p e n F i l e N a m e ( & o f n ) )
02782
02783 {
02784
02785 p r o c e s s S l i c e O f D a t a ( s t d : : s t r i n g ( s z F i l e N a m e ) ) ;
02786
02787 u p d a t e R e n d e r W i n d o w ( 0 ) ;
02788
02789 g _ H i s t o g r a m D r a w - > r e f r e s h H i s t o g r a m D r a w D a t a ( g _ V o l u m e ) ;
02790
02791 u p d a t e B o t t o m W i n d o w ( 0 ) ;
02792
02793 }
02794
02795 }
02796
02797
02798
02799
02800
02801 v o i d u p d a t e C o l o u r P i c k e r C u r s o r M o v e m e n t ( i n t x , i n t y )
02802
02803 {
02804
02805 u p d a t e C o l o u r P i c k e r C u r s o r P o s B a s e d O n M o u s e C o o r d i n a t e s ( x , y ) ;
02806
02807
02808
02809 u p d a t e G U I C o l o u r W i t h C o l o u r P i c k e r V a l u e ( ) ;
02810
02811 }
02812
02813
02814
02815 v o i d u p d a t e G U I C o l o u r W i t h C o l o u r P i c k e r V a l u e ( )
02816
02817 {
02818
02819 i n t i = ( i n t ) ( g _ C o l o r P i c k e r C u r s o r Y P o s * C o l o u r P i c k e r : : c o l o u r P i c k e r W i d t h + g _ C o l o r P i c k e r C u r s o r X P o s ) ;
02820
02821 R G B A _ C o l o u r & s e l e c t e d C o l o u r = C o l o u r P i c k e r : : c o l o u r P i c k e r T e x t u r e D a t a [ i ] ;
02822
02823
02824
02825 g _ C o l o u r S p i n n e r R g b R - > s e t _ i n t _ v a l ( s e l e c t e d C o l o u r . r ) ;
02826
02827 g _ C o l o u r S p i n n e r R g b G - > s e t _ i n t _ v a l ( s e l e c t e d C o l o u r . g ) ;
02828
02829 g _ C o l o u r S p i n n e r R g b B - > s e t _ i n t _ v a l ( s e l e c t e d C o l o u r . b ) ;
02830
02831
02832
02833 L a b _ C o l o u r s e l e c t e d C o l o u r L a b = C o l o u r P i c k e r : : g e t C o l o u r P i c k e r P o s i t i o n C o l o u r ( g _ C o l o r P i c k e r C u r s o r X P o s , g _ C o l o r P i c k e r C u r s o r Y P o s ) ;
02834
02835 g _ C o l o u r S p i n n e r L a b L - > s e t _ f l o a t _ v a l ( s e l e c t e d C o l o u r L a b . L ) ;
02836
02837 g _ C o l o u r S p i n n e r L a b A - > s e t _ f l o a t _ v a l ( s e l e c t e d C o l o u r L a b . a ) ;
02838
02839 g _ C o l o u r S p i n n e r L a b B - > s e t _ f l o a t _ v a l ( s e l e c t e d C o l o u r L a b . b ) ;
02840
02841 }
02842
02843
02844
02845 v o i d r e f r e s h C o l o u r M a p C o r n e r P o s i t i o n s ( )
02846
02847 {
02848
02849 g _ i C o l o u r P i c k e r _ x B e g i n = g _ i T r a n s f e r F u n c t i o n P i c k e r X O f f s e t + C o l o u r P i c k e r : : c o l o u r P i c k e r O f f s e t X + T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r W i d t h ;
02850
02851 g _ i C o l o u r P i c k e r _ x E n d = g _ i C o l o u r P i c k e r _ x B e g i n + C o l o u r P i c k e r : : c o l o u r P i c k e r W i d t h ;
02852
02853
02854
02855 g _ i C o l o u r P i c k e r _ y B e g i n = g _ b o t t o m W i n d o w H e i g h t - ( C o l o u r P i c k e r : : c o l o u r P i c k e r H e i g h t + g _ i T r a n s f e r F u n c t i o n P i c k e r Y O f f s e t - T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c t i o n T e x t u r e D i s p l a y H e i g h t - T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c t i o n T e x t u r e D i s p l a y Y O f f s e t ) ;
02856
02857 g _ i C o l o u r P i c k e r _ y E n d = g _ i C o l o u r P i c k e r _ y B e g i n + C o l o u r P i c k e r : : c o l o u r P i c k e r H e i g h t ;
02858
02859 }
02860
02861
02862
02863 v o i d u p d a t e C o l o u r P i c k e r C u r s o r P o s B a s e d O n M o u s e C o o r d i n a t e s ( i n t x , i n t y )
02864
02865 {
02866
02867 g _ C o l o r P i c k e r C u r s o r X P o s = ( f l o a t ) C o l o u r P i c k e r : : c o l o u r P i c k e r W i d t h - ( g _ i C o l o u r P i c k e r _ x E n d - x ) ;
02868
02869 c l a m p ( g _ C o l o r P i c k e r C u r s o r X P o s , 0 . f , ( f l o a t ) C o l o u r P i c k e r : : c o l o u r P i c k e r W i d t h ) ;
02870
02871 g _ C o l o r P i c k e r C u r s o r Y P o s = ( f l o a t ) C o l o u r P i c k e r : : c o l o u r P i c k e r H e i g h t - ( g _ i C o l o u r P i c k e r _ y E n d - y ) ;
02872
02873 c l a m p ( g _ C o l o r P i c k e r C u r s o r Y P o s , 0 . f , ( f l o a t ) C o l o u r P i c k e r : : c o l o u r P i c k e r H e i g h t ) ;
02874
02875 }
02876
02877
02878
02879 v o i d u p d a t e C o l o u r P i c k e r C u r s o r P o s B a s e d O n S e l e c t e d C o l o u r ( )
02880
02881 {
02882
02883 s w i t c h ( C o l o u r P i c k e r : : g _ i C o l o u r P i c k e r L a b S w i t c h M o d e )
02884
02885 {
02886
02887 c a s e C o l o u r P i c k e r S l i d e r M o d e _ L :
02888
02889 g _ C o l o r P i c k e r C u r s o r X P o s = ( ( g _ f C o l o u r L a b A - 1 3 0 . f ) / ( - 2 6 0 . f ) ) * C o l o u r P i c k e r : : c o l o u r P i c k e r W i d t h ;
02890
02891 g _ C o l o r P i c k e r C u r s o r Y P o s = ( ( g _ f C o l o u r L a b B - 1 3 0 . f ) / ( - 2 6 0 . f ) ) * C o l o u r P i c k e r : : c o l o u r P i c k e r H e i g h t ;
02892
02893 b r e a k ;
02894
02895
02896
02897 c a s e C o l o u r P i c k e r S l i d e r M o d e _ A :
02898
02899 g _ C o l o r P i c k e r C u r s o r X P o s = ( ( g _ f C o l o u r L a b B - 1 3 0 . f ) / ( - 2 6 0 . f ) ) * C o l o u r P i c k e r : : c o l o u r P i c k e r W i d t h ;
02900
02901 g _ C o l o r P i c k e r C u r s o r Y P o s = ( ( g _ f C o l o u r L a b L ) / 1 0 0 . f ) * C o l o u r P i c k e r : : c o l o u r P i c k e r H e i g h t ;
02902
02903 b r e a k ;
02904
02905 c a s e C o l o u r P i c k e r S l i d e r M o d e _ B :
02906
02907 g _ C o l o r P i c k e r C u r s o r X P o s = ( ( g _ f C o l o u r L a b A - 1 3 0 . f ) / ( - 2 6 0 . f ) ) * C o l o u r P i c k e r : : c o l o u r P i c k e r W i d t h ;
02908
02909 g _ C o l o r P i c k e r C u r s o r Y P o s = ( ( g _ f C o l o u r L a b L ) / 1 0 0 . f ) * C o l o u r P i c k e r : : c o l o u r P i c k e r H e i g h t ;
02910
02911 b r e a k ;
02912
02913 }
02914
02915
02916
02917 p o s t R e d i s p l a y B o t t o m W i n d o w ( ) ;
02918
02919
02920
02921 }
02922
02923
02924
02925 v o i d t r a n s f o r m C o o r d i n a t e s T o T r a n s f e r F u n c t i o n P i c k e r S p a c e ( i n t & t r a n s f e r F u n c S p a c e X , i n t & t r a n s f e r F u n c S p a c e Y )
02926
02927 {
02928
02929 t r a n s f e r F u n c S p a c e X = t r a n s f e r F u n c S p a c e X - g _ i T r a n s f e r F u n c t i o n P i c k e r X O f f s e t ;
02930
02931 t r a n s f e r F u n c S p a c e Y = t r a n s f e r F u n c S p a c e Y - ( g _ b o t t o m W i n d o w H e i g h t - ( T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r H e i g h t + g _ i T r a n s f e r F u n c t i o n P i c k e r Y O f f s e t ) ) ;
02932
02933 }
02934
02935
02936
02937 v o i d u p d a t e G U I C o l o u r W i t h S e l e c t e d C o n t r o l P o i n t C o l o u r ( )
02938
02939 {
02940
02941 T F C o n t r o l P o i n t * c o n t r o l P o i n t = T r a n s f e r F u n c t i o n G U I : : g e t S e l e c t e d C o n t r o l P o i n t ( ) ;
02942
02943
02944
02945 i f ( c o n t r o l P o i n t ! = N U L L )
02946
02947 {
02948
02949 L a b _ C o l o u r & c o l o u r = c o n t r o l P o i n t - > g e t C o l o u r L a b ( ) ;
02950
02951
02952
02953 g _ C o l o u r S p i n n e r L a b L - > s e t _ f l o a t _ v a l ( c o l o u r . L ) ;
02954
02955 g _ C o l o u r S p i n n e r L a b A - > s e t _ f l o a t _ v a l ( c o l o u r . a ) ;
02956
02957 g _ C o l o u r S p i n n e r L a b B - > s e t _ f l o a t _ v a l ( c o l o u r . b ) ;
02958
02959
02960
02961 R G B _ C o l o u r c o l o u r R G B ( t o R G B ( c o l o u r ) ) ;
02962
02963
02964
02965 g _ C o l o u r S p i n n e r R g b R - > s e t _ i n t _ v a l ( c o l o u r R G B . r ) ;
02966
02967 g _ C o l o u r S p i n n e r R g b G - > s e t _ i n t _ v a l ( c o l o u r R G B . g ) ;
02968
02969 g _ C o l o u r S p i n n e r R g b B - > s e t _ i n t _ v a l ( c o l o u r R G B . b ) ;
02970
02971
02972
02973 g _ C o l o u r T r a n s p a r e n c y S p i n n e r - > s e t _ i n t _ v a l ( ( G L u b y t e ) ( 2 5 5 * c o n t r o l P o i n t - > m _ p o s . y / ( f l o a t ) T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r H e i g h t ) ) ;
02974
02975 }
02976
02977 }
02978
02979
02980
02981
02982
02983 v o i d u p d a t e S e l e c t e d C o n t r o l P o i n t C o l o u r W i t h G U I C o l o u r ( )
02984
02985 {
02986
02987 T F C o n t r o l P o i n t * c o n t r o l P o i n t = T r a n s f e r F u n c t i o n G U I : : g e t S e l e c t e d C o n t r o l P o i n t ( ) ;
02988
02989
02990
02991 i f ( c o n t r o l P o i n t ! = N U L L )
02992
02993 {
02994
02995 c o n t r o l P o i n t - > s e t C o l o u r ( g _ f C o l o u r L a b L , g _ f C o l o u r L a b A , g _ f C o l o u r L a b B ) ;
02996
02997
02998
02999 / / T o d o - s e t h e i g h t a c c o r d i n g t o s e t a l p h a v a l u e ?
03000
03001 / / g _ i C o l o u r A l p h a
03002
03003 }
03004
03005 }
03006
03007
03008
03009 v o i d h a n d l e G U I S p e c i f i e d C o l o u r C h a n g e ( i n t )
03010
03011 {
03012
03013 u p d a t e C o l o u r P i c k e r S l i d e r W i t h S e t G U I C o l o u r C o m p o n e n t ( ) ;
03014
03015
03016
03017 u p d a t e S e l e c t e d C o n t r o l P o i n t C o l o u r W i t h G U I C o l o u r ( ) ;
03018
03019 }
03020
03021
03022
03023 v o i d h a n d l e G U I C o l o u r L a b L C h a n g e ( i n t )
03024
03025 {
03026
03027 i f ( C o l o u r P i c k e r : : g _ i C o l o u r P i c k e r L a b S w i t c h M o d e = = C o l o u r P i c k e r S l i d e r M o d e _ L )
03028
03029 {
03030
03031 C o l o u r P i c k e r : : r e f r e s h C o l o u r P i c k e r T e x t u r e ( g _ b o t t o m W i n d o w I D ) ;
03032
03033 p o s t R e d i s p l a y B o t t o m W i n d o w ( ) ;
03034
03035 }
03036
03037
03038
03039
03040
03041 h a n d l e G U I C o l o u r L a b C h a n g e ( 0 ) ;
03042
03043 }
03044
03045
03046
03047 v o i d h a n d l e G U I C o l o u r L a b A C h a n g e ( i n t )
03048
03049 {
03050
03051 i f ( C o l o u r P i c k e r : : g _ i C o l o u r P i c k e r L a b S w i t c h M o d e = = C o l o u r P i c k e r S l i d e r M o d e _ A )
03052
03053 {
03054
03055 C o l o u r P i c k e r : : r e f r e s h C o l o u r P i c k e r T e x t u r e ( g _ b o t t o m W i n d o w I D ) ;
03056
03057 p o s t R e d i s p l a y B o t t o m W i n d o w ( ) ;
03058
03059 }
03060
03061
03062
03063 h a n d l e G U I C o l o u r L a b C h a n g e ( 0 ) ;
03064
03065 }
03066
03067
03068
03069 v o i d h a n d l e G U I C o l o u r L a b B C h a n g e ( i n t )
03070
03071 {
03072
03073 i f ( C o l o u r P i c k e r : : g _ i C o l o u r P i c k e r L a b S w i t c h M o d e = = C o l o u r P i c k e r S l i d e r M o d e _ B )
03074
03075 {
03076
03077 C o l o u r P i c k e r : : r e f r e s h C o l o u r P i c k e r T e x t u r e ( g _ b o t t o m W i n d o w I D ) ;
03078
03079 p o s t R e d i s p l a y B o t t o m W i n d o w ( ) ;
03080
03081 }
03082
03083
03084
03085
03086
03087 h a n d l e G U I C o l o u r L a b C h a n g e ( 0 ) ;
03088
03089 }
03090
03091
03092
03093
03094
03095 v o i d h a n d l e G U I C o l o u r L a b C h a n g e ( i n t )
03096
03097 {
03098
03099 R G B _ C o l o u r c o l o u r ( t o R G B ( g _ f C o l o u r L a b L , g _ f C o l o u r L a b A , g _ f C o l o u r L a b B ) ) ;
03100
03101
03102
03103 g _ C o l o u r S p i n n e r R g b R - > s e t _ f l o a t _ v a l ( c o l o u r . r ) ;
03104
03105 g _ C o l o u r S p i n n e r R g b G - > s e t _ f l o a t _ v a l ( c o l o u r . g ) ;
03106
03107 g _ C o l o u r S p i n n e r R g b B - > s e t _ f l o a t _ v a l ( c o l o u r . b ) ;
03108
03109
03110
03111 h a n d l e G U I S p e c i f i e d C o l o u r C h a n g e ( 0 ) ;
03112
03113
03114
03115 u p d a t e C o l o u r P i c k e r C u r s o r P o s B a s e d O n S e l e c t e d C o l o u r ( ) ;
03116
03117 }
03118
03119
03120
03121 v o i d h a n d l e G U I C o l o u r R g b C h a n g e ( i n t )
03122
03123 {
03124
03125 L a b _ C o l o u r c o l o u r ( ( G L u b y t e ) g _ i C o l o u r R g b R , ( G L u b y t e ) g _ i C o l o u r R g b G , ( G L u b y t e ) g _ i C o l o u r R g b B ) ;
03126
03127 g _ C o l o u r S p i n n e r L a b L - > s e t _ f l o a t _ v a l ( c o l o u r . L ) ;
03128
03129 g _ C o l o u r S p i n n e r L a b A - > s e t _ f l o a t _ v a l ( c o l o u r . a ) ;
03130
03131 g _ C o l o u r S p i n n e r L a b B - > s e t _ f l o a t _ v a l ( c o l o u r . b ) ;
03132
03133
03134
03135 h a n d l e G U I S p e c i f i e d C o l o u r C h a n g e ( 0 ) ;
03136
03137 }
03138
03139
03140
03141 v o i d u p d a t e C o l o u r P i c k e r S l i d e r W i t h S e t G U I C o l o u r C o m p o n e n t ( )
03142
03143 {
03144
03145 s w i t c h ( C o l o u r P i c k e r : : g _ i C o l o u r P i c k e r L a b S w i t c h M o d e )
03146
03147 {
03148
03149 c a s e C o l o u r P i c k e r S l i d e r M o d e _ L :
03150
03151 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ f l o a t _ v a l ( g _ f C o l o u r L a b L ) ;
03152
03153 b r e a k ;
03154
03155 c a s e C o l o u r P i c k e r S l i d e r M o d e _ A :
03156
03157 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ f l o a t _ v a l ( g _ f C o l o u r L a b A ) ;
03158
03159 b r e a k ;
03160
03161 c a s e C o l o u r P i c k e r S l i d e r M o d e _ B :
03162
03163 g _ p C o l o u r P i c k e r S l i d e r - > s e t _ f l o a t _ v a l ( g _ f C o l o u r L a b B ) ;
03164
03165 b r e a k ;
03166
03167 }
03168
03169 }
03170
03171
03172
03173
03174
03175 v o i d d r a w H i s t o g r a m ( i n t w i n d o w W i d t h , i n t w i n d o w H e i g h t , i n t x O f f s e t , i n t y O f f s e t )
03176
03177 {
03178
03179 i n t x B e g i n = x O f f s e t ;
03180
03181 i n t x E n d = x B e g i n + T r a n s f e r F u n c t i o n G U I : : g _ i T r a n s f e r F u n c P i c k e r W i d t h ;
03182
03183
03184
03185 o r t h o g o n a l S t a r t ( w i n d o w W i d t h , w i n d o w H e i g h t ) ;
03186
03187
03188
03189 g l E n a b l e ( G L _ B L E N D ) ;
03190
03191 g l B l e n d F u n c ( G L _ S R C _ A L P H A , G L _ O N E _ M I N U S _ S R C _ A L P H A ) ;
03192
03193
03194
03195 g l P u s h M a t r i x ( ) ;
03196
03197 g l T r a n s l a t e f ( ( f l o a t ) x O f f s e t , w i n d o w H e i g h t - ( f l o a t ) y O f f s e t , 0 . f ) ;
03198
03199 g _ H i s t o g r a m D r a w - > d r a w ( ) ;
03200
03201 g l P o p M a t r i x ( ) ;
03202
03203
03204
03205 g l D i s a b l e ( G L _ B L E N D ) ;
03206
03207
03208
03209 o r t h o g o n a l E n d ( ) ;
03210
03211 }
03212
03213
03214
03215 b o o l i n i t S h a d e r s ( )
03216
03217 {
03218
03219 g l u t S e t W i n d o w ( g _ r e n d e r W i n d o w I D ) ;
03220
03221
03222
03223 S h a d e r M a n a g e r * s h a d e r M a n a g e r = S h a d e r M a n a g e r : : g e t I n s t a n c e ( ) ;
03224
03225 s h a d e r M a n a g e r - > l o a d S h a d e r ( s i m p l e S h a d e r I D , S H A D E R _ P R O G R A M _ D I R + " R a y t r a c i n g T F S h a d e r " ) ;
03226
03227 s h a d e r = s h a d e r M a n a g e r - > g e t S h a d e r ( s i m p l e S h a d e r I D ) ;
03228
03229
03230
03231 g e t _ e r r o r s ( ) ;
03232
03233
03234
03235 r e t u r n s h a d e r - > w a s S u c c e s s f u l l y L i n k e d ( ) ;
03236
03237 }
03238
03239
03240
03241
03242
03243
03244
03245
03246
03247
03248
03249 v o i d i n i t R e n d e r W i n d o w ( )
03250
03251 {
03252
03253
03254
03255 }
03256
03257
03258
03259 v o i d i n i t B o t t o m W i n d o w ( )
03260
03261 {
03262
03263 s t a t i c b o o l i n i t i a l i z e d = f a l s e ;
03264
03265
03266
03267 i f ( ! i n i t i a l i z e d )
03268
03269 {
03270
03271 i n i t I n t e r f a c e B o t t o m ( ) ;
03272
03273
03274
03275
03276
03277 T r a n s f e r F u n c t i o n T e x t u r e : : i n i t T r a n s f e r F u n c t i o n T e x t u r e ( g _ b o t t o m W i n d o w I D , W I N D O W _ B O T T O M ) ;
03278
03279 T r a n s f e r F u n c t i o n T e x t u r e : : i n i t T r a n s f e r F u n c t i o n T e x t u r e ( g _ r e n d e r W i n d o w I D , W I N D O W _ R E N D E R I N G ) ;
03280
03281 T r a n s f e r F u n c t i o n G U I : : i n i t C o n t r o l P o i n t s ( ) ;
03282
03283 C o l o u r P i c k e r : : i n i t C o l o u r P i c k e r T e x t u r e ( ) ;
03284
03285 i n i t T r a n s f e r F u n c t i o n B a c k g r o u n d T e x t u r e ( ) ;
03286
03287
03288
03289 u p d a t e G U I C o l o u r W i t h C o l o u r P i c k e r V a l u e ( ) ;
03290
03291
03292
03293 i n i t i a l i z e d = t r u e ;
03294
03295 }
03296
03297 }
03298
03299
03300
03301 v o i d d r a w B o x ( f l o a t c u b e W i d t h , f l o a t c u b e H e i g h t , f l o a t c u b e D e p t h )
03302
03303 {
03304
03305 g l B e g i n ( G L _ Q U A D S ) ;
03306
03307 g l C o l o r 4 f ( 1 . f , 1 . f , 1 . f , 1 . f ) ;
03308
03309
03310
03311 / / F r o n t F a c e
03312
03313 g l N o r m a l 3 f ( 0 , 0 , 1 ) ;
03314
03315 g l C o l o r 3 f ( 1 . f , 1 . f , 1 . f ) ; g l T e x C o o r d 2 i ( 1 , 1 ) ; g l V e r t e x 3 f ( c u b e W i d t h , c u b e H e i g h t , c u b e D e p t h ) ;
03316
03317 g l C o l o r 3 f ( 0 . f , 1 . f , 1 . f ) ; g l T e x C o o r d 2 i ( 0 , 1 ) ; g l V e r t e x 3 f ( - c u b e W i d t h , c u b e H e i g h t , c u b e D e p t h ) ;
03318
03319 g l C o l o r 3 f ( 0 . f , 0 . f , 1 . f ) ; g l T e x C o o r d 2 i ( 0 , 0 ) ; g l V e r t e x 3 f ( - c u b e W i d t h , - c u b e H e i g h t , c u b e D e p t h ) ;
03320
03321 g l C o l o r 3 f ( 1 . f , 0 . f , 1 . f ) ; g l T e x C o o r d 2 i ( 1 , 0 ) ; g l V e r t e x 3 f ( c u b e W i d t h , - c u b e H e i g h t , c u b e D e p t h ) ;
03322
03323
03324
03325 / / F a c e v 0 - v 3 - v 4 - v 5
03326
03327 g l N o r m a l 3 f ( 1 , 0 , 0 ) ;
03328
03329 g l C o l o r 3 f ( 1 . f , 1 . f , 1 . f ) ; g l T e x C o o r d 2 i ( 0 , 1 ) ; g l V e r t e x 3 f ( c u b e W i d t h , c u b e H e i g h t , c u b e D e p t h ) ;
03330
03331 g l C o l o r 3 f ( 1 . f , 0 . f , 1 . f ) ; g l T e x C o o r d 2 i ( 0 , 0 ) ; g l V e r t e x 3 f ( c u b e W i d t h , - c u b e H e i g h t , c u b e D e p t h ) ;
03332
03333 g l C o l o r 3 f ( 1 . f , 0 . f , 0 . f ) ; g l T e x C o o r d 2 i ( 1 , 0 ) ; g l V e r t e x 3 f ( c u b e W i d t h , - c u b e H e i g h t , - c u b e D e p t h ) ;
03334
03335 g l C o l o r 3 f ( 1 . f , 1 . f , 0 . f ) ; g l T e x C o o r d 2 i ( 1 , 1 ) ; g l V e r t e x 3 f ( c u b e W i d t h , c u b e H e i g h t , - c u b e D e p t h ) ;
03336
03337
03338
03339 / / F a c e v 0 - v 5 - v 6 - v 1
03340
03341 g l N o r m a l 3 f ( 0 , 1 , 0 ) ;
03342
03343 g l C o l o r 3 f ( 1 . f , 1 . f , 1 . f ) ; g l T e x C o o r d 2 i ( 1 , 0 ) ; g l V e r t e x 3 f ( c u b e W i d t h , c u b e H e i g h t , c u b e D e p t h ) ;
03344
03345 g l C o l o r 3 f ( 1 . f , 1 . f , 0 . f ) ; g l T e x C o o r d 2 i ( 1 , 1 ) ; g l V e r t e x 3 f ( c u b e W i d t h , c u b e H e i g h t , - c u b e D e p t h ) ;
03346
03347 g l C o l o r 3 f ( 0 . f , 1 . f , 0 . f ) ; g l T e x C o o r d 2 i ( 0 , 1 ) ; g l V e r t e x 3 f ( - c u b e W i d t h , c u b e H e i g h t , - c u b e D e p t h ) ;
03348
03349 g l C o l o r 3 f ( 0 . f , 1 . f , 1 . f ) ; g l T e x C o o r d 2 i ( 0 , 0 ) ; g l V e r t e x 3 f ( - c u b e W i d t h , c u b e H e i g h t , c u b e D e p t h ) ;
03350
03351
03352
03353 / / F a c e v 1 - v 6 - v 7 - v 2
03354
03355 g l N o r m a l 3 f ( - 1 , 0 , 0 ) ;
03356
03357 g l C o l o r 3 f ( 0 . f , 1 . f , 1 . f ) ; g l T e x C o o r d 2 i ( 1 , 1 ) ; g l V e r t e x 3 f ( - c u b e W i d t h , c u b e H e i g h t , c u b e D e p t h ) ;
03358
03359 g l C o l o r 3 f ( 0 . f , 1 . f , 0 . f ) ; g l T e x C o o r d 2 i ( 0 , 1 ) ; g l V e r t e x 3 f ( - c u b e W i d t h , c u b e H e i g h t , - c u b e D e p t h ) ;
03360
03361 g l C o l o r 3 f ( 0 . f , 0 . f , 0 . f ) ; g l T e x C o o r d 2 i ( 0 , 0 ) ; g l V e r t e x 3 f ( - c u b e W i d t h , - c u b e H e i g h t , - c u b e D e p t h ) ;
03362
03363 g l C o l o r 3 f ( 0 . f , 0 . f , 1 . f ) ; g l T e x C o o r d 2 i ( 1 , 0 ) ; g l V e r t e x 3 f ( - c u b e W i d t h , - c u b e H e i g h t , c u b e D e p t h ) ;
03364
03365
03366
03367 / / F a c e v 7 - v 4 - v 3 - v 2
03368
03369 g l N o r m a l 3 f ( 0 , - 1 , 0 ) ;
03370
03371 g l C o l o r 3 f ( 0 . f , 0 . f , 0 . f ) ; g l T e x C o o r d 2 i ( 0 , 0 ) ; g l V e r t e x 3 f ( - c u b e W i d t h , - c u b e H e i g h t , - c u b e D e p t h ) ;
03372
03373 g l C o l o r 3 f ( 1 . f , 0 . f , 0 . f ) ; g l T e x C o o r d 2 i ( 1 , 0 ) ; g l V e r t e x 3 f ( c u b e W i d t h , - c u b e H e i g h t , - c u b e D e p t h ) ;
03374
03375 g l C o l o r 3 f ( 1 . f , 0 . f , 1 . f ) ; g l T e x C o o r d 2 i ( 1 , 1 ) ; g l V e r t e x 3 f ( c u b e W i d t h , - c u b e H e i g h t , c u b e D e p t h ) ;
03376
03377 g l C o l o r 3 f ( 0 . f , 0 . f , 1 . f ) ; g l T e x C o o r d 2 i ( 0 , 1 ) ; g l V e r t e x 3 f ( - c u b e W i d t h , - c u b e H e i g h t , c u b e D e p t h ) ;
03378
03379
03380
03381 / / B a c k F a c e
03382
03383 g l N o r m a l 3 f ( 0 , 0 , - 1 ) ;
03384
03385 g l C o l o r 3 f ( 1 . f , 0 . f , 0 . f ) ; g l T e x C o o r d 2 i ( 0 , 0 ) ; g l V e r t e x 3 f ( c u b e W i d t h , - c u b e H e i g h t , - c u b e D e p t h ) ;
03386
03387 g l C o l o r 3 f ( 0 . f , 0 . f , 0 . f ) ; g l T e x C o o r d 2 i ( 1 , 0 ) ; g l V e r t e x 3 f ( - c u b e W i d t h , - c u b e H e i g h t , - c u b e D e p t h ) ;
03388
03389 g l C o l o r 3 f ( 0 . f , 1 . f , 0 . f ) ; g l T e x C o o r d 2 i ( 1 , 1 ) ; g l V e r t e x 3 f ( - c u b e W i d t h , c u b e H e i g h t , - c u b e D e p t h ) ;
03390
03391 g l C o l o r 3 f ( 1 . f , 1 . f , 0 . f ) ; g l T e x C o o r d 2 i ( 0 , 1 ) ; g l V e r t e x 3 f ( c u b e W i d t h , c u b e H e i g h t , - c u b e D e p t h ) ;
03392
03393 g l E n d ( ) ;
03394
03395 }
03396
03397
03398
03399 v o i d s t a r t S h a d i n g ( )
03400
03401 {
03402
03403 s h a d e r - > b i n d ( ) ;
03404
03405
03406
03407 f r o n t 2 D T e x L o c = s h a d e r - > g e t _ u n i f o r m _ l o c a t i o n ( " f r o n t 2 D T e x " ) ;
03408
03409 b a c k 2 D T e x L o c = s h a d e r - > g e t _ u n i f o r m _ l o c a t i o n ( " b a c k 2 D T e x " ) ;
03410
03411 d a t a 3 D T e x L o c = s h a d e r - > g e t _ u n i f o r m _ l o c a t i o n ( " d a t a 3 D T e x " ) ;
03412
03413 t r a n s f e r T e x L o c = s h a d e r - > g e t _ u n i f o r m _ l o c a t i o n ( " t r a n s f e r T e x " ) ;
03414
03415
03416
03417 s l i c e s L o c = s h a d e r - > g e t _ u n i f o r m _ l o c a t i o n ( " s l i c e s " ) ;
03418
03419 c o m b T y p e L o c = s h a d e r - > g e t _ u n i f o r m _ l o c a t i o n ( " c o m b T y p e " ) ;
03420
03421 s a m p l e R a t e L o c = s h a d e r - > g e t _ u n i f o r m _ l o c a t i o n ( " s a m p l e R a t e " ) ;
03422
03423 s l i c e D e p t h L o c = s h a d e r - > g e t _ u n i f o r m _ l o c a t i o n ( " s l i c e D e p t h " ) ;
03424
03425 }
03426
03427
03428
03429 v o i d i n i t F B O s ( )
03430
03431 {
03432
03433 g l u t S e t W i n d o w ( g _ r e n d e r W i n d o w I D ) ;
03434
03435
03436
03437 / / C r e a t e b a c k s i d e v i e w F B O a n d t e x t u r e
03438
03439 g l G e n F r a m e b u f f e r s E X T ( 1 , & g _ u B a c k B u f f e r F B O ) ;
03440
03441 g l G e n T e x t u r e s ( 1 , & g _ u B a c k B u f f e r T e x t u r e ) ;
03442
03443 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , g _ u B a c k B u f f e r T e x t u r e ) ;
03444
03445 g l T e x P a r a m e t e r i ( G L _ T E X T U R E _ 2 D , G L _ T E X T U R E _ M I N _ F I L T E R , G L _ L I N E A R ) ;
03446
03447 g l T e x P a r a m e t e r i ( G L _ T E X T U R E _ 2 D , G L _ T E X T U R E _ M A G _ F I L T E R , G L _ L I N E A R ) ;
03448
03449
03450
03451 / / C r e a t e f r o n t s i d e v i e w F B O a n d t e x t u r e
03452
03453 g l G e n F r a m e b u f f e r s E X T ( 1 , & g _ u F r o n t B u f f e r F B O ) ;
03454
03455 g l G e n T e x t u r e s ( 1 , & g _ u F r o n t B u f f e r T e x t u r e ) ;
03456
03457 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , g _ u F r o n t B u f f e r T e x t u r e ) ;
03458
03459 g l T e x P a r a m e t e r i ( G L _ T E X T U R E _ 2 D , G L _ T E X T U R E _ M I N _ F I L T E R , G L _ L I N E A R ) ;
03460
03461 g l T e x P a r a m e t e r i ( G L _ T E X T U R E _ 2 D , G L _ T E X T U R E _ M A G _ F I L T E R , G L _ L I N E A R ) ;
03462
03463
03464
03465
03466
03467
03468
03469 / / C h e c k F B O s t a t u s
03470
03471 G L e n u m s t a t u s = g l C h e c k F r a m e b u f f e r S t a t u s E X T ( G L _ F R A M E B U F F E R _ E X T ) ;
03472
03473 i f ( s t a t u s = = G L _ F R A M E B U F F E R _ C O M P L E T E _ E X T )
03474
03475 s t d : : c o u t < < " F B O s t a t u s O K \ n " < < s t d : : e n d l ;
03476
03477 e l s e
03478
03479 s t d : : c o u t < < " F B O s t a t u s F A I L E D ! ! ! 1 1 \ n " < < s t d : : e n d l ;
03480
03481
03482
03483 g l B i n d F r a m e b u f f e r E X T ( G L _ F R A M E B U F F E R _ E X T , 0 ) ;
03484
03485 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , 0 ) ;
03486
03487
03488
03489
03490
03491 / / S e t u p b o t h F B O s
03492
03493 g l E n a b l e ( G L _ T E X T U R E _ 2 D ) ;
03494
03495 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , g _ u B a c k B u f f e r T e x t u r e ) ;
03496
03497 g l T e x I m a g e 2 D ( G L _ T E X T U R E _ 2 D , 0 , G L _ R G B A 8 , g _ i R e n d e r W i n d o w W i d t h , g _ i R e n d e r W i n d o w H e i g h t , 0 , G L _ R G B A , G L _ U N S I G N E D _ B Y T E , 0 ) ;
03498
03499 g l B i n d F r a m e b u f f e r E X T ( G L _ F R A M E B U F F E R _ E X T , g _ u B a c k B u f f e r F B O ) ;
03500
03501 g l F r a m e b u f f e r T e x t u r e 2 D E X T ( G L _ F R A M E B U F F E R _ E X T , G L _ C O L O R _ A T T A C H M E N T 0 _ E X T , G L _ T E X T U R E _ 2 D , g _ u B a c k B u f f e r T e x t u r e , 0 ) ;
03502
03503
03504
03505 g l B i n d F r a m e b u f f e r E X T ( G L _ F R A M E B U F F E R _ E X T , 0 ) ;
03506
03507 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , 0 ) ;
03508
03509
03510
03511
03512
03513 g l E n a b l e ( G L _ T E X T U R E _ 2 D ) ;
03514
03515 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , g _ u F r o n t B u f f e r T e x t u r e ) ;
03516
03517 g l T e x I m a g e 2 D ( G L _ T E X T U R E _ 2 D , 0 , G L _ R G B A 8 , g _ i R e n d e r W i n d o w W i d t h , g _ i R e n d e r W i n d o w H e i g h t , 0 , G L _ R G B A , G L _ U N S I G N E D _ B Y T E , 0 ) ;
03518
03519 g l B i n d F r a m e b u f f e r E X T ( G L _ F R A M E B U F F E R _ E X T , g _ u F r o n t B u f f e r F B O ) ;
03520
03521 g l F r a m e b u f f e r T e x t u r e 2 D E X T ( G L _ F R A M E B U F F E R _ E X T , G L _ C O L O R _ A T T A C H M E N T 0 _ E X T , G L _ T E X T U R E _ 2 D , g _ u F r o n t B u f f e r T e x t u r e , 0 ) ;
03522
03523
03524
03525 g l B i n d F r a m e b u f f e r E X T ( G L _ F R A M E B U F F E R _ E X T , 0 ) ;
03526
03527 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , 0 ) ;
03528
03529
03530
03531
03532
03533 g e t _ e r r o r s ( ) ;
03534
03535 }
03536
03537 v o i d r e f r e s h F B O s ( )
03538
03539 {
03540
03541 r e f r e s h F B O T e x t u r e S i z e s ( ) ;
03542
03543
03544
03545 g l P u s h M a t r i x ( ) ;
03546
03547
03548
03549 / / C o m p u t e c u b e S i z e D i m e n s i o n s
03550
03551 f l o a t x R e l = 1 . f ;
03552
03553 f l o a t y R e l = 1 . f ;
03554
03555
03556
03557 / / F i x R a t i o
03558
03559 i f ( g _ i S l i c e D i r = = 3 )
03560
03561 {
03562
03563 i n t m a x W i n d o w D i m e n s i o n = m a x ( g _ i R e n d e r W i n d o w W i d t h , g _ i R e n d e r W i n d o w H e i g h t ) ;
03564
03565
03566
03567 x R e l = g _ i R e n d e r W i n d o w H e i g h t / ( f l o a t ) m a x W i n d o w D i m e n s i o n ;
03568
03569 y R e l = g _ i R e n d e r W i n d o w W i d t h / ( f l o a t ) m a x W i n d o w D i m e n s i o n ;
03570
03571 }
03572
03573
03574
03575 g l S c a l e f ( x R e l , y R e l , 1 . 0 ) ;
03576
03577
03578
03579
03580
03581
03582
03583 / / R e a l s i z e = c u b e . . . . * 2 ( d r a w n f r o m - w i d t h t o + w i d t h )
03584
03585 f l o a t c u b e W i d t h = g _ f C u b e D i m e n s i o n N o r m e d X ;
03586
03587 f l o a t c u b e H e i g h t = g _ f C u b e D i m e n s i o n N o r m e d Y ;
03588
03589 f l o a t c u b e D e p t h = g _ f C u b e D i m e n s i o n N o r m e d Z ;
03590
03591
03592
03593
03594
03595
03596
03597
03598
03599 g l E n a b l e ( G L _ C U L L _ F A C E ) ;
03600
03601
03602
03603 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , 0 ) ;
03604
03605 g l B i n d F r a m e b u f f e r E X T ( G L _ F R A M E B U F F E R _ E X T , g _ u B a c k B u f f e r F B O ) ;
03606
03607
03608
03609 / / D r a w f u n - c u b e
03610
03611 g l C l e a r C o l o r ( 0 . 0 f , 0 . 0 f , 0 . 0 f , 1 . 0 f ) ;
03612
03613 g l C l e a r ( G L _ C O L O R _ B U F F E R _ B I T | G L _ D E P T H _ B U F F E R _ B I T ) ;
03614
03615
03616
03617 g l C u l l F a c e ( G L _ F R O N T ) ;
03618
03619 d r a w V o l u m e ( c u b e W i d t h , c u b e H e i g h t , c u b e D e p t h ) ;
03620
03621
03622
03623
03624
03625 / / F i n i s h i n g m o v e
03626
03627 g l B i n d F r a m e b u f f e r E X T ( G L _ F R A M E B U F F E R _ E X T , 0 ) ;
03628
03629 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , 0 ) ;
03630
03631 g l D i s a b l e ( G L _ T E X T U R E _ 2 D ) ;
03632
03633
03634
03635
03636
03637 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , 0 ) ;
03638
03639 g l B i n d F r a m e b u f f e r E X T ( G L _ F R A M E B U F F E R _ E X T , g _ u F r o n t B u f f e r F B O ) ;
03640
03641
03642
03643
03644
03645 / / D r a w f u n - c u b e a g a i n b e c a u s e i t w a s s o m u c h f u n
03646
03647 g l C l e a r C o l o r ( 0 . 0 f , 0 . 0 f , 0 . 0 f , 1 . 0 f ) ;
03648
03649 g l C l e a r ( G L _ C O L O R _ B U F F E R _ B I T | G L _ D E P T H _ B U F F E R _ B I T ) ;
03650
03651
03652
03653 g l C u l l F a c e ( G L _ B A C K ) ;
03654
03655 d r a w V o l u m e ( c u b e W i d t h , c u b e H e i g h t , c u b e D e p t h ) ;
03656
03657
03658
03659
03660
03661 / / F i n i s h i n g m o v e
03662
03663 g l B i n d F r a m e b u f f e r E X T ( G L _ F R A M E B U F F E R _ E X T , 0 ) ;
03664
03665 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , 0 ) ;
03666
03667 g l D i s a b l e ( G L _ T E X T U R E _ 2 D ) ;
03668
03669 g l D i s a b l e ( G L _ C U L L _ F A C E ) ;
03670
03671
03672
03673
03674
03675 g l P o p M a t r i x ( ) ;
03676
03677 }
03678
03679
03680
03681 v o i d p r e p a r e R e n d e r W i n d o w R e n d e r i n g ( )
03682
03683 {
03684
03685 g l u t S e t W i n d o w ( g _ r e n d e r W i n d o w I D ) ;
03686
03687 g l E n a b l e ( G L _ D E P T H _ T E S T ) ;
03688
03689
03690
03691 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 1 D , 0 ) ;
03692
03693 g l D i s a b l e ( G L _ T E X T U R E _ 1 D ) ;
03694
03695 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , 0 ) ;
03696
03697 g l D i s a b l e ( G L _ T E X T U R E _ 2 D ) ;
03698
03699 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 3 D , 0 ) ;
03700
03701 g l D i s a b l e ( G L _ T E X T U R E _ 3 D ) ;
03702
03703
03704
03705
03706
03707 g l C l e a r C o l o r ( 0 . 5 0 f , 0 . 5 7 f , 0 . 5 4 f , 0 . f ) ;
03708
03709 g l C l e a r ( G L _ C O L O R _ B U F F E R _ B I T | G L _ D E P T H _ B U F F E R _ B I T | G L _ S T E N C I L _ B U F F E R _ B I T ) ;
03710
03711 }
03712
03713
03714
03715 v o i d r e f r e s h S h a d e r D a t a ( )
03716
03717 {
03718
03719 g e t _ e r r o r s ( ) ;
03720
03721 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 1 D , 0 ) ;
03722
03723 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , 0 ) ;
03724
03725 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 3 D , 0 ) ;
03726
03727
03728
03729 g l A c t i v e T e x t u r e ( G L _ T E X T U R E 0 ) ;
03730
03731 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 1 D , T r a n s f e r F u n c t i o n T e x t u r e : : r e n d e r W i n d o w T r a n s f e r F u n c t i o n T e x t u r e I D ) ;
03732
03733 g l U n i f o r m 1 i ( t r a n s f e r T e x L o c , 0 ) ;
03734
03735
03736
03737 g l A c t i v e T e x t u r e ( G L _ T E X T U R E 1 ) ;
03738
03739 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , g _ u F r o n t B u f f e r T e x t u r e ) ;
03740
03741 g l U n i f o r m 1 i ( f r o n t 2 D T e x L o c , 1 ) ;
03742
03743
03744
03745 g l A c t i v e T e x t u r e ( G L _ T E X T U R E 2 ) ;
03746
03747 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , g _ u B a c k B u f f e r T e x t u r e ) ;
03748
03749 g l U n i f o r m 1 i ( b a c k 2 D T e x L o c , 2 ) ;
03750
03751
03752
03753 g l A c t i v e T e x t u r e ( G L _ T E X T U R E 3 ) ;
03754
03755 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 3 D , g _ u E x a m p l e T e x t u r e ) ;
03756
03757 g l U n i f o r m 1 i ( d a t a 3 D T e x L o c , 3 ) ;
03758
03759
03760
03761 g l U n i f o r m 1 f ( s a m p l e R a t e L o c , 1 . 0 f / ( f l o a t ) g _ i S a m p l e R a t e ) ;
03762
03763
03764
03765 g l U n i f o r m 1 i ( s l i c e s L o c , g _ i S l i c e D i r ) ;
03766
03767
03768
03769 g l U n i f o r m 1 f ( s l i c e D e p t h L o c , g _ f C o o r d X Y Z ) ;
03770
03771
03772
03773 g l U n i f o r m 1 i ( c o m b T y p e L o c , g _ i C o m b i n a t i o n T y p e ) ;
03774
03775
03776
03777 g e t _ e r r o r s ( ) ;
03778
03779 }
03780
03781
03782
03783
03784
03785 v o i d d r a w C e n t e r C r o s s ( )
03786
03787 {
03788
03789 g l B e g i n ( G L _ L I N E S ) ;
03790
03791 g l C o l o r 3 f ( . 4 5 f , . 9 f , 0 . 4 5 f ) ;
03792
03793 g l V e r t e x 2 f ( - 1 . f , 0 . f ) ;
03794
03795 g l V e r t e x 2 f ( 1 . f , 0 . f ) ;
03796
03797 g l C o l o r 3 f ( . 9 f , 0 . 4 5 f , 0 . 4 5 f ) ;
03798
03799 g l V e r t e x 2 f ( 0 . f , - 1 . f ) ;
03800
03801 g l V e r t e x 2 f ( 0 . f , 1 . f ) ;
03802
03803 g l E n d ( ) ;
03804
03805 }
03806
03807
03808
03809 v o i d d r a w V o l u m e ( f l o a t c u b e W i d t h , f l o a t c u b e H e i g h t , f l o a t c u b e D e p t h )
03810
03811 {
03812
03813 g l P u s h M a t r i x ( ) ;
03814
03815
03816
03817 g l T r a n s l a t e f ( 0 . 0 f , 0 . 0 f , - 1 . f ) ;
03818
03819 g l M u l t M a t r i x f ( g _ p R o t a t e ) ;
03820
03821
03822
03823 d r a w B o x ( c u b e W i d t h , c u b e H e i g h t , c u b e D e p t h ) ;
03824
03825
03826
03827 g l P o p M a t r i x ( ) ;
03828
03829 }
03830
03831
03832
03833 v o i d r e n d e r T o F u l l s c r e e n Q u a d ( )
03834
03835 {
03836
03837 s t a r t R a t i o F i x S c a l e ( ) ;
03838
03839
03840
03841 g l D i s a b l e ( G L _ C U L L _ F A C E ) ;
03842
03843
03844
03845 g l E n a b l e ( G L _ B L E N D ) ;
03846
03847 g l B l e n d F u n c ( G L _ S R C _ A L P H A , G L _ O N E _ M I N U S _ S R C _ A L P H A ) ;
03848
03849
03850
03851 g l B e g i n ( G L _ Q U A D S ) ;
03852
03853
03854
03855 g l C o l o r 4 f ( 1 . f , 1 . f , 1 . f , 0 . f ) ;
03856
03857
03858
03859 g l M u l t i T e x C o o r d 2 i A R B ( G L _ T E X T U R E 0 _ A R B , 0 , 0 ) ; g l V e r t e x 2 f ( - 1 . f , - 1 . f ) ;
03860
03861 g l M u l t i T e x C o o r d 2 i A R B ( G L _ T E X T U R E 0 _ A R B , 1 , 0 ) ; g l V e r t e x 2 f ( 1 . f , - 1 . f ) ;
03862
03863 g l M u l t i T e x C o o r d 2 i A R B ( G L _ T E X T U R E 0 _ A R B , 1 , 1 ) ; g l V e r t e x 2 f ( 1 . f , 1 . f ) ;
03864
03865 g l M u l t i T e x C o o r d 2 i A R B ( G L _ T E X T U R E 0 _ A R B , 0 , 1 ) ; g l V e r t e x 2 f ( - 1 . f , 1 . f ) ;
03866
03867
03868
03869 g l E n d ( ) ;
03870
03871
03872
03873 g l D i s a b l e ( G L _ B L E N D ) ;
03874
03875
03876
03877 e n d R a t i o F i x S c a l e ( ) ;
03878
03879 }
03880
03881
03882
03883 v o i d s t o p S h a d i n g ( )
03884
03885 {
03886
03887 s h a d e r - > u n b i n d ( ) ;
03888
03889 }
03890
03891
03892
03893 v o i d p o s t R e d i s p l a y B o t t o m W i n d o w ( )
03894
03895 {
03896
03897 i n t c u r W i n d o w = g l u t G e t W i n d o w ( ) ;
03898
03899 g l u t S e t W i n d o w ( g _ b o t t o m W i n d o w I D ) ;
03900
03901 g l u t P o s t R e d i s p l a y ( ) ;
03902
03903 g l u t S e t W i n d o w ( c u r W i n d o w ) ;
03904
03905 }
03906
03907
03908
03909 v o i d r e f r e s h B o t t o m W i n d o w D a t a ( )
03910
03911 {
03912
03913 / / R e f r e s h c a l l s
03914
03915 T r a n s f e r F u n c t i o n G U I : : s o r t C o n t r o l P o i n t s ( ) ;
03916
03917 T r a n s f e r F u n c t i o n G U I : : r e f r e s h T r a n s f e r F u n c P i c k e r ( ) ;
03918
03919 T r a n s f e r F u n c t i o n T e x t u r e : : r e f r e s h T r a n s f e r F u n c t i o n T e x t u r e D a t a ( ) ;
03920
03921 T r a n s f e r F u n c t i o n T e x t u r e : : c o p y D a t a T o T r a n s f e r F u n c t i o n T e x t u r e ( g _ b o t t o m W i n d o w I D , W I N D O W _ B O T T O M ) ;
03922
03923 T r a n s f e r F u n c t i o n T e x t u r e : : c o p y D a t a T o T r a n s f e r F u n c t i o n T e x t u r e ( g _ r e n d e r W i n d o w I D , W I N D O W _ R E N D E R I N G ) ;
03924
03925 r e f r e s h C o l o u r M a p C o r n e r P o s i t i o n s ( ) ;
03926
03927 }
03928
03929
03930
03931 v o i d i n i t I n t e r f a c e B o t t o m V a l u e s ( )
03932
03933 {
03934
03935 h a n d l e C o l o u r P i c k e r S l i d e r C h a n g e ( 0 ) ;
03936
03937 h a n d l e C o l o u r P i c k e r S l i d e r M o d e C h a n g e ( 0 ) ;
03938
03939 u p d a t e C o l o u r P i c k e r C u r s o r P o s B a s e d O n S e l e c t e d C o l o u r ( ) ;
03940
03941
03942
03943 g _ C o l o r P i c k e r C u r s o r X P o s = C o l o u r P i c k e r : : c o l o u r P i c k e r W i d t h * 0 . 5 f ;
03944
03945 g _ C o l o r P i c k e r C u r s o r Y P o s = C o l o u r P i c k e r : : c o l o u r P i c k e r H e i g h t * 0 . 5 f ;
03946
03947 u p d a t e G U I C o l o u r W i t h C o l o u r P i c k e r V a l u e ( ) ;
03948
03949 }
03950
03951
03952
03953 v o i d s t a r t R a t i o F i x S c a l e ( )
03954
03955 {
03956
03957 g l P u s h M a t r i x ( ) ;
03958
03959
03960
03961 f l o a t x R e l D i m e n s i o n = 1 . f ;
03962
03963 f l o a t y R e l D i m e n s i o n = 1 . f ;
03964
03965
03966
03967
03968
03969 i f ( g _ i S l i c e D i r ! = 3 )
03970
03971 {
03972
03973 x R e l D i m e n s i o n = ( f l o a t ) g _ i R e n d e r W i n d o w W i d t h ;
03974
03975 y R e l D i m e n s i o n = ( f l o a t ) g _ i R e n d e r W i n d o w H e i g h t ;
03976
03977
03978
03979 s w i t c h ( g _ i S l i c e D i r )
03980
03981 {
03982
03983 c a s e 0 :
03984
03985 / / X Y
03986
03987 x R e l D i m e n s i o n / = g _ f C u b e D i m e n s i o n N o r m e d X ;
03988
03989 y R e l D i m e n s i o n / = g _ f C u b e D i m e n s i o n N o r m e d Y ;
03990
03991 b r e a k ;
03992
03993 c a s e 1 :
03994
03995 / / Y Z
03996
03997 x R e l D i m e n s i o n / = g _ f C u b e D i m e n s i o n N o r m e d Y ;
03998
03999 y R e l D i m e n s i o n / = g _ f C u b e D i m e n s i o n N o r m e d Z ;
04000
04001 b r e a k ;
04002
04003 c a s e 2 :
04004
04005 / / Z X
04006
04007 x R e l D i m e n s i o n / = g _ f C u b e D i m e n s i o n N o r m e d Z ;
04008
04009 y R e l D i m e n s i o n / = g _ f C u b e D i m e n s i o n N o r m e d X ;
04010
04011 b r e a k ;
04012
04013 }
04014
04015
04016
04017 i f ( g _ i S l i c e D i r < 3 )
04018
04019 {
04020
04021 i f ( x R e l D i m e n s i o n > y R e l D i m e n s i o n )
04022
04023 {
04024
04025 x R e l D i m e n s i o n = 1 . f / ( x R e l D i m e n s i o n / g _ i R e n d e r W i n d o w W i d t h ) ;
04026
04027 y R e l D i m e n s i o n = 1 . f / ( y R e l D i m e n s i o n / g _ i R e n d e r W i n d o w W i d t h ) ;
04028
04029 }
04030
04031 e l s e
04032
04033 {
04034
04035 x R e l D i m e n s i o n = 1 . f / ( x R e l D i m e n s i o n / g _ i R e n d e r W i n d o w H e i g h t ) ;
04036
04037 y R e l D i m e n s i o n = 1 . f / ( y R e l D i m e n s i o n / g _ i R e n d e r W i n d o w H e i g h t ) ;
04038
04039 }
04040
04041
04042
04043 f l o a t m a x D i m = m a x ( x R e l D i m e n s i o n , y R e l D i m e n s i o n ) ;
04044
04045
04046
04047 x R e l D i m e n s i o n / = m a x D i m ;
04048
04049 y R e l D i m e n s i o n / = m a x D i m ;
04050
04051 }
04052
04053
04054
04055 g l S c a l e f ( x R e l D i m e n s i o n , y R e l D i m e n s i o n , 1 . f ) ;
04056
04057
04058
04059 }
04060
04061 }
04062
04063
04064
04065 v o i d e n d R a t i o F i x S c a l e ( )
04066
04067 {
04068
04069 g l P o p M a t r i x ( ) ;
04070
04071 }
04072
04073
04074
04075 v o i d r e f r e s h F B O T e x t u r e S i z e s ( )
04076
04077 {
04078
04079 g l E n a b l e ( G L _ T E X T U R E _ 2 D ) ;
04080
04081
04082
04083 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , g _ u B a c k B u f f e r T e x t u r e ) ;
04084
04085 g l T e x I m a g e 2 D ( G L _ T E X T U R E _ 2 D , 0 , G L _ R G B A 8 , g _ i R e n d e r W i n d o w W i d t h , g _ i R e n d e r W i n d o w H e i g h t , 0 , G L _ R G B A , G L _ U N S I G N E D _ B Y T E , 0 ) ;
04086
04087
04088
04089
04090
04091 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , g _ u F r o n t B u f f e r T e x t u r e ) ;
04092
04093 g l T e x I m a g e 2 D ( G L _ T E X T U R E _ 2 D , 0 , G L _ R G B A 8 , g _ i R e n d e r W i n d o w W i d t h , g _ i R e n d e r W i n d o w H e i g h t , 0 , G L _ R G B A , G L _ U N S I G N E D _ B Y T E , 0 ) ;
04094
04095
04096
04097 g l B i n d T e x t u r e ( G L _ T E X T U R E _ 2 D , 0 ) ;
04098
04099 }
04100
04101
04102
04103 v o i d s t a r t R e n d e r V i e w P e r s p e c t i v e ( )
04104
04105 {
04106
04107 g l V i e w p o r t ( 0 , 0 , g _ i R e n d e r W i n d o w W i d t h , g _ i R e n d e r W i n d o w H e i g h t ) ;
04108
04109
04110
04111 g l M a t r i x M o d e ( G L _ P R O J E C T I O N ) ;
04112
04113 g l L o a d I d e n t i t y ( ) ;
04114
04115
04116
04117
04118
04119 i f ( g _ i S l i c e D i r = = 3 )
04120
04121 g l O r t h o ( - 1 . - z o o m , 1 . + z o o m , - 1 . - z o o m , 1 . + z o o m , - 2 0 . , 2 0 . ) ;
04122
04123 e l s e
04124
04125 g l O r t h o ( - 1 . , 1 . , - 1 . , 1 . , - 2 0 . , 2 0 . ) ;
04126
04127
04128
04129
04130
04131 g l M a t r i x M o d e ( G L _ M O D E L V I E W ) ;
04132
04133 g l L o a d I d e n t i t y ( ) ;
04134
04135 }
04136
04137
04138
04139
04140
04141
04142
04143 v o i d s t a r t F B O P e r s p e c t i v e ( )
04144
04145 {
04146
04147 g l V i e w p o r t ( 0 , 0 , g _ i R e n d e r W i n d o w W i d t h , g _ i R e n d e r W i n d o w H e i g h t ) ;
04148
04149
04150
04151 g l M a t r i x M o d e ( G L _ P R O J E C T I O N ) ;
04152
04153 g l L o a d I d e n t i t y ( ) ;
04154
04155
04156
04157
04158
04159 i f ( g _ i P e r s p e c t i v e T y p e = = 0 )
04160
04161 g l O r t h o ( - 1 . , 1 . , - 1 . , 1 . , - 2 0 . , 2 0 . ) ;
04162
04163 e l s e
04164
04165 {
04166
04167 i f ( g _ i S l i c e D i r = = 3 )
04168
04169 {
04170
04171 g l u P e r s p e c t i v e ( 1 0 0 . 0 , 1 . 0 , 0 . 1 , 4 . 1 1 ) ;
04172
04173
04174
04175 g l T r a n s l a t e f ( 0 . f , 0 . f , - 1 . 1 1 f ) ;
04176
04177 }
04178
04179 e l s e
04180
04181 g l F r u s t u m ( - 1 . , 1 . , - 1 . , 1 . , 1 . 1 , 4 . 1 1 ) ;
04182
04183 }
04184
04185
04186
04187 g l M a t r i x M o d e ( G L _ M O D E L V I E W ) ;
04188
04189 g l L o a d I d e n t i t y ( ) ;
04190
04191 }
04192
04193
04194
04195 v o i d u p d a t e V i e w R o t a t i o n W i t h D r a g P o s i t i o n ( i n t x , i n t y )
04196
04197 {
04198
04199 i f ( x > 0 & & y > 0 & & x < = g _ i M a i n W i n d o w W i d t h & & y < = g _ i M a i n W i n d o w H e i g h t )
04200
04201 {
04202
04203 i n t r o t a t i o n D r a g g i n g X = v i e w R o t a t i o n D r a g S t a r t X - x ;
04204
04205 i n t r o t a t i o n D r a g g i n g Y = v i e w R o t a t i o n D r a g S t a r t Y - y ;
04206
04207
04208
04209 M a t r i x r o t a t i o n M a t r i x ;
04210
04211 r o t a t i o n M a t r i x . S e t ( g _ v i e w R o t a t i o n G L U I - > f l o a t _ a r r a y _ v a l ) ;
04212
04213
04214
04215 Q u a t e r n i o n r o t a t i o n Q u a t e r n i o n = r o t a t i o n M a t r i x . G e t R o t a t i o n ( ) ;
04216
04217
04218
04219 Q u a t e r n i o n q 1 ( - r o t a t i o n D r a g g i n g X / 2 0 0 . f , V e c t o r ( 0 . f , 1 . f , 0 . f ) ) ;
04220
04221 Q u a t e r n i o n q 2 ( - r o t a t i o n D r a g g i n g Y / 2 0 0 . f , V e c t o r ( 1 . f , 0 . f , 0 . f ) ) ;
04222
04223
04224
04225 r o t a t i o n Q u a t e r n i o n = ( q 1 * q 2 ) * r o t a t i o n Q u a t e r n i o n ;
04226
04227 r o t a t i o n M a t r i x . c l e a r M a t r i x ( ) ;
04228
04229 r o t a t i o n M a t r i x . r o t a t e ( r o t a t i o n Q u a t e r n i o n ) ;
04230
04231
04232
04233 f l o a t m a t r i x [ 1 6 ] ;
04234
04235 r o t a t i o n M a t r i x . C o p y T o A r r a y ( m a t r i x ) ;
04236
04237 g _ v i e w R o t a t i o n G L U I - > s e t _ f l o a t _ a r r a y _ v a l ( m a t r i x ) ;
04238
04239
04240
04241 g _ v i e w R o t a t i o n G L U I - > r e d r a w ( ) ;
04242
04243
04244
04245 v i e w R o t a t i o n D r a g S t a r t X = x ;
04246
04247 v i e w R o t a t i o n D r a g S t a r t Y = y ;
04248
04249 }
04250
04251 }