#ifndef __BITMAP__LIB__
#define __BITMAP__LIB__
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#define BITS_PER_BYTE 8
#pragma pack(push, 1)
struct Pixel {
uint8_t B, G, R;
};
struct BitmapHeader {
uint16_t bmType;
uint32_t bmSize;
uint16_t bmReserve1;
uint16_t bmReserve2;
uint32_t bmPixArrayOffset;
};
struct BitmapDIB {
uint32_t headerSize;
int32_t bmWidth;
int32_t bmHeight;
uint16_t nPlanes;
uint16_t bitDepth;
uint32_t compressionMode;
uint32_t dataSize;
int32_t xPixPerM;
int32_t yPixPerM;
uint32_t nColorPalette;
uint32_t nColorImportant;
};
struct Bitmap{
BitmapHeader header;
BitmapDIB dib;
uint8_t* data;
uint32_t rowSize;
Pixel& operator()(uint32_t x, uint32_t y) {
// data != null
uint8_t* pointer = data + x*rowSize + y*dib.bitDepth / BITS_PER_BYTE;
return *((Pixel*)pointer);
}
Pixel operator()(uint32_t x, uint32_t y) const {
// data != null
uint8_t* pointer = data + x*rowSize + y*dib.bitDepth / BITS_PER_BYTE;
return *((Pixel*)pointer);
}
};
#pragma pack(pop)
void freeBitmap(Bitmap*);
Bitmap* newBitmapFromFile(const char*);
bool writeBitmapToFile(const char*, Bitmap*);
void setRowSize(Bitmap*);
#endif // __BITMAP__LIB__
I2lmbmRlZiBfX0JJVE1BUF9fTElCX18KI2RlZmluZSBfX0JJVE1BUF9fTElCX18KCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkaW50Lmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2RlZmluZSBCSVRTX1BFUl9CWVRFIDgKI3ByYWdtYSBwYWNrKHB1c2gsIDEpCgpzdHJ1Y3QgUGl4ZWwgewoJdWludDhfdCBCLCBHLCBSOwp9OwoKc3RydWN0IEJpdG1hcEhlYWRlciB7Cgl1aW50MTZfdCBibVR5cGU7Cgl1aW50MzJfdCBibVNpemU7Cgl1aW50MTZfdCBibVJlc2VydmUxOwoJdWludDE2X3QgYm1SZXNlcnZlMjsKCXVpbnQzMl90IGJtUGl4QXJyYXlPZmZzZXQ7Cn07CgpzdHJ1Y3QgQml0bWFwRElCIHsKCXVpbnQzMl90IGhlYWRlclNpemU7CglpbnQzMl90IGJtV2lkdGg7CglpbnQzMl90IGJtSGVpZ2h0OwoJdWludDE2X3QgblBsYW5lczsKCXVpbnQxNl90IGJpdERlcHRoOwoJdWludDMyX3QgY29tcHJlc3Npb25Nb2RlOwoJdWludDMyX3QgZGF0YVNpemU7CglpbnQzMl90IHhQaXhQZXJNOwoJaW50MzJfdCB5UGl4UGVyTTsKCXVpbnQzMl90IG5Db2xvclBhbGV0dGU7Cgl1aW50MzJfdCBuQ29sb3JJbXBvcnRhbnQ7Cn07CgpzdHJ1Y3QgQml0bWFwewoJQml0bWFwSGVhZGVyIGhlYWRlcjsKCUJpdG1hcERJQiBkaWI7Cgl1aW50OF90KiBkYXRhOwoJdWludDMyX3Qgcm93U2l6ZTsKCglQaXhlbCYgb3BlcmF0b3IoKSh1aW50MzJfdCB4LCB1aW50MzJfdCB5KSB7CgkJLy8gZGF0YSAhPSBudWxsCgkJdWludDhfdCogcG9pbnRlciA9IGRhdGEgKyB4KnJvd1NpemUgKyB5KmRpYi5iaXREZXB0aCAvIEJJVFNfUEVSX0JZVEU7CgoJCXJldHVybiAqKChQaXhlbCopcG9pbnRlcik7Cgl9CgoJUGl4ZWwgb3BlcmF0b3IoKSh1aW50MzJfdCB4LCB1aW50MzJfdCB5KSBjb25zdCB7CgkJLy8gZGF0YSAhPSBudWxsCgkJdWludDhfdCogcG9pbnRlciA9IGRhdGEgKyB4KnJvd1NpemUgKyB5KmRpYi5iaXREZXB0aCAvIEJJVFNfUEVSX0JZVEU7CgoJCXJldHVybiAqKChQaXhlbCopcG9pbnRlcik7Cgl9Cn07CgojcHJhZ21hIHBhY2socG9wKQoKCnZvaWQgZnJlZUJpdG1hcChCaXRtYXAqKTsKCkJpdG1hcCogbmV3Qml0bWFwRnJvbUZpbGUoY29uc3QgY2hhciopOwoKYm9vbCB3cml0ZUJpdG1hcFRvRmlsZShjb25zdCBjaGFyKiwgQml0bWFwKik7Cgp2b2lkIHNldFJvd1NpemUoQml0bWFwKik7CgojZW5kaWYgLy8gX19CSVRNQVBfX0xJQl9f
Main.java:1: error: illegal character: '#'
#ifndef __BITMAP__LIB__
^
Main.java:2: error: illegal character: '#'
#define __BITMAP__LIB__
^
Main.java:4: error: illegal character: '#'
#include <stdio.h>
^
Main.java:5: error: illegal character: '#'
#include <stdint.h>
^
Main.java:6: error: illegal character: '#'
#include <stdlib.h>
^
Main.java:7: error: illegal character: '#'
#define BITS_PER_BYTE 8
^
Main.java:8: error: illegal character: '#'
#pragma pack(push, 1)
^
Main.java:12: error: class, interface, or enum expected
};
^
Main.java:14: error: class, interface, or enum expected
struct BitmapHeader {
^
Main.java:16: error: class, interface, or enum expected
uint32_t bmSize;
^
Main.java:17: error: class, interface, or enum expected
uint16_t bmReserve1;
^
Main.java:18: error: class, interface, or enum expected
uint16_t bmReserve2;
^
Main.java:19: error: class, interface, or enum expected
uint32_t bmPixArrayOffset;
^
Main.java:20: error: class, interface, or enum expected
};
^
Main.java:22: error: class, interface, or enum expected
struct BitmapDIB {
^
Main.java:24: error: class, interface, or enum expected
int32_t bmWidth;
^
Main.java:25: error: class, interface, or enum expected
int32_t bmHeight;
^
Main.java:26: error: class, interface, or enum expected
uint16_t nPlanes;
^
Main.java:27: error: class, interface, or enum expected
uint16_t bitDepth;
^
Main.java:28: error: class, interface, or enum expected
uint32_t compressionMode;
^
Main.java:29: error: class, interface, or enum expected
uint32_t dataSize;
^
Main.java:30: error: class, interface, or enum expected
int32_t xPixPerM;
^
Main.java:31: error: class, interface, or enum expected
int32_t yPixPerM;
^
Main.java:32: error: class, interface, or enum expected
uint32_t nColorPalette;
^
Main.java:33: error: class, interface, or enum expected
uint32_t nColorImportant;
^
Main.java:34: error: class, interface, or enum expected
};
^
Main.java:36: error: class, interface, or enum expected
struct Bitmap{
^
Main.java:38: error: class, interface, or enum expected
BitmapDIB dib;
^
Main.java:39: error: class, interface, or enum expected
uint8_t* data;
^
Main.java:40: error: class, interface, or enum expected
uint32_t rowSize;
^
Main.java:42: error: class, interface, or enum expected
Pixel& operator()(uint32_t x, uint32_t y) {
^
Main.java:46: error: class, interface, or enum expected
return *((Pixel*)pointer);
^
Main.java:47: error: class, interface, or enum expected
}
^
Main.java:53: error: class, interface, or enum expected
return *((Pixel*)pointer);
^
Main.java:54: error: class, interface, or enum expected
}
^
Main.java:57: error: illegal character: '#'
#pragma pack(pop)
^
Main.java:57: error: class, interface, or enum expected
#pragma pack(pop)
^
Main.java:62: error: class, interface, or enum expected
Bitmap* newBitmapFromFile(const char*);
^
Main.java:64: error: class, interface, or enum expected
bool writeBitmapToFile(const char*, Bitmap*);
^
Main.java:66: error: class, interface, or enum expected
void setRowSize(Bitmap*);
^
Main.java:68: error: illegal character: '#'
#endif // __BITMAP__LIB__
^
Main.java:68: error: reached end of file while parsing
#endif // __BITMAP__LIB__
^
42 errors