KTX support - something Git didn't want to commit
[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 "image.h"
23
24 #include "ifilesystem.h"
25 #include "iimage.h"
26
27 #include "jpeg.h"
28 #include "tga.h"
29 #include "bmp.h"
30 #include "pcx.h"
31 #include "dds.h"
32 #include "ktx.h"
33
34
35 #include "modulesystem/singletonmodule.h"
36
37 class ImageDependencies : public GlobalFileSystemModuleRef
38 {
39 };
40
41 class ImageTGAAPI
42 {
43 _QERPlugImageTable m_imagetga;
44 public:
45 typedef _QERPlugImageTable Type;
46 STRING_CONSTANT( Name, "tga" );
47
48 ImageTGAAPI(){
49         m_imagetga.loadImage = LoadTGA;
50 }
51 _QERPlugImageTable* getTable(){
52         return &m_imagetga;
53 }
54 };
55
56 typedef SingletonModule<ImageTGAAPI> ImageTGAModule;
57
58 ImageTGAModule g_ImageTGAModule;
59
60
61 class ImageJPGAPI
62 {
63 _QERPlugImageTable m_imagejpg;
64 public:
65 typedef _QERPlugImageTable Type;
66 STRING_CONSTANT( Name, "jpg" );
67
68 ImageJPGAPI(){
69         m_imagejpg.loadImage = LoadJPG;
70 }
71 _QERPlugImageTable* getTable(){
72         return &m_imagejpg;
73 }
74 };
75
76 typedef SingletonModule<ImageJPGAPI, ImageDependencies> ImageJPGModule;
77
78 ImageJPGModule g_ImageJPGModule;
79
80
81 class ImageBMPAPI
82 {
83 _QERPlugImageTable m_imagebmp;
84 public:
85 typedef _QERPlugImageTable Type;
86 STRING_CONSTANT( Name, "bmp" );
87
88 ImageBMPAPI(){
89         m_imagebmp.loadImage = LoadBMP;
90 }
91 _QERPlugImageTable* getTable(){
92         return &m_imagebmp;
93 }
94 };
95
96 typedef SingletonModule<ImageBMPAPI, ImageDependencies> ImageBMPModule;
97
98 ImageBMPModule g_ImageBMPModule;
99
100
101 class ImagePCXAPI
102 {
103 _QERPlugImageTable m_imagepcx;
104 public:
105 typedef _QERPlugImageTable Type;
106 STRING_CONSTANT( Name, "pcx" );
107
108 ImagePCXAPI(){
109         m_imagepcx.loadImage = LoadPCX32;
110 }
111 _QERPlugImageTable* getTable(){
112         return &m_imagepcx;
113 }
114 };
115
116 typedef SingletonModule<ImagePCXAPI, ImageDependencies> ImagePCXModule;
117
118 ImagePCXModule g_ImagePCXModule;
119
120
121 class ImageDDSAPI
122 {
123 _QERPlugImageTable m_imagedds;
124 public:
125 typedef _QERPlugImageTable Type;
126 STRING_CONSTANT( Name, "dds" );
127
128 ImageDDSAPI(){
129         m_imagedds.loadImage = LoadDDS;
130 }
131 _QERPlugImageTable* getTable(){
132         return &m_imagedds;
133 }
134 };
135
136 typedef SingletonModule<ImageDDSAPI, ImageDependencies> ImageDDSModule;
137
138 ImageDDSModule g_ImageDDSModule;
139
140
141 class ImageKTXAPI
142 {
143 _QERPlugImageTable m_imagektx;
144 public:
145 typedef _QERPlugImageTable Type;
146 STRING_CONSTANT( Name, "ktx" );
147
148 ImageKTXAPI(){
149         m_imagektx.loadImage = LoadKTX;
150 }
151 _QERPlugImageTable* getTable(){
152         return &m_imagektx;
153 }
154 };
155
156 typedef SingletonModule<ImageKTXAPI, ImageDependencies> ImageKTXModule;
157
158 ImageKTXModule g_ImageKTXModule;
159
160
161 extern "C" void RADIANT_DLLEXPORT Radiant_RegisterModules( ModuleServer& server ){
162         initialiseModule( server );
163
164         g_ImageTGAModule.selfRegister();
165         g_ImageJPGModule.selfRegister();
166         g_ImageBMPModule.selfRegister();
167         g_ImagePCXModule.selfRegister();
168         g_ImageDDSModule.selfRegister();
169         g_ImageKTXModule.selfRegister();
170 }