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 }