Equalizer
1.4.1
|
00001 00002 /* Copyright (c) 2006-2012, Stefan Eilemann <eile@equalizergraphics.com> 00003 * 2010, Cedric Stalder <cedric.stalder@gmail.com> 00004 * 00005 * This library is free software; you can redistribute it and/or modify it under 00006 * the terms of the GNU Lesser General Public License version 2.1 as published 00007 * by the Free Software Foundation. 00008 * 00009 * This library is distributed in the hope that it will be useful, but WITHOUT 00010 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00011 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 00012 * details. 00013 * 00014 * You should have received a copy of the GNU Lesser General Public License 00015 * along with this library; if not, write to the Free Software Foundation, Inc., 00016 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 00017 */ 00018 00019 #ifndef EQ_FRAME_H 00020 #define EQ_FRAME_H 00021 00022 #include <eq/client/api.h> 00023 #include <eq/client/types.h> 00024 #include <eq/client/zoomFilter.h> // enum 00025 #include <eq/fabric/frame.h> // base class 00026 00027 namespace eq 00028 { 00029 namespace detail{ class Frame; } 00030 00041 class Frame : public fabric::Frame 00042 { 00043 public: 00045 EQ_API Frame(); 00046 00048 EQ_API virtual ~Frame(); 00049 00053 EQ_API const std::string& getName() const; 00054 00059 EQ_API const Range& getRange() const; 00060 00065 EQ_API const Pixel& getPixel() const; 00066 00071 EQ_API const SubPixel& getSubPixel() const; 00072 00077 EQ_API uint32_t getPeriod() const; 00078 00083 EQ_API uint32_t getPhase() const; 00084 00089 EQ_API void setZoomFilter( const ZoomFilter zoomFilter ); 00090 00095 EQ_API ZoomFilter getZoomFilter() const; 00096 00098 EQ_API const Images& getImages() const; 00099 00100 #ifndef EQ_2_0_API 00101 00102 EQ_API void setData( FrameData* data ); 00103 00105 EQ_API FrameData* getData(); 00106 00108 EQ_API const FrameData* getData() const; 00109 #endif 00110 00111 EQ_API void setFrameData( FrameDataPtr data ); 00112 00114 EQ_API FrameDataPtr getFrameData(); 00115 00117 EQ_API ConstFrameDataPtr getFrameData() const; 00118 00120 EQ_API uint32_t getBuffers() const; 00121 00128 EQ_API void disableBuffer( const Buffer buffer ); 00129 00131 EQ_API void setAlphaUsage( const bool useAlpha ); 00132 00134 EQ_API void setQuality( const Frame::Buffer buffer, 00135 const float quality ); 00136 00138 EQ_API void useCompressor( const Frame::Buffer buffer, 00139 const uint32_t name ); 00141 00145 EQ_API void clear(); 00146 00148 void deleteGLObjects( ObjectManager* om ); 00149 00159 EQ_API void readback( ObjectManager* glObjects, 00160 const DrawableConfig& config ); 00161 00172 EQ_API void readback( ObjectManager* glObjects, 00173 const DrawableConfig& config, 00174 const PixelViewports& regions ); 00175 00189 EQ_API Images startReadback( ObjectManager* glObjects, 00190 const DrawableConfig& config, 00191 const PixelViewports& regions ); 00192 00200 void setReady(); 00201 00208 EQ_API bool isReady() const; 00209 00211 EQ_API void waitReady( const uint32_t timeout = 00212 LB_TIMEOUT_INDEFINITE ) const; 00213 00220 void addListener( lunchbox::Monitor<uint32_t>& listener ); 00221 00228 void removeListener( lunchbox::Monitor<uint32_t>& listener ); 00230 00231 private: 00232 detail::Frame* const _impl; 00233 }; 00234 }; 00235 #endif // EQ_FRAME_H