diff --git a/src/Image.cc b/src/Image.cc index 7e6315f..2b1a122 100644 --- a/src/Image.cc +++ b/src/Image.cc @@ -9,6 +9,7 @@ #include "Image.h" #include #include +#include Persistent Image::constructor; @@ -202,6 +203,7 @@ EIO_AfterLoad(eio_req *req) { void Image::load() { + printf("%d\n", extension(filename)); if (LOADING != state) { // TODO: use node IO // Ref(); @@ -273,4 +275,18 @@ Image::loadSurface() { width = cairo_image_surface_get_width(_surface); height = cairo_image_surface_get_height(_surface); return cairo_surface_status(_surface); +} + +/* + * Return UNKNOWN, JPEG, or PNG based on the filename. + */ + +Image::type +Image::extension(const char *filename) { + size_t len = strlen(filename); + filename += len; + if (0 == strcmp(".jpeg", filename - 5)) return Image::JPEG; + if (0 == strcmp(".jpg", filename - 4)) return Image::JPEG; + if (0 == strcmp(".png", filename - 4)) return Image::PNG; + return Image::UNKNOWN; } \ No newline at end of file diff --git a/src/Image.h b/src/Image.h index e1b7c57..5034247 100644 --- a/src/Image.h +++ b/src/Image.h @@ -43,6 +43,14 @@ class Image: public node::ObjectWrap { , LOADING , COMPLETE } state; + + typedef enum { + UNKNOWN + , JPEG + , PNG + } type; + + static type extension(const char *filename); private: cairo_surface_t *_surface;