Ejemplo n.º 1
0
/// 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;
}
Ejemplo n.º 2
0
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();
}
Ejemplo n.º 3
0
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++;

    }

}
Ejemplo n.º 4
0
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);
}
Ejemplo n.º 5
0
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;
}