void Scene::Render() { GS->ClearColorBuffer(); for(int i=sceneItems.Num()-1; i>=0; i--) { SceneItem *item = sceneItems[i]; if(item->source && item->bRender) { GS->SetCropping (item->GetCrop().x, item->GetCrop().y, item->GetCrop().w, item->GetCrop().z); item->source->Render(item->pos, item->size); GS->SetCropping (0.0f, 0.0f, 0.0f, 0.0f); } } }
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)); } } }
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 } } }