aboutsummaryrefslogtreecommitdiff
path: root/KaplaDemo/samples/sampleViewer3/IJGWin32/CPPJPEGWrapper.cpp
diff options
context:
space:
mode:
authorgit perforce import user <a@b>2016-10-25 12:29:14 -0600
committerSheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees>2016-10-25 18:56:37 -0500
commit3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch)
treefa6485c169e50d7415a651bf838f5bcd0fd3bfbd /KaplaDemo/samples/sampleViewer3/IJGWin32/CPPJPEGWrapper.cpp
downloadphysx-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.cpp94
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;
+}