fixed blended-decal rendering in textured mode
[xonotic/netradiant.git] / plugins / imagehl / imagehl.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 "imagehl.h"
23
24 #include "debugging/debugging.h"
25 #include "ifilesystem.h"
26 #include "iimage.h"
27
28 #include "hlw.h"
29 #include "mip.h"
30 #include "sprite.h"
31
32 #include "modulesystem/singletonmodule.h"
33
34
35 class ImageDependencies : public GlobalFileSystemModuleRef
36 {
37 };
38
39 class ImageHLWAPI
40 {
41   _QERPlugImageTable m_imagehlw;
42 public:
43   typedef _QERPlugImageTable Type;
44   STRING_CONSTANT(Name, "hlw");
45
46   ImageHLWAPI()
47   {
48     m_imagehlw.loadImage = LoadHLW;
49   }
50   _QERPlugImageTable* getTable()
51   {
52     return &m_imagehlw;
53   }
54 };
55
56 typedef SingletonModule<ImageHLWAPI, ImageDependencies> ImageHLWModule;
57
58 ImageHLWModule g_ImageHLWModule;
59
60
61 class ImageMipAPI
62 {
63   _QERPlugImageTable m_imagemip;
64 public:
65   typedef _QERPlugImageTable Type;
66   STRING_CONSTANT(Name, "mip");
67
68   ImageMipAPI()
69   {
70     m_imagemip.loadImage = LoadMIP;
71   }
72   _QERPlugImageTable* getTable()
73   {
74     return &m_imagemip;
75   }
76 };
77
78 typedef SingletonModule<ImageMipAPI, ImageDependencies> ImageMipModule;
79
80 ImageMipModule g_ImageMipModule;
81
82
83 class ImageSpriteAPI
84 {
85   _QERPlugImageTable m_imagesprite;
86 public:
87   typedef _QERPlugImageTable Type;
88   STRING_CONSTANT(Name, "spr");
89
90   ImageSpriteAPI()
91   {
92     m_imagesprite.loadImage = LoadIDSP;
93   }
94   _QERPlugImageTable* getTable()
95   {
96     return &m_imagesprite;
97   }
98 };
99
100 typedef SingletonModule<ImageSpriteAPI, ImageDependencies> ImageSpriteModule;
101
102 ImageSpriteModule g_ImageSpriteModule;
103
104
105
106 extern "C" void RADIANT_DLLEXPORT Radiant_RegisterModules(ModuleServer& server)
107 {
108   GlobalErrorStream::instance().setOutputStream(server.getErrorStream());
109   GlobalOutputStream::instance().setOutputStream(server.getOutputStream());
110   GlobalDebugMessageHandler::instance().setHandler(server.getDebugMessageHandler());
111   GlobalModuleServer::instance().set(server);
112
113   g_ImageHLWModule.selfRegister();
114   g_ImageMipModule.selfRegister();
115   g_ImageSpriteModule.selfRegister();
116 }