CMGDK r49-rc2
|
00001 # i f n d e f H G L _ V S 3 2 B I T M A P _ I N C L U D E 00002 00003 # d e f i n e H G L _ V S 3 2 B I T M A P _ I N C L U D E 00004 00005 00006 00007 # i n c l u d e < h g l / 2 d / V S B a s e . H > 00008 00009 # i n c l u d e < s t r i n g . h > 00010 00011 n a m e s p a c e h g l 00012 00013 { 00014 00015 / * * 00016 00017 * 3 2 MOrZbO\U^[s{| 00018 00019 * / 00020 00021 c l a s s V S 3 2 B i t m a p : p u b l i c V S B a s e / / / 3 2 MOrZbO\U^[s{| 00022 00023 { 00024 00025 p r o t e c t e d : / / Q萹el 00026 00027 00028 00029 v o i d _ P u t P i x e l ( i n t x , i n t y ) { * ( u i n t 3 2 * ) ( s c a n l i n e [ y ] + ( x < < 2 ) ) = C o l o r ; } 00030 00031 v o i d _ H L i n e ( i n t x , i n t y , i n t n ) { m e m s e t ( s c a n l i n e [ y ] + ( x < < 2 ) , C o l o r , n * s i z e o f ( u i n t 3 2 ) ) ; } 00032 00033 v o i d _ V L i n e ( i n t x , i n t y , i n t n ) 00034 00035 { 00036 00037 x < < = 2 ; 00038 00039 00040 00041 w h i l e ( n - - ) 00042 00043 * ( u i n t 3 2 * ) ( s c a n l i n e [ y + + ] + x ) = C o l o r ; 00044 00045 } 00046 00047 00048 00049 v i r t u a l v o i d S p l i t T o R G B ( u i n t 8 * , u i n t 8 * , u i n t 8 * , i n t , i n t , i n t ) = 0 ; 00050 00051 v i r t u a l v o i d S p l i t T o R G B A ( u i n t 8 * , u i n t 8 * , u i n t 8 * , u i n t 8 * , i n t , i n t , i n t ) = 0 ; 00052 00053 00054 00055 v i r t u a l v o i d D r a w R G B ( u i n t 8 * , u i n t 8 * , u i n t 8 * , i n t , i n t , i n t ) = 0 ; 00056 00057 v i r t u a l v o i d D r a w R G B A ( u i n t 8 * , u i n t 8 * , u i n t 8 * , u i n t 8 * , i n t , i n t , i n t ) = 0 ; 00058 00059 00060 00061 p u b l i c : / / ^\'` 00062 00063 00064 00065 u n s i g n e d _ _ i n t 3 2 C o l o r ; / / / < S_MR~Vr 00066 00067 00068 00069 u i n t 3 2 * G e t P i x e l B u f f e r ( ) { r e t u r n ( u i n t 3 2 * ) p i x e l _ b u f f e r ; } / / / < a }Q:S 00070 00071 u i n t 3 2 * G e t S c a n L i n e ( i n t r o w ) { r e t u r n ( r o w < 0 | | r o w > = v s H e i g h t ) ? 0 : ( u i n t 3 2 * ) s c a n l i n e [ r o w ] ; } / / / < kbc~ 00072 00073 00074 00075 p u b l i c : 00076 00077 00078 00079 V S 3 2 B i t m a p ( ) { C o l o r = 0 ; } / / / < ,g{|g Qpe 00080 00081 v i r t u a l ~ V S 3 2 B i t m a p ( ) { } / / / < ,g{|ggQpe 00082 00083 00084 00085 b o o l C r e a t e ( i n t w , i n t h ) { r e t u r n C r e a t e B u f f e r ( w , h , 3 2 ) ; } / / / < R^ZbO\U^ 00086 00087 u i n t 8 * G e t P o i n t e r ( i n t x , i n t y ) { r e t u r n ( u i n t 8 * ) ( G e t S c a n L i n e ( y ) + x ) ; } 00088 00089 00090 00091 v i r t u a l v o i d S e t C o l o r ( i n t , i n t , i n t , i n t = 2 5 5 ) = 0 ; 00092 00093 } ; 00094 00095 00096 00097 / * * 00098 00099 * 3 2 MOR G B A <h_rZbO\U^[s{| 00100 00101 * / 00102 00103 c l a s s V S R G B A : p u b l i c V S 3 2 B i t m a p / / / 3 2 MOR G B A <h_rZbO\U^[s{| 00104 00105 { 00106 00107 v o i d S p l i t T o R G B ( u i n t 8 * r , u i n t 8 * g , u i n t 8 * b , i n t x , i n t y , i n t n ) 00108 00109 { 00110 00111 u i n t 8 * s p = G e t P o i n t e r ( x , y ) ; 00112 00113 00114 00115 w h i l e ( n - - ) 00116 00117 { 00118 00119 * r + + = * s p + + ; 00120 00121 * g + + = * s p + + ; 00122 00123 * b + + = * s p + + ; 00124 00125 s p + + ; 00126 00127 } 00128 00129 } 00130 00131 00132 00133 v o i d S p l i t T o R G B A ( u i n t 8 * r , u i n t 8 * g , u i n t 8 * b , u i n t 8 * a , i n t x , i n t y , i n t n ) 00134 00135 { 00136 00137 u i n t 8 * s p = G e t P o i n t e r ( x , y ) ; 00138 00139 00140 00141 w h i l e ( n - - ) 00142 00143 { 00144 00145 * r + + = * s p + + ; 00146 00147 * g + + = * s p + + ; 00148 00149 * b + + = * s p + + ; 00150 00151 * a + + = * s p + + ; 00152 00153 } 00154 00155 } 00156 00157 00158 00159 v o i d D r a w R G B ( u i n t 8 * r , u i n t 8 * g , u i n t 8 * b , i n t x , i n t y , i n t n ) 00160 00161 { 00162 00163 u i n t 8 * t p = G e t P o i n t e r ( x , y ) ; 00164 00165 00166 00167 w h i l e ( n - - ) 00168 00169 { 00170 00171 * t p + + = * r + + ; 00172 00173 * t p + + = * g + + ; 00174 00175 * t p + + = * b + + ; 00176 00177 t p + + ; 00178 00179 } 00180 00181 } 00182 00183 00184 00185 v o i d D r a w R G B A ( u i n t 8 * r , u i n t 8 * g , u i n t 8 * b , u i n t 8 * a , i n t x , i n t y , i n t n ) 00186 00187 { 00188 00189 u i n t 8 * t p = G e t P o i n t e r ( x , y ) ; 00190 00191 00192 00193 w h i l e ( n - - ) 00194 00195 { 00196 00197 d o u b l e a l p h a = d o u b l e ( * a + + ) / 2 5 5 . 0 f ; 00198 00199 d o u b l e f a l p h a = 1 . 0 f - a l p h a ; 00200 00201 00202 00203 * t p + + = d o u b l e ( * r + + ) * a l p h a + d o u b l e ( * t p ) * f a l p h a ; 00204 00205 * t p + + = d o u b l e ( * g + + ) * a l p h a + d o u b l e ( * t p ) * f a l p h a ; 00206 00207 * t p + + = d o u b l e ( * b + + ) * a l p h a + d o u b l e ( * t p ) * f a l p h a ; 00208 00209 t p + + ; 00210 00211 } 00212 00213 } 00214 00215 00216 00217 p u b l i c : 00218 00219 00220 00221 v o i d S e t C o l o r ( i n t r , i n t g , i n t b , i n t a ) 00222 00223 { 00224 00225 C o l o r = ( a < < 2 4 ) | ( b < < 1 6 ) | ( g < < 8 ) | r ; 00226 00227 } 00228 00229 00230 00231 p u b l i c : 00232 00233 00234 00235 V S R G B A ( ) { v s C o l o r T y p e = c t R G B A ; } 00236 00237 v i r t u a l ~ V S R G B A ( ) { } ; 00238 00239 } ; 00240 00241 00242 00243 / * * 00244 00245 * 3 2 MOR G B A <h_rZbO\U^[s{| 00246 00247 * / 00248 00249 c l a s s V S B G R A : p u b l i c V S 3 2 B i t m a p / / / 3 2 MOR G B A <h_rZbO\U^[s{| 00250 00251 { 00252 00253 v o i d S p l i t T o R G B ( u i n t 8 * r , u i n t 8 * g , u i n t 8 * b , i n t x , i n t y , i n t n ) 00254 00255 { 00256 00257 u i n t 8 * s p = G e t P o i n t e r ( x , y ) ; 00258 00259 00260 00261 w h i l e ( n - - ) 00262 00263 { 00264 00265 * b + + = * s p + + ; 00266 00267 * g + + = * s p + + ; 00268 00269 * r + + = * s p + + ; 00270 00271 s p + + ; 00272 00273 } 00274 00275 } 00276 00277 00278 00279 v o i d S p l i t T o R G B A ( u i n t 8 * r , u i n t 8 * g , u i n t 8 * b , u i n t 8 * a , i n t x , i n t y , i n t n ) 00280 00281 { 00282 00283 u i n t 8 * s p = G e t P o i n t e r ( x , y ) ; 00284 00285 00286 00287 w h i l e ( n - - ) 00288 00289 { 00290 00291 * b + + = * s p + + ; 00292 00293 * g + + = * s p + + ; 00294 00295 * r + + = * s p + + ; 00296 00297 * a + + = * s p + + ; 00298 00299 } 00300 00301 } 00302 00303 00304 00305 v o i d D r a w R G B ( u i n t 8 * r , u i n t 8 * g , u i n t 8 * b , i n t x , i n t y , i n t n ) 00306 00307 { 00308 00309 u i n t 8 * t p = G e t P o i n t e r ( x , y ) ; 00310 00311 00312 00313 w h i l e ( n - - ) 00314 00315 { 00316 00317 * t p + + = * b + + ; 00318 00319 * t p + + = * g + + ; 00320 00321 * t p + + = * r + + ; 00322 00323 t p + + ; 00324 00325 } 00326 00327 } 00328 00329 00330 00331 v o i d D r a w R G B A ( u i n t 8 * r , u i n t 8 * g , u i n t 8 * b , u i n t 8 * a , i n t x , i n t y , i n t n ) 00332 00333 { 00334 00335 u i n t 8 * t p = G e t P o i n t e r ( x , y ) ; 00336 00337 00338 00339 w h i l e ( n - - ) 00340 00341 { 00342 00343 d o u b l e a l p h a = d o u b l e ( * a + + ) / 2 5 5 . 0 f ; 00344 00345 d o u b l e f a l p h a = 1 . 0 f - a l p h a ; 00346 00347 00348 00349 * t p + + = d o u b l e ( * b + + ) * a l p h a + d o u b l e ( * t p ) * f a l p h a ; 00350 00351 * t p + + = d o u b l e ( * g + + ) * a l p h a + d o u b l e ( * t p ) * f a l p h a ; 00352 00353 * t p + + = d o u b l e ( * r + + ) * a l p h a + d o u b l e ( * t p ) * f a l p h a ; 00354 00355 t p + + ; 00356 00357 } 00358 00359 } 00360 00361 00362 00363 p u b l i c : 00364 00365 00366 00367 v o i d S e t C o l o r ( i n t r , i n t g , i n t b , i n t a ) 00368 00369 { 00370 00371 C o l o r = ( a < < 2 4 ) | ( b < < 1 6 ) | ( g < < 8 ) | r ; 00372 00373 } 00374 00375 00376 00377 p u b l i c : 00378 00379 00380 00381 V S B G R A ( ) { v s C o l o r T y p e = c t B G R A ; } 00382 00383 v i r t u a l ~ V S B G R A ( ) { } ; 00384 00385 } ; 00386 00387 } / / n a m e s p a c e h g l 00388 00389 # e n d i f / / H G L _ V S 3 2 B I T M A P _ I N C L U D E 00390 00391