#include <GeomAPI_Vertex.h>
#include <GeomAPI_Curve.h>
+#include <Events_Error.h>
+
#include <Graphic3d_ArrayOfSegments.hxx>
#include <Graphic3d_BndBox4f.hxx>
#include <SelectMgr_Selection.hxx>
-#include <SelectMgr_SelectionManager.hxx>
#include <Select3D_SensitivePoint.hxx>
#include <TopLoc_Location.hxx>
#include <AIS_InteractiveContext.hxx>
#include <OpenGl_PointSprite.hxx>
#include <OpenGl_VertexBuffer.hxx>
#include <OpenGl_ShaderManager.hxx>
-#include <OpenGl_VertexBufferCompat.hxx>
-#include <OpenGl_GraphicDriver.hxx>
#ifdef WIN32
# define FSEP "\\"
if (myIconsMap.count(iconName()) == 1) {
return myIconsMap[iconName()];
}
- TCollection_AsciiString aFile(getenv("NewGeomResources"));
- aFile += FSEP;
- aFile += iconName();
- Handle(Image_AlienPixMap) aPixMap = new Image_AlienPixMap();
- if (aPixMap->Load(aFile)) {
- myIconsMap[iconName()] = aPixMap;
- return aPixMap;
+ char* aEnv = getenv("NEWGEOM_ROOT_DIR");
+ if (aEnv != NULL) {
+ TCollection_AsciiString aFile(aEnv);
+ aFile+=FSEP;
+ aFile+="resources";
+ aFile += FSEP;
+ aFile += iconName();
+ Handle(Image_AlienPixMap) aPixMap = new Image_AlienPixMap();
+ if (aPixMap->Load(aFile)) {
+ myIconsMap[iconName()] = aPixMap;
+ return aPixMap;
+ }
}
+ static const char aMsg[] = "Error! constraint images are not found";
+ cout<<aMsg<<endl;
+ Events_Error::send(aMsg);
+ myIconsMap[iconName()] = Handle(Image_AlienPixMap)();
return Handle(Image_AlienPixMap)();
}
void SketcherPrs_SymbolPrs::prepareAspect()
{
if (myAspect.IsNull()) {
- myAspect = new Graphic3d_AspectMarker3d(icon());
+ Handle(Image_AlienPixMap) aIcon = icon();
+ if (aIcon.IsNull())
+ myAspect = new Graphic3d_AspectMarker3d();
+ else
+ myAspect = new Graphic3d_AspectMarker3d(aIcon);
}
}
}
void SketcherPrs_SymbolPrs::HilightOwnerWithColor(const Handle(PrsMgr_PresentationManager3d)& thePM,
- const Quantity_NameOfColor theColor, const Handle(SelectMgr_EntityOwner)& theOwner)
+ const Quantity_NameOfColor theColor,
+ const Handle(SelectMgr_EntityOwner)& theOwner)
{
thePM->Color(this, theColor);
mySPoints.Clear();
for (int i = 1; i <= aNbVertex; i++) {
- Handle(SketcherPrs_SensitivePoint) aSP = new SketcherPrs_SensitivePoint(myOwner, myPntArray, i);
+ Handle(SketcherPrs_SensitivePoint) aSP = new SketcherPrs_SensitivePoint(myOwner, i);
mySPoints.Append(aSP);
}
}
aGroup->UserDraw(this, true);
+
+ // Disable frustum culling for this object by marking it as mutable
+ aGroup->Structure()->SetMutable(true);
//aGroup->AddPrimitiveArray(myPntArray);
}
if (theWorkspace->NamedStatus & OPENGL_NS_HIGHLIGHT)
aLineColor = theWorkspace->HighlightColor;
+ if (toHilight)
+ aCtx->core11fwd->glDisable (GL_LIGHTING);
+ else
+ aCtx->core11fwd->glEnable (GL_LIGHTING);
+
aCtx->SetColor4fv(*(const OpenGl_Vec4* )(aLineColor->rgb));
// Update selection position only if there is no selected object
// because it can corrupt selection of other objects
if ((GetContext()->NbCurrents() == 0) && (GetContext()->NbSelected() == 0))
- GetContext()->RecomputeSelectionOnly(this);
+ {
+ GetContext()->MainSelector()->RebuildSensitivesTree (this);
+ GetContext()->MainSelector()->RebuildObjectsTree (false);
+ }
}
}
}
+void SketcherPrs_SymbolPrs::BoundingBox (Bnd_Box& theBndBox)
+{
+ Select3D_BndBox3d aTmpBox;
+ for (Select3D_EntitySequenceIter aPntIter (mySPoints); aPntIter.More(); aPntIter.Next())
+ {
+ const Handle(Select3D_SensitiveEntity)& anEnt = aPntIter.Value();
+ aTmpBox.Combine (anEnt->BoundingBox());
+ }
+
+ theBndBox.Update (aTmpBox.CornerMin().x(), aTmpBox.CornerMin().y(), aTmpBox.CornerMin().z(),
+ aTmpBox.CornerMax().x(), aTmpBox.CornerMax().y(), aTmpBox.CornerMax().z());
+}
+