Robert, there have been several submissions in the past few weeks:  e.g.
osgParticle ParticleSystem and ModularEmitter in different coordinate
systems
Platform independent matrix multiplicationoptimization

Can you please give us an update on which ones are postponed and which ones
have been rejected.  I'd like to be able to glv the souce directly again
soon.
I realize you have been busy with other things, but when I saw this reply...
I am confused as to what happen with the older submissions.


----- Original Message ----- 
From: "Robert Osfield" <[EMAIL PROTECTED]>
To: "OpenSceneGraph Submissions" <[email protected]>
Sent: Monday, September 15, 2008 5:58 AM
Subject: Re: [osg-submissions] win32 msvc 2005 compile fix


> Thanks Ralf, compile fix now merged and submitted to SVN.
>
> On Mon, Sep 15, 2008 at 7:45 AM, Ralf Habacker <[EMAIL PROTECTED]>
wrote:
> > Hi,
> >
> > on windows using msvc2005 express edition i recognized a compile error.
> >
> > In the include/osgTerrain/Layer <cid:[email protected]>
> > there is a class CompositeLayer which implementes the non virtual method
> >
> >     void clear();
> >
> > Then in the class SwitchLayer which is derived from CompositeLayer this
> > method is declared too, which results into a compile error.
> >
> > The appended file contains the fix for this issue by removing the method
> > declaration in class SwitchLayer.
> >
> > Ralf
> >
> >
> >
> >
> >
> > /* -*-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 OSGTERRAIN_LAYER
> > #define OSGTERRAIN_LAYER 1
> >
> > #include <osg/Image>
> > #include <osg/Shape>
> > #include <osg/Array>
> > #include <osg/TransferFunction>
> >
> > #include <osgTerrain/Locator>
> > #include <osgTerrain/ValidDataOperator>
> >
> > namespace osgTerrain {
> >
> > #define MAXIMUM_NUMBER_OF_LEVELS 30
> >
> > /** Extact the setname and filename from a compound string in the from
> > set:setname:filename".
> >  * Returns a setname of "" when non set:setname: entry is present.*/
> > extern OSGTERRAIN_EXPORT void extractSetNameAndFileName(const
std::string&
> > compoundstring, std::string& setname, std::string& filename);
> >
> > /** Create a compound string in the form set:setname:filename, or just
> > filename if setname is "".*/
> > extern OSGTERRAIN_EXPORT std::string
createCompondSetNameAndFileName(const
> > std::string& setname, const std::string& filename);
> >
> > class OSGTERRAIN_EXPORT Layer : public osg::Object
> > {
> >    public:
> >
> >        Layer();
> >
> >        /** Copy constructor using CopyOp to manage deep vs shallow
copy.*/
> >        Layer(const Layer&,const osg::CopyOp&
> > copyop=osg::CopyOp::SHALLOW_COPY);
> >
> >        META_Object(osgTerrain, Layer);
> >
> >        void setSetName(const std::string& setname) { setName(setname); }
> >        const std::string& getSetName() const { return getName(); }
> >
> >        /** Set the file name of the data associated with this layer. */
> >        virtual void setFileName(const std::string& filename) { _filename
=
> > filename; }
> >
> >        /** Get the file name of the layer. */
> >        virtual const std::string& getFileName() const { return
_filename; }
> >
> >        /** Return the compound name of the layer in the form
> > set::name::filename string.*/
> >        std::string getCompoundName() const { return
> > createCompondSetNameAndFileName(getName(), getFileName()); }
> >
> >        void setLocator(Locator* locator) { _locator = locator; }
> >        Locator* getLocator() { return _locator.get(); }
> >        const Locator* getLocator() const { return _locator.get(); }
> >
> >        void setMinLevel(unsigned int minLevel) { _minLevel = minLevel; }
> >        unsigned int getMinLevel() const { return _minLevel; }
> >
> >        void setMaxLevel(unsigned int maxLevel) { _maxLevel = maxLevel; }
> >        unsigned int getMaxLevel() const { return _maxLevel; }
> >
> >        void setValidDataOperator(ValidDataOperator* validDataOp) {
> > _validDataOperator = validDataOp; }
> >        ValidDataOperator* getValidDataOperator() { return
> > _validDataOperator.get(); }
> >        const ValidDataOperator* getValidDataOperator() const { return
> > _validDataOperator.get(); }
> >
> >
> >        virtual unsigned int getNumColumns() const { return 0; }
> >        virtual unsigned int getNumRows() const { return 0; }
> >
> >        void setDefaultValue(const osg::Vec4& value) { _defaultValue =
value;
> > }
> >        const osg::Vec4& getDefaultValue() const { return
_defaultValue; }
> >
> >        enum Filter
> >        {
> >            NEAREST,
> >            LINEAR
> >        };
> >
> >        /** Set the texture filter to use when do texture associated with
> > this layer.*/
> >        void setFilter(Filter filter) { _filter = filter; }
> >
> >        /** Get the texture filter to use when do texture associated with
> > this layer.*/
> >        Filter getFilter() const { return _filter; }
> >
> >
> >        /** Return image associated with layer if supported. */
> >        virtual osg::Image* getImage() { return 0; }
> >
> >        /** Return const image associated with layer if supported. */
> >        virtual const osg::Image* getImage() const { return 0; }
> >
> >
> >        virtual bool transform(float offset, float scale) { return
false; }
> >
> >
> >        virtual bool getValue(unsigned int /*i*/, unsigned int /*j*/,
float&
> > /*value*/) const { return false; }
> >        virtual bool getValue(unsigned int /*i*/, unsigned int /*j*/,
> > osg::Vec2& /*value*/) const { return false; }
> >        virtual bool getValue(unsigned int /*i*/, unsigned int /*j*/,
> > osg::Vec3& /*value*/) const { return false; }
> >        virtual bool getValue(unsigned int /*i*/, unsigned int /*j*/,
> > osg::Vec4& /*value*/) const { return false; }
> >
> >        inline bool getValidValue(unsigned int i, unsigned int j, float&
> > value) const
> >        {
> >            if (getValue(i,j,value)) return _validDataOperator.valid() ?
> > (*_validDataOperator)(value) : true;
> >            return false;
> >        }
> >
> >        inline bool getValidValue(unsigned int i, unsigned int j,
osg::Vec2&
> > value) const
> >        {
> >            if (getValue(i,j,value)) return _validDataOperator.valid() ?
> > (*_validDataOperator)(value) : true;
> >            return false;
> >        }
> >
> >        inline bool getValidValue(unsigned int i, unsigned int j,
osg::Vec3&
> > value) const
> >        {
> >            if (getValue(i,j,value)) return _validDataOperator.valid() ?
> > (*_validDataOperator)(value) : true;
> >            return false;
> >        }
> >
> >        inline bool getValidValue(unsigned int i, unsigned int j,
osg::Vec4&
> > value) const
> >        {
> >            if (getValue(i,j,value)) return _validDataOperator.valid() ?
> > (*_validDataOperator)(value) : true;
> >            return false;
> >        }
> >
> >
> >        inline void computeIndices(double ndc_x, double ndc_y, unsigned
int&
> > i, unsigned int& j, double& ir, double& jr)
> >        {
> >            ndc_x *= double(getNumColumns()-1);
> >            ndc_y *= double(getNumRows()-1);
> >            i = (unsigned int)(ndc_x);
> >            j = (unsigned int)(ndc_y);
> >            ir = ndc_x - double(i);
> >            jr = ndc_y - double(j);
> >        }
> >
> >
> >        inline bool getInterpolatedValue(double ndc_x, double ndc_y,
float&
> > value)
> >        {
> >            unsigned int i,j;
> >            double ir, jr;
> >            computeIndices(ndc_x, ndc_y, i, j, ir, jr);
> >            value = 0.0f;
> >            double div = 0.0f;
> >            float v,r;
> >
> >            r = (1.0f-ir)*(1.0f-jr);
> >            if (r>0.0 && getValue(i,j,v))
> >            {
> >                value += v*r;
> >                div += r;
> >            }
> >
> >            r = (ir)*(1.0f-jr);
> >            if (r>0.0 && getValue(i+1,j,v))
> >            {
> >                value += v*r;
> >                div += r;
> >            }
> >
> >            r = (ir)*(jr);
> >            if (r>0.0 && getValue(i+1,j+1,v))
> >            {
> >                value += v*r;
> >                div += r;
> >            }
> >
> >            r = (1.0f-ir)*(jr);
> >            if (r>0.0 && getValue(i,j+1,v))
> >            {
> >                value += v*r;
> >                div += r;
> >            }
> >
> >            if (div != 0.0)
> >            {
> >                value /= div;
> >                return true;
> >            }
> >
> >            value = 0.0;
> >            return false;
> >        }
> >
> >        /** increment the modified count."*/
> >        virtual void dirty() {};
> >
> >        /** Set the modified count value.  */
> >        virtual void setModifiedCount(unsigned int /*value*/) {};
> >
> >        /** Get modified count value. */
> >        virtual unsigned int getModifiedCount() const { return 0; }
> >
> >        virtual osg::BoundingSphere computeBound(bool
treatAsElevationLayer)
> > const;
> >
> >    protected:
> >
> >        virtual ~Layer();
> >
> >        std::string                     _filename;
> >        osg::ref_ptr<Locator>           _locator;
> >        unsigned int                    _minLevel;
> >        unsigned int                    _maxLevel;
> >        osg::ref_ptr<ValidDataOperator> _validDataOperator;
> >        osg::Vec4                       _defaultValue;
> >        Filter                          _filter;
> >
> > };
> >
> > class OSGTERRAIN_EXPORT ImageLayer : public Layer
> > {
> >    public:
> >
> >        ImageLayer(osg::Image* image=0);
> >
> >        /** Copy constructor using CopyOp to manage deep vs shallow
copy.*/
> >        ImageLayer(const ImageLayer& imageLayer,const osg::CopyOp&
> > copyop=osg::CopyOp::SHALLOW_COPY);
> >
> >        META_Object(osgTerrain, ImageLayer);
> >
> >        void setFileName(const std::string& filename) { _filename =
filename;
> > if (_image.valid()) _image->setFileName(filename); }
> >        virtual const std::string& getFileName() const { return
_image.get()
> > ? _image->getFileName() : _filename; }
> >
> >        virtual bool transform(float offset, float scale);
> >
> >        void setImage(osg::Image* image);
> >
> >        /** Return image associated with layer. */
> >        virtual osg::Image* getImage() { return _image.get(); }
> >
> >        /** Return const image associated with layer. */
> >        virtual const osg::Image* getImage() const { return
_image.get(); }
> >
> >        virtual unsigned int getNumColumns() const { return
_image.valid() ?
> > _image->s() : 0; }
> >        virtual unsigned int getNumRows() const { return _image.valid() ?
> > _image->t() : 0;  }
> >
> >        virtual bool getValue(unsigned int i, unsigned int j, float&
value)
> > const;
> >        virtual bool getValue(unsigned int i, unsigned int j, osg::Vec2&
> > value) const;
> >        virtual bool getValue(unsigned int i, unsigned int j, osg::Vec3&
> > value) const;
> >        virtual bool getValue(unsigned int i, unsigned int j, osg::Vec4&
> > value) const;
> >
> >        virtual void dirty();
> >        virtual void setModifiedCount(unsigned int value);
> >        virtual unsigned int getModifiedCount() const;
> >
> >    protected:
> >
> >        virtual ~ImageLayer() {}
> >
> >        osg::ref_ptr<osg::Image>    _image;
> >
> > };
> >
> > class OSGTERRAIN_EXPORT ContourLayer : public Layer
> > {
> >    public:
> >
> >        ContourLayer(osg::TransferFunction1D* tf=0);
> >
> >        /** Copy constructor using CopyOp to manage deep vs shallow
copy.*/
> >        ContourLayer(const ContourLayer& tfLayer,const osg::CopyOp&
> > copyop=osg::CopyOp::SHALLOW_COPY);
> >
> >        META_Object(osgTerrain, ContourLayer);
> >
> >        virtual bool transform(float offset, float scale);
> >
> >        void setTransferFunction(osg::TransferFunction1D* tf);
> >        osg::TransferFunction1D* getTransferFunction() { return
_tf.get(); }
> >        const osg::TransferFunction1D* getTransferFunction() const {
return
> > _tf.get(); }
> >
> >        /** Return image associated with layer. */
> >        virtual osg::Image* getImage() { return _tf.valid() ?
_tf->getImage()
> > : 0; }
> >
> >        /** Return const image associated with layer. */
> >        virtual const osg::Image* getImage() const { return _tf.valid() ?
> > _tf->getImage() : 0; }
> >
> >
> >        virtual unsigned int getNumColumns() const { return _tf.valid() ?
> > _tf->getNumberCellsX() : 0; }
> >        virtual unsigned int getNumRows() const { return _tf.valid() ? 1
: 0;
> >  }
> >
> >        virtual bool getValue(unsigned int i, unsigned int j, float&
value)
> > const;
> >        virtual bool getValue(unsigned int i, unsigned int j, osg::Vec2&
> > value) const;
> >        virtual bool getValue(unsigned int i, unsigned int j, osg::Vec3&
> > value) const;
> >        virtual bool getValue(unsigned int i, unsigned int j, osg::Vec4&
> > value) const;
> >
> >        virtual void dirty();
> >        virtual void setModifiedCount(unsigned int value);
> >        virtual unsigned int getModifiedCount() const;
> >
> >    protected:
> >
> >        virtual ~ContourLayer() {}
> >
> >        osg::ref_ptr<osg::TransferFunction1D>    _tf;
> >
> > };
> >
> > class OSGTERRAIN_EXPORT HeightFieldLayer : public Layer
> > {
> >    public:
> >
> >        HeightFieldLayer(osg::HeightField* hf=0);
> >
> >        /** Copy constructor using CopyOp to manage deep vs shallow
copy.*/
> >        HeightFieldLayer(const HeightFieldLayer& hfLayer,const
osg::CopyOp&
> > copyop=osg::CopyOp::SHALLOW_COPY);
> >
> >        META_Object(osgTerrain, HeightFieldLayer);
> >
> >        void setFileName(const std::string& filename) { _filename =
filename;
> > }
> >        virtual const std::string& getFileName() const { return
_filename; }
> >
> >        virtual bool transform(float offset, float scale);
> >
> >        void setHeightField(osg::HeightField* hf);
> >        osg::HeightField* getHeightField() { return _heightField.get(); }
> >        const osg::HeightField* getHeightField() const { return
> > _heightField.get(); }
> >
> >        virtual unsigned int getNumColumns() const { return
> > _heightField.valid() ? _heightField->getNumColumns() : 0; }
> >        virtual unsigned int getNumRows() const { return
_heightField.valid()
> > ? _heightField->getNumRows() : 0;  }
> >
> >        virtual bool getValue(unsigned int i, unsigned int j, float&
value)
> > const;
> >        virtual bool getValue(unsigned int i, unsigned int j, osg::Vec2&
> > value) const;
> >        virtual bool getValue(unsigned int i, unsigned int j, osg::Vec3&
> > value) const;
> >        virtual bool getValue(unsigned int i, unsigned int j, osg::Vec4&
> > value) const;
> >
> >        virtual void dirty();
> >        virtual void setModifiedCount(unsigned int value);
> >        virtual unsigned int getModifiedCount() const;
> >
> >    protected:
> >
> >        virtual ~HeightFieldLayer() {}
> >
> >        unsigned int                    _modifiedCount;
> >        osg::ref_ptr<osg::HeightField>  _heightField;
> >
> > };
> >
> >
> > class OSGTERRAIN_EXPORT ProxyLayer : public Layer
> > {
> >    public:
> >
> >        ProxyLayer();
> >
> >        /** Copy constructor using CopyOp to manage deep vs shallow
copy.*/
> >        ProxyLayer(const ProxyLayer& proxyLayer,const osg::CopyOp&
> > copyop=osg::CopyOp::SHALLOW_COPY);
> >
> >        META_Object(osgTerrain, ProxyLayer);
> >
> >        /** Return image associated with layer if supported. */
> >        virtual osg::Image* getImage()
> >        {
> >            return _implementation.valid() ? _implementation->getImage()
: 0;
> >        }
> >
> >        /** Return const image associated with layer if supported. */
> >        virtual const osg::Image* getImage() const
> >        {
> >            return _implementation.valid() ? _implementation->getImage()
: 0;
> >        }
> >
> >        /** Set the implementation layer that does the actual work.*/
> >        void setImplementation(Layer* layer) { _implementation = layer; }
> >
> >        /** Get the implementation layer that does the actual work.*/
> >        Layer* getImplementation() { return _implementation.get(); }
> >
> >        /** Get the const implementation layer that does the actual
work.*/
> >        const Layer* getImplementation() const { return
> > _implementation.get(); }
> >
> >        virtual void setFileName(const std::string& filename);
> >        virtual const std::string& getFileName() const { return
_filename; }
> >
> >        virtual unsigned int getNumColumns() const;
> >        virtual unsigned int getNumRows() const;
> >
> >        virtual bool transform(float offset, float scale);
> >
> >        virtual bool getValue(unsigned int i, unsigned int j, float&
value)
> > const;
> >        virtual bool getValue(unsigned int i, unsigned int j, osg::Vec2&
> > value) const;
> >        virtual bool getValue(unsigned int i, unsigned int j, osg::Vec3&
> > value) const;
> >        virtual bool getValue(unsigned int i, unsigned int j, osg::Vec4&
> > value) const;
> >
> >        virtual void dirty();
> >        virtual void setModifiedCount(unsigned int value);
> >        virtual unsigned int getModifiedCount() const;
> >
> >        virtual osg::BoundingSphere computeBound(bool
treatAsElevationLayer)
> > const;
> >
> >    protected:
> >
> >        virtual ~ProxyLayer();
> >
> >        osg::ref_ptr<Layer> _implementation;
> >
> >
> > };
> >
> > class OSGTERRAIN_EXPORT CompositeLayer : public Layer
> > {
> >    public:
> >
> >        CompositeLayer();
> >
> >        /** Copy constructor using CopyOp to manage deep vs shallow
copy.*/
> >        CompositeLayer(const CompositeLayer& compositeLayer,const
> > osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
> >
> >        META_Object(osgTerrain, CompositeLayer);
> >
> >        void clear();
> >
> >        void setSetName(const std::string& setname) { setName(setname); }
> >        const std::string& getSetName() const { return getName(); }
> >
> >        void setSetName(unsigned int i, const std::string& setname) {
> > _layers[i].setname = setname; if (_layers[i].layer.valid())
> > _layers[i].layer->setName(setname); }
> >        const std::string& getSetName(unsigned int i) const { return
> > _layers[i].layer.valid() ? _layers[i].layer->getName() :
_layers[i].setname;
> > }
> >
> >        void setFileName(unsigned int i, const std::string& filename) {
> > _layers[i].filename = filename; if (_layers[i].layer.valid())
> > _layers[i].layer->setFileName(filename); }
> >        const std::string& getFileName(unsigned int i) const { return
> > _layers[i].layer.valid() ? _layers[i].layer->getFileName() :
> > _layers[i].filename; }
> >
> >        void setCompoundName(unsigned int i, const std::string&
> > compoundname);
> >        std::string getCompoundName(unsigned int i) const;
> >
> >
> >        void setLayer(unsigned int i, Layer* layer) { if
(i>=_layers.size())
> > _layers.resize(i+1); _layers[i].layer = layer; }
> >        Layer* getLayer(unsigned int i) { return i<_layers.size() ?
> > _layers[i].layer.get() : 0; }
> >        const Layer* getLayer(unsigned int i) const { return
i<_layers.size()
> > ? _layers[i].layer.get() : 0; }
> >
> >        void addLayer(const std::string& compoundname);
> >        void addLayer(const std::string& setname, const std::string&
> > filename);
> >
> >        void addLayer(Layer* layer) {
> >
_layers.push_back(CompoundNameLayer(layer->getName(),layer->getFileName(),la
yer));
> > }
> >
> >        void removeLayer(unsigned int i) {
_layers.erase(_layers.begin()+i);
> > }
> >
> >        unsigned int getNumLayers() const { return _layers.size(); }
> >
> >    protected:
> >
> >        virtual ~CompositeLayer() {}
> >
> >        struct CompoundNameLayer
> >        {
> >            CompoundNameLayer() {}
> >
> >
> >        CompoundNameLayer(const CompoundNameLayer& cnl):
> >                setname(cnl.setname),
> >                filename(cnl.filename),
> >                layer(cnl.layer) {}
> >
> >            CompoundNameLayer(const std::string& sn, const std::string&
fn,
> > Layer* l):
> >                setname(sn),
> >                filename(fn),
> >                layer(l) {}
> >
> >            CompoundNameLayer& operator = (const CompoundNameLayer& cnl)
> >            {
> >                if (&cnl==this) return *this;
> >
> >                setname = cnl.setname;
> >                filename = cnl.filename;
> >                layer = cnl.layer;
> >                return *this;
> >            }
> >
> >            std::string         setname;
> >            std::string         filename;
> >            osg::ref_ptr<Layer> layer;
> >        };
> >
> >        typedef std::vector< CompoundNameLayer > Layers;
> >
> >        Layers _layers;
> > };
> >
> >
> > class OSGTERRAIN_EXPORT SwitchLayer : public CompositeLayer
> > {
> >    public:
> >
> >        SwitchLayer();
> >
> >        /** Copy constructor using CopyOp to manage deep vs shallow
copy.*/
> >        SwitchLayer(const SwitchLayer& switchLayer,const osg::CopyOp&
> > copyop=osg::CopyOp::SHALLOW_COPY);
> >
> >        META_Object(osgTerrain, SwitchLayer);
> >
> >        void setActiveLayer(int i) { _activeLayer = i; }
> >        int getActiveLayer() const { return _activeLayer; }
> >
> >        /** Return image associated with layer if supported. */
> >        virtual osg::Image* getImage()
> >        {
> >            if (_activeLayer < 0) return 0;
> >            if (_activeLayer >= static_cast<int>(getNumLayers())) return
0;
> >            return _layers[_activeLayer].layer->getImage();
> >        }
> >
> >        /** Return const image associated with layer if supported. */
> >        virtual const osg::Image* getImage() const
> >        {
> >            if (_activeLayer < 0) return 0;
> >            if (_activeLayer >= static_cast<int>(getNumLayers())) return
0;
> >            return _layers[_activeLayer].layer->getImage();
> >        }
> >
> >    protected:
> >
> >        virtual ~SwitchLayer() {}
> >
> >        int _activeLayer;
> > };
> >
> >
> >
> > }
> >
> > #endif
> >
> > _______________________________________________
> > 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
>

_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to