Hi Per,

The variable names are description of their role so removing them
completely is inappropriate.  What I have done is put /* */ around the
variables to prevent the warning, but to keep the names.  Once I have
a clean build I'll check this in.

Robert.

On Thu, Dec 18, 2008 at 7:12 AM, Per Fahlberg <[email protected]> wrote:
> Hi,
>
> When compiling with gcc and the -Wall flag a lot of warnings are generated
> because of unused variables in the Image header file, I've removed the
> variables in the attached Image file.
>
> Regards,
> Per
>
> /* -*-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_IMAGE
> #define OSG_IMAGE 1
>
> #include <osg/BufferObject>
> #include <osg/Vec2>
> #include <osg/Vec3>
> #include <osg/Vec4>
> #include <osg/FrameStamp>
>
> #include <string>
> #include <vector>
>
> #ifndef GL_VERSION_1_2
>    // 1.2 definitions...
>    #define GL_BGR                          0x80E0
>    #define GL_BGRA                         0x80E1
>    #define GL_UNSIGNED_BYTE_3_3_2          0x8032
>    #define GL_UNSIGNED_BYTE_2_3_3_REV      0x8362
>    #define GL_UNSIGNED_SHORT_5_6_5         0x8363
>    #define GL_UNSIGNED_SHORT_5_6_5_REV     0x8364
>    #define GL_UNSIGNED_SHORT_4_4_4_4       0x8033
>    #define GL_UNSIGNED_SHORT_4_4_4_4_REV   0x8365
>    #define GL_UNSIGNED_SHORT_5_5_5_1       0x8034
>    #define GL_UNSIGNED_SHORT_1_5_5_5_REV   0x8366
>    #define GL_UNSIGNED_INT_8_8_8_8         0x8035
>    #define GL_UNSIGNED_INT_8_8_8_8_REV     0x8367
>    #define GL_UNSIGNED_INT_10_10_10_2      0x8036
>    #define GL_UNSIGNED_INT_2_10_10_10_REV  0x8368
> #endif
>
> #ifndef GL_COMPRESSED_ALPHA
>    #define GL_COMPRESSED_ALPHA             0x84E9
>    #define GL_COMPRESSED_LUMINANCE         0x84EA
>    #define GL_COMPRESSED_LUMINANCE_ALPHA   0x84EB
>    #define GL_COMPRESSED_INTENSITY         0x84EC
>    #define GL_COMPRESSED_RGB               0x84ED
>    #define GL_COMPRESSED_RGBA              0x84EE
> #endif
>
>
> #ifndef GL_ABGR_EXT
> #define GL_ABGR_EXT                         0x8000
> #endif
>
> namespace osg {
>
> // forward declare
> class NodeVisitor;
>
> /** Image class for encapsulating the storage texture image data. */
> class OSG_EXPORT Image : public Object
> {
>
>    public :
>
>        Image();
>
>        /** Copy constructor using CopyOp to manage deep vs shallow copy. */
>        Image(const Image& image,const CopyOp& copyop=CopyOp::SHALLOW_COPY);
>
>        virtual Object* cloneType() const { return new Image(); }
>        virtual Object* clone(const CopyOp& copyop) const { return new
> Image(*this,copyop); }
>        virtual bool isSameKindAs(const Object* obj) const { return
> dynamic_cast<const Image*>(obj)!=0; }
>        virtual const char* libraryName() const { return "osg"; }
>        virtual const char* className() const { return "Image"; }
>
>        /** Return -1 if *this < *rhs, 0 if *this==*rhs, 1 if *this>*rhs. */
>        virtual int compare(const Image& rhs) const;
>
>        void setFileName(const std::string& fileName);
>        inline const std::string& getFileName() const { return _fileName; }
>
>        enum WriteHint {
>            NO_PREFERENCE,
>            STORE_INLINE,
>            EXTERNAL_FILE
>        };
>
>        void setWriteHint(WriteHint writeHint) { _writeHint = writeHint; }
>        WriteHint getWriteHint() const { return _writeHint; }
>
>        enum AllocationMode {
>            NO_DELETE,
>            USE_NEW_DELETE,
>            USE_MALLOC_FREE
>        };
>
>        /** Set the method used for deleting data once it goes out of scope.
> */
>        void setAllocationMode(AllocationMode mode) { _allocationMode = mode;
> }
>
>        /** Get the method used for deleting data once it goes out of scope.
> */
>        AllocationMode getAllocationMode() const { return _allocationMode; }
>
>
>        /** Allocate a pixel block of specified size and type. */
>        void allocateImage(int s,int t,int r,
>                           GLenum pixelFormat,GLenum type,
>                           int packing=1);
>
>
>        /** Set the image dimensions, format and data. */
>        void setImage(int s,int t,int r,
>                      GLint internalTextureformat,
>                      GLenum pixelFormat,GLenum type,
>                      unsigned char* data,
>                      AllocationMode mode,
>                      int packing=1);
>
>        /** Read pixels from current frame buffer at specified position and
> size, using glReadPixels.
>          * Create memory for storage if required, reuse existing pixel
> coords if possible.
>        */
>        void readPixels(int x,int y,int width,int height,
>                        GLenum pixelFormat,GLenum type);
>
>
>        /** Read the contents of the current bound texture, handling
> compressed pixelFormats if present.
>          * Create memory for storage if required, reuse existing pixel
> coords if possible.
>        */
>        void readImageFromCurrentTexture(unsigned int contextID, bool
> copyMipMapsIfAvailable, GLenum type = GL_UNSIGNED_BYTE);
>
>
>        /** Scale image to specified size. */
>        void scaleImage(int s,int t,int r) { scaleImage(s,t,r,
> getDataType()); }
>
>        /** Scale image to specified size and with specified data type. */
>        void scaleImage(int s,int t,int r, GLenum newDataType);
>
>        /** Copy a source Image into a subpart of this Image at specified
> position.
>          * Typically used to copy to an already allocated image, such as
> creating
>          * a 3D image from a stack 2D images.
>          * If this Image is empty then image data is created to
>          * accomodate the source image in its offset position.
>          * If source is NULL then no operation happens, this Image is left
> unchanged.
>        */
>        void copySubImage(int s_offset,int t_offset,int r_offset,osg::Image*
> source);
>
>
>        enum Origin
>        {
>            BOTTOM_LEFT,
>            TOP_LEFT
>        };
>
>        /** Set the origin of the image.
>          * The default value is BOTTOM_LEFT and is consistent with OpenGL.
>          * TOP_LEFT is used for imagery that follows standard Imagery
> convention, such as movies,
>          * and hasn't been flipped yet.  For such images one much flip the t
> axis of the tex coords.
>          * to handle this origin position. */
>        void setOrigin(Origin origin) { _origin = origin; }
>
>        /** Get the origin of the image.*/
>        Origin getOrigin() const { return _origin; }
>
>
>        /** Width of image. */
>        inline int s() const { return _s; }
>
>        /** Height of image. */
>        inline int t() const { return _t; }
>
>        /** Depth of image. */
>        inline int r() const { return _r; }
>
>        void setInternalTextureFormat(GLint internalFormat);
>        inline GLint getInternalTextureFormat() const { return
> _internalTextureFormat; }
>
>        void setPixelFormat(GLenum pixelFormat);
>        inline GLenum getPixelFormat() const { return _pixelFormat; }
>
>        void setDataType(GLenum dataType);
>        inline GLenum getDataType() const { return _dataType; }
>
>        void setPacking(unsigned int packing) { _packing = packing; }
>        inline unsigned int getPacking() const { return _packing; }
>
>        /** Return the number of bits required for each pixel. */
>        inline unsigned int getPixelSizeInBits() const { return
> computePixelSizeInBits(_pixelFormat,_dataType); }
>
>        /** Return the number of bytes each row of pixels occupies once it
> has been packed. */
>        inline unsigned int getRowSizeInBytes() const { return
> computeRowWidthInBytes(_s,_pixelFormat,_dataType,_packing); }
>
>        /** Return the number of bytes each image (_s*_t) of pixels occupies.
> */
>        inline unsigned int getImageSizeInBytes() const { return
> getRowSizeInBytes()*_t; }
>
>        /** Return the number of bytes the whole row/image/volume of pixels
> occupies. */
>        inline unsigned int getTotalSizeInBytes() const { return
> getImageSizeInBytes()*_r; }
>
>        /** Return the number of bytes the whole row/image/volume of pixels
> occupies, including all mip maps if included. */
>        unsigned int getTotalSizeInBytesIncludingMipmaps() const;
>
>        /** Return true if the Image represent a valid and usable imagery.*/
>        bool valid() const { return _s!=0 && _t!=0 && _r!=0 && _data!=0 &&
> _dataType!=0; }
>
>        /** Raw image data. */
>        inline unsigned char* data() { return _data; }
>
>        /** Raw const image data. */
>        inline const unsigned char* data() const { return _data; }
>
>
>        inline unsigned char* data(int column, int row=0,int image=0)
>        {
>            if (!_data) return NULL;
>            return
> _data+(column*getPixelSizeInBits())/8+row*getRowSizeInBytes()+image*getImageSizeInBytes();
>        }
>
>        inline const unsigned char* data(int column, int row=0,int image=0)
> const
>        {
>            if (!_data) return NULL;
>            return
> _data+(column*getPixelSizeInBits())/8+row*getRowSizeInBytes()+image*getImageSizeInBytes();
>        }
>
>        /** Get the color value for specified texcoord.*/
>        Vec4 getColor(unsigned int s,unsigned t=0,unsigned r=0) const;
>
>        /** Get the color value for specified texcoord.*/
>        Vec4 getColor(const Vec2& texcoord) const { return
> getColor(Vec3(texcoord.x(),texcoord.y(),0.0f)); }
>
>        /** Get the color value for specified texcoord.*/
>        Vec4 getColor(const Vec3& texcoord) const;
>
>
>        /** Flip the image horizontally. */
>        void flipHorizontal();
>
>        /** Flip the image vertically. */
>        void flipVertical();
>
>
>        /** Ensure image dimensions are a power of two.
>          * Mipmapped textures require the image dimensions to be
>          * power of two and are within the maxiumum texture size for
>          * the host machine.
>        */
>        void ensureValidSizeForTexturing(GLint maxTextureSize);
>
>        /** Dirty the image, which increments the modified count, to force
> osg::Texture to reload the image. */
>        inline void dirty() { ++_modifiedCount; if (_bufferObject.valid())
> _bufferObject->dirty(); }
>
>        /** Set the modified count value. Used by osg::Texture when using
> texture subloading. */
>        inline void setModifiedCount(unsigned int value) {
> _modifiedCount=value; }
>
>        /** Get modified count value. Used by osg::Texture when using texture
> subloading. */
>        inline unsigned int getModifiedCount() const { return _modifiedCount;
> }
>
>
>        static bool isPackedType(GLenum type);
>        static GLenum computePixelFormat(GLenum pixelFormat);
>        static GLenum computeFormatDataType(GLenum pixelFormat);
>        static unsigned int computeNumComponents(GLenum pixelFormat);
>        static unsigned int computePixelSizeInBits(GLenum pixelFormat,GLenum
> type);
>        static unsigned int computeRowWidthInBytes(int width,GLenum
> pixelFormat,GLenum type,int packing);
>        static int computeNearestPowerOfTwo(int s,float bias=0.5f);
>        static int computeNumberOfMipmapLevels(int s,int t = 1, int r = 1);
>
>        /** Precomputed mipmaps stuff. */
>        typedef std::vector< unsigned int > MipmapDataType;
>
>        inline bool isMipmap() const {return !_mipmapData.empty();};
>
>        unsigned int getNumMipmapLevels() const
>        {
>            return _mipmapData.size()+1;
>        };
>
>        /** Send offsets into data. It is assumed that first mipmap offset
> (index 0) is 0.*/
>        inline void setMipmapLevels(const MipmapDataType& mipmapDataVector) {
> _mipmapData = mipmapDataVector; }
>
>        inline const MipmapDataType& getMipmapLevels() const { return
> _mipmapData; }
>
>        inline unsigned int getMipmapOffset(unsigned int mipmapLevel) const
>        {
>            if(mipmapLevel == 0)
>                return 0;
>            else if (mipmapLevel < getNumMipmapLevels())
>               return _mipmapData[mipmapLevel-1];
>            return 0;
>        };
>
>        inline unsigned char* getMipmapData(unsigned int mipmapLevel)
>        {
>           return _data+getMipmapOffset(mipmapLevel);
>        }
>
>        inline const unsigned char* getMipmapData(unsigned int mipmapLevel)
> const
>        {
>           return _data+getMipmapOffset(mipmapLevel);
>        }
>
>        /*inline const unsigned char* getMipmapData(unsigned int row,
> unsigned int column, unsigned int mipmapLevel) const
>        {
>           if (!_data) return NULL;
>           return getMipmapData(mipmapLevel) +
> (column*getPixelSizeInBits())/8+row*getRowSizeInBytes();
>        }*/
>
>        /** Return true if this image is translucent - i.e. it has alpha
> values that are less 1.0 (when normalized). */
>        bool isImageTranslucent() const;
>
>        /** Set the optional PixelBufferObject used to map the image memory
> efficiently to graphics memory. */
>        void setPixelBufferObject(PixelBufferObject* buffer) { _bufferObject
> = buffer; if (_bufferObject.valid()) _bufferObject->setImage(this); }
>
>        /** Get the PixelBufferObject.*/
>        PixelBufferObject* getPixelBufferObject() { return
> _bufferObject.get(); }
>
>        /** Get the const PixelBufferObject.*/
>        const PixelBufferObject* getPixelBufferObject() const { return
> _bufferObject.get(); }
>
>        virtual void update(NodeVisitor*) {}
>
>
>        /** method for sending pointer events to images that are acting as
> front ends to interactive surfaces such as a vnc or browser window.  Return
> true if handled. */
>        virtual bool sendPointerEvent(int, int, int) { return false; }
>
>        /** method for sending key events to images that are acting as front
> ends to interactive surfaces such as a vnc or browser window.  Return true
> if handled.*/
>        virtual bool sendKeyEvent(int, bool) { return false; }
>
>        /** method for passing frame information to the custom Image classes,
> to be called only when objects associated with imagery are not culled.*/
>        virtual void setFrameLastRendered(const osg::FrameStamp*) {}
>
>    protected :
>
>        virtual ~Image();
>
>        Image& operator = (const Image&) { return *this; }
>
>        std::string _fileName;
>        WriteHint   _writeHint;
>
>
>        Origin _origin;
>
>        int _s, _t, _r;
>        GLint _internalTextureFormat;
>        GLenum _pixelFormat;
>        GLenum _dataType;
>        unsigned int _packing;
>
>        AllocationMode _allocationMode;
>        unsigned char* _data;
>
>        void deallocateData();
>
>        void setData(unsigned char* data,AllocationMode allocationMode);
>
>        unsigned int _modifiedCount;
>
>        MipmapDataType _mipmapData;
>
>        ref_ptr<PixelBufferObject> _bufferObject;
> };
>
> class Geode;
>
> /** Convenience function to be used by image loaders to generate a valid
> geode
>  * to return for readNode().
>  * Use the image's s and t values to scale the dimensions of the image.
> */
> extern OSG_EXPORT Geode* createGeodeForImage(Image* image);
> /** Convenience function to be used by image loaders to generate a valid
> geode
>  * to return for readNode().
>  * Use the specified s and t values to scale the dimensions of the image.
> */
> extern OSG_EXPORT Geode* createGeodeForImage(Image* image,float s,float t);
>
> }
>
> #endif                                            // __SG_IMAGE_H
>
> _______________________________________________
> osg-submissions mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>
>
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to