/// Get color range based on the bounding box. void ColorBlock::boundsRange(Color32 * start, Color32 * end) const { Color32 minColor(255, 255, 255); Color32 maxColor(0, 0, 0); for(uint i = 0; i < 16; i++) { if (m_color[i].r < minColor.r) { minColor.r = m_color[i].r; } if (m_color[i].g < minColor.g) { minColor.g = m_color[i].g; } if (m_color[i].b < minColor.b) { minColor.b = m_color[i].b; } if (m_color[i].r > maxColor.r) { maxColor.r = m_color[i].r; } if (m_color[i].g > maxColor.g) { maxColor.g = m_color[i].g; } if (m_color[i].b > maxColor.b) { maxColor.b = m_color[i].b; } } // Offset range by 1/16 of the extents Color32 inset; inset.r = (maxColor.r - minColor.r) >> 4; inset.g = (maxColor.g - minColor.g) >> 4; inset.b = (maxColor.b - minColor.b) >> 4; minColor.r = (minColor.r + inset.r <= 255) ? minColor.r + inset.r : 255; minColor.g = (minColor.g + inset.g <= 255) ? minColor.g + inset.g : 255; minColor.b = (minColor.b + inset.b <= 255) ? minColor.b + inset.b : 255; maxColor.r = (maxColor.r >= inset.r) ? maxColor.r - inset.r : 0; maxColor.g = (maxColor.g >= inset.g) ? maxColor.g - inset.g : 0; maxColor.b = (maxColor.b >= inset.b) ? maxColor.b - inset.b : 0; *start = minColor; *end = maxColor; }
void KoColorPopupAction::setCurrentColor( const KoColor &color ) { d->colorChooser->slotSetColor( color ); KoColor minColor( color ); d->currentColor = minColor; KoColor maxColor( color ); minColor.setOpacity( OPACITY_TRANSPARENT_U8 ); maxColor.setOpacity( OPACITY_OPAQUE_U8 ); d->opacitySlider->blockSignals( true ); d->opacitySlider->setColors( minColor, maxColor ); d->opacitySlider->setValue( color.opacityU8() ); d->opacitySlider->blockSignals( false ); updateIcon(); }
void Widget::on_addTotrackingButtom_clicked() { Scalar minColor(minCorHSV[0], minCorHSV[1], minCorHSV[2]); Scalar maxColor(maxCorHSV[0], maxCorHSV[1], maxCorHSV[2]); if( maxColor[0] < minColor[0] || maxColor[1] < minColor[1] || maxColor[2] < minColor[2] ) { errorMsg(string("Range inválido! Escolha novamente")); } else{ vector<Scalar> range; range.push_back(minColor); range.push_back(maxColor); addColorToTracking(range); number_of_objects++; } }
void RWGame::renderDebugPaths(float time) { btVector3 roadColour(1.f, 0.f, 0.f); btVector3 pedColour(0.f, 0.f, 1.f); for( AIGraphNode* n : world->aigraph.nodes ) { btVector3 p( n->position.x, n->position.y, n->position.z ); auto& col = n->type == AIGraphNode::Pedestrian ? pedColour : roadColour; debug->drawLine( p - btVector3(0.f, 0.f, 1.f), p + btVector3(0.f, 0.f, 1.f), col); debug->drawLine( p - btVector3(1.f, 0.f, 0.f), p + btVector3(1.f, 0.f, 0.f), col); debug->drawLine( p - btVector3(0.f, 1.f, 0.f), p + btVector3(0.f, 1.f, 0.f), col); for( AIGraphNode* c : n->connections ) { btVector3 f( c->position.x, c->position.y, c->position.z ); debug->drawLine( p, f, col); } } // Draw Garage bounds for(size_t g = 0; g < state->garages.size(); ++g) { auto& garage = state->garages[g]; btVector3 minColor(1.f, 0.f, 0.f); btVector3 maxColor(0.f, 1.f, 0.f); btVector3 min(garage.min.x,garage.min.y,garage.min.z); btVector3 max(garage.max.x,garage.max.y,garage.max.z); debug->drawLine(min, min + btVector3(0.5f, 0.f, 0.f), minColor); debug->drawLine(min, min + btVector3(0.f, 0.5f, 0.f), minColor); debug->drawLine(min, min + btVector3(0.f, 0.f, 0.5f), minColor); debug->drawLine(max, max - btVector3(0.5f, 0.f, 0.f), maxColor); debug->drawLine(max, max - btVector3(0.f, 0.5f, 0.f), maxColor); debug->drawLine(max, max - btVector3(0.f, 0.f, 0.5f), maxColor); } debug->flush(renderer); }
bool Lightmap::IsOneColor (float threshold, csColor& color) { ScopedSwapLock<Lightmap> l (*this); if ((width == 1) && (height == 1)) { color = colorArray[0]; return true; } // rest of code assumes number of pixels is even // The threshold check is done every 2*N pixels, N this amount. static const int checkThresholdFrequence = 1024; csColor minColor (colorArray[0]); csColor maxColor (colorArray[1]); int n = width * height - 2; csColor* p = colorArray + 2; int check = checkThresholdFrequence; do { if (p[0].red < p[1].red) { if (p[0].red < minColor.red) minColor.red = p[0].red; if (p[1].red > maxColor.red) maxColor.red = p[1].red; } else { if (p[1].red < minColor.red) minColor.red = p[1].red; if (p[0].red > maxColor.red) maxColor.red = p[0].red; } if (p[0].green < p[1].green) { if (p[0].green < minColor.green) minColor.green = p[0].green; if (p[1].green > maxColor.green) maxColor.green = p[1].green; } else { if (p[1].green < minColor.green) minColor.green = p[1].green; if (p[0].green > maxColor.green) maxColor.green = p[0].green; } if (p[0].blue < p[1].blue) { if (p[0].blue < minColor.blue) minColor.blue = p[0].blue; if (p[1].blue > maxColor.blue) maxColor.blue = p[1].blue; } else { if (p[1].blue < minColor.blue) minColor.blue = p[1].blue; if (p[0].blue > maxColor.blue) maxColor.blue = p[0].blue; } p += 2; n -= 2; if (--check == 0) { if (((maxColor.red - minColor.red) > threshold) || ((maxColor.green - minColor.green) > threshold) || ((maxColor.blue - minColor.blue) > threshold)) { return false; } if (n > 0) check = checkThresholdFrequence; } } while (n > 0); if (check > 0) { if (((maxColor.red - minColor.red) > threshold) || ((maxColor.green - minColor.green) > threshold) || ((maxColor.blue - minColor.blue) > threshold)) { return false; } } color = (minColor + maxColor) * 0.5f; return true; }