fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <conio.h>
  4. #include "bitmap.h"
  5.  
  6. #define MAXLEN 100
  7.  
  8. void drawBmp(Bitmap*);
  9. Bitmap** splitBmp(Bitmap*,int32_t,int32_t,int32_t&);
  10. Bitmap* extractBmp(Bitmap* , int32_t, int32_t, int32_t, int32_t);
  11.  
  12. int main(int argc, char* argv[]) {
  13.  
  14. if (argc < 6 || strcmp(argv[2], "-h") || strcmp(argv[4], "-w"))
  15. return 0;
  16.  
  17. Bitmap* img = newBitmapFromFile(argv[1]);
  18.  
  19. int32_t nHeight = atoi(argv[3]);
  20. int32_t nWidth = atoi(argv[5]);
  21.  
  22. if (img != NULL) {
  23.  
  24. drawBmp(img);
  25.  
  26. int32_t nImgs;
  27. Bitmap** smallImgs = splitBmp(img, nHeight, nWidth, nImgs);
  28. char s[MAXLEN];
  29. for (int32_t i = 0; i < nImgs; i++) {
  30. sprintf(s,"/Users/hans/Desktop/%03d.bmp", i+1);
  31. writeBitmapToFile(s, smallImgs[i]);
  32. freeBitmap(smallImgs[i]);
  33. }
  34.  
  35. free(smallImgs);
  36. freeBitmap(img);
  37. }
  38. getch();
  39. return 0;
  40. }
  41.  
  42. Bitmap** splitBmp(Bitmap* img, int32_t nHeight, int32_t nWidth, int32_t& nImgs) {
  43. int32_t sHeight = img->dib.bmHeight / nHeight;
  44. int32_t sWidth = img->dib.bmWidth / nWidth;
  45. int32_t sLastHeight = img->dib.bmHeight % nHeight + sHeight;
  46. int32_t sLastWidth = img->dib.bmWidth % nHeight + sWidth;
  47.  
  48. nImgs = nWidth * nHeight;
  49. Bitmap** smallImgs = (Bitmap**) malloc(sizeof(Bitmap*) * nImgs);
  50.  
  51. int32_t i = 0;
  52. int32_t height, width;
  53.  
  54.  
  55. for (int32_t x = 0; x < img->dib.bmHeight; x += height) {
  56.  
  57. if (x + sLastHeight == img->dib.bmHeight)
  58. height = sLastHeight;
  59. else
  60. height = sHeight;
  61.  
  62. for (int32_t y = 0; y < img->dib.bmWidth; y += width) {
  63. if (x + sLastWidth == img->dib.bmWidth)
  64. width = sLastWidth;
  65. else
  66. width = sWidth;
  67.  
  68. smallImgs[i++] = extractBmp(img,x,y,height,width);
  69. }
  70. }
  71.  
  72. return smallImgs;
  73. }
  74.  
  75.  
  76. Bitmap* extractBmp(Bitmap* img, int32_t x, int32_t y, int32_t height, int32_t width) {
  77.  
  78. Bitmap* newImg = (Bitmap*) malloc(sizeof(Bitmap));
  79. *newImg = *img;
  80.  
  81. newImg->dib.bmWidth = width;
  82. newImg->dib.bmHeight = height;
  83.  
  84. setRowSize(newImg);
  85. newImg->dib.dataSize = newImg->rowSize * newImg->dib.bmHeight;
  86.  
  87. newImg->data = (uint8_t*) malloc(sizeof(uint8_t)*newImg->dib.dataSize);
  88.  
  89. for (int32_t i = 0; i < newImg->dib.bmHeight; i++) {
  90. for (int32_t j = 0; j < newImg->dib.bmWidth; j++) {
  91. (*newImg)(i,j) = (*img)(x + i, y + j);
  92. }
  93. }
  94.  
  95. return newImg;
  96. }
  97.  
  98.  
  99. #ifdef _WIN32
  100. #define _CRT_SECURE_NO_WARNINGS
  101. #include <windows.h>
  102. void drawBmp(Bitmap* img) {
  103. HWND console = GetConsoleWindow();
  104. HDC hdc = GetDC(console);
  105.  
  106. for (int i = img->dib.bmHeight - 1; i >=0; i--) {
  107. for (int j = 0; j < img->dib.bmWidth; j++) {
  108. Pixel pixel = (*img)(i,j);
  109. SetPixel(hdc, j, img->dib.bmHeight-1 - i, RGB(pixel.R, pixel.G, pixel.B));
  110. }
  111. }
  112.  
  113. ReleaseDC(console, hdc);
  114. }
  115. #else
  116. void drawBmp(Bitmap* img) {
  117. printf("Can't draw on console\n");
  118. }
  119. #endif
  120.  
  121.  
  122.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: illegal character: '#'
#include <stdio.h>
^
Main.java:1: error: class, interface, or enum expected
#include <stdio.h>
         ^
Main.java:2: error: illegal character: '#'
#include <string.h>
^
Main.java:3: error: illegal character: '#'
#include <conio.h>
^
Main.java:4: error: illegal character: '#'
#include "bitmap.h"
^
Main.java:6: error: illegal character: '#'
#define MAXLEN 100
^
Main.java:9: error: class, interface, or enum expected
Bitmap** splitBmp(Bitmap*,int32_t,int32_t,int32_t&);
^
Main.java:10: error: class, interface, or enum expected
Bitmap* extractBmp(Bitmap* , int32_t, int32_t, int32_t, int32_t);
^
Main.java:12: error: class, interface, or enum expected
int main(int argc, char* argv[]) {
^
Main.java:17: error: class, interface, or enum expected
	Bitmap* img = newBitmapFromFile(argv[1]);
	^
Main.java:19: error: class, interface, or enum expected
	int32_t nHeight = atoi(argv[3]);
	^
Main.java:20: error: class, interface, or enum expected
	int32_t nWidth = atoi(argv[5]);
	^
Main.java:22: error: class, interface, or enum expected
	if (img != NULL) {
	^
Main.java:26: error: class, interface, or enum expected
		int32_t nImgs;
		^
Main.java:27: error: class, interface, or enum expected
		Bitmap** smallImgs = splitBmp(img, nHeight, nWidth, nImgs);
		^
Main.java:28: error: class, interface, or enum expected
		char s[MAXLEN];
		^
Main.java:29: error: class, interface, or enum expected
		for (int32_t i = 0; i < nImgs; i++) {
		^
Main.java:29: error: class, interface, or enum expected
		for (int32_t i = 0; i < nImgs; i++) {
		                    ^
Main.java:29: error: class, interface, or enum expected
		for (int32_t i = 0; i < nImgs; i++) {
		                               ^
Main.java:31: error: class, interface, or enum expected
			writeBitmapToFile(s, smallImgs[i]);
			^
Main.java:32: error: class, interface, or enum expected
			freeBitmap(smallImgs[i]);	
			^
Main.java:33: error: class, interface, or enum expected
		}
		^
Main.java:36: error: class, interface, or enum expected
		freeBitmap(img);
		^
Main.java:37: error: class, interface, or enum expected
	}
	^
Main.java:39: error: class, interface, or enum expected
	return 0;
	^
Main.java:40: error: class, interface, or enum expected
}
^
Main.java:44: error: class, interface, or enum expected
	int32_t sWidth = img->dib.bmWidth / nWidth;
	^
Main.java:45: error: class, interface, or enum expected
	int32_t sLastHeight = img->dib.bmHeight % nHeight + sHeight;
	^
Main.java:46: error: class, interface, or enum expected
	int32_t sLastWidth = img->dib.bmWidth % nHeight + sWidth;
	^
Main.java:48: error: class, interface, or enum expected
	nImgs = nWidth * nHeight;
	^
Main.java:49: error: class, interface, or enum expected
	Bitmap** smallImgs = (Bitmap**) malloc(sizeof(Bitmap*) * nImgs);
	^
Main.java:51: error: class, interface, or enum expected
	int32_t i = 0;
	^
Main.java:52: error: class, interface, or enum expected
	int32_t height, width;
	^
Main.java:55: error: class, interface, or enum expected
	for (int32_t x = 0; x < img->dib.bmHeight; x += height) {
	^
Main.java:55: error: class, interface, or enum expected
	for (int32_t x = 0; x < img->dib.bmHeight; x += height) {
	                    ^
Main.java:55: error: class, interface, or enum expected
	for (int32_t x = 0; x < img->dib.bmHeight; x += height) {
	                                           ^
Main.java:59: error: class, interface, or enum expected
		else
		^
Main.java:62: error: class, interface, or enum expected
		for (int32_t y = 0; y < img->dib.bmWidth; y += width) {
		^
Main.java:62: error: class, interface, or enum expected
		for (int32_t y = 0; y < img->dib.bmWidth; y += width) {
		                    ^
Main.java:62: error: class, interface, or enum expected
		for (int32_t y = 0; y < img->dib.bmWidth; y += width) {
		                                          ^
Main.java:65: error: class, interface, or enum expected
			else
			^
Main.java:68: error: class, interface, or enum expected
			smallImgs[i++] = extractBmp(img,x,y,height,width);		
			^
Main.java:69: error: class, interface, or enum expected
		}
		^
Main.java:73: error: class, interface, or enum expected
}
^
Main.java:79: error: class, interface, or enum expected
	*newImg = *img;
	^
Main.java:81: error: class, interface, or enum expected
	newImg->dib.bmWidth = width;
	^
Main.java:82: error: class, interface, or enum expected
	newImg->dib.bmHeight = height;
	^
Main.java:84: error: class, interface, or enum expected
	setRowSize(newImg);
	^
Main.java:85: error: class, interface, or enum expected
	newImg->dib.dataSize = newImg->rowSize * newImg->dib.bmHeight;
	^
Main.java:87: error: class, interface, or enum expected
	newImg->data = (uint8_t*) malloc(sizeof(uint8_t)*newImg->dib.dataSize);
	^
Main.java:89: error: class, interface, or enum expected
	for (int32_t i = 0; i < newImg->dib.bmHeight; i++) {
	^
Main.java:89: error: class, interface, or enum expected
	for (int32_t i = 0; i < newImg->dib.bmHeight; i++) {
	                    ^
Main.java:89: error: class, interface, or enum expected
	for (int32_t i = 0; i < newImg->dib.bmHeight; i++) {
	                                              ^
Main.java:90: error: class, interface, or enum expected
		for (int32_t j = 0; j < newImg->dib.bmWidth; j++) {
		                    ^
Main.java:90: error: class, interface, or enum expected
		for (int32_t j = 0; j < newImg->dib.bmWidth; j++) {
		                                             ^
Main.java:92: error: class, interface, or enum expected
		}
		^
Main.java:96: error: class, interface, or enum expected
}
^
Main.java:99: error: illegal character: '#'
#ifdef _WIN32
^
Main.java:100: error: illegal character: '#'
#define _CRT_SECURE_NO_WARNINGS
^
Main.java:101: error: illegal character: '#'
#include <windows.h>
^
Main.java:104: error: class, interface, or enum expected
	HDC hdc = GetDC(console);
	^
Main.java:106: error: class, interface, or enum expected
	for (int i = img->dib.bmHeight - 1; i >=0; i--) {
	^
Main.java:106: error: class, interface, or enum expected
	for (int i = img->dib.bmHeight - 1; i >=0; i--) {
	                                    ^
Main.java:106: error: class, interface, or enum expected
	for (int i = img->dib.bmHeight - 1; i >=0; i--) {
	                                           ^
Main.java:107: error: class, interface, or enum expected
		for (int j = 0; j < img->dib.bmWidth; j++) {
		                ^
Main.java:107: error: class, interface, or enum expected
		for (int j = 0; j < img->dib.bmWidth; j++) {
		                                      ^
Main.java:109: error: class, interface, or enum expected
			SetPixel(hdc, j, img->dib.bmHeight-1 - i, RGB(pixel.R, pixel.G, pixel.B));
			^
Main.java:110: error: class, interface, or enum expected
		}
		^
Main.java:114: error: class, interface, or enum expected
}
^
Main.java:115: error: illegal character: '#'
#else
^
Main.java:118: error: class, interface, or enum expected
}
^
Main.java:119: error: illegal character: '#'
#endif
^
72 errors
stdout
Standard output is empty