Skip to content

Commit 48eb938

Browse files
authored
Merge pull request #829 from piranna/backends
Backends support
2 parents 169028b + a2d1187 commit 48eb938

23 files changed

Lines changed: 689 additions & 186 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ node_modules
1414
# Vim cruft
1515
*.swp
1616
*.un~
17+
npm-debug.log

binding.gyp

100755100644
Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
'conditions': [
33
['OS=="win"', {
44
'variables': {
5-
'GTK_Root%': 'C:/GTK', # Set the location of GTK all-in-one bundle
5+
'GTK_Root%': 'C:/GTK', # Set the location of GTK all-in-one bundle
66
'with_jpeg%': 'false',
77
'with_gif%': 'false',
88
'variables': { # Nest jpeg_root to evaluate it before with_jpeg
@@ -17,7 +17,7 @@
1717
}]
1818
]
1919
}
20-
}, { # 'OS!="win"'
20+
}, { # 'OS!="win"'
2121
'variables': {
2222
'with_jpeg%': '<!(node ./util/has_lib.js jpeg)',
2323
'with_gif%': '<!(node ./util/has_lib.js gif)'
@@ -57,15 +57,22 @@
5757
'target_name': 'canvas',
5858
'include_dirs': ["<!(node -e \"require('nan')\")"],
5959
'sources': [
60+
'src/backend/Backend.cc',
61+
'src/backend/ImageBackend.cc',
62+
'src/backend/PdfBackend.cc',
63+
'src/backend/SvgBackend.cc',
64+
'src/Backends.cc',
6065
'src/Canvas.cc',
6166
'src/CanvasGradient.cc',
6267
'src/CanvasPattern.cc',
6368
'src/CanvasRenderingContext2d.cc',
69+
'src/closure.cc',
6470
'src/color.cc',
6571
'src/Image.cc',
6672
'src/ImageData.cc',
73+
'src/init.cc',
6774
'src/register_font.cc',
68-
'src/init.cc'
75+
'src/toBuffer.cc'
6976
],
7077
'conditions': [
7178
['OS=="win"', {
@@ -87,15 +94,17 @@
8794
'<(GTK_Root)/lib/glib-2.0/include'
8895
],
8996
'defines': [
90-
'_USE_MATH_DEFINES' # for M_PI
97+
'_USE_MATH_DEFINES' # for M_PI
9198
],
9299
'configurations': {
93100
'Debug': {
94101
'msvs_settings': {
95102
'VCCLCompilerTool': {
96103
'WarningLevel': 4,
97104
'ExceptionHandling': 1,
98-
'DisableSpecificWarnings': [4100, 4127, 4201, 4244, 4267, 4506, 4611, 4714, 4512]
105+
'DisableSpecificWarnings': [
106+
4100, 4127, 4201, 4244, 4267, 4506, 4611, 4714, 4512
107+
]
99108
}
100109
}
101110
},
@@ -104,12 +113,14 @@
104113
'VCCLCompilerTool': {
105114
'WarningLevel': 4,
106115
'ExceptionHandling': 1,
107-
'DisableSpecificWarnings': [4100, 4127, 4201, 4244, 4267, 4506, 4611, 4714, 4512]
116+
'DisableSpecificWarnings': [
117+
4100, 4127, 4201, 4244, 4267, 4506, 4611, 4714, 4512
118+
]
108119
}
109120
}
110121
}
111122
}
112-
}, { # 'OS!="win"'
123+
}, { # 'OS!="win"'
113124
'libraries': [
114125
'<!@(pkg-config pixman-1 --libs)',
115126
'<!@(pkg-config cairo --libs)',

examples/backends.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
var fs = require('fs')
2+
var resolve = require('path').resolve
3+
4+
var Canvas = require('..')
5+
6+
var imagebackend = new Canvas.backends.ImageBackend(800, 600)
7+
8+
var canvas = new Canvas(imagebackend)
9+
var ctx = canvas.getContext('2d')
10+
11+
console.log('Width: ' + canvas.width + ', Height: ' + canvas.height)
12+
13+
ctx.fillStyle = '#00FF00'
14+
ctx.fillRect(50, 50, 100, 100)
15+
16+
var outPath = resolve(__dirname, 'rectangle.png')
17+
18+
canvas.createPNGStream().pipe(fs.createWriteStream(outPath))

lib/canvas.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
*/
1212

1313
var canvas = require('./bindings')
14+
, Backends = canvas.Backends
1415
, Canvas = canvas.Canvas
1516
, Image = canvas.Image
1617
, cairoVersion = canvas.cairoVersion
@@ -28,6 +29,8 @@ var canvas = require('./bindings')
2829

2930
var Canvas = exports = module.exports = Canvas;
3031

32+
exports.backends = Backends;
33+
3134
/**
3235
* Library version.
3336
*/

src/Backends.cc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#include "Backends.h"
2+
3+
#include "backend/ImageBackend.h"
4+
#include "backend/PdfBackend.h"
5+
#include "backend/SvgBackend.h"
6+
7+
using namespace v8;
8+
9+
void Backends::Initialize(Handle<Object> target) {
10+
Nan::HandleScope scope;
11+
12+
Local<Object> obj = Nan::New<Object>();
13+
ImageBackend::Initialize(obj);
14+
PdfBackend::Initialize(obj);
15+
SvgBackend::Initialize(obj);
16+
17+
target->Set(Nan::New<String>("Backends").ToLocalChecked(), obj);
18+
}

src/Backends.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#ifndef __NODE_BACKENDS_H__
2+
#define __NODE_BACKENDS_H__
3+
4+
#include <nan.h>
5+
6+
#include "backend/Backend.h"
7+
8+
9+
class Backends : public Nan::ObjectWrap {
10+
public:
11+
static void Initialize(v8::Handle<v8::Object> target);
12+
};
13+
14+
#endif

0 commit comments

Comments
 (0)