eLynx SDK
v3.3.0 C++ image processing API reference |
00001 //============================================================================ 00002 // IImageRasterization.h Image.Component package 00003 //============================================================================ 00004 // Usage : interface for image rasterization primitives 00005 //---------------------------------------------------------------------------- 00006 // Copyright (C) 2007 by eLynx project 00007 // 00008 // This library is free software; you can redistribute it and/or 00009 // modify it under the terms of the GNU Library General Public 00010 // License as published by the Free Software Foundation; either 00011 // version 2 of the License, or (at your option) any later version. 00012 // 00013 // This library 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. 00016 // See the GNU Library General Public License for more details. 00017 //---------------------------------------------------------------------------- 00018 #ifndef __IImageRasterization_h__ 00019 #define __IImageRasterization_h__ 00020 00021 #include <elx/core/ProgressNotifier.h> 00022 #include <elx/math/Geometry.h> 00023 #include <elx/image/ImageLib.h> 00024 #include <elx/image/ImageImpl.h> 00025 00026 namespace eLynx { 00027 namespace Image { 00028 00029 // Forward declaration 00030 class AbstractImage; 00031 00035 00036 class ExportedByImage IImageRasterization 00037 { 00038 public: 00039 virtual ~IImageRasterization(); 00040 00045 virtual bool Clear(AbstractImage& ioImage, 00046 uint32 iChannelMask) const = 0; 00047 00048 virtual bool Plot(AbstractImage& ioImage, 00049 int32 iX, int32 iY, uint32 iChannelMask) const = 0; 00050 00051 virtual bool DrawHLine(AbstractImage& ioImage, 00052 int32 iY, int32 iX1, int32 iX2, uint32 iChannelMask) const = 0; 00053 00054 virtual bool DrawLine(AbstractImage& ioImage, 00055 int32 iX1, int32 iY1, int32 iX2, int32 iY2, bool ibAntialiasing, uint32 iChannelMask) const = 0; 00056 00057 virtual bool DrawRectangle(AbstractImage& ioImage, 00058 int32 iX1, int32 iY1, int32 iX2, int32 iY2, 00059 bool ibSolid, uint32 iChannelMask) const = 0; 00060 00061 virtual bool DrawEllipse(AbstractImage& ioImage, 00062 int32 iX, int32 iY, uint32 iRadiusX, uint32 iRadiusY, 00063 bool ibSolid, uint32 iChannelMask) const = 0; 00064 00065 virtual bool DrawCircle(AbstractImage& ioImage, 00066 int32 iX, int32 iY, uint32 iRadius, 00067 bool ibSolid, uint32 iChannelMask) const = 0; 00068 00069 virtual bool DrawTriangle(AbstractImage& ioImage, 00070 int32 iX0, int32 iY0, int32 iX1, int32 iY1, int32 iX2, int32 iY2, 00071 bool ibSolid, uint32 iChannelMask) const = 0; 00072 00073 virtual bool Fill(AbstractImage& ioImage, 00074 int32 iX, int32 iY, uint32 iChannelMask) const = 0; 00075 00076 virtual bool GetFilledBBox(const AbstractImage& iImage, 00077 int32 iX, int32 iY, Math::AOBBox2i& oBBox) const = 0; 00078 }; 00079 00080 } // namespace Image 00081 } // namespace eLynx 00082 00083 #endif // __IImageRasterization_h__