ofxPiMapper fixed for C++17 & oF 12.0
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

#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