| @@ -55,12 +55,6 @@ Cucul::Cucul(int width, int height) | |||||
| if(!cv) throw -1; | if(!cv) throw -1; | ||||
| } | } | ||||
| Cucul::Cucul(Buffer *b, char const *format) | |||||
| { | |||||
| cv = cucul_import_canvas(b->getBuffer(), format); | |||||
| if(!cv) throw -1; | |||||
| } | |||||
| Cucul::~Cucul() | Cucul::~Cucul() | ||||
| { | { | ||||
| if(cv) | if(cv) | ||||
| @@ -99,20 +93,20 @@ int Cucul::setColorARGB(unsigned int f, unsigned int b) | |||||
| void Cucul::putChar(int x, int y, unsigned long int ch) | void Cucul::putChar(int x, int y, unsigned long int ch) | ||||
| { | { | ||||
| cucul_putchar(cv, x, y, ch); | |||||
| cucul_put_char(cv, x, y, ch); | |||||
| } | } | ||||
| unsigned long int Cucul::getChar(int x, int y) | unsigned long int Cucul::getChar(int x, int y) | ||||
| { | { | ||||
| return cucul_getchar(cv, x, y); | |||||
| return cucul_get_char(cv, x, y); | |||||
| } | } | ||||
| void Cucul::putStr(int x, int y, char *str) | void Cucul::putStr(int x, int y, char *str) | ||||
| { | { | ||||
| cucul_putstr(cv, x, y, str); | |||||
| cucul_put_str(cv, x, y, str); | |||||
| } | } | ||||
| void Cucul::Printf(int x, int y, char const * format,...) | |||||
| void Cucul::Printf(int x, int y, char const * format, ...) | |||||
| { | { | ||||
| char tmp[BUFSIZ]; | char tmp[BUFSIZ]; | ||||
| char *buf = tmp; | char *buf = tmp; | ||||
| @@ -161,12 +155,12 @@ void Cucul::Rotate() | |||||
| cucul_rotate(cv); | cucul_rotate(cv); | ||||
| } | } | ||||
| void Cucul::drawLine(int x1, int y1, int x2, int y2, char const *ch) | |||||
| void Cucul::drawLine(int x1, int y1, int x2, int y2, unsigned long int ch) | |||||
| { | { | ||||
| cucul_draw_line(cv, x1, y1, x2, y2, ch); | cucul_draw_line(cv, x1, y1, x2, y2, ch); | ||||
| } | } | ||||
| void Cucul::drawPolyline(int const x[], int const y[], int f, char const *ch) | |||||
| void Cucul::drawPolyline(int const x[], int const y[], int f, unsigned long int ch) | |||||
| { | { | ||||
| cucul_draw_polyline(cv, x, y, f, ch); | cucul_draw_polyline(cv, x, y, f, ch); | ||||
| } | } | ||||
| @@ -181,12 +175,12 @@ void Cucul::drawThinPolyline(int const x[], int const y[], int f) | |||||
| cucul_draw_thin_polyline(cv, x, y, f); | cucul_draw_thin_polyline(cv, x, y, f); | ||||
| } | } | ||||
| void Cucul::drawCircle(int x, int y, int d, char const *ch) | |||||
| void Cucul::drawCircle(int x, int y, int d, unsigned long int ch) | |||||
| { | { | ||||
| cucul_draw_circle(cv, x, y, d, ch); | cucul_draw_circle(cv, x, y, d, ch); | ||||
| } | } | ||||
| void Cucul::drawEllipse(int x, int y, int d1, int d2, char const *ch) | |||||
| void Cucul::drawEllipse(int x, int y, int d1, int d2, unsigned long int ch) | |||||
| { | { | ||||
| cucul_draw_ellipse(cv, x, y, d1, d2, ch); | cucul_draw_ellipse(cv, x, y, d1, d2, ch); | ||||
| } | } | ||||
| @@ -196,12 +190,12 @@ void Cucul::drawThinEllipse(int x, int y, int d1, int d2) | |||||
| cucul_draw_thin_ellipse(cv, x, y, d1, d2); | cucul_draw_thin_ellipse(cv, x, y, d1, d2); | ||||
| } | } | ||||
| void Cucul::fillEllipse(int x, int y, int d1, int d2, char const *ch) | |||||
| void Cucul::fillEllipse(int x, int y, int d1, int d2, unsigned long int ch) | |||||
| { | { | ||||
| cucul_fill_ellipse(cv, x, y, d1, d2, ch); | cucul_fill_ellipse(cv, x, y, d1, d2, ch); | ||||
| } | } | ||||
| void Cucul::drawBox(int x, int y, int w, int h, char const *ch) | |||||
| void Cucul::drawBox(int x, int y, int w, int h, unsigned long int ch) | |||||
| { | { | ||||
| cucul_draw_box(cv, x, y, w, h, ch); | cucul_draw_box(cv, x, y, w, h, ch); | ||||
| } | } | ||||
| @@ -211,12 +205,17 @@ void Cucul::drawThinBox(int x, int y, int w, int h) | |||||
| cucul_draw_thin_box(cv, x, y, w, h); | cucul_draw_thin_box(cv, x, y, w, h); | ||||
| } | } | ||||
| void Cucul::fillBox(int x, int y, int w, int h, char const *ch) | |||||
| void Cucul::drawCP437Box(int x, int y, int w, int h) | |||||
| { | |||||
| cucul_draw_cp437_box(cv, x, y, w, h); | |||||
| } | |||||
| void Cucul::fillBox(int x, int y, int w, int h, unsigned long int ch) | |||||
| { | { | ||||
| cucul_fill_box(cv, x, y, w, h, ch); | cucul_fill_box(cv, x, y, w, h, ch); | ||||
| } | } | ||||
| void Cucul::drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3, char const *ch) | |||||
| void Cucul::drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3, unsigned long int ch) | |||||
| { | { | ||||
| cucul_draw_triangle(cv, x1, y1, x2, y2, x3, y3, ch); | cucul_draw_triangle(cv, x1, y1, x2, y2, x3, y3, ch); | ||||
| } | } | ||||
| @@ -226,7 +225,7 @@ void Cucul::drawThinTriangle(int x1, int y1, int x2, int y2, int x3, int y3) | |||||
| cucul_draw_thin_triangle(cv, x1, y1, x2, y2, x3, y3); | cucul_draw_thin_triangle(cv, x1, y1, x2, y2, x3, y3); | ||||
| } | } | ||||
| void Cucul::fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3, const char *ch) | |||||
| void Cucul::fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3, unsigned long int ch) | |||||
| { | { | ||||
| cucul_fill_triangle(cv, x1, y1, x2, y2, x3, y3, ch); | cucul_fill_triangle(cv, x1, y1, x2, y2, x3, y3, ch); | ||||
| } | } | ||||
| @@ -269,6 +268,31 @@ int Cucul::freeFrame(unsigned int f) | |||||
| return cucul_create_canvas_frame(cv, f); | return cucul_create_canvas_frame(cv, f); | ||||
| } | } | ||||
| char const *const * Cucul::getImportList(void) | |||||
| { | |||||
| return cucul_get_import_list(); | |||||
| } | |||||
| long int Cucul::importMemory(void const *buf, unsigned long int len, char const *fmt) | |||||
| { | |||||
| return cucul_import_memory(cv, buf, len, fmt); | |||||
| } | |||||
| long int Cucul::importFile(char const *file, char const *fmt) | |||||
| { | |||||
| return cucul_import_file(cv, file, fmt); | |||||
| } | |||||
| char const *const * Cucul::getExportList(void) | |||||
| { | |||||
| return cucul_get_export_list(); | |||||
| } | |||||
| void *Cucul::exportMemory(char const *fmt, unsigned long int *len) | |||||
| { | |||||
| return cucul_export_memory(cv, fmt, len); | |||||
| } | |||||
| Dither::Dither(unsigned int v1, unsigned int v2, unsigned int v3, unsigned int v4, unsigned int v5, unsigned int v6, unsigned int v7, unsigned int v8) | Dither::Dither(unsigned int v1, unsigned int v2, unsigned int v3, unsigned int v4, unsigned int v5, unsigned int v6, unsigned int v7, unsigned int v8) | ||||
| { | { | ||||
| dither = cucul_create_dither(v1, v2, v3, v4, v5, v6, v7, v8); | dither = cucul_create_dither(v1, v2, v3, v4, v5, v6, v7, v8); | ||||
| @@ -384,47 +408,3 @@ Font::~Font() | |||||
| cucul_free_font(font); | cucul_free_font(font); | ||||
| } | } | ||||
| Buffer::Buffer() | |||||
| { | |||||
| buffer_ = NULL; | |||||
| } | |||||
| Buffer::~Buffer() | |||||
| { | |||||
| if(buffer_) | |||||
| cucul_free_buffer(buffer_); | |||||
| } | |||||
| char const *const * Buffer::getExportList(void) | |||||
| { | |||||
| return cucul_get_export_list(); | |||||
| } | |||||
| void *Buffer::getData(void) | |||||
| { | |||||
| return cucul_get_buffer_data(buffer_); | |||||
| } | |||||
| void Buffer::loadMemory(void *buf, unsigned long int size) | |||||
| { | |||||
| buffer_ = cucul_load_memory(buf, size); | |||||
| if(buffer_ == NULL) | |||||
| throw -1; | |||||
| } | |||||
| void Buffer::loadFile(char const *filename) | |||||
| { | |||||
| buffer_ = cucul_load_file(filename); | |||||
| if(buffer_ == NULL) | |||||
| throw -1; | |||||
| } | |||||
| unsigned long int Buffer::getSize() | |||||
| { | |||||
| return cucul_get_buffer_size(buffer_); | |||||
| } | |||||
| cucul_buffer *Buffer::getBuffer() | |||||
| { | |||||
| return buffer_; | |||||
| } | |||||
| @@ -25,10 +25,8 @@ | |||||
| #include <cucul.h> | #include <cucul.h> | ||||
| class Cucul; | class Cucul; | ||||
| class Charset | class Charset | ||||
| { | { | ||||
| unsigned long int utf8ToUtf32(char const *, unsigned int *); | unsigned long int utf8ToUtf32(char const *, unsigned int *); | ||||
| @@ -37,10 +35,6 @@ class Charset | |||||
| unsigned long int cp437ToUtf32(unsigned char); | unsigned long int cp437ToUtf32(unsigned char); | ||||
| }; | }; | ||||
| /* Ugly, I know */ | /* Ugly, I know */ | ||||
| class Font | class Font | ||||
| { | { | ||||
| @@ -50,21 +44,23 @@ class Font | |||||
| char const *const * getList(void); | char const *const * getList(void); | ||||
| unsigned int getWidth(); | unsigned int getWidth(); | ||||
| unsigned int getHeight(); | unsigned int getHeight(); | ||||
| void renderCanvas(Cucul *, unsigned char *, unsigned int, unsigned int, unsigned int); | |||||
| void renderCanvas(Cucul *, unsigned char *, unsigned int, | |||||
| unsigned int, unsigned int); | |||||
| unsigned long int const *getBlocks(); | unsigned long int const *getBlocks(); | ||||
| private: | private: | ||||
| cucul_font *font; | cucul_font *font; | ||||
| }; | }; | ||||
| class Dither | class Dither | ||||
| { | { | ||||
| public: | public: | ||||
| Dither(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int); | |||||
| Dither(unsigned int, unsigned int, unsigned int, unsigned int, | |||||
| unsigned int, unsigned int, unsigned int, unsigned int); | |||||
| ~Dither(); | ~Dither(); | ||||
| void setPalette(unsigned int r[], unsigned int g[], unsigned int b[], unsigned int a[]); | |||||
| void setPalette(unsigned int r[], unsigned int g[], | |||||
| unsigned int b[], unsigned int a[]); | |||||
| void setBrightness(float); | void setBrightness(float); | ||||
| void setGamma(float); | void setGamma(float); | ||||
| void setContrast(float); | void setContrast(float); | ||||
| @@ -81,40 +77,16 @@ class Dither | |||||
| private: | private: | ||||
| cucul_dither *dither; | cucul_dither *dither; | ||||
| }; | }; | ||||
| class Buffer | |||||
| { | |||||
| friend class Cucul; | |||||
| public: | |||||
| Buffer(); | |||||
| ~Buffer(); | |||||
| char const *const * getExportList(void); | |||||
| void *getData(void); | |||||
| void loadMemory(void *buf, unsigned long int size); | |||||
| void loadFile(char const *filename); | |||||
| unsigned long int getSize(); | |||||
| protected: | |||||
| cucul_buffer *get_buffer(); | |||||
| private: | |||||
| cucul_buffer *buffer_; | |||||
| cucul_buffer *getBuffer(); | |||||
| }; | |||||
| class Cucul | class Cucul | ||||
| { | { | ||||
| friend class Caca; | friend class Caca; | ||||
| friend class Dither; | friend class Dither; | ||||
| friend class Font; | friend class Font; | ||||
| friend class Buffer; | |||||
| public: | public: | ||||
| Cucul(); | Cucul(); | ||||
| Cucul(int width, int height); | Cucul(int width, int height); | ||||
| Cucul(Buffer *, char const *); | |||||
| ~Cucul(); | ~Cucul(); | ||||
| void setSize(unsigned int w, unsigned int h); | void setSize(unsigned int w, unsigned int h); | ||||
| @@ -124,7 +96,7 @@ class Cucul | |||||
| int setAttr(unsigned long int); | int setAttr(unsigned long int); | ||||
| int setColorANSI(unsigned char f, unsigned char b); | int setColorANSI(unsigned char f, unsigned char b); | ||||
| int setColorARGB(unsigned int f, unsigned int b); | int setColorARGB(unsigned int f, unsigned int b); | ||||
| void Printf(int x , int y , char const * format,...); | |||||
| void Printf(int x, int y , char const * format, ...); | |||||
| void putChar(int x, int y, unsigned long int ch); | void putChar(int x, int y, unsigned long int ch); | ||||
| unsigned long int getChar(int, int); | unsigned long int getChar(int, int); | ||||
| void putStr(int x, int y, char *str); | void putStr(int x, int y, char *str); | ||||
| @@ -134,28 +106,34 @@ class Cucul | |||||
| void Flip(); | void Flip(); | ||||
| void Flop(); | void Flop(); | ||||
| void Rotate(); | void Rotate(); | ||||
| void drawLine(int, int, int, int, char const *); | |||||
| void drawPolyline(int const x[], int const y[], int, char const *); | |||||
| void drawLine(int, int, int, int, unsigned long int); | |||||
| void drawPolyline(int const x[], int const y[], int, unsigned long int); | |||||
| void drawThinLine(int, int, int, int); | void drawThinLine(int, int, int, int); | ||||
| void drawThinPolyline(int const x[], int const y[], int); | void drawThinPolyline(int const x[], int const y[], int); | ||||
| void drawCircle(int, int, int, char const *); | |||||
| void drawEllipse(int, int, int, int, char const *); | |||||
| void drawCircle(int, int, int, unsigned long int); | |||||
| void drawEllipse(int, int, int, int, unsigned long int); | |||||
| void drawThinEllipse(int, int, int, int); | void drawThinEllipse(int, int, int, int); | ||||
| void fillEllipse(int, int, int, int, char const *); | |||||
| void drawBox(int, int, int, int, char const *); | |||||
| void fillEllipse(int, int, int, int, unsigned long int); | |||||
| void drawBox(int, int, int, int, unsigned long int); | |||||
| void drawThinBox(int, int, int, int); | void drawThinBox(int, int, int, int); | ||||
| void fillBox(int, int, int, int, char const *); | |||||
| void drawTriangle(int, int, int, int, int, int, char const *); | |||||
| void drawCP437Box(int, int, int, int); | |||||
| void fillBox(int, int, int, int, unsigned long int); | |||||
| void drawTriangle(int, int, int, int, int, int, unsigned long int); | |||||
| void drawThinTriangle(int, int, int, int, int, int); | void drawThinTriangle(int, int, int, int, int, int); | ||||
| void fillTriangle(int, int, int, int, int, int, char const *); | |||||
| void fillTriangle(int, int, int, int, int, int, unsigned long int); | |||||
| int Rand(int, int); | int Rand(int, int); | ||||
| int setBoundaries(cucul_canvas_t *, int, int, | |||||
| unsigned int, unsigned int); | |||||
| int setBoundaries(cucul_canvas_t *, int, int, unsigned int, unsigned int); | |||||
| unsigned int getFrameCount(); | unsigned int getFrameCount(); | ||||
| int setFrame(unsigned int); | int setFrame(unsigned int); | ||||
| int createFrame(unsigned int); | int createFrame(unsigned int); | ||||
| int freeFrame(unsigned int); | int freeFrame(unsigned int); | ||||
| char const * const * getImportList(void); | |||||
| long int importMemory(void const *, unsigned long int, char const *); | |||||
| long int importFile(char const *, char const *); | |||||
| char const * const * getExportList(void); | |||||
| void *exportMemory(char const *, unsigned long int *); | |||||
| protected: | protected: | ||||
| cucul_canvas_t *get_cucul_canvas_t(); | cucul_canvas_t *get_cucul_canvas_t(); | ||||
| @@ -163,5 +141,4 @@ class Cucul | |||||
| cucul_canvas_t *cv; | cucul_canvas_t *cv; | ||||
| }; | }; | ||||
| #endif /* _CUCUL_PP_H */ | #endif /* _CUCUL_PP_H */ | ||||
| @@ -64,15 +64,9 @@ int main(int argc, char *argv[]) | |||||
| try { | try { | ||||
| // Import buffer into a canvas | // Import buffer into a canvas | ||||
| Buffer *buf = new Buffer(); | |||||
| buf->loadMemory((void *)pigstring, strlen(pigstring)); | |||||
| pig = new Cucul(buf, "text"); | |||||
| delete buf; | |||||
| // Change colour to magenta | |||||
| pig = new Cucul(); | |||||
| pig->setColorANSI(CUCUL_LIGHTMAGENTA, CUCUL_TRANSPARENT); | pig->setColorANSI(CUCUL_LIGHTMAGENTA, CUCUL_TRANSPARENT); | ||||
| for(int y = 0; y < pig->getHeight(); y++) | |||||
| for(int x = 0; x < pig->getWidth(); x++) | |||||
| pig->putChar(x, y, pig->getChar(x, y)); | |||||
| pig->importMemory(pigstring, strlen(pigstring), "text"); | |||||
| } | } | ||||
| catch(int e) { | catch(int e) { | ||||
| cerr << "Error while importing image (" << e << ")" << endl; | cerr << "Error while importing image (" << e << ")" << endl; | ||||