1 /********************************************************************************
2 *                                                                               *
3 *                            P C X   I m a g e   O b j e c t                    *
4 *                                                                               *
5 *********************************************************************************
6 * Copyright (C) 2001,2021 by Janusz Ganczarski.   All Rights Reserved.          *
7 *********************************************************************************
8 * This library is free software; you can redistribute it and/or modify          *
9 * it under the terms of the GNU Lesser General Public License as published by   *
10 * the Free Software Foundation; either version 3 of the License, or             *
11 * (at your option) any later version.                                           *
12 *                                                                               *
13 * This library is distributed in the hope that it will be useful,               *
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of                *
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                 *
16 * GNU Lesser General Public License for more details.                           *
17 *                                                                               *
18 * You should have received a copy of the GNU Lesser General Public License      *
19 * along with this program.  If not, see <http://www.gnu.org/licenses/>          *
20 ********************************************************************************/
21 #ifndef FXPCXIMAGE_H
22 #define FXPCXIMAGE_H
23 
24 #ifndef FXIMAGE_H
25 #include "FXImage.h"
26 #endif
27 
28 namespace FX {
29 
30 ///  PCX graphics file
31 class FXAPI FXPCXImage : public FXImage {
FXDECLARE(FXPCXImage)32   FXDECLARE(FXPCXImage)
33 protected:
34   FXPCXImage(){}
35 private:
36   FXPCXImage(const FXPCXImage&);
37   FXPCXImage &operator=(const FXPCXImage&);
38 public:
39   static const FXchar fileExt[];
40   static const FXchar mimeType[];
41 public:
42 
43   /// Construct image from memory stream formatted in PCX file
44   FXPCXImage(FXApp* a,const void *pix=NULL,FXuint opts=0,FXint w=1,FXint h=1);
45 
46   /// Save pixels into stream in PCX file
47   virtual FXbool savePixels(FXStream& store) const;
48 
49   /// Load pixels from stream in  bitmap format
50   virtual FXbool loadPixels(FXStream& store);
51 
52   /// Destroy icon
53   virtual ~FXPCXImage();
54   };
55 
56 
57 #ifndef FXLOADPCX
58 #define FXLOADPCX
59 
60 /**
61 * Check if stream contains a PCX, return true if so.
62 */
63 extern FXAPI FXbool fxcheckPCX(FXStream& store);
64 
65 
66 /**
67 * Load an PCX (PC Paintbrush) file from a stream.
68 * Upon successful return, the pixel array and size are returned.
69 * If an error occurred, the pixel array is set to NULL.
70 */
71 extern FXAPI FXbool fxloadPCX(FXStream& store,FXColor*& data,FXint& width,FXint& height);
72 
73 
74 /**
75 * Save an PCX (PC Paintbrush) file to a stream.
76 */
77 extern FXAPI FXbool fxsavePCX(FXStream& store,const FXColor *data,FXint width,FXint height);
78 
79 #endif
80 
81 }
82 
83 #endif
84