Browse Source

Initial fullscreen Quad support

master
Pierre Proske 5 years ago
committed by Krisjanis Rijnieks
parent
commit
ffbaf58986
  1. 11
      src/Application/Application.cpp
  2. 2
      src/Application/Application.h
  3. 25
      src/Commands/FullscreenSurfaceCmd.cpp
  4. 29
      src/Commands/FullscreenSurfaceCmd.h
  5. 1
      src/Surfaces/BaseSurface.h
  6. 4
      src/Surfaces/GridWarpSurface.cpp
  7. 1
      src/Surfaces/GridWarpSurface.h
  8. 4
      src/Surfaces/HexagonSurface.cpp
  9. 1
      src/Surfaces/HexagonSurface.h
  10. 11
      src/Surfaces/QuadSurface.cpp
  11. 1
      src/Surfaces/QuadSurface.h
  12. 1
      src/Surfaces/SurfaceManager.h
  13. 4
      src/Surfaces/TriangleSurface.cpp
  14. 1
      src/Surfaces/TriangleSurface.h

11
src/Application/Application.cpp

@ -144,6 +144,10 @@ void Application::onKeyPressed(ofKeyEventArgs & args){
setNextPreset();
break;
case 'F':
setFullscreenSurface();
break;
default:
// All the other keypresses are handled by the application state onKeyPressed
_state->onKeyPressed(this, args);
@ -465,6 +469,13 @@ void Application::duplicateSurface(){
}
}
void Application::setFullscreenSurface(){
if(getSurfaceManager()->getSelectedSurface() != 0){
getCmdManager()->exec(
new FullscreenSurfaceCmd(getSurfaceManager()->getSelectedSurface()));
}
}
void Application::setNextSource(){
if(getSurfaceManager()->getSelectedSurface() != 0){
getCmdManager()->exec(

2
src/Application/Application.h

@ -22,6 +22,7 @@
#include "MvLayerUpCmd.h"
#include "MvLayerDnCmd.h"
#include "DuplicateSurfaceCmd.h"
#include "FullscreenSurfaceCmd.h"
#include "TogglePerspectiveCmd.h"
#include "SetNextSourceCmd.h"
#include "ScaleSurfaceFromToCmd.h"
@ -129,6 +130,7 @@ class Application {
void scaleUp();
void scaleDown();
void duplicateSurface();
void setFullscreenSurface();
void setNextSource();
void setFboSource(std::string sourceId);
void setVideoSource(std::string fileName, bool loop);

25
src/Commands/FullscreenSurfaceCmd.cpp

@ -0,0 +1,25 @@
#include "FullscreenSurfaceCmd.h"
namespace ofx {
namespace piMapper {
FullscreenSurfaceCmd::FullscreenSurfaceCmd(BaseSurface * surface){
_surface = surface;
}
void FullscreenSurfaceCmd::exec(){
ofLogNotice("FullscreenSurfaceCmd", "exec");
_previousVertices = _surface->getVertices();
_surface->fullScreen();
}
void FullscreenSurfaceCmd::undo(){
ofLogNotice("FullscreenSurfaceCmd", "undo");
for(int i = 0; i < _surface->getVertices().size(); i++){
_surface->setVertex(i,_previousVertices[i]);
}
}
} // namespace piMapper
} // namespace ofx

29
src/Commands/FullscreenSurfaceCmd.h

@ -0,0 +1,29 @@
// FullscreenSurfaceCmd
// Makes selected surface resize to fit the screen
// Created by Pierre Proske 25-03-2020
#pragma once
#include "BaseCmd.h"
#include "BaseSurface.h"
#include "SurfaceManager.h"
#include "Vec3.h"
namespace ofx {
namespace piMapper {
class FullscreenSurfaceCmd : public BaseUndoCmd {
public:
FullscreenSurfaceCmd(BaseSurface * surface);
void exec();
void undo();
private:
BaseSurface * _surface;
std::vector<Vec3> _previousVertices;
};
} // namespace piMapper
} // namespace ofx

1
src/Surfaces/BaseSurface.h

@ -24,6 +24,7 @@ class BaseSurface {
virtual void setTexCoord(int index, Vec2 t) = 0;
virtual void setTexCoords(std::vector<Vec2> t) = 0;
virtual void moveBy(Vec3 v) = 0;
virtual void fullScreen() = 0;
virtual int getType() = 0;
virtual bool hitTest(Vec2 p) = 0;
virtual ofPolyline getHitArea() = 0;

4
src/Surfaces/GridWarpSurface.cpp

@ -40,6 +40,10 @@ void GridWarpSurface::moveBy(Vec3 v){
ofNotifyEvent(verticesChangedEvent, vertices, this);
}
void GridWarpSurface::fullScreen(){
}
int GridWarpSurface::getType(){
return SurfaceType::GRID_WARP_SURFACE;
}

1
src/Surfaces/GridWarpSurface.h

@ -17,6 +17,7 @@ class GridWarpSurface : public BaseSurface {
void setup(){};
void draw();
void moveBy(Vec3 v);
void fullScreen();
int getType();
int getGridRows();

4
src/Surfaces/HexagonSurface.cpp

@ -156,6 +156,10 @@ void HexagonSurface::moveBy(Vec3 v){
ofNotifyEvent(verticesChangedEvent, vertices, this);
}
void HexagonSurface::fullScreen(){
}
int HexagonSurface::getType(){
return SurfaceType::HEXAGON_SURFACE;
}

1
src/Surfaces/HexagonSurface.h

@ -26,6 +26,7 @@ class HexagonSurface : public BaseSurface {
void setTexCoord(int index, Vec2 t);
void setTexCoords(std::vector<Vec2> t);
void moveBy(Vec3 v);
void fullScreen();
int getType();
bool hitTest(Vec2 p);

11
src/Surfaces/QuadSurface.cpp

@ -177,6 +177,17 @@ void QuadSurface::moveBy(Vec3 v){
ofNotifyEvent(verticesChangedEvent, vertices, this);
}
void QuadSurface::fullScreen(){
mesh.getVertices()[0] = Vec3(0, 0, 0.0f).toOf();
mesh.getVertices()[1] = Vec3((float)ofGetWidth(), 0, 0.0f).toOf();
mesh.getVertices()[2] = Vec3((float)ofGetWidth(), (float)ofGetHeight(), 0.0f).toOf();
mesh.getVertices()[3] = Vec3(0, (float)ofGetHeight(), 0.0f).toOf();
setMoved(true);
std::vector<Vec3> vertices = Vec3::fromOf(mesh.getVertices());
ofNotifyEvent(verticesChangedEvent, vertices, this);
}
int QuadSurface::getType(){
return SurfaceType::QUAD_SURFACE;
}

1
src/Surfaces/QuadSurface.h

@ -26,6 +26,7 @@ class QuadSurface : public BaseSurface {
void setTexCoord(int index, Vec2 t);
void setTexCoords(std::vector<Vec2> t);
void moveBy(Vec3 v);
void fullScreen();
int getType();
bool hitTest(Vec2 p);

1
src/Surfaces/SurfaceManager.h

@ -51,6 +51,7 @@ class SurfaceManager {
void selectPrevVertex();
void selectVertex(int i);
void fullscreenSurface();
void moveSelectionBy(Vec3 v);
void moveAllSurfacesBy(Vec3 v);

4
src/Surfaces/TriangleSurface.cpp

@ -115,6 +115,10 @@ void TriangleSurface::moveBy(Vec3 v){
ofNotifyEvent(verticesChangedEvent, vertices, this);
}
void TriangleSurface::fullScreen(){
}
int TriangleSurface::getType(){
return SurfaceType::TRIANGLE_SURFACE;
}

1
src/Surfaces/TriangleSurface.h

@ -24,6 +24,7 @@ class TriangleSurface : public BaseSurface {
void setTexCoord(int index, Vec2 t);
void setTexCoords(std::vector<Vec2> t);
void moveBy(Vec3 v);
void fullScreen();
int getType();
bool hitTest(Vec2 p);

Loading…
Cancel
Save