Changeset 464 for libcaca/trunk/src/bitmap.c
- Timestamp:
- Jan 14, 2005, 12:59:55 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/src/bitmap.c
r378 r464 46 46 #include <limits.h> 47 47 #include <string.h> 48 #include <math.h> 48 49 49 50 #include "caca.h" … … 171 172 void (*get_hsv)(struct caca_bitmap *, char *, int, int); 172 173 int red[256], green[256], blue[256], alpha[256]; 174 float gammaval; 175 int gammatab[4097]; 173 176 }; 174 177 #endif … … 224 227 { 225 228 struct caca_bitmap *bitmap; 229 int i; 226 230 227 231 /* Minor sanity test */ … … 258 262 if(bpp == 8) 259 263 { 260 int i;261 264 bitmap->has_palette = 1; 262 265 bitmap->has_alpha = 0; … … 268 271 } 269 272 } 273 274 /* Default gamma value */ 275 for(i = 0; i < 4096; i++) 276 bitmap->gammatab[i] = i; 270 277 271 278 return bitmap; … … 312 319 313 320 bitmap->has_alpha = has_alpha; 321 } 322 323 /** 324 * \brief Set the gamma of a bitmap object. 325 * 326 * Set the gamma of bitmap. 327 * 328 * \param bitmap Bitmap object. 329 * \param red Gamma value. 330 */ 331 void caca_set_bitmap_gamma(struct caca_bitmap *bitmap, float gammaval) 332 { 333 int i; 334 335 if(gammaval <= 0.0) 336 return; 337 338 bitmap->gammaval = gammaval; 339 340 for(i = 0; i < 4096; i++) 341 bitmap->gammatab[i] = 4096.0 * powf((float)i / 4096.0, 1.0 / gammaval); 314 342 } 315 343 … … 371 399 if(bitmap->has_palette) 372 400 { 373 *r += bitmap-> red[bits];374 *g += bitmap->g reen[bits];375 *b += bitmap-> blue[bits];401 *r += bitmap->gammatab[bitmap->red[bits]]; 402 *g += bitmap->gammatab[bitmap->green[bits]]; 403 *b += bitmap->gammatab[bitmap->blue[bits]]; 376 404 *a += bitmap->alpha[bits]; 377 405 } 378 406 else 379 407 { 380 *r += ((bits & bitmap->rmask) >> bitmap->rright) << bitmap->rleft;381 *g += ((bits & bitmap->gmask) >> bitmap->gright) << bitmap->gleft;382 *b += ((bits & bitmap->bmask) >> bitmap->bright) << bitmap->bleft;408 *r += bitmap->gammatab[((bits & bitmap->rmask) >> bitmap->rright) << bitmap->rleft]; 409 *g += bitmap->gammatab[((bits & bitmap->gmask) >> bitmap->gright) << bitmap->gleft]; 410 *b += bitmap->gammatab[((bits & bitmap->bmask) >> bitmap->bright) << bitmap->bleft]; 383 411 *a += ((bits & bitmap->amask) >> bitmap->aright) << bitmap->aleft; 384 412 }
Note: See TracChangeset
for help on using the changeset viewer.