]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - plugins/image/image.cpp
Merge branch 'transfilterfix' into 'master'
[xonotic/netradiant.git] / plugins / image / image.cpp
1 /*
2    Copyright (C) 2001-2006, William Joseph.
3    All Rights Reserved.
4
5    This file is part of GtkRadiant.
6
7    GtkRadiant is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11
12    GtkRadiant is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with GtkRadiant; if not, write to the Free Software
19    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20  */
21
22 #include "ifilesystem.h"
23 #include "iimage.h"
24
25 #include "jpeg.h"
26 #include "tga.h"
27 #include "bmp.h"
28 #include "pcx.h"
29 #include "dds.h"
30 #include "ktx.h"
31
32
33 #include "modulesystem/singletonmodule.h"
34
35 class ImageDependencies : public GlobalFileSystemModuleRef {
36 };
37
38 class ImageTGAAPI {
39     _QERPlugImageTable m_imagetga;
40 public:
41     typedef _QERPlugImageTable Type;
42
43     STRING_CONSTANT(Name, "tga");
44
45     ImageTGAAPI()
46     {
47         m_imagetga.loadImage = LoadTGA;
48     }
49
50     _QERPlugImageTable *getTable()
51     {
52         return &m_imagetga;
53     }
54 };
55
56 typedef SingletonModule<ImageTGAAPI> ImageTGAModule;
57
58 ImageTGAModule g_ImageTGAModule;
59
60
61 class ImageJPGAPI {
62     _QERPlugImageTable m_imagejpg;
63 public:
64     typedef _QERPlugImageTable Type;
65
66     STRING_CONSTANT(Name, "jpg");
67
68     ImageJPGAPI()
69     {
70         m_imagejpg.loadImage = LoadJPG;
71     }
72
73     _QERPlugImageTable *getTable()
74     {
75         return &m_imagejpg;
76     }
77 };
78
79 typedef SingletonModule<ImageJPGAPI, ImageDependencies> ImageJPGModule;
80
81 ImageJPGModule g_ImageJPGModule;
82
83
84 class ImageBMPAPI {
85     _QERPlugImageTable m_imagebmp;
86 public:
87     typedef _QERPlugImageTable Type;
88
89     STRING_CONSTANT(Name, "bmp");
90
91     ImageBMPAPI()
92     {
93         m_imagebmp.loadImage = LoadBMP;
94     }
95
96     _QERPlugImageTable *getTable()
97     {
98         return &m_imagebmp;
99     }
100 };
101
102 typedef SingletonModule<ImageBMPAPI, ImageDependencies> ImageBMPModule;
103
104 ImageBMPModule g_ImageBMPModule;
105
106
107 class ImagePCXAPI {
108     _QERPlugImageTable m_imagepcx;
109 public:
110     typedef _QERPlugImageTable Type;
111
112     STRING_CONSTANT(Name, "pcx");
113
114     ImagePCXAPI()
115     {
116         m_imagepcx.loadImage = LoadPCX32;
117     }
118
119     _QERPlugImageTable *getTable()
120     {
121         return &m_imagepcx;
122     }
123 };
124
125 typedef SingletonModule<ImagePCXAPI, ImageDependencies> ImagePCXModule;
126
127 ImagePCXModule g_ImagePCXModule;
128
129
130 class ImageDDSAPI {
131     _QERPlugImageTable m_imagedds;
132 public:
133     typedef _QERPlugImageTable Type;
134
135     STRING_CONSTANT(Name, "dds");
136
137     ImageDDSAPI()
138     {
139         m_imagedds.loadImage = LoadDDS;
140     }
141
142     _QERPlugImageTable *getTable()
143     {
144         return &m_imagedds;
145     }
146 };
147
148 typedef SingletonModule<ImageDDSAPI, ImageDependencies> ImageDDSModule;
149
150 ImageDDSModule g_ImageDDSModule;
151
152
153 class ImageKTXAPI {
154     _QERPlugImageTable m_imagektx;
155 public:
156     typedef _QERPlugImageTable Type;
157
158     STRING_CONSTANT(Name, "ktx");
159
160     ImageKTXAPI()
161     {
162         m_imagektx.loadImage = LoadKTX;
163     }
164
165     _QERPlugImageTable *getTable()
166     {
167         return &m_imagektx;
168     }
169 };
170
171 typedef SingletonModule<ImageKTXAPI, ImageDependencies> ImageKTXModule;
172
173 ImageKTXModule g_ImageKTXModule;
174
175
176 extern "C" void RADIANT_DLLEXPORT Radiant_RegisterModules(ModuleServer &server)
177 {
178     initialiseModule(server);
179
180     g_ImageTGAModule.selfRegister();
181     g_ImageJPGModule.selfRegister();
182     g_ImageBMPModule.selfRegister();
183     g_ImagePCXModule.selfRegister();
184     g_ImageDDSModule.selfRegister();
185     g_ImageKTXModule.selfRegister();
186 }