118 class rviewImageSetup:
public rviewFrame
122 rviewImageSetup(rview_image_setup *ris, rviewRenderImage *parentWin);
123 ~rviewImageSetup(
void);
125 void unlinkParent(
void);
127 void OnSize(
int w,
int h);
130 int process(wxObject &obj, wxEvent &evt);
132 void updateSettings(
const rview_image_setup &ris);
133 void readNewSetup(
void);
135 virtual const char *getFrameName(
void)
const;
136 virtual rviewFrameType getFrameType(
void)
const;
138 static int parseLightDirection(
const char *dir);
142 static const int imgset_border;
144 static const int imgset_theight;
146 static const int imgset_chkheight;
148 static const int imgset_renheight;
149 static const int imgset_voxheight;
150 static const int imgset_hgtheight;
152 static const int imgset_bwidth;
153 static const int imgset_bheight;
155 static const int imgset_chowidth;
156 static const int imgset_choheight;
158 static const int imgset_width;
159 static const int imgset_height;
164 rviewRenderImage *parent;
166 wxGroupBox *renderGroup, *voxelGroup, *heightGroup;
167 rviewText *zproWidget, *clipzWidget;
168 rviewText *pixThreshLowWidget, *pixThreshHighWidget, *wgtThreshWidget, *wgtQuantWidget;
169 rviewCheckBox *useRgbBrightness;
170 rviewCheckBox *useLights;
171 rviewChoice *kernelSize, *kernelType;
172 rviewText *lightsAmbient, *lightsGain, *lightsAngle, *lightsScintAngle;
173 rviewText *lightsDir, *lightsDist;
174 rviewCheckBox *useVoxCol;
175 rviewText *voxColour;
176 rviewText *gridSize, *scaleHeight;
177 rviewButton *okBut, *cancelBut;
178 rview_image_setup oldSetup, *imgSetup;
180 static const char *normalKernelSizes[];
181 static const keyword_to_ident_c normalKernelTypes[];
189 class rendererControl:
public rviewFrame
193 rendererControl(
float drx,
float dry,
float drz,
int mode, rviewRenderImage *parentWin);
194 ~rendererControl(
void);
196 void unlinkParent(
void);
197 void setActiveMode(
int mode);
199 void OnSize(
int w,
int h);
202 int process(wxObject &obj, wxEvent &evt);
204 virtual const char *getFrameName(
void)
const;
205 virtual rviewFrameType getFrameType(
void)
const;
209 static const int rctrl_border;
211 static const int rctrl_bwidth;
212 static const int rctrl_bheight;
214 static const int rctrl_rwidth;
215 static const int rctrl_rheight;
217 static const int rctrl_sheight;
219 static const int rctrl_width;
220 static const int rctrl_height;
225 void updateParameters(
void);
228 rviewSlider *rotx, *roty, *rotz;
229 rviewButton *resetX, *resetY, *resetZ;
230 rviewButton *actionBut, *closeBut;
231 rviewRenderImage *parent;
239 class rendererCurrentView:
public rviewFrame
243 rendererCurrentView(
const vertex_fp &angles,
long off,
double scale, rviewRenderImage *parentWin);
244 ~rendererCurrentView(
void);
246 void unlinkParent(
void);
248 void OnSize(
int w,
int h);
251 int process(wxObject &obj, wxEvent &evt);
253 virtual const char *getFrameName(
void)
const;
254 virtual rviewFrameType getFrameType(
void)
const;
256 void updateView(
const vertex_fp &angles,
long off,
double scale);
260 static const int rcview_border;
262 static const int rcview_bwidth;
263 static const int rcview_bheight;
265 static const int rcview_theight;
267 static const int rcview_width;
268 static const int rcview_height;
273 void updateParameters(
void);
276 rviewButton *applyButton, *closeButton;
277 rviewText *rotx, *roty, *rotz;
279 rviewText *cubeScale;
280 rviewRenderImage *parent;
290 class pixmapCanvas:
public wxCanvas
294 pixmapCanvas(rviewImage *parent,
int x,
int y,
int w,
int h,
long style=0);
297 void setPixmap(wxPixmap *pmap);
298 void updateDisplay(
bool borders=
FALSE);
301 void OnEvent(wxMouseEvent &mevt);
303 void SetAspectRatio(
double ratio);
304 void ToggleDragBox(
bool clearMode);
305 void SetDragBox(
int x0,
int y0,
int x1,
int y1);
306 bool HasDragBox(
void)
const;
307 bool GetDragBox(
int &x0,
int &y0,
int &x1,
int &y1)
const;
308 void UpdateDragBox(
int x1,
int y1);
309 void AdjustDragBox(
int x1,
int y1);
314 void paintCore(
int x,
int y);
315 void adjustBoxToRatio(
void);
325 rviewImage *parentWin;
326 int pixWidth, pixHeight;
328 int rect_x0, rect_y0, rect_x1, rect_y1;
335 #define RVIEW_IFLAG_VOXEL 1
336 #define RVIEW_IFLAG_LIGHT 2
337 #define RVIEW_IFLAG_HEIGHT 4
342 class rviewImage:
public rviewDisplay
346 rviewImage(mdd_frame *mf,
int es,
unsigned int flags=0);
347 virtual ~rviewImage(
void);
349 virtual int openViewer(
void);
351 virtual void label(
void);
352 virtual int process(wxObject &obj, wxEvent &evt);
353 virtual void processMouseEvent(wxMouseEvent &mevt);
354 virtual int userEvent(
const user_event &ue);
355 virtual void prepareToDie(
void);
356 virtual int newProjection(
void)=0;
357 virtual int requestQuit(
int level);
359 virtual void OnSize(
int w,
int h);
360 virtual void OnMenuCommand(
int id);
361 virtual bool OnClose(
void);
363 virtual const char *getFrameName(
void)
const;
364 virtual rviewFrameType getFrameType(
void)
const;
367 static int getPixmapFlags(
void);
371 static const int image_swidth;
372 static const int image_sheight;
374 static const int image_pbwidth;
375 static const int image_pbheight;
377 static const int image_minwidth;
378 static const int image_minheight;
380 static const int image_chkwidth;
381 static const int image_chkheight;
383 static const int image_bbwidth;
384 static const int image_bbheight;
386 static const int image_twidth;
387 static const int image_theight;
389 static const int image_bwidth;
390 static const int image_bheight;
392 static const int image_dragtoff;
393 static const int image_dragtspace;
395 static const int image_draghotzone;
397 static const int image_ctrly;
398 static const int image_totaly;
403 void updatePixmap(
char *oldData,
char *newData);
404 void configureCspace(
bool state);
405 void setCspaceProjMode(
bool pmode);
406 void resizeImage(
void);
407 void openViewerEpilogue(rviewFrameType ft);
408 int freeDimsFromProjection(
int &dim1,
int &dim2, r_Point *map);
409 void ensureViewCspace(
void);
410 void deleteViewCspace(
void);
411 virtual void projectObjectHook(
void);
412 virtual void configureMode(
void);
413 virtual char *initMode(
void)=0;
414 virtual bool cspaceRangeHook(
bool suggest);
415 virtual char *movieNewFrame(
void);
416 virtual void rotateObject(wxMouseEvent &mevt);
417 virtual int fileMenuInitHook(wxMenu *menu);
418 virtual int configMenuInitHook(wxMenu *menu);
420 virtual bool modeNeedsCspace(rviewBaseType bt)
const;
421 virtual bool canRotateObject(
void)
const;
422 virtual bool moviePossible(
void)
const;
423 virtual bool showScaleSlider(
void)
const;
425 virtual int saveView(FILE *fp);
426 virtual int readView(
const char *key,
const char *value);
427 virtual void loadViewFinished(
void);
431 rviewSlider *scaleSlider;
432 int pixWidth, pixHeight, pixPitch, pixPad, pixDepth;
436 int scrollx, scrolly;
437 float mousex, mousey;
439 unsigned int freeDims;
441 colourspaceMapper *csmap;
443 bool doFullRangeCspace;
444 bool doProjRangeCspace;
448 bool initPhaseFinished;
449 r_Minterval *csInterv;
451 rviewButton *playFwd, *playBack, *playStop;
455 colourspace_params *cspar;
458 static const char *view_ScrollPos;
459 static const char *view_UseCspace;
460 static const char *view_CspaceFull;
461 static const char *view_CspaceProj;
462 static const char *view_CspaceMeans;
463 static const char *view_CspaceSigmas;
464 static const char *view_CspaceType;
465 static const char *view_CspaceRange;
466 static const char *view_ScaleValue;
473 class rviewFlatBaseImage:
public rviewImage
477 rviewFlatBaseImage(mdd_frame *mf,
int es,
unsigned int flags=0);
478 virtual ~rviewFlatBaseImage(
void);
480 virtual int newProjection(
void);
481 virtual int openViewer(
void);
483 virtual const char *getFrameName(
void)
const;
484 virtual rviewFrameType getFrameType(
void)
const;
489 virtual char *initMode(
void);
490 char *projectImage(
void);
497 class rviewFlatImage:
public rviewFlatBaseImage
501 rviewFlatImage(mdd_frame *mf,
unsigned int flags=0);
502 ~rviewFlatImage(
void);
504 void OnSize(
int w,
int h);
506 virtual int openViewer(
void);
507 virtual void label(
void);
508 virtual int process(wxObject &obj, wxEvent &evt);
510 virtual const char *getFrameName(
void)
const;
511 virtual rviewFrameType getFrameType(
void)
const;
512 virtual int getViewerType(
void)
const;
517 virtual char *initMode(
void);
518 virtual bool moviePossible(
void)
const;
519 virtual char *movieNewFrame(
void);
526 class rviewRenderImage:
public rviewImage
530 rviewRenderImage(mdd_frame *mf,
int es,
unsigned int flags=0);
531 virtual ~rviewRenderImage(
void);
533 virtual void label(
void);
534 virtual int process(wxObject &obj, wxEvent &evt);
535 virtual int newProjection(
void);
536 virtual void prepareToDie(
void);
537 virtual int requestQuit(
int level);
538 virtual int userEvent(
const user_event &ue);
539 virtual void OnSize(
int w,
int h);
540 virtual void OnMenuCommand(
int id);
541 virtual bool OnClose(
void);
543 virtual const char *getFrameName(
void)
const;
544 virtual rviewFrameType getFrameType(
void)
const;
546 void closeEditor(
bool newSetup);
547 void updateSettings(
int setFlags);
549 void closeRendererControls(
void);
550 void setAutoRotation(
float rx,
float ry,
float rz);
551 void setCurrentView(
const vertex_fp &angles,
long off,
double scale);
556 virtual char *initMode(
void);
557 virtual char *setupEnvironment(
int w,
int h)=0;
558 virtual void rotateObject(wxMouseEvent &mevt);
559 virtual bool doUpdate(
int updateFlags)=0;
560 virtual void redrawSettingsChanged(
void);
561 virtual void fillBuffer(
void)=0;
562 virtual void fillBackgroundCore(rviewBaseType bt,
double minVal);
563 virtual int configMenuInitHook(wxMenu *menu);
564 virtual int viewMenuInitHook(wxMenu *menu);
565 virtual bool canRotateObject(
void)
const;
566 virtual void updateCurrentView(
void);
568 int setupEnvBase(
int w,
int h, r_Ref<r_GMarray> &mdd, colourspaceMapper **csm, r_Minterval *csdom);
569 char *setupGraphEnv(
void);
570 void fillBufferBackground(
bool doCspace,
bool &cspaceOK, r_Ref<r_GMarray>& obj, colourspaceMapper **csm, r_Minterval *csdom, rviewBaseType bt,
bool fullRange,
double *useMinVal=NULL);
571 void translateBufferToCspace(rviewBaseType bt,
double *useMinVal=NULL,
double *useMaxVal=NULL);
572 static void rotateCube(
int axis,
float angle, vertex_fp *matrix);
573 void rotateCube(
int axis,
float angle);
574 void getLightPos(vertex_fp *lpos);
576 virtual int saveView(FILE *fp);
577 virtual int readView(
const char *key,
const char *value);
578 virtual void loadViewFinished(
void);
581 void matrixToAngles(vertex_fp &angles)
const;
582 void anglesToMatrix(
const vertex_fp &angles);
584 int rendererPlayback;
585 vertex_fp *geomData, *geomUse;
599 rview_image_setup setup;
600 rviewImageSetup *setupWindow;
601 rendererControl *rcontrol;
602 rendererCurrentView *rcurview;
605 static const char *view_ZProject;
606 static const char *view_ZClip;
607 static const char *view_PixThreshLow;
608 static const char *view_PixThreshHigh;
609 static const char *view_WeightThresh;
610 static const char *view_WeightQuant;
611 static const char *view_UseRGBBright;
612 static const char *view_UseLighting;
613 static const char *view_LightAmbient;
614 static const char *view_LightGain;
615 static const char *view_LightAngle;
616 static const char *view_LightScint;
617 static const char *view_LightDir;
618 static const char *view_LightDist;
619 static const char *view_KernelSize;
620 static const char *view_KernelType;
621 static const char *view_UseVoxColour;
622 static const char *view_VoxColour;
623 static const char *view_GridSize;
624 static const char *view_ScaleHeight;
625 static const char *view_Rotation;
626 static const char *view_ZOffset;
634 class rviewVolumeImage:
public rviewRenderImage
638 rviewVolumeImage(mdd_frame *mf,
unsigned int flags=0);
639 virtual ~rviewVolumeImage(
void);
641 virtual void label(
void);
642 virtual int process(wxObject &obj, wxEvent &evt);
643 virtual void OnSize(
int w,
int h);
644 virtual void OnMenuCommand(
int id);
645 virtual int openViewer(
void);
647 virtual const char *getFrameName(
void)
const;
648 virtual rviewFrameType getFrameType(
void)
const;
649 virtual int getViewerType(
void)
const;
654 virtual char *initMode(
void);
655 virtual char *setupEnvironment(
int w,
int h);
656 virtual bool doUpdate(
int updateFlags);
657 virtual void fillBuffer(
void);
659 virtual int saveView(FILE *fp);
660 virtual int readView(
const char *key,
const char *value);
661 virtual void loadViewFinished(
void);
663 rviewCheckBox *boundingBox;
664 rviewImageMode imode;
671 static const char *view_VolumeMode;
672 static const char *view_UseBBox;
679 class rviewHeightImage:
public rviewRenderImage
683 rviewHeightImage(mdd_frame *mf,
unsigned int flags=0);
684 virtual ~rviewHeightImage(
void);
686 virtual void label(
void);
687 virtual int process(wxObject &obj, wxEvent &evt);
688 virtual int newProjection(
void);
689 virtual void prepareToDie(
void);
690 virtual int requestQuit(
int level);
691 virtual int openViewer(
void);
693 virtual const char *getFrameName(
void)
const;
694 virtual rviewFrameType getFrameType(
void)
const;
695 virtual int getViewerType(
void)
const;
700 int depthForHeightfield(
void)
const;
701 virtual char *initMode(
void);
702 virtual char *setupEnvironment(
int w,
int h);
703 virtual char *movieNewFrame(
void);
704 virtual bool doUpdate(
int updateFlags);
705 virtual void redrawSettingsChanged(
void);
706 virtual void fillBackgroundCore(rviewBaseType bt,
double minVal);
707 virtual void fillBuffer(
void);
708 virtual bool cspaceRangeHook(
bool suggest);
709 virtual bool moviePossible(
void)
const;
710 virtual bool modeNeedsCspace(rviewBaseType bt)
const;
715 r_Ref<r_GMarray> dummyMDD;
723 class r_Fast_Base_Scale;
725 class rviewScaledImage:
public rviewFlatBaseImage
729 rviewScaledImage(collection_desc *cd, r_Fast_Base_Scale *scaler,
unsigned int flags=0);
730 ~rviewScaledImage(
void);
732 virtual void processMouseEvent(wxMouseEvent &mevt);
733 virtual void label(
void);
734 virtual int process(wxObject &obj, wxEvent &evt);
735 virtual int openViewer(
void);
736 virtual void OnSize(
int w,
int h);
737 virtual int newProjection(
void);
739 virtual const char *getFrameName(
void)
const;
740 virtual rviewFrameType getFrameType(
void)
const;
741 virtual int getViewerType(
void)
const;
742 virtual const r_Minterval &getVirtualDomain(
void)
const;
747 virtual char *initMode(
void);
748 virtual void projectObjectHook(
void);
750 char *projectImage(
void);
751 bool showScaleSlider(
void)
const;
752 void scaleViewBy(
double scale);
753 void newView(
bool loadImage=
TRUE);
754 void projectionStringForView(
void);
755 double getLastScale(
void)
const;
758 virtual int saveView(FILE *fp);
759 virtual int readView(
const char *key,
const char *value);
760 virtual void loadViewFinished(
void);
761 void ensureLoadedView(
void);
763 rviewButton *zoomInBut;
764 rviewButton *zoomOutBut;
765 rviewButton *lastZoomBut;
766 rviewButton *zoomBoxBut;
767 rviewText *scaleString;
778 bool compareViews(
const view_desc_t &v1,
const view_desc_t &v2);
781 view_desc_t thisView;
782 r_Minterval fullDomain;
785 view_desc_t *loadedView;
787 DynamicStack<view_desc_t> viewHistory;
789 r_Fast_Base_Scale *scaleObject;
791 collection_desc *collDesc;
793 static const double scaleStep;
796 static const char *view_CurrentBox;
797 static const char *view_BoxScale;
802 typedef struct rviewFlatProjEnv
811 colourspaceMapper *csmap;
815 int pitch, pad, depth;
819 int rviewPrepareFlatProjection(rviewFlatProjEnv &penv);
821 int rviewPerformFlatProjection(rviewFlatProjEnv &env,
char *data);
840 class chartCanvas:
public wxCanvas
844 chartCanvas(wxWindow *parent,
int x,
int y,
int w,
int h,
long style=0);
847 void setData(mdd_frame *mf, rviewBaseType bt);
848 void setVars(
int s,
double cs,
int ds,
bool cy, rviewChartMode cm);
849 int setProjection(r_Point &p1, r_Point &p2);
854 static const int chcanv_cospace;
856 static const int chcanv_colength;
858 static const int chcanv_exponents;
864 void redrawBar(wxDC *cdc,
int height,
int dim,
int startOff,
int endOff,
float scale,
float posx,
float stepx,
float orgy);
865 void redrawLine(wxDC *cdc,
int dim,
int startOff,
int endOff,
float scale,
float posx,
float stepx,
float orgy);
866 void redrawSpline(wxDC *cdc,
int dim,
int startOff,
int endOff,
float scale,
float posx,
float stepx,
float orgy);
868 r_Ref<r_GMarray> mddObj;
872 rviewBaseType baseType;
873 rviewChartMode cmode;
875 wxBrush brush_r, brush_g, brush_b;
876 wxPen pen, pen_r, pen_g, pen_b;
880 int coleft, datastep;
889 class rviewChart:
public rviewDisplay
893 rviewChart(mdd_frame *mf,
unsigned int flags=0);
897 int process(wxObject &obj, wxEvent &evt);
898 int newProjection(
void);
899 virtual int openViewer(
void);
901 void OnSize(
int w,
int h);
902 void OnMenuCommand(
int id);
904 virtual const char *getFrameName(
void)
const;
905 virtual rviewFrameType getFrameType(
void)
const;
906 virtual int getViewerType(
void)
const;
910 static const int chart_twidth;
911 static const int chart_theight;
913 static const int chart_cwidth;
914 static const int chart_cheight;
916 static const int chart_minwidth;
917 static const int chart_minheight;
918 static const int chart_ctrly;
919 static const int chart_totaly;
924 virtual int saveView(FILE *fp);
925 virtual int readView(
const char *key,
const char *value);
926 virtual void loadViewFinished(
void);
928 void checkModeMenu(
void);
936 rviewChartMode cmode;
937 rviewText *stText, *coText, *dataText;
938 rviewCheckBox *csBox;
940 static const char *view_StepSize;
941 static const char *view_Markers;
942 static const char *view_ScrollPos;
943 static const char *view_CoSys;
944 static const char *view_ChartMode;
953 class textCanvas:
public wxCanvas
957 textCanvas(wxWindow *parent,
int x,
int y,
int w,
int h,
long style=0);
960 void setData(mdd_frame *mf, rviewBaseType bt,
unsigned int bs);
961 void setStep(
int sx,
int sy);
962 void setCoSys(
bool cs,
int &cl,
int &ct);
963 void setProjection(r_Point &pt1, r_Point &pt2,
unsigned int fd, r_Point *mapIndex=NULL);
964 void setNumberBase(
int newBase);
966 void CalcTextExtent(
char *b,
float &width,
float &height);
967 void EstimateCellSize(
int &width,
int &height);
971 static const int txcanv_cospace;
973 static const int txcanv_colspace;
975 static const int txcanv_border;
980 r_Ref<r_GMarray> mddObj;
981 int stepx, stepy, dimMDD;
982 int scrollX, scrollY;
985 unsigned int freeDims;
989 rviewBaseType baseType;
990 unsigned int baseSize;
1002 class rviewTable:
public rviewDisplay
1006 rviewTable(mdd_frame *mf,
unsigned int flags=0);
1010 int process(wxObject &obj, wxEvent &evt);
1011 int newProjection(
void);
1012 void newTableSize(
void);
1013 virtual int openViewer(
void);
1015 virtual const char *getFrameName(
void)
const;
1016 virtual rviewFrameType getFrameType(
void)
const;
1017 virtual int getViewerType(
void)
const;
1019 void OnSize(
int w,
int h);
1020 void OnMenuCommand(
int id);
1024 static const int table_twidth;
1025 static const int table_theight;
1027 static const int table_cwidth;
1028 static const int table_cheight;
1030 static const int table_minwidth;
1031 static const int table_minheight;
1032 static const int table_ctrly;
1033 static const int table_totaly;
1038 void EstimateCellSize(
int &width,
int &height);
1040 virtual int saveView(FILE *fp);
1041 virtual int readView(
const char *key,
const char *value);
1042 virtual void loadViewFinished(
void);
1044 void checkModeMenu(
void);
1048 int scrollx, scrolly;
1049 int fieldsx, fieldsy;
1051 unsigned int freeDims;
1053 rviewText *sxText, *syText;
1054 rviewCheckBox *csBox;
1057 static const char *view_StepSize;
1058 static const char *view_ScrollPos;
1059 static const char *view_CoSys;
1060 static const char *view_NumBase;
1069 class rviewStringViewer:
public rviewDisplay
1073 rviewStringViewer(mdd_frame *mf,
unsigned int flags=0);
1074 ~rviewStringViewer(
void);
1076 int newProjection(
void);
1077 virtual int openViewer(
void);
1079 virtual const char *getFrameName(
void)
const;
1080 virtual rviewFrameType getFrameType(
void)
const;
1081 virtual int getViewerType(
void)
const;
1083 void OnSize(
int w,
int h);
1086 static const int strview_msgheight;
1087 static const int strview_minwidth;
1088 static const int strview_minheight;
1089 static const int strview_ctrly;
1090 static const int strview_totaly;
1095 unsigned int freeDims;
1096 wxMessage *msgString;
#define FALSE
Definition: defs.h:70
#define min(a, b)
Definition: defs.h:78
#define max(a, b)
Definition: defs.h:77
#define TRUE
Definition: defs.h:67