PixelLightAPI
.
|
00001 /*********************************************************\ 00002 * File: ImageEffect.h * 00003 * 00004 * Copyright (C) 2002-2012 The PixelLight Team (http://www.pixellight.org/) 00005 * 00006 * This file is part of PixelLight. 00007 * 00008 * PixelLight is free software: you can redistribute it and/or modify 00009 * it under the terms of the GNU Lesser General Public License as published by 00010 * the Free Software Foundation, either version 3 of the License, or 00011 * (at your option) any later version. 00012 * 00013 * PixelLight is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 * GNU Lesser General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU Lesser General Public License 00019 * along with PixelLight. If not, see <http://www.gnu.org/licenses/>. 00020 \*********************************************************/ 00021 00022 00023 #ifndef __PLGRAPHICS_IMAGEEFFECT_H__ 00024 #define __PLGRAPHICS_IMAGEEFFECT_H__ 00025 #pragma once 00026 00027 00028 //[-------------------------------------------------------] 00029 //[ Includes ] 00030 //[-------------------------------------------------------] 00031 #include <PLCore/Base/Object.h> 00032 #include "PLGraphics/PLGraphics.h" 00033 00034 00035 //[-------------------------------------------------------] 00036 //[ Namespace ] 00037 //[-------------------------------------------------------] 00038 namespace PLGraphics { 00039 00040 00041 //[-------------------------------------------------------] 00042 //[ Forward declarations ] 00043 //[-------------------------------------------------------] 00044 class Image; 00045 class ImagePart; 00046 class ImageFrame; 00047 class ImageLayer; 00048 class ImageBuffer; 00049 00050 00051 //[-------------------------------------------------------] 00052 //[ Classes ] 00053 //[-------------------------------------------------------] 00054 /** 00055 * @brief 00056 * Abstract image effect base class 00057 */ 00058 class ImageEffect : public PLCore::Object { 00059 00060 00061 //[-------------------------------------------------------] 00062 //[ RTTI interface ] 00063 //[-------------------------------------------------------] 00064 pl_class(PLGRAPHICS_RTTI_EXPORT, ImageEffect, "PLGraphics", PLCore::Object, "Abstract image effect base class") 00065 pl_class_end 00066 00067 00068 //[-------------------------------------------------------] 00069 //[ Public functions ] 00070 //[-------------------------------------------------------] 00071 public: 00072 /** 00073 * @brief 00074 * Default constructor 00075 */ 00076 PLGRAPHICS_API ImageEffect(); 00077 00078 /** 00079 * @brief 00080 * Destructor 00081 */ 00082 PLGRAPHICS_API virtual ~ImageEffect(); 00083 00084 /** 00085 * @brief 00086 * Get effect description 00087 * 00088 * @return 00089 * Effect description 00090 */ 00091 PLGRAPHICS_API PLCore::String GetDescription() const; 00092 00093 00094 //[-------------------------------------------------------] 00095 //[ Public virtual ImageEffect functions ] 00096 //[-------------------------------------------------------] 00097 public: 00098 /** 00099 * @brief 00100 * Apply effect to image 00101 * 00102 * @param[in,out] cImage 00103 * Image 00104 * 00105 * @return 00106 * 'true' if all went fine, else 'false' 00107 */ 00108 virtual bool Apply(Image &cImage) const; 00109 00110 /** 00111 * @brief 00112 * Apply effect to image part 00113 * 00114 * @param[in,out] cPart 00115 * Image part 00116 * 00117 * @return 00118 * 'true' if all went fine, else 'false' 00119 */ 00120 virtual bool Apply(ImagePart &cPart) const; 00121 00122 /** 00123 * @brief 00124 * Apply effect to image buffer 00125 * 00126 * @param[in,out] cBuffer 00127 * Image buffer 00128 * 00129 * @return 00130 * 'true' if all went fine, else 'false' 00131 */ 00132 virtual bool Apply(ImageBuffer &cBuffer) const; 00133 00134 00135 }; 00136 00137 00138 //[-------------------------------------------------------] 00139 //[ Namespace ] 00140 //[-------------------------------------------------------] 00141 } // PLGraphics 00142 00143 00144 #endif // __PLGRAPHICS_IMAGEEFFECT_H__
|