Fixes for Win32.

This commit is contained in:
Robert Osfield 2003-09-01 15:46:10 +00:00
parent 0ebf005ac1
commit 73094265c3
10 changed files with 669 additions and 666 deletions

View File

@ -149,6 +149,9 @@ Package=<4>
Begin Project Dependency
Project_Dep_Name Core osgDB
End Project Dependency
Begin Project Dependency
Project_Dep_Name Core osgText
End Project Dependency
}}}
###############################################################################

View File

@ -83,7 +83,7 @@ osg::Node* createSphereSegment()
osg::DegreesToRadians(45.0f),
60);
ss->setAllColors(osg::Vec4(1.0f,1.0f,1.0f,1.0f));
ss->setPlaneColor(osg::Vec4(0.0f,0.0f,1.0f,0.1f));
ss->setSideColor(osg::Vec4(0.0f,0.0f,1.0f,0.1f));
//ss->setDrawMask(SphereSegment::DrawMask(SphereSegment::SPOKES | SphereSegment::EDGELINE));
//ss->setUpdateCallback(new MyNodeCallback);

View File

@ -70,7 +70,7 @@ public:
SURFACE = 0x00000001, ///< Draw the specified area on the sphere's surface
SPOKES = 0x00000002, ///< Draw the spokes from the sphere's centre to the surface's corners
EDGELINE = 0x00000008, ///< Draw the line round the edge of the area on the sphere's surface
PLANES = 0x00000010, ///< Draw the planes from the sphere's centre to the edge of the sphere's surface
SIDES = 0x00000010, ///< Draw the planes from the sphere's centre to the edge of the sphere's surface
ALL = 0xffffffff ///< Draw every part of the sphere segment
};
@ -187,7 +187,7 @@ public:
void setEdgeLineColor(const osg::Vec4& c);
/** Set the color of the planes. */
void setPlaneColor(const osg::Vec4& c);
void setSideColor(const osg::Vec4& c);
/** Set color of all components. */
void setAllColors(const osg::Vec4& c);
@ -228,12 +228,12 @@ private:
bool EdgeLine_computeBound(osg::BoundingBox&) const;
void EdgeLine_drawImplementation(osg::State&) const;
enum BoundaryAngle{MIN,MAX}; // Why here and not in Plane class? Because we can't forward
enum PlaneOrientation{AZIM,ELEV}; // declare enums, Plane is in the .cpp, and this is tidier...
class Plane;
friend class Plane;
bool Plane_computeBound(osg::BoundingBox&, PlaneOrientation, BoundaryAngle) const;
void Plane_drawImplementation(osg::State&, PlaneOrientation, BoundaryAngle) const;
enum BoundaryAngle{MIN,MAX}; // Why here and not in Side class? Because we can't forward
enum SideOrientation{AZIM,ELEV}; // declare enums, Side is in the .cpp, and this is tidier...
class Side;
friend class Side;
bool Side_computeBound(osg::BoundingBox&, SideOrientation, BoundaryAngle) const;
void Side_drawImplementation(osg::State&, SideOrientation, BoundaryAngle) const;
class Spoke;
friend class Spoke;

View File

@ -246,8 +246,8 @@ void ScalarBar::createDrawables()
// vertical alignment depending on the letters used in the labels. E.g. a 'y' has a dangling tail.
if(_orientation == HORIZONTAL)
{
std::vector<osgText::Text*>::iterator maxYIt = max_element(texts.begin(), texts.end(), MaxCoordLess(MaxCoordLess::Y_AXIS));
for_each(texts.begin(), texts.end(), AlignCentreOnYValue((*maxYIt)->getBound().center().y()));
std::vector<osgText::Text*>::iterator maxYIt = std::max_element(texts.begin(), texts.end(), MaxCoordLess(MaxCoordLess::Y_AXIS));
std::for_each(texts.begin(), texts.end(), AlignCentreOnYValue((*maxYIt)->getBound().center().y()));
}
// 3. And finally the title
@ -268,7 +268,7 @@ void ScalarBar::createDrawables()
// Need to move the title above any labels, using maximum y value of the
// existing text objects
std::vector<osgText::Text*>::iterator maxYIt = max_element(texts.begin(), texts.end(), MaxCoordLess(MaxCoordLess::Y_AXIS));
std::vector<osgText::Text*>::iterator maxYIt = std::max_element(texts.begin(), texts.end(), MaxCoordLess(MaxCoordLess::Y_AXIS));
float titleY;
if(maxYIt != texts.end()) titleY = (*maxYIt)->getBound().yMax() * 1.1f;
@ -284,7 +284,7 @@ void ScalarBar::createDrawables()
// Need to move the title out beyond any labels, using the maximum x value of the
// existing text objects
std::vector<osgText::Text*>::iterator maxXIt = max_element(texts.begin(), texts.end(), MaxCoordLess(MaxCoordLess::X_AXIS));
std::vector<osgText::Text*>::iterator maxXIt = std::max_element(texts.begin(), texts.end(), MaxCoordLess(MaxCoordLess::X_AXIS));
float titleX;
if(maxXIt != texts.end()) titleX = (*maxXIt)->getBound().xMax() * 1.1f;

View File

@ -21,7 +21,7 @@ public:
"Warning: unexpected call to osgSim::SphereSegment::Surface() default constructor"<<std::endl;
}
Surface(const Surface& rhs, const osg::CopyOp& co=osg::CopyOp::SHALLOW_COPY):Drawable(*this,co), _ss(0)
Surface(const Surface& rhs, const osg::CopyOp& co=osg::CopyOp::SHALLOW_COPY):Drawable(rhs,co), _ss(0)
{
osg::notify(osg::WARN)<<
"Warning: unexpected call to osgSim::SphereSegment::Surface() copy constructor"<<std::endl;
@ -67,7 +67,7 @@ public:
"Warning: unexpected call to osgSim::SphereSegment::EdgeLine() default constructor"<<std::endl;
}
EdgeLine(const EdgeLine& rhs, const osg::CopyOp& co=osg::CopyOp::SHALLOW_COPY):Drawable(*this,co), _ss(0)
EdgeLine(const EdgeLine& rhs, const osg::CopyOp& co=osg::CopyOp::SHALLOW_COPY):Drawable(rhs,co), _ss(0)
{
osg::notify(osg::WARN)<<
"Warning: unexpected call to osgSim::SphereSegment::EdgeLine() copy constructor"<<std::endl;
@ -100,28 +100,28 @@ bool SphereSegment::EdgeLine::computeBound() const
/**
SphereSegment::Plane is a Drawable which represents one of the
SphereSegment::Side is a Drawable which represents one of the
planar areas, at either the minimum or maxium azimuth.
*/
class SphereSegment::Plane: public osg::Drawable
class SphereSegment::Side: public osg::Drawable
{
public:
Plane(SphereSegment* ss, SphereSegment::PlaneOrientation po, SphereSegment::BoundaryAngle pa):
Side(SphereSegment* ss, SphereSegment::SideOrientation po, SphereSegment::BoundaryAngle pa):
Drawable(), _ss(ss), _planeOrientation(po), _BoundaryAngle(pa) {}
Plane():_ss(0)
Side():_ss(0)
{
osg::notify(osg::WARN)<<
"Warning: unexpected call to osgSim::SphereSegment::Plane() default constructor"<<std::endl;
"Warning: unexpected call to osgSim::SphereSegment::Side() default constructor"<<std::endl;
}
Plane(const Plane& rhs, const osg::CopyOp& co=osg:: CopyOp::SHALLOW_COPY): Drawable(*this,co), _ss(0)
Side(const Side& rhs, const osg::CopyOp& co=osg:: CopyOp::SHALLOW_COPY): Drawable(rhs,co), _ss(0)
{
osg::notify(osg::WARN)<<
"Warning: unexpected call to osgSim::SphereSegment::Plane() copy constructor"<<std::endl;
"Warning: unexpected call to osgSim::SphereSegment::Side() copy constructor"<<std::endl;
}
META_Object(osgSim,Plane)
META_Object(osgSim,Side)
void drawImplementation(osg::State& state) const;
@ -131,19 +131,19 @@ protected:
private:
SphereSegment* _ss;
SphereSegment::PlaneOrientation _planeOrientation;
SphereSegment::SideOrientation _planeOrientation;
SphereSegment::BoundaryAngle _BoundaryAngle;
};
void SphereSegment::Plane::drawImplementation(osg::State& state) const
void SphereSegment::Side::drawImplementation(osg::State& state) const
{
_ss->Plane_drawImplementation(state, _planeOrientation, _BoundaryAngle);
_ss->Side_drawImplementation(state, _planeOrientation, _BoundaryAngle);
}
bool SphereSegment::Plane::computeBound() const
bool SphereSegment::Side::computeBound() const
{
_bbox_computed = _ss->Plane_computeBound(_bbox, _planeOrientation, _BoundaryAngle);
_bbox_computed = _ss->Side_computeBound(_bbox, _planeOrientation, _BoundaryAngle);
return _bbox_computed;
}
@ -164,7 +164,7 @@ public:
"Warning: unexpected call to osgSim::SphereSegment::Spoke() default constructor"<<std::endl;
}
Spoke(const Spoke& rhs, const osg::CopyOp& co=osg:: CopyOp::SHALLOW_COPY): Drawable(*this,co), _ss(0)
Spoke(const Spoke& rhs, const osg::CopyOp& co=osg:: CopyOp::SHALLOW_COPY): Drawable(rhs,co), _ss(0)
{
osg::notify(osg::WARN)<<
"Warning: unexpected call to osgSim::SphereSegment::Spoke() copy constructor"<<std::endl;
@ -289,10 +289,10 @@ void SphereSegment::init()
addDrawable(new EdgeLine(this));
addDrawable(new Plane(this,AZIM,MIN));
addDrawable(new Plane(this,AZIM,MAX));
addDrawable(new Plane(this,ELEV,MIN));
addDrawable(new Plane(this,ELEV,MAX));
addDrawable(new Side(this,AZIM,MIN));
addDrawable(new Side(this,AZIM,MAX));
addDrawable(new Side(this,ELEV,MIN));
addDrawable(new Side(this,ELEV,MAX));
addDrawable(new Spoke(this,MIN,MIN));
addDrawable(new Spoke(this,MIN,MAX));
@ -315,7 +315,7 @@ struct DirtyDisplayList
void SphereSegment::dirtyAllDrawableDisplayLists()
{
for_each(_drawables.begin(), _drawables.end(), DirtyDisplayList());
std::for_each(_drawables.begin(), _drawables.end(), DirtyDisplayList());
}
namespace
@ -333,7 +333,7 @@ struct DirtyBound
void SphereSegment::dirtyAllDrawableBounds()
{
for_each(_drawables.begin(), _drawables.end(), DirtyBound());
std::for_each(_drawables.begin(), _drawables.end(), DirtyBound());
}
void SphereSegment::Surface_drawImplementation(osg::State& /* state */) const
@ -529,13 +529,13 @@ bool SphereSegment::EdgeLine_computeBound(osg::BoundingBox& bbox) const
return true;
}
void SphereSegment::Plane_drawImplementation(osg::State& /* state */,
SphereSegment::PlaneOrientation orientation,
void SphereSegment::Side_drawImplementation(osg::State& /* state */,
SphereSegment::SideOrientation orientation,
SphereSegment::BoundaryAngle boundaryAngle) const
{
// Draw the planes if necessary
// ----------------------------
if(_drawMask & PLANES)
if(_drawMask & SIDES)
{
if(orientation == AZIM) // This is a plane at a given azimuth
{
@ -586,8 +586,8 @@ void SphereSegment::Plane_drawImplementation(osg::State& /* state */,
}
}
bool SphereSegment::Plane_computeBound(osg::BoundingBox& bbox,
SphereSegment::PlaneOrientation orientation,
bool SphereSegment::Side_computeBound(osg::BoundingBox& bbox,
SphereSegment::SideOrientation orientation,
SphereSegment::BoundaryAngle boundaryAngle) const
{
bbox.init();
@ -720,32 +720,32 @@ void SphereSegment::setSurfaceColor(const osg::Vec4& c)
{
_surfaceColor=c;
if(c.w() != 1.0) for_each(_drawables.begin(), _drawables.end(), ActivateTransparencyOnType(typeid(Surface)));
else for_each(_drawables.begin(), _drawables.end(), DeactivateTransparencyOnType(typeid(Surface)));
if(c.w() != 1.0) std::for_each(_drawables.begin(), _drawables.end(), ActivateTransparencyOnType(typeid(Surface)));
else std::for_each(_drawables.begin(), _drawables.end(), DeactivateTransparencyOnType(typeid(Surface)));
}
void SphereSegment::setSpokeColor(const osg::Vec4& c)
{
_spokeColor=c;
if(c.w() != 1.0) for_each(_drawables.begin(), _drawables.end(), ActivateTransparencyOnType(typeid(Spoke)));
else for_each(_drawables.begin(), _drawables.end(), DeactivateTransparencyOnType(typeid(Spoke)));
if(c.w() != 1.0) std::for_each(_drawables.begin(), _drawables.end(), ActivateTransparencyOnType(typeid(Spoke)));
else std::for_each(_drawables.begin(), _drawables.end(), DeactivateTransparencyOnType(typeid(Spoke)));
}
void SphereSegment::setEdgeLineColor(const osg::Vec4& c)
{
_edgeLineColor=c;
if(c.w() != 1.0) for_each(_drawables.begin(), _drawables.end(), ActivateTransparencyOnType(typeid(EdgeLine)));
else for_each(_drawables.begin(), _drawables.end(), DeactivateTransparencyOnType(typeid(EdgeLine)));
if(c.w() != 1.0) std::for_each(_drawables.begin(), _drawables.end(), ActivateTransparencyOnType(typeid(EdgeLine)));
else std::for_each(_drawables.begin(), _drawables.end(), DeactivateTransparencyOnType(typeid(EdgeLine)));
}
void SphereSegment::setPlaneColor(const osg::Vec4& c)
void SphereSegment::setSideColor(const osg::Vec4& c)
{
_planeColor=c;
if(c.w() != 1.0) for_each(_drawables.begin(), _drawables.end(), ActivateTransparencyOnType(typeid(Plane)));
else for_each(_drawables.begin(), _drawables.end(), DeactivateTransparencyOnType(typeid(Plane)));
if(c.w() != 1.0) std::for_each(_drawables.begin(), _drawables.end(), ActivateTransparencyOnType(typeid(Side)));
else std::for_each(_drawables.begin(), _drawables.end(), DeactivateTransparencyOnType(typeid(Side)));
}
void SphereSegment::setAllColors(const osg::Vec4& c)
@ -753,5 +753,5 @@ void SphereSegment::setAllColors(const osg::Vec4& c)
setSurfaceColor(c);
setSpokeColor(c);
setEdgeLineColor(c);
setPlaneColor(c);
setSideColor(c);
}