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.
80 lines
2.7 KiB
80 lines
2.7 KiB
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield |
|
* |
|
* This library is open source and may be redistributed and/or modified under |
|
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or |
|
* (at your option) any later version. The full license is in LICENSE file |
|
* included with this distribution, and on the openscenegraph.org website. |
|
* |
|
* This library is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
* OpenSceneGraph Public License for more details. |
|
*/ |
|
|
|
#ifndef OSG_DRAWPIXELS |
|
#define OSG_DRAWPIXELS 1 |
|
|
|
#include <osg/Drawable> |
|
#include <osg/Vec3> |
|
#include <osg/Image> |
|
|
|
namespace osg { |
|
|
|
/** DrawPixels is an osg::Drawable subclass which encapsulates the drawing of |
|
* images using glDrawPixels.*/ |
|
class OSG_EXPORT DrawPixels : public Drawable |
|
{ |
|
public: |
|
|
|
DrawPixels(); |
|
|
|
/** Copy constructor using CopyOp to manage deep vs shallow copy.*/ |
|
DrawPixels(const DrawPixels& drawimage,const CopyOp& copyop=CopyOp::SHALLOW_COPY); |
|
|
|
virtual Object* cloneType() const { return new DrawPixels(); } |
|
|
|
virtual Object* clone(const CopyOp& copyop) const { return new DrawPixels(*this,copyop); } |
|
|
|
virtual bool isSameKindAs(const Object* obj) const { return dynamic_cast<const DrawPixels*>(obj)!=NULL; } |
|
|
|
virtual const char* libraryName() const { return "osg"; } |
|
virtual const char* className() const { return "DrawPixels"; } |
|
|
|
|
|
void setPosition(const osg::Vec3& position); |
|
|
|
osg::Vec3& getPosition() { return _position; } |
|
const osg::Vec3& getPosition() const { return _position; } |
|
|
|
void setImage(osg::Image* image) { _image = image; } |
|
|
|
osg::Image* getImage() { return _image.get(); } |
|
const osg::Image* getImage() const { return _image.get(); } |
|
|
|
void setUseSubImage(bool useSubImage) { _useSubImage=useSubImage; } |
|
bool getUseSubImage() const { return _useSubImage; } |
|
|
|
void setSubImageDimensions(unsigned int offsetX,unsigned int offsetY,unsigned int width,unsigned int height); |
|
void getSubImageDimensions(unsigned int& offsetX,unsigned int& offsetY,unsigned int& width,unsigned int& height) const; |
|
|
|
virtual void drawImplementation(RenderInfo& renderInfo) const; |
|
|
|
virtual BoundingBox computeBound() const; |
|
|
|
protected: |
|
|
|
DrawPixels& operator = (const DrawPixels&) { return *this;} |
|
|
|
virtual ~DrawPixels(); |
|
|
|
Vec3 _position; |
|
ref_ptr<Image> _image; |
|
|
|
bool _useSubImage; |
|
unsigned int _offsetX, _offsetY, _width, _height; |
|
|
|
}; |
|
|
|
} |
|
|
|
#endif
|
|
|