16 #include <osg/ref_ptr>
18 #include <osgDB/ReaderWriter>
55 bool createEncryptedImage(
const std::string&
filename,
56 const std::string& outputFile,
const osgDB::ReaderWriter::Options* options,
57 bool flipOutputImage,
EffectTextureType textureType,
bool verbose,
bool generate_dds);
60 bool createCompressedImage(osg::ref_ptr<osg::Image> img,
const std::string& inputFilename,
61 const std::string &outputFile,
bool flipOutputImage,
EffectTextureType textureType,
62 bool generateMipMaps,
int qualityLevel,
bool verbose,
bool generate_dds);
64 void resizeImageIfNeeded(osg::ref_ptr<osg::Image> img);
66 void write_and_compress_dds_data(FILE* file,
const struct DDS_HEADER & ddsHeader,
unsigned int blockDataSize,
unsigned char* blockData);
69 bool compositeImages(
const ImageList& files,
70 const std::string& outputFile,
int outputWidth,
int outputHeight,
71 int cols,
int rows,
bool forceNoAlpha,
bool composeRowsTopToBottom,
75 static bool convertToRGBA( osg::ref_ptr<osg::Image> img,
76 unsigned char*& rgbaPixels,
bool& deletePixels,
bool verbose );
84 void resizeImagePow2(
osg::Image* img,
int newW,
int newH);
87 bool createBinaryData(
unsigned int compressedFormat,
88 osg::ref_ptr<osg::Image> img,
bool mipMaps,
int qualityLevel,
bool verbose,
89 unsigned int& blockDataSize,
unsigned char*& blockData,
90 bool& deleteBlockData, osg::Image::MipmapDataType & mipOffsets);
93 inline static bool isPowerOf2(
unsigned int i)
95 return !( i & (i - 1)) && i;
99 inline static unsigned int nextPowerOf2(
unsigned int i)
111 inline static unsigned int logBase2(
unsigned int i)
113 static const int MultiplyDeBruijnBitPosition[32] =
115 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30,
116 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31
119 return MultiplyDeBruijnBitPosition[((nextPowerOf2(i + 1) - 1) * 0x07C4ACDDU) >> 27];