Line data Source code
1 :
2 : /* Copyright (c) 2006-2016, Stefan Eilemann <eile@equalizergraphics.com>
3 : * Daniel Nachbaur <danielnachbaur@gmail.com>
4 : *
5 : * This library is free software; you can redistribute it and/or modify it under
6 : * the terms of the GNU Lesser General Public License version 2.1 as published
7 : * by the Free Software Foundation.
8 : *
9 : * This library is distributed in the hope that it will be useful, but WITHOUT
10 : * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 : * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12 : * details.
13 : *
14 : * You should have received a copy of the GNU Lesser General Public License
15 : * along with this library; if not, write to the Free Software Foundation, Inc.,
16 : * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 : */
18 :
19 : #include "frame.h"
20 :
21 : #include "frameData.h"
22 : #include "image.h"
23 : #include <eq/util/objectManager.h>
24 :
25 : namespace eq
26 : {
27 : namespace detail
28 : {
29 : class Frame
30 : {
31 : public:
32 : FrameDataPtr frameData;
33 :
34 : ZoomFilter zoomFilter; // texture filter
35 :
36 1 : Frame() : zoomFilter( FILTER_LINEAR ) {}
37 1 : ~Frame()
38 1 : {
39 1 : if( frameData )
40 1 : LBDEBUG << "FrameData attached in frame destructor" << std::endl;
41 1 : }
42 : };
43 : }
44 :
45 1 : Frame::Frame()
46 1 : : _impl( new detail::Frame )
47 : {
48 1 : }
49 :
50 2 : Frame::~Frame()
51 : {
52 1 : delete _impl;
53 1 : }
54 :
55 0 : void Frame::setZoomFilter( const ZoomFilter zoomFilter )
56 : {
57 0 : _impl->zoomFilter = zoomFilter;
58 0 : }
59 :
60 0 : ZoomFilter Frame::getZoomFilter() const
61 : {
62 0 : return _impl->zoomFilter;
63 : }
64 :
65 1 : void Frame::setFrameData( FrameDataPtr data )
66 : {
67 1 : _impl->frameData = data;
68 1 : }
69 :
70 0 : FrameDataPtr Frame::getFrameData()
71 : {
72 0 : return _impl->frameData;
73 : }
74 :
75 189 : ConstFrameDataPtr Frame::getFrameData() const
76 : {
77 189 : return _impl->frameData;
78 : }
79 :
80 0 : uint32_t Frame::getBuffers() const
81 : {
82 0 : return _impl->frameData->getBuffers();
83 : }
84 :
85 21 : const Images& Frame::getImages() const
86 : {
87 21 : return _impl->frameData->getImages();
88 : }
89 :
90 0 : void Frame::clear()
91 : {
92 0 : _impl->frameData->clear();
93 0 : }
94 :
95 0 : void Frame::deleteGLObjects( util::ObjectManager& om )
96 : {
97 0 : if( _impl->frameData )
98 0 : _impl->frameData->deleteGLObjects( om );
99 0 : }
100 :
101 0 : void Frame::setAlphaUsage( const bool useAlpha )
102 : {
103 0 : if( _impl->frameData )
104 0 : _impl->frameData->setAlphaUsage( useAlpha );
105 0 : }
106 :
107 0 : void Frame::setQuality( const Buffer buffer, const float quality )
108 : {
109 0 : if( _impl->frameData )
110 0 : _impl->frameData->setQuality( buffer, quality );
111 0 : }
112 :
113 0 : void Frame::useCompressor( const Buffer buffer, const uint32_t name )
114 : {
115 0 : if( _impl->frameData )
116 0 : _impl->frameData->useCompressor( buffer, name );
117 0 : }
118 :
119 0 : void Frame::readback( util::ObjectManager& glObjects,
120 : const DrawableConfig& config,
121 : const PixelViewports& regions,
122 : const RenderContext& context )
123 : {
124 : const Images& images =
125 : _impl->frameData->startReadback( *this, glObjects, config, regions,
126 0 : context );
127 0 : for( Image* image : images )
128 0 : image->finishReadback( glObjects.glewGetContext( ));
129 0 : }
130 :
131 0 : Images Frame::startReadback( util::ObjectManager& glObjects,
132 : const DrawableConfig& config,
133 : const PixelViewports& regions,
134 : const RenderContext& context )
135 : {
136 : return _impl->frameData->startReadback( *this, glObjects, config, regions,
137 0 : context );
138 : }
139 :
140 0 : void Frame::setReady()
141 : {
142 0 : _impl->frameData->setReady();
143 0 : }
144 :
145 0 : bool Frame::isReady() const
146 : {
147 0 : return _impl->frameData->isReady();
148 : }
149 :
150 21 : void Frame::waitReady( const uint32_t timeout ) const
151 : {
152 21 : _impl->frameData->waitReady( timeout );
153 21 : }
154 :
155 0 : void Frame::disableBuffer( const Buffer buffer )
156 : {
157 0 : _impl->frameData->disableBuffer( buffer );
158 0 : }
159 :
160 0 : void Frame::addListener( lunchbox::Monitor<uint32_t>& listener )
161 : {
162 0 : _impl->frameData->addListener( listener );
163 0 : }
164 :
165 0 : void Frame::removeListener( lunchbox::Monitor<uint32_t>& listener )
166 : {
167 0 : _impl->frameData->removeListener( listener );
168 0 : }
169 :
170 42 : }
|