OSDN Git Service

first
[psychlops/cpp.git] / psychlops / extension / FileFormat / JPEG / psychlops_g_JPEG_bridge.h
1 /*
2  *  psychlops_g_JPEG_bridge.h
3  *  Psychlops Standard Library (Universal)
4  *
5  *  Last Modified 2009/04/22 by Kenchi HOSOKAWA
6  *  (C) 2006- Kenchi HOSOKAWA, Kazushi MARUYA and Takao SATO
7  */
8
9 #ifndef HEADER_PSYCHLOPS_IMAGE_FORMATS_JPEG
10 #define HEADER_PSYCHLOPS_IMAGE_FORMATS_JPEG
11
12
13 #include <stdio.h>
14 #include <stdlib.h>
15 extern "C" {
16 #include "jpeglib.h"
17 }
18
19 #include "../../../core/graphic/psychlops_g_image.h"
20
21
22 namespace Psychlops {
23 namespace IMAGE_FORMATS {
24
25
26         const unsigned int JPEG_BYTES_TO_CHECK = 4;
27         class JPEG_BRIDGE : public IMAGE_FORMAT {
28                 private:
29                 FILE *fp;
30                 bool is_opened_;
31
32                 // JPEG specific
33                 struct jpeg_decompress_struct cinfo;
34                 struct jpeg_error_mgr jerr;
35
36                 public:
37                 JPEG_BRIDGE();
38                 virtual ~JPEG_BRIDGE();
39                 virtual void load(const char *file_name, Image * target);
40                 virtual void save(const char *file_name, Image * target);
41
42                 private:
43                 void open(const char *file_name, const char *mode);
44                 void close();
45                 void check_before_read();
46                 void read(Image * target);
47                 void prepare_before_write();
48                 void write(Image * target);
49
50         };
51
52
53 }
54 }
55
56 #endif