From 2d8af2d99c6b4bfd19958ed363faba20b57f5118 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Mon, 19 Dec 2016 21:22:16 +0100 Subject: [PATCH] [DEV] start integration of JPEG, add test, correct the orientation of the image in the image and better storing of image in bmp --- data/read.bmp | Bin 0 -> 102038 bytes data/read.jpg | Bin 0 -> 5770 bytes data/read.png | Bin 0 -> 48925 bytes data/read.svg | 113 ++++++++++++++++++++++++++++++ data/read2.jpg | Bin 0 -> 5126 bytes data/read3.jpg | Bin 0 -> 5756 bytes data/read4.jpg | Bin 0 -> 12394 bytes egami/Image.cpp | 33 +++++++++ egami/Image.hpp | 7 ++ egami/egami.cpp | 83 ++++++++++++++++++---- egami/wrapperBMP.cpp | 144 +++++++++++++++++++++++---------------- egami/wrapperJPG.cpp | 131 +++++++++++++++++++++++++++++++++++ egami/wrapperJPG.hpp | 18 +++++ egami/wrapperJPG2000.cpp | 32 +++++++++ egami/wrapperJPG2000.hpp | 18 +++++ egami/wrapperPNG.cpp | 8 +-- egami/wrapperTIFF.cpp | 33 +++++++++ egami/wrapperTIFF.hpp | 18 +++++ lutin_egami-sample.py | 9 +-- lutin_egami-test.py | 9 ++- lutin_egami.py | 39 +++++++++-- test/main.cpp | 61 +++++++++++++++-- 22 files changed, 668 insertions(+), 88 deletions(-) create mode 100644 data/read.bmp create mode 100644 data/read.jpg create mode 100644 data/read.png create mode 100644 data/read.svg create mode 100644 data/read2.jpg create mode 100644 data/read3.jpg create mode 100644 data/read4.jpg create mode 100644 egami/wrapperJPG.cpp create mode 100644 egami/wrapperJPG.hpp create mode 100644 egami/wrapperJPG2000.cpp create mode 100644 egami/wrapperJPG2000.hpp create mode 100644 egami/wrapperTIFF.cpp create mode 100644 egami/wrapperTIFF.hpp diff --git a/data/read.bmp b/data/read.bmp new file mode 100644 index 0000000000000000000000000000000000000000..903890b0ad02518a547f3c12c0cd05b40e942cc7 GIT binary patch literal 102038 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 literal 0 HcmV?d00001 diff --git a/data/read.png b/data/read.png new file mode 100644 index 0000000000000000000000000000000000000000..363c2637e5f360c418b2cfa72fa98d591a74274c GIT binary patch literal 48925 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 N002ovPDHLkV1gTWIe`EG literal 0 HcmV?d00001 diff --git a/data/read.svg b/data/read.svg new file mode 100644 index 0000000..5cd9ccf --- /dev/null +++ b/data/read.svg @@ -0,0 +1,113 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/data/read2.jpg b/data/read2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..896648741b9b512b2f1f8e2ef0471a88ee0e6ca5 GIT binary patch literal 5126 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 S25o&-SUN00f`hCtCjSG6MZ^UF literal 0 HcmV?d00001 diff --git a/data/read4.jpg b/data/read4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..861aff98e2a78131bf546b82fd38b00a4f741dd2 GIT binary patch literal 12394 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 Iua1WP4;iQWivR!s literal 0 HcmV?d00001 diff --git a/egami/Image.cpp b/egami/Image.cpp index 0748efe..db449b3 100644 --- a/egami/Image.cpp +++ b/egami/Image.cpp @@ -42,6 +42,39 @@ std::ostream& egami::operator <<(std::ostream& _os, const enum egami::colorType return _os; } +int32_t egami::getFormatColorSize(enum colorType _type) { + switch (_type) { + case egami::colorType::undefined: + return 1; + break; + case egami::colorType::RGBA8: + return 1*4; + break; + case egami::colorType::RGB8: + return 1*3; + break; + case egami::colorType::RGBAf: + return 4*4; + break; + case egami::colorType::RGBf: + return 4*3; + break; + case egami::colorType::unsignedInt16: + return 2; + break; + case egami::colorType::unsignedInt32: + return 4; + break; + case egami::colorType::float32: + return 4; + break; + case egami::colorType::float64: + return 8; + break; + } + return 1; +} + egami::Image::Image() : m_data(nullptr) { diff --git a/egami/Image.hpp b/egami/Image.hpp index 3901efc..e963d97 100644 --- a/egami/Image.hpp +++ b/egami/Image.hpp @@ -26,6 +26,12 @@ namespace egami { float64, }; std::ostream& operator <<(std::ostream& _os, const enum egami::colorType _obj); + /** + * @brief Get the Color size use in octet + * @param[in] type of the color + * @return Number of byte requested by the color + */ + int32_t getFormatColorSize(enum colorType _type); class ImagePrivate { public: @@ -134,6 +140,7 @@ namespace egami { void set(const std::vector>& _data, const ivec2& _size); void set(const std::vector>& _data, const ivec2& _size); + void swap(egami::Image& _image); }; } diff --git a/egami/egami.cpp b/egami/egami.cpp index 837c2d0..9697722 100644 --- a/egami/egami.cpp +++ b/egami/egami.cpp @@ -7,10 +7,24 @@ #include #include -#include -#include +#ifdef EGAMI_BUILD_ESVG + #include +#endif +#ifdef EGAMI_BUILD_PNG + #include +#endif #include #include + +#ifdef EGAMI_BUILD_JPEG + #include +#endif +#ifdef EGAMI_BUILD_JPEG2000 + #include +#endif +#ifdef EGAMI_BUILD_TIFF + #include +#endif #include bool egami::scalable(const std::string& _fileName) { @@ -36,18 +50,52 @@ egami::Image egami::load(const std::string& _fileName, const ivec2& _size) { EGAMI_ERROR("Error to load BMP file '" << _fileName << "'"); } } else if (etk::end_with(tmpName, ".svg") == true) { - out = egami::loadSVG(_fileName, _size); - if (out.exist() == false) { - EGAMI_ERROR("Error to load SVG file '" << _fileName << "'"); - } - //egami::storeEDF(_fileName + ".edf", _output); + #ifdef EGAMI_BUILD_ESVG + out = egami::loadSVG(_fileName, _size); + if (out.exist() == false) { + EGAMI_ERROR("Error to load SVG file '" << _fileName << "'"); + } + #else + EGAMI_WARNING("egamy not compile with the ESVG dependency for file '" << _fileName << "'"); + #endif } else if (etk::end_with(tmpName, ".png") == true) { - out = egami::loadPNG(_fileName); - if (out.exist() == false) { - EGAMI_ERROR("Error to load PNG file '" << _fileName << "'"); - } + #ifdef EGAMI_BUILD_PNG + out = egami::loadPNG(_fileName); + if (out.exist() == false) { + EGAMI_ERROR("Error to load PNG file '" << _fileName << "'"); + } + #else + EGAMI_WARNING("egamy not compile with the PNG dependency for file '" << _fileName << "'"); + #endif + } else if (etk::end_with(tmpName, ".jpg") == true) { + #ifdef EGAMI_BUILD_JPEG + out = egami::loadJPG(_fileName); + if (out.exist() == false) { + EGAMI_ERROR("Error to load JPG file '" << _fileName << "'"); + } + #else + EGAMI_WARNING("egamy not compile with the JPEG dependency for file '" << _fileName << "'"); + #endif + } else if (etk::end_with(tmpName, ".j2k") == true) { + #ifdef EGAMI_BUILD_JPEG2000 + out = egami::loadJPG2000(_fileName); + if (out.exist() == false) { + EGAMI_ERROR("Error to load JPEG2000 file '" << _fileName << "'"); + } + #else + EGAMI_WARNING("egamy not compile with the JPEG 2000 (openjpeg) dependency for file '" << _fileName << "'"); + #endif + } else if (etk::end_with(tmpName, ".tif") == true) { + #ifdef EGAMI_BUILD_TIFF + out = egami::loadTIFF(_fileName); + if (out.exist() == false) { + EGAMI_ERROR("Error to load TIFF file '" << _fileName << "'"); + } + #else + EGAMI_WARNING("egamy not compile with the TIFF dependency for file '" << _fileName << "'"); + #endif } else { - EGAMI_ERROR("Extention not managed '" << _fileName << "' Sopported extention : .edf / .bmp / .svg / .png"); + EGAMI_ERROR("Extention not managed '" << _fileName << "' Sopported extention : .edf / .bmp / .svg / .png / .jpg / .j2k / .tif"); } return out; } @@ -72,8 +120,17 @@ bool egami::store(const egami::Image& _input, const std::string& _fileName) { } else if (etk::end_with(tmpName, ".png") == true) { EGAMI_ERROR("Can not store in PNG file '" << _fileName << "'"); return false; + } else if (etk::end_with(tmpName, ".jpg") == true) { + EGAMI_ERROR("Can not store in JPEG file '" << _fileName << "'"); + return false; + } else if (etk::end_with(tmpName, ".j2k") == true) { + EGAMI_ERROR("Can not store in JPEG 2000 file '" << _fileName << "'"); + return false; + } else if (etk::end_with(tmpName, ".tif") == true) { + EGAMI_ERROR("Can not store in TIFF file '" << _fileName << "'"); + return false; } else { - EGAMI_ERROR("Extention not managed '" << _fileName << "' Sopported extention: .edf / .bmp / .svg / .png"); + EGAMI_ERROR("Extention not managed '" << _fileName << "' Sopported extention: .edf / .bmp / .svg / .png / .jpg / .j2k / .tif"); return false; } return true; diff --git a/egami/wrapperBMP.cpp b/egami/wrapperBMP.cpp index 0948c38..3f7457b 100644 --- a/egami/wrapperBMP.cpp +++ b/egami/wrapperBMP.cpp @@ -40,6 +40,54 @@ enum modeBitmap { BITS_32_A8R8G8B8 }; + +static void display(struct bitmapFileHeader _header, struct bitmapInfoHeader _info) { + EGAMI_DEBUG(" -----------------------------------------------------------"); + EGAMI_DEBUG("Display caracteristic of the bitmap : "); + EGAMI_DEBUG(" Header of file :"); + EGAMI_DEBUG(" bfType =" << _header.bfType << " 19778 : must always be set to 'BM' to declare that this is a .bmp-file."); + EGAMI_DEBUG(" bfSize =" << _header.bfSize << " specifies the size of the file in bytes."); + EGAMI_DEBUG(" bfReserved=" << _header.bfReserved << " must always be set to zero."); + EGAMI_DEBUG(" bfOffBits =" << _header.bfOffBits << " 1078 : specifies the offset from the beginning of the file to the bitmap data."); + EGAMI_DEBUG(" info header of file :"); + EGAMI_DEBUG(" biSize =" << _info.biSize << " specifies the size of the BITMAPINFOHEADER structure, in bytes."); + EGAMI_DEBUG(" biWidth =" << _info.biWidth << " specifies the width of the image, in pixels."); + EGAMI_DEBUG(" biHeight =" << _info.biHeight << " specifies the height of the image, in pixels."); + EGAMI_DEBUG(" biPlanes =" << _info.biPlanes << " specifies the number of planes of the target device, must be set to zero."); + EGAMI_DEBUG(" biBitCount =" << _info.biBitCount << " specifies the number of bits per pixel."); + EGAMI_DEBUG(" biCompression =" << _info.biCompression << " Specifies the type of compression, usually set to zero (no compression)."); + EGAMI_DEBUG(" biSizeImage =" << _info.biSizeImage << " specifies the size of the image data, in bytes. If there is no compression, it is valid to set this member to zero."); + EGAMI_DEBUG(" biXPelsPerMeter=" << _info.biXPelsPerMeter << " specifies the the horizontal pixels per meter on the designated targer device, usually set to zero."); + EGAMI_DEBUG(" biYPelsPerMeter=" << _info.biYPelsPerMeter << " specifies the the vertical pixels per meter on the designated targer device, usually set to zero."); + EGAMI_DEBUG(" biClrUsed =" << _info.biClrUsed << " speglTexImage2Dcifies the number of colors used in the bitmap, if set to zero the number of colors is calculated using the biBitCount member."); + EGAMI_DEBUG(" biClrImportant =" << _info.biClrImportant << " specifies the number of color that are 'important' for the bitmap, if set to zero, all colors are important."); + /* + EGAMI_DEBUG("Bitmap : " << m_width << "x" << m_height); + switch(m_dataMode) + { + case BITS_16_R5G6B5: + EGAMI_DEBUG(" mode = 16 bits R5G6B5"); + break; + case BITS_16_X1R5G5B5: + EGAMI_DEBUG(" mode = 16 bits X1R5G5B5"); + break; + case BITS_24_R8G8B8: + EGAMI_DEBUG(" mode = 24 bits R8G8B8"); + break; + case BITS_32_X8R8G8B8: + EGAMI_DEBUG(" mode = 32 bits X8R8G8B8"); + break; + case BITS_32_A8R8G8B8: + EGAMI_DEBUG(" mode = 32 bits A8R8G8B8"); + break; + default: + EGAMI_DEBUG(" mode = ERROR"); + break; + }*/ +} + + + egami::Image egami::loadBMP(const std::string& _inputFile) { egami::Image out; enum modeBitmap m_dataMode = BITS_16_R5G6B5; @@ -51,7 +99,7 @@ egami::Image egami::loadBMP(const std::string& _inputFile) { etk::FSNode fileName(_inputFile); // get the fileSize ... /*if (fileName.size() < (int32_t)(sizeof(struct bitmapFileHeader) + sizeof(struct bitmapFileHeader) ) ) { - EWOL_ERROR("not enought data in the file named=\"" << fileName << "\""); + EGAMI_ERROR("not enought data in the file named=\"" << fileName << "\""); return; }*/ if (fileName.exist() == false) { @@ -73,6 +121,8 @@ egami::Image egami::loadBMP(const std::string& _inputFile) { fileName.fileClose(); return out; } + //display(m_FileHeader, m_InfoHeader); + //EGAMI_ERROR("plopppppppppppppp " << m_FileHeader.bfOffBits); if(fileName.fileSeek(m_FileHeader.bfOffBits, etk::seekNode_start) == false) { EGAMI_ERROR("error with the 'bfOffBits' in the file named=\"" << fileName << "\""); fileName.fileClose(); @@ -158,6 +208,15 @@ egami::Image egami::loadBMP(const std::string& _inputFile) { } break; case BITS_24_R8G8B8: { + int32_t offset = 0; + int32_t baseLine = m_width * 3; + if ((baseLine%4) == 1) { + offset = 3; + } else if ((baseLine%4) == 2) { + offset = 2; + } else if ((baseLine%4) == 3) { + offset = 1; + } uint8_t * pointer = (&m_data[0]); for(int32_t yyy=0; yyy check if(fileName.fileSeek(m_FileHeader.bfOffBits, etk::FSN_SEEK_START) == false) { EGAMI_ERROR("error with the 'bfOffBits' in the file named=\"" << fileName << "\""); @@ -278,61 +352,17 @@ bool egami::storeBMP(const std::string& _fileName, const egami::Image& _inputIma *pointer++ = tmpColor.b(); fileName.fileWrite(data,3,1); } + if (offset != 0) { + uint8_t pointer[4]; + pointer[0] = 0; + pointer[1] = 0; + pointer[2] = 0; + pointer[3] = 0; + fileName.fileWrite(pointer,1,offset); + } } } fileName.fileClose(); return true; } -/* -void ewol::texture::TextureBMP::display() -{ - if (NULL == m_data) { - EWOL_ERROR("Might loading error of this Bitmap ..."); - return; - } - EWOL_DEBUG(" -----------------------------------------------------------"); - if (false) { - EWOL_DEBUG("Display caracteristic of the bitmap : "); - EWOL_DEBUG(" Header of file :"); - EWOL_DEBUG(" bfType =" << m_FileHeader.bfType << " 19778 : must always be set to 'BM' to declare that this is a .bmp-file."); - EWOL_DEBUG(" bfSize =" << m_FileHeader.bfSize << " specifies the size of the file in bytes."); - EWOL_DEBUG(" bfReserved=" << m_FileHeader.bfReserved << " must always be set to zero."); - EWOL_DEBUG(" bfOffBits =" << m_FileHeader.bfOffBits << " 1078 : specifies the offset from the beginning of the file to the bitmap data."); - EWOL_DEBUG(" info header of file :"); - EWOL_DEBUG(" biSize =" << m_InfoHeader.biSize << " specifies the size of the BITMAPINFOHEADER structure, in bytes."); - EWOL_DEBUG(" biWidth =" << m_InfoHeader.biWidth << " specifies the width of the image, in pixels."); - EWOL_DEBUG(" biHeight =" << m_InfoHeader.biHeight << " specifies the height of the image, in pixels."); - EWOL_DEBUG(" biPlanes =" << m_InfoHeader.biPlanes << " specifies the number of planes of the target device, must be set to zero."); - EWOL_DEBUG(" biBitCount =" << m_InfoHeader.biBitCount << " specifies the number of bits per pixel."); - EWOL_DEBUG(" biCompression =" << m_InfoHeader.biCompression << " Specifies the type of compression, usually set to zero (no compression)."); - EWOL_DEBUG(" biSizeImage =" << m_InfoHeader.biSizeImage << " specifies the size of the image data, in bytes. If there is no compression, it is valid to set this member to zero."); - EWOL_DEBUG(" biXPelsPerMeter=" << m_InfoHeader.biXPelsPerMeter << " specifies the the horizontal pixels per meter on the designated targer device, usually set to zero."); - EWOL_DEBUG(" biYPelsPerMeter=" << m_InfoHeader.biYPelsPerMeter << " specifies the the vertical pixels per meter on the designated targer device, usually set to zero."); - EWOL_DEBUG(" biClrUsed =" << m_InfoHeader.biClrUsed << " speglTexImage2Dcifies the number of colors used in the bitmap, if set to zero the number of colors is calculated using the biBitCount member."); - EWOL_DEBUG(" biClrImportant =" << m_InfoHeader.biClrImportant << " specifies the number of color that are 'important' for the bitmap, if set to zero, all colors are important."); - } - EWOL_DEBUG("Bitmap : " << m_width << "x" << m_height); - switch(m_dataMode) - { - case BITS_16_R5G6B5: - EWOL_DEBUG(" mode = 16 bits R5G6B5"); - break; - case BITS_16_X1R5G5B5: - EWOL_DEBUG(" mode = 16 bits X1R5G5B5"); - break; - case BITS_24_R8G8B8: - EWOL_DEBUG(" mode = 24 bits R8G8B8"); - break; - case BITS_32_X8R8G8B8: - EWOL_DEBUG(" mode = 32 bits X8R8G8B8"); - break; - case BITS_32_A8R8G8B8: - EWOL_DEBUG(" mode = 32 bits A8R8G8B8"); - break; - default: - EWOL_DEBUG(" mode = ERROR"); - break; - } -} -*/ diff --git a/egami/wrapperJPG.cpp b/egami/wrapperJPG.cpp new file mode 100644 index 0000000..15bcf13 --- /dev/null +++ b/egami/wrapperJPG.cpp @@ -0,0 +1,131 @@ +/** @file + * @author Edouard DUPIN + * @copyright 2011, Edouard DUPIN, all right reserved + * @license APACHE v2.0 (see license file) + */ + +#include +#include +#include +#include +#include +extern "C" { + #include "jpeglib.h" +} +#include + +struct my_error_mgr { + struct jpeg_error_mgr pub; /* "public" fields */ + jmp_buf setjmp_buffer; /* for return to caller */ +}; + +typedef struct my_error_mgr * my_error_ptr; + +/* + * Here's the routine that will replace the standard error_exit method: + */ +METHODDEF(void) my_error_exit(j_common_ptr _cinfo) { + // cinfo->err really points to a my_error_mgr struct, so coerce pointer + my_error_ptr myerr = (my_error_ptr)_cinfo->err; + // Always display the message. + // We could postpone this until after returning, if we chose. + (*_cinfo->err->output_message)(_cinfo); + // Return control to the setjmp point + longjmp(myerr->setjmp_buffer, 1); +} + +void put_scanline_someplace(const uint8_t* _buffer, int32_t _row_stride) { + EGAMI_ERROR("plop " << uint64_t(_buffer) << " row=" << _row_stride << " " << (_row_stride/3)); +} + + +egami::Image egami::loadJPG(const std::string& _inputFile) { + egami::Image out; + etk::FSNode fileName(_inputFile); + if (fileName.exist() == false) { + EGAMI_ERROR("File does not existed='" << fileName << "'"); + return out; + } + if(fileName.fileOpenRead() == false) { + EGAMI_ERROR("Can not find the file name='" << fileName << "'"); + return out; + } + std::vector allData = fileName.fileReadAll(); + fileName.fileClose(); + + // This struct contains the JPEG decompression parameters and pointers to working space (which is allocated as needed by the JPEG library). + struct jpeg_decompress_struct cinfo; + // We use our private extension JPEG error handler. Note that this struct must live as long as the main JPEG parameter struct, to avoid dangling-pointer problems. + struct my_error_mgr jerr; + // More stuff + JSAMPARRAY buffer; + int row_stride; + + // Step 1: allocate and initialize JPEG decompression object + + // We set up the normal JPEG error routines, then override error_exit. + cinfo.err = jpeg_std_error(&jerr.pub); + jerr.pub.error_exit = my_error_exit; + // Establish the setjmp return context for my_error_exit to use. + if (setjmp(jerr.setjmp_buffer)) { + // If we get here, the JPEG code has signaled an error. We need to clean up the JPEG object, close the input file, and return. + jpeg_destroy_decompress(&cinfo); + return out; + } + // Now we can initialize the JPEG decompression object. + jpeg_create_decompress(&cinfo); + + // Step 2: specify data source (eg, a file) + jpeg_mem_src(&cinfo, &allData[0], allData.size()); + + // Step 3: read file parameters with jpeg_read_header() + (void)jpeg_read_header(&cinfo, TRUE); + // We can ignore the return value from jpeg_read_header since + // (a) suspension is not possible with the stdio data source, and + // (b) we passed TRUE to reject a tables-only JPEG file as an error. + // See libjpeg.txt for more info. + + // Step 4: set parameters for decompression + // In this example, we don't need to change any of the defaults set by jpeg_read_header(), so we do nothing here. + + // Step 5: Start decompressor + (void) jpeg_start_decompress(&cinfo); + // We can ignore the return value since suspension is not possible with the stdio data source. + + // We may need to do some setup of our own at this point before reading the data. + // After jpeg_start_decompress() we have the correct scaled output image dimensions available, as well as the output colormap if we asked for color quantization. + // In this example, we need to make an output work buffer of the right size. + // JSAMPLEs per row in output buffer + row_stride = cinfo.output_width * cinfo.output_components; + // Make a one-row-high sample array that will go away when done with image + buffer = (*cinfo.mem->alloc_sarray)((j_common_ptr) &cinfo, JPOOL_IMAGE, row_stride, 1); + + // Step 6: while (scan lines remain to be read) jpeg_read_scanlines(...); + // Resize output image: + out.configure(ivec2(cinfo.output_width,cinfo.output_height), egami::colorType::RGB8); + uint8_t* dataOutPointer = (uint8_t*)out.getTextureDataPointer(); + + + // Here we use the library's state variable cinfo.output_scanline as the loop counter, so that we don't have to keep track ourselves. + int32_t yyy = 1; + while (cinfo.output_scanline < cinfo.output_height) { + // Get a simple line: + (void) jpeg_read_scanlines(&cinfo, buffer, 1); + // Direst push on the output (got output format RGB8) + uint8_t* tmpp = dataOutPointer + (row_stride*(cinfo.output_height-yyy)); + memcpy(tmpp, buffer[0], row_stride); + yyy++; + } + // Step 7: Finish decompression + (void) jpeg_finish_decompress(&cinfo); + // We can ignore the return value since suspension is not possible with the stdio data source. + + // Step 8: Release JPEG decompression object + // This is an important step since it will release a good deal of memory. + jpeg_destroy_decompress(&cinfo); + + // At this point you may want to check to see whether any corrupt-data warnings occurred (test whether jerr.pub.num_warnings is nonzero). + return out; +} + + diff --git a/egami/wrapperJPG.hpp b/egami/wrapperJPG.hpp new file mode 100644 index 0000000..e783dec --- /dev/null +++ b/egami/wrapperJPG.hpp @@ -0,0 +1,18 @@ +/** @file + * @author Edouard DUPIN + * @copyright 2011, Edouard DUPIN, all right reserved + * @license APACHE v2.0 (see license file) + */ +#pragma once + +#include + +namespace egami { + /** + * @breif Load a jpeg file in the image. + * @param[in] _fileName Name of the file. + * @return Read Image. + */ + egami::Image loadJPG(const std::string& _fileName); +} + diff --git a/egami/wrapperJPG2000.cpp b/egami/wrapperJPG2000.cpp new file mode 100644 index 0000000..e1187b0 --- /dev/null +++ b/egami/wrapperJPG2000.cpp @@ -0,0 +1,32 @@ +/** @file + * @author Edouard DUPIN + * @copyright 2011, Edouard DUPIN, all right reserved + * @license APACHE v2.0 (see license file) + */ + +#include +#include +#include +#include +#include + +egami::Image egami::loadJPG2000(const std::string& _inputFile) { + egami::Image out; + etk::FSNode fileName(_inputFile); + if (fileName.exist() == false) { + EGAMI_ERROR("File does not existed='" << fileName << "'"); + return out; + } + if(fileName.fileOpenRead() == false) { + EGAMI_ERROR("Can not find the file name='" << fileName << "'"); + return out; + } + + + + + + + return out; +} + diff --git a/egami/wrapperJPG2000.hpp b/egami/wrapperJPG2000.hpp new file mode 100644 index 0000000..c12d41a --- /dev/null +++ b/egami/wrapperJPG2000.hpp @@ -0,0 +1,18 @@ +/** @file + * @author Edouard DUPIN + * @copyright 2011, Edouard DUPIN, all right reserved + * @license APACHE v2.0 (see license file) + */ +#pragma once + +#include + +namespace egami { + /** + * @breif Load a jpeg 2000 file in the image. + * @param[in] _fileName Name of the file. + * @return Read Image. + */ + egami::Image loadJPG2000(const std::string& _fileName); +} + diff --git a/egami/wrapperPNG.cpp b/egami/wrapperPNG.cpp index 7cb2eef..25c2846 100644 --- a/egami/wrapperPNG.cpp +++ b/egami/wrapperPNG.cpp @@ -211,7 +211,7 @@ egami::Image egami::loadPNG(const std::string& _inputFile) { for (png_uint_32 xxx = 0; xxx < width; ++xxx) { png_byte* ptr = &(row[xxx*4]); tmpColor.set(ptr[0], ptr[1], ptr[2], ptr[3]); - out.set(ivec2(xxx,yyy), tmpColor); + out.set(ivec2(xxx,height-yyy-1), tmpColor); } } break; @@ -223,7 +223,7 @@ egami::Image egami::loadPNG(const std::string& _inputFile) { for (png_uint_32 xxx = 0; xxx < width; ++xxx) { png_byte* ptr = &(row[xxx*3]); tmpColor.set(ptr[0], ptr[1], ptr[2]); - out.set(ivec2(xxx,yyy), tmpColor); + out.set(ivec2(xxx,height-yyy-1), tmpColor); } } break; @@ -235,7 +235,7 @@ egami::Image egami::loadPNG(const std::string& _inputFile) { for (png_uint_32 xxx = 0; xxx < width; ++xxx) { png_byte* ptr = &(row[xxx]); tmpColor.set(ptr[0], ptr[0], ptr[0]); - out.set(ivec2(xxx,yyy), tmpColor); + out.set(ivec2(xxx,height-yyy-1), tmpColor); } } break; @@ -247,7 +247,7 @@ egami::Image egami::loadPNG(const std::string& _inputFile) { for (png_uint_32 xxx = 0; xxx < width; ++xxx) { png_byte* ptr = &(row[xxx*2]); tmpColor.set(ptr[0], ptr[0], ptr[0], ptr[1]); - out.set(ivec2(xxx,yyy), tmpColor); + out.set(ivec2(xxx,height-yyy-1), tmpColor); } } break; diff --git a/egami/wrapperTIFF.cpp b/egami/wrapperTIFF.cpp new file mode 100644 index 0000000..09f7d4d --- /dev/null +++ b/egami/wrapperTIFF.cpp @@ -0,0 +1,33 @@ +/** @file + * @author Edouard DUPIN + * @copyright 2011, Edouard DUPIN, all right reserved + * @license APACHE v2.0 (see license file) + */ + +#include +#include +#include +#include +#include + + +egami::Image egami::loadTIFF(const std::string& _inputFile) { + egami::Image out; + etk::FSNode fileName(_inputFile); + if (fileName.exist() == false) { + EGAMI_ERROR("File does not existed='" << fileName << "'"); + return out; + } + if(fileName.fileOpenRead() == false) { + EGAMI_ERROR("Can not find the file name='" << fileName << "'"); + return out; + } + + + + + + + return out; +} + diff --git a/egami/wrapperTIFF.hpp b/egami/wrapperTIFF.hpp new file mode 100644 index 0000000..bfba9ce --- /dev/null +++ b/egami/wrapperTIFF.hpp @@ -0,0 +1,18 @@ +/** @file + * @author Edouard DUPIN + * @copyright 2011, Edouard DUPIN, all right reserved + * @license APACHE v2.0 (see license file) + */ +#pragma once + +#include + +namespace egami { + /** + * @breif Load a tiff file in the image. + * @param[in] _fileName Name of the file. + * @return Read Image. + */ + egami::Image loadTIFF(const std::string& _fileName); +} + diff --git a/lutin_egami-sample.py b/lutin_egami-sample.py index 68ab293..d3ff67f 100644 --- a/lutin_egami-sample.py +++ b/lutin_egami-sample.py @@ -25,15 +25,16 @@ def get_maintainer(): return ["Mr DUPIN Edouard "] def configure(target, my_module): - my_module.add_depend(['egami', 'test-debug']) + my_module.add_depend([ + 'egami', + 'test-debug' + ]) my_module.add_src_file([ 'sample/main.cpp', 'sample/read.cpp', 'sample/write.cpp' ]) - my_module.copy_path('sample/read.bmp') - my_module.copy_path('sample/read.svg') - my_module.copy_path('sample/read.png') + my_module.copy_path('data/*') return True diff --git a/lutin_egami-test.py b/lutin_egami-test.py index fcec1dc..c3d4624 100644 --- a/lutin_egami-test.py +++ b/lutin_egami-test.py @@ -25,11 +25,16 @@ def get_maintainer(): return ["Mr DUPIN Edouard "] def configure(target, my_module): - my_module.add_depend(['egami', 'gtest', 'test-debug']) + my_module.add_depend([ + 'egami', + 'gtest', + 'test-debug', + 'algue', + ]) my_module.add_src_file([ 'test/main.cpp' ]) - #my_module.add_export_path(tools.get_current_path(__file__)) + my_module.copy_path('data/*') return True diff --git a/lutin_egami.py b/lutin_egami.py index 3db315b..31adfff 100644 --- a/lutin_egami.py +++ b/lutin_egami.py @@ -31,8 +31,6 @@ def configure(target, my_module): 'egami/ImageMono.cpp', 'egami/egami.cpp', 'egami/debug.cpp', - 'egami/wrapperPNG.cpp', - 'egami/wrapperSVG.cpp', 'egami/wrapperBMP.cpp', 'egami/wrapperEDF.cpp' ]) @@ -43,14 +41,47 @@ def configure(target, my_module): ]) my_module.add_depend([ 'etk', - 'png', - 'esvg', 'edtaa3' ]) my_module.add_flag('c++', [ '-Wno-write-strings', '-Wall' ]) + my_module.add_optionnal_depend( + 'png', + ["c++", "-DEGAMI_BUILD_PNG"], + src_file=[ + 'egami/wrapperPNG.cpp', + ] + ) + my_module.add_optionnal_depend( + 'esvg', + ["c++", "-DEGAMI_BUILD_ESVG"], + src_file=[ + 'egami/wrapperSVG.cpp', + ] + ) + my_module.add_optionnal_depend( + 'jpeg', + ["c++", "-DEGAMI_BUILD_JPEG"], + src_file=[ + 'egami/wrapperJPG.cpp', + ] + ) + my_module.add_optionnal_depend( + 'openjpeg', + ["c++", "-DEGAMI_BUILD_JPEG2000"], + src_file=[ + 'egami/wrapperJPG2000.cpp', + ] + ) + my_module.add_optionnal_depend( + 'tiff', + ["c++", "-DEGAMI_BUILD_TIFF"], + src_file=[ + 'egami/wrapperTIFF.cpp', + ] + ) my_module.add_path(".") return True diff --git a/test/main.cpp b/test/main.cpp index bf519b7..c16c75a 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -7,6 +7,8 @@ #include #include #include +#include +#include int main(int argc, const char *argv[]) { @@ -18,9 +20,60 @@ int main(int argc, const char *argv[]) { return RUN_ALL_TESTS(); } - -TEST(TestPng, read) { - // TODO : Do real test ... - EXPECT_EQ(5, 6); +TEST(TestBMP, read) { + egami::Image image = egami::load("DATA:read.bmp"); + egami::store(image, "out/read.bmp.bmp"); + // Check if image is loaded + EXPECT_EQ(true, image.exist()); + // check image correct size + EXPECT_EQ(ivec2(227,149), image.getSize()); + // check image correct type + EXPECT_EQ(egami::colorType::RGB8, image.getType()); + // check integrity + std::string sha512 = algue::stringConvert(algue::sha512::encode((const uint8_t *)image.getTextureDataPointer(), egami::getFormatColorSize(image.getType()) * image.getSize().x() * image.getSize().y())); + EXPECT_EQ("3518a9693a349044d23c3a95262831144011086fdb339ef8532f9c6cebffe76b2c994b0a3e6d69addca15538a1cb559af3be445c5b622b5cf80c9291e7b8ca5b", sha512); } + +TEST(TestPNG, read) { + egami::Image image = egami::load("DATA:read.png"); + egami::store(image, "out/read.png.bmp"); + // Check if image is loaded + EXPECT_EQ(true, image.exist()); + // check image correct size + EXPECT_EQ(ivec2(227,149), image.getSize()); + // check image correct type + EXPECT_EQ(egami::colorType::RGB8, image.getType()); + // check integrity + std::string sha512 = algue::stringConvert(algue::sha512::encode((const uint8_t *)image.getTextureDataPointer(), egami::getFormatColorSize(image.getType()) * image.getSize().x() * image.getSize().y())); + EXPECT_EQ("42dbad7abf1e651da58c9df06521d63a878b5bd0db6e1cbe129db3c9782ce640a6709583ba9e6571d314f39b259321dcc392f98bf4412deb5ce8392566d2bc0f", sha512); +} + +TEST(TestSVG, read) { + egami::Image image = egami::load("DATA:read.svg"); + egami::store(image, "out/read.svg.bmp"); + // Check if image is loaded + EXPECT_EQ(true, image.exist()); + // check image correct size + EXPECT_EQ(ivec2(64,64), image.getSize()); + // check image correct type + EXPECT_EQ(egami::colorType::RGBA8, image.getType()); + // check integrity + std::string sha512 = algue::stringConvert(algue::sha512::encode((const uint8_t *)image.getTextureDataPointer(), egami::getFormatColorSize(image.getType()) * image.getSize().x() * image.getSize().y())); + EXPECT_EQ("7975d12caae94e67e85909f26b6dc0672d7e4686808d851b3207be6272b6d0153572cd643eea819c2f4dae9f7837165b4d5b34353da9f847d77afc2701945284", sha512); +} + + +TEST(TestJPG, read) { + egami::Image image = egami::load("DATA:read.jpg"); + egami::store(image, "out/read.jpg.bmp"); + // Check if image is loaded + EXPECT_EQ(true, image.exist()); + // check image correct size + EXPECT_EQ(ivec2(227,149), image.getSize()); + // check image correct type + EXPECT_EQ(egami::colorType::RGB8, image.getType()); + // check integrity + std::string sha512 = algue::stringConvert(algue::sha512::encode((const uint8_t *)image.getTextureDataPointer(), egami::getFormatColorSize(image.getType()) * image.getSize().x() * image.getSize().y())); + EXPECT_EQ("42dbad7abf1e651da58c9df06521d63a878b5bd0db6e1cbe129db3c9782ce640a6709583ba9e6571d314f39b259321dcc392f98bf4412deb5ce8392566d2bc0f", sha512); +}