44#include <aims/bucket/bucket.h>
45#include <cartodata/volume/volume.h>
65 struct PaintActionView_Private ;
81 void brushSelection(
int id ) ;
82 void brushSizeChange(
int size ) ;
83 void regionTransparencyChange(
int alpha ) ;
89 void replaceModeOn() ;
90 void replaceModeOff() ;
91 void linkedCursorModeOn() ;
92 void linkedCursorModeOff() ;
96 void clearRegionAction() ;
100 anatomist::PaintActionView_Private * _private ;
127 float brushSize,
bool lineMode,
131 std::list< std::pair< Point3d, ChangesItem> > & changes,
161 if ( p[0] < 0 || p[0] > o->
getSizeX() - 1 ||
162 p[1] < 0 || p[1] > o->
getSizeY() - 1 ||
163 p[2] < 0 || p[2] > o->
getSizeZ() - 1 )
180 float brushSize,
bool lineMode,
184 std::list< std::pair< Point3d, ChangesItem> > & changes,
203 float brushSize,
bool lineMode,
207 std::list< std::pair< Point3d, ChangesItem> > & changes,
227 float brushSize,
bool lineMode,
231 std::list< std::pair< Point3d, ChangesItem> > & changes,
246 std::list< std::pair< Point3d, ChangesItem> > & changes,
262 float brushSize,
bool lineMode,
266 std::list< std::pair< Point3d, ChangesItem> > & changes,
280 std::list< std::pair< Point3d, ChangesItem> > & changes,
284 const std::vector<Point3d>& brush(
int size ) ;
301 PaintActionSharedData() ;
302 static PaintActionSharedData * _instance ;
308 bool myFollowingLinkedCursor ;
313 bool myIsChangeValidated ;
317 std::list< std::pair< Point3d, ChangesItem> > * myCurrentChanges ;
323 bool myCursorShapeChanged;
334 virtual std::string
name()
const;
346 bool lineMode() {
return _sharedData->myLineMode ; }
362 bool mmMode() {
return _sharedData->myMmMode ;}
367 void paint(
int x,
int y,
int globalX,
int globalY ) ;
370 void erase(
int x,
int y,
int globalX,
int globalY ) ;
373 void fill(
int x,
int y,
int globalX,
int globalY ) ;
404 bool hasChanged ()
const {
return _sharedData->hasChanged() ; }
414 std::list<AWindow3D*> myLinkedWindows ;
416 void copySlice(
bool wholeSession,
int sliceIncrement ) ;
3D window, OpenGL rendering
PaintActionView(anatomist::PaintAction *, QWidget *)
virtual void update(const anatomist::Observable *observable, void *arg)
This method is called whenever the observed object is changed.
A private class: slider with specific data storage (for callbacks client data), no use for it anywher...
std::map< Point3d, T, BucketMapLess > Bucket
Anatomist graph object: a list that manages destruction of its sub-elements.
Base Anatomist object (abstract)
virtual ~BallPaintStrategy()
virtual void brushPainter(const Point3d &pToInt, const AObject *originalLabel, AObject *finalLabel, float brushSize, carto::VolumeRef< AObject * > &volumeOfLabels, const Point3df &voxelSize, const Point3df &vlOffset, aims::BucketMap< Void >::Bucket &deltaModifications, std::list< std::pair< Point3d, ChangesItem > > &changes, bool replace, bool mm)
virtual void paint(AWindow3D *win, Transformation *transf, const Point3df &point, const AObject *originalLabel, AObject *finalLabel, float brushSize, bool lineMode, carto::VolumeRef< AObject * > &volumeOfLabels, const Point3df &vlOffset, aims::BucketMap< Void >::Bucket &deltaModifications, std::list< std::pair< Point3d, ChangesItem > > &changes, const Point3df &voxelSize, bool line, bool replace, bool mm)
Draw.
virtual PaintType paintType()
virtual ~DiskPaintStrategy()
virtual void brushPainter(const Point3df &diskCenter, const Point3df &n, const AObject *originalLabel, AObject *finalLabel, float brushSize, carto::VolumeRef< AObject * > &volumeOfLabels, const Point3df &voxelSize, const Point3df &vlOffset, aims::BucketMap< Void >::Bucket &deltaModifications, std::list< std::pair< Point3d, ChangesItem > > &changes, bool replace, bool mm)
virtual PaintType paintType()
virtual void paint(AWindow3D *win, Transformation *transf, const Point3df &point, const AObject *originalLabel, AObject *finalLabel, float brushSize, bool lineMode, carto::VolumeRef< AObject * > &volumeOfLabels, const Point3df &vlOffset, aims::BucketMap< Void >::Bucket &deltaModifications, std::list< std::pair< Point3d, ChangesItem > > &changes, const Point3df &voxelSize, bool line, bool replace, bool mm)
Draw.
This class can be subclassed to represent an object that the programmer wants to have observed.
A class can implement the Observer interface when it wants to be informed of changes in observable ob...
static PaintActionSharedData * instance()
virtual void update(const Observable *observable, void *arg)
This method is called whenever the observed object is changed.
virtual ~PaintActionSharedData()
void fillRegion2D(const Point3d &seed, const Point3d &bmin, const Point3d &bmax, Point3d neighbour[], carto::VolumeRef< AObject * > &volumeOfLabels, AObject *final, std::list< std::pair< Point3d, ChangesItem > > &changes)
void copyPreviousSliceCurrentRegion()
void copyNextSliceCurrentRegion()
void notifyUnregisterObservers()
enum PaintStrategy::PaintType paintType()
void followingLinkedCursorOn()
void moveCursor(int x, int y, int globalX, int globalY)
virtual QWidget * actionView(QWidget *)
void notifyObservers(void *arg=0)
void copyPreviousSliceWholeSession()
virtual bool viewableAction() const
void eraseStart(int x, int y, int globalX, int globalY)
void addObserver(Observer *observer)
void change(bool forward)
void fill(int x, int y, int globalX, int globalY)
static Action * creator()
bool followingLinkedCursorMode()
void erase(int x, int y, int globalX, int globalY)
void deleteObserver(Observer *observer)
void changeCursor(bool cross)
void paint(int x, int y, int globalX, int globalY)
void changeRegionTransparency(float alpha)
void followingLinkedCursorOff()
void paintStart(int x, int y, int globalX, int globalY)
void validateChange(int x=0, int y=0, int globalX=0, int globalY=0)
void copyNextSliceWholeSession()
virtual std::string name() const
bool myPreviousPointExists
bool in(const carto::VolumeRef< AObject * > &o, Point3df p, const Point3df &offset)
static std::list< Point3d > drawFastLine(const Point3d &from, const Point3d &dep)
virtual PaintType paintType()=0
static std::list< Point3df > drawLine(const Point3df &from, const Point3df &dep)
static void brushPainter()
virtual void paint(AWindow3D *win, Transformation *transf, const Point3df &point, const AObject *originalLabel, AObject *finalLabel, float brushSize, bool lineMode, carto::VolumeRef< AObject * > &volumeOfLabels, const Point3df &vlOffset, aims::BucketMap< Void >::Bucket &deltaModifications, std::list< std::pair< Point3d, ChangesItem > > &changes, const Point3df &voxelSize, bool line, bool replace, bool mm)=0
Draw.
virtual PaintType paintType()
virtual ~PointPaintStrategy()
virtual void paint(AWindow3D *win, Transformation *transf, const Point3df &point, const AObject *originalLabel, AObject *finalLabel, float brushSize, bool lineMode, carto::VolumeRef< AObject * > &volumeOfLabels, const Point3df &vlOffset, aims::BucketMap< Void >::Bucket &deltaModifications, std::list< std::pair< Point3d, ChangesItem > > &changes, const Point3df &voxelSize, bool line, bool replace, bool mm)
Draw.
Referential: marker for transformations, with an associated color.
static RoiChangeProcessor * instance()
virtual PaintType paintType()
virtual void paint(AWindow3D *win, Transformation *transf, const Point3df &point, const AObject *originalLabel, AObject *finalLabel, float brushSize, bool lineMode, carto::VolumeRef< AObject * > &volumeOfLabels, const Point3df &vlOffset, aims::BucketMap< Void >::Bucket &deltaModifications, std::list< std::pair< Point3d, ChangesItem > > &changes, const Point3df &voxelSize, bool line, bool replace, bool mm)
Draw.
virtual ~SquarePaintStrategy()
AimsVector< float, 3 > Point3df
AimsVector< int16_t, 3 > Point3d