You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
3.5 KiB
134 lines
3.5 KiB
#include "ProjectionMappingState.h"
|
|
|
|
namespace ofx {
|
|
namespace piMapper {
|
|
|
|
ProjectionMappingState * ProjectionMappingState::_instance = 0;
|
|
|
|
ProjectionMappingState * ProjectionMappingState::instance(){
|
|
if(_instance == 0){
|
|
_instance = new ofx::piMapper::ProjectionMappingState();
|
|
}
|
|
return _instance;
|
|
}
|
|
|
|
void ProjectionMappingState::draw(Application * app){
|
|
app->getGui()->draw();
|
|
}
|
|
|
|
void ProjectionMappingState::onKeyPressed(Application * app, ofKeyEventArgs & args){
|
|
switch(args.key){
|
|
|
|
case 't':
|
|
app->getCmdManager()->exec(
|
|
new AddSurfaceCmd(
|
|
app->getSurfaceManager(),
|
|
SurfaceType::TRIANGLE_SURFACE)
|
|
);
|
|
break;
|
|
|
|
case 'q':
|
|
app->getCmdManager()->exec(
|
|
new AddSurfaceCmd(
|
|
app->getSurfaceManager(),
|
|
SurfaceType::QUAD_SURFACE)
|
|
);
|
|
break;
|
|
|
|
case 'g':
|
|
app->getCmdManager()->exec(
|
|
new AddSurfaceCmd(
|
|
app->getSurfaceManager(),
|
|
SurfaceType::GRID_WARP_SURFACE)
|
|
);
|
|
break;
|
|
|
|
case OF_KEY_BACKSPACE:
|
|
if(app->getSurfaceManager()->getSelectedSurface() == 0){
|
|
break;
|
|
}
|
|
app->getCmdManager()->exec(
|
|
new RmSurfaceCmd(app->getSurfaceManager()));
|
|
break;
|
|
|
|
case 'p':
|
|
if(app->getSurfaceManager()->getSelectedSurface() == 0){
|
|
break;
|
|
}
|
|
|
|
if(app->getSurfaceManager()->getSelectedSurface()->getType() ==
|
|
SurfaceType::QUAD_SURFACE){
|
|
|
|
app->getCmdManager()->exec(
|
|
new TogglePerspectiveCmd(
|
|
(QuadSurface *)app->getSurfaceManager()->getSelectedSurface() ) );
|
|
}
|
|
break;
|
|
|
|
case '}':
|
|
if(app->getSurfaceManager()->getSelectedSurface() != 0){
|
|
if(app->getSurfaceManager()->getSelectedSurface()->getType() ==
|
|
SurfaceType::GRID_WARP_SURFACE){
|
|
|
|
// TODO: The command should not require projection editor pointer
|
|
app->getCmdManager()->exec(
|
|
new AddGridRowCmd(
|
|
(GridWarpSurface *)app->getSurfaceManager()->getSelectedSurface(),
|
|
app->getGui()->getProjectionEditor() ));
|
|
}
|
|
}
|
|
break;
|
|
|
|
case '{':
|
|
if(app->getSurfaceManager()->getSelectedSurface() != 0){
|
|
if(app->getSurfaceManager()->getSelectedSurface()->getType() ==
|
|
SurfaceType::GRID_WARP_SURFACE){
|
|
|
|
if(((GridWarpSurface *)app->getSurfaceManager()->getSelectedSurface())->getGridRows() > 1){
|
|
// TODO: The command should not require projection editor pointer
|
|
app->getCmdManager()->exec(
|
|
new RmGridRowCmd(
|
|
(GridWarpSurface *)app->getSurfaceManager()->getSelectedSurface(),
|
|
app->getGui()->getProjectionEditor() ));
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ']':
|
|
if(app->getSurfaceManager()->getSelectedSurface() != 0){
|
|
if(app->getSurfaceManager()->getSelectedSurface()->getType() ==
|
|
SurfaceType::GRID_WARP_SURFACE){
|
|
|
|
// TODO: The command should not require projection editor pointer
|
|
app->getCmdManager()->exec(
|
|
new AddGridColCmd(
|
|
(GridWarpSurface *)app->getSurfaceManager()->getSelectedSurface(),
|
|
app->getGui()->getProjectionEditor() ));
|
|
}
|
|
}
|
|
break;
|
|
|
|
case '[':
|
|
if(app->getSurfaceManager()->getSelectedSurface() != 0){
|
|
if(app->getSurfaceManager()->getSelectedSurface()->getType() ==
|
|
SurfaceType::GRID_WARP_SURFACE){
|
|
|
|
if(((GridWarpSurface *)app->getSurfaceManager()->getSelectedSurface())->getGridCols() > 1){
|
|
// TODO: The command should not require projection editor pointer
|
|
app->getCmdManager()->exec(
|
|
new RmGridColCmd(
|
|
(GridWarpSurface *)app->getSurfaceManager()->getSelectedSurface(),
|
|
app->getGui()->getProjectionEditor() ));
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
} // namespace piMapper
|
|
} // namespace ofx
|