Polaroid.h (1749B)
1 // File : Polaroid.h 2 // Date : Tue Apr 26 14:41:37 2016 3 // Author : Fabian Wermelinger 4 // Description: Polaroid Camera base 5 // Copyright 2016 ETH Zurich. All Rights Reserved. 6 #ifndef POLAROID_H_HXFL9YPG 7 #define POLAROID_H_HXFL9YPG 8 9 #include "Types.h" 10 #include "Cartridge.h" 11 #include "ArgumentParser.h" 12 13 class PhotoPaper; 14 15 class Polaroid 16 { 17 protected: 18 Slice m_data; 19 bool m_dataLoaded; 20 21 // Cartridge 22 Cartridge* m_cartridge; 23 bool m_cartridgeInserted; 24 25 public: 26 Polaroid() : m_dataLoaded(false), m_cartridge(nullptr), m_cartridgeInserted(false) { } 27 Polaroid(Cartridge* cart) : m_dataLoaded(false), m_cartridge(cart), m_cartridgeInserted(true) { } 28 ~Polaroid() {} 29 30 // cartridge loader 31 inline void insertCartridge(Cartridge* cart) 32 { 33 // memory management of cartridges is not handled by the Polaroid cam 34 m_cartridge = cart; 35 m_cartridgeInserted = true; 36 } 37 38 // scene loader 39 void load_hdf5(const char* filename, ArgumentParser& parser); 40 void load_hdf5_slice(const char* filename, ArgumentParser& parser); 41 void load_wavelet(const char* filename, ArgumentParser& parser); 42 43 // capture scene 44 inline void capture(PhotoPaper& photo) 45 { 46 if (m_dataLoaded && m_cartridgeInserted) 47 m_cartridge->capture(photo, m_data); 48 } 49 inline void computeScene() 50 { 51 if (m_dataLoaded && m_cartridgeInserted) 52 m_cartridge->compute(m_data); 53 } 54 55 // data accessors 56 inline int width() const { return m_data.width(); } 57 inline int height() const { return m_data.height(); } 58 inline Real min() const { return m_data.min(); } 59 inline Real max() const { return m_data.max(); } 60 }; 61 62 #endif /* POLAROID_H_HXFL9YPG */