Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   Related Pages  

wxCrystal.h

00001 /*
00002 * LibCryst++ : a Crystallographic computing library in C++
00003 *
00004 *  (c) 2000 Vincent FAVRE-NICOLIN
00005 *           Laboratoire de Cristallographie
00006 *           24, quai Ernest-Ansermet, CH-1211 Geneva 4, Switzerland
00007 *  Contact: Vincent.Favre-Nicolin@cryst.unige.ch
00008 *           Radovan.Cerny@cryst.unige.ch
00009 *
00010 */
00011 /*
00012 *  header file for the RefinablePar and RefinableObj classes
00013 *
00014 * This is still in early development stages !! Not secure !
00015 *
00016 */
00017 
00018 #ifndef _VFN_WX_CRYSTAL_H_
00019 #define _VFN_WX_CRYSTAL_H_
00020 
00021 #include "wx/glcanvas.h"
00022 
00023 #include "wxCryst/wxRefinableObj.h"
00024 #include "ObjCryst/Crystal.h"
00025 
00026 namespace ObjCryst
00027 {
00028 class WXGLCrystalCanvas;
00029 
00031 class WXCrystal: public WXRefinableObj
00032 {
00033    public:
00034       WXCrystal(wxWindow *parent, Crystal*);
00035       virtual void CrystUpdate();
00037       void UpdateGL(const bool onlyIndependentAtoms=false,
00038                     const double xMin=-.1,const double xMax=1.1,
00039                     const double yMin=-.1,const double yMax=1.1,
00040                     const double zMin=-.1,const double zMax=1.1);
00043       int GrabCrystalGLDisplayList()const;
00044       void ReleaseCrystalGLDisplayList()const;
00046       void OnMenuCrystalGL(wxCommandEvent & WXUNUSED(event));
00048       void NotifyCrystalGLDelete();
00049       void OnMenuSaveCIF(wxCommandEvent & WXUNUSED(event));
00050       void OnMenuSaveText(wxCommandEvent & WXUNUSED(event));
00051       void OnMenuAddScattPowAtom(wxCommandEvent & WXUNUSED(event));
00052       void OnMenuRemoveScattPow(wxCommandEvent & WXUNUSED(event));
00053       void OnMenuAddScatterer(wxCommandEvent & event);
00054       void OnMenuRemoveScatterer(wxCommandEvent & WXUNUSED(event));
00055       void OnMenuAddAntiBumpDist(wxCommandEvent & WXUNUSED(event));
00056       bool OnChangeName(const int id);
00057    private:
00058       Crystal* mpCrystal;
00060          WXFieldRefPar* mpFieldLatticeA;
00061          WXFieldRefPar* mpFieldLatticeB;
00062          WXFieldRefPar* mpFieldLatticeC;
00063          WXFieldRefPar* mpFieldLatticeAlpha;
00064          WXFieldRefPar* mpFieldLatticeBeta;
00065          WXFieldRefPar* mpFieldLatticeGamma;
00067          WXFieldName* mpFieldSpacegroup;
00069          WXRegistry<Scatterer>* mpWXScattererRegistry;
00071          WXRegistry<ScatteringPower>* mpWXScatteringPowerRegistry;
00072          
00073       //OpenGl
00075          unsigned int mCrystalGLDisplayList;
00077          mutable bool mCrystalGLDisplayListIsLocked;
00079          WXGLCrystalCanvas* mpCrystalGL;
00080    DECLARE_EVENT_TABLE()
00081 };
00082 
00084 class WXGLCrystalCanvas : public wxGLCanvas
00085 {
00086    public:
00087       WXGLCrystalCanvas(WXCrystal *wxcryst,
00088                         wxFrame *parent, wxWindowID id=-1,
00089                         const wxPoint &pos=wxDefaultPosition,
00090                         const wxSize &size=wxDefaultSize);
00091       ~WXGLCrystalCanvas();
00092       void OnExit(wxCommandEvent &event);
00093       void OnPaint(wxPaintEvent &event);
00094       void OnSize(wxSizeEvent& event);
00095       void OnEraseBackground(wxEraseEvent& event);
00096       void OnKeyDown(wxKeyEvent& event);
00097       void OnKeyUp(wxKeyEvent& event);
00098       void OnEnterWindow( wxMouseEvent& event );
00099       void OnMouse( wxMouseEvent& event );
00101       void OnUpdate(wxCommandEvent & WXUNUSED(event));
00102       void CrystUpdate();
00103       void OnChangeLimits(wxCommandEvent & WXUNUSED(event));
00104    private:
00105       void InitGL();
00107       WXCrystal* mpWXCrystal;
00109       bool mIsGLInit;
00111       float mQuat [4];
00113       float mTrackBallLastX,mTrackBallLastY;
00115       float mDist;
00117       float mViewAngle;
00119       wxMenu* mpPopUpMenu;
00120       float mXmin,mXmax,mYmin,mYmax,mZmin,mZmax;
00121    DECLARE_EVENT_TABLE()
00122 };
00123 
00124 
00125 } //namespace
00126 
00127 #endif //_VFN_WX_CRYSTAL_H_

Generated on Wed Nov 14 19:48:36 2001 for ObjCryst++ by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001