コード例 #1
0
ファイル: Scene.cpp プロジェクト: jmkstewart/OBS
void Scene::RenderSelections(Shader *solidPixelShader)
{
    for(UINT i=0; i<sceneItems.Num(); i++)
    {
        SceneItem *item = sceneItems[i];

        if(item->bSelected)
        {
            Vect2 pos  = API->MapFrameToWindowPos(item->GetPos())+1.0f;
            Vect2 scale = API->GetFrameToWindowScale();
            pos.x += item->GetCrop().w * scale.x;
            pos.y += item->GetCrop().x * scale.y;
            Vect2 size = API->MapFrameToWindowSize(item->GetSize())-2.0f;
            size.x -= (item->GetCrop().y + item->GetCrop().w) * scale.x;
            size.y -= (item->GetCrop().x + item->GetCrop().z) * scale.y;
            
            Vect2 selectBoxSize = Vect2(10.0f, 10.0f);
            
            DrawBox(pos, selectBoxSize);
            DrawBox((pos+size)-selectBoxSize, selectBoxSize);
            DrawBox(pos+Vect2(size.x-selectBoxSize.x, 0.0f), selectBoxSize);
            DrawBox(pos+Vect2(0.0f, size.y-selectBoxSize.y), selectBoxSize);
            

            // Top
            if (CloseFloat(item->crop.x, 0.0f)) solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0xFF0000);
            else solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0x00FF00);
            DrawBox(pos, Vect2(size.x, 0.0f));

            // Left
            if (CloseFloat(item->crop.w, 0.0f)) solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0xFF0000);
            else solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0x00FF00);
            DrawBox(pos, Vect2(0.0f, size.y));

            // Right
            if (CloseFloat(item->crop.y, 0.0f)) solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0xFF0000);
            else solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0x00FF00);
            DrawBox(pos+Vect2(size.x, 0.0f), Vect2(0.0f, size.y));

            // Bottom
            if (CloseFloat(item->crop.z, 0.0f)) solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0xFF0000);
            else solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0x00FF00);
            DrawBox(pos+Vect2(0.0f, size.y), Vect2(size.x, 0.0f));
        }
    }
}
コード例 #2
0
ファイル: Scene.cpp プロジェクト: Soopah/OBS
void Scene::RenderSelections()
{
    for(UINT i=0; i<sceneItems.Num(); i++)
    {
        SceneItem *item = sceneItems[i];
        if(item->bSelected)
        {
            Vect2 pos  = API->MapFrameToWindowPos(item->GetPos())+1.0f;
            Vect2 size = API->MapFrameToWindowSize(item->GetSize())-2.0f;
            Vect2 selectBoxSize = Vect2(10.0f, 10.0f);

            DrawBox(pos, selectBoxSize);
            DrawBox((pos+size)-selectBoxSize, selectBoxSize);
            DrawBox(pos+Vect2(size.x-selectBoxSize.x, 0.0f), selectBoxSize);
            DrawBox(pos+Vect2(0.0f, size.y-selectBoxSize.y), selectBoxSize);
            DrawBox(pos, size);
        }
    }
}
コード例 #3
0
ファイル: Scene.cpp プロジェクト: 373137461/OBS
void Scene::RenderSelections(Shader *solidPixelShader)
{
    for(UINT i=0; i<sceneItems.Num(); i++)
    {
        SceneItem *item = sceneItems[i];

        if(item->bSelected)
        {
            Vect2 baseScale = item->GetSource() ? item->GetSource()->GetSize() : item->GetSize();
            Vect2 cropFactor = baseScale / item->GetSize();
            Vect4 crop = item->GetCrop();
            Vect2 pos  = API->MapFrameToWindowPos(item->GetPos());
            Vect2 scale = API->GetFrameToWindowScale();
            crop.x *= scale.x; crop.y *= scale.y;
            crop.z *= scale.y; crop.w *= scale.x;
            pos.x += crop.x;
            pos.y += crop.y;
            Vect2 size = API->MapFrameToWindowSize(item->GetSize());
            size.x -= (crop.x + crop.w);
            size.y -= (crop.y + crop.z);
            Vect2 selectBoxSize = Vect2(10.0f, 10.0f);
            
            DrawBox(pos, selectBoxSize);
            DrawBox((pos+size)-selectBoxSize, selectBoxSize);
            DrawBox(pos+Vect2(size.x-selectBoxSize.x, 0.0f), selectBoxSize);
            DrawBox(pos+Vect2(0.0f, size.y-selectBoxSize.y), selectBoxSize);

            // Top
            if (CloseFloat(crop.y, 0.0f)) solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0xFF0000);
            else solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0x00FF00);
            DrawBox(pos, Vect2(size.x, 0.0f));

            // Left
            if (CloseFloat(crop.x, 0.0f)) solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0xFF0000);
            else solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0x00FF00);
            DrawBox(pos, Vect2(0.0f, size.y));

            // Right
            if (CloseFloat(crop.w, 0.0f)) solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0xFF0000);
            else solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0x00FF00);
            DrawBox(pos+Vect2(size.x, 0.0f), Vect2(0.0f, size.y));

            // Bottom
            if (CloseFloat(crop.z, 0.0f)) solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0xFF0000);
            else solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0x00FF00);
            DrawBox(pos+Vect2(0.0f, size.y), Vect2(size.x, 0.0f));

//#define DRAW_UNCROPPED_SELECTION_BOX
#ifdef DRAW_UNCROPPED_SELECTION_BOX
            Vect2 realPos = API->MapFrameToWindowPos(item->GetPos());
            Vect2 realSize = item->GetSize() * scale;
            solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0xFFFFFF);
            solidPixelShader->SetColor(solidPixelShader->GetParameter(0), 0xFFFFFF);
            DrawBox(realPos, Vect2(0.0f, realSize.y));
            DrawBox(realPos, Vect2(realSize.x, 0.0f));
            DrawBox(realPos+Vect2(realSize.x, 0.0f), Vect2(0.0f, realSize.y));
            DrawBox(realPos+Vect2(0.0f, realSize.y), Vect2(realSize.x, 0.0f));
#endif
        }
    }
}