1 /* Copyright (C) 2000-2003 Constantin Kaplinsky.  All Rights Reserved.
2  * Copyright (C) 2011 D. R. Commander
3  * Copyright 2014 Pierre Ossman for Cendio AB
4  *
5  * This is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This software is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this software; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
18  * USA.
19  */
20 #ifndef __RFB_TIGHTJPEGENCODER_H__
21 #define __RFB_TIGHTJPEGENCODER_H__
22 
23 #include <rfb/Encoder.h>
24 #include <rfb/JpegCompressor.h>
25 
26 namespace rfb {
27 
28   class TightJPEGEncoder : public Encoder {
29   public:
30     TightJPEGEncoder(SConnection* conn);
31     virtual ~TightJPEGEncoder();
32 
33     virtual bool isSupported();
34 
35     virtual void setQualityLevel(int level);
36     virtual void setFineQualityLevel(int quality, int subsampling);
37 
38     virtual int getQualityLevel();
39 
40     virtual void writeRect(const PixelBuffer* pb, const Palette& palette);
41     virtual void writeSolidRect(int width, int height,
42                                 const PixelFormat& pf,
43                                 const rdr::U8* colour);
44 
45   protected:
46     void writeCompact(rdr::U32 value, rdr::OutStream* os);
47 
48   protected:
49     JpegCompressor jc;
50 
51     int qualityLevel;
52     int fineQuality;
53     int fineSubsampling;
54   };
55 }
56 #endif
57