![]() |
http://www.sim.no http://www.coin3d.org |
The SbViewportRegion class is a viewport within a full window.The SbViewportRegion class contains information to represent a subview within a window. It stores information about the origin and size of the subview, aswell as the size of the underlying "full" window. More...
#include <Inventor/SbViewportRegion.h>
Public Member Functions | |
SbViewportRegion (void) | |
SbViewportRegion (short width, short height) | |
SbViewportRegion (SbVec2s winSize) | |
SbViewportRegion (const SbViewportRegion &vpReg) | |
void | setWindowSize (short width, short height) |
void | setWindowSize (SbVec2s winSize) |
void | setViewport (float left, float bottom, float width, float height) |
void | setViewport (SbVec2f origin, SbVec2f size) |
void | setViewportPixels (short left, short bottom, short width, short height) |
void | setViewportPixels (SbVec2s origin, SbVec2s size) |
const SbVec2s & | getWindowSize (void) const |
const SbVec2f & | getViewportOrigin (void) const |
const SbVec2s & | getViewportOriginPixels (void) const |
const SbVec2f & | getViewportSize (void) const |
const SbVec2s & | getViewportSizePixels (void) const |
float | getViewportAspectRatio (void) const |
void | scaleWidth (float ratio) |
void | scaleHeight (float ratio) |
void | setPixelsPerInch (float ppi) |
float | getPixelsPerInch (void) const |
float | getPixelsPerPoint (void) const |
void | print (FILE *file) const |
Friends | |
int | operator== (const SbViewportRegion ®1, const SbViewportRegion ®2) |
int | operator!= (const SbViewportRegion ®1, const SbViewportRegion ®2) |
The SbViewportRegion class is a viewport within a full window.
The SbViewportRegion class contains information to represent a subview within a window. It stores information about the origin and size of the subview, aswell as the size of the underlying "full" window.
Available methods include inquiries and manipulation in both normalized coordinates and pixel coordinates.
Below is a small example showing how the viewport of a viewer class can be modified, within a "proper" Coin and window system context. Hit 'D' or 'U' to move the viewport region 40 pixels down or up, respectively. Click 'Esc' and zoom with left + middle mouse buttons, to see how the region is defined, where no 3D geometry will be visible outside it. Click 'Esc' again to use 'U' and 'D'.
// Copyright (C) 2000-2007 by Systems in Motion. All rights reserved. #include <Inventor/Qt/SoQt.h> #include <Inventor/Qt/viewers/SoQtExaminerViewer.h> #include <Inventor/nodes/SoEventCallback.h> #include <Inventor/nodes/SoSeparator.h> #include <Inventor/nodes/SoCone.h> #include <Inventor/events/SoKeyboardEvent.h> // ************************************************************ static void keypresscbfunc(void * userdata, SoEventCallback * keyboardcb) { SoQtExaminerViewer * viewer = (SoQtExaminerViewer *)userdata; const SoEvent * event = keyboardcb->getEvent(); int shift = 0; if (SO_KEY_PRESS_EVENT(event, U)) { shift = 40; keyboardcb->setHandled(); } else if (SO_KEY_PRESS_EVENT(event, D)) { shift = -40; keyboardcb->setHandled(); } if (keyboardcb->isHandled()) { SbViewportRegion vpr = viewer->getViewportRegion(); SbVec2s size = vpr.getViewportSizePixels(); SbVec2s origin = vpr.getViewportOriginPixels(); origin[1] -= shift; vpr.setViewportPixels(origin, size); viewer->setViewportRegion(vpr); } } // ************************************************************ int main(int argc, char ** argv) { QWidget * window = SoQt::init(argv[0]); SoSeparator * root = new SoSeparator; root->ref(); root->addChild(new SoCone); SoQtExaminerViewer * viewer = new SoQtExaminerViewer(window); SoEventCallback * eventcb = new SoEventCallback; eventcb->addEventCallback(SoKeyboardEvent::getClassTypeId(), keypresscbfunc, viewer); root->insertChild(eventcb, 0); viewer->setViewing(FALSE); viewer->setDecoration(FALSE); viewer->setSceneGraph(root); viewer->show(); SoQt::show(window); SoQt::mainLoop(); delete viewer; root->unref(); return 0; }
SbViewportRegion::SbViewportRegion | ( | void | ) |
The default SbViewportRegion constructor initializes the viewport to fully cover a [100, 100] size window with 72 pixels per inch resolution.
SbViewportRegion::SbViewportRegion | ( | short | width, |
short | height | ||
) |
Construct and initialize an SbViewportRegion instance with the given pixel value window dimensions. The viewport within this window will be set to cover the window completely.
References SoDebugError::postWarning().
SbViewportRegion::SbViewportRegion | ( | SbVec2s | winsizearg | ) |
Construct and initialize an SbViewportRegion instance with the given pixel value window dimensions. The viewport within this window will be set to cover the window completely.
References SoDebugError::postWarning().
SbViewportRegion::SbViewportRegion | ( | const SbViewportRegion & | vpReg | ) |
Copy constructor.
void SbViewportRegion::setWindowSize | ( | short | width, |
short | height | ||
) |
Set the window size in pixels. The viewport rectangle dimensions will stay intact.
References SoDebugError::postWarning(), and SbVec2s::setValue().
Referenced by SoSceneManager::setWindowSize(), and setWindowSize().
void SbViewportRegion::setWindowSize | ( | SbVec2s | winsizearg | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
References SoDebugError::postWarning(), and setWindowSize().
void SbViewportRegion::setViewport | ( | float | left, |
float | bottom, | ||
float | width, | ||
float | height | ||
) |
Set up the origin and size of the viewport region in normalized coordinates.
References SoDebugError::postWarning(), and SbVec2f::setValue().
Referenced by setViewport().
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
References SoDebugError::postWarning(), and setViewport().
void SbViewportRegion::setViewportPixels | ( | short | left, |
short | bottom, | ||
short | width, | ||
short | height | ||
) |
Set up the origin and size of the viewport region in pixel coordinates.
References SoDebugError::postWarning(), and SbVec2f::setValue().
Referenced by SoSceneManager::setOrigin(), SoSceneManager::setSize(), and setViewportPixels().
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
References SoDebugError::postWarning(), and setViewportPixels().
const SbVec2s & SbViewportRegion::getWindowSize | ( | void | ) | const |
Returns window dimensions (which are in absolute (i.e. pixel) coordinates).
Referenced by print(), SoSceneManager::setViewportRegion(), and SoCamera::viewAll().
const SbVec2f & SbViewportRegion::getViewportOrigin | ( | void | ) | const |
Return normalized viewport origin coordinates.
Referenced by print().
const SbVec2s & SbViewportRegion::getViewportOriginPixels | ( | void | ) | const |
Return viewport origin coordinates in pixel values.
References SbVec2s::setValue().
Referenced by SoRayPickAction::computeWorldSpaceRay(), SoEvent::getNormalizedPosition(), SoEvent::getPosition(), SoExtSelection::GLRenderBelowPath(), print(), SoSceneManager::setSize(), and SoSceneManager::setViewportRegion().
const SbVec2f & SbViewportRegion::getViewportSize | ( | void | ) | const |
Returns the normalized viewport size.
Referenced by print(), and SoCamera::viewAll().
const SbVec2s & SbViewportRegion::getViewportSizePixels | ( | void | ) | const |
Returns viewport size in pixel coordinates.
Referenced by SoVectorizeAction::calibrate(), SoRayPickAction::computeWorldSpaceRay(), SoEvent::getNormalizedPosition(), getViewportAspectRatio(), SoText2::GLRender(), SoMarkerSet::GLRender(), SoImage::GLRender(), SoExtSelection::GLRenderBelowPath(), SoCamera::jitter(), print(), SoTabPlaneDragger::reallyAdjustScaleTabSize(), SoSceneManager::setOrigin(), and SoSceneManager::setViewportRegion().
float SbViewportRegion::getViewportAspectRatio | ( | void | ) | const |
Returns the aspect ratio of the viewport region. The aspect ratio is calculated as pixelwidth divided on pixelheight.
References getViewportSizePixels().
Referenced by SoCamera::getViewportBounds(), and print().
void SbViewportRegion::scaleWidth | ( | float | ratio | ) |
Scale the width of the viewport region.
The scale factor should not make the viewport larger than the window. If this happens, the viewport will be clamped.
The scaling will be done around the viewport region center point, but if this causes the viewport origin to be moved below (0,0), the origin coordinates will be clamped.
References SoDebugError::postWarning().
Referenced by SoCamera::getViewportBounds().
void SbViewportRegion::scaleHeight | ( | float | ratio | ) |
Scale the height of the viewport region.
The scale factor should not make the viewport larger than the window. If this happens, the viewport will be clamped.
The scaling will be done around the viewport region center point, but if this causes the viewport origin to be moved below (0,0), the origin coordinates will be clamped.
References SoDebugError::postWarning().
Referenced by SoCamera::getViewportBounds().
void SbViewportRegion::setPixelsPerInch | ( | float | ppi | ) |
Set pixels per inch. Default value is 72.
References SoDebugError::postWarning().
float SbViewportRegion::getPixelsPerInch | ( | void | ) | const |
float SbViewportRegion::getPixelsPerPoint | ( | void | ) | const |
Get pixels per point. A point is defined as something you can put 72 of per inch...
Referenced by print().
void SbViewportRegion::print | ( | FILE * | fp | ) | const |
Dump the state of this object to the file stream. Only works in debug version of library, method does nothing in an optimized compile.
References getPixelsPerInch(), getPixelsPerPoint(), getViewportAspectRatio(), getViewportOrigin(), getViewportOriginPixels(), getViewportSize(), getViewportSizePixels(), getWindowSize(), SbVec2f::print(), and SbVec2s::print().
int operator== | ( | const SbViewportRegion & | reg1, |
const SbViewportRegion & | reg2 | ||
) | [friend] |
Compares two SbViewportRegion instances for equality.
int operator!= | ( | const SbViewportRegion & | reg1, |
const SbViewportRegion & | reg2 | ||
) | [friend] |
Compares two SbViewportRegion instances for inequality.
Copyright © 1998-2007 by Systems in Motion AS. All rights reserved.
Generated on Mon Feb 28 2011 10:12:02 for Coin by Doxygen. 1.7.3