source: Sophya/branches/EA_Juin98/SophyaPI/PI/parradapter.h@ 1036

Last change on this file since 1036 was 104, checked in by ansari, 27 years ago

1/ Suite optimisation de gestion d'evts X pour PIBaseWdg
2/ introduction des adaptateurs pour tableaux 2-D (PIImage ...)

Reza 5/04/98

File size: 2.6 KB
Line 
1// This may look like C code, but it is really -*- C++ -*-
2// Classes ArrayAdapter R. Ansari 05/98
3// LAL (Orsay) / IN2P3-CNRS DAPNIA/SPP (Saclay) / CEA
4
5// Cette classe est un adaptateur pour les PIImages et
6// autres classes de PI qui operent sur des structures
7// de type Tableaux 2-D (images, ...)
8
9#ifndef PARRADAPTER_SEEN
10#define PARRADAPTER_SEEN
11
12#include "defs.h"
13#include "machine.h"
14#include "lut.h"
15
16class LUT;
17class P2DArrayAdapter {
18public :
19 P2DArrayAdapter(int sx=0, int sy=0);
20 virtual ~P2DArrayAdapter();
21
22 void ConfigureAxes(bool invx=false, bool invy=false, bool exy=false,
23 int sx=-1, int sy=-1);
24
25// Doit etre defini par les classes derivees
26 virtual float Value(int ix, int iy) = 0;
27
28 virtual void XYfromxy(int ix, int iy, float& x, float& y);
29
30 inline int XSize() { return ( eXY ? sY : sX ) ; }
31 inline int YSize() { return ( eXY ? sX : sY ) ; }
32
33 inline void XYCoord(int i, int j, float& x, float& y)
34 { int ix, iy; IJ2xy(i, j, ix, iy);
35 XYfromxy(ix, iy, x, y); }
36 inline float operator() (int i, int j)
37 { int ix, iy; IJ2xy(i, j, ix, iy);
38 return Value(ix, iy); }
39 inline void IJ2xy(int i, int j, int& x, int& y)
40 { if (eXY) {int ii = i; i = j; j = ii; }
41 x = i*sgnX+offX; y = j*sgnY+offY;
42 return; }
43
44// Calcul Min-Max, Moy-Sig
45 virtual int CheckDyn(float& min, float& max, float& moy, float& sig, int& nbnul, int& nbsat, int vit=10);
46// Calcul AutoLut
47 virtual void ComputeLut_PicHisto(float& min, float& max, int nbsig=1, float fracmax=0.95);
48
49// Calcul pixmap avec un LUT
50 virtual unsigned char * ComputePixmap(LUT* lut, int ofx, int ofy, int zm,
51 int xwsz, int ywsz, unsigned char * opix,
52 int * oxsp, int * oysp);
53protected :
54 int sX, sY;
55 int sgnX, sgnY;
56 int offX, offY;
57 bool invX, invY, eXY;
58};
59
60
61template <class T>
62class P2DAdapter : public P2DArrayAdapter {
63public :
64 P2DAdapter(T* data, int sx, int sy, bool ad=false) :
65 P2DArrayAdapter(sx, sy)
66 { aDel = ad; mData = data; }
67
68 virtual ~P2DAdapter() { if ( (aDel) && (mData != NULL) ) delete[] mData; }
69 virtual float Value(int ix, int iy)
70 { if ( (ix < 0) || (iy < 0) || (ix >= sX) || (iy >= sY) ) return(0.);
71 return(mData[ix+iy*sX]); }
72protected :
73 bool aDel;
74 T* mData;
75};
76
77
78
79#endif
Note: See TracBrowser for help on using the repository browser.