mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-20 02:40:03 +02:00
WIP
This commit is contained in:
parent
0f2641f9fa
commit
4f5b8c17b2
@ -9,7 +9,7 @@ class qCloneWidget;
|
|||||||
|
|
||||||
class QGridLayout;
|
class QGridLayout;
|
||||||
class QGroupBox;
|
class QGroupBox;
|
||||||
class QwtSymbol;
|
|
||||||
#include <QFutureWatcher>
|
#include <QFutureWatcher>
|
||||||
|
|
||||||
class qDrawPlot : public QWidget {
|
class qDrawPlot : public QWidget {
|
||||||
@ -75,7 +75,6 @@ class qDrawPlot : public QWidget {
|
|||||||
void SetupPlots();
|
void SetupPlots();
|
||||||
int LockLastImageArray();
|
int LockLastImageArray();
|
||||||
int UnlockLastImageArray();
|
int UnlockLastImageArray();
|
||||||
void SetStyleandSymbol(SlsQtH1D *h);
|
|
||||||
void GetStatistics(double &min, double &max, double &sum);
|
void GetStatistics(double &min, double &max, double &sum);
|
||||||
void DetachHists();
|
void DetachHists();
|
||||||
static void GetProgressCallBack(double currentProgress, void *this_pointer);
|
static void GetProgressCallBack(double currentProgress, void *this_pointer);
|
||||||
@ -141,8 +140,6 @@ class qDrawPlot : public QWidget {
|
|||||||
int currentPersistency{0};
|
int currentPersistency{0};
|
||||||
bool isLines{true};
|
bool isLines{true};
|
||||||
bool isMarkers{false};
|
bool isMarkers{false};
|
||||||
QwtSymbol *marker{nullptr};
|
|
||||||
QwtSymbol *noMarker{nullptr};
|
|
||||||
bool isPedestal{false};
|
bool isPedestal{false};
|
||||||
double *pedestalVals{nullptr};
|
double *pedestalVals{nullptr};
|
||||||
double *tempPedestalVals{nullptr};
|
double *tempPedestalVals{nullptr};
|
||||||
|
@ -13,6 +13,11 @@
|
|||||||
#ifndef SLSQT1DPLOT_H
|
#ifndef SLSQT1DPLOT_H
|
||||||
#define SLSQT1DPLOT_H
|
#define SLSQT1DPLOT_H
|
||||||
|
|
||||||
|
|
||||||
|
typedef double double32_t;
|
||||||
|
typedef float float32_t;
|
||||||
|
typedef int int32_t;
|
||||||
|
|
||||||
#include "ansi.h"
|
#include "ansi.h"
|
||||||
|
|
||||||
|
|
||||||
@ -26,6 +31,7 @@
|
|||||||
|
|
||||||
class QPen;
|
class QPen;
|
||||||
class SlsQt1DPlot;
|
class SlsQt1DPlot;
|
||||||
|
class QwtSymbol;
|
||||||
|
|
||||||
class SlsQtH1D:public QwtPlotCurve{
|
class SlsQtH1D:public QwtPlotCurve{
|
||||||
|
|
||||||
@ -40,6 +46,8 @@ class SlsQtH1D:public QwtPlotCurve{
|
|||||||
int SetLineColor(int c=-1);
|
int SetLineColor(int c=-1);
|
||||||
int SetLineWidth(int w=1);
|
int SetLineWidth(int w=1);
|
||||||
void SetLineStyle(int s=0);
|
void SetLineStyle(int s=0);
|
||||||
|
void setStyleLinesorDots(bool isLines);
|
||||||
|
void setSymbolMarkers(bool isMarker);
|
||||||
|
|
||||||
void SetData(int n, double xmin, double xmax, double* d=0);
|
void SetData(int n, double xmin, double xmax, double* d=0);
|
||||||
void SetData(int n, double* dx, double* dy);
|
void SetData(int n, double* dx, double* dy);
|
||||||
@ -72,7 +80,6 @@ class SlsQtH1D:public QwtPlotCurve{
|
|||||||
double *x,*y;
|
double *x,*y;
|
||||||
double ymin,ymax;
|
double ymin,ymax;
|
||||||
double firstXgt0,firstYgt0;
|
double firstXgt0,firstYgt0;
|
||||||
|
|
||||||
void Initailize();
|
void Initailize();
|
||||||
int SetUpArrays(int n);
|
int SetUpArrays(int n);
|
||||||
int CheckIndex(int bx);
|
int CheckIndex(int bx);
|
||||||
@ -120,8 +127,8 @@ class SlsQt1DPlot:public QwtPlot{
|
|||||||
/** This group of functions have been added by Dhanya on 19.06.2012 to be able to
|
/** This group of functions have been added by Dhanya on 19.06.2012 to be able to
|
||||||
use zooming functionality without mouse control*/
|
use zooming functionality without mouse control*/
|
||||||
void DisableZoom(bool disable);
|
void DisableZoom(bool disable);
|
||||||
void EnableXAutoScaling() {setAxisAutoScale(QwtPlot::xBottom, true);};
|
void EnableXAutoScaling() {setAxisAutoScale(QwtPlot::xBottom, true);Update();};
|
||||||
void EnableYAutoScaling() {setAxisAutoScale(QwtPlot::yLeft, true);};
|
void EnableYAutoScaling() {setAxisAutoScale(QwtPlot::yLeft, true);Update();};
|
||||||
void SetXMinMax(double min,double max){setAxisScale(QwtPlot::xBottom,min,max);};
|
void SetXMinMax(double min,double max){setAxisScale(QwtPlot::xBottom,min,max);};
|
||||||
void SetYMinMax(double min,double max){setAxisScale(QwtPlot::yLeft,min,max);};
|
void SetYMinMax(double min,double max){setAxisScale(QwtPlot::yLeft,min,max);};
|
||||||
double GetXMinimum(){return hist_list->Hist()->GetXMin();};
|
double GetXMinimum(){return hist_list->Hist()->GetXMin();};
|
||||||
|
@ -50,10 +50,9 @@ class SlsQt1DZoomer:public QwtPlotZoomer{
|
|||||||
|
|
||||||
#if QWT_VERSION<0x060000
|
#if QWT_VERSION<0x060000
|
||||||
virtual QwtText trackerText(const QwtDoublePoint &pos) const{
|
virtual QwtText trackerText(const QwtDoublePoint &pos) const{
|
||||||
#elif QWT_VERSION==0x060000
|
|
||||||
virtual QwtText trackerText(const QPointF &pos) const{
|
|
||||||
#else
|
#else
|
||||||
virtual QwtText trackerTextF(const QPointF &pos) const{
|
using QwtPlotPicker::trackerText;
|
||||||
|
virtual QwtText trackerText(const QPoint &pos) const{
|
||||||
#endif
|
#endif
|
||||||
QColor bg(Qt::white);
|
QColor bg(Qt::white);
|
||||||
|
|
||||||
@ -64,8 +63,7 @@ class SlsQt1DZoomer:public QwtPlotZoomer{
|
|||||||
#if QWT_VERSION<0x060000
|
#if QWT_VERSION<0x060000
|
||||||
QwtText text = QwtPlotZoomer::trackerText(pos);
|
QwtText text = QwtPlotZoomer::trackerText(pos);
|
||||||
#else
|
#else
|
||||||
QPoint p=pos.toPoint();
|
QwtText text = QwtPlotPicker::trackerText(pos);
|
||||||
QwtText text = QwtPlotZoomer::trackerText(p);
|
|
||||||
#endif
|
#endif
|
||||||
text.setBackgroundBrush( QBrush( bg ));
|
text.setBackgroundBrush( QBrush( bg ));
|
||||||
return text;
|
return text;
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include <qwt_scale_draw.h>
|
#include <qwt_scale_draw.h>
|
||||||
#include <qwt_scale_engine.h>
|
#include <qwt_scale_engine.h>
|
||||||
#include <qwt_scale_widget.h>
|
#include <qwt_scale_widget.h>
|
||||||
|
#include "qwt_symbol.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#if QWT_VERSION >= 0x060100
|
#if QWT_VERSION >= 0x060100
|
||||||
@ -124,6 +125,23 @@ void SlsQtH1D::SetLineStyle(int s) {
|
|||||||
setPen(*pen_ptr);
|
setPen(*pen_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SlsQtH1D::setStyleLinesorDots(bool isLines) {
|
||||||
|
setStyle(isLines ? QwtPlotCurve::Lines : QwtPlotCurve::Dots);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SlsQtH1D::setSymbolMarkers(bool isMarker) {
|
||||||
|
QwtSymbol* marker = new QwtSymbol();
|
||||||
|
if (isMarker) {
|
||||||
|
marker->setStyle(QwtSymbol::Cross);
|
||||||
|
marker->setSize(5, 5);
|
||||||
|
}
|
||||||
|
#if QWT_VERSION < 0x060000
|
||||||
|
setSymbol(*marker);
|
||||||
|
#else
|
||||||
|
setSymbol(marker);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void SlsQtH1D::SetData(int n, double xmin, double xmax, double *data) {
|
void SlsQtH1D::SetData(int n, double xmin, double xmax, double *data) {
|
||||||
n = SetUpArrays(n);
|
n = SetUpArrays(n);
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include "qwt_symbol.h"
|
|
||||||
#include <QtConcurrentRun>
|
#include <QtConcurrentRun>
|
||||||
|
|
||||||
|
|
||||||
@ -17,6 +16,7 @@
|
|||||||
qDrawPlot::qDrawPlot(QWidget *parent, multiSlsDetector *detector)
|
qDrawPlot::qDrawPlot(QWidget *parent, multiSlsDetector *detector)
|
||||||
: QWidget(parent), myDet(detector) {
|
: QWidget(parent), myDet(detector) {
|
||||||
SetupWidgetWindow();
|
SetupWidgetWindow();
|
||||||
|
FILE_LOG(logINFO) << "Plots ready";
|
||||||
}
|
}
|
||||||
|
|
||||||
qDrawPlot::~qDrawPlot() {
|
qDrawPlot::~qDrawPlot() {
|
||||||
@ -60,10 +60,6 @@ qDrawPlot::~qDrawPlot() {
|
|||||||
delete layout;
|
delete layout;
|
||||||
if (plotLayout)
|
if (plotLayout)
|
||||||
delete plotLayout;
|
delete plotLayout;
|
||||||
if (marker)
|
|
||||||
delete marker;
|
|
||||||
if (noMarker)
|
|
||||||
delete noMarker;
|
|
||||||
if (widgetStatistics)
|
if (widgetStatistics)
|
||||||
delete widgetStatistics;
|
delete widgetStatistics;
|
||||||
if (lblMinDisp)
|
if (lblMinDisp)
|
||||||
@ -83,12 +79,6 @@ void qDrawPlot::SetupWidgetWindow() {
|
|||||||
lblFrameIndexTitle1d = new QLabel("");
|
lblFrameIndexTitle1d = new QLabel("");
|
||||||
lblFrameIndexTitle1d->setFixedHeight(10);
|
lblFrameIndexTitle1d->setFixedHeight(10);
|
||||||
|
|
||||||
// marker
|
|
||||||
marker = new QwtSymbol();
|
|
||||||
marker->setStyle(QwtSymbol::Cross);
|
|
||||||
marker->setSize(5, 5);
|
|
||||||
noMarker = new QwtSymbol();
|
|
||||||
|
|
||||||
// save
|
// save
|
||||||
try {
|
try {
|
||||||
std::string temp = myDet->getFilePath();
|
std::string temp = myDet->getFilePath();
|
||||||
@ -180,39 +170,37 @@ void qDrawPlot::SetupPlots() {
|
|||||||
boxPlot->setFlat(true);
|
boxPlot->setFlat(true);
|
||||||
boxPlot->setContentsMargins(0, 15, 0, 0);
|
boxPlot->setContentsMargins(0, 15, 0, 0);
|
||||||
|
|
||||||
// setup 1d plot
|
// setup 1d data
|
||||||
plot1d = new SlsQt1DPlot(boxPlot);
|
|
||||||
plot1d->setFont(QFont("Sans Serif", 9, QFont::Normal));
|
|
||||||
plot1d->SetXTitle(xTitle1d.toAscii().constData());
|
|
||||||
plot1d->SetYTitle(yTitle1d.toAscii().constData());
|
|
||||||
plot1d->hide();
|
|
||||||
// setup data
|
|
||||||
if (datax1d)
|
if (datax1d)
|
||||||
delete[] datax1d;
|
delete[] datax1d;
|
||||||
datax1d = new double[nPixelsX];
|
datax1d = new double[nPixelsX];
|
||||||
for (auto &it : datay1d) {
|
|
||||||
delete[] it;
|
|
||||||
}
|
|
||||||
if (datay1d.size()) {
|
if (datay1d.size()) {
|
||||||
|
for (auto &it : datay1d) {
|
||||||
|
delete[] it;
|
||||||
|
}
|
||||||
datay1d.clear();
|
datay1d.clear();
|
||||||
}
|
}
|
||||||
datay1d.push_back(new double[nPixelsX]);
|
datay1d.push_back(new double[nPixelsX]);
|
||||||
// default display data
|
// default display data
|
||||||
for (unsigned int px = 0; px < nPixelsX; ++px) {
|
for (unsigned int px = 0; px < nPixelsX; ++px) {
|
||||||
datax1d[px] = px;
|
datax1d[px] = px;
|
||||||
datay1d[0][px] = px;
|
datay1d[0][px] = 0;
|
||||||
}
|
}
|
||||||
// add a hist
|
// add a hist
|
||||||
SlsQtH1D *h = new SlsQtH1D("", nPixelsX, datax1d, datay1d[0]);
|
SlsQtH1D *h = new SlsQtH1D("", nPixelsX, datax1d, datay1d[0]);
|
||||||
h->SetLineColor(0);
|
h->SetLineColor(0);
|
||||||
SetStyleandSymbol(h);
|
h->setStyleLinesorDots(isLines);
|
||||||
|
h->setSymbolMarkers(isMarkers);
|
||||||
hists1d.append(h);
|
hists1d.append(h);
|
||||||
|
// setup 1d plot
|
||||||
|
plot1d = new SlsQt1DPlot(boxPlot);
|
||||||
|
plot1d->setFont(QFont("Sans Serif", 9, QFont::Normal));
|
||||||
|
plot1d->SetXTitle(xTitle1d.toAscii().constData());
|
||||||
|
plot1d->SetYTitle(yTitle1d.toAscii().constData());
|
||||||
|
plot1d->hide();
|
||||||
h->Attach(plot1d);
|
h->Attach(plot1d);
|
||||||
plot1d->DisableZoom(true);
|
|
||||||
|
|
||||||
// setup 2d plot
|
// setup 2d data
|
||||||
plot2d = new SlsQt2DPlotLayout(boxPlot);
|
|
||||||
// default display data
|
|
||||||
if (data2d)
|
if (data2d)
|
||||||
delete [] data2d;
|
delete [] data2d;
|
||||||
data2d = new double[nPixelsY * nPixelsX];
|
data2d = new double[nPixelsY * nPixelsX];
|
||||||
@ -223,17 +211,6 @@ void qDrawPlot::SetupPlots() {
|
|||||||
pow(nPixelsX / 2, 2) / pow(1 + 1, 2) +
|
pow(nPixelsX / 2, 2) / pow(1 + 1, 2) +
|
||||||
pow(double(py) - nPixelsY / 2, 2) / pow(nPixelsY / 2, 2)) /
|
pow(double(py) - nPixelsY / 2, 2) / pow(nPixelsY / 2, 2)) /
|
||||||
sqrt(2);
|
sqrt(2);
|
||||||
plot2d->setFont(QFont("Sans Serif", 9, QFont::Normal));
|
|
||||||
plot2d->GetPlot()->SetData(nPixelsX, -0.5, nPixelsX - 0.5, nPixelsY,
|
|
||||||
-0.5, nPixelsY - 0.5, data2d);
|
|
||||||
plot2d->setTitle("");
|
|
||||||
plot2d->SetXTitle(xTitle2d);
|
|
||||||
plot2d->SetYTitle(yTitle2d);
|
|
||||||
plot2d->SetZTitle(zTitle2d);
|
|
||||||
plot2d->setAlignment(Qt::AlignLeft);
|
|
||||||
|
|
||||||
// gainplot
|
|
||||||
gainplot2d = new SlsQt2DPlotLayout(boxPlot);
|
|
||||||
if (gainData)
|
if (gainData)
|
||||||
delete [] gainData;
|
delete [] gainData;
|
||||||
gainData = new double[nPixelsY * nPixelsX];
|
gainData = new double[nPixelsY * nPixelsX];
|
||||||
@ -244,6 +221,17 @@ void qDrawPlot::SetupPlots() {
|
|||||||
pow(nPixelsX / 2, 2) / pow(1 + 1, 2) +
|
pow(nPixelsX / 2, 2) / pow(1 + 1, 2) +
|
||||||
pow(double(py) - nPixelsY / 2, 2) / pow(nPixelsY / 2, 2)) /
|
pow(double(py) - nPixelsY / 2, 2) / pow(nPixelsY / 2, 2)) /
|
||||||
sqrt(2);
|
sqrt(2);
|
||||||
|
// setup 2d plot
|
||||||
|
plot2d = new SlsQt2DPlotLayout(boxPlot);
|
||||||
|
plot2d->setFont(QFont("Sans Serif", 9, QFont::Normal));
|
||||||
|
plot2d->GetPlot()->SetData(nPixelsX, -0.5, nPixelsX - 0.5, nPixelsY,
|
||||||
|
-0.5, nPixelsY - 0.5, data2d);
|
||||||
|
plot2d->setTitle("");
|
||||||
|
plot2d->SetXTitle(xTitle2d);
|
||||||
|
plot2d->SetYTitle(yTitle2d);
|
||||||
|
plot2d->SetZTitle(zTitle2d);
|
||||||
|
plot2d->setAlignment(Qt::AlignLeft);
|
||||||
|
gainplot2d = new SlsQt2DPlotLayout(boxPlot);
|
||||||
gainplot2d->setFont(QFont("Sans Serif", 9, QFont::Normal));
|
gainplot2d->setFont(QFont("Sans Serif", 9, QFont::Normal));
|
||||||
gainplot2d->GetPlot()->SetData(nPixelsX, -0.5, nPixelsX - 0.5, nPixelsY,
|
gainplot2d->GetPlot()->SetData(nPixelsX, -0.5, nPixelsX - 0.5, nPixelsY,
|
||||||
-0.5, nPixelsY - 0.5, gainData);
|
-0.5, nPixelsY - 0.5, gainData);
|
||||||
@ -280,23 +268,23 @@ int64_t qDrawPlot::GetCurrentFrameIndex() {
|
|||||||
|
|
||||||
void qDrawPlot::Select1dPlot(bool enable) {
|
void qDrawPlot::Select1dPlot(bool enable) {
|
||||||
if (enable) {
|
if (enable) {
|
||||||
|
is1d = true;
|
||||||
// DetachHists(); it clears the last measurement
|
// DetachHists(); it clears the last measurement
|
||||||
plot1d->SetXTitle(xTitle1d.toAscii().constData());
|
plot1d->SetXTitle(xTitle1d.toAscii().constData());
|
||||||
plot1d->SetYTitle(yTitle1d.toAscii().constData());
|
plot1d->SetYTitle(yTitle1d.toAscii().constData());
|
||||||
plot1d->show();
|
plot1d->show();
|
||||||
plot2d->hide();
|
plot2d->hide();
|
||||||
boxPlot->setFlat(false);
|
boxPlot->setFlat(false);
|
||||||
is1d = true;
|
|
||||||
layout->addWidget(lblFrameIndexTitle1d, 0, 0);
|
layout->addWidget(lblFrameIndexTitle1d, 0, 0);
|
||||||
plotLayout->setContentsMargins(10, 10, 10, 10);
|
plotLayout->setContentsMargins(10, 10, 10, 10);
|
||||||
} else {
|
} else {
|
||||||
|
is1d = false;
|
||||||
plot2d->SetXTitle(xTitle2d);
|
plot2d->SetXTitle(xTitle2d);
|
||||||
plot2d->SetYTitle(yTitle2d);
|
plot2d->SetYTitle(yTitle2d);
|
||||||
plot2d->SetZTitle(zTitle2d);
|
plot2d->SetZTitle(zTitle2d);
|
||||||
plot1d->hide();
|
plot1d->hide();
|
||||||
plot2d->show();
|
plot2d->show();
|
||||||
boxPlot->setFlat(true);
|
boxPlot->setFlat(true);
|
||||||
is1d = false;
|
|
||||||
lblFrameIndexTitle1d->setText("");
|
lblFrameIndexTitle1d->setText("");
|
||||||
layout->removeWidget(lblFrameIndexTitle1d);
|
layout->removeWidget(lblFrameIndexTitle1d);
|
||||||
plotLayout->setContentsMargins(0, 0, 0, 0);
|
plotLayout->setContentsMargins(0, 0, 0, 0);
|
||||||
@ -405,7 +393,7 @@ void qDrawPlot::SetLines(bool enable) {
|
|||||||
isLines = enable;
|
isLines = enable;
|
||||||
for (unsigned int i = 0; i < nHists; ++i) {
|
for (unsigned int i = 0; i < nHists; ++i) {
|
||||||
SlsQtH1D* h = hists1d.at(i);
|
SlsQtH1D* h = hists1d.at(i);
|
||||||
SetStyleandSymbol(h);
|
h->setStyleLinesorDots(isLines);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -415,7 +403,7 @@ void qDrawPlot::SetMarkers(bool enable) {
|
|||||||
isMarkers = enable;
|
isMarkers = enable;
|
||||||
for (unsigned int i = 0; i < nHists; ++i) {
|
for (unsigned int i = 0; i < nHists; ++i) {
|
||||||
SlsQtH1D* h = hists1d.at(i);
|
SlsQtH1D* h = hists1d.at(i);
|
||||||
SetStyleandSymbol(h);
|
h->setSymbolMarkers(isMarkers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -575,14 +563,6 @@ void qDrawPlot::SavePlot() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void qDrawPlot::SetStyleandSymbol(SlsQtH1D *h) {
|
|
||||||
h->setStyle(isLines ? QwtPlotCurve::Lines : QwtPlotCurve::Dots);
|
|
||||||
#if QWT_VERSION < 0x060000
|
|
||||||
h->setSymbol(isMarkers ? *marker : *noMarker);
|
|
||||||
#else
|
|
||||||
h->setSymbol(isMarkers ? marker : noMarker);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void qDrawPlot::GetStatistics(double &min, double &max, double &sum) {
|
void qDrawPlot::GetStatistics(double &min, double &max, double &sum) {
|
||||||
FILE_LOG(logDEBUG) << "Calculating Statistics";
|
FILE_LOG(logDEBUG) << "Calculating Statistics";
|
||||||
@ -796,7 +776,8 @@ void qDrawPlot::Get1dData(double* rawData) {
|
|||||||
datay1d.push_back(new double [nPixelsX]);
|
datay1d.push_back(new double [nPixelsX]);
|
||||||
SlsQtH1D* h = new SlsQtH1D("", nPixelsX, datax1d, datay1d[i]);
|
SlsQtH1D* h = new SlsQtH1D("", nPixelsX, datax1d, datay1d[i]);
|
||||||
h->SetLineColor(i);
|
h->SetLineColor(i);
|
||||||
SetStyleandSymbol(h);
|
h->setStyleLinesorDots(isLines);
|
||||||
|
h->setSymbolMarkers(isMarkers);
|
||||||
hists1d.append(h);
|
hists1d.append(h);
|
||||||
}
|
}
|
||||||
// copy previous data
|
// copy previous data
|
||||||
|
Binary file not shown.
@ -7,4 +7,4 @@
|
|||||||
#define APICTB 0x190604
|
#define APICTB 0x190604
|
||||||
#define APIEIGER 0x190712
|
#define APIEIGER 0x190712
|
||||||
#define APIJUNGFRAU 0x190712
|
#define APIJUNGFRAU 0x190712
|
||||||
#define APIGOTTHARD 0x190712
|
#define APIGOTTHARD 0x190715
|
||||||
|
Loading…
x
Reference in New Issue
Block a user