#pragma once
#include <windows.h>
#include <windowsx.h>
#include "datareader.h"
#define elemof(x) (sizeof(x)/sizeof(*(x)))
#define nobreak
struct Rect:public RECT{
int width() const {return right-left;}
int height() const {return bottom-top;}
const int&operator[](int x) const {return (const int&)(&left)[x];}
};
struct RANGE{
float a,e;
};
enum{
TOPX = 0,
BOTTOMX = 2,
LEFTY = 5,
RIGHTY = 7,
};
struct SCALE{
char*name,*format,*unit;
DWORD unitcode;
BYTE side; // Bit 2:0 = Position und Spiegelung, Bit 5 = logarithmisch
BYTE autoscale;
BYTE delaytime;
BYTE flags;
};
struct SCALEPAIR{
float f,o;
};
// Geeignet für einen globalen Sample-Puffer für alle Plots mit Round-Robin-Befüllung
// Die Daten sollten Array-Of-Struct sein, wobei sich mehrere Samples einen X-Wert teilen können
// oder keine X-Werte haben. (Das kommt dann auf die richtige Initialisierung von SAMPLEREADER an.)
// Die Daten im Sample-Puffer sollten schlicht Rohdaten sein.
// Liefert die Applikation dem Plot keinen Sample-Puffer, beschafft sich der Plot seinen eigenen.
// NaNs und INFs werden ausgeblendet.
struct SAMPLES{
FLEXDATA ptr; // Universeller Zeiger auf Samples
UINT siz,start,fill,inc; // „fill“ und ggf. „start“ rücken mit jedem Sample-Schreiben vor
};
struct SAMPLEREADER{
SAMPLES*sa;
BYTE typeX,typeY; // Datentyp der X- und Y-Werte, 0..9 für analog
BYTE alloc; // Wer „sa“ und „sa->ptr“ wie freizugeben hat, Default: 0
BYTE flags; // Ob X-Werte vorliegen (Bit 0) und ob sx.o verwendet wird (Bit 1)
UINT ofsX,ofsY; // wo sich X- und Y-Daten im (Ring-)Puffer befinden
SCALEPAIR sx; // Wenn Zeit dann sx.f = Zeitschritt und sx.o = Zeit-Ursprung
SCALEPAIR sy; // Faktor und Offset für die Rohdaten
};
struct PLOT{
const char*name;
char index,xscale,yscale;
char lineStyle,lineWidth,interpol,fillTo,marker;
SAMPLEREADER sr;
};
// Für die Anwendung im Dialog (wenig ++)
enum{
PM_DELETEPLOT=0x401, // Plot Nr. <wParam> löschen; wParam=-1: Alle Plots löschen
PM_SETPLOT, // Plot Nr. <wParam> ersetzen, wParam=-1: Plot an Plotliste anhängen
PM_ADDSAMPLE, // Sample <lParam> an Plot <wParam> anhängen; wParam=-1: Sample-Liste an Plots anhängen
PM_ADDSAMPLES, // Mehrere Samples an alle Plots anhängen
PM_SETSCALE, // Skale <wParam> ersetzen oder hinzufügen
PM_SAVE, // Speichern des Plots in Registry-Key <wParam>, Name <lParam> oder in Puffer <lParam> Länge <wParam>
PM_RESTORE, // Laden des Plots aus Registry-Key <wParam>, Name <lParam> oder aus Puffer <lParam> Länge <wParam>
};
BOOL PlotInit(void);
Detected encoding: ANSI (CP1252) | 4
|
|