Skip to content

Instantly share code, notes, and snippets.

@prisonerjohn
Last active October 24, 2019 19:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save prisonerjohn/9e17a69cb99aaecce48c91c13d43e1cd to your computer and use it in GitHub Desktop.
Save prisonerjohn/9e17a69cb99aaecce48c91c13d43e1cd to your computer and use it in GitHub Desktop.
Sensing Machines Draw Bounds
#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());
}
}
#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());
}
}
#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());
}
}
#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());
}
}
#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());
}
}
#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