~ubuntu-branches/ubuntu/wily/ginkgocadx/wily-proposed

« back to all changes in this revision

Viewing changes to src/visualizator/visualizator/wxvtk/reconstruction/pipelines/ipipeline.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Tille
  • Date: 2011-05-02 08:09:26 UTC
  • Revision ID: james.westby@ubuntu.com-20110502080926-bql5wep49c7hg91t
Tags: upstream-2.4.1.1
ImportĀ upstreamĀ versionĀ 2.4.1.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
*
 
3
*  $Id: ipipeline.cpp 3558 2011-03-20 20:02:22Z carlos $
 
4
*  Ginkgo CADx Project
 
5
*
 
6
*  Copyright 2008-10 MetaEmotion S.L. All rights reserved.
 
7
*  http://ginkgo-cadx.com
 
8
*
 
9
*  This file is licensed under LGPL v3 license.
 
10
*  See License.txt for details
 
11
*
 
12
*
 
13
*/
 
14
#if defined(__DEPRECATED)
 
15
#undef __DEPRECATED
 
16
#endif
 
17
 
 
18
#include "../volumedataset/volumedataset.h"
 
19
#include "ipipeline.h"
 
20
#include <main/controllers/controladorlog.h>
 
21
#include <api/internacionalizacion.h>
 
22
 
 
23
#include <wx/window.h>
 
24
 
 
25
#include <vtkImageData.h>
 
26
#include <vtkRenderer.h>
 
27
#include <vtkRenderWindow.h>
 
28
#include <vtkCamera.h>
 
29
#include <vtkWindowToImageFilter.h>
 
30
#include <vtkJPEGWriter.h>
 
31
 
 
32
 
 
33
MedicalViewer::Reconstruction::Pipelines::IPipeline::IPipeline(const std::string& name, wxWindow* win3d) : PipelineName(name), Renderer(vtkSmartPointer<vtkRenderer>::New()), Initiallized(false), Win3D(win3d)
 
34
{
 
35
}
 
36
 
 
37
MedicalViewer::Reconstruction::Pipelines::IPipeline::~IPipeline()
 
38
{
 
39
}
 
40
 
 
41
GnkPtr<MedicalViewer::Reconstruction::Pipelines::IPipeline::TDataSet> MedicalViewer::Reconstruction::Pipelines::IPipeline::FindDataSet(unsigned int vol)
 
42
{
 
43
        unsigned int i = 0;
 
44
 
 
45
        for (TDataSetList::iterator it = DataSets.begin(); it != DataSets.end(); it++, i++) {
 
46
                if (i == vol) {
 
47
                        return *it;
 
48
                }
 
49
        }
 
50
        return GnkPtr<TDataSet>();
 
51
}
 
52
 
 
53
void MedicalViewer::Reconstruction::Pipelines::IPipeline::ResetCamera()
 
54
{
 
55
        Renderer->ResetCamera();
 
56
        Renderer->ResetCameraClippingRange();
 
57
}
 
58
 
 
59
void MedicalViewer::Reconstruction::Pipelines::IPipeline::Print(const std::string& dest)
 
60
{
 
61
        LOG_DEBUG(PipelineName, _Std("Saving frame..."));
 
62
 
 
63
        try {
 
64
                vtkSmartPointer<vtkWindowToImageFilter> screen = vtkSmartPointer<vtkWindowToImageFilter>::New();
 
65
                vtkSmartPointer<vtkJPEGWriter> imgWriter = vtkSmartPointer<vtkJPEGWriter>::New();
 
66
 
 
67
                screen->SetInput(this->Renderer->GetRenderWindow());
 
68
                imgWriter->SetInput(screen->GetOutput());
 
69
                imgWriter->SetQuality(100);
 
70
                imgWriter->SetFileName(dest.c_str());
 
71
                imgWriter->ProgressiveOff();
 
72
                imgWriter->Write();
 
73
 
 
74
                LOG_DEBUG(PipelineName, _Std("Saving done"));
 
75
 
 
76
        }
 
77
        catch (...)
 
78
        {
 
79
                LOG_ERROR(PipelineName, _Std("Saving failed"));
 
80
        }
 
81
}
 
82
 
 
83
void MedicalViewer::Reconstruction::Pipelines::IPipeline::Render()
 
84
{
 
85
        if (!Initiallized) {
 
86
                Initiallized = true;
 
87
                ResetCamera();
 
88
        }
 
89
        if (Win3D) {
 
90
                Win3D->Refresh(false);
 
91
        }
 
92
}
 
93
 
 
94
void MedicalViewer::Reconstruction::Pipelines::IPipeline::RotateDemo(double angle)
 
95
{
 
96
 
 
97
        if (Renderer) {
 
98
                vtkCamera* cam = Renderer->GetActiveCamera();
 
99
                if (cam) {
 
100
                        //cam->Roll(angle);
 
101
                        cam->Azimuth(angle);
 
102
                        Renderer->ResetCameraClippingRange();
 
103
                }
 
104
        }
 
105
 
 
106
}