summaryrefslogtreecommitdiff
path: root/src/ThrownTogetherRenderer.cc
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2011-12-11 22:45:14 (GMT)
committerMarius Kintel <marius@kintel.net>2011-12-11 22:45:14 (GMT)
commit9ed8d9a6732e1eea0265ff84917278a82d81e2dd (patch)
tree6322830c95d70b2310b45c7008cfd4dac6d4bf31 /src/ThrownTogetherRenderer.cc
parent647fdf5f98f6337955972375a17837aede922988 (diff)
Some small refactoring of color handling to support using the color() module to change only alpha
Diffstat (limited to 'src/ThrownTogetherRenderer.cc')
-rw-r--r--src/ThrownTogetherRenderer.cc57
1 files changed, 27 insertions, 30 deletions
diff --git a/src/ThrownTogetherRenderer.cc b/src/ThrownTogetherRenderer.cc
index 3ab13ea..36f7b95 100644
--- a/src/ThrownTogetherRenderer.cc
+++ b/src/ThrownTogetherRenderer.cc
@@ -70,51 +70,48 @@ void ThrownTogetherRenderer::renderCSGChain(CSGChain *chain, bool highlight,
double *c = chain->colors[i];
glPushMatrix();
glMultMatrixd(m.data());
- int csgmode = chain->types[i] == CSGTerm::TYPE_DIFFERENCE ? PolySet::CSGMODE_DIFFERENCE : PolySet::CSGMODE_NORMAL;
+ PolySet::csgmode_e csgmode = chain->types[i] == CSGTerm::TYPE_DIFFERENCE ? PolySet::CSGMODE_DIFFERENCE : PolySet::CSGMODE_NORMAL;
if (highlight) {
- chain->polysets[i]->render_surface(PolySet::COLORMODE_HIGHLIGHT, PolySet::csgmode_e(csgmode + 20), m);
+ csgmode = PolySet::csgmode_e(csgmode + 20);
+ setColor(COLORMODE_HIGHLIGHT);
+ chain->polysets[i]->render_surface(csgmode, m);
if (showedges) {
- glDisable(GL_LIGHTING);
- chain->polysets[i]->render_edges(PolySet::COLORMODE_HIGHLIGHT, PolySet::csgmode_e(csgmode + 20));
- glEnable(GL_LIGHTING);
+ setColor(COLORMODE_HIGHLIGHT_EDGES);
+ chain->polysets[i]->render_edges(csgmode);
}
} else if (background) {
- chain->polysets[i]->render_surface(PolySet::COLORMODE_BACKGROUND, PolySet::csgmode_e(csgmode + 10), m);
+ csgmode = PolySet::csgmode_e(csgmode + 10);
+ setColor(COLORMODE_BACKGROUND);
+ chain->polysets[i]->render_surface(csgmode, m);
if (showedges) {
- glDisable(GL_LIGHTING);
- chain->polysets[i]->render_edges(PolySet::COLORMODE_BACKGROUND, PolySet::csgmode_e(csgmode + 10));
- glEnable(GL_LIGHTING);
+ setColor(COLORMODE_BACKGROUND_EDGES);
+ chain->polysets[i]->render_edges(csgmode);
}
} else if (fberror) {
- if (highlight) {
- chain->polysets[i]->render_surface(PolySet::COLORMODE_NONE, PolySet::csgmode_e(csgmode + 20), m);
- } else if (background) {
- chain->polysets[i]->render_surface(PolySet::COLORMODE_NONE, PolySet::csgmode_e(csgmode + 10), m);
- } else {
- chain->polysets[i]->render_surface(PolySet::COLORMODE_NONE, PolySet::csgmode_e(csgmode), m);
- }
- } else if (c[0] >= 0 || c[1] >= 0 || c[2] >= 0) {
- glColor4dv(c);
- chain->polysets[i]->render_surface(PolySet::COLORMODE_NONE, PolySet::csgmode_e(csgmode), m);
+ if (highlight) csgmode = PolySet::csgmode_e(csgmode + 20);
+ else if (background) csgmode = PolySet::csgmode_e(csgmode + 10);
+ else csgmode = PolySet::csgmode_e(csgmode);
+ chain->polysets[i]->render_surface(csgmode, m);
+ } else if (c[0] >= 0 || c[1] >= 0 || c[2] >= 0 || c[3] >= 0) {
+ setColor(c);
+ chain->polysets[i]->render_surface(csgmode, m);
if (showedges) {
- glDisable(GL_LIGHTING);
glColor4d((c[0]+1)/2, (c[1]+1)/2, (c[2]+1)/2, 1.0);
- chain->polysets[i]->render_edges(PolySet::COLORMODE_NONE, PolySet::csgmode_e(csgmode));
- glEnable(GL_LIGHTING);
+ chain->polysets[i]->render_edges(csgmode);
}
} else if (chain->types[i] == CSGTerm::TYPE_DIFFERENCE) {
- chain->polysets[i]->render_surface(PolySet::COLORMODE_CUTOUT, PolySet::csgmode_e(csgmode), m);
+ setColor(COLORMODE_CUTOUT);
+ chain->polysets[i]->render_surface(csgmode, m);
if (showedges) {
- glDisable(GL_LIGHTING);
- chain->polysets[i]->render_edges(PolySet::COLORMODE_CUTOUT, PolySet::csgmode_e(csgmode));
- glEnable(GL_LIGHTING);
+ setColor(COLORMODE_CUTOUT_EDGES);
+ chain->polysets[i]->render_edges(csgmode);
}
} else {
- chain->polysets[i]->render_surface(PolySet::COLORMODE_MATERIAL, PolySet::csgmode_e(csgmode), m);
+ setColor(COLORMODE_MATERIAL);
+ chain->polysets[i]->render_surface(csgmode, m);
if (showedges) {
- glDisable(GL_LIGHTING);
- chain->polysets[i]->render_edges(PolySet::COLORMODE_MATERIAL, PolySet::csgmode_e(csgmode));
- glEnable(GL_LIGHTING);
+ setColor(COLORMODE_MATERIAL_EDGES);
+ chain->polysets[i]->render_edges(csgmode);
}
}
glPopMatrix();
contact: Jan Huwald // Impressum