1 |
|
2 |
|
3 | #include <cstdio>
|
4 | #include <pango/pango.h>
|
5 |
|
6 | #include <cairo.h>
|
7 | #if CAIRO_VERSION < CAIRO_VERSION_ENCODE(1, 10, 0)
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | #error("cairo v1.10.0 or later is required")
|
15 | #endif
|
16 |
|
17 | #include "Backends.h"
|
18 | #include "Canvas.h"
|
19 | #include "CanvasGradient.h"
|
20 | #include "CanvasPattern.h"
|
21 | #include "CanvasRenderingContext2d.h"
|
22 | #include "Image.h"
|
23 | #include "ImageData.h"
|
24 |
|
25 | #include <ft2build.h>
|
26 | #include FT_FREETYPE_H
|
27 |
|
28 | using namespace v8;
|
29 |
|
30 |
|
31 | #if defined(_MSC_VER) && _MSC_VER < 1900
|
32 | #define snprintf _snprintf
|
33 | #endif
|
34 |
|
35 | NAN_MODULE_INIT(init) {
|
36 | Backends::Initialize(target);
|
37 | Canvas::Initialize(target);
|
38 | Image::Initialize(target);
|
39 | ImageData::Initialize(target);
|
40 | Context2d::Initialize(target);
|
41 | Gradient::Initialize(target);
|
42 | Pattern::Initialize(target);
|
43 |
|
44 | Nan::Set(target, Nan::New<String>("cairoVersion").ToLocalChecked(), Nan::New<String>(cairo_version_string()).ToLocalChecked()).Check();
|
45 | #ifdef HAVE_JPEG
|
46 |
|
47 | #ifndef JPEG_LIB_VERSION_MAJOR
|
48 | #ifdef JPEG_LIB_VERSION
|
49 | #define JPEG_LIB_VERSION_MAJOR (JPEG_LIB_VERSION / 10)
|
50 | #else
|
51 | #define JPEG_LIB_VERSION_MAJOR 0
|
52 | #endif
|
53 | #endif
|
54 |
|
55 | #ifndef JPEG_LIB_VERSION_MINOR
|
56 | #ifdef JPEG_LIB_VERSION
|
57 | #define JPEG_LIB_VERSION_MINOR (JPEG_LIB_VERSION % 10)
|
58 | #else
|
59 | #define JPEG_LIB_VERSION_MINOR 0
|
60 | #endif
|
61 | #endif
|
62 |
|
63 | char jpeg_version[10];
|
64 | static bool minor_gt_0 = JPEG_LIB_VERSION_MINOR > 0;
|
65 | if (minor_gt_0) {
|
66 | snprintf(jpeg_version, 10, "%d%c", JPEG_LIB_VERSION_MAJOR, JPEG_LIB_VERSION_MINOR + 'a' - 1);
|
67 | } else {
|
68 | snprintf(jpeg_version, 10, "%d", JPEG_LIB_VERSION_MAJOR);
|
69 | }
|
70 | Nan::Set(target, Nan::New<String>("jpegVersion").ToLocalChecked(), Nan::New<String>(jpeg_version).ToLocalChecked()).Check();
|
71 | #endif
|
72 |
|
73 | #ifdef HAVE_GIF
|
74 | #ifndef GIF_LIB_VERSION
|
75 | char gif_version[10];
|
76 | snprintf(gif_version, 10, "%d.%d.%d", GIFLIB_MAJOR, GIFLIB_MINOR, GIFLIB_RELEASE);
|
77 | Nan::Set(target, Nan::New<String>("gifVersion").ToLocalChecked(), Nan::New<String>(gif_version).ToLocalChecked()).Check();
|
78 | #else
|
79 | Nan::Set(target, Nan::New<String>("gifVersion").ToLocalChecked(), Nan::New<String>(GIF_LIB_VERSION).ToLocalChecked()).Check();
|
80 | #endif
|
81 | #endif
|
82 |
|
83 | char freetype_version[10];
|
84 | snprintf(freetype_version, 10, "%d.%d.%d", FREETYPE_MAJOR, FREETYPE_MINOR, FREETYPE_PATCH);
|
85 | Nan::Set(target, Nan::New<String>("freetypeVersion").ToLocalChecked(), Nan::New<String>(freetype_version).ToLocalChecked()).Check();
|
86 | }
|
87 |
|
88 | NODE_MODULE(canvas, init);
|