diff options
| author | git perforce import user <a@b> | 2016-10-25 12:29:14 -0600 |
|---|---|---|
| committer | Sheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees> | 2016-10-25 18:56:37 -0500 |
| commit | 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch) | |
| tree | fa6485c169e50d7415a651bf838f5bcd0fd3bfbd /KaplaDemo/samples/sampleViewer3/IJGWin32/CPPJPEGWrapper.cpp | |
| download | physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.tar.xz physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.zip | |
Initial commit:
PhysX 3.4.0 Update @ 21294896
APEX 1.4.0 Update @ 21275617
[CL 21300167]
Diffstat (limited to 'KaplaDemo/samples/sampleViewer3/IJGWin32/CPPJPEGWrapper.cpp')
| -rw-r--r-- | KaplaDemo/samples/sampleViewer3/IJGWin32/CPPJPEGWrapper.cpp | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/KaplaDemo/samples/sampleViewer3/IJGWin32/CPPJPEGWrapper.cpp b/KaplaDemo/samples/sampleViewer3/IJGWin32/CPPJPEGWrapper.cpp new file mode 100644 index 00000000..685d0209 --- /dev/null +++ b/KaplaDemo/samples/sampleViewer3/IJGWin32/CPPJPEGWrapper.cpp @@ -0,0 +1,94 @@ +#include "stdafx.h" +#include "CPPJPEGWrapper.h" + +CPPJPEGWrapper::CPPJPEGWrapper() { + data = 0; + x = 0; + y = 0; +} +CPPJPEGWrapper::~CPPJPEGWrapper() { + Unload(); +} +void CPPJPEGWrapper::Unload() { + if (data) { + delete [] data; + data = 0; + } +} + +unsigned char* CPPJPEGWrapper::GetData() const { + return data; +} +unsigned CPPJPEGWrapper::GetWidth() { + return x; +} +unsigned CPPJPEGWrapper::GetHeight() { + return y; +} +unsigned CPPJPEGWrapper::GetBPP() { + return bpp; +} +unsigned CPPJPEGWrapper::GetChannels() { + return channels; +} + + +bool CPPJPEGWrapper::LoadJPEG(const char* FileName, bool Fast) +{ + Unload(); + FILE* file = fopen(FileName, "rb"); //open the file + if (!file) return false; + struct jpeg_decompress_struct info; //the jpeg decompress info + struct jpeg_error_mgr err; //the error handler + + info.err = jpeg_std_error(&err); //tell the jpeg decompression handler to send the errors to err + jpeg_create_decompress(&info); //sets info to all the default stuff + + //if the jpeg file didnt load exit + if(!file) + { + //fprintf(stderr, "Error reading JPEG file %s!!!", FileName); + //LoadBlackWhiteBorder(); + return false; + } + + jpeg_stdio_src(&info, file); //tell the jpeg lib the file we'er reading + + jpeg_read_header(&info, TRUE); //tell it to start reading it + + //if it wants to be read fast or not + if(Fast) + { + info.do_fancy_upsampling = FALSE; + } + + jpeg_start_decompress(&info); //decompress the file + + //set the x and y + x = info.output_width; + y = info.output_height; + channels = info.num_components; + + bpp = channels * 8; + + size = x * y * 3; + + //read turn the uncompressed data into something ogl can read + data = new unsigned char[size]; //setup data for the data its going to be handling + + unsigned char* p1 = data; + unsigned char** p2 = &p1; + int numlines = 0; + + while(info.output_scanline < info.output_height) + { + numlines = jpeg_read_scanlines(&info, p2, 1); + *p2 += numlines * 3 * info.output_width; + } + + jpeg_finish_decompress(&info); //finish decompressing this file + + fclose(file); //close the file + + return true; +} |