Program Listing for File layer_modifiers.h
↰ Return to documentation for file (include/cpphots/layer_modifiers.h)
#ifndef CPPHOTS_LAYER_MODIFIERS_H
#define CPPHOTS_LAYER_MODIFIERS_H
#include <vector>
#include "types.h"
#include "interfaces/layer_modifiers.h"
namespace cpphots {
struct ArrayLayer : public interfaces::Clonable<ArrayLayer, interfaces::EventRemapper> {
event remapEvent(event ev, uint16_t k) override;
void toStream(std::ostream& out) const override;
void fromStream(std::istream& in) override;
};
class SerializingLayer : public interfaces::Clonable<SerializingLayer, interfaces::EventRemapper> {
public:
SerializingLayer() {}
SerializingLayer(uint16_t width, uint16_t height);
event remapEvent(event ev, uint16_t k) override;
std::pair<uint16_t, uint16_t> getSize() const;
void toStream(std::ostream& out) const override;
void fromStream(std::istream& in) override;
private:
uint16_t w, h;
};
class SuperCell : public interfaces::Clonable<SuperCell, interfaces::SuperCell> {
public:
SuperCell() {}
SuperCell(uint16_t width, uint16_t height, uint16_t K);
std::pair<uint16_t, uint16_t> findCell(uint16_t ex, uint16_t ey) const override;
std::pair<uint16_t, uint16_t> getSize() const override;
std::pair<uint16_t, uint16_t> getCellSizes() const override;
TimeSurfaceType averageTS(const TimeSurfaceType& ts, uint16_t cx, uint16_t cy) override;
void toStream(std::ostream& out) const override;
void fromStream(std::istream& in) override;
protected:
uint16_t width;
uint16_t height;
uint16_t K;
uint16_t wcell;
uint16_t hcell;
uint16_t wmax;
uint16_t hmax;
std::pair<uint16_t, uint16_t> getCellCenter(uint16_t cx, uint16_t cy) const;
bool isInCell(uint16_t cx, uint16_t cy, uint16_t ex, uint16_t ey) const;
};
class SuperCellAverage : public interfaces::Clonable<SuperCellAverage, SuperCell> {
public:
SuperCellAverage() {}
SuperCellAverage(uint16_t width, uint16_t height, uint16_t K);
TimeSurfaceType averageTS(const TimeSurfaceType& ts, uint16_t cx, uint16_t cy) override;
void toStream(std::ostream& out) const override;
void fromStream(std::istream& in) override;
private:
struct CellMem {
cpphots::TimeSurfaceType ts;
unsigned int count;
};
std::vector<std::vector<CellMem>> cells;
};
}
#endif