Last active
October 24, 2019 19:11
-
-
Save prisonerjohn/9e17a69cb99aaecce48c91c13d43e1cd to your computer and use it in GitHub Desktop.
Sensing Machines Draw Bounds
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "ofApp.h" | |
void ofApp::setup() | |
{ | |
grabber.setup(640, 480); | |
} | |
void ofApp::update() | |
{ | |
grabber.update(); | |
} | |
void ofApp::draw() | |
{ | |
// Scale and keep aspect ratio. | |
float grabberRatio = grabber.getWidth() / grabber.getHeight(); | |
float windowRatio = ofGetWidth() / (float)ofGetHeight(); | |
// Fill width. | |
float drawWidth = ofGetWidth(); | |
float drawHeight = drawWidth / grabberRatio; | |
// OR | |
// Fill height. | |
//float drawHeight = ofGetHeight(); | |
//float drawWidth = drawHeight * grabberRatio; | |
// Center in window. | |
float drawX = (ofGetWidth() - drawWidth) / 2.0f; | |
float drawY = (ofGetHeight() - drawHeight) / 2.0f; | |
grabber.draw(drawX, drawY, drawWidth, drawHeight); | |
} | |
void ofApp::keyPressed(int key) | |
{ | |
if (key == 'f') | |
{ | |
ofToggleFullscreen(); | |
} | |
else if (key == 'w') | |
{ | |
ofSetFullscreen(false); | |
ofSetWindowShape(grabber.getWidth(), grabber.getHeight()); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "ofApp.h" | |
void ofApp::setup() | |
{ | |
grabber.setup(640, 480); | |
} | |
void ofApp::update() | |
{ | |
grabber.update(); | |
} | |
void ofApp::draw() | |
{ | |
// Scale using ofRectangle | |
ofRectangle drawBounds; | |
drawBounds.set(0, 0, grabber.getWidth(), grabber.getHeight()); | |
// Scale to fill, covering the entire window. | |
drawBounds.scaleTo(ofGetCurrentViewport(), OF_SCALEMODE_FILL); | |
// Draw the grabber image. | |
grabber.draw(drawBounds); | |
// Get a reference to the image pixels. | |
ofPixels& grabberPix = grabber.getPixels(); | |
// Get the color value under the mouse. | |
// Remap from draw space to pixel space. | |
int sampleX = ofMap(ofGetMouseX(), drawBounds.x, drawBounds.width, 0, grabber.getWidth(), true); | |
int sampleY = ofMap(ofGetMouseY(), drawBounds.y, drawBounds.height, 0, grabber.getHeight(), true); | |
ofColor color = grabberPix.getColor(sampleX, sampleY); | |
// Draw a rectangle under the mouse using the pixel color. | |
ofFill(); | |
ofSetColor(color); | |
ofDrawRectangle(ofGetMouseX() - 25, ofGetMouseY() - 25, 50, 50); | |
// Add an outline so we can see the rectangle better. | |
ofNoFill(); | |
ofSetColor(0); | |
ofDrawRectangle(ofGetMouseX() - 25, ofGetMouseY() - 25, 50, 50); | |
ofSetColor(255); | |
} | |
void ofApp::keyPressed(int key) | |
{ | |
if (key == 'f') | |
{ | |
ofToggleFullscreen(); | |
} | |
else if (key == 'w') | |
{ | |
ofSetFullscreen(false); | |
ofSetWindowShape(grabber.getWidth(), grabber.getHeight()); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "ofApp.h" | |
void ofApp::setup() | |
{ | |
grabber.setup(640, 480); | |
} | |
void ofApp::update() | |
{ | |
grabber.update(); | |
} | |
void ofApp::draw() | |
{ | |
// Scale using transform matrices. | |
// Fill width. | |
float scaleRatio = ofGetWidth() / grabber.getWidth(); | |
float drawX = 0; | |
float drawHeight = grabber.getHeight() * scaleRatio; | |
float drawY = (ofGetHeight() - drawHeight) / 2.0f; | |
// OR | |
// Fill height. | |
//float scaleRatio = ofGetHeight() / grabber.getHeight(); | |
//float drawY = 0; | |
//float drawWidth = grabber.getWidth() * scaleRatio; | |
//float drawX = (ofGetWidth() - drawWidth) / 2.0f; | |
ofTranslate(drawX, drawY); | |
ofScale(scaleRatio); | |
grabber.draw(0, 0); | |
} | |
void ofApp::keyPressed(int key) | |
{ | |
if (key == 'f') | |
{ | |
ofToggleFullscreen(); | |
} | |
else if (key == 'w') | |
{ | |
ofSetFullscreen(false); | |
ofSetWindowShape(grabber.getWidth(), grabber.getHeight()); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "ofApp.h" | |
void ofApp::setup() | |
{ | |
grabber.setup(640, 480); | |
} | |
void ofApp::update() | |
{ | |
grabber.update(); | |
} | |
void ofApp::draw() | |
{ | |
// Scale using ofRectangle. | |
ofRectangle drawBounds; | |
drawBounds.set(0, 0, grabber.getWidth(), grabber.getHeight()); | |
// Scale to fit, keeping the entire image visible. | |
drawBounds.scaleTo(ofGetCurrentViewport(), OF_SCALEMODE_FIT); | |
// OR | |
// Scale to fill, covering the entire window. | |
//drawBounds.scaleTo(ofGetCurrentViewport(), OF_SCALEMODE_FILL); | |
grabber.draw(drawBounds); | |
} | |
void ofApp::keyPressed(int key) | |
{ | |
if (key == 'f') | |
{ | |
ofToggleFullscreen(); | |
} | |
else if (key == 'w') | |
{ | |
ofSetFullscreen(false); | |
ofSetWindowShape(grabber.getWidth(), grabber.getHeight()); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "ofApp.h" | |
void ofApp::setup() | |
{ | |
grabber.setup(640, 480); | |
} | |
void ofApp::update() | |
{ | |
grabber.update(); | |
} | |
void ofApp::draw() | |
{ | |
// Scale and stretch. | |
grabber.draw(0, 0, ofGetWidth(), ofGetHeight()); | |
} | |
void ofApp::keyPressed(int key) | |
{ | |
if (key == 'f') | |
{ | |
ofToggleFullscreen(); | |
} | |
else if (key == 'w') | |
{ | |
ofSetFullscreen(false); | |
ofSetWindowShape(grabber.getWidth(), grabber.getHeight()); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#pragma once | |
#include "ofMain.h" | |
class ofApp : public ofBaseApp | |
{ | |
public: | |
void setup(); | |
void update(); | |
void draw(); | |
void keyPressed(int key); | |
ofVideoGrabber grabber; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment