1 class ScanlineFilter {
2 public:
3   bool enabled;
4 
5   void size(unsigned&, unsigned&);
6   void render(const uint16_t*&, unsigned&, const unsigned*&, unsigned, unsigned&);
7   void setIntensity(unsigned);
8 
9   ScanlineFilter();
10   ~ScanlineFilter();
11 
12 private:
13   uint16_t *adjust;
14   uint16_t *buffer;
15   unsigned linewidth[480];
16 };
17 
18 class Filter : public library {
19 public:
20   function<const char* ()> dl_supported;
21   function<void (const uint32_t*)> dl_colortable;
22   function<void (configuration&)> dl_configuration;
23   function<void (unsigned, unsigned&, unsigned&, unsigned, unsigned)> dl_size;
24   function<void (unsigned, uint32_t*, unsigned, const uint16_t*, unsigned, const unsigned*, unsigned, unsigned)> dl_render;
25   function<QWidget* (unsigned)> dl_settings;
26 
27   unsigned renderer;
28   uint32_t *colortable;
29 
30   signed contrast;
31   signed brightness;
32   signed gamma;
33 
34   bool gamma_ramp;
35   bool sepia;
36   bool grayscale;
37   bool invert;
38 
39   void colortable_update();
40   void size(unsigned&, unsigned&, unsigned, unsigned);
41   void render(uint32_t*, unsigned, const uint16_t*, unsigned, const unsigned*, unsigned, unsigned);
42   QWidget* settings();
43 
44   Filter();
45   ~Filter();
46 
47 private:
48   static const uint8_t gamma_ramp_table[32];
49   uint8_t contrast_adjust(uint8_t input);
50   uint8_t brightness_adjust(uint8_t input);
51   uint8_t gamma_adjust(uint8_t input);
52 };
53 
54 extern ScanlineFilter scanlineFilter;
55 extern Filter filter;
56