SlsDetectorReconstruction.cpp 2.34 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
//###########################################################################
// This file is part of LImA, a Library for Image Acquisition
//
// Copyright (C) : 2009-2011
// European Synchrotron Radiation Facility
// BP 220, Grenoble 38043
// FRANCE
//
// This is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, see <http://www.gnu.org/licenses/>.
//###########################################################################
#include "SlsDetectorReconstruction.h"

using namespace lima;
using namespace lima::SlsDetector;
using namespace std;

/*******************************************************************
 * \brief ReconstructionCtrlObj constructor
 *******************************************************************/

Reconstruction::CtrlObjProxy::CtrlObjProxy(Reconstruction *r)
{
	DEB_CONSTRUCTOR();
	if (!r)
		THROW_HW_ERROR(InvalidValue) << "Invalid NULL reconstruction";
	else if (r->m_proxy)
		THROW_HW_ERROR(InvalidValue) << "Reconstruction has a proxy";

	m_r = r;
	m_r->m_proxy = this;
}

Reconstruction::CtrlObjProxy::~CtrlObjProxy()
{
	DEB_DESTRUCTOR();
	if (m_r)
		m_r->m_proxy = NULL;
}

LinkTask *Reconstruction::CtrlObjProxy::getReconstructionTask()
{
	DEB_MEMBER_FUNCT();
	LinkTask *task = (m_r && m_r->m_active) ? m_r : NULL;
	DEB_RETURN() << DEB_VAR1(task);
	return task;
}

Reconstruction::Reconstruction()
	: m_proxy(NULL), m_active(false)
{
	DEB_CONSTRUCTOR();
}

Reconstruction::~Reconstruction()
{
	DEB_DESTRUCTOR();
	if (m_proxy)
		m_proxy->m_r = NULL;
}

void Reconstruction::setActive(bool active)
{
	DEB_MEMBER_FUNCT();
	DEB_PARAM() << DEB_VAR2(active, m_active);
	if (active == m_active)
		return;
	m_active = active;
	if (m_proxy)
		m_proxy->reconstructionChange(m_active ? this : NULL);
}

void Reconstruction::getActive(bool& active)
{
	DEB_MEMBER_FUNCT();
	active = m_active;
	DEB_RETURN() << DEB_VAR1(active);
}