UNPKG

2.71 kBtext/x-cView Raw
1// Copyright (c) 2010 LearnBoost <tj@learnboost.com>
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// CAIRO_FORMAT_RGB16_565: undeprecated in v1.10.0
9// CAIRO_STATUS_INVALID_SIZE: v1.10.0
10// CAIRO_FORMAT_INVALID: v1.10.0
11// Lots of the compositing operators: v1.10.0
12// JPEG MIME tracking: v1.10.0
13// Note: CAIRO_FORMAT_RGB30 is v1.12.0 and still optional
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
28using namespace v8;
29
30// Compatibility with Visual Studio versions prior to VS2015
31#if defined(_MSC_VER) && _MSC_VER < 1900
32#define snprintf _snprintf
33#endif
34
35NAN_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
88NODE_MODULE(canvas, init);