CMGDK r49-rc2
|
00001 # i f n d e f H G L _ V S 1 6 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 1 6 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 * 1 6 MOrMOVZbO\U^[s{| 00018 00019 * / 00020 00021 c l a s s V S 1 6 B i t m a p : p u b l i c V S B a s e / / / 1 6 MOrMOVZbO\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 1 6 * ) ( s c a n l i n e [ y ] + ( x < < 1 ) ) = 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 < < 1 ) , C o l o r , n * s i z e o f ( u i n t 1 6 ) ) ; } 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 < < = 1 ; 00038 00039 00040 00041 w h i l e ( n - - ) 00042 00043 * ( u i n t 1 6 * ) ( 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 i o n 00066 00067 { 00068 00069 u i n t 1 6 C o l o r ; / / / < S_MR~Vri_ 00070 00071 s t r u c t 00072 00073 { 00074 00075 u i n t 8 L u m ; 00076 00077 u i n t 8 A l p h a ; 00078 00079 } ; 00080 00081 } ; 00082 00083 00084 00085 u i n t 1 6 * G e t P i x e l B u f f e r ( ) { r e t u r n ( u i n t 1 6 * ) p i x e l _ b u f f e r ; } / / / < a }Q:S 00086 00087 u i n t 1 6 * 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 1 6 * ) s c a n l i n e [ r o w ] ; } / / / < kbc~ 00088 00089 00090 00091 p u b l i c : 00092 00093 00094 00095 V S 1 6 B i t m a p ( ) { C o l o r = 0 ; } / / / < ,g{|g Qpe 00096 00097 v i r t u a l ~ V S 1 6 B i t m a p ( ) { } / / / < ,g{|ggQpe 00098 00099 00100 00101 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 , 1 6 ) ; } / / / < R^ZbO\U^ 00102 00103 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 ) ; } 00104 00105 00106 00107 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 ; 00108 00109 } ; 00110 00111 00112 00113 / * * 00114 00115 * 1 6 MOL u m _ A l p h a rMOVZbO\U^[s{| 00116 00117 * / 00118 00119 c l a s s V S L u m A l p h a : p u b l i c V S 1 6 B i t m a p / / 2 4 MOR G B rMOVZbO\U^[s{| 00120 00121 { 00122 00123 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 ) 00124 00125 { 00126 00127 u i n t 8 * s p = G e t P o i n t e r ( x , y ) ; 00128 00129 00130 00131 w h i l e ( n - - ) 00132 00133 { 00134 00135 * r + + = * s p ; 00136 00137 * g + + = * s p ; 00138 00139 * b + + = * s p + + ; 00140 00141 00142 00143 s p + + ; 00144 00145 } 00146 00147 } 00148 00149 00150 00151 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 ) 00152 00153 { 00154 00155 u i n t 8 * s p = G e t P o i n t e r ( x , y ) ; 00156 00157 00158 00159 w h i l e ( n - - ) 00160 00161 { 00162 00163 * r + + = * s p ; 00164 00165 * g + + = * s p ; 00166 00167 * b + + = * s p + + ; 00168 00169 * a + + = * s p + + ; 00170 00171 } 00172 00173 } 00174 00175 00176 00177 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 ) 00178 00179 { 00180 00181 u i n t 8 * t p = G e t P o i n t e r ( x , y ) ; 00182 00183 00184 00185 w h i l e ( n - - ) 00186 00187 { 00188 00189 * t p + + = f l o a t ( * r + + ) * 0 . 2 9 9 + f l o a t ( * g + + ) * 0 . 5 8 7 + f l o a t ( * b + + ) * 0 . 1 1 4 ; 00190 00191 t p + + ; 00192 00193 } 00194 00195 } 00196 00197 00198 00199 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 ) 00200 00201 { 00202 00203 u i n t 8 * t p = G e t P o i n t e r ( x , y ) ; 00204 00205 00206 00207 w h i l e ( n - - ) 00208 00209 { 00210 00211 d o u b l e a l p h a = d o u b l e ( * a + + ) / 2 5 5 . 0 f ; 00212 00213 d o u b l e f a l p h a = 1 . 0 f - a l p h a ; 00214 00215 00216 00217 * t p + + = d o u b l e ( * t p ) * f a l p h a + d o u b l e ( f l o a t ( * r + + ) * 0 . 2 9 9 + f l o a t ( * g + + ) * 0 . 5 8 7 + f l o a t ( * b + + ) * 0 . 1 1 4 ) * a l p h a ; 00218 00219 t p + + ; 00220 00221 } 00222 00223 } 00224 00225 00226 00227 p u b l i c : 00228 00229 00230 00231 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 ) 00232 00233 { 00234 00235 L u m = f l o a t ( r ) * 0 . 2 9 9 + f l o a t ( g ) * 0 . 5 8 7 + f l o a t ( b ) * 0 . 1 1 4 ; 00236 00237 A l p h a = a ; 00238 00239 } 00240 00241 00242 00243 p u b l i c : 00244 00245 00246 00247 V S L u m A l p h a ( ) { v s C o l o r T y p e = c t L u m i n a n c e A l p h a ; } 00248 00249 v i r t u a l ~ V S L u m A l p h a ( ) { } ; 00250 00251 } ; 00252 00253 } / / n a m e s p a c e h g l 00254 00255 # e n d i f / / H G L _ V S 1 6 B I T M A P _ I N C L U D E 00256 00257