ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/tonemap.c
(Generate patch)

Comparing ray/src/common/tonemap.c (file contents):
Revision 3.9 by greg, Sat Feb 22 02:07:22 2003 UTC vs.
Revision 3.14 by greg, Thu Sep 18 20:18:19 2003 UTC

# Line 9 | Line 9 | static const char      RCSid[] = "$Id$";
9   * Externals declared in tonemap.h
10   */
11  
12 < /* ====================================================================
13 < * The Radiance Software License, Version 1.0
14 < *
15 < * Copyright (c) 1990 - 2002 The Regents of the University of California,
16 < * through Lawrence Berkeley National Laboratory.   All rights reserved.
17 < *
18 < * Redistribution and use in source and binary forms, with or without
19 < * modification, are permitted provided that the following conditions
20 < * are met:
21 < *
22 < * 1. Redistributions of source code must retain the above copyright
23 < *         notice, this list of conditions and the following disclaimer.
24 < *
25 < * 2. Redistributions in binary form must reproduce the above copyright
26 < *       notice, this list of conditions and the following disclaimer in
27 < *       the documentation and/or other materials provided with the
28 < *       distribution.
29 < *
30 < * 3. The end-user documentation included with the redistribution,
31 < *           if any, must include the following acknowledgment:
32 < *             "This product includes Radiance software
33 < *                 (http://radsite.lbl.gov/)
34 < *                 developed by the Lawrence Berkeley National Laboratory
35 < *               (http://www.lbl.gov/)."
36 < *       Alternately, this acknowledgment may appear in the software itself,
37 < *       if and wherever such third-party acknowledgments normally appear.
38 < *
39 < * 4. The names "Radiance," "Lawrence Berkeley National Laboratory"
40 < *       and "The Regents of the University of California" must
41 < *       not be used to endorse or promote products derived from this
42 < *       software without prior written permission. For written
43 < *       permission, please contact [email protected].
44 < *
45 < * 5. Products derived from this software may not be called "Radiance",
46 < *       nor may "Radiance" appear in their name, without prior written
47 < *       permission of Lawrence Berkeley National Laboratory.
48 < *
49 < * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
50 < * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
51 < * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
52 < * DISCLAIMED.   IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR
53 < * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
54 < * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
55 < * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
56 < * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
57 < * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
58 < * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
59 < * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
60 < * SUCH DAMAGE.
61 < * ====================================================================
62 < *
63 < * This software consists of voluntary contributions made by many
64 < * individuals on behalf of Lawrence Berkeley National Laboratory.   For more
65 < * information on Lawrence Berkeley National Laboratory, please see
66 < * <http://www.lbl.gov/>.
67 < */
12 > #include "copyright.h"
13  
14   #include        <stdio.h>
15   #include        <math.h>
# Line 217 | Line 162 | COLOR  *scan;
162   int     len;
163   {
164          static char     funcName[] = "tmCvColors";
165 <        static COLOR    csmall = {1e-6, 1e-6, 1e-6};
165 >        static COLOR    csmall = {.5*MINLUM, .5*MINLUM, .5*MINLUM};
166          COLOR   cmon;
167          double  lum, slum;
168          register double d;
# Line 225 | Line 170 | int    len;
170  
171          if (tmTop == NULL)
172                  returnErr(TM_E_TMINVAL);
173 <        if (ls == NULL | scan == NULL | len < 0)
173 >        if ((ls == NULL) | (scan == NULL) | (len < 0))
174                  returnErr(TM_E_ILLEGAL);
175          for (i = len; i--; ) {
176                  if (tmNeedMatrix(tmTop))                /* get monitor RGB */
# Line 298 | Line 243 | int    len;
243  
244          if (tmTop == NULL)
245                  returnErr(TM_E_TMINVAL);
246 <        if (ls == NULL | scan == NULL | len < 0)
246 >        if ((ls == NULL) | (scan == NULL) | (len < 0))
247                  returnErr(TM_E_ILLEGAL);
248          for (i = len; i--; )
249                  if (scan[i] <= TM_NOLUM) {
# Line 445 | Line 390 | double Ldmax;
390          float   *cumf;
391          int     brt0, histlen, threshold, ceiling, trimmings;
392          double  logLddyn, Ldmin, Ldavg, Lwavg, Tr, Lw, Ld;
393 <        int4    histot;
393 >        int32   histot;
394          double  sum;
395          register double d;
396          register int    i, j;
# Line 470 | Line 415 | double Ldmax;
415                  histot += tmTop->histo[i];
416                  sum += (j -= HISTEP) * tmTop->histo[i];
417          }
418 <        threshold = histot*.025 + .5;
418 >        threshold = histot*0.005 + .5;
419          if (threshold < 4)
420                  returnErr(TM_E_TMFAIL);
421          Lwavg = tmLuminance( (double)sum / histot );
# Line 483 | Line 428 | double Ldmax;
428                                          /* clamp histogram */
429          histo = (int *)malloc(histlen*sizeof(int));
430          cumf = (float *)malloc((histlen+2)*sizeof(float));
431 <        if (histo == NULL | cumf == NULL)
431 >        if ((histo == NULL) | (cumf == NULL))
432                  returnErr(TM_E_NOMEM);
433          cumf[histlen+1] = 1.;           /* guard for assignment code */
434          for (i = histlen; i--; )        /* make malleable copy */
# Line 547 | Line 492 | register BYTE  *cs;
492   int     len;
493   {
494          static char     funcName[] = "tmMapPixels";
495 <        register int4   li, pv;
495 >        register int32  li, pv;
496  
497          if (tmTop == NULL || tmTop->lumap == NULL)
498                  returnErr(TM_E_TMINVAL);
499 <        if (ps == NULL | ls == NULL | len < 0)
499 >        if ((ps == NULL) | (ls == NULL) | (len < 0))
500                  returnErr(TM_E_ILLEGAL);
501          while (len--) {
502                  if ((li = *ls++) < tmTop->mbrmin) {
# Line 593 | Line 538 | register struct tmStruct       *tms;
538   {
539          register struct tmStruct        *tms2;
540                                          /* special cases first */
541 <        if (tms == NULL | tmTop == NULL)
541 >        if ((tms == NULL) | (tmTop == NULL))
542                  return(0);
543          if (tms == tmTop) {
544                  tmTop = tms->tmprev;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines