Exemplo n.º 1
0
void EC_VideoSource::PlayerStateChanged(Phonon::State new_state, Phonon::State old_state)
{
    switch (new_state)
    {
        case Phonon::LoadingState:
        {
            break;
        }
        case Phonon::PlayingState:
        {
            break;
        }
        case Phonon::PausedState:
        {
            if (player_->currentTime() == player_->totalTime())
            {
                if (!getlooping())
                {
                    stop_canvas_ = true;
                    UpdateCanvas();
                }
            }
            break;
        }
        case Phonon::StoppedState:
        {
            if (old_state == Phonon::LoadingState && getplaybackState() == PS_Play)
            {
                LogDebug("-- Loading done");
                if (!player_->isPlaying() && !ready_poller_->isActive())
                {
                    Play();
                    UpdateCanvas();
                }
            }
            break;
        }
        case Phonon::ErrorState:
        {
            LogError("Could not open video stream: " + media_object_->errorString().toStdString());
            break;
        }
        case Phonon::BufferingState:
        {
            break;
        }
    }
}
Exemplo n.º 2
0
void wxSFAutoLayout::Layout(wxSFDiagramManager& manager, const wxString& algname)
{
	wxSFLayoutAlgorithm *pAlg = m_mapAlgorithms[ algname ];
	if( pAlg )
	{
		ShapeList lstShapes;
		manager.GetShapes( CLASSINFO(wxSFShapeBase), lstShapes );
		
		// remove all child shapes
		ShapeList::compatibility_iterator it = lstShapes.GetFirst();
		while( it )
		{
			wxSFShapeBase *pShape = it->GetData();
			if( pShape->GetParentShape() || pShape->IsKindOf(CLASSINFO(wxSFLineShape)) )
			{
				lstShapes.DeleteNode( it );
				it = lstShapes.GetFirst();
			}
			else
				it = it->GetNext();
		}
		
		pAlg->DoLayout( lstShapes );
		
		manager.MoveShapesFromNegatives();
		
		if( manager.GetShapeCanvas() ) UpdateCanvas( manager.GetShapeCanvas() );
	}
}
Exemplo n.º 3
0
void Timeline::SetLayerIndex(int index)
{
    if (!mScene || mLayers.size() == 0)
    {
        return;
    }

    if (index < 0)
    {
        index = 0;
    }
    else if (index >= (int)mLayers.size())
    {
        index = (int)mLayers.size() - 1;
    }

    if (index != mLayerIndex)
    {
        mLayerIndex = index;
        for (int i = 0; i < mLayers.size(); ++i)
        {
            mLayers[i]->SetSelected(i == index);
        }
        UpdateCanvas();
    }
}
Exemplo n.º 4
0
void ColorPicker::OnSlide(Slide *slide, int slideId, double pos)
{
	switch(slideId)
	{
	case SL_COLOR:
		{
			int color = pos*255;

			if(fixedColor <= FIX_BLUE)
			{
				switch(fixedColor)
				{
				case FIX_RED:
					r = color;			
					break;
					
				case FIX_GREEN:
					g = color;
					break;
					
				case FIX_BLUE:
					b = color;
					break;
				}

				UpdateSample(r, g, b);
			}
			else
			{
				double H, S, V;
				KrRGBA c;

				RGB_to_HSV(r, g, b, H, S, V);

				switch(fixedColor)
				{					
				case FIX_HUE:					
					c = HSV_to_RGB(color, S, V);
					break;
					
				case FIX_SATURATION:
					c = HSV_to_RGB(H, color, V);					
					break;
					
				case FIX_BRIGHTNESS:
					c = HSV_to_RGB(H, S, color);
					break;
				}

				UpdateSample(c.c.red, c.c.green, c.c.blue);
			}			

			UpdateCanvas(color, fixedColor);
		}
		break;
	}

	
}
Exemplo n.º 5
0
void Timeline::SetFrameIndex(int value)
{
    if (value != mFrameIndex)
    {
        mFrameIndex = value;
        UpdateCanvas();
    }
}
Exemplo n.º 6
0
void ColorPicker::UpdateColorControls()
{
	UpdateSlideColor(r, g, b, fixedColor);

	if(fixedColor <= FIX_BLUE)
	{
		switch(fixedColor)
		{
		case FIX_RED:
			colorSlide->SetPos(r/255.0);
			canvas->SetPointer(b, 255 - g);
			break;
			
		case FIX_GREEN:
			colorSlide->SetPos(g/255.0);
			canvas->SetPointer(b, 255 - r);
			break;
			
		case FIX_BLUE:
			colorSlide->SetPos(b/255.0);
			canvas->SetPointer(r, 255 - g);
			break;
		}
	}
	else
	{
		double H, S, V;
		RGB_to_HSV(r, g, b, H, S, V);		
		
		switch(fixedColor)
		{
		case FIX_HUE:					
			colorSlide->SetPos(H/255.0);
			canvas->SetPointer(S, 255 - V);
			break;
			
		case FIX_SATURATION:
			colorSlide->SetPos(S/255.0);
			canvas->SetPointer(H, 255 - V);
			break;
			
		case FIX_BRIGHTNESS:
			colorSlide->SetPos(V/255.0);
			canvas->SetPointer(H, 255 - S);
			break;
		}
		
	}

	UpdateCanvas(colorSlide->GetPos()*255, fixedColor);
}
Exemplo n.º 7
0
void EC_VideoSource::Play()
{
    if (!video_widget_ || !media_object_)
        return;

    if (media_object_->state() == Phonon::LoadingState && getplaybackState() != PS_Stop)
    {
        if (!ready_poller_->isActive())
            ready_poller_->start(1000);
        return;
    }
    else if (ready_poller_->isActive())
        ready_poller_->stop();
    
    if (media_object_->state() != Phonon::PlayingState || media_object_->state() == Phonon::PausedState)
    {
        if (media_object_->hasVideo() && !player_->isPlaying())
        {
            LogDebug("Play");
            player_->play();
            if (original_size_.isNull())
            {
                original_size_ = player_->size();
                if (original_size_.width() < 1 && original_size_.height() < 1)
                    original_size_ = QSize(0,0);
                else
                    qDebug() << "Original size set: " << original_size_;
            }
            

            start_canvas_ = true;
            UpdateCanvas();
        }
        else
            LogDebug("-- source does not have video, cannot play");
    }
    if (getplaybackState() != PS_Play)        
        playbackState.Set(PS_Play, AttributeChange::LocalOnly);
}
Exemplo n.º 8
0
ColorPicker::ColorPicker(int _r, int _g, int _b)
	: Panel("DlgColorPicker", (GameControl::Get()->Width() - WIDTH)/2, 
				          (GameControl::Get()->Height() - HEIGHT)/2,
						  WIDTH, HEIGHT)
{
	SetModal();

	Text *text;
	Button *button;

	//Title
	text = AddText("Color Picker", CENTER_TEXT, 5);
	int y = DrawHLine(text->Down() + 2);

	//Body
	canvas = new ColorCanvas(this);
	oldColor = new ColorSampleOfPicker(this);
	newColor = new ColorSampleOfPicker(this);

	canvas->SetPos(10, y + 2);	
	
	

	colorSlide = AddSlide(canvas->Right() + 5, canvas->Top(), 20, 256, SL_COLOR);
	colorSlide->SetPos(1.0);


	newColor->SetPos(colorSlide->Right() + 5, colorSlide->Top());
	oldColor->SetPos(newColor->Left(), newColor->Down());

	text = AddText("       Red: ", oldColor->Left(), oldColor->Down() + 16);
	rEdit = AddEditBox(text->Right(), text->Top(), 32); rEdit->SetNumeric(0, 255, 1);

	text = AddText("     Green: ", text->Left(), rEdit->Down() + 2);
	gEdit = AddEditBox(text->Right(), text->Top(), 32); gEdit->SetNumeric(0, 255, 1);

	text = AddText("      Blue: ", text->Left(), gEdit->Down() + 2);
	bEdit = AddEditBox(text->Right(), text->Top(), 32); bEdit->SetNumeric(0, 255, 1);


	text = AddText("       Hue: ", text->Left(), bEdit->Down() + 16);
	hEdit = AddEditBox(text->Right(), text->Top(), 32); hEdit->SetNumeric(0, 359, 1);

	text = AddText("Saturation: ", text->Left(), hEdit->Down() + 2);
	sEdit = AddEditBox(text->Right(), text->Top(), 32); sEdit->SetNumeric(0, 100, 1);

	text = AddText("Brightness: ", text->Left(), sEdit->Down() + 2);
	vEdit = AddEditBox(text->Right(), text->Top(), 32); vEdit->SetNumeric(0, 100, 1);

	listFix = AddListPop(oldColor->Left(), vEdit->Down() + 16, 104, 0, LS_FIX_COLOR);

	//Close
	y = DrawHLine(canvas->Down() + 2);

	button = AddButton("Ok", (WIDTH-135)/2, y, 0, 0, OK_BUTTON); SetConfirmButton(button);
	button = AddButton("Cancel", button->Right()+8, y, 0, 0, CANCEL_BUTTON); SetCancelButton(button);

	

	listFix->AddText("Red");
	listFix->AddText("Green");
	listFix->AddText("Blue");

	listFix->AddText("Hue");
	listFix->AddText("Saturation");
	listFix->AddText("Brightness");

	listFix->SetText("Red");	
	fixedColor = FIX_RED;
	r = _r;
	g = _g;
	b = _b;
	
	oldColor->SetColor(r, g, b);
	

	colorSlide->SetPos(r / 255.0);

	UpdateSample(r, g, b);	
	UpdateCanvas(r, fixedColor);
	UpdateSlideColor(r, g, b, fixedColor);
}
Exemplo n.º 9
0
void EC_VideoSource::UpdateCanvas()
{
    if (!video_widget_ || !media_object_)
        return;

    Scene::Entity* entity = GetParentEntity();
    if (!entity)
    {
        LogError("No parent entity, cannot create/update 3DCanvas");
        return;
    }

    // If entity has no valid mesh or prim yet, start a retry timer and try to set the canvas later
    if ((!entity->GetComponent(EC_Mesh::TypeNameStatic())) && 
        (!entity->GetComponent(EC_OgreCustomObject::TypeNameStatic())))
    {
        LogDebug("Mesh or prim did not exist yet, retrying");
        QTimer::singleShot(500, this, SLOT(UpdateCanvas()));
        return;
    }

    canvas_ = Get3DCanvas();
    if (!canvas_)
    {
        LogError("Could not get 3D Canvas component");
        return;
    }

    // Update widget
    if (canvas_->GetWidget() != player_)
    {
        canvas_->SetWidget(player_);
        LogDebug("Widget set");
    }

    // Update submesh
    int submesh = getsubmeshIndex();
    if (submesh < 0)
        submesh = 0;
    if (!canvas_->GetSubMeshes().contains(submesh))
    {
        canvas_->SetSubmesh(submesh);
        LogDebug("Submesh set");
    }

    // Update refresh rate
    if (getrefreshRate() > 0)
    {
        int ref_rate_msec = 1000 / getrefreshRate();
        if (canvas_->GetRefreshRate() != ref_rate_msec)
        {
            canvas_->SetRefreshRate(getrefreshRate());
            LogDebug("Refresh rate set");
        }
    }
    else
        canvas_->SetRefreshRate(0);

    // Scale down widget
    if (getscaleDown() && player_)
    {
        if (original_size_.isNull())
        {
            original_size_ = player_->size();
            if (original_size_.width() < 1 && original_size_.height() < 1)
                original_size_ = QSize(0,0);
            else
                qDebug() << "Original size set: " << original_size_;
        }

        if (!original_size_.isNull())
        {
            QSize scale_down_size(320, 240);
            if (player_->size().width() > scale_down_size.width() && player_->size().height() > scale_down_size.height())
            {
                //player_->resize(scale_down_size);
                //LogDebug("Scaled video widget down to 320x240 for performance");
            }
        }
    }

    if (start_canvas_)
    {
        canvas_->Start();
        start_canvas_ = false;
        playing_canvas_ = true;
        LogDebug("Started rendering updates");

        if (ready_poller_->isActive())
            ready_poller_->stop();
    }

    if (stop_canvas_)
    {
        canvas_->Stop();
        start_canvas_ = false;
        stop_canvas_ = false;
        playing_canvas_ = false;
        LogDebug("Stoppend rendering updates");
    }
}
Exemplo n.º 10
0
void EC_VideoSource::OnAttributeUpdated(IAttribute *attribute)
{
    if (!video_widget_ || !media_object_)
        return;

    bool update_canvas = false;
    if (attribute->GetNameString() == videoSourceUrl.GetNameString())
    {
        if (!getvideoSourceUrl().isEmpty())
        {
            QString source_string = getvideoSourceUrl();
            QUrl source_url(source_string, QUrl::TolerantMode);
            if (source_url.isValid())
            {
                if (media_object_->currentSource().url() != source_url)
                {
    ///\todo Regression. Reimplement using the new Asset API. -jj.
/*
                    Foundation::AssetServiceInterface *asset_service = GetFramework()->GetService<Foundation::AssetServiceInterface>();
                    if (asset_service)
                    {
                        Foundation::AssetInterfacePtr asset = asset_service->GetAsset(source_string.toStdString(), RexTypes::ASSETTYPENAME_VIDEO);
                        if (asset)
                        {
                            LoadVideo(asset);
                        }
                        else
                        {
                            if (expecting_resources_ == false)
                            {
                                video_request_tag_ = asset_service->RequestAsset(source_string.toStdString(), RexTypes::ASSETTYPENAME_VIDEO);
                                if (video_request_tag_)
                                {
                                    expecting_resources_ = true;
                                    LogDebug("Downloading URL source: " + source_string.toStdString());
                                }
                            }
                        }
                    }
*/
                }
            }
            else if (QFile::exists(getvideoSourceUrl()))
            {
                if (media_object_->currentSource().fileName() != getvideoSourceUrl())
                {
                    player_->load(Phonon::MediaSource(getvideoSourceUrl()));
                    LogDebug("Loading file source: " + getvideoSourceUrl().toStdString());
                }
            }
        }
        else
        {
            if (!media_object_->currentSource().fileName().isEmpty())
            {
                media_object_->clear();
                qDebug() << "-- empty source set, clearing media object";
            }
        }
    }
    else if (attribute->GetNameString() == playbackState.GetNameString())
    {
        if (!videoSourceUrl.Get().isEmpty())
        {
            // Play video if video source url has been set and if sound has been triggered or looped.
            if (getplaybackState() == PS_Play && !playing_canvas_)
            {
                Play();
            }
            else if (getplaybackState() == PS_Stop && playing_canvas_)
            {
                Stop();
                stop_canvas_ = true;
                update_canvas = true;
            }
            else if (getplaybackState() == PS_Pause && playing_canvas_)
            {
                Pause();
                stop_canvas_ = true;
                update_canvas = true;
            }
        }
    }
    else if (attribute->GetNameString() == audioPlaybackVolume.GetNameString())
    {
        qreal volume = getaudioPlaybackVolume();
        if (player_->volume() != volume)
        {
            player_->setVolume(volume);
            LogDebug("Volume set to " + QString::number(volume).toStdString());
        }
    }
    else if (attribute->GetNameString() == refreshRate.GetNameString())
    {
        EC_3DCanvas *canvas = Get3DCanvas();
        if (canvas)
        {
            if (getrefreshRate() > 0)
            {
                int ref_rate_msec = 1000 / getrefreshRate();
                if (canvas->GetRefreshRate() != ref_rate_msec)
                {
                    canvas->SetRefreshRate(getrefreshRate());
                    LogDebug("Refresh rate set");
                }
            }
            else if (canvas->GetRefreshRate() != 0)
                canvas->SetRefreshRate(0);
        }
        else
            LogError("Could not get 3D Canvas component to set refresh rate");
    }
    else if (attribute->GetNameString() == scaleDown.GetNameString())
    {
        if (getscaleDown() && player_)
        {
            original_size_ = player_->size();
            if (original_size_.width() < 1 && original_size_.height() < 1)
                original_size_ = QSize(0,0);
            else
                qDebug() << "Original size set: " << original_size_;

            if (original_size_.width() > 1 && original_size_.height() > 1)
            {
                QSize scale_down_size(320, 240);
                if (player_->size().width() > scale_down_size.width() && player_->size().height() > scale_down_size.height())
                {
                    //player_->resize(scale_down_size);
                    //LogDebug("Scaled video widget down to 320x240 for performance");
                }
            }
        }
        else if (!getscaleDown() && player_)
        {
            if (!original_size_.isNull())
            {
                if (original_size_.width() > 0 && original_size_.height() > 0)
                {
                    if (player_->size().width() > original_size_.width() && player_->size().height() > original_size_.height())
                    {
                        //player_->resize(original_size_);
                        //LogDebug("Restored original video widget size");
                    }
                }
                else
                    original_size_ = QSize(0,0);
            }
        }
    }

    if (update_canvas)
        UpdateCanvas();
}