35#ifndef ANA_WINDOW3D_WINDOW3D_H
36#define ANA_WINDOW3D_WINDOW3D_H
64#ifdef ANA_USE_QOPENGLWIDGET
120 Qt::WindowFlags f = Qt::WindowFlags() );
127 bool temporaryObject =
false,
145 std::vector<float> &texvalue, std::string & textype,
146 Point3df & positionNearestVertex,
int* indexNearestVertex,
147 std::vector<std::string> & texlabels );
155 std::vector<float> &texvalue, std::string & textype,
156 Point3df & positionNearestVertex,
int* indexNearestVertex,
157 std::vector<std::string> & texlabels );
165 const std::vector<std::string> & constraintList,
int constraintType,
205#ifdef ANA_USE_QOPENGLWIDGET
206 QOpenGLWidget* glw = 0,
bool with3d =
false );
208 QGLWidget* glw = 0,
bool with3d = false );
229 std::vector<float> & bmax )
const;
257#ifdef ANA_USE_QOPENGLWIDGET
258 const QOpenGLWidget * shareWidget, Qt::WindowFlags f );
260 const QGLWidget * shareWidget, Qt::WindowFlags f );
282 std::list<anatomist::AObject *> & opaque )
const;
380 const std::vector<float> & bmax );
Functions that can modify on-the-fly display primitives of an object.
virtual ~ObjectModifier()
ObjectModifier(AWindow3D *w)
virtual void modify(anatomist::AObject *, anatomist::GLPrimitives &)=0
virtual void showToolBars(int state=2)
Shows or hides all tools (menu, toolbars) around the main view area.
const aims::Quaternion & sliceQuaternion() const
void setVisibleSurfpaint(bool b)
bool isViewOblique() const
void refreshTemp()
Redraws temporary objects only.
static void setGLWidgetCreator(GLWidgetCreator)
hook to create inherited QAGLWidgets (Vtk-enabled for instance)
void setFlatShading(bool)
void sliderChanged(int dim, int slice)
virtual const std::set< unsigned > & typeCount() const
virtual const anatomist::View * view() const
float clipDistance() const
void setClipMode(ClipMode m)
int getSliceSliderPosition()
ViewType viewType() const
void setOrientationCube(bool state)
Compass handling methods.
void syncViews(bool keepextrema=false)
anatomist::AObject * getConstraintTexture()
void registerObjectModifier(ObjectModifier *mod)
Allows changing display lists from normal objects DLists.
bool cullingEnabled() const
virtual void unregisterObject(anatomist::AObject *obj)
bool hasBoundingFrame() const
bool constraintEditorIsActive()
void enablePerspective(bool)
void setRenderingMode(RenderingMode mode)
Rendering mode (normal, wireframe, fast)
void renderSelectionBuffer(anatomist::ViewState::glSelectRenderMode mode, const anatomist::AObject *selectedobject=0)
QImage snapshotImage(int width=0, int height=0, int bufmode=0)
Get a snapshot of the window, after a refresh if needed.
virtual void registerObject(anatomist::AObject *obj, bool temporaryObject=false, int position=-1)
int getConstraintType() const
AWindow3D * rightEyeWindow()
void updateObject(anatomist::AObject *obj, anatomist::PrimList *pl=0, anatomist::ViewState::glSelectRenderMode selectmode=anatomist::ViewState::glSELECTRENDER_NONE)
bool surfpaintIsVisible()
int getSliceSliderMaxPosition()
virtual carto::rc_ptr< anatomist::ViewState > viewState(bool slice=false)
virtual void setPosition(const std::vector< float > &position, const anatomist::Referential *orgref)
int getTimeSliderMaxPosition()
void enableToolTips(bool)
virtual std::list< anatomist::AObject * > * objectsAtCursorPosition(int x, int y, int tolerenceRadius)
pick several objects at the cursor 2D position
void updateObject2D(anatomist::AObject *obj, anatomist::PrimList *pl=0, anatomist::ViewState::glSelectRenderMode selectmode=anatomist::ViewState::glSELECTRENDER_NONE)
virtual int polygonAtCursorPosition(int x, int y, const anatomist::AObject *obj)
pick a polygon on a selected object at the cursor 2D position
QSlider * getSliceSlider(void) const
bool hasOrientationCube() const
void setPolygonsSortingEnabled(bool)
void setActiveConstraintEditor(bool b)
static anatomist::Geometry setupWindowGeometry(const std::list< carto::shared_ptr< anatomist::AObject > > &objects, const aims::Quaternion &slicequat, const anatomist::Referential *wref=0, QGLWidget *glw=0, bool with3d=false)
void saveSnapshotWithCustomSize()
AWindow3D * leftEyeWindow()
bool inAutoFusion(const anatomist::AObject *obj) const
void resizeEvent(QResizeEvent *)
void loadConstraintData(const std::vector< std::string > &constraintList, int constraintType, anatomist::AObject *texConstraint)
void unregisterObjectModifier(ObjectModifier *mod)
void renderAfter(anatomist::AObject *obj, anatomist::AObject *afterthis)
adds a rendering order constraint: obj will be rendered immediately after afterthis.
void printPositionAndValue()
virtual void sortPolygons(bool force=false)
AWindow3D(ViewType t=Oblique, QWidget *parent=0, carto::Object params=carto::none(), Qt::WindowFlags f=Qt::WindowFlags())
void getInfos3DFromClickPoint(int x, int y, Point3df &position, int *poly, anatomist::AObject *objselect, std::string &objtype, std::vector< float > &texvalue, std::string &textype, Point3df &positionNearestVertex, int *indexNearestVertex, std::vector< std::string > &texlabels)
virtual void setPosition(const Point3df &position, const anatomist::Referential *orgref)
Set position of cursor.
virtual void setReferential(anatomist::Referential *ref)
void toggleStatusBarVisibility()
int computeNearestVertexFromPolygonPoint(const anatomist::ViewState &vs, int poly, const anatomist::GLComponent *glc, const Point3df &position, Point3df &positionNearestVertex)
print all infos about vertex picked on a polygon selected
void orientationChanged()
virtual SubType subtype() const
void setBoundingFrame(bool state)
Frame handling methods.
void setRightEyeWindow(AWindow3D *)
int getTimeSliderPosition()
virtual void updateWindowGeometry()
adapts geometry to the current contents and referential
void changeTimeSliders(int, int)
void renderBefore(anatomist::AObject *obj, anatomist::AObject *beforethis)
adds a rendering order constraint: obj will be rendered immediately before beforethis.
void updateSaveButtonStatus()
virtual void setViewType(ViewType t)
Mute into a new view type (Axial, Sagittal, Coronal or Oblique)
bool toopTipsEnabled() const
void setPolygonsSortingDirection(bool dir)
void setTimeSliderPosition(int position)
void updateObject3D(anatomist::AObject *obj, anatomist::PrimList *pl=0, anatomist::ViewState::glSelectRenderMode selectmode=anatomist::ViewState::glSELECTRENDER_NONE)
virtual void update(const Observable *obs, void *)
static std::string _baseTitle
anatomist::GLPrimitives cursorGLL() const
bool polygonsSortingEnabled() const
void setAutoRotationCenter()
void setViewPoint(float *quaternion, const float zoom)
set the view of the scene
ClipMode clipMode() const
virtual void showStatusBar(int state=2)
virtual std::set< unsigned > & typeCount()
std::string displayInfoAtClickPositionAsText(int x, int y, bool html=false)
void displayClickPos(Point3df clickPos)
Display the click point.
void getInfos3DFromPosition(const std::vector< float > &position, int poly, anatomist::AObject *objselect, std::string &objtype, std::vector< float > &texvalue, std::string &textype, Point3df &positionNearestVertex, int *indexNearestVertex, std::vector< std::string > &texlabels)
same as above but from a 3+D position.
bool linkedCursorOnSliderChange() const
virtual const std::string & baseTitle() const
anatomist::GLWidgetManager *(* GLWidgetCreator)(anatomist::AWindow *win, QWidget *parent, const char *name, const QGLWidget *shareWidget, Qt::WindowFlags f)
void resizeView(int w, int h)
Tries to resize the viewing area to given size.
virtual Type type() const
Get the window type (2D, 3D or control)
virtual bool positionFromCursor(int x, int y, Point3df &pos)
Translates mouse position to Anatomist geometry position.
std::list< anatomist::AObject * >::iterator processRenderingOrder(std::list< anatomist::AObject * > &opaque) const
calculates the objects rendering order, according to various constraints (opaque/transparent,...
void setClipDistance(float d)
void setLinkedCursorPos()
void setSliceQuaternion(const aims::Quaternion &q)
virtual anatomist::View * view()
bool perspectiveEnabled() const
bool positionToVertex(const anatomist::AObject *obj, unsigned vert)
void setupTimeSlider(const std::vector< float > &bmin, const std::vector< float > &bmax)
void setSliceSliderPosition(int position)
void setLeftEyeWindow(AWindow3D *)
void displayInfoAtClickPosition(int x, int y)
void setLinkedCursorOnSliderChange(bool x)
void setupSliceSlider(float mins, float maxs)
void enableTransparentZ(bool)
bool boundingBox(std::vector< float > &bmin, std::vector< float > &bmax) const
Get bounding box in N-dimension mode (new in anatomist 4.6)
anatomist::Light * light()
RenderingMode renderingMode() const
void updateViewTypeToolBar()
virtual anatomist::AObject * objectAtCursorPosition(int x, int y)
pick the object at the cursor 2D position
virtual void refreshNow()
Refresh the window (redraw the contained objects).
bool positionToPolygon(const anatomist::AObject *obj, unsigned poly)
void refreshLightViewNow()
std::vector< std::string > getConstraintList()
void updateLeftRightAnnotations()
void setLight(const anatomist::Light &light)
bool positionToTexture(const anatomist::AObject *obj, float texval)
bool transparentZEnabled() const
void setSliceOrientation(const Point3df &normal)
void refreshLightView()
Only redraws existing objects (in most cases, just calls existing OpenGL lists, except for observer-d...
virtual void displayClickPoint()
bool polygonsSortingDirection() const
returns false for back-to-front, true for front-to-back
void removeFromAutoFusion2D(anatomist::AObject *obj)
delete or modify the auto Fusion2D object when removing an object
bool autoFusion2D(anatomist::AObject *obj)
build or modify the auto Fusion2D object when adding a new object.
static std::set< unsigned > _count3d
3D windows static counter
ControlledWindow(QWidget *parent=0, const char *name=0, carto::Object options=carto::none(), Qt::WindowFlags f=Qt::WindowFlags())
Base Anatomist object (abstract)
Abstract base class Anatomist window.
Base class for all OpenGL objects in Anatomist (with OpenGL display lists)
Light used for OpenGL in 3D windows.
Referential: marker for transformations, with an associated color.
see http://doc.qt.digia.com/qq/qq26-openglcanvas.html
std::list< carto::rc_ptr< GLItem > > PrimList
std::list< RefGLItem > GLPrimitives
ViewState holds information about how a view wants to see an object.
@ glSELECTRENDER_NONE
no selection
AimsVector< float, 3 > Point3df