fork(1) download
  1. #include "bitmap.h"
  2.  
  3.  
  4. void setRowSize(Bitmap* img) {
  5. img->rowSize = ((img->dib.bitDepth * img->dib.bmWidth + 31) / 32) * 4;
  6. }
  7.  
  8. void freeBitmap(Bitmap* img) {
  9. free(img->data);
  10. free(img);
  11. }
  12.  
  13. Bitmap* newBitmapFromFile(const char* filePath) {
  14. FILE* inFile = fopen(filePath, "rb");
  15.  
  16. if (!inFile)
  17. return NULL;
  18.  
  19. Bitmap* img = (Bitmap*) malloc(sizeof(Bitmap));
  20.  
  21. fseek(inFile, 0, SEEK_SET);
  22. fread(&img->header, sizeof(BitmapHeader), 1, inFile);
  23.  
  24. if (img->header.bmType !=0x4D42)
  25. {
  26. fclose(inFile);
  27. free(img);
  28. return NULL;
  29. }
  30.  
  31. fseek(inFile, sizeof(BitmapHeader), SEEK_SET);
  32. fread(&img->dib, sizeof(BitmapDIB), 1, inFile);
  33.  
  34. img->data = (uint8_t*) malloc(img->dib.dataSize);
  35.  
  36. if (!img->data)
  37. {
  38. fclose(inFile);
  39. free(img);
  40. return NULL;
  41. }
  42.  
  43. fseek(inFile, img->header.bmPixArrayOffset, SEEK_SET);
  44. fread(img->data, img->dib.dataSize, 1, inFile);
  45.  
  46. setRowSize(img);
  47.  
  48. fclose(inFile);
  49.  
  50. return img;
  51. }
  52.  
  53. bool writeBitmapToFile(const char* filePath, Bitmap* img) {
  54. FILE* outFile = fopen(filePath, "wb");
  55.  
  56.  
  57. if (!outFile)
  58. return false;
  59.  
  60. uint32_t headerSize = sizeof(BitmapHeader) + sizeof(BitmapDIB);
  61.  
  62. if (fwrite(img, headerSize, 1, outFile) == 0) {
  63. fclose(outFile);
  64. remove(filePath);
  65. return false;
  66. }
  67.  
  68. if (fwrite(img->data, img->dib.dataSize, 1, outFile) == 0) {
  69. fclose(outFile);
  70. remove(filePath);
  71. }
  72.  
  73. fclose(outFile);
  74.  
  75.  
  76. return true;
  77. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: illegal character: '#'
#include "bitmap.h"
^
Main.java:1: error: class, interface, or enum expected
#include "bitmap.h"
         ^
Main.java:6: error: class, interface, or enum expected
}
^
Main.java:10: error: class, interface, or enum expected
	free(img);
	^
Main.java:11: error: class, interface, or enum expected
}
^
Main.java:16: error: class, interface, or enum expected
	if (!inFile)
	^
Main.java:19: error: class, interface, or enum expected
	Bitmap* img = (Bitmap*) malloc(sizeof(Bitmap));
	^
Main.java:21: error: class, interface, or enum expected
	fseek(inFile, 0, SEEK_SET);
	^
Main.java:22: error: class, interface, or enum expected
	fread(&img->header, sizeof(BitmapHeader), 1, inFile);
	^
Main.java:24: error: class, interface, or enum expected
	if (img->header.bmType !=0x4D42)
	^
Main.java:27: error: class, interface, or enum expected
		free(img);
		^
Main.java:28: error: class, interface, or enum expected
		return NULL;
		^
Main.java:29: error: class, interface, or enum expected
	}
	^
Main.java:32: error: class, interface, or enum expected
	fread(&img->dib, sizeof(BitmapDIB), 1, inFile);
	^
Main.java:34: error: class, interface, or enum expected
	img->data = (uint8_t*) malloc(img->dib.dataSize);
	^
Main.java:36: error: class, interface, or enum expected
	if (!img->data)
	^
Main.java:39: error: class, interface, or enum expected
		free(img);
		^
Main.java:40: error: class, interface, or enum expected
		return NULL;
		^
Main.java:41: error: class, interface, or enum expected
	}
	^
Main.java:44: error: class, interface, or enum expected
	fread(img->data, img->dib.dataSize, 1, inFile);
	^
Main.java:46: error: class, interface, or enum expected
	setRowSize(img);
	^
Main.java:48: error: class, interface, or enum expected
	fclose(inFile);
	^
Main.java:50: error: class, interface, or enum expected
	return img;
	^
Main.java:51: error: class, interface, or enum expected
}
^
Main.java:57: error: class, interface, or enum expected
	if (!outFile)
	^
Main.java:60: error: class, interface, or enum expected
	uint32_t headerSize = sizeof(BitmapHeader) + sizeof(BitmapDIB);
	^
Main.java:62: error: class, interface, or enum expected
	if (fwrite(img, headerSize, 1, outFile) == 0) {
	^
Main.java:64: error: class, interface, or enum expected
		remove(filePath);
		^
Main.java:65: error: class, interface, or enum expected
		return false;
		^
Main.java:66: error: class, interface, or enum expected
	}   
	^
Main.java:70: error: class, interface, or enum expected
		remove(filePath);
		^
Main.java:71: error: class, interface, or enum expected
	}
	^
Main.java:76: error: class, interface, or enum expected
	return true;
	^
Main.java:77: error: class, interface, or enum expected
}
^
34 errors
stdout
Standard output is empty