Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/pdf/xpdf/Thumb.h
blob: a3735fe54374a5e173a48317e7ebde4426dc0e83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-indent-level: 8; c-basic-offset: 8 -*- */
/* 
 *  Copyright (C) 2003 Remi Cohen-Scali
 *
 *  Author:
 *    Remi Cohen-Scali <Remi@Cohen-Scali.com>
 *
 * GPdf is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * GPdf is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU General Public
 * License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
 */

#ifndef THUMB_H
#define THUMB_H

#include <aconf.h>

class XRef;
class GfxColorSpace;
class GfxRGB;
class GfxCMYK;
class GfxColor;

/*
 * ThumbColorMap
 */
class ThumbColorMap {

      public:
        ThumbColorMap(int bitsA, Object *obj, GfxColorSpace *csA);
        ~ThumbColorMap();
        
        GBool isOk() {return ok; };
        
        GfxColorSpace *getColorSpace() { return cs; }; 
        
        int getNumPixelComps() { return nComps; }; 
        int getBits() { return bits; }; 
        
        void getGray(Guchar *x, double *gray);
        void getRGB(Guchar *x, GfxRGB *rgb);
        void getCMYK(Guchar *x, GfxCMYK *cmyk);
        //void getColor(Guchar *x, GfxColor *color);

	static ThumbColorMap *lookupColorMap(XRef *xref, int bitsA, Object *obj, GfxColorSpace *csA); 

      private:
        GBool ok; 
        int bits;
        Stream *str;
        GfxColorSpace *cs;
        int nComps;
        int length;
        union {
                double *gray;
                GfxRGB *rgb;
                GfxCMYK *cmyk;
                GfxColor *colors; 
        };
};

/*
 * ThumbColorMaps
 */

/* FIXME: Should have a class to avoid reading same colormap for every thumb */

/*
 * Thumb
 */

class Thumb {

      public:
        Thumb(XRef *xrefA, Object *obj);
        ~Thumb();

        int getWidth(void) {return width; };
        int getHeight(void) {return height; };
        GfxColorSpace *getColorSpace(void) {return gfxCS; };
        int getBitsPerComponent(void) {return bits; };
	int getLength(void) {return length; };

	Stream *getStream() {return str; };

	unsigned char *getPixbufData();

      private:
        XRef *xref;
	Stream *str;
	GfxColorSpace *gfxCS;
        ThumbColorMap *thumbCM; 
        int width, height, bits;
	int length;
};

#endif