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
|
/* This file is part of the KDE project
* Copyright (C) 2002 Nadeem Hasan <nhasan@kde.org>
*
* This program 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 version 2.
*
* This program 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; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*/
#ifndef __KFILE_PCX_H_
#define __KFILE_PCX_H_
#include <kfilemetainfo.h>
struct PALETTE
{
struct
{
Q_UINT8 r;
Q_UINT8 g;
Q_UINT8 b;
} p[ 16 ];
};
struct PCXHEADER
{
Q_UINT8 Manufacturer; // Constant Flag, 10 = ZSoft .pcx
Q_UINT8 Version; // Version informationˇ
// 0 = Version 2.5 of PC Paintbrushˇ
// 2 = Version 2.8 w/palette informationˇ
// 3 = Version 2.8 w/o palette informationˇ
// 4 = PC Paintbrush for Windows(Plus for
// Windows uses Ver 5)ˇ
// 5 = Version 3.0 and > of PC Paintbrush
// and PC Paintbrush +, includes
// Publisher's Paintbrush . Includes
// 24-bit .PCX filesˇ
Q_UINT8 Encoding; // 1 = .PCX run length encoding
Q_UINT8 Bpp; // Number of bits to represent a pixel
// (per Plane) - 1, 2, 4, or 8ˇ
Q_UINT16 XMin;
Q_UINT16 YMin;
Q_UINT16 XMax;
Q_UINT16 YMax;
Q_UINT16 HDpi;
Q_UINT16 YDpi;
struct PALETTE Palette;
Q_UINT8 Reserved; // Should be set to 0.
Q_UINT8 NPlanes; // Number of color planes
Q_UINT16 BytesPerLine; // Number of bytes to allocate for a scanline
// plane. MUST be an EVEN number. Do NOT
// calculate from Xmax-Xmin.ˇ
Q_UINT16 PaletteInfo; // How to interpret palette- 1 = Color/BW,
// 2 = Grayscale ( ignored in PB IV/ IV + )ˇ
Q_UINT16 HScreenSize; // Horizontal screen size in pixels. New field
// found only in PB IV/IV Plus
Q_UINT16 VScreenSize; // Vertical screen size in pixels. New field
// found only in PB IV/IV Plus
Q_UINT8 Filler[ 54 ]; // Blank to fill out 128 byte header. Set all
// bytes to 0
};
class KPcxPlugin: public KFilePlugin
{
Q_OBJECT
public:
KPcxPlugin(QObject *parent, const char *name, const QStringList& args);
virtual bool readInfo(KFileMetaInfo& info, uint what);
private:
};
#endif
/* vim: et sw=2 ts=2
*/
|