File: loadFile.cpp

package info (click to toggle)
primrose 6%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 5,304 kB
  • sloc: cpp: 27,318; php: 765; ansic: 636; objc: 272; sh: 136; makefile: 92; perl: 67
file content (86 lines) | stat: -rw-r--r-- 1,768 bytes parent folder | download | duplicates (30)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <stdio.h>
#include <stdlib.h>
#include "loadFile.h"

// loads any file into the dest ptr.


void loadFile( const char* fileName, long sizeInBytes, unsigned char* byteDestPtr) {


	
	FILE *f;
	
	int numBytesRead;
	

	f = fopen( fileName, "rb");	// open the file
	
	// don't load if file failed to open
	if( f == NULL ) {
		return;
		}
	
	numBytesRead = fread( (void*)byteDestPtr, sizeof(char), sizeInBytes, f);
	
	fclose(f);
	
	}
	
	
	
	


// loads a photoshop RAW image file, 32-bit

// NOTE:
	// This function exists because photoshop swaps the red and blue channels when
	// it saves a file as raw.  Thus, the file stream doesn't match the way a video
	// card deals with 32-bit color.
	
	// This function loads the file and then swaps the appropriate bytes
	
void loadRawFile( const char* fileName, long sizeInBytes, unsigned char* byteDestPtr) {

	//unsigned char tempChannel;

	
	long byteCount;

	FILE *f;
	
	int numBytesRead;

	
	f = fopen( fileName, "rb");	// open the file
	
	// don't load if file failed to open
	if( f == NULL ) {
		return;
		}
	
	numBytesRead = fread( (void*)byteDestPtr, sizeof(char), sizeInBytes, f);
	
	
	// now that file read, swap the red and blue channels:

	for( byteCount = 0; byteCount< sizeInBytes; byteCount=byteCount+4) {

		unsigned char alpha = byteDestPtr[byteCount+3];
		
		byteDestPtr[byteCount+3] = byteDestPtr[byteCount+2];
		byteDestPtr[byteCount+2] = byteDestPtr[byteCount+1];
		byteDestPtr[byteCount+1] = byteDestPtr[byteCount];
		
		byteDestPtr[byteCount] = alpha;

/*		tempChannel = byteDestPtr[byteCount];				// currently in red position
		byteDestPtr[byteCount] = byteDestPtr[byteCount+3];	// currently set to what's in alpha position
		byteDestPtr[byteCount+2] = tempChannel;
*/		
		
		}
	
	fclose(f);
	}