Wrote a new color conversion engine. It's 2-5 times faster than the old one (depending on colorspaces) and about half in size.
I've put it into ColorConversion.cpp and moved PaletteConverter there too, cleaning up Bitmap.cpp. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16580 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
#ifndef _COLOR_CONVERSION_H_
|
||||
#define _COLOR_CONVERSION_H_
|
||||
|
||||
#include <GraphicsDefs.h>
|
||||
|
||||
namespace BPrivate {
|
||||
|
||||
status_t ConvertBits(const void *srcBuffer, void *dstBuffer,
|
||||
uint32 srcBytesPerRow, uint32 dstBytesPerRow, color_space srcColorSpace,
|
||||
color_space dstColorSpace, int32 width, int32 height);
|
||||
|
||||
|
||||
/*! \brief Helper class for conversion between RGB and palette colors.
|
||||
*/
|
||||
class PaletteConverter {
|
||||
public:
|
||||
PaletteConverter();
|
||||
PaletteConverter(const rgb_color *palette);
|
||||
PaletteConverter(const color_map *colorMap);
|
||||
~PaletteConverter();
|
||||
|
||||
status_t SetTo(const rgb_color *palette);
|
||||
status_t SetTo(const color_map *colorMap);
|
||||
status_t InitCheck() const;
|
||||
|
||||
inline uint8 IndexForRGB15(uint16 rgb) const;
|
||||
inline uint8 IndexForRGB15(uint8 red, uint8 green, uint8 blue) const;
|
||||
inline uint8 IndexForRGB16(uint16 rgb) const;
|
||||
inline uint8 IndexForRGB16(uint8 red, uint8 green, uint8 blue) const;
|
||||
inline uint8 IndexForRGB24(uint32 rgb) const;
|
||||
inline uint8 IndexForRGB24(uint8 red, uint8 green, uint8 blue) const;
|
||||
inline uint8 IndexForGray(uint8 gray) const;
|
||||
|
||||
inline const rgb_color &RGBColorForIndex(uint8 index) const;
|
||||
inline uint16 RGB15ColorForIndex(uint8 index) const;
|
||||
inline uint16 RGB16ColorForIndex(uint8 index) const;
|
||||
inline uint32 RGBA32ColorForIndex(uint8 index) const;
|
||||
inline void RGBA32ColorForIndex(uint8 index, uint8 &red, uint8 &green,
|
||||
uint8 &blue, uint8 &alpha) const;
|
||||
inline uint8 GrayColorForIndex(uint8 index) const;
|
||||
|
||||
private:
|
||||
const color_map *fColorMap;
|
||||
color_map *fOwnColorMap;
|
||||
status_t fCStatus;
|
||||
};
|
||||
|
||||
} // namespace BPrivate
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user