comparison Framework/Deprecated/Widgets/CairoWidget.cpp @ 732:c35e98d22764

move Deprecated classes to a separate folder
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 21 May 2019 14:27:35 +0200
parents Framework/Widgets/CairoWidget.cpp@4f2416d519b4
children 2d8ab34c8c91
comparison
equal deleted inserted replaced
729:529189f399ec 732:c35e98d22764
1 /**
2 * Stone of Orthanc
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
4 * Department, University Hospital of Liege, Belgium
5 * Copyright (C) 2017-2019 Osimis S.A., Belgium
6 *
7 * This program is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU Affero General Public License
9 * as published by the Free Software Foundation, either version 3 of
10 * the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Affero General Public License for more details.
16 *
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 **/
20
21
22 #include "CairoWidget.h"
23
24 #include <Core/Images/ImageProcessing.h>
25 #include <Core/OrthancException.h>
26
27 namespace Deprecated
28 {
29 static bool IsAligned(const Orthanc::ImageAccessor& target)
30 {
31 // TODO
32 return true;
33 }
34
35 CairoWidget::CairoWidget(const std::string& name) :
36 WidgetBase(name)
37 {
38 }
39
40 void CairoWidget::SetSize(unsigned int width,
41 unsigned int height)
42 {
43 surface_.SetSize(width, height, false /* no alpha */);
44 }
45
46
47 bool CairoWidget::Render(Orthanc::ImageAccessor& target)
48 {
49 // Don't call the base class here, as
50 // "ClearBackgroundCairo()" is a faster alternative
51
52 if (IsAligned(target))
53 {
54 OrthancStone::CairoSurface surface(target, false /* no alpha */);
55 OrthancStone::CairoContext context(surface);
56 ClearBackgroundCairo(context);
57 return RenderCairo(context);
58 }
59 else
60 {
61 OrthancStone::CairoContext context(surface_);
62 ClearBackgroundCairo(context);
63
64 if (RenderCairo(context))
65 {
66 Orthanc::ImageAccessor surface;
67 surface_.GetReadOnlyAccessor(surface);
68 Orthanc::ImageProcessing::Copy(target, surface);
69 return true;
70 }
71 else
72 {
73 return false;
74 }
75 }
76 }
77
78
79 void CairoWidget::RenderMouseOver(Orthanc::ImageAccessor& target,
80 int x,
81 int y)
82 {
83 if (IsAligned(target))
84 {
85 OrthancStone::CairoSurface surface(target, false /* no alpha */);
86 OrthancStone::CairoContext context(surface);
87 RenderMouseOverCairo(context, x, y);
88 }
89 else
90 {
91 Orthanc::ImageAccessor accessor;
92 surface_.GetWriteableAccessor(accessor);
93 Orthanc::ImageProcessing::Copy(accessor, target);
94
95 OrthancStone::CairoContext context(surface_);
96 RenderMouseOverCairo(context, x, y);
97
98 Orthanc::ImageProcessing::Copy(target, accessor);
99 }
100 }
101 }