00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
#ifndef _D_INTERN_H
00012
#define _D_INTERN_H
00013
00014
#include "utils\u_utils.h"
00015
#include "MOTRSTRG\M_MOTCOM.H"
00016
00017
00018
00019 const UINT
stdx= 500;
00020 const UINT
stdy= 500;
00021
00023 struct TScreen
00024 {
00025 int x0,
x1,
dx,
00026
y0,
y1,
dy;
00027 };
00028
00029 struct TDisplay
00030 {
00031 double dThetaWindow,
dMoveRelation,
dOmegaMin,
dOmegaMax;
00032 double dThetaMinFirst,
dThetaMaxFirst,
dThetaMinLast,
dThetaMaxLast;
00033 float fAngleRange,
fAngleStep;
00034 BOOL
bPsd;
00035 };
00036
00037 const UINT
_COLORS= 256;
00038
00039 class TColorTable
00040 {
00041
public:
00042 TColorTable() :
ColorMap(
_COLORS, 255) {
00043
place.left=
place.top=
place.right=
place.bottom= 0;
00044
zMin=
zMax= 0;
00045 strcpy(
zUnit,
"");
00046 };
00047
00048 RECT
place;
00049 float zMin,
zMax;
00050 char zUnit[
_MAXLENUNIT+1 ];
00051 TFloatList ColorMap;
00052 };
00053
00054
00055 enum EScale
00056 {
00057
sLogarithmic= 1,
sLinear,
sUser
00058 };
00059
00064 struct TCoorSystem
00065 {
00066 double xMin,
xMax,
xSF;
00067 double yMin,
yMax,
ySF;
00068 double zMin,
zMax,
zSF;
00069 EScale xScal,
yScal,
zScal;
00070 };
00071
00073 enum EOutputType
00074 {
00075
otReciprokeLatticeBitmap= 1,
otMatrixBitmap= 2,
otCurve= 3
00076 };
00077
00079 #define DegToRad(val) ((val) * 0.01745329251994)
00080 #define RadToDeg(val) ((val) / 0.01745329251994)
00081
00083 #define ArToRLx(_ome, _the) ((cos((_the)-(_ome))- cos(_ome)))
00084 #define ArToRLy(_ome, _the) ((sin((_the)-(_ome))+ sin(_ome)))
00085
00086
00087
00088
00089
00090
00091
class TPlotWindow;
00092
00093
00094
00095
00097
00098 class TCurveFreeScalDlg :
public TModalDlg
00099 {
00100
friend class TCurveFreeScalColorWindow;
00101
public:
00102
TCurveFreeScalDlg(
TPlotWindow* );
00103
00104
00105
private:
00106
virtual BOOL Dlg_OnInit( HWND, HWND, LPARAM );
00107
virtual void Dlg_OnCommand( HWND,
int, HWND, UINT );
00108
virtual BOOL
CanClose(
void );
00109
virtual void LeaveDialog(
void );
00110
00111
00112
private:
00113
int GetFarbeId(UINT);
00114
int GetBereichId(UINT);
00115
00116
00117
private:
00119
TPlotWindow *PlotWindow;
00120 };
00121
00122
00123
00124
00126
00127 class TCurveShowParamDlg :
public TModalDlg
00128 {
00129
public:
00130
TCurveShowParamDlg(
TPlotWindow* );
00131
00132
00133
private:
00134
virtual BOOL Dlg_OnInit( HWND, HWND, LPARAM );
00135
virtual void Dlg_OnCommand( HWND,
int, HWND, UINT );
00136
virtual void Dlg_OnHScrollBar(HWND , HWND , UINT ,
int );
00137
virtual BOOL
CanClose(
void );
00138
virtual void LeaveDialog(
void );
00139
00140
00141
private:
00143
TPlotWindow *PlotWindow;
00144
00146
int scrolldxpos, scrolldypos;
00147
00149
00150
00152 HWND hWndOutputT, hWndScaleT, hWndScrolldx, hWndScrolldy;
00153 };
00154
00155
00156
00157
00159
00160 class TBMContens
00161 {
00162
public:
00163 TBMContens() {
omega=
theta=
intens= 0; };
00164
00165 float omega,
theta,
intens;
00166 };
00167
00168 const RLAreaPkts= 41;
00169
00170 class TBitmapSource
00171 {
00172
friend class TPlotWindow;
00173
friend class TCurveShowParamDlg;
00174
friend class TCurveFreeScalDlg;
00175
friend class TCurveFreeScalColorWindow;
00176
00177
public:
00179
TBitmapSource(
TPlotWindow* );
00180
00182
virtual ~TBitmapSource();
00183
00184
public:
00186
00187
00189
void FormatDBaseToBitmapSource(
void );
00190
00192 void UpdateBitmapSource(
void ) {};
00193
00194
00195
public:
00196 bool IsDatenInited() {
return m_DatenInited; };
00197
00198
00199
00200
float GetOmega(UINT aRow, UINT aCol);
00201
float GetTheta(UINT aRow, UINT aCol);
00202
float GetIntens(UINT aRow, UINT aCol);
00203
00204
00205
bool SetOmega(UINT aRow, UINT aCol,
float aValue);
00206
bool SetTheta(UINT aRow, UINT aCol,
float aValue);
00207
bool SetIntens(UINT aRow, UINT aCol,
float aValue);
00208
00209
private:
00210
void CreateDaten(UINT aRows, UINT aCols);
00211
bool CheckKoord(UINT &aRow, UINT &aCol);
00212
void FreeDaten();
00213
00214
void New(
void );
00215
00217
void LoadBitmap( HDC );
00218
00220 DWORD GetImageSize(
void );
00221
00226
void DrawBitmapFrame( HDC );
00227
00230
void SetScreen( HDC,
TScreen& );
00231
00233
void DrawColorTable( HDC,
TColorTable& );
00234
00237
void DrawMeasurementArea( HDC );
00238
00240
void FillBMInfoFromPalette( LOGPALETTE* );
00241
00244
void DrawBitmap( HDC,
int,
int );
00245
00248 HBITMAP CreateGDIObject( HDC );
00249
00251 HGLOBAL RenderDIB(
void );
00252
00254 LOGPALETTE *GetPalette(
void );
00255
00257 LOGPALETTE *CreatePaletteFromDIB(
void );
00258
00260 LOGPALETTE *CreateDefaultPalette(
void );
00261
00264
00265
00269
void ColorDef(
void);
00270
00273
void BereichDef(
void);
00274
00276
int GetColor(
float );
00277
00279
void GenerateAngleSpaceBitmap(
void);
00280
00282
void GenerateRLBitmap(
void );
00283
00284
00285
private:
00286
00287
double clogval;
00288
double clinval;
00289 HBITMAP hBitmap;
00290 POINT RLArea[
RLAreaPkts];
00291
00292
private:
00294
TPlotWindow *PlotWindow;
00295
00297
TCoorSystem *BMCoorSys;
00298
00300
TCurveFreeScalColorWindow *UserFarb;
00301
00302
00306
TBMContens **m_Daten;
00307
00308
00309 UINT m_DatenRows, m_DatenCols;
00310
00312
00313
bool m_DatenInited;
00314
00315
00318 BOOL bGrayScalePalette;
00319
00321
TColorTable ColorTable;
00322
00324 HGLOBAL hDIBInfo;
00325
00326 HGLOBAL hDIBData;
00327
00328 HGLOBAL hMemPal;
00329
00330 HPALETTE hPalette, hOldPalette;
00331
00334
00336
00338
TFloatList ber;
00339
00341
TIntList farbe;
00342
00345
char Fileold[
MaxString];
00346 };
00347
00348
00349
00350
00351
00352 class TCurveFreeScalColorWindow :
public TMDIWindow
00353 {
00354
public:
00356
TCurveFreeScalColorWindow(HINSTANCE,
TPlotWindow*);
00357
00359
virtual ~TCurveFreeScalColorWindow(
void);
00360
00361
00362
private:
00363
virtual void Create(HWND hwnd);
00364
virtual BOOL
SetTitle();
00365
virtual void Paint(HDC, PAINTSTRUCT*);
00366
00367
00368
private:
00370
void DrawColorTable(HDC);
00371
00372
00373
protected:
00375 TPlotWindow *
PlotWindow;
00376 };
00377
00378
#endif // _D_INTERN_H
00379
00380
00381
00382