init.cc 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // Copyright (c) 2010 LearnBoost <tj@learnboost.com>
  2. #include <cstdio>
  3. #include <pango/pango.h>
  4. #include <cairo.h>
  5. #if CAIRO_VERSION < CAIRO_VERSION_ENCODE(1, 10, 0)
  6. // CAIRO_FORMAT_RGB16_565: undeprecated in v1.10.0
  7. // CAIRO_STATUS_INVALID_SIZE: v1.10.0
  8. // CAIRO_FORMAT_INVALID: v1.10.0
  9. // Lots of the compositing operators: v1.10.0
  10. // JPEG MIME tracking: v1.10.0
  11. // Note: CAIRO_FORMAT_RGB30 is v1.12.0 and still optional
  12. #error("cairo v1.10.0 or later is required")
  13. #endif
  14. #include "Backends.h"
  15. #include "Canvas.h"
  16. #include "CanvasGradient.h"
  17. #include "CanvasPattern.h"
  18. #include "CanvasRenderingContext2d.h"
  19. #include "Image.h"
  20. #include "ImageData.h"
  21. #include <ft2build.h>
  22. #include FT_FREETYPE_H
  23. using namespace v8;
  24. // Compatibility with Visual Studio versions prior to VS2015
  25. #if defined(_MSC_VER) && _MSC_VER < 1900
  26. #define snprintf _snprintf
  27. #endif
  28. NAN_MODULE_INIT(init) {
  29. Backends::Initialize(target);
  30. Canvas::Initialize(target);
  31. Image::Initialize(target);
  32. ImageData::Initialize(target);
  33. Context2d::Initialize(target);
  34. Gradient::Initialize(target);
  35. Pattern::Initialize(target);
  36. Nan::Set(target, Nan::New<String>("cairoVersion").ToLocalChecked(), Nan::New<String>(cairo_version_string()).ToLocalChecked()).Check();
  37. #ifdef HAVE_JPEG
  38. #ifndef JPEG_LIB_VERSION_MAJOR
  39. #ifdef JPEG_LIB_VERSION
  40. #define JPEG_LIB_VERSION_MAJOR (JPEG_LIB_VERSION / 10)
  41. #else
  42. #define JPEG_LIB_VERSION_MAJOR 0
  43. #endif
  44. #endif
  45. #ifndef JPEG_LIB_VERSION_MINOR
  46. #ifdef JPEG_LIB_VERSION
  47. #define JPEG_LIB_VERSION_MINOR (JPEG_LIB_VERSION % 10)
  48. #else
  49. #define JPEG_LIB_VERSION_MINOR 0
  50. #endif
  51. #endif
  52. char jpeg_version[10];
  53. static bool minor_gt_0 = JPEG_LIB_VERSION_MINOR > 0;
  54. if (minor_gt_0) {
  55. snprintf(jpeg_version, 10, "%d%c", JPEG_LIB_VERSION_MAJOR, JPEG_LIB_VERSION_MINOR + 'a' - 1);
  56. } else {
  57. snprintf(jpeg_version, 10, "%d", JPEG_LIB_VERSION_MAJOR);
  58. }
  59. Nan::Set(target, Nan::New<String>("jpegVersion").ToLocalChecked(), Nan::New<String>(jpeg_version).ToLocalChecked()).Check();
  60. #endif
  61. #ifdef HAVE_GIF
  62. #ifndef GIF_LIB_VERSION
  63. char gif_version[10];
  64. snprintf(gif_version, 10, "%d.%d.%d", GIFLIB_MAJOR, GIFLIB_MINOR, GIFLIB_RELEASE);
  65. Nan::Set(target, Nan::New<String>("gifVersion").ToLocalChecked(), Nan::New<String>(gif_version).ToLocalChecked()).Check();
  66. #else
  67. Nan::Set(target, Nan::New<String>("gifVersion").ToLocalChecked(), Nan::New<String>(GIF_LIB_VERSION).ToLocalChecked()).Check();
  68. #endif
  69. #endif
  70. #ifdef HAVE_RSVG
  71. Nan::Set(target, Nan::New<String>("rsvgVersion").ToLocalChecked(), Nan::New<String>(LIBRSVG_VERSION).ToLocalChecked()).Check();
  72. #endif
  73. Nan::Set(target, Nan::New<String>("pangoVersion").ToLocalChecked(), Nan::New<String>(PANGO_VERSION_STRING).ToLocalChecked()).Check();
  74. char freetype_version[10];
  75. snprintf(freetype_version, 10, "%d.%d.%d", FREETYPE_MAJOR, FREETYPE_MINOR, FREETYPE_PATCH);
  76. Nan::Set(target, Nan::New<String>("freetypeVersion").ToLocalChecked(), Nan::New<String>(freetype_version).ToLocalChecked()).Check();
  77. }
  78. NODE_MODULE(canvas, init);