[brlcad-commits] SF.net SVN: brlcad:[35661] brlcad/trunk/src/rt/viewedge.c
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <br...@us...> - 2009-08-20 15:56:54
|
Revision: 35661 http://brlcad.svn.sourceforge.net/brlcad/?rev=35661&view=rev Author: brlcad Date: 2009-08-20 15:56:48 +0000 (Thu, 20 Aug 2009) Log Message: ----------- add support for intensity mapping, albeit unused, as well choosing colors based on both sides of the edge (might not be a good idea). Modified Paths: -------------- brlcad/trunk/src/rt/viewedge.c Modified: brlcad/trunk/src/rt/viewedge.c =================================================================== --- brlcad/trunk/src/rt/viewedge.c 2009-08-20 15:53:53 UTC (rev 35660) +++ brlcad/trunk/src/rt/viewedge.c 2009-08-20 15:56:48 UTC (rev 35661) @@ -987,7 +987,11 @@ } if (edge) { - choose_color(col, intensity, &me, &left, &below, NULL, NULL); + if (both_sides) { + choose_color(col, intensity, &me, &left, &below, &right, &above); + } else { + choose_color(col, intensity, &me, &left, &below, NULL, NULL); + } scanline[cpu][ap->a_x*3+RED] = col[RED]; scanline[cpu][ap->a_x*3+GRN] = col[GRN]; @@ -1033,7 +1037,7 @@ col[GRN] = fgcolor[GRN]; col[BLU] = fgcolor[BLU]; - if (region_colors) { + if (region_colors && me) { struct cell *use_this = me; @@ -1041,8 +1045,14 @@ * Determine the cell with the smallest hit distance. */ - use_this = (me->c_dist < left->c_dist) ? me : left; - use_this = (use_this->c_dist < below->c_dist) ? use_this : below; + if (left) + use_this = (use_this->c_dist < left->c_dist) ? use_this : left; + if (below) + use_this = (use_this->c_dist < below->c_dist) ? use_this : below; + if (right) + use_this = (use_this->c_dist < right->c_dist) ? use_this : right; + if (above) + use_this = (use_this->c_dist < above->c_dist) ? use_this : above; if (use_this == (struct cell *)NULL) bu_exit(EXIT_FAILURE, "Error: use_this is NULL.\n"); @@ -1051,6 +1061,11 @@ col[GRN] = 255 * use_this->c_region->reg_mater.ma_color[GRN]; col[BLU] = 255 * use_this->c_region->reg_mater.ma_color[BLU]; } + + col[RED] = (col[RED] * intensity) + (bgcolor[RED] * (1.0-intensity)); + col[GRN] = (col[GRN] * intensity) + (bgcolor[GRN] * (1.0-intensity)); + col[BLU] = (col[BLU] * intensity) + (bgcolor[BLU] * (1.0-intensity)); + return; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |