X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=include%2Fiimage.h;h=7f355f2ce17b8337f2219bf02ff5f3e51612dac8;hb=0f2e4b773715b05595f1c149d99fcc4795e01948;hp=6335082bbf6293de7147c8c2be97b240237d8b6a;hpb=ab3a99dbbe84a0d130fea4d0ceb7b79d7ed07eb7;p=xonotic%2Fnetradiant.git diff --git a/include/iimage.h b/include/iimage.h index 6335082b..7f355f2c 100644 --- a/include/iimage.h +++ b/include/iimage.h @@ -1,40 +1,73 @@ /* -Copyright (C) 1999-2007 id Software, Inc. and contributors. -For a list of contributors, see the accompanying CONTRIBUTORS file. + Copyright (C) 2001-2006, William Joseph. + All Rights Reserved. -This file is part of GtkRadiant. + This file is part of GtkRadiant. -GtkRadiant 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; either version 2 of the License, or -(at your option) any later version. + GtkRadiant 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; either version 2 of the License, or + (at your option) any later version. -GtkRadiant 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. + GtkRadiant 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 GtkRadiant; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ + You should have received a copy of the GNU General Public License + along with GtkRadiant; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ -// -// Plugin interface for loading image files -// +#if !defined( INCLUDED_IIMAGE_H ) +#define INCLUDED_IIMAGE_H -#ifndef _IIMAGE_H_ -#define _IIMAGE_H_ +#include "generic/constant.h" -#define IMAGE_MAJOR "image" +typedef unsigned char byte; -// Load an image file -typedef void (* PFN_QERPLUG_LOADIMAGE) (const char *name, unsigned char **pic, int *width, int *height); +class Image +{ +public: +virtual ~Image() = default; +virtual void release() = 0; +virtual byte* getRGBAPixels() const = 0; +virtual unsigned int getWidth() const = 0; +virtual unsigned int getHeight() const = 0; + +virtual int getSurfaceFlags() const { + return 0; +} +virtual int getContentFlags() const { + return 0; +} +virtual int getValue() const { + return 0; +} +}; + +class ArchiveFile; struct _QERPlugImageTable { - int m_nSize; - PFN_QERPLUG_LOADIMAGE m_pfnLoadImage; + INTEGER_CONSTANT( Version, 1 ); + STRING_CONSTANT( Name, "image" ); + + /// Read an image from the file. + /// Returns 0 if the image could not be read. + Image* ( *loadImage )( ArchiveFile & file ); }; -#endif // _IIMAGE_H_ +template +class ModuleRef; +typedef ModuleRef<_QERPlugImageTable> ImageModuleRef; + +template +class Modules; +typedef Modules<_QERPlugImageTable> ImageModules; + +template +class ModulesRef; +typedef ModulesRef<_QERPlugImageTable> ImageModulesRef; + +#endif // _IIMAGE_H