#include #include //--------------------------------------- #define WM_PAINTRASTER (WM_USER+1) #include #include #include #include #include ; //------------- class Color { int _r,_g,_b; public: Color() : _r(0), _g(0), _b(0) {}; Color(int r, int g, int b) : _r(r), _g(g), _b(b) {}; int r() {return _r;} int g() {return _g;} int b() {return _b;} COLORREF getRGB() { return RGB( _r, _g, _b ); } friend ostream& operator << (ostream& stm, const Color& c); friend istream& operator >> (istream& istm, Color& c); }; //----------------------------------------------------- class ColorScale : public TArray { double _minval , _maxval; int _cnum; public: ColorScale(int n, double minval, double maxval) : _cnum(n), _minval(minval), _maxval(maxval), TArray(n) {} int cnum() {return _cnum; } SetRange(double minval , double maxval ) { _maxval= maxval; _minval = minval; } Color GetColor( int i ) { return p()[i] ;} Color ValToCol(double val) { if ( val <= _minval) { return GetColor(0); } if ( _maxval <= val ) { return GetColor(_cnum-1); } int i = (int) ( _cnum*(val - _minval)/(_maxval - _minval) ); //cout<> (istream& istm, ColorScale& cs); }; long FAR PASCAL _export ElecWndProc (HWND, WORD, WORD, LONG) ; //********************************************** class Value { int _status; double _u; public: Value() : _status(0), _u(0){}; Value(int status, double u) : _status(status), _u(u) {}; double u() { return _u; } int status() { return _status; } SetVal(double u) { _u = u; } SetStatus(int status ) { _status = status; } friend ostream& operator << ( ostream& stm, const Value& v ) { stm<<"VALUE"<<","<> (istream& istm, const Value& v){}; }; //----------------------- template class Raster : public TArray { int _dimx; int _dimy; public: Raster(int dimx, int dimy): _dimx(dimx), _dimy(dimy), TArray(dimx*dimy) {} const int dimx() const { return _dimx; } const int dimy() const { return _dimy; } ResizeRaster( int dimx, int dimy ) { Resize( dimx*dimy ); _dimx = dimx; _dimy = dimy; } Setdimx(int dimx) { _dimx = dimx; } const T GetEntry(int i, int j) const { if( (i<1) | (i>dimx()) | (j<1) | (j>dimy())) { cout<dimx()) || (j<1) || (j>dimy()) ) { cout< surf(nx,ny); friend ostream& operator << ( ostream& stm, const Raster& sa ) { stm<<"RASTER("; for(long i=0;i> (istream& istm, const Raster& sa){}; }; //************************************* class Ground { public: Ground (HDC hdc,int x, int y ) { Pen p1( hdc, PS_SOLID , 255, 0, 0 ); Brusch b1(hdc, 255,0,0); //wire Rectangle ( hdc, x, y, x-30, y+4 ); Rectangle ( hdc, x-26, y, x-30, y+20 ); //arrow Rectangle ( hdc, x-47, y+23, x-9, y+28 ); Rectangle ( hdc, x-40, y+31, x-16, y+36 ); Rectangle ( hdc, x-31, y+39, x-23, y+44 ); } }; //************************************* #define EWND_EMPTY -1 #define EWND_OK 0 class ElectrodesWindow { Balloon _balloon; HWND _hwndParent; HWND _hwnd; HANDLE _hInstance; int _status; int _cxClient, _cyClient; int _maxHid, _maxVid; ColorScale * _pcol; Raster _raster; public: HWND hwnd(){return _hwnd;} ElectrodesWindow(HWND hwndParent, HANDLE hInstance, HANDLE hPrevInstance); ElectrodesWindow( HWND hwndParent, HANDLE hInstance, HANDLE hPrevInstance, ColorScale& colscal ); Raster * GetRaster() { return &_raster; } Init(int maxHid, int maxVid); void ElectrodesWindow::Register(HANDLE hInstance); int cxClient() { return _cxClient; } int cyClient() { return _cyClient; } Size(int cx, int cy,int width,int height); Paint(); PaintRaster(); PaintRaster(ColorScale &colscal); PaintRaster1(ColorScale &colscal); LButtonDown(WORD wParam, LONG lParam); LButtonUp(WORD wParam, LONG lParam); RButtonDown(WORD wParam, LONG lParam, ColorScale &colscal); SaveRasterAsContourGraphics(char * path); };