From adb5b73d99dd3fd914c4f6f993775542b50a0e6f Mon Sep 17 00:00:00 2001 From: parisminton Date: Mon, 20 Nov 2017 18:04:53 -0500 Subject: [PATCH 1/7] Add theme for Dear Sugars. --- settings/backgrounds/t_logo_black.png | Bin 0 -> 4051 bytes settings/labels.json | 1 + settings/themes.json | 9 +++++++++ 3 files changed, 10 insertions(+) create mode 100644 settings/backgrounds/t_logo_black.png diff --git a/settings/backgrounds/t_logo_black.png b/settings/backgrounds/t_logo_black.png new file mode 100644 index 0000000000000000000000000000000000000000..32bacbfc0409f64edc07169d6fbae7054c11c2c5 GIT binary patch literal 4051 zcmeHKYfuwc6kbuPq7)Gj9~c}EB1S+9<v-A(`YM;(9241ezKoO|w>?|$F; z&g@>=w>QAlWW5Oh0H%Svhz9^*@elwQZC~~U6tQ~fw;Fn^OC*IShSH8FCP$y80Di}4 zF_cY#)aW?M0ZQ~S2K_n32LQ~H0*QX#rAR+?$%1VHZ0eNs{JJl5dvDSnwK+1i6jHJ%VxW^JOjT}TDfAT(j)V8O~As=)%(u}TgQ#FOTRq0}U zQ0!o*b9*2Vga~r6&Cr-=G4#$yOZC>R&T?dJ3&$mv z5XkW$ZvT##v0sCwJ}#=YlLNLiV+ebC8A;<$dmr{0%CY1H|0)HnL?=L`39&~+x?K&7eJZRWTN`D8fBHfL%!v>wYM zU!!-|o|4%XX7dVHBtj|DZ1ubI`RiWA-~{)CFLX1FX?ESo=xoy}A9Fzk#Boc`V|!x4 z1+AafSMUftB}9jHv{(A9gXv8dRG;ftAN0&sI7GaKh(FQPgPwbYLFiXMOsP-EPtux| zKY=q{yu`7^nuN%2$+#7>pt~-6$kk?)7;JFcWkou3@B5jg!$sHE3y6qZq`xxD>1On{DDwZ9z!o3 zKkUPzmS50{iJ4)YZHkE33d{!%L%)Rwrn+tDQ%={+S-{zw1r@eMom2&VL@Q(H^Ms63 zk2K7?%)!EU4{BaD1l%R%MffcRfP&yQ6UN${@h{t6Ps}9sZLnCxQvU9^vjC>X_@YA# z2K&H^C#d4#pF9q-~TYCP0zG@Vb=A)`t0GlQ z+5z=@9UY}J@PAj9z@$7^M{#!H%Qkif;?jtDLN26d%T)qa;{rqoYc!@^8Rrkr?Gu~J*{ zl!+0sEh@sjWg|0%%iycB1SgxZppa)8cR_nd%Oa-@RO1n_Z`X@5Cw@vy6HWIlibi>; zI$UbU{%rcq4u)`|fiEl|<>vR(!@J9aaxYd4>i1~>PHRUK5m_?&ynAO-pKs^+vVV;q zd&_c!&-9dKdG}(=Ncf;EJc{aNE;pa~xBbrLx(S+Fnc$Hug~+ohO|hSSrRa#dd%5c@ z8v7i?S&t0-Hgysxq5g^BFdS%csdYN zNM#ewVq;jbC=1V@bvO_l*7%=MXE3pO@l9gtsL z-5)lfcyoS-D}3Lhez#t=S}93ydgsS9oG(+`fD;i7@q0RKf`#CxAcO$B*T5$-0+5;u zL8QU{HzA==SI&cvpat813g^u0Nwnbbk8?QW@BgOGV0~n2AU{P&=0fn}2+1>oxc*!` smd;AufdXp>d9om52o`^El5MmSShhrBrZJ-(h9W>9X)m#C=h5^3098@GSO5S3 literal 0 HcmV?d00001 diff --git a/settings/labels.json b/settings/labels.json index 535d6b9c..e8ad24cc 100644 --- a/settings/labels.json +++ b/settings/labels.json @@ -3,6 +3,7 @@ "None", "The Daily", "Still Processing", + "Dear Sugars", "Popcast", "Modern Love", "The Book Review", diff --git a/settings/themes.json b/settings/themes.json index 102a9172..341fdd6e 100644 --- a/settings/themes.json +++ b/settings/themes.json @@ -64,6 +64,15 @@ "labelColor": "#fff", "labelText": "The Daily" }, + "Dear Sugars": { + "waveColor": "rgba(255, 255, 255, 0.35)", + "foregroundColor": "rgba(0, 0, 0, 0.9)", + "citationColor": "rgba(0, 0, 0, 0.9)", + "backgroundColor": "#91d2d2", + "backgroundImage": "t_logo_black.png", + "labelColor": "rgba(0, 0, 0, 0.9)", + "labelText": "Dear Sugars" + }, "Science": { "waveColor": "#d9d9d9", "foregroundColor": "#000", From 464b1e3bedc720d8ce293fc2451dcc73375cc06f Mon Sep 17 00:00:00 2001 From: parisminton Date: Tue, 21 Nov 2017 18:18:22 -0500 Subject: [PATCH 2/7] Set the protocol and domain ourselves. --- client/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/index.js b/client/index.js index 149674a4..af629f2d 100644 --- a/client/index.js +++ b/client/index.js @@ -27,8 +27,10 @@ function timestamp () { + addZero(d.getSeconds()) + '_'; } +var pre_pro = window.location.protocol, + pre_host = window.location.host; -d3.json("/settings/labels.json", function(err, labels){ +d3.json(pre_pro + "//" + pre_host + "/settings/labels.json", function(err, labels){ // Populate labels menu d3.select("#input-label") @@ -45,7 +47,7 @@ d3.json("/settings/labels.json", function(err, labels){ }); // end label ingestion -d3.json("/settings/themes.json", function(err, themes){ +d3.json(pre_pro + "//" + pre_host + "/settings/themes.json", function(err, themes){ var errorMessage; From 07264ecee3a46d5c3ea4410dc3428afe40b48079 Mon Sep 17 00:00:00 2001 From: parisminton Date: Tue, 21 Nov 2017 19:55:23 -0500 Subject: [PATCH 3/7] Increase opacity of the T logo and lose the em dash, per Digital Design. --- renderer/text-wrapper.js | 15 ++------------- settings/backgrounds/t_logo_dearsugars.png | Bin 0 -> 4217 bytes settings/themes.json | 2 +- 3 files changed, 3 insertions(+), 14 deletions(-) create mode 100644 settings/backgrounds/t_logo_dearsugars.png diff --git a/renderer/text-wrapper.js b/renderer/text-wrapper.js index 19e62371..e4fbea30 100644 --- a/renderer/text-wrapper.js +++ b/renderer/text-wrapper.js @@ -20,16 +20,7 @@ module.exports = function(theme) { wrap_width = right - left, max_width = 0, words = smartquotes(txt + "").trim().replace(/\s\s+/g, " \n").split(/ /g), - indent; - - if (type === 'caption') { - // negative indentation for opening quotes - indent = 20; - } - else if (type === 'citation') { - // negative indentation for opening em dash - indent = 50; - } + indent = 20; if (bottom === null && top === null) { top = 0; @@ -53,8 +44,6 @@ module.exports = function(theme) { } else { - // automatically prepend em dash to citation - word = (type === 'citation' && i === 0) ? '— ' + word : word; lines[lines.length - 1].push(word); } @@ -97,7 +86,7 @@ module.exports = function(theme) { lines.forEach(function(line, i){ if (/caption|citation/.test(type)) { - if (i === 0 && /^“|^—/.test(line[0])) { + if (i === 0 && /^“/.test(line[0])) { context.fillText(line.join(" "), x, y + i * (theme[type + 'LineHeight'] + theme[type + 'LineSpacing'])); } else { diff --git a/settings/backgrounds/t_logo_dearsugars.png b/settings/backgrounds/t_logo_dearsugars.png new file mode 100644 index 0000000000000000000000000000000000000000..4f823a816e07e63959ad32d67c3e97bdc7a726ff GIT binary patch literal 4217 zcmeHKdr(qo6uR8krW*s7UkGRl-& zR%EqlQa+m05)I1-t7KUCC=oG%d?A`73W)B#*O}FEnjZesKmGytyXW5Xo$vh4IltfB zgnfHL+@3&0O#RL5*#03HXe~;IdZP+(E%q8nQK;=76^=WCd)a zr_h5s!|kiUOROFEx4K>f035SsgUjzUE&&l4cL(5bu={r!qxWfoo51e#PlGGi{jDf0ail_fUnr!A@{Vh;3Ju56f0x@ixm9 zhMiYB<5C#2XcEzpol+)089eHbrDN?gC_QPJJNMKL##%7Rhhe}6Q z!O840E@hzaa@ZZOebQv&PUVwAB2M}?Gn8oxp%iU8Na|OhUh0G^{)(VLRoLA<+Ad%$ zhY-!X%BDp~{di*^u|yD@TjmyElD_f`ZkK4|2SrU``J+~bP=SMs*J8*)wh0M$Gf^>- z79A!nJ+DbmD*K{J#D}nO9L@D>?0qttO*flvt9>hR0TP|= zT&x}()xI9{6UiFUX}e~G9&D%4vN^-cxhj6JjAn3>`78Ux;aOe~Fm+F~rSm0J?SYlH z6i)d-h!U4CIm~_CPgNXg6#gA$L`bf1xJ3L}?0LuilD`kB#Ecf643+rSM|VoY@df=W z(S2!N0yF`+iQ`DydWUpYkP{C-UuOJbV_jsy?ii1|P1qO#v#-esj(6ULY>Vhplqe6q zBYj#ji})dB4C-L3m0kQ`!j?#{ZJDjPHA%fXT?BnMC{DGDfIdn#C7RN z`i?(w#reNW=ba(3kUW~1O(qmI`cTbpjRYA_wk$N<2IKH2E5F2CuWkXo_%vc8OunCU{VZ0mg?4x(h!OIA`J>zwFun!yQ^QoqQZoXH6DTuHd^+#R3 zz7XE0*SA{!(Dd9zeP)6Y&h(nR0)_GBr zpuF?6G?)oJ!72GhPYnodzoz)uJ%I`%U=7!>wX-r_xtL zW8UG9o}f}kgAo=<)gsV2=*3_nQKj2hdZGWK$vM(;m9xR9w=?0{Vrh0S!WoLz&qfDP z*b)i*CX%eDiWm1uSIyeGlS^ZD+gyo?ONTQzK~+TVk_VPC>EK+@jPv#uDbArb@Oc9# zA8R2hH$pvRC2qf>M!wt3OS;`;to9ll%Tk{}SS0E~IIKv~Fx+sX=&@0b%>x8Wq_j#F zi1?kh`vnit%G#XRV)&(N_`+j&CTGD1?3O%xN~^ixzQY*lnP2DTstXVbm)70sre${p z;OL^HUbT%i24_??fHU(6Rt=~-ZBgXBHU_e@gK=s%JR7@N%Hwl}AN}jSRKhYCt?)hU z%%vU?fGiLcLv^omcwd6-D)%a00?$d+W!=7{K_g@XvJ1gDW8R{K20YzgeKeDMR<|du zp@{lC)EJY>@n~l;B38lMhib`X7X~>WG4oVzn}`-fzT;TQ#XFtwc7-fLa!v=G_sY0A zEcGdN(~S_Rt4H5uOQuDSUsOl;wh17YV3PY+)Zhy+Oo++!VVFSidqr^qhDnqW@=6olrU))zG9r|jHxL8;LiB}V`WBPrmFPx zCuK%oU>cZ!VUqSv?f Date: Fri, 5 Oct 2018 01:48:33 -0400 Subject: [PATCH 4/7] Add label for The Argument, the new Opinion podcast. --- settings/labels.json | 1 + 1 file changed, 1 insertion(+) diff --git a/settings/labels.json b/settings/labels.json index e8ad24cc..ffb8082c 100644 --- a/settings/labels.json +++ b/settings/labels.json @@ -7,6 +7,7 @@ "Popcast", "Modern Love", "The Book Review", + "The Argument", "- Other:" ] } From 73a06d451a1eb8c7528da8b77260bbda7159bd58 Mon Sep 17 00:00:00 2001 From: parisminton Date: Fri, 5 Oct 2018 01:53:22 -0400 Subject: [PATCH 5/7] ... and remove superfluous "Other:" label. --- settings/labels.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/settings/labels.json b/settings/labels.json index ffb8082c..4870c872 100644 --- a/settings/labels.json +++ b/settings/labels.json @@ -7,7 +7,6 @@ "Popcast", "Modern Love", "The Book Review", - "The Argument", - "- Other:" + "The Argument" ] } From 7bab3eb483b5d7bf9f95d3dbb0ecfd107fb73dcc Mon Sep 17 00:00:00 2001 From: Scott Blumenthal Date: Tue, 21 Jan 2020 18:01:12 -0500 Subject: [PATCH 6/7] Add draft of 'The Choice' --- settings/backgrounds/the-choice.jpg | Bin 0 -> 444540 bytes settings/themes.json | 9 +++++++++ 2 files changed, 9 insertions(+) create mode 100644 settings/backgrounds/the-choice.jpg diff --git a/settings/backgrounds/the-choice.jpg b/settings/backgrounds/the-choice.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e4a1da88599422d99b6c9717f846acc22ebf293 GIT binary patch literal 444540 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ⅅ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
G@>33fZpl!*!p31m$YAjVSZk%uIj(YZO~% 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
JMwz3-(WS3HU6yO~&xspgPd)fts!aP#zwtLI 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

2V;Bh+ZVF8)(-NxNXYwy6086Y7Bw@+xLmDfg>?v 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 Date: Wed, 22 Jan 2020 17:14:33 -0500 Subject: [PATCH 7/7] 'vendorizing' canvas because it's impossible to install in cloud build. Don't know how it ever worked... --- audiogram/draw-frames.js | 46 +- audiogram/initialize-canvas.js | 39 +- docker-compose.yml | 1 + lib/register-fonts.js | 6 +- package.json | 1 - settings/themes.json | 2 +- test/frame-test.js | 197 +- vendor/canvas/.github/ISSUE_TEMPLATE.md | 25 + vendor/canvas/.npmignore | 6 + vendor/canvas/.travis.yml | 23 + vendor/canvas/History.md | 634 +++++ vendor/canvas/Readme.md | 368 +++ vendor/canvas/binding.gyp | 151 ++ vendor/canvas/build/Makefile | 329 +++ .../.deps/Release/canvas-postbuild.node.d | 1 + .../build/Release/.deps/Release/canvas.node.d | 1 + .../obj.target/canvas-postbuild.node.d | 1 + .../.deps/Release/obj.target/canvas.node.d | 1 + .../Release/obj.target/canvas/src/Canvas.o.d | 309 +++ .../obj.target/canvas/src/CanvasGradient.o.d | 292 +++ .../obj.target/canvas/src/CanvasPattern.o.d | 291 +++ .../canvas/src/CanvasRenderingContext2d.o.d | 298 +++ .../Release/obj.target/canvas/src/Image.o.d | 289 +++ .../obj.target/canvas/src/ImageData.o.d | 290 +++ .../Release/obj.target/canvas/src/color.o.d | 4 + .../Release/obj.target/canvas/src/init.o.d | 317 +++ .../obj.target/canvas/src/register_font.o.d | 260 ++ .../build/Release/canvas-postbuild.node | Bin 0 -> 5808 bytes vendor/canvas/build/Release/canvas.node | Bin 0 -> 243784 bytes .../Release/obj.target/canvas-postbuild.node | Bin 0 -> 5808 bytes .../build/Release/obj.target/canvas.node | Bin 0 -> 243784 bytes .../Release/obj.target/canvas/src/Canvas.o | Bin 0 -> 80312 bytes .../obj.target/canvas/src/CanvasGradient.o | Bin 0 -> 22200 bytes .../obj.target/canvas/src/CanvasPattern.o | Bin 0 -> 19336 bytes .../canvas/src/CanvasRenderingContext2d.o | Bin 0 -> 154272 bytes .../Release/obj.target/canvas/src/Image.o | Bin 0 -> 49664 bytes .../Release/obj.target/canvas/src/ImageData.o | Bin 0 -> 25776 bytes .../Release/obj.target/canvas/src/color.o | Bin 0 -> 20056 bytes .../Release/obj.target/canvas/src/init.o | Bin 0 -> 5336 bytes .../obj.target/canvas/src/register_font.o | Bin 0 -> 6152 bytes vendor/canvas/build/binding.Makefile | 6 + .../canvas/build/canvas-postbuild.target.mk | 42 + vendor/canvas/build/canvas.target.mk | 178 ++ vendor/canvas/build/config.gypi | 160 ++ vendor/canvas/index.js | 1 + vendor/canvas/lib/bindings.js | 3 + vendor/canvas/lib/canvas.js | 288 +++ vendor/canvas/lib/context2d.js | 348 +++ vendor/canvas/lib/image.js | 61 + vendor/canvas/lib/jpegstream.js | 62 + vendor/canvas/lib/pdfstream.js | 59 + vendor/canvas/lib/pngstream.js | 61 + vendor/canvas/package.json | 124 + vendor/canvas/src/Canvas.cc | 842 +++++++ vendor/canvas/src/Canvas.h | 111 + vendor/canvas/src/CanvasGradient.cc | 122 + vendor/canvas/src/CanvasGradient.h | 28 + vendor/canvas/src/CanvasPattern.cc | 86 + vendor/canvas/src/CanvasPattern.h | 27 + vendor/canvas/src/CanvasRenderingContext2d.cc | 2227 +++++++++++++++++ vendor/canvas/src/CanvasRenderingContext2d.h | 164 ++ vendor/canvas/src/Image.cc | 974 +++++++ vendor/canvas/src/Image.h | 108 + vendor/canvas/src/ImageData.cc | 135 + vendor/canvas/src/ImageData.h | 36 + vendor/canvas/src/JPEGStream.h | 146 ++ vendor/canvas/src/PNG.h | 227 ++ vendor/canvas/src/Point.h | 19 + vendor/canvas/src/closure.h | 65 + vendor/canvas/src/color.cc | 744 ++++++ vendor/canvas/src/color.h | 40 + vendor/canvas/src/init.cc | 76 + vendor/canvas/src/register_font.cc | 247 ++ vendor/canvas/src/register_font.h | 4 + vendor/canvas/util/has_lib.sh | 63 + 75 files changed, 11949 insertions(+), 117 deletions(-) create mode 100644 vendor/canvas/.github/ISSUE_TEMPLATE.md create mode 100644 vendor/canvas/.npmignore create mode 100644 vendor/canvas/.travis.yml create mode 100644 vendor/canvas/History.md create mode 100644 vendor/canvas/Readme.md create mode 100755 vendor/canvas/binding.gyp create mode 100644 vendor/canvas/build/Makefile create mode 100644 vendor/canvas/build/Release/.deps/Release/canvas-postbuild.node.d create mode 100644 vendor/canvas/build/Release/.deps/Release/canvas.node.d create mode 100644 vendor/canvas/build/Release/.deps/Release/obj.target/canvas-postbuild.node.d create mode 100644 vendor/canvas/build/Release/.deps/Release/obj.target/canvas.node.d create mode 100644 vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/Canvas.o.d create mode 100644 vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasGradient.o.d create mode 100644 vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasPattern.o.d create mode 100644 vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasRenderingContext2d.o.d create mode 100644 vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/Image.o.d create mode 100644 vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/ImageData.o.d create mode 100644 vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/color.o.d create mode 100644 vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/init.o.d create mode 100644 vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/register_font.o.d create mode 100755 vendor/canvas/build/Release/canvas-postbuild.node create mode 100755 vendor/canvas/build/Release/canvas.node create mode 100755 vendor/canvas/build/Release/obj.target/canvas-postbuild.node create mode 100755 vendor/canvas/build/Release/obj.target/canvas.node create mode 100644 vendor/canvas/build/Release/obj.target/canvas/src/Canvas.o create mode 100644 vendor/canvas/build/Release/obj.target/canvas/src/CanvasGradient.o create mode 100644 vendor/canvas/build/Release/obj.target/canvas/src/CanvasPattern.o create mode 100644 vendor/canvas/build/Release/obj.target/canvas/src/CanvasRenderingContext2d.o create mode 100644 vendor/canvas/build/Release/obj.target/canvas/src/Image.o create mode 100644 vendor/canvas/build/Release/obj.target/canvas/src/ImageData.o create mode 100644 vendor/canvas/build/Release/obj.target/canvas/src/color.o create mode 100644 vendor/canvas/build/Release/obj.target/canvas/src/init.o create mode 100644 vendor/canvas/build/Release/obj.target/canvas/src/register_font.o create mode 100644 vendor/canvas/build/binding.Makefile create mode 100644 vendor/canvas/build/canvas-postbuild.target.mk create mode 100644 vendor/canvas/build/canvas.target.mk create mode 100644 vendor/canvas/build/config.gypi create mode 100644 vendor/canvas/index.js create mode 100644 vendor/canvas/lib/bindings.js create mode 100644 vendor/canvas/lib/canvas.js create mode 100644 vendor/canvas/lib/context2d.js create mode 100644 vendor/canvas/lib/image.js create mode 100644 vendor/canvas/lib/jpegstream.js create mode 100644 vendor/canvas/lib/pdfstream.js create mode 100644 vendor/canvas/lib/pngstream.js create mode 100644 vendor/canvas/package.json create mode 100644 vendor/canvas/src/Canvas.cc create mode 100644 vendor/canvas/src/Canvas.h create mode 100644 vendor/canvas/src/CanvasGradient.cc create mode 100644 vendor/canvas/src/CanvasGradient.h create mode 100644 vendor/canvas/src/CanvasPattern.cc create mode 100644 vendor/canvas/src/CanvasPattern.h create mode 100755 vendor/canvas/src/CanvasRenderingContext2d.cc create mode 100644 vendor/canvas/src/CanvasRenderingContext2d.h create mode 100644 vendor/canvas/src/Image.cc create mode 100644 vendor/canvas/src/Image.h create mode 100644 vendor/canvas/src/ImageData.cc create mode 100644 vendor/canvas/src/ImageData.h create mode 100644 vendor/canvas/src/JPEGStream.h create mode 100644 vendor/canvas/src/PNG.h create mode 100644 vendor/canvas/src/Point.h create mode 100644 vendor/canvas/src/closure.h create mode 100644 vendor/canvas/src/color.cc create mode 100644 vendor/canvas/src/color.h create mode 100755 vendor/canvas/src/init.cc create mode 100644 vendor/canvas/src/register_font.cc create mode 100644 vendor/canvas/src/register_font.h create mode 100755 vendor/canvas/util/has_lib.sh diff --git a/audiogram/draw-frames.js b/audiogram/draw-frames.js index 1507a770..e97f9aa1 100644 --- a/audiogram/draw-frames.js +++ b/audiogram/draw-frames.js @@ -1,12 +1,11 @@ var fs = require("fs"), - path = require("path"), - Canvas = require("canvas"), - queue = require("d3").queue; + path = require("path"), + Canvas = require("../vendor/canvas"), + queue = require("d3").queue; function drawFrames(renderer, options, cb) { - var frameQueue = queue(10), - canvases = []; + canvases = []; for (var i = 0; i < 10; i++) { canvases.push(new Canvas(options.width, options.height)); @@ -19,9 +18,8 @@ function drawFrames(renderer, options, cb) { frameQueue.awaitAll(cb); function drawFrame(frameNumber, frameCallback) { - var canvas = canvases.pop(), - context = canvas.getContext("2d"); + context = canvas.getContext("2d"); renderer.drawFrame(context, { caption: options.caption, @@ -31,36 +29,33 @@ function drawFrames(renderer, options, cb) { frame: frameNumber }); - canvas.toBuffer(function(err, buf){ - + canvas.toBuffer(function(err, buf) { if (err) { return cb(err); } - fs.writeFile(path.join(options.frameDir, zeropad(frameNumber + 1, 6) + ".png"), buf, function(writeErr) { - - if (writeErr) { - return frameCallback(writeErr); - } - - if (options.tick) { - options.tick(); - } + fs.writeFile( + path.join(options.frameDir, zeropad(frameNumber + 1, 6) + ".png"), + buf, + function(writeErr) { + if (writeErr) { + return frameCallback(writeErr); + } - canvases.push(canvas); + if (options.tick) { + options.tick(); + } - return frameCallback(null); - - }); + canvases.push(canvas); + return frameCallback(null); + } + ); }); - } - } function zeropad(str, len) { - str = str.toString(); while (str.length < len) { @@ -68,7 +63,6 @@ function zeropad(str, len) { } return str; - } module.exports = drawFrames; diff --git a/audiogram/initialize-canvas.js b/audiogram/initialize-canvas.js index bed12764..176479d6 100644 --- a/audiogram/initialize-canvas.js +++ b/audiogram/initialize-canvas.js @@ -1,10 +1,9 @@ var fs = require("fs"), - path = require("path"), - Canvas = require("canvas"), - getRenderer = require("../renderer/"); + path = require("path"), + Canvas = require("../vendor/canvas"), + getRenderer = require("../renderer/"); function initializeCanvas(theme, cb) { - // Fonts pre-registered in bin/worker var renderer = getRenderer(theme); @@ -13,20 +12,26 @@ function initializeCanvas(theme, cb) { } // Load background image from file (done separately so renderer code can work in browser too) - fs.readFile(path.join(__dirname, "..", "settings", "backgrounds", theme.backgroundImage), function(err, raw){ - - if (err) { - return cb(err); + fs.readFile( + path.join( + __dirname, + "..", + "settings", + "backgrounds", + theme.backgroundImage + ), + function(err, raw) { + if (err) { + return cb(err); + } + + var bg = new Canvas.Image(); + bg.src = raw; + renderer.backgroundImage(bg); + + return cb(null, renderer); } - - var bg = new Canvas.Image; - bg.src = raw; - renderer.backgroundImage(bg); - - return cb(null, renderer); - - }); - + ); } module.exports = initializeCanvas; diff --git a/docker-compose.yml b/docker-compose.yml index 58285fa6..1589b49c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,3 +8,4 @@ services: - "./settings:/usr/src/app/settings/" - "./lib:/usr/src/app/lib/" - "./server:/usr/src/app/server/" + - "./vendor:/usr/src/app/vendor/" diff --git a/lib/register-fonts.js b/lib/register-fonts.js index 6fb3ef39..62aed4e7 100644 --- a/lib/register-fonts.js +++ b/lib/register-fonts.js @@ -1,10 +1,10 @@ var fonts = require("./settings/").fonts, - _ = require("underscore"), - Canvas = require("canvas"); + _ = require("underscore"), + Canvas = require("../vendor/canvas"); // Register custom fonts one time if (Array.isArray(fonts)) { - fonts.forEach(function(font){ + fonts.forEach(function(font) { Canvas.registerFont(font.file, _.pick(font, "family", "weight", "style")); }); } diff --git a/package.json b/package.json index 0c004070..894f1c24 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,6 @@ "dependencies": { "aws-sdk": "^2.2.39", "browserify": "^13.0.0", - "canvas": "git+https://github.com/chearon/node-canvas.git#12971f64a66b", "compression": "^1.6.1", "d3": "^4.1.1", "dotenv": "^2.0.0", diff --git a/settings/themes.json b/settings/themes.json index 57a5d21a..d34d98ef 100644 --- a/settings/themes.json +++ b/settings/themes.json @@ -74,7 +74,7 @@ "labelText": "Dear Sugars" }, "The Choice": { - "waveColor": "rgba(102, 102, 102, 0.25)", + "waveColor": "rgba(255, 255, 255, 0.50)", "foregroundColor": "#fff", "citationColor": "#fff", "backgroundColor": "#f4d7b9", diff --git a/test/frame-test.js b/test/frame-test.js index c2784b7e..40411068 100644 --- a/test/frame-test.js +++ b/test/frame-test.js @@ -1,10 +1,10 @@ var tape = require("tape"), - Canvas = require("canvas"), - d3 = require("d3"), - path = require("path"), - fs = require("fs"), - initializeCanvas = require("../audiogram/initialize-canvas.js"), - drawFrames = require("../audiogram/draw-frames.js"); + Canvas = require("../vendor/canvas"), + d3 = require("d3"), + path = require("path"), + fs = require("fs"), + initializeCanvas = require("../audiogram/initialize-canvas.js"), + drawFrames = require("../audiogram/draw-frames.js"); require("mkdirp").sync(path.join(__dirname, "tmp", "frames")); @@ -12,102 +12,161 @@ var frameDir = path.join(__dirname, "tmp", "frames"); var waveform = [ [ - [0, 0], [1, 1], [0, 0] + [0, 0], + [1, 1], + [0, 0] ], [ - [1, 1], [0.1, 0.1], [1, 1] + [1, 1], + [0.1, 0.1], + [1, 1] ] ]; function tester(options) { - return function(test) { - - initializeCanvas(options, function(err, renderer){ - + initializeCanvas(options, function(err, renderer) { test.error(err); - drawFrames(renderer, { - numFrames: waveform.length, - frameDir: frameDir, - width: options.width, - height: options.height, - waveform: waveform - }, function(err){ - test.error(err); - checkFrame(test, options); - }); - + drawFrames( + renderer, + { + numFrames: waveform.length, + frameDir: frameDir, + width: options.width, + height: options.height, + waveform: waveform + }, + function(err) { + test.error(err); + checkFrame(test, options); + } + ); }); - }; - } -tape.test("Draw frame", tester({ - width: 1280, - height: 720, - backgroundColor: "#f00", - foregroundColor: "#fff", - waveTop: 340, - waveBottom: 380 -})); - -tape.test("Default colors", tester({ - width: 1280, - height: 720, - waveTop: 340, - waveBottom: 380 -})); - -tape.test("Square frame", tester({ - width: 720, - height: 720, - backgroundColor: "#f00", - foregroundColor: "#fff", - waveTop: 340, - waveBottom: 380 -})); +tape.test( + "Draw frame", + tester({ + width: 1280, + height: 720, + backgroundColor: "#f00", + foregroundColor: "#fff", + waveTop: 340, + waveBottom: 380 + }) +); + +tape.test( + "Default colors", + tester({ + width: 1280, + height: 720, + waveTop: 340, + waveBottom: 380 + }) +); + +tape.test( + "Square frame", + tester({ + width: 720, + height: 720, + backgroundColor: "#f00", + foregroundColor: "#fff", + waveTop: 340, + waveBottom: 380 + }) +); function checkFrame(test, options) { - var testCanvas = new Canvas(options.width, options.height), - context = testCanvas.getContext("2d"); + context = testCanvas.getContext("2d"); d3.queue() .defer(fs.readFile, path.join(frameDir, "000001.png")) .defer(fs.readFile, path.join(frameDir, "000002.png")) - .await(function(e, f1, f2){ - + .await(function(e, f1, f2) { test.error(e); - var img = new Canvas.Image; + var img = new Canvas.Image(); img.src = f1; var bg = getColor(options.backgroundColor || "#fff"), - fg = getColor(options.waveColor || options.foregroundColor || "#000"); + fg = getColor(options.waveColor || options.foregroundColor || "#000"); context.drawImage(img, 0, 0, options.width, options.height); test.deepEqual(getColor(context.getImageData(0, 0, 1, 1)), bg); - test.deepEqual(getColor(context.getImageData(options.width - 1, options.height - 1, 1, 1)), bg); - test.deepEqual(getColor(context.getImageData(0, options.height / 2 - 10, 1, 1)), bg); - test.deepEqual(getColor(context.getImageData(options.width - 1, options.height / 2 + 10, 1, 1)), bg); - test.deepEqual(getColor(context.getImageData(options.width / 2, options.height / 2, 1, 1)), fg); - test.deepEqual(getColor(context.getImageData(options.width / 2, options.height / 2 - 10, 1, 1)), fg); - test.deepEqual(getColor(context.getImageData(options.width / 2, options.height / 2 + 10, 1, 1)), fg); + test.deepEqual( + getColor( + context.getImageData(options.width - 1, options.height - 1, 1, 1) + ), + bg + ); + test.deepEqual( + getColor(context.getImageData(0, options.height / 2 - 10, 1, 1)), + bg + ); + test.deepEqual( + getColor( + context.getImageData(options.width - 1, options.height / 2 + 10, 1, 1) + ), + bg + ); + test.deepEqual( + getColor( + context.getImageData(options.width / 2, options.height / 2, 1, 1) + ), + fg + ); + test.deepEqual( + getColor( + context.getImageData(options.width / 2, options.height / 2 - 10, 1, 1) + ), + fg + ); + test.deepEqual( + getColor( + context.getImageData(options.width / 2, options.height / 2 + 10, 1, 1) + ), + fg + ); img.src = f2; context.drawImage(img, 10, 0, options.width, options.height); - test.deepEqual(getColor(context.getImageData(options.width / 2, options.height / 2, 1, 1)), fg); - test.deepEqual(getColor(context.getImageData(options.width / 2 - 10, options.height / 2 - 10, 1, 1)), bg); - test.deepEqual(getColor(context.getImageData(options.width / 2 - 10, options.height / 2 + 10, 1, 1)), bg); - + test.deepEqual( + getColor( + context.getImageData(options.width / 2, options.height / 2, 1, 1) + ), + fg + ); + test.deepEqual( + getColor( + context.getImageData( + options.width / 2 - 10, + options.height / 2 - 10, + 1, + 1 + ) + ), + bg + ); + test.deepEqual( + getColor( + context.getImageData( + options.width / 2 - 10, + options.height / 2 + 10, + 1, + 1 + ) + ), + bg + ); test.end(); - }); - } function getColor(c) { @@ -120,8 +179,8 @@ function getColor(c) { } // Cleanup -tape.onFinish(function(){ - require("rimraf")(path.join(__dirname, "tmp"), function(err){ +tape.onFinish(function() { + require("rimraf")(path.join(__dirname, "tmp"), function(err) { if (err) { throw err; } diff --git a/vendor/canvas/.github/ISSUE_TEMPLATE.md b/vendor/canvas/.github/ISSUE_TEMPLATE.md new file mode 100644 index 00000000..1034f646 --- /dev/null +++ b/vendor/canvas/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,25 @@ + + + + + +## Issue or Feature + + +## Steps to Reproduce + +```js +var Canvas = require('canvas'); +var canvas = new Canvas(200, 200); +var ctx = canvas.getContext('2d'); +// etc. +``` + +## Your Environment +* Version of node-canvas (e.g. 1.4.0): +* Environment (e.g. node 4.2.0 on Mac OS X 10.8): \ No newline at end of file diff --git a/vendor/canvas/.npmignore b/vendor/canvas/.npmignore new file mode 100644 index 00000000..e91e1490 --- /dev/null +++ b/vendor/canvas/.npmignore @@ -0,0 +1,6 @@ +testing +build +benchmarks +examples +support +test diff --git a/vendor/canvas/.travis.yml b/vendor/canvas/.travis.yml new file mode 100644 index 00000000..7ea091cb --- /dev/null +++ b/vendor/canvas/.travis.yml @@ -0,0 +1,23 @@ +language: node_js +node_js: + - '6' + - '4' + - '0.12' + - '0.10' + - '0.8' +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libcairo2-dev + - libjpeg8-dev + - libpango1.0-dev + - libgif-dev + - g++-4.9 +env: + - CXX=g++-4.9 +before_install: + - if [[ $TRAVIS_NODE_VERSION == 0.8 ]]; then npm install -g npm@1.4.28; fi + - npm explore npm -g -- npm install node-gyp@latest +sudo: false diff --git a/vendor/canvas/History.md b/vendor/canvas/History.md new file mode 100644 index 00000000..70c707d7 --- /dev/null +++ b/vendor/canvas/History.md @@ -0,0 +1,634 @@ +1.6.0 / 2016-10-16 +================== + + * Support canvas.getBuffer('raw') (#819) + +1.5.0 / 2016-09-11 +================== + + * Crude PDF stream implementation (#781) + * Update CI settings (#797) + * Reduce some of the install warnings (#794) + * Fix lineDash browser tests never finishing (#793) + * Add issue template (#791) + +1.4.0 / 2016-06-03 +================== + + * Add support for evenodd fill rule (#762) + +1.3.17 / 2016-06-03 +=================== + + * Removing redundant duplicate calls (#769) + * Cleanup examples (#776) + * Fix CanvasRenderingContext2D class name (#777) + +1.3.16 / 2016-05-29 +=================== + + * Fix leak of data when streaming JPEG (#774) + +1.3.15 / 2016-05-09 +=================== + + * Fix segfault in putImageData (#750) + +1.3.14 / 2016-05-05 +=================== + + * Clamp JPEG buffer size (#739) + +1.3.13 / 2016-05-01 +=================== + + * Bumb NAN version (#759) + +1.3.12 / 2016-03-01 +=================== + + * Expose freetype version (#718) + * Require new in constructor (#717) + +1.3.11 / 2016-03-01 +=================== + + * Properly clamp quality in toDataURL (#728) + * Strict mode (#719) + +1.3.10 / 2016-02-07 +=================== + + * Fix segfault on node 0.10.x (#712) + +1.3.9 / 2016-01-27 +================== + + * Allow to unbind onload/onerror callback handlers (#706) + +1.3.8 / 2016-01-22 +================== + + * Cleanup build scripts and fix pangocairo detection (#701) + +1.3.7 / 2016-01-13 +================== + + * Don't unbind onload/onerror callbacks after invoking them (#615) + +1.3.6 / 2016-01-06 +================== + + * Allow optional arguments in `toDataURL` to be `undefined` and improve `toDataURL`'s spec compliance (#690) + +1.3.5 / 2015-12-07 +================== + + * Add image/jpeg support to `toDataUrl` (#685) + +1.3.4 / 2015-11-21 +================== + + * Upgrade nan to 2.1.0 (#671) + +1.3.3 / 2015-11-21 +================== + + * Fix compilation on Visual Studio 2015 (#670) + +1.3.2 / 2015-11-18 +================== + + * Fix incorrect Y offset and scaling for shadows (#669) + +1.3.1 / 2015-11-09 +================== + + * Wrap std::min calls in paranthesis to prevent macro expansion on windows (#660) + +1.3.0 / 2015-10-26 +================== + + * Expose ImageData constructor and make it more spec-compliant (#569) + +1.2.11 / 2015-10-20 +=================== + + * Implement blur on images (#648) + +1.2.10 / 2015-10-12 +=================== + + * Fix segfault in Canvas#jpegStream (#629) + +1.2.9 / 2015-09-14 +================== + + * Upgrade to Nan 2.x with support for iojs 3.x and Node.js 4.x (#622) + +1.2.8 / 2015-08-30 +================== + + * Clean up the tests (#612) + * Replace CanvasPixelArray with Uint8ClampedArray to be API-compliant (#604) + * Specify travis iojs versions (#611) + +1.2.7 / 2015-07-29 +================== + + * Avoid future reserved keyword (#592) + +1.2.6 / 2015-07-29 +================== + + * Fix the build on windows (#589) + +1.2.5 / 2015-07-28 +================== + + * Another npm release, since 1.2.4 was botched (see #596) + +1.2.4 / 2015-07-23 +================== + + * Point `homepage` and `repository` links to [`github.com/Automattic/node-canvas`][repo] + * Fix Travis builds and Cairo include paths (thanks, Linus Unnebäck!) + +1.2.3 / 2015-05-21 +================== + + * Update TJ Holowaychuk's username in the readme + * Fix segmentation fault in `Image::loadFromBuffer` when buffer is empty + * Optimize getImageData() + * package: add "license" attribute + * package: update "nan" to v1.8.4 + * package: append `.git` to "repository" URL + +1.2.2 / 2015-04-18 +================== + + * Now works on io.js + * Fix 'drawImage' scaling (the dimensions of the region that gets clipped also needs to be scaled). + * Fix bug in StreamPNGSync + +1.2.1 / 2015-02-10 +================== + + * Use non-cairo 1.12 API for shadow blur + +1.2.0 / 2015-01-31 +================== + + * travis: drop support for node v0.6 + * Merge pull request #507 from salzhrani/iojs + * io.js compatibility + * Merge pull request #505 from woodcoder/shadow-blur + * Fix issue with line width not being correct in stroked shadows. + * Add another shadow/transform test. + * Refactor setSourceRGBA to allow the context to be supplied. + * Simple image shadow (no blurring or handling current transforms) based on image's alpha channel. + * Test showing issue #133, that images don't have shadows. + * The +1 on the offset seems to match the browser's output better, but I can't work out why it would be needed (unless it's pixel alignment related). + * Make the shadow radius more accurately match the browser's, making use of sigma scale as used in SKIA: https://github.com/google/skia/blob/master/src/effects/SkBlurMask.cpp#L26. + * Create a new image surface to render blurred shadows to, this means that vector formats like PDF will now render blurs. + * Add recommended calls to flush and dirty buffer, as per http://www.cairographics.org/manual/cairo-Image-Surfaces.html#cairo-image-surface-get-data. + * Add PDF button to test page to easily generate PDF version of the test image. + * Fix to ensure shadowOffset is unaffected by the current transform. + * New test illustrating that canvas implementation doesn't translate the shadowOffset. + * Merge pull request #490 from AllYearbooks/master + * Merge pull request #501 from motiz88/hsl-color + * Code style + attribution. Also removed parseClipped() and commented out wrapInt (now wrap_int). + * Added visual tests for hsl() and hsla() color parsing. + * Fixed handling in hsl/hsla color parser. parseNumber() was erroring out on numbers with long fractional parts. + * hsl/hsla color parsing + rebeccapurple hsl() and hsla() color values are now supported, with corresponding unit tests. Also added rebeccapurple (from CSS Color Level 4) to the named color list. + * float rather than int for drawImage arguments + * with_pango to true and use fontconfig to load fonts + * Merge pull request #399 from nulltask/fix/lighten + * Merge pull request #465 from espadrine/master + * Merge pull request #470 from tonylukasavage/patch-1 + * Add one-liner MacPorts install to docs + * Offer SVG output. + * Readme update: node-gyp. + * Readme: fix subheading size + * Readme: remove Gemnasium badge, use SVG for npm badge + * Readme: add Travis-CI badge + * change operator lighter to lighten + +1.1.6 / 2014-08-01 +================== + + * export canvas.CanvasPixelArray instead of canvas.PixelArray which is undefined + * Glib version test into giflib exists test + * Giflib 5.1 + * install: use an even older version of giflib (v4.1.6) + * install: use an older version of giflib (v4.2.3) + * install: install `giflib` + * install: use more compatible sh syntax + * travis: attempt to run the ./install script before testintg + * travis: test node v0.6, v0.8, v0.10, and v0.11 + * Distinguish between 'add' and 'lighter' + +1.1.5 / 2014-06-26 +================== + + * Readme: remove Contributors section + * Readme: update copyright + * On Windows, copy required DLLs next to ".node" file (#442 @pandell) + * Duplicate "msvc_settings" for "Debug" configuration + * Remove unneeded #include + * Use float constants to prevent double->float conversion warning + * Ignore Visual C++ 2013 warnings (#441 @pandell) + * Add algorithm include to CanvasRenderingContext2d.cc for std::min (#435 @kkoopa) + * Updated NAN to 1.2.0 (#434 @kkoopa) + +1.1.4 / 2014-06-08 +================== + + * Fix compile error with Visual C++ + * Add support for the lineDash API + * Update NAN + * New V8 compatibility + * Correctly limit bounds in PutImageData to prevent segment fault + * Fix segfault when onload and onerror are not function + * Add support for Node 0.11.9 + +1.1.3 / 2014-01-08 +================== + + * Add CAIRO_FORMAT_INVALID + * Readjust the amount of allocated memory + * Fix argument index for filter parameter + * Make has_lib.sh work properly on Debian 64bit + +1.1.2 / 2013-10-31 +================== + + * NAN dep upgrade, full node@<=0.11.8 compatibility + * Use node::MakeCallback() instead of v8::Function::Call() + * Improve nan location discovery + * Fix enabling gif/jpeg options on Ubuntu 13.04 + +1.1.1 / 2013-10-09 +================== + + * add better support for outdated versions of Cairo + +1.1.0 / 2013-08-01 +================== + + * add png compression options + * add jpeg stream progressive mode option + * fix resource leaks on read errors + +1.0.4 / 2013-07-23 +================== + + * 0.11.4+ compatibility using NAN + * fix typo in context2d for imageSmoothingEnabled + +1.0.3 / 2013-06-04 +================== + + * add "nearest" and "bilinear" to patternQuality + * fix fread() retval check (items not bytes) + * removed unneeded private fields + +1.0.2 / 2013-03-22 +================== + + * add Context2d#imageSmoothingEnabled= + +1.0.1 / 2013-02-25 +================== + + * travis: test modern node versions + * change the node-gyp build to use pkg-config + +1.0.0 / 2013-01-16 +================== + + * add conditional pango font support [Julian Viereck] + * add `Canvas#{png,jpeg}Stream()` alias of create* legacy methods + * add support for grayscale JPEGs + * fix: explicitly cast the after work callback function to "uv_after_work_cb" + * fix test server for express 3.x + * fix: call cairo_surface_finish in ~Canvas when pdf + * remove old 0.4.x binding support. Closes #197 + +0.13.1 / 2012-08-20 +================== + + * fix cases where GIF_LIB_VERSION is not defined + * fix auto-detection of optional libraries for OS X + * fix Context2d::SetFont for pango when setting normal weight/style + +0.13.0 / 2012-08-12 +================== + + * add pango support [c-spencer] + * add pango / png / jpeg gyp auto-detection [c-spencer] + * add `.gifVersion` [tootallnate] + * add `.jpegVersion` [tootallnate] + * add moar gyp stuff [tootallnate] + * remove wscript + * fix `closure_destroy()` with cast for `AdjustAmountOfExternalAllocatedMemory()` + +0.12.1 / 2012-06-29 +================== + + * fix jpeg malloc Image issue. Closes #160 [c-spencer] + * Improve Image mode API + * Add clearData method to handle reassignment of src, and clean up mime data memory handling. + * Improve how _data_len is managed and use to adjust memory, hide more of mime API behind cairo version conditional. + * Add optional mime-data tracking to Image. + * Refactor JPEG decoding into decodeJPEGIntoSurface + +0.12.0 / 2012-05-02 +================== + + * Added `textDrawingMode` context property [c-spencer] + * Added additional TextMetrics properties [c-spencer] + +0.11.3 / 2012-04-25 +================== + + * Fixed `Image` memory leak. Closes #150 + * Fixed Context2d::hasShadow() + +0.11.2 / 2012-04-12 +================== + + * Fixed: pdf memory leak, free closure and surface in ~Canvas + +0.11.1 / 2012-04-10 +================== + + * Changed: renamed .nextPage() to .addPage() + +0.11.0 / 2012-04-10 +================== + + * Added quick PDF support + * Added `Canvas#type` getter + * Added ./examples/pdf-images.js + * Added ./examples/multiple-page-pdf.js + * Added ./examples/small-pdf.js + +0.10.3 / 2012-02-27 +================== + + * Fixed quadratic curve starting point for undefined path. Closes #155 + +0.10.2 / 2012-02-06 +================== + + * Fixed: Context2d setters with invalid values ignored + * Changed: replaced seek with `fstat()` + +0.10.1 / 2012-01-31 +================== + + * Added _/opt/local/lib_ to wscript [obarthel] + * Added bounds checking to `rgba_to_string()` [obarthel] + * Fixed cleanup in JPEG Image loading [obarthel] + * Fixed missing CSS color table values [obarthel] + +0.10.0 / 2012-01-18 +================== + + * Added `ctx.createPattern()` [slaskis] + +0.9.0 / 2012-01-13 +================== + + * Added `createJPEGStream()` [Elijah Hamovitz] + +0.8.3 / 2012-01-04 +================== + + * Added support for libjpeg62-dev or libjpeg8-dev [wwlinx] + +0.8.2 / 2011-12-14 +================== + + * Fixed two memory leaks in context2d [Tharit] + * Fixed `make test-server` + +0.8.1 / 2011-10-31 +================== + + * Added 0.5.x support [TooTallNate] + * Fixed `measureText().width`. Closes #126 + +0.8.0 / 2011-10-28 +================== + + * Added data uri support. Closes #49 + +0.7.3 / 2011-09-14 +================== + + * Added better lineTo() / moveTo() exception messages + +0.7.2 / 2011-08-30 +================== + + * Changed: prefix some private methods with _ + +0.7.1 / 2011-08-25 +================== + + * Added better image format detection + * Added libpath options to waf configuration; this was necessary to correctly detect gif and jpeg support on FreeBSD + +0.7.0 / 2011-07-12 +================== + + * Added GIF support [Brian McKinney] + +0.6.0 / 2011-06-04 +================== + + * Added `Image#src=Buffer` support. Closes #91 + * Added `devDependencies` + * Added `source-atop` test + * Added _image-src.js_ example + * Removed `V8::AdjustAmountOfExternalAllocatedMemory()` call from `toBuffer()` + * Fixed v8 memory hint when resizing canvas [atomizer] + +0.5.4 / 2011-04-20 +================== + + * Added; special case of zero-width rectangle [atomizer] + * Fixed; do not clamp arguments to integer values [atomizer] + * Fixed; preserve current path during `fillRect()` and `strokeRect()` [atomizer] + * Fixed; `restorePath()`: clear current path before appending [atomizer] + +0.5.3 / 2011-04-11 +================== + + * Clamp image bounds in `PixelArray::PixelArray()` [Marcello Bastea-Forte] + +0.5.2 / 2011-04-09 +================== + + * Changed; make `PNGStream` a real `Stream` [Marcello Bastea-Forte] + +0.5.1 / 2011-03-16 +================== + + * Fixed (kinda) `img.src=` error handling + * Fixed; move closure.h down for malloc ref. Closes #80 + +0.5.0 / 2011-03-14 +================== + + * Added several more operators (color-dodge, color-burn, difference, etc) + * Performance; no longer re-allocating `closure->data` for each png write + * Fixed freeing of `Context2d` states + * Fixed text alignment / baseline [Olaf] + * Fixed HandleScopes [Olaf] + * Fixed small misc memory leaks + * Fixed `Buffer` usage for node 0.4.x + +0.4.3 / 2011-01-11 +================== + + * Fixed font family dereferencing. Closes #72 + * Fixed; stripping of quotes from font-family before applying + * Fixed duplicate textAlign getter + * Removed sans-serif default of _Arial_ + +0.4.2 / 2010-12-28 +================== + + * Fixed font size growing issue after successive calls. Closes #70 + +0.4.1 / 2010-12-18 +================== + + * Fixed; toString() first argument of `{fill,stroke}Text()`. Closes #68 + +0.4.0 / 2010-12-12 +================== + + * Added `drawImage()` with `Canvas` instance support. Closes #67 + +0.3.3 / 2010-11-30 +================== + + * Added `CanvasRenderingContext2d#patternQuality` accessor, accepting _fast_, _good_, and _best_ + * Fixed; pre-multiply `putImageData()` components + * Fixed; `PixelArray` data is not premultiplied + +0.3.2 / 2010-11-26 +================== + + * Added --profile option to config + * Fixed `eio_custom` segfault(s). Closes #46 + * Fixed two named colors. Closes #62 [thanks noonat] + * Fixed a few warnings + * Fixed; freeing data in `Image::loadJPEG()` on failure + * Fixed; include _jpeglib_ only when __HAVE_JPEG__ + * Fixed; using `strstr()` instead of `strnstr()` + +0.3.1 / 2010-11-24 +================== + + * Fixed; `Image` loading is sync until race-condition is resolved + * Fixed; `Image::loadJPEG()` return status based on errno + +0.3.0 / 2010-11-24 +================== + + * Added arcTo(). Closes #11 + * Added c color parser, _./examples/ray.js_ is now twice as fast + * Fixed `putImageData()` bug messing up rgba channels + +0.2.1 / 2010-11-19 +================== + + * Added image _resize_ example + * Fixed canvas resizing via `{width,height}=`. Closes #57 + * Fixed `Canvas#getContext()`, caching the CanvasRenderingContext + * Fixed async image loading (test server still messed) + +0.2.0 / 2010-11-18 +================== + + * Added jpeg `Image` support (when libjpeg is available) + * Added _hsl_ / _hsla_ color support. [Tom Carden] + +0.1.0 / 2010-11-17 +================== + + * Added `Image` + * Added `ImageData` + * Added `PixelArray` + * Added `CanvasRenderingContext2d#drawImage()` + * Added `CanvasRenderingContext2d#getImageData()` + * Added `CanvasRenderingContext2d#createImageData()` + * Added kraken blur benchmark example + * Added several new tests + * Fixed instanceof checks for many c++ methods + * Fixed test runner in firefox [Don Park] + +0.0.8 / 2010-11-12 +================== + + * Added `CanvasRenderingContext2d#drawImage()` + * Fixed `free()` call missing stdlib + * Fixed Image#{width,height} initialization to 0 + * Fixed; load image on non-LOADING state + +0.0.7 / 2010-11-12 +================== + + * Fixed _lighter_ for older versions of cairo + +0.0.6 / 2010-11-12 +================== + + * Added `Image` + * Added conditional support for cairo 1.10.0 operators + +0.0.5 / 2010-11-10 +================== + + * Added custom port support to _test/server.js_ + * Added more global composite operator support + * Added `Context2d#antialias=` + * Added _voronoi_ example + * Added -D__NDEBUG__ to default build + * Added __BUFFER_DATA__ macro for backwards compat buffer data access [Don Park] + * Fixed getter bug preventing patterns from being returned via `fillStyle` etc + + * Fixed; __CAIRO_STATUS_NO_MEMORY___ on failed {re,m}alloc() + * Fixed; free `Canvas::ToBuffer()` closure data + +0.0.4 / 2010-11-09 +================== + + * Bump to fix npm engine cache bug... + +0.0.3 / 2010-11-09 +================== + + * Added async `toDataURL()` support + * Added async `toBuffer()` support + * Removed buffer utils + +0.0.2 / 2010-11-08 +================== + + * Added shadow support (faster/better gaussian blur to come) + * Added node v0.3 support [Don Park] + * Added -O3 to build + * Removed `Canvas#savePNG()` use `Canvas#createPNGStream()` + +0.0.1 / 2010-11-04 +================== + + * Initial release + +[repo]: https://github.com/Automattic/node-canvas diff --git a/vendor/canvas/Readme.md b/vendor/canvas/Readme.md new file mode 100644 index 00000000..9f9cf1de --- /dev/null +++ b/vendor/canvas/Readme.md @@ -0,0 +1,368 @@ +node-canvas +=========== +### Canvas graphics API backed by Cairo +[![Build Status](https://travis-ci.org/Automattic/node-canvas.svg?branch=master)](https://travis-ci.org/Automattic/node-canvas) +[![NPM version](https://badge.fury.io/js/canvas.svg)](http://badge.fury.io/js/canvas) + + node-canvas is a [Cairo](http://cairographics.org/) backed Canvas implementation for [NodeJS](http://nodejs.org). + +## Authors + + - TJ Holowaychuk ([tj](http://github.com/tj)) + - Nathan Rajlich ([TooTallNate](http://github.com/TooTallNate)) + - Rod Vagg ([rvagg](http://github.com/rvagg)) + - Juriy Zaytsev ([kangax](http://github.com/kangax)) + +## Installation + +```bash +$ npm install canvas +``` + +Unless previously installed you'll _need_ __Cairo__ and __Pango__. For system-specific installation view the [Wiki](https://github.com/Automattic/node-canvas/wiki/_pages). + +You can quickly install the dependencies by using the command for your OS: + +OS | Command +----- | ----- +OS X | `brew install pkg-config cairo pango libpng jpeg giflib` +Ubuntu | `sudo apt-get install libcairo2-dev libjpeg8-dev libpango1.0-dev libgif-dev build-essential g++` +Fedora | `sudo yum install cairo cairo-devel cairomm-devel libjpeg-turbo-devel pango pango-devel pangomm pangomm-devel giflib-devel` +Solaris | `pkgin install cairo pango pkg-config xproto renderproto kbproto xextproto` +Windows | [Instructions on our wiki](https://github.com/Automattic/node-canvas/wiki/Installation---Windows) + +**El Capitan users:** If you have recently updated to El Capitan and are experiencing trouble when compiling, run the following command: `xcode-select --install`. Read more about the problem [on Stack Overflow](http://stackoverflow.com/a/32929012/148072). + +## Screencasts + + - [Introduction](http://screenr.com/CTk) + +## Example + +```javascript +var Canvas = require('canvas') + , Image = Canvas.Image + , canvas = new Canvas(200, 200) + , ctx = canvas.getContext('2d'); + +ctx.font = '30px Impact'; +ctx.rotate(.1); +ctx.fillText("Awesome!", 50, 100); + +var te = ctx.measureText('Awesome!'); +ctx.strokeStyle = 'rgba(0,0,0,0.5)'; +ctx.beginPath(); +ctx.lineTo(50, 102); +ctx.lineTo(50 + te.width, 102); +ctx.stroke(); + +console.log(''); +``` + +## Non-Standard API + + node-canvas extends the canvas API to provide interfacing with node, for example streaming PNG data, converting to a `Buffer` instance, etc. Among the interfacing API, in some cases the drawing API has been extended for SSJS image manipulation / creation usage, however keep in mind these additions may fail to render properly within browsers. + +### Image#src=Buffer + + node-canvas adds `Image#src=Buffer` support, allowing you to read images from disc, redis, etc and apply them via `ctx.drawImage()`. Below we draw scaled down squid png by reading it from the disk with node's I/O. + +```javascript +fs.readFile(__dirname + '/images/squid.png', function(err, squid){ + if (err) throw err; + img = new Image; + img.src = squid; + ctx.drawImage(img, 0, 0, img.width / 4, img.height / 4); +}); +``` + + Below is an example of a canvas drawing it-self as the source several time: + +```javascript +var img = new Image; +img.src = canvas.toBuffer(); +ctx.drawImage(img, 0, 0, 50, 50); +ctx.drawImage(img, 50, 0, 50, 50); +ctx.drawImage(img, 100, 0, 50, 50); +``` + +### Image#dataMode + +node-canvas adds `Image#dataMode` support, which can be used to opt-in to mime data tracking of images (currently only JPEGs). + +When mime data is tracked, in PDF mode JPEGs can be embedded directly into the output, rather than being re-encoded into PNG. This can drastically reduce filesize, and speed up rendering. + +```javascript +var img = new Image; +img.dataMode = Image.MODE_IMAGE; // Only image data tracked +img.dataMode = Image.MODE_MIME; // Only mime data tracked +img.dataMode = Image.MODE_MIME | Image.MODE_IMAGE; // Both are tracked +``` + +If image data is not tracked, and the Image is drawn to an image rather than a PDF canvas, the output will be junk. Enabling mime data tracking has no benefits (only a slow down) unless you are generating a PDF. + +### Canvas#pngStream() + + To create a `PNGStream` simply call `canvas.pngStream()`, and the stream will start to emit _data_ events, finally emitting _end_ when finished. If an exception occurs the _error_ event is emitted. + +```javascript +var fs = require('fs') + , out = fs.createWriteStream(__dirname + '/text.png') + , stream = canvas.pngStream(); + +stream.on('data', function(chunk){ + out.write(chunk); +}); + +stream.on('end', function(){ + console.log('saved png'); +}); +``` + +Currently _only_ sync streaming is supported, however we plan on supporting async streaming as well (of course :) ). Until then the `Canvas#toBuffer(callback)` alternative is async utilizing `eio_custom()`. + +### Canvas#jpegStream() and Canvas#syncJPEGStream() + +You can likewise create a `JPEGStream` by calling `canvas.jpegStream()` with +some optional parameters; functionality is otherwise identical to +`pngStream()`. See `examples/crop.js` for an example. + +_Note: At the moment, `jpegStream()` is the same as `syncJPEGStream()`, both +are synchronous_ + +```javascript +var stream = canvas.jpegStream({ + bufsize: 4096 // output buffer size in bytes, default: 4096 + , quality: 75 // JPEG quality (0-100) default: 75 + , progressive: false // true for progressive compression, default: false +}); +``` + +### Canvas#toBuffer() + +A call to `Canvas#toBuffer()` will return a node `Buffer` instance containing image data. + +```javascript +// PNG Buffer, default settings +var buf = canvas.toBuffer(); + +// PNG Buffer, zlib compression level 3 (from 0-9), faster but bigger +var buf2 = canvas.toBuffer(undefined, 3, canvas.PNG_FILTER_NONE); + +// ARGB32 Buffer, native-endian +var buf3 = canvas.toBuffer('raw'); +var stride = canvas.stride; +// In memory, this is `canvas.height * canvas.stride` bytes long. +// The top row of pixels, in ARGB order, left-to-right, is: +var topPixelsARGBLeftToRight = buf3.slice(0, canvas.width * 4); +var row3 = buf3.slice(2 * canvas.stride, 2 * canvas.stride + canvas.width * 4); +``` + +### Canvas#toBuffer() async + +Optionally we may pass a callback function to `Canvas#toBuffer()`, and this process will be performed asynchronously, and will `callback(err, buf)`. + +```javascript +canvas.toBuffer(function(err, buf){ + +}); +``` + +### Canvas#toDataURL() sync and async + +The following syntax patterns are supported: + +```javascript +var dataUrl = canvas.toDataURL(); // defaults to PNG +var dataUrl = canvas.toDataURL('image/png'); +canvas.toDataURL(function(err, png){ }); // defaults to PNG +canvas.toDataURL('image/png', function(err, png){ }); +canvas.toDataURL('image/jpeg', function(err, jpeg){ }); // sync JPEG is not supported +canvas.toDataURL('image/jpeg', {opts...}, function(err, jpeg){ }); // see Canvas#jpegStream for valid options +canvas.toDataURL('image/jpeg', quality, function(err, jpeg){ }); // spec-following; quality from 0 to 1 +``` + +### Canvas.registerFont for bundled fonts + +It can be useful to use a custom font file if you are distributing code that uses node-canvas and a specific font. Or perhaps you are using it to do automated tests and you want the renderings to be the same across operating systems regardless of what fonts are installed. + +To do that, you should use `Canvas.registerFont`. + +**You need to call it before the Canvas is created** + +```javascript +Canvas.registerFont('comicsans.ttf', {family: 'Comic Sans'}); + +var canvas = new Canvas(500, 500), + ctx = canvas.getContext('2d'); + +ctx.font = '12px "Comic Sans"'; +ctx.fillText(250, 10, 'Everyone hates this font :('); +``` + +The second argument is an object with properties that resemble the CSS properties that are specified in `@font-face` rules. You must specify at least `family`. `weight`, and `style` are optional (and default to "normal"). + +### CanvasRenderingContext2D#patternQuality + +Given one of the values below will alter pattern (gradients, images, etc) render quality, defaults to _good_. + + - fast + - good + - best + - nearest + - bilinear + +### CanvasRenderingContext2D#textDrawingMode + +Can be either `path` or `glyph`. Using `glyph` is much faster than `path` for drawing, and when using a PDF context will embed the text natively, so will be selectable and lower filesize. The downside is that cairo does not have any subpixel precision for `glyph`, so this will be noticeably lower quality for text positioning in cases such as rotated text. Also, strokeText in `glyph` will act the same as fillText, except using the stroke style for the fill. + +Defaults to _path_. + +This property is tracked as part of the canvas state in save/restore. + +### CanvasRenderingContext2D#filter + +Like `patternQuality`, but applies to transformations effecting more than just patterns. Defaults to _good_. + + - fast + - good + - best + - nearest + - bilinear + +### Global Composite Operations + +In addition to those specified and commonly implemented by browsers, the following have been added: + + - multiply + - screen + - overlay + - hard-light + - soft-light + - hsl-hue + - hsl-saturation + - hsl-color + - hsl-luminosity + +## Anti-Aliasing + + Set anti-aliasing mode + + - default + - none + - gray + - subpixel + + For example: + +```javascript +ctx.antialias = 'none'; +``` + +## PDF Support + + Basic PDF support was added in 0.11.0. Make sure to install cairo with `--enable-pdf=yes` for the PDF backend. node-canvas must know that it is creating + a PDF on initialization, using the "pdf" string: + +```js +var canvas = new Canvas(200, 500, 'pdf'); +``` + + An additional method `.addPage()` is then available to create + multiple page PDFs: + +```js +ctx.font = '22px Helvetica'; +ctx.fillText('Hello World', 50, 80); +ctx.addPage(); + +ctx.font = '22px Helvetica'; +ctx.fillText('Hello World 2', 50, 80); +ctx.addPage(); + +ctx.font = '22px Helvetica'; +ctx.fillText('Hello World 3', 50, 80); +ctx.addPage(); +``` + +## SVG support + + Just like PDF support, make sure to install cairo with `--enable-svg=yes`. + You also need to tell node-canvas that it is working on SVG upon its initialization: + +```js +var canvas = new Canvas(200, 500, 'svg'); +// Use the normal primitives. +fs.writeFile('out.svg', canvas.toBuffer()); +``` + +## Benchmarks + + Although node-canvas is extremely new, and we have not even begun optimization yet it is already quite fast. For benchmarks vs other node canvas implementations view this [gist](https://gist.github.com/664922), or update the submodules and run `$ make benchmark` yourself. + +## Contribute + + Want to contribute to node-canvas? patches for features, bug fixes, documentation, examples and others are certainly welcome. Take a look at the [issue queue](https://github.com/Automattic/node-canvas/issues) for existing issues. + +## Examples + + Examples are placed in _./examples_, be sure to check them out! most produce a png image of the same name, and others such as _live-clock.js_ launch an http server to be viewed in the browser. + +## Testing + +If you have not previously, init git submodules: + + $ git submodule update --init + +Install the node modules: + + $ npm install + +Build node-canvas: + + $ node-gyp rebuild + +Unit tests: + + $ make test + +Visual tests: + + $ make test-server + +## Versions + +Tested with and designed for: + + - node 0.4.2 + - cairo 1.8.6 + +For node 0.2.x `node-canvas` <= 0.4.3 may be used, +0.5.0 and above are designed for node 0.4.x only. + +## License + +(The MIT License) + +Copyright (c) 2010 LearnBoost, and contributors <dev@learnboost.com> + +Copyright (c) 2014 Automattic, Inc and contributors <dev@automattic.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/canvas/binding.gyp b/vendor/canvas/binding.gyp new file mode 100755 index 00000000..4f56e1a4 --- /dev/null +++ b/vendor/canvas/binding.gyp @@ -0,0 +1,151 @@ +{ + 'conditions': [ + ['OS=="win"', { + 'variables': { + 'GTK_Root%': 'C:/GTK', # Set the location of GTK all-in-one bundle + 'with_jpeg%': 'false', + 'with_gif%': 'false' + } + }, { # 'OS!="win"' + 'variables': { + 'with_jpeg%': '> $(depfile) +# Add extra rules as in (2). +# We remove slashes and replace spaces with new lines; +# remove blank lines; +# delete the first line and append a colon to the remaining lines. +sed -e 's|\\||' -e 'y| |\n|' $(depfile).raw |\ + grep -v '^$$' |\ + sed -e 1d -e 's|$$|:|' \ + >> $(depfile) +rm $(depfile).raw +endef + +# Command definitions: +# - cmd_foo is the actual command to run; +# - quiet_cmd_foo is the brief-output summary of the command. + +quiet_cmd_cc = CC($(TOOLSET)) $@ +cmd_cc = $(CC.$(TOOLSET)) $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS.$(TOOLSET)) -c -o $@ $< + +quiet_cmd_cxx = CXX($(TOOLSET)) $@ +cmd_cxx = $(CXX.$(TOOLSET)) $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< + +quiet_cmd_touch = TOUCH $@ +cmd_touch = touch $@ + +quiet_cmd_copy = COPY $@ +# send stderr to /dev/null to ignore messages when linking directories. +cmd_copy = rm -rf "$@" && cp -af "$<" "$@" + +quiet_cmd_alink = AR($(TOOLSET)) $@ +cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) crs $@ $(filter %.o,$^) + +quiet_cmd_alink_thin = AR($(TOOLSET)) $@ +cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^) + +# Due to circular dependencies between libraries :(, we wrap the +# special "figure out circular dependencies" flags around the entire +# input list during linking. +quiet_cmd_link = LINK($(TOOLSET)) $@ +cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--start-group $(LD_INPUTS) -Wl,--end-group $(LIBS) + +# We support two kinds of shared objects (.so): +# 1) shared_library, which is just bundling together many dependent libraries +# into a link line. +# 2) loadable_module, which is generating a module intended for dlopen(). +# +# They differ only slightly: +# In the former case, we want to package all dependent code into the .so. +# In the latter case, we want to package just the API exposed by the +# outermost module. +# This means shared_library uses --whole-archive, while loadable_module doesn't. +# (Note that --whole-archive is incompatible with the --start-group used in +# normal linking.) + +# Other shared-object link notes: +# - Set SONAME to the library filename so our binaries don't reference +# the local, absolute paths used on the link command-line. +quiet_cmd_solink = SOLINK($(TOOLSET)) $@ +cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -o $@ -Wl,--whole-archive $(LD_INPUTS) -Wl,--no-whole-archive $(LIBS) + +quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ +cmd_solink_module = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -o $@ -Wl,--start-group $(filter-out FORCE_DO_CMD, $^) -Wl,--end-group $(LIBS) + + +# Define an escape_quotes function to escape single quotes. +# This allows us to handle quotes properly as long as we always use +# use single quotes and escape_quotes. +escape_quotes = $(subst ','\'',$(1)) +# This comment is here just to include a ' to unconfuse syntax highlighting. +# Define an escape_vars function to escape '$' variable syntax. +# This allows us to read/write command lines with shell variables (e.g. +# $LD_LIBRARY_PATH), without triggering make substitution. +escape_vars = $(subst $$,$$$$,$(1)) +# Helper that expands to a shell command to echo a string exactly as it is in +# make. This uses printf instead of echo because printf's behaviour with respect +# to escape sequences is more portable than echo's across different shells +# (e.g., dash, bash). +exact_echo = printf '%s\n' '$(call escape_quotes,$(1))' + +# Helper to compare the command we're about to run against the command +# we logged the last time we ran the command. Produces an empty +# string (false) when the commands match. +# Tricky point: Make has no string-equality test function. +# The kernel uses the following, but it seems like it would have false +# positives, where one string reordered its arguments. +# arg_check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \ +# $(filter-out $(cmd_$@), $(cmd_$(1)))) +# We instead substitute each for the empty string into the other, and +# say they're equal if both substitutions produce the empty string. +# .d files contain ? instead of spaces, take that into account. +command_changed = $(or $(subst $(cmd_$(1)),,$(cmd_$(call replace_spaces,$@))),\ + $(subst $(cmd_$(call replace_spaces,$@)),,$(cmd_$(1)))) + +# Helper that is non-empty when a prerequisite changes. +# Normally make does this implicitly, but we force rules to always run +# so we can check their command lines. +# $? -- new prerequisites +# $| -- order-only dependencies +prereq_changed = $(filter-out FORCE_DO_CMD,$(filter-out $|,$?)) + +# Helper that executes all postbuilds until one fails. +define do_postbuilds + @E=0;\ + for p in $(POSTBUILDS); do\ + eval $$p;\ + E=$$?;\ + if [ $$E -ne 0 ]; then\ + break;\ + fi;\ + done;\ + if [ $$E -ne 0 ]; then\ + rm -rf "$@";\ + exit $$E;\ + fi +endef + +# do_cmd: run a command via the above cmd_foo names, if necessary. +# Should always run for a given target to handle command-line changes. +# Second argument, if non-zero, makes it do asm/C/C++ dependency munging. +# Third argument, if non-zero, makes it do POSTBUILDS processing. +# Note: We intentionally do NOT call dirx for depfile, since it contains ? for +# spaces already and dirx strips the ? characters. +define do_cmd +$(if $(or $(command_changed),$(prereq_changed)), + @$(call exact_echo, $($(quiet)cmd_$(1))) + @mkdir -p "$(call dirx,$@)" "$(dir $(depfile))" + $(if $(findstring flock,$(word 1,$(cmd_$1))), + @$(cmd_$(1)) + @echo " $(quiet_cmd_$(1)): Finished", + @$(cmd_$(1)) + ) + @$(call exact_echo,$(call escape_vars,cmd_$(call replace_spaces,$@) := $(cmd_$(1)))) > $(depfile) + @$(if $(2),$(fixup_dep)) + $(if $(and $(3), $(POSTBUILDS)), + $(call do_postbuilds) + ) +) +endef + +# Declare the "all" target first so it is the default, +# even though we don't have the deps yet. +.PHONY: all +all: + +# make looks for ways to re-generate included makefiles, but in our case, we +# don't have a direct way. Explicitly telling make that it has nothing to do +# for them makes it go faster. +%.d: ; + +# Use FORCE_DO_CMD to force a target to run. Should be coupled with +# do_cmd. +.PHONY: FORCE_DO_CMD +FORCE_DO_CMD: + +TOOLSET := target +# Suffix rules, putting all outputs into $(obj). +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cpp FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cxx FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.S FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.s FORCE_DO_CMD + @$(call do_cmd,cc,1) + +# Try building from generated source, too. +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cpp FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cxx FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.S FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.s FORCE_DO_CMD + @$(call do_cmd,cc,1) + +$(obj).$(TOOLSET)/%.o: $(obj)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.cpp FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.cxx FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.S FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.s FORCE_DO_CMD + @$(call do_cmd,cc,1) + + +ifeq ($(strip $(foreach prefix,$(NO_LOAD),\ + $(findstring $(join ^,$(prefix)),\ + $(join ^,canvas-postbuild.target.mk)))),) + include canvas-postbuild.target.mk +endif +ifeq ($(strip $(foreach prefix,$(NO_LOAD),\ + $(findstring $(join ^,$(prefix)),\ + $(join ^,canvas.target.mk)))),) + include canvas.target.mk +endif + +quiet_cmd_regen_makefile = ACTION Regenerating $@ +cmd_regen_makefile = cd $(srcdir); /usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py -fmake --ignore-environment "--toplevel-dir=." -I/usr/src/app/node_modules/canvas/build/config.gypi -I/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/root/.node-gyp/7.10.1/include/node/common.gypi "--depth=." "-Goutput_dir=." "--generator-output=build" "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/root/.node-gyp/7.10.1" "-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp" "-Dnode_lib_file=node.lib" "-Dmodule_root_dir=/usr/src/app/node_modules/canvas" binding.gyp +Makefile: $(srcdir)/../../../../../root/.node-gyp/7.10.1/include/node/common.gypi $(srcdir)/../../../../local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi $(srcdir)/build/config.gypi $(srcdir)/binding.gyp + $(call do_cmd,regen_makefile) + +# "all" is a concatenation of the "all" targets from all the included +# sub-makefiles. This is just here to clarify. +all: + +# Add in dependency-tracking rules. $(all_deps) is the list of every single +# target in our tree. Only consider the ones with .d (dependency) info: +d_files := $(wildcard $(foreach f,$(all_deps),$(depsdir)/$(f).d)) +ifneq ($(d_files),) + include $(d_files) +endif diff --git a/vendor/canvas/build/Release/.deps/Release/canvas-postbuild.node.d b/vendor/canvas/build/Release/.deps/Release/canvas-postbuild.node.d new file mode 100644 index 00000000..ad296c31 --- /dev/null +++ b/vendor/canvas/build/Release/.deps/Release/canvas-postbuild.node.d @@ -0,0 +1 @@ +cmd_Release/canvas-postbuild.node := rm -rf "Release/canvas-postbuild.node" && cp -af "Release/obj.target/canvas-postbuild.node" "Release/canvas-postbuild.node" diff --git a/vendor/canvas/build/Release/.deps/Release/canvas.node.d b/vendor/canvas/build/Release/.deps/Release/canvas.node.d new file mode 100644 index 00000000..e419cc9a --- /dev/null +++ b/vendor/canvas/build/Release/.deps/Release/canvas.node.d @@ -0,0 +1 @@ +cmd_Release/canvas.node := rm -rf "Release/canvas.node" && cp -af "Release/obj.target/canvas.node" "Release/canvas.node" diff --git a/vendor/canvas/build/Release/.deps/Release/obj.target/canvas-postbuild.node.d b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas-postbuild.node.d new file mode 100644 index 00000000..c62db382 --- /dev/null +++ b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas-postbuild.node.d @@ -0,0 +1 @@ +cmd_Release/obj.target/canvas-postbuild.node := g++ -shared -pthread -rdynamic -m64 -Wl,-soname=canvas-postbuild.node -o Release/obj.target/canvas-postbuild.node -Wl,--start-group -Wl,--end-group diff --git a/vendor/canvas/build/Release/.deps/Release/obj.target/canvas.node.d b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas.node.d new file mode 100644 index 00000000..d8eca19b --- /dev/null +++ b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas.node.d @@ -0,0 +1 @@ +cmd_Release/obj.target/canvas.node := g++ -shared -pthread -rdynamic -m64 -Wl,-soname=canvas.node -o Release/obj.target/canvas.node -Wl,--start-group Release/obj.target/canvas/src/Canvas.o Release/obj.target/canvas/src/CanvasGradient.o Release/obj.target/canvas/src/CanvasPattern.o Release/obj.target/canvas/src/CanvasRenderingContext2d.o Release/obj.target/canvas/src/color.o Release/obj.target/canvas/src/Image.o Release/obj.target/canvas/src/ImageData.o Release/obj.target/canvas/src/register_font.o Release/obj.target/canvas/src/init.o -Wl,--end-group -lpixman-1 -lcairo -lpng12 -lpangocairo-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfreetype -ljpeg -lgif diff --git a/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/Canvas.o.d b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/Canvas.o.d new file mode 100644 index 00000000..579fbe43 --- /dev/null +++ b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/Canvas.o.d @@ -0,0 +1,309 @@ +cmd_Release/obj.target/canvas/src/Canvas.o := g++ '-DNODE_GYP_MODULE_NAME=canvas' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DHAVE_JPEG' '-DHAVE_GIF' '-DBUILDING_NODE_EXTENSION' -I/root/.node-gyp/7.10.1/include/node -I/root/.node-gyp/7.10.1/src -I/root/.node-gyp/7.10.1/deps/uv/include -I/root/.node-gyp/7.10.1/deps/v8/include -I../../nan -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pango-1.0 -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF ./Release/.deps/Release/obj.target/canvas/src/Canvas.o.d.raw -c -o Release/obj.target/canvas/src/Canvas.o ../src/Canvas.cc +Release/obj.target/canvas/src/Canvas.o: ../src/Canvas.cc \ + /root/.node-gyp/7.10.1/include/node/node_buffer.h \ + /root/.node-gyp/7.10.1/include/node/node.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/v8-version.h \ + /root/.node-gyp/7.10.1/include/node/v8config.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /usr/include/glib-2.0/glib.h /usr/include/glib-2.0/glib/galloca.h \ + /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/include/glib-2.0/glib/gversionmacros.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gbacktrace.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h \ + /usr/include/cairo/cairo-pdf.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h /usr/include/cairo/cairo-svg.h \ + ../src/Canvas.h /root/.node-gyp/7.10.1/include/node/node.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/node_object_wrap.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h /usr/include/cairo/cairo.h \ + ../../nan/nan.h /root/.node-gyp/7.10.1/include/node/uv.h \ + /root/.node-gyp/7.10.1/include/node/uv-errno.h \ + /root/.node-gyp/7.10.1/include/node/uv-version.h \ + /root/.node-gyp/7.10.1/include/node/uv-unix.h \ + /root/.node-gyp/7.10.1/include/node/uv-threadpool.h \ + /root/.node-gyp/7.10.1/include/node/uv-linux.h ../../nan/nan_callbacks.h \ + ../../nan/nan_callbacks_12_inl.h ../../nan/nan_maybe_43_inl.h \ + ../../nan/nan_converters.h ../../nan/nan_converters_43_inl.h \ + ../../nan/nan_new.h ../../nan/nan_implementation_12_inl.h \ + ../../nan/nan_persistent_12_inl.h ../../nan/nan_weak.h \ + ../../nan/nan_object_wrap.h ../../nan/nan_private.h \ + ../../nan/nan_typedarray_contents.h ../../nan/nan_json.h ../src/PNG.h \ + /usr/include/libpng12/png.h /root/.node-gyp/7.10.1/include/node/zlib.h \ + /root/.node-gyp/7.10.1/include/node/zconf.h \ + /usr/include/libpng12/pngconf.h /usr/include/libpng12/pngconf.h \ + ../src/closure.h ../src/CanvasRenderingContext2d.h ../src/color.h \ + ../src/CanvasGradient.h ../src/register_font.h ../src/JPEGStream.h +../src/Canvas.cc: +/root/.node-gyp/7.10.1/include/node/node_buffer.h: +/root/.node-gyp/7.10.1/include/node/node.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/v8-version.h: +/root/.node-gyp/7.10.1/include/node/v8config.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/usr/include/glib-2.0/glib.h: +/usr/include/glib-2.0/glib/galloca.h: +/usr/include/glib-2.0/glib/gtypes.h: +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: +/usr/include/glib-2.0/glib/gmacros.h: +/usr/include/glib-2.0/glib/gversionmacros.h: +/usr/include/glib-2.0/glib/garray.h: +/usr/include/glib-2.0/glib/gasyncqueue.h: +/usr/include/glib-2.0/glib/gthread.h: +/usr/include/glib-2.0/glib/gatomic.h: +/usr/include/glib-2.0/glib/gerror.h: +/usr/include/glib-2.0/glib/gquark.h: +/usr/include/glib-2.0/glib/gbacktrace.h: +/usr/include/glib-2.0/glib/gbase64.h: +/usr/include/glib-2.0/glib/gbitlock.h: +/usr/include/glib-2.0/glib/gbookmarkfile.h: +/usr/include/glib-2.0/glib/gbytes.h: +/usr/include/glib-2.0/glib/gcharset.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/gconvert.h: +/usr/include/glib-2.0/glib/gdataset.h: +/usr/include/glib-2.0/glib/gdate.h: +/usr/include/glib-2.0/glib/gdatetime.h: +/usr/include/glib-2.0/glib/gtimezone.h: +/usr/include/glib-2.0/glib/gdir.h: +/usr/include/glib-2.0/glib/genviron.h: +/usr/include/glib-2.0/glib/gfileutils.h: +/usr/include/glib-2.0/glib/ggettext.h: +/usr/include/glib-2.0/glib/ghash.h: +/usr/include/glib-2.0/glib/glist.h: +/usr/include/glib-2.0/glib/gmem.h: +/usr/include/glib-2.0/glib/gnode.h: +/usr/include/glib-2.0/glib/ghmac.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/ghook.h: +/usr/include/glib-2.0/glib/ghostutils.h: +/usr/include/glib-2.0/glib/giochannel.h: +/usr/include/glib-2.0/glib/gmain.h: +/usr/include/glib-2.0/glib/gpoll.h: +/usr/include/glib-2.0/glib/gslist.h: +/usr/include/glib-2.0/glib/gstring.h: +/usr/include/glib-2.0/glib/gunicode.h: +/usr/include/glib-2.0/glib/gutils.h: +/usr/include/glib-2.0/glib/gkeyfile.h: +/usr/include/glib-2.0/glib/gmappedfile.h: +/usr/include/glib-2.0/glib/gmarkup.h: +/usr/include/glib-2.0/glib/gmessages.h: +/usr/include/glib-2.0/glib/goption.h: +/usr/include/glib-2.0/glib/gpattern.h: +/usr/include/glib-2.0/glib/gprimes.h: +/usr/include/glib-2.0/glib/gqsort.h: +/usr/include/glib-2.0/glib/gqueue.h: +/usr/include/glib-2.0/glib/grand.h: +/usr/include/glib-2.0/glib/gregex.h: +/usr/include/glib-2.0/glib/gscanner.h: +/usr/include/glib-2.0/glib/gsequence.h: +/usr/include/glib-2.0/glib/gshell.h: +/usr/include/glib-2.0/glib/gslice.h: +/usr/include/glib-2.0/glib/gspawn.h: +/usr/include/glib-2.0/glib/gstrfuncs.h: +/usr/include/glib-2.0/glib/gstringchunk.h: +/usr/include/glib-2.0/glib/gtestutils.h: +/usr/include/glib-2.0/glib/gthreadpool.h: +/usr/include/glib-2.0/glib/gtimer.h: +/usr/include/glib-2.0/glib/gtrashstack.h: +/usr/include/glib-2.0/glib/gtree.h: +/usr/include/glib-2.0/glib/gurifuncs.h: +/usr/include/glib-2.0/glib/gvarianttype.h: +/usr/include/glib-2.0/glib/gvariant.h: +/usr/include/glib-2.0/glib/gversion.h: +/usr/include/glib-2.0/glib/deprecated/gallocator.h: +/usr/include/glib-2.0/glib/deprecated/gcache.h: +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: +/usr/include/glib-2.0/glib/deprecated/gmain.h: +/usr/include/glib-2.0/glib/deprecated/grel.h: +/usr/include/glib-2.0/glib/deprecated/gthread.h: +/usr/include/cairo/cairo-pdf.h: +/usr/include/cairo/cairo.h: +/usr/include/cairo/cairo-version.h: +/usr/include/cairo/cairo-features.h: +/usr/include/cairo/cairo-deprecated.h: +/usr/include/cairo/cairo-svg.h: +../src/Canvas.h: +/root/.node-gyp/7.10.1/include/node/node.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/node_object_wrap.h: +/usr/include/pango-1.0/pango/pangocairo.h: +/usr/include/pango-1.0/pango/pango.h: +/usr/include/pango-1.0/pango/pango-attributes.h: +/usr/include/pango-1.0/pango/pango-font.h: +/usr/include/pango-1.0/pango/pango-coverage.h: +/usr/include/pango-1.0/pango/pango-types.h: +/usr/include/glib-2.0/glib-object.h: +/usr/include/glib-2.0/gobject/gbinding.h: +/usr/include/glib-2.0/gobject/gobject.h: +/usr/include/glib-2.0/gobject/gtype.h: +/usr/include/glib-2.0/gobject/gvalue.h: +/usr/include/glib-2.0/gobject/gparam.h: +/usr/include/glib-2.0/gobject/gclosure.h: +/usr/include/glib-2.0/gobject/gsignal.h: +/usr/include/glib-2.0/gobject/gmarshal.h: +/usr/include/glib-2.0/gobject/gboxed.h: +/usr/include/glib-2.0/gobject/glib-types.h: +/usr/include/glib-2.0/gobject/genums.h: +/usr/include/glib-2.0/gobject/gparamspecs.h: +/usr/include/glib-2.0/gobject/gsourceclosure.h: +/usr/include/glib-2.0/gobject/gtypemodule.h: +/usr/include/glib-2.0/gobject/gtypeplugin.h: +/usr/include/glib-2.0/gobject/gvaluearray.h: +/usr/include/glib-2.0/gobject/gvaluetypes.h: +/usr/include/pango-1.0/pango/pango-gravity.h: +/usr/include/pango-1.0/pango/pango-matrix.h: +/usr/include/pango-1.0/pango/pango-script.h: +/usr/include/pango-1.0/pango/pango-language.h: +/usr/include/pango-1.0/pango/pango-bidi-type.h: +/usr/include/pango-1.0/pango/pango-break.h: +/usr/include/pango-1.0/pango/pango-item.h: +/usr/include/pango-1.0/pango/pango-context.h: +/usr/include/pango-1.0/pango/pango-fontmap.h: +/usr/include/pango-1.0/pango/pango-fontset.h: +/usr/include/pango-1.0/pango/pango-engine.h: +/usr/include/pango-1.0/pango/pango-glyph.h: +/usr/include/pango-1.0/pango/pango-enum-types.h: +/usr/include/pango-1.0/pango/pango-features.h: +/usr/include/pango-1.0/pango/pango-glyph-item.h: +/usr/include/pango-1.0/pango/pango-layout.h: +/usr/include/pango-1.0/pango/pango-tabs.h: +/usr/include/pango-1.0/pango/pango-renderer.h: +/usr/include/pango-1.0/pango/pango-utils.h: +/usr/include/cairo/cairo.h: +../../nan/nan.h: +/root/.node-gyp/7.10.1/include/node/uv.h: +/root/.node-gyp/7.10.1/include/node/uv-errno.h: +/root/.node-gyp/7.10.1/include/node/uv-version.h: +/root/.node-gyp/7.10.1/include/node/uv-unix.h: +/root/.node-gyp/7.10.1/include/node/uv-threadpool.h: +/root/.node-gyp/7.10.1/include/node/uv-linux.h: +../../nan/nan_callbacks.h: +../../nan/nan_callbacks_12_inl.h: +../../nan/nan_maybe_43_inl.h: +../../nan/nan_converters.h: +../../nan/nan_converters_43_inl.h: +../../nan/nan_new.h: +../../nan/nan_implementation_12_inl.h: +../../nan/nan_persistent_12_inl.h: +../../nan/nan_weak.h: +../../nan/nan_object_wrap.h: +../../nan/nan_private.h: +../../nan/nan_typedarray_contents.h: +../../nan/nan_json.h: +../src/PNG.h: +/usr/include/libpng12/png.h: +/root/.node-gyp/7.10.1/include/node/zlib.h: +/root/.node-gyp/7.10.1/include/node/zconf.h: +/usr/include/libpng12/pngconf.h: +/usr/include/libpng12/pngconf.h: +../src/closure.h: +../src/CanvasRenderingContext2d.h: +../src/color.h: +../src/CanvasGradient.h: +../src/register_font.h: +../src/JPEGStream.h: diff --git a/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasGradient.o.d b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasGradient.o.d new file mode 100644 index 00000000..291842ba --- /dev/null +++ b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasGradient.o.d @@ -0,0 +1,292 @@ +cmd_Release/obj.target/canvas/src/CanvasGradient.o := g++ '-DNODE_GYP_MODULE_NAME=canvas' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DHAVE_JPEG' '-DHAVE_GIF' '-DBUILDING_NODE_EXTENSION' -I/root/.node-gyp/7.10.1/include/node -I/root/.node-gyp/7.10.1/src -I/root/.node-gyp/7.10.1/deps/uv/include -I/root/.node-gyp/7.10.1/deps/v8/include -I../../nan -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pango-1.0 -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF ./Release/.deps/Release/obj.target/canvas/src/CanvasGradient.o.d.raw -c -o Release/obj.target/canvas/src/CanvasGradient.o ../src/CanvasGradient.cc +Release/obj.target/canvas/src/CanvasGradient.o: ../src/CanvasGradient.cc \ + ../src/color.h ../src/Canvas.h \ + /root/.node-gyp/7.10.1/include/node/node.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/v8-version.h \ + /root/.node-gyp/7.10.1/include/node/v8config.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/node_object_wrap.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/glib-2.0/glib.h /usr/include/glib-2.0/glib/galloca.h \ + /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/include/glib-2.0/glib/gversionmacros.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gbacktrace.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h ../../nan/nan.h \ + /root/.node-gyp/7.10.1/include/node/uv.h \ + /root/.node-gyp/7.10.1/include/node/uv-errno.h \ + /root/.node-gyp/7.10.1/include/node/uv-version.h \ + /root/.node-gyp/7.10.1/include/node/uv-unix.h \ + /root/.node-gyp/7.10.1/include/node/uv-threadpool.h \ + /root/.node-gyp/7.10.1/include/node/uv-linux.h \ + /root/.node-gyp/7.10.1/include/node/node_buffer.h \ + /root/.node-gyp/7.10.1/include/node/node.h ../../nan/nan_callbacks.h \ + ../../nan/nan_callbacks_12_inl.h ../../nan/nan_maybe_43_inl.h \ + ../../nan/nan_converters.h ../../nan/nan_converters_43_inl.h \ + ../../nan/nan_new.h ../../nan/nan_implementation_12_inl.h \ + ../../nan/nan_persistent_12_inl.h ../../nan/nan_weak.h \ + ../../nan/nan_object_wrap.h ../../nan/nan_private.h \ + ../../nan/nan_typedarray_contents.h ../../nan/nan_json.h \ + ../src/CanvasGradient.h +../src/CanvasGradient.cc: +../src/color.h: +../src/Canvas.h: +/root/.node-gyp/7.10.1/include/node/node.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/v8-version.h: +/root/.node-gyp/7.10.1/include/node/v8config.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/node_object_wrap.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/usr/include/pango-1.0/pango/pangocairo.h: +/usr/include/pango-1.0/pango/pango.h: +/usr/include/pango-1.0/pango/pango-attributes.h: +/usr/include/pango-1.0/pango/pango-font.h: +/usr/include/pango-1.0/pango/pango-coverage.h: +/usr/include/glib-2.0/glib.h: +/usr/include/glib-2.0/glib/galloca.h: +/usr/include/glib-2.0/glib/gtypes.h: +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: +/usr/include/glib-2.0/glib/gmacros.h: +/usr/include/glib-2.0/glib/gversionmacros.h: +/usr/include/glib-2.0/glib/garray.h: +/usr/include/glib-2.0/glib/gasyncqueue.h: +/usr/include/glib-2.0/glib/gthread.h: +/usr/include/glib-2.0/glib/gatomic.h: +/usr/include/glib-2.0/glib/gerror.h: +/usr/include/glib-2.0/glib/gquark.h: +/usr/include/glib-2.0/glib/gbacktrace.h: +/usr/include/glib-2.0/glib/gbase64.h: +/usr/include/glib-2.0/glib/gbitlock.h: +/usr/include/glib-2.0/glib/gbookmarkfile.h: +/usr/include/glib-2.0/glib/gbytes.h: +/usr/include/glib-2.0/glib/gcharset.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/gconvert.h: +/usr/include/glib-2.0/glib/gdataset.h: +/usr/include/glib-2.0/glib/gdate.h: +/usr/include/glib-2.0/glib/gdatetime.h: +/usr/include/glib-2.0/glib/gtimezone.h: +/usr/include/glib-2.0/glib/gdir.h: +/usr/include/glib-2.0/glib/genviron.h: +/usr/include/glib-2.0/glib/gfileutils.h: +/usr/include/glib-2.0/glib/ggettext.h: +/usr/include/glib-2.0/glib/ghash.h: +/usr/include/glib-2.0/glib/glist.h: +/usr/include/glib-2.0/glib/gmem.h: +/usr/include/glib-2.0/glib/gnode.h: +/usr/include/glib-2.0/glib/ghmac.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/ghook.h: +/usr/include/glib-2.0/glib/ghostutils.h: +/usr/include/glib-2.0/glib/giochannel.h: +/usr/include/glib-2.0/glib/gmain.h: +/usr/include/glib-2.0/glib/gpoll.h: +/usr/include/glib-2.0/glib/gslist.h: +/usr/include/glib-2.0/glib/gstring.h: +/usr/include/glib-2.0/glib/gunicode.h: +/usr/include/glib-2.0/glib/gutils.h: +/usr/include/glib-2.0/glib/gkeyfile.h: +/usr/include/glib-2.0/glib/gmappedfile.h: +/usr/include/glib-2.0/glib/gmarkup.h: +/usr/include/glib-2.0/glib/gmessages.h: +/usr/include/glib-2.0/glib/goption.h: +/usr/include/glib-2.0/glib/gpattern.h: +/usr/include/glib-2.0/glib/gprimes.h: +/usr/include/glib-2.0/glib/gqsort.h: +/usr/include/glib-2.0/glib/gqueue.h: +/usr/include/glib-2.0/glib/grand.h: +/usr/include/glib-2.0/glib/gregex.h: +/usr/include/glib-2.0/glib/gscanner.h: +/usr/include/glib-2.0/glib/gsequence.h: +/usr/include/glib-2.0/glib/gshell.h: +/usr/include/glib-2.0/glib/gslice.h: +/usr/include/glib-2.0/glib/gspawn.h: +/usr/include/glib-2.0/glib/gstrfuncs.h: +/usr/include/glib-2.0/glib/gstringchunk.h: +/usr/include/glib-2.0/glib/gtestutils.h: +/usr/include/glib-2.0/glib/gthreadpool.h: +/usr/include/glib-2.0/glib/gtimer.h: +/usr/include/glib-2.0/glib/gtrashstack.h: +/usr/include/glib-2.0/glib/gtree.h: +/usr/include/glib-2.0/glib/gurifuncs.h: +/usr/include/glib-2.0/glib/gvarianttype.h: +/usr/include/glib-2.0/glib/gvariant.h: +/usr/include/glib-2.0/glib/gversion.h: +/usr/include/glib-2.0/glib/deprecated/gallocator.h: +/usr/include/glib-2.0/glib/deprecated/gcache.h: +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: +/usr/include/glib-2.0/glib/deprecated/gmain.h: +/usr/include/glib-2.0/glib/deprecated/grel.h: +/usr/include/glib-2.0/glib/deprecated/gthread.h: +/usr/include/pango-1.0/pango/pango-types.h: +/usr/include/glib-2.0/glib-object.h: +/usr/include/glib-2.0/gobject/gbinding.h: +/usr/include/glib-2.0/gobject/gobject.h: +/usr/include/glib-2.0/gobject/gtype.h: +/usr/include/glib-2.0/gobject/gvalue.h: +/usr/include/glib-2.0/gobject/gparam.h: +/usr/include/glib-2.0/gobject/gclosure.h: +/usr/include/glib-2.0/gobject/gsignal.h: +/usr/include/glib-2.0/gobject/gmarshal.h: +/usr/include/glib-2.0/gobject/gboxed.h: +/usr/include/glib-2.0/gobject/glib-types.h: +/usr/include/glib-2.0/gobject/genums.h: +/usr/include/glib-2.0/gobject/gparamspecs.h: +/usr/include/glib-2.0/gobject/gsourceclosure.h: +/usr/include/glib-2.0/gobject/gtypemodule.h: +/usr/include/glib-2.0/gobject/gtypeplugin.h: +/usr/include/glib-2.0/gobject/gvaluearray.h: +/usr/include/glib-2.0/gobject/gvaluetypes.h: +/usr/include/pango-1.0/pango/pango-gravity.h: +/usr/include/pango-1.0/pango/pango-matrix.h: +/usr/include/pango-1.0/pango/pango-script.h: +/usr/include/pango-1.0/pango/pango-language.h: +/usr/include/pango-1.0/pango/pango-bidi-type.h: +/usr/include/pango-1.0/pango/pango-break.h: +/usr/include/pango-1.0/pango/pango-item.h: +/usr/include/pango-1.0/pango/pango-context.h: +/usr/include/pango-1.0/pango/pango-fontmap.h: +/usr/include/pango-1.0/pango/pango-fontset.h: +/usr/include/pango-1.0/pango/pango-engine.h: +/usr/include/pango-1.0/pango/pango-glyph.h: +/usr/include/pango-1.0/pango/pango-enum-types.h: +/usr/include/pango-1.0/pango/pango-features.h: +/usr/include/pango-1.0/pango/pango-glyph-item.h: +/usr/include/pango-1.0/pango/pango-layout.h: +/usr/include/pango-1.0/pango/pango-tabs.h: +/usr/include/pango-1.0/pango/pango-renderer.h: +/usr/include/pango-1.0/pango/pango-utils.h: +/usr/include/cairo/cairo.h: +/usr/include/cairo/cairo-version.h: +/usr/include/cairo/cairo-features.h: +/usr/include/cairo/cairo-deprecated.h: +../../nan/nan.h: +/root/.node-gyp/7.10.1/include/node/uv.h: +/root/.node-gyp/7.10.1/include/node/uv-errno.h: +/root/.node-gyp/7.10.1/include/node/uv-version.h: +/root/.node-gyp/7.10.1/include/node/uv-unix.h: +/root/.node-gyp/7.10.1/include/node/uv-threadpool.h: +/root/.node-gyp/7.10.1/include/node/uv-linux.h: +/root/.node-gyp/7.10.1/include/node/node_buffer.h: +/root/.node-gyp/7.10.1/include/node/node.h: +../../nan/nan_callbacks.h: +../../nan/nan_callbacks_12_inl.h: +../../nan/nan_maybe_43_inl.h: +../../nan/nan_converters.h: +../../nan/nan_converters_43_inl.h: +../../nan/nan_new.h: +../../nan/nan_implementation_12_inl.h: +../../nan/nan_persistent_12_inl.h: +../../nan/nan_weak.h: +../../nan/nan_object_wrap.h: +../../nan/nan_private.h: +../../nan/nan_typedarray_contents.h: +../../nan/nan_json.h: +../src/CanvasGradient.h: diff --git a/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasPattern.o.d b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasPattern.o.d new file mode 100644 index 00000000..67c8c52f --- /dev/null +++ b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasPattern.o.d @@ -0,0 +1,291 @@ +cmd_Release/obj.target/canvas/src/CanvasPattern.o := g++ '-DNODE_GYP_MODULE_NAME=canvas' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DHAVE_JPEG' '-DHAVE_GIF' '-DBUILDING_NODE_EXTENSION' -I/root/.node-gyp/7.10.1/include/node -I/root/.node-gyp/7.10.1/src -I/root/.node-gyp/7.10.1/deps/uv/include -I/root/.node-gyp/7.10.1/deps/v8/include -I../../nan -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pango-1.0 -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF ./Release/.deps/Release/obj.target/canvas/src/CanvasPattern.o.d.raw -c -o Release/obj.target/canvas/src/CanvasPattern.o ../src/CanvasPattern.cc +Release/obj.target/canvas/src/CanvasPattern.o: ../src/CanvasPattern.cc \ + ../src/Canvas.h /root/.node-gyp/7.10.1/include/node/node.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/v8-version.h \ + /root/.node-gyp/7.10.1/include/node/v8config.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/node_object_wrap.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/glib-2.0/glib.h /usr/include/glib-2.0/glib/galloca.h \ + /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/include/glib-2.0/glib/gversionmacros.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gbacktrace.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h ../../nan/nan.h \ + /root/.node-gyp/7.10.1/include/node/uv.h \ + /root/.node-gyp/7.10.1/include/node/uv-errno.h \ + /root/.node-gyp/7.10.1/include/node/uv-version.h \ + /root/.node-gyp/7.10.1/include/node/uv-unix.h \ + /root/.node-gyp/7.10.1/include/node/uv-threadpool.h \ + /root/.node-gyp/7.10.1/include/node/uv-linux.h \ + /root/.node-gyp/7.10.1/include/node/node_buffer.h \ + /root/.node-gyp/7.10.1/include/node/node.h ../../nan/nan_callbacks.h \ + ../../nan/nan_callbacks_12_inl.h ../../nan/nan_maybe_43_inl.h \ + ../../nan/nan_converters.h ../../nan/nan_converters_43_inl.h \ + ../../nan/nan_new.h ../../nan/nan_implementation_12_inl.h \ + ../../nan/nan_persistent_12_inl.h ../../nan/nan_weak.h \ + ../../nan/nan_object_wrap.h ../../nan/nan_private.h \ + ../../nan/nan_typedarray_contents.h ../../nan/nan_json.h ../src/Image.h \ + ../src/CanvasPattern.h +../src/CanvasPattern.cc: +../src/Canvas.h: +/root/.node-gyp/7.10.1/include/node/node.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/v8-version.h: +/root/.node-gyp/7.10.1/include/node/v8config.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/node_object_wrap.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/usr/include/pango-1.0/pango/pangocairo.h: +/usr/include/pango-1.0/pango/pango.h: +/usr/include/pango-1.0/pango/pango-attributes.h: +/usr/include/pango-1.0/pango/pango-font.h: +/usr/include/pango-1.0/pango/pango-coverage.h: +/usr/include/glib-2.0/glib.h: +/usr/include/glib-2.0/glib/galloca.h: +/usr/include/glib-2.0/glib/gtypes.h: +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: +/usr/include/glib-2.0/glib/gmacros.h: +/usr/include/glib-2.0/glib/gversionmacros.h: +/usr/include/glib-2.0/glib/garray.h: +/usr/include/glib-2.0/glib/gasyncqueue.h: +/usr/include/glib-2.0/glib/gthread.h: +/usr/include/glib-2.0/glib/gatomic.h: +/usr/include/glib-2.0/glib/gerror.h: +/usr/include/glib-2.0/glib/gquark.h: +/usr/include/glib-2.0/glib/gbacktrace.h: +/usr/include/glib-2.0/glib/gbase64.h: +/usr/include/glib-2.0/glib/gbitlock.h: +/usr/include/glib-2.0/glib/gbookmarkfile.h: +/usr/include/glib-2.0/glib/gbytes.h: +/usr/include/glib-2.0/glib/gcharset.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/gconvert.h: +/usr/include/glib-2.0/glib/gdataset.h: +/usr/include/glib-2.0/glib/gdate.h: +/usr/include/glib-2.0/glib/gdatetime.h: +/usr/include/glib-2.0/glib/gtimezone.h: +/usr/include/glib-2.0/glib/gdir.h: +/usr/include/glib-2.0/glib/genviron.h: +/usr/include/glib-2.0/glib/gfileutils.h: +/usr/include/glib-2.0/glib/ggettext.h: +/usr/include/glib-2.0/glib/ghash.h: +/usr/include/glib-2.0/glib/glist.h: +/usr/include/glib-2.0/glib/gmem.h: +/usr/include/glib-2.0/glib/gnode.h: +/usr/include/glib-2.0/glib/ghmac.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/ghook.h: +/usr/include/glib-2.0/glib/ghostutils.h: +/usr/include/glib-2.0/glib/giochannel.h: +/usr/include/glib-2.0/glib/gmain.h: +/usr/include/glib-2.0/glib/gpoll.h: +/usr/include/glib-2.0/glib/gslist.h: +/usr/include/glib-2.0/glib/gstring.h: +/usr/include/glib-2.0/glib/gunicode.h: +/usr/include/glib-2.0/glib/gutils.h: +/usr/include/glib-2.0/glib/gkeyfile.h: +/usr/include/glib-2.0/glib/gmappedfile.h: +/usr/include/glib-2.0/glib/gmarkup.h: +/usr/include/glib-2.0/glib/gmessages.h: +/usr/include/glib-2.0/glib/goption.h: +/usr/include/glib-2.0/glib/gpattern.h: +/usr/include/glib-2.0/glib/gprimes.h: +/usr/include/glib-2.0/glib/gqsort.h: +/usr/include/glib-2.0/glib/gqueue.h: +/usr/include/glib-2.0/glib/grand.h: +/usr/include/glib-2.0/glib/gregex.h: +/usr/include/glib-2.0/glib/gscanner.h: +/usr/include/glib-2.0/glib/gsequence.h: +/usr/include/glib-2.0/glib/gshell.h: +/usr/include/glib-2.0/glib/gslice.h: +/usr/include/glib-2.0/glib/gspawn.h: +/usr/include/glib-2.0/glib/gstrfuncs.h: +/usr/include/glib-2.0/glib/gstringchunk.h: +/usr/include/glib-2.0/glib/gtestutils.h: +/usr/include/glib-2.0/glib/gthreadpool.h: +/usr/include/glib-2.0/glib/gtimer.h: +/usr/include/glib-2.0/glib/gtrashstack.h: +/usr/include/glib-2.0/glib/gtree.h: +/usr/include/glib-2.0/glib/gurifuncs.h: +/usr/include/glib-2.0/glib/gvarianttype.h: +/usr/include/glib-2.0/glib/gvariant.h: +/usr/include/glib-2.0/glib/gversion.h: +/usr/include/glib-2.0/glib/deprecated/gallocator.h: +/usr/include/glib-2.0/glib/deprecated/gcache.h: +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: +/usr/include/glib-2.0/glib/deprecated/gmain.h: +/usr/include/glib-2.0/glib/deprecated/grel.h: +/usr/include/glib-2.0/glib/deprecated/gthread.h: +/usr/include/pango-1.0/pango/pango-types.h: +/usr/include/glib-2.0/glib-object.h: +/usr/include/glib-2.0/gobject/gbinding.h: +/usr/include/glib-2.0/gobject/gobject.h: +/usr/include/glib-2.0/gobject/gtype.h: +/usr/include/glib-2.0/gobject/gvalue.h: +/usr/include/glib-2.0/gobject/gparam.h: +/usr/include/glib-2.0/gobject/gclosure.h: +/usr/include/glib-2.0/gobject/gsignal.h: +/usr/include/glib-2.0/gobject/gmarshal.h: +/usr/include/glib-2.0/gobject/gboxed.h: +/usr/include/glib-2.0/gobject/glib-types.h: +/usr/include/glib-2.0/gobject/genums.h: +/usr/include/glib-2.0/gobject/gparamspecs.h: +/usr/include/glib-2.0/gobject/gsourceclosure.h: +/usr/include/glib-2.0/gobject/gtypemodule.h: +/usr/include/glib-2.0/gobject/gtypeplugin.h: +/usr/include/glib-2.0/gobject/gvaluearray.h: +/usr/include/glib-2.0/gobject/gvaluetypes.h: +/usr/include/pango-1.0/pango/pango-gravity.h: +/usr/include/pango-1.0/pango/pango-matrix.h: +/usr/include/pango-1.0/pango/pango-script.h: +/usr/include/pango-1.0/pango/pango-language.h: +/usr/include/pango-1.0/pango/pango-bidi-type.h: +/usr/include/pango-1.0/pango/pango-break.h: +/usr/include/pango-1.0/pango/pango-item.h: +/usr/include/pango-1.0/pango/pango-context.h: +/usr/include/pango-1.0/pango/pango-fontmap.h: +/usr/include/pango-1.0/pango/pango-fontset.h: +/usr/include/pango-1.0/pango/pango-engine.h: +/usr/include/pango-1.0/pango/pango-glyph.h: +/usr/include/pango-1.0/pango/pango-enum-types.h: +/usr/include/pango-1.0/pango/pango-features.h: +/usr/include/pango-1.0/pango/pango-glyph-item.h: +/usr/include/pango-1.0/pango/pango-layout.h: +/usr/include/pango-1.0/pango/pango-tabs.h: +/usr/include/pango-1.0/pango/pango-renderer.h: +/usr/include/pango-1.0/pango/pango-utils.h: +/usr/include/cairo/cairo.h: +/usr/include/cairo/cairo-version.h: +/usr/include/cairo/cairo-features.h: +/usr/include/cairo/cairo-deprecated.h: +../../nan/nan.h: +/root/.node-gyp/7.10.1/include/node/uv.h: +/root/.node-gyp/7.10.1/include/node/uv-errno.h: +/root/.node-gyp/7.10.1/include/node/uv-version.h: +/root/.node-gyp/7.10.1/include/node/uv-unix.h: +/root/.node-gyp/7.10.1/include/node/uv-threadpool.h: +/root/.node-gyp/7.10.1/include/node/uv-linux.h: +/root/.node-gyp/7.10.1/include/node/node_buffer.h: +/root/.node-gyp/7.10.1/include/node/node.h: +../../nan/nan_callbacks.h: +../../nan/nan_callbacks_12_inl.h: +../../nan/nan_maybe_43_inl.h: +../../nan/nan_converters.h: +../../nan/nan_converters_43_inl.h: +../../nan/nan_new.h: +../../nan/nan_implementation_12_inl.h: +../../nan/nan_persistent_12_inl.h: +../../nan/nan_weak.h: +../../nan/nan_object_wrap.h: +../../nan/nan_private.h: +../../nan/nan_typedarray_contents.h: +../../nan/nan_json.h: +../src/Image.h: +../src/CanvasPattern.h: diff --git a/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasRenderingContext2d.o.d b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasRenderingContext2d.o.d new file mode 100644 index 00000000..96467292 --- /dev/null +++ b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/CanvasRenderingContext2d.o.d @@ -0,0 +1,298 @@ +cmd_Release/obj.target/canvas/src/CanvasRenderingContext2d.o := g++ '-DNODE_GYP_MODULE_NAME=canvas' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DHAVE_JPEG' '-DHAVE_GIF' '-DBUILDING_NODE_EXTENSION' -I/root/.node-gyp/7.10.1/include/node -I/root/.node-gyp/7.10.1/src -I/root/.node-gyp/7.10.1/deps/uv/include -I/root/.node-gyp/7.10.1/deps/v8/include -I../../nan -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pango-1.0 -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF ./Release/.deps/Release/obj.target/canvas/src/CanvasRenderingContext2d.o.d.raw -c -o Release/obj.target/canvas/src/CanvasRenderingContext2d.o ../src/CanvasRenderingContext2d.cc +Release/obj.target/canvas/src/CanvasRenderingContext2d.o: \ + ../src/CanvasRenderingContext2d.cc ../src/Canvas.h \ + /root/.node-gyp/7.10.1/include/node/node.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/v8-version.h \ + /root/.node-gyp/7.10.1/include/node/v8config.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/node_object_wrap.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/glib-2.0/glib.h /usr/include/glib-2.0/glib/galloca.h \ + /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/include/glib-2.0/glib/gversionmacros.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gbacktrace.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h ../../nan/nan.h \ + /root/.node-gyp/7.10.1/include/node/uv.h \ + /root/.node-gyp/7.10.1/include/node/uv-errno.h \ + /root/.node-gyp/7.10.1/include/node/uv-version.h \ + /root/.node-gyp/7.10.1/include/node/uv-unix.h \ + /root/.node-gyp/7.10.1/include/node/uv-threadpool.h \ + /root/.node-gyp/7.10.1/include/node/uv-linux.h \ + /root/.node-gyp/7.10.1/include/node/node_buffer.h \ + /root/.node-gyp/7.10.1/include/node/node.h ../../nan/nan_callbacks.h \ + ../../nan/nan_callbacks_12_inl.h ../../nan/nan_maybe_43_inl.h \ + ../../nan/nan_converters.h ../../nan/nan_converters_43_inl.h \ + ../../nan/nan_new.h ../../nan/nan_implementation_12_inl.h \ + ../../nan/nan_persistent_12_inl.h ../../nan/nan_weak.h \ + ../../nan/nan_object_wrap.h ../../nan/nan_private.h \ + ../../nan/nan_typedarray_contents.h ../../nan/nan_json.h ../src/Point.h \ + ../src/Image.h ../src/ImageData.h ../src/CanvasRenderingContext2d.h \ + ../src/color.h ../src/CanvasGradient.h ../src/CanvasPattern.h +../src/CanvasRenderingContext2d.cc: +../src/Canvas.h: +/root/.node-gyp/7.10.1/include/node/node.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/v8-version.h: +/root/.node-gyp/7.10.1/include/node/v8config.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/node_object_wrap.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/usr/include/pango-1.0/pango/pangocairo.h: +/usr/include/pango-1.0/pango/pango.h: +/usr/include/pango-1.0/pango/pango-attributes.h: +/usr/include/pango-1.0/pango/pango-font.h: +/usr/include/pango-1.0/pango/pango-coverage.h: +/usr/include/glib-2.0/glib.h: +/usr/include/glib-2.0/glib/galloca.h: +/usr/include/glib-2.0/glib/gtypes.h: +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: +/usr/include/glib-2.0/glib/gmacros.h: +/usr/include/glib-2.0/glib/gversionmacros.h: +/usr/include/glib-2.0/glib/garray.h: +/usr/include/glib-2.0/glib/gasyncqueue.h: +/usr/include/glib-2.0/glib/gthread.h: +/usr/include/glib-2.0/glib/gatomic.h: +/usr/include/glib-2.0/glib/gerror.h: +/usr/include/glib-2.0/glib/gquark.h: +/usr/include/glib-2.0/glib/gbacktrace.h: +/usr/include/glib-2.0/glib/gbase64.h: +/usr/include/glib-2.0/glib/gbitlock.h: +/usr/include/glib-2.0/glib/gbookmarkfile.h: +/usr/include/glib-2.0/glib/gbytes.h: +/usr/include/glib-2.0/glib/gcharset.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/gconvert.h: +/usr/include/glib-2.0/glib/gdataset.h: +/usr/include/glib-2.0/glib/gdate.h: +/usr/include/glib-2.0/glib/gdatetime.h: +/usr/include/glib-2.0/glib/gtimezone.h: +/usr/include/glib-2.0/glib/gdir.h: +/usr/include/glib-2.0/glib/genviron.h: +/usr/include/glib-2.0/glib/gfileutils.h: +/usr/include/glib-2.0/glib/ggettext.h: +/usr/include/glib-2.0/glib/ghash.h: +/usr/include/glib-2.0/glib/glist.h: +/usr/include/glib-2.0/glib/gmem.h: +/usr/include/glib-2.0/glib/gnode.h: +/usr/include/glib-2.0/glib/ghmac.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/ghook.h: +/usr/include/glib-2.0/glib/ghostutils.h: +/usr/include/glib-2.0/glib/giochannel.h: +/usr/include/glib-2.0/glib/gmain.h: +/usr/include/glib-2.0/glib/gpoll.h: +/usr/include/glib-2.0/glib/gslist.h: +/usr/include/glib-2.0/glib/gstring.h: +/usr/include/glib-2.0/glib/gunicode.h: +/usr/include/glib-2.0/glib/gutils.h: +/usr/include/glib-2.0/glib/gkeyfile.h: +/usr/include/glib-2.0/glib/gmappedfile.h: +/usr/include/glib-2.0/glib/gmarkup.h: +/usr/include/glib-2.0/glib/gmessages.h: +/usr/include/glib-2.0/glib/goption.h: +/usr/include/glib-2.0/glib/gpattern.h: +/usr/include/glib-2.0/glib/gprimes.h: +/usr/include/glib-2.0/glib/gqsort.h: +/usr/include/glib-2.0/glib/gqueue.h: +/usr/include/glib-2.0/glib/grand.h: +/usr/include/glib-2.0/glib/gregex.h: +/usr/include/glib-2.0/glib/gscanner.h: +/usr/include/glib-2.0/glib/gsequence.h: +/usr/include/glib-2.0/glib/gshell.h: +/usr/include/glib-2.0/glib/gslice.h: +/usr/include/glib-2.0/glib/gspawn.h: +/usr/include/glib-2.0/glib/gstrfuncs.h: +/usr/include/glib-2.0/glib/gstringchunk.h: +/usr/include/glib-2.0/glib/gtestutils.h: +/usr/include/glib-2.0/glib/gthreadpool.h: +/usr/include/glib-2.0/glib/gtimer.h: +/usr/include/glib-2.0/glib/gtrashstack.h: +/usr/include/glib-2.0/glib/gtree.h: +/usr/include/glib-2.0/glib/gurifuncs.h: +/usr/include/glib-2.0/glib/gvarianttype.h: +/usr/include/glib-2.0/glib/gvariant.h: +/usr/include/glib-2.0/glib/gversion.h: +/usr/include/glib-2.0/glib/deprecated/gallocator.h: +/usr/include/glib-2.0/glib/deprecated/gcache.h: +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: +/usr/include/glib-2.0/glib/deprecated/gmain.h: +/usr/include/glib-2.0/glib/deprecated/grel.h: +/usr/include/glib-2.0/glib/deprecated/gthread.h: +/usr/include/pango-1.0/pango/pango-types.h: +/usr/include/glib-2.0/glib-object.h: +/usr/include/glib-2.0/gobject/gbinding.h: +/usr/include/glib-2.0/gobject/gobject.h: +/usr/include/glib-2.0/gobject/gtype.h: +/usr/include/glib-2.0/gobject/gvalue.h: +/usr/include/glib-2.0/gobject/gparam.h: +/usr/include/glib-2.0/gobject/gclosure.h: +/usr/include/glib-2.0/gobject/gsignal.h: +/usr/include/glib-2.0/gobject/gmarshal.h: +/usr/include/glib-2.0/gobject/gboxed.h: +/usr/include/glib-2.0/gobject/glib-types.h: +/usr/include/glib-2.0/gobject/genums.h: +/usr/include/glib-2.0/gobject/gparamspecs.h: +/usr/include/glib-2.0/gobject/gsourceclosure.h: +/usr/include/glib-2.0/gobject/gtypemodule.h: +/usr/include/glib-2.0/gobject/gtypeplugin.h: +/usr/include/glib-2.0/gobject/gvaluearray.h: +/usr/include/glib-2.0/gobject/gvaluetypes.h: +/usr/include/pango-1.0/pango/pango-gravity.h: +/usr/include/pango-1.0/pango/pango-matrix.h: +/usr/include/pango-1.0/pango/pango-script.h: +/usr/include/pango-1.0/pango/pango-language.h: +/usr/include/pango-1.0/pango/pango-bidi-type.h: +/usr/include/pango-1.0/pango/pango-break.h: +/usr/include/pango-1.0/pango/pango-item.h: +/usr/include/pango-1.0/pango/pango-context.h: +/usr/include/pango-1.0/pango/pango-fontmap.h: +/usr/include/pango-1.0/pango/pango-fontset.h: +/usr/include/pango-1.0/pango/pango-engine.h: +/usr/include/pango-1.0/pango/pango-glyph.h: +/usr/include/pango-1.0/pango/pango-enum-types.h: +/usr/include/pango-1.0/pango/pango-features.h: +/usr/include/pango-1.0/pango/pango-glyph-item.h: +/usr/include/pango-1.0/pango/pango-layout.h: +/usr/include/pango-1.0/pango/pango-tabs.h: +/usr/include/pango-1.0/pango/pango-renderer.h: +/usr/include/pango-1.0/pango/pango-utils.h: +/usr/include/cairo/cairo.h: +/usr/include/cairo/cairo-version.h: +/usr/include/cairo/cairo-features.h: +/usr/include/cairo/cairo-deprecated.h: +../../nan/nan.h: +/root/.node-gyp/7.10.1/include/node/uv.h: +/root/.node-gyp/7.10.1/include/node/uv-errno.h: +/root/.node-gyp/7.10.1/include/node/uv-version.h: +/root/.node-gyp/7.10.1/include/node/uv-unix.h: +/root/.node-gyp/7.10.1/include/node/uv-threadpool.h: +/root/.node-gyp/7.10.1/include/node/uv-linux.h: +/root/.node-gyp/7.10.1/include/node/node_buffer.h: +/root/.node-gyp/7.10.1/include/node/node.h: +../../nan/nan_callbacks.h: +../../nan/nan_callbacks_12_inl.h: +../../nan/nan_maybe_43_inl.h: +../../nan/nan_converters.h: +../../nan/nan_converters_43_inl.h: +../../nan/nan_new.h: +../../nan/nan_implementation_12_inl.h: +../../nan/nan_persistent_12_inl.h: +../../nan/nan_weak.h: +../../nan/nan_object_wrap.h: +../../nan/nan_private.h: +../../nan/nan_typedarray_contents.h: +../../nan/nan_json.h: +../src/Point.h: +../src/Image.h: +../src/ImageData.h: +../src/CanvasRenderingContext2d.h: +../src/color.h: +../src/CanvasGradient.h: +../src/CanvasPattern.h: diff --git a/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/Image.o.d b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/Image.o.d new file mode 100644 index 00000000..f2411c86 --- /dev/null +++ b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/Image.o.d @@ -0,0 +1,289 @@ +cmd_Release/obj.target/canvas/src/Image.o := g++ '-DNODE_GYP_MODULE_NAME=canvas' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DHAVE_JPEG' '-DHAVE_GIF' '-DBUILDING_NODE_EXTENSION' -I/root/.node-gyp/7.10.1/include/node -I/root/.node-gyp/7.10.1/src -I/root/.node-gyp/7.10.1/deps/uv/include -I/root/.node-gyp/7.10.1/deps/v8/include -I../../nan -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pango-1.0 -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF ./Release/.deps/Release/obj.target/canvas/src/Image.o.d.raw -c -o Release/obj.target/canvas/src/Image.o ../src/Image.cc +Release/obj.target/canvas/src/Image.o: ../src/Image.cc ../src/Canvas.h \ + /root/.node-gyp/7.10.1/include/node/node.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/v8-version.h \ + /root/.node-gyp/7.10.1/include/node/v8config.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/node_object_wrap.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/glib-2.0/glib.h /usr/include/glib-2.0/glib/galloca.h \ + /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/include/glib-2.0/glib/gversionmacros.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gbacktrace.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h ../../nan/nan.h \ + /root/.node-gyp/7.10.1/include/node/uv.h \ + /root/.node-gyp/7.10.1/include/node/uv-errno.h \ + /root/.node-gyp/7.10.1/include/node/uv-version.h \ + /root/.node-gyp/7.10.1/include/node/uv-unix.h \ + /root/.node-gyp/7.10.1/include/node/uv-threadpool.h \ + /root/.node-gyp/7.10.1/include/node/uv-linux.h \ + /root/.node-gyp/7.10.1/include/node/node_buffer.h \ + /root/.node-gyp/7.10.1/include/node/node.h ../../nan/nan_callbacks.h \ + ../../nan/nan_callbacks_12_inl.h ../../nan/nan_maybe_43_inl.h \ + ../../nan/nan_converters.h ../../nan/nan_converters_43_inl.h \ + ../../nan/nan_new.h ../../nan/nan_implementation_12_inl.h \ + ../../nan/nan_persistent_12_inl.h ../../nan/nan_weak.h \ + ../../nan/nan_object_wrap.h ../../nan/nan_private.h \ + ../../nan/nan_typedarray_contents.h ../../nan/nan_json.h ../src/Image.h +../src/Image.cc: +../src/Canvas.h: +/root/.node-gyp/7.10.1/include/node/node.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/v8-version.h: +/root/.node-gyp/7.10.1/include/node/v8config.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/node_object_wrap.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/usr/include/pango-1.0/pango/pangocairo.h: +/usr/include/pango-1.0/pango/pango.h: +/usr/include/pango-1.0/pango/pango-attributes.h: +/usr/include/pango-1.0/pango/pango-font.h: +/usr/include/pango-1.0/pango/pango-coverage.h: +/usr/include/glib-2.0/glib.h: +/usr/include/glib-2.0/glib/galloca.h: +/usr/include/glib-2.0/glib/gtypes.h: +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: +/usr/include/glib-2.0/glib/gmacros.h: +/usr/include/glib-2.0/glib/gversionmacros.h: +/usr/include/glib-2.0/glib/garray.h: +/usr/include/glib-2.0/glib/gasyncqueue.h: +/usr/include/glib-2.0/glib/gthread.h: +/usr/include/glib-2.0/glib/gatomic.h: +/usr/include/glib-2.0/glib/gerror.h: +/usr/include/glib-2.0/glib/gquark.h: +/usr/include/glib-2.0/glib/gbacktrace.h: +/usr/include/glib-2.0/glib/gbase64.h: +/usr/include/glib-2.0/glib/gbitlock.h: +/usr/include/glib-2.0/glib/gbookmarkfile.h: +/usr/include/glib-2.0/glib/gbytes.h: +/usr/include/glib-2.0/glib/gcharset.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/gconvert.h: +/usr/include/glib-2.0/glib/gdataset.h: +/usr/include/glib-2.0/glib/gdate.h: +/usr/include/glib-2.0/glib/gdatetime.h: +/usr/include/glib-2.0/glib/gtimezone.h: +/usr/include/glib-2.0/glib/gdir.h: +/usr/include/glib-2.0/glib/genviron.h: +/usr/include/glib-2.0/glib/gfileutils.h: +/usr/include/glib-2.0/glib/ggettext.h: +/usr/include/glib-2.0/glib/ghash.h: +/usr/include/glib-2.0/glib/glist.h: +/usr/include/glib-2.0/glib/gmem.h: +/usr/include/glib-2.0/glib/gnode.h: +/usr/include/glib-2.0/glib/ghmac.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/ghook.h: +/usr/include/glib-2.0/glib/ghostutils.h: +/usr/include/glib-2.0/glib/giochannel.h: +/usr/include/glib-2.0/glib/gmain.h: +/usr/include/glib-2.0/glib/gpoll.h: +/usr/include/glib-2.0/glib/gslist.h: +/usr/include/glib-2.0/glib/gstring.h: +/usr/include/glib-2.0/glib/gunicode.h: +/usr/include/glib-2.0/glib/gutils.h: +/usr/include/glib-2.0/glib/gkeyfile.h: +/usr/include/glib-2.0/glib/gmappedfile.h: +/usr/include/glib-2.0/glib/gmarkup.h: +/usr/include/glib-2.0/glib/gmessages.h: +/usr/include/glib-2.0/glib/goption.h: +/usr/include/glib-2.0/glib/gpattern.h: +/usr/include/glib-2.0/glib/gprimes.h: +/usr/include/glib-2.0/glib/gqsort.h: +/usr/include/glib-2.0/glib/gqueue.h: +/usr/include/glib-2.0/glib/grand.h: +/usr/include/glib-2.0/glib/gregex.h: +/usr/include/glib-2.0/glib/gscanner.h: +/usr/include/glib-2.0/glib/gsequence.h: +/usr/include/glib-2.0/glib/gshell.h: +/usr/include/glib-2.0/glib/gslice.h: +/usr/include/glib-2.0/glib/gspawn.h: +/usr/include/glib-2.0/glib/gstrfuncs.h: +/usr/include/glib-2.0/glib/gstringchunk.h: +/usr/include/glib-2.0/glib/gtestutils.h: +/usr/include/glib-2.0/glib/gthreadpool.h: +/usr/include/glib-2.0/glib/gtimer.h: +/usr/include/glib-2.0/glib/gtrashstack.h: +/usr/include/glib-2.0/glib/gtree.h: +/usr/include/glib-2.0/glib/gurifuncs.h: +/usr/include/glib-2.0/glib/gvarianttype.h: +/usr/include/glib-2.0/glib/gvariant.h: +/usr/include/glib-2.0/glib/gversion.h: +/usr/include/glib-2.0/glib/deprecated/gallocator.h: +/usr/include/glib-2.0/glib/deprecated/gcache.h: +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: +/usr/include/glib-2.0/glib/deprecated/gmain.h: +/usr/include/glib-2.0/glib/deprecated/grel.h: +/usr/include/glib-2.0/glib/deprecated/gthread.h: +/usr/include/pango-1.0/pango/pango-types.h: +/usr/include/glib-2.0/glib-object.h: +/usr/include/glib-2.0/gobject/gbinding.h: +/usr/include/glib-2.0/gobject/gobject.h: +/usr/include/glib-2.0/gobject/gtype.h: +/usr/include/glib-2.0/gobject/gvalue.h: +/usr/include/glib-2.0/gobject/gparam.h: +/usr/include/glib-2.0/gobject/gclosure.h: +/usr/include/glib-2.0/gobject/gsignal.h: +/usr/include/glib-2.0/gobject/gmarshal.h: +/usr/include/glib-2.0/gobject/gboxed.h: +/usr/include/glib-2.0/gobject/glib-types.h: +/usr/include/glib-2.0/gobject/genums.h: +/usr/include/glib-2.0/gobject/gparamspecs.h: +/usr/include/glib-2.0/gobject/gsourceclosure.h: +/usr/include/glib-2.0/gobject/gtypemodule.h: +/usr/include/glib-2.0/gobject/gtypeplugin.h: +/usr/include/glib-2.0/gobject/gvaluearray.h: +/usr/include/glib-2.0/gobject/gvaluetypes.h: +/usr/include/pango-1.0/pango/pango-gravity.h: +/usr/include/pango-1.0/pango/pango-matrix.h: +/usr/include/pango-1.0/pango/pango-script.h: +/usr/include/pango-1.0/pango/pango-language.h: +/usr/include/pango-1.0/pango/pango-bidi-type.h: +/usr/include/pango-1.0/pango/pango-break.h: +/usr/include/pango-1.0/pango/pango-item.h: +/usr/include/pango-1.0/pango/pango-context.h: +/usr/include/pango-1.0/pango/pango-fontmap.h: +/usr/include/pango-1.0/pango/pango-fontset.h: +/usr/include/pango-1.0/pango/pango-engine.h: +/usr/include/pango-1.0/pango/pango-glyph.h: +/usr/include/pango-1.0/pango/pango-enum-types.h: +/usr/include/pango-1.0/pango/pango-features.h: +/usr/include/pango-1.0/pango/pango-glyph-item.h: +/usr/include/pango-1.0/pango/pango-layout.h: +/usr/include/pango-1.0/pango/pango-tabs.h: +/usr/include/pango-1.0/pango/pango-renderer.h: +/usr/include/pango-1.0/pango/pango-utils.h: +/usr/include/cairo/cairo.h: +/usr/include/cairo/cairo-version.h: +/usr/include/cairo/cairo-features.h: +/usr/include/cairo/cairo-deprecated.h: +../../nan/nan.h: +/root/.node-gyp/7.10.1/include/node/uv.h: +/root/.node-gyp/7.10.1/include/node/uv-errno.h: +/root/.node-gyp/7.10.1/include/node/uv-version.h: +/root/.node-gyp/7.10.1/include/node/uv-unix.h: +/root/.node-gyp/7.10.1/include/node/uv-threadpool.h: +/root/.node-gyp/7.10.1/include/node/uv-linux.h: +/root/.node-gyp/7.10.1/include/node/node_buffer.h: +/root/.node-gyp/7.10.1/include/node/node.h: +../../nan/nan_callbacks.h: +../../nan/nan_callbacks_12_inl.h: +../../nan/nan_maybe_43_inl.h: +../../nan/nan_converters.h: +../../nan/nan_converters_43_inl.h: +../../nan/nan_new.h: +../../nan/nan_implementation_12_inl.h: +../../nan/nan_persistent_12_inl.h: +../../nan/nan_weak.h: +../../nan/nan_object_wrap.h: +../../nan/nan_private.h: +../../nan/nan_typedarray_contents.h: +../../nan/nan_json.h: +../src/Image.h: diff --git a/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/ImageData.o.d b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/ImageData.o.d new file mode 100644 index 00000000..e4c8af24 --- /dev/null +++ b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/ImageData.o.d @@ -0,0 +1,290 @@ +cmd_Release/obj.target/canvas/src/ImageData.o := g++ '-DNODE_GYP_MODULE_NAME=canvas' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DHAVE_JPEG' '-DHAVE_GIF' '-DBUILDING_NODE_EXTENSION' -I/root/.node-gyp/7.10.1/include/node -I/root/.node-gyp/7.10.1/src -I/root/.node-gyp/7.10.1/deps/uv/include -I/root/.node-gyp/7.10.1/deps/v8/include -I../../nan -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pango-1.0 -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF ./Release/.deps/Release/obj.target/canvas/src/ImageData.o.d.raw -c -o Release/obj.target/canvas/src/ImageData.o ../src/ImageData.cc +Release/obj.target/canvas/src/ImageData.o: ../src/ImageData.cc \ + ../src/ImageData.h ../src/Canvas.h \ + /root/.node-gyp/7.10.1/include/node/node.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/v8-version.h \ + /root/.node-gyp/7.10.1/include/node/v8config.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/node_object_wrap.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/glib-2.0/glib.h /usr/include/glib-2.0/glib/galloca.h \ + /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/include/glib-2.0/glib/gversionmacros.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gbacktrace.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h ../../nan/nan.h \ + /root/.node-gyp/7.10.1/include/node/uv.h \ + /root/.node-gyp/7.10.1/include/node/uv-errno.h \ + /root/.node-gyp/7.10.1/include/node/uv-version.h \ + /root/.node-gyp/7.10.1/include/node/uv-unix.h \ + /root/.node-gyp/7.10.1/include/node/uv-threadpool.h \ + /root/.node-gyp/7.10.1/include/node/uv-linux.h \ + /root/.node-gyp/7.10.1/include/node/node_buffer.h \ + /root/.node-gyp/7.10.1/include/node/node.h ../../nan/nan_callbacks.h \ + ../../nan/nan_callbacks_12_inl.h ../../nan/nan_maybe_43_inl.h \ + ../../nan/nan_converters.h ../../nan/nan_converters_43_inl.h \ + ../../nan/nan_new.h ../../nan/nan_implementation_12_inl.h \ + ../../nan/nan_persistent_12_inl.h ../../nan/nan_weak.h \ + ../../nan/nan_object_wrap.h ../../nan/nan_private.h \ + ../../nan/nan_typedarray_contents.h ../../nan/nan_json.h +../src/ImageData.cc: +../src/ImageData.h: +../src/Canvas.h: +/root/.node-gyp/7.10.1/include/node/node.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/v8-version.h: +/root/.node-gyp/7.10.1/include/node/v8config.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/node_object_wrap.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/usr/include/pango-1.0/pango/pangocairo.h: +/usr/include/pango-1.0/pango/pango.h: +/usr/include/pango-1.0/pango/pango-attributes.h: +/usr/include/pango-1.0/pango/pango-font.h: +/usr/include/pango-1.0/pango/pango-coverage.h: +/usr/include/glib-2.0/glib.h: +/usr/include/glib-2.0/glib/galloca.h: +/usr/include/glib-2.0/glib/gtypes.h: +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: +/usr/include/glib-2.0/glib/gmacros.h: +/usr/include/glib-2.0/glib/gversionmacros.h: +/usr/include/glib-2.0/glib/garray.h: +/usr/include/glib-2.0/glib/gasyncqueue.h: +/usr/include/glib-2.0/glib/gthread.h: +/usr/include/glib-2.0/glib/gatomic.h: +/usr/include/glib-2.0/glib/gerror.h: +/usr/include/glib-2.0/glib/gquark.h: +/usr/include/glib-2.0/glib/gbacktrace.h: +/usr/include/glib-2.0/glib/gbase64.h: +/usr/include/glib-2.0/glib/gbitlock.h: +/usr/include/glib-2.0/glib/gbookmarkfile.h: +/usr/include/glib-2.0/glib/gbytes.h: +/usr/include/glib-2.0/glib/gcharset.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/gconvert.h: +/usr/include/glib-2.0/glib/gdataset.h: +/usr/include/glib-2.0/glib/gdate.h: +/usr/include/glib-2.0/glib/gdatetime.h: +/usr/include/glib-2.0/glib/gtimezone.h: +/usr/include/glib-2.0/glib/gdir.h: +/usr/include/glib-2.0/glib/genviron.h: +/usr/include/glib-2.0/glib/gfileutils.h: +/usr/include/glib-2.0/glib/ggettext.h: +/usr/include/glib-2.0/glib/ghash.h: +/usr/include/glib-2.0/glib/glist.h: +/usr/include/glib-2.0/glib/gmem.h: +/usr/include/glib-2.0/glib/gnode.h: +/usr/include/glib-2.0/glib/ghmac.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/ghook.h: +/usr/include/glib-2.0/glib/ghostutils.h: +/usr/include/glib-2.0/glib/giochannel.h: +/usr/include/glib-2.0/glib/gmain.h: +/usr/include/glib-2.0/glib/gpoll.h: +/usr/include/glib-2.0/glib/gslist.h: +/usr/include/glib-2.0/glib/gstring.h: +/usr/include/glib-2.0/glib/gunicode.h: +/usr/include/glib-2.0/glib/gutils.h: +/usr/include/glib-2.0/glib/gkeyfile.h: +/usr/include/glib-2.0/glib/gmappedfile.h: +/usr/include/glib-2.0/glib/gmarkup.h: +/usr/include/glib-2.0/glib/gmessages.h: +/usr/include/glib-2.0/glib/goption.h: +/usr/include/glib-2.0/glib/gpattern.h: +/usr/include/glib-2.0/glib/gprimes.h: +/usr/include/glib-2.0/glib/gqsort.h: +/usr/include/glib-2.0/glib/gqueue.h: +/usr/include/glib-2.0/glib/grand.h: +/usr/include/glib-2.0/glib/gregex.h: +/usr/include/glib-2.0/glib/gscanner.h: +/usr/include/glib-2.0/glib/gsequence.h: +/usr/include/glib-2.0/glib/gshell.h: +/usr/include/glib-2.0/glib/gslice.h: +/usr/include/glib-2.0/glib/gspawn.h: +/usr/include/glib-2.0/glib/gstrfuncs.h: +/usr/include/glib-2.0/glib/gstringchunk.h: +/usr/include/glib-2.0/glib/gtestutils.h: +/usr/include/glib-2.0/glib/gthreadpool.h: +/usr/include/glib-2.0/glib/gtimer.h: +/usr/include/glib-2.0/glib/gtrashstack.h: +/usr/include/glib-2.0/glib/gtree.h: +/usr/include/glib-2.0/glib/gurifuncs.h: +/usr/include/glib-2.0/glib/gvarianttype.h: +/usr/include/glib-2.0/glib/gvariant.h: +/usr/include/glib-2.0/glib/gversion.h: +/usr/include/glib-2.0/glib/deprecated/gallocator.h: +/usr/include/glib-2.0/glib/deprecated/gcache.h: +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: +/usr/include/glib-2.0/glib/deprecated/gmain.h: +/usr/include/glib-2.0/glib/deprecated/grel.h: +/usr/include/glib-2.0/glib/deprecated/gthread.h: +/usr/include/pango-1.0/pango/pango-types.h: +/usr/include/glib-2.0/glib-object.h: +/usr/include/glib-2.0/gobject/gbinding.h: +/usr/include/glib-2.0/gobject/gobject.h: +/usr/include/glib-2.0/gobject/gtype.h: +/usr/include/glib-2.0/gobject/gvalue.h: +/usr/include/glib-2.0/gobject/gparam.h: +/usr/include/glib-2.0/gobject/gclosure.h: +/usr/include/glib-2.0/gobject/gsignal.h: +/usr/include/glib-2.0/gobject/gmarshal.h: +/usr/include/glib-2.0/gobject/gboxed.h: +/usr/include/glib-2.0/gobject/glib-types.h: +/usr/include/glib-2.0/gobject/genums.h: +/usr/include/glib-2.0/gobject/gparamspecs.h: +/usr/include/glib-2.0/gobject/gsourceclosure.h: +/usr/include/glib-2.0/gobject/gtypemodule.h: +/usr/include/glib-2.0/gobject/gtypeplugin.h: +/usr/include/glib-2.0/gobject/gvaluearray.h: +/usr/include/glib-2.0/gobject/gvaluetypes.h: +/usr/include/pango-1.0/pango/pango-gravity.h: +/usr/include/pango-1.0/pango/pango-matrix.h: +/usr/include/pango-1.0/pango/pango-script.h: +/usr/include/pango-1.0/pango/pango-language.h: +/usr/include/pango-1.0/pango/pango-bidi-type.h: +/usr/include/pango-1.0/pango/pango-break.h: +/usr/include/pango-1.0/pango/pango-item.h: +/usr/include/pango-1.0/pango/pango-context.h: +/usr/include/pango-1.0/pango/pango-fontmap.h: +/usr/include/pango-1.0/pango/pango-fontset.h: +/usr/include/pango-1.0/pango/pango-engine.h: +/usr/include/pango-1.0/pango/pango-glyph.h: +/usr/include/pango-1.0/pango/pango-enum-types.h: +/usr/include/pango-1.0/pango/pango-features.h: +/usr/include/pango-1.0/pango/pango-glyph-item.h: +/usr/include/pango-1.0/pango/pango-layout.h: +/usr/include/pango-1.0/pango/pango-tabs.h: +/usr/include/pango-1.0/pango/pango-renderer.h: +/usr/include/pango-1.0/pango/pango-utils.h: +/usr/include/cairo/cairo.h: +/usr/include/cairo/cairo-version.h: +/usr/include/cairo/cairo-features.h: +/usr/include/cairo/cairo-deprecated.h: +../../nan/nan.h: +/root/.node-gyp/7.10.1/include/node/uv.h: +/root/.node-gyp/7.10.1/include/node/uv-errno.h: +/root/.node-gyp/7.10.1/include/node/uv-version.h: +/root/.node-gyp/7.10.1/include/node/uv-unix.h: +/root/.node-gyp/7.10.1/include/node/uv-threadpool.h: +/root/.node-gyp/7.10.1/include/node/uv-linux.h: +/root/.node-gyp/7.10.1/include/node/node_buffer.h: +/root/.node-gyp/7.10.1/include/node/node.h: +../../nan/nan_callbacks.h: +../../nan/nan_callbacks_12_inl.h: +../../nan/nan_maybe_43_inl.h: +../../nan/nan_converters.h: +../../nan/nan_converters_43_inl.h: +../../nan/nan_new.h: +../../nan/nan_implementation_12_inl.h: +../../nan/nan_persistent_12_inl.h: +../../nan/nan_weak.h: +../../nan/nan_object_wrap.h: +../../nan/nan_private.h: +../../nan/nan_typedarray_contents.h: +../../nan/nan_json.h: diff --git a/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/color.o.d b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/color.o.d new file mode 100644 index 00000000..a7d89d13 --- /dev/null +++ b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/color.o.d @@ -0,0 +1,4 @@ +cmd_Release/obj.target/canvas/src/color.o := g++ '-DNODE_GYP_MODULE_NAME=canvas' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DHAVE_JPEG' '-DHAVE_GIF' '-DBUILDING_NODE_EXTENSION' -I/root/.node-gyp/7.10.1/include/node -I/root/.node-gyp/7.10.1/src -I/root/.node-gyp/7.10.1/deps/uv/include -I/root/.node-gyp/7.10.1/deps/v8/include -I../../nan -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pango-1.0 -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF ./Release/.deps/Release/obj.target/canvas/src/color.o.d.raw -c -o Release/obj.target/canvas/src/color.o ../src/color.cc +Release/obj.target/canvas/src/color.o: ../src/color.cc ../src/color.h +../src/color.cc: +../src/color.h: diff --git a/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/init.o.d b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/init.o.d new file mode 100644 index 00000000..779ef5ed --- /dev/null +++ b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/init.o.d @@ -0,0 +1,317 @@ +cmd_Release/obj.target/canvas/src/init.o := g++ '-DNODE_GYP_MODULE_NAME=canvas' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DHAVE_JPEG' '-DHAVE_GIF' '-DBUILDING_NODE_EXTENSION' -I/root/.node-gyp/7.10.1/include/node -I/root/.node-gyp/7.10.1/src -I/root/.node-gyp/7.10.1/deps/uv/include -I/root/.node-gyp/7.10.1/deps/v8/include -I../../nan -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pango-1.0 -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF ./Release/.deps/Release/obj.target/canvas/src/init.o.d.raw -c -o Release/obj.target/canvas/src/init.o ../src/init.cc +Release/obj.target/canvas/src/init.o: ../src/init.cc \ + /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/glib-2.0/glib.h /usr/include/glib-2.0/glib/galloca.h \ + /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/include/glib-2.0/glib/gversionmacros.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gbacktrace.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h ../src/Canvas.h \ + /root/.node-gyp/7.10.1/include/node/node.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/v8-version.h \ + /root/.node-gyp/7.10.1/include/node/v8config.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /root/.node-gyp/7.10.1/include/node/v8.h \ + /root/.node-gyp/7.10.1/include/node/node_object_wrap.h \ + /root/.node-gyp/7.10.1/include/node/node_version.h \ + /usr/include/pango-1.0/pango/pangocairo.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h ../../nan/nan.h \ + /root/.node-gyp/7.10.1/include/node/uv.h \ + /root/.node-gyp/7.10.1/include/node/uv-errno.h \ + /root/.node-gyp/7.10.1/include/node/uv-version.h \ + /root/.node-gyp/7.10.1/include/node/uv-unix.h \ + /root/.node-gyp/7.10.1/include/node/uv-threadpool.h \ + /root/.node-gyp/7.10.1/include/node/uv-linux.h \ + /root/.node-gyp/7.10.1/include/node/node_buffer.h \ + /root/.node-gyp/7.10.1/include/node/node.h ../../nan/nan_callbacks.h \ + ../../nan/nan_callbacks_12_inl.h ../../nan/nan_maybe_43_inl.h \ + ../../nan/nan_converters.h ../../nan/nan_converters_43_inl.h \ + ../../nan/nan_new.h ../../nan/nan_implementation_12_inl.h \ + ../../nan/nan_persistent_12_inl.h ../../nan/nan_weak.h \ + ../../nan/nan_object_wrap.h ../../nan/nan_private.h \ + ../../nan/nan_typedarray_contents.h ../../nan/nan_json.h ../src/Image.h \ + ../src/ImageData.h ../src/CanvasGradient.h ../src/CanvasPattern.h \ + ../src/CanvasRenderingContext2d.h ../src/color.h \ + /usr/include/freetype2/ft2build.h \ + /usr/include/freetype2/config/ftheader.h \ + /usr/include/freetype2/freetype.h \ + /usr/include/freetype2/config/ftconfig.h \ + /usr/include/freetype2/config/ftoption.h \ + /usr/include/freetype2/config/ftstdlib.h \ + /usr/include/freetype2/fttypes.h /usr/include/freetype2/ftsystem.h \ + /usr/include/freetype2/ftimage.h /usr/include/freetype2/fterrors.h \ + /usr/include/freetype2/ftmoderr.h /usr/include/freetype2/fterrdef.h +../src/init.cc: +/usr/include/pango-1.0/pango/pango.h: +/usr/include/pango-1.0/pango/pango-attributes.h: +/usr/include/pango-1.0/pango/pango-font.h: +/usr/include/pango-1.0/pango/pango-coverage.h: +/usr/include/glib-2.0/glib.h: +/usr/include/glib-2.0/glib/galloca.h: +/usr/include/glib-2.0/glib/gtypes.h: +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: +/usr/include/glib-2.0/glib/gmacros.h: +/usr/include/glib-2.0/glib/gversionmacros.h: +/usr/include/glib-2.0/glib/garray.h: +/usr/include/glib-2.0/glib/gasyncqueue.h: +/usr/include/glib-2.0/glib/gthread.h: +/usr/include/glib-2.0/glib/gatomic.h: +/usr/include/glib-2.0/glib/gerror.h: +/usr/include/glib-2.0/glib/gquark.h: +/usr/include/glib-2.0/glib/gbacktrace.h: +/usr/include/glib-2.0/glib/gbase64.h: +/usr/include/glib-2.0/glib/gbitlock.h: +/usr/include/glib-2.0/glib/gbookmarkfile.h: +/usr/include/glib-2.0/glib/gbytes.h: +/usr/include/glib-2.0/glib/gcharset.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/gconvert.h: +/usr/include/glib-2.0/glib/gdataset.h: +/usr/include/glib-2.0/glib/gdate.h: +/usr/include/glib-2.0/glib/gdatetime.h: +/usr/include/glib-2.0/glib/gtimezone.h: +/usr/include/glib-2.0/glib/gdir.h: +/usr/include/glib-2.0/glib/genviron.h: +/usr/include/glib-2.0/glib/gfileutils.h: +/usr/include/glib-2.0/glib/ggettext.h: +/usr/include/glib-2.0/glib/ghash.h: +/usr/include/glib-2.0/glib/glist.h: +/usr/include/glib-2.0/glib/gmem.h: +/usr/include/glib-2.0/glib/gnode.h: +/usr/include/glib-2.0/glib/ghmac.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/ghook.h: +/usr/include/glib-2.0/glib/ghostutils.h: +/usr/include/glib-2.0/glib/giochannel.h: +/usr/include/glib-2.0/glib/gmain.h: +/usr/include/glib-2.0/glib/gpoll.h: +/usr/include/glib-2.0/glib/gslist.h: +/usr/include/glib-2.0/glib/gstring.h: +/usr/include/glib-2.0/glib/gunicode.h: +/usr/include/glib-2.0/glib/gutils.h: +/usr/include/glib-2.0/glib/gkeyfile.h: +/usr/include/glib-2.0/glib/gmappedfile.h: +/usr/include/glib-2.0/glib/gmarkup.h: +/usr/include/glib-2.0/glib/gmessages.h: +/usr/include/glib-2.0/glib/goption.h: +/usr/include/glib-2.0/glib/gpattern.h: +/usr/include/glib-2.0/glib/gprimes.h: +/usr/include/glib-2.0/glib/gqsort.h: +/usr/include/glib-2.0/glib/gqueue.h: +/usr/include/glib-2.0/glib/grand.h: +/usr/include/glib-2.0/glib/gregex.h: +/usr/include/glib-2.0/glib/gscanner.h: +/usr/include/glib-2.0/glib/gsequence.h: +/usr/include/glib-2.0/glib/gshell.h: +/usr/include/glib-2.0/glib/gslice.h: +/usr/include/glib-2.0/glib/gspawn.h: +/usr/include/glib-2.0/glib/gstrfuncs.h: +/usr/include/glib-2.0/glib/gstringchunk.h: +/usr/include/glib-2.0/glib/gtestutils.h: +/usr/include/glib-2.0/glib/gthreadpool.h: +/usr/include/glib-2.0/glib/gtimer.h: +/usr/include/glib-2.0/glib/gtrashstack.h: +/usr/include/glib-2.0/glib/gtree.h: +/usr/include/glib-2.0/glib/gurifuncs.h: +/usr/include/glib-2.0/glib/gvarianttype.h: +/usr/include/glib-2.0/glib/gvariant.h: +/usr/include/glib-2.0/glib/gversion.h: +/usr/include/glib-2.0/glib/deprecated/gallocator.h: +/usr/include/glib-2.0/glib/deprecated/gcache.h: +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: +/usr/include/glib-2.0/glib/deprecated/gmain.h: +/usr/include/glib-2.0/glib/deprecated/grel.h: +/usr/include/glib-2.0/glib/deprecated/gthread.h: +/usr/include/pango-1.0/pango/pango-types.h: +/usr/include/glib-2.0/glib-object.h: +/usr/include/glib-2.0/gobject/gbinding.h: +/usr/include/glib-2.0/gobject/gobject.h: +/usr/include/glib-2.0/gobject/gtype.h: +/usr/include/glib-2.0/gobject/gvalue.h: +/usr/include/glib-2.0/gobject/gparam.h: +/usr/include/glib-2.0/gobject/gclosure.h: +/usr/include/glib-2.0/gobject/gsignal.h: +/usr/include/glib-2.0/gobject/gmarshal.h: +/usr/include/glib-2.0/gobject/gboxed.h: +/usr/include/glib-2.0/gobject/glib-types.h: +/usr/include/glib-2.0/gobject/genums.h: +/usr/include/glib-2.0/gobject/gparamspecs.h: +/usr/include/glib-2.0/gobject/gsourceclosure.h: +/usr/include/glib-2.0/gobject/gtypemodule.h: +/usr/include/glib-2.0/gobject/gtypeplugin.h: +/usr/include/glib-2.0/gobject/gvaluearray.h: +/usr/include/glib-2.0/gobject/gvaluetypes.h: +/usr/include/pango-1.0/pango/pango-gravity.h: +/usr/include/pango-1.0/pango/pango-matrix.h: +/usr/include/pango-1.0/pango/pango-script.h: +/usr/include/pango-1.0/pango/pango-language.h: +/usr/include/pango-1.0/pango/pango-bidi-type.h: +/usr/include/pango-1.0/pango/pango-break.h: +/usr/include/pango-1.0/pango/pango-item.h: +/usr/include/pango-1.0/pango/pango-context.h: +/usr/include/pango-1.0/pango/pango-fontmap.h: +/usr/include/pango-1.0/pango/pango-fontset.h: +/usr/include/pango-1.0/pango/pango-engine.h: +/usr/include/pango-1.0/pango/pango-glyph.h: +/usr/include/pango-1.0/pango/pango-enum-types.h: +/usr/include/pango-1.0/pango/pango-features.h: +/usr/include/pango-1.0/pango/pango-glyph-item.h: +/usr/include/pango-1.0/pango/pango-layout.h: +/usr/include/pango-1.0/pango/pango-tabs.h: +/usr/include/pango-1.0/pango/pango-renderer.h: +/usr/include/pango-1.0/pango/pango-utils.h: +../src/Canvas.h: +/root/.node-gyp/7.10.1/include/node/node.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/v8-version.h: +/root/.node-gyp/7.10.1/include/node/v8config.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/root/.node-gyp/7.10.1/include/node/v8.h: +/root/.node-gyp/7.10.1/include/node/node_object_wrap.h: +/root/.node-gyp/7.10.1/include/node/node_version.h: +/usr/include/pango-1.0/pango/pangocairo.h: +/usr/include/cairo/cairo.h: +/usr/include/cairo/cairo-version.h: +/usr/include/cairo/cairo-features.h: +/usr/include/cairo/cairo-deprecated.h: +../../nan/nan.h: +/root/.node-gyp/7.10.1/include/node/uv.h: +/root/.node-gyp/7.10.1/include/node/uv-errno.h: +/root/.node-gyp/7.10.1/include/node/uv-version.h: +/root/.node-gyp/7.10.1/include/node/uv-unix.h: +/root/.node-gyp/7.10.1/include/node/uv-threadpool.h: +/root/.node-gyp/7.10.1/include/node/uv-linux.h: +/root/.node-gyp/7.10.1/include/node/node_buffer.h: +/root/.node-gyp/7.10.1/include/node/node.h: +../../nan/nan_callbacks.h: +../../nan/nan_callbacks_12_inl.h: +../../nan/nan_maybe_43_inl.h: +../../nan/nan_converters.h: +../../nan/nan_converters_43_inl.h: +../../nan/nan_new.h: +../../nan/nan_implementation_12_inl.h: +../../nan/nan_persistent_12_inl.h: +../../nan/nan_weak.h: +../../nan/nan_object_wrap.h: +../../nan/nan_private.h: +../../nan/nan_typedarray_contents.h: +../../nan/nan_json.h: +../src/Image.h: +../src/ImageData.h: +../src/CanvasGradient.h: +../src/CanvasPattern.h: +../src/CanvasRenderingContext2d.h: +../src/color.h: +/usr/include/freetype2/ft2build.h: +/usr/include/freetype2/config/ftheader.h: +/usr/include/freetype2/freetype.h: +/usr/include/freetype2/config/ftconfig.h: +/usr/include/freetype2/config/ftoption.h: +/usr/include/freetype2/config/ftstdlib.h: +/usr/include/freetype2/fttypes.h: +/usr/include/freetype2/ftsystem.h: +/usr/include/freetype2/ftimage.h: +/usr/include/freetype2/fterrors.h: +/usr/include/freetype2/ftmoderr.h: +/usr/include/freetype2/fterrdef.h: diff --git a/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/register_font.o.d b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/register_font.o.d new file mode 100644 index 00000000..1d8cdf04 --- /dev/null +++ b/vendor/canvas/build/Release/.deps/Release/obj.target/canvas/src/register_font.o.d @@ -0,0 +1,260 @@ +cmd_Release/obj.target/canvas/src/register_font.o := g++ '-DNODE_GYP_MODULE_NAME=canvas' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DHAVE_JPEG' '-DHAVE_GIF' '-DBUILDING_NODE_EXTENSION' -I/root/.node-gyp/7.10.1/include/node -I/root/.node-gyp/7.10.1/src -I/root/.node-gyp/7.10.1/deps/uv/include -I/root/.node-gyp/7.10.1/deps/v8/include -I../../nan -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pango-1.0 -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -m64 -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF ./Release/.deps/Release/obj.target/canvas/src/register_font.o.d.raw -c -o Release/obj.target/canvas/src/register_font.o ../src/register_font.cc +Release/obj.target/canvas/src/register_font.o: ../src/register_font.cc \ + /usr/include/pango-1.0/pango/pangocairo.h \ + /usr/include/pango-1.0/pango/pango.h \ + /usr/include/pango-1.0/pango/pango-attributes.h \ + /usr/include/pango-1.0/pango/pango-font.h \ + /usr/include/pango-1.0/pango/pango-coverage.h \ + /usr/include/glib-2.0/glib.h /usr/include/glib-2.0/glib/galloca.h \ + /usr/include/glib-2.0/glib/gtypes.h \ + /usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h \ + /usr/include/glib-2.0/glib/gmacros.h \ + /usr/include/glib-2.0/glib/gversionmacros.h \ + /usr/include/glib-2.0/glib/garray.h \ + /usr/include/glib-2.0/glib/gasyncqueue.h \ + /usr/include/glib-2.0/glib/gthread.h \ + /usr/include/glib-2.0/glib/gatomic.h /usr/include/glib-2.0/glib/gerror.h \ + /usr/include/glib-2.0/glib/gquark.h \ + /usr/include/glib-2.0/glib/gbacktrace.h \ + /usr/include/glib-2.0/glib/gbase64.h \ + /usr/include/glib-2.0/glib/gbitlock.h \ + /usr/include/glib-2.0/glib/gbookmarkfile.h \ + /usr/include/glib-2.0/glib/gbytes.h \ + /usr/include/glib-2.0/glib/gcharset.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/gconvert.h \ + /usr/include/glib-2.0/glib/gdataset.h /usr/include/glib-2.0/glib/gdate.h \ + /usr/include/glib-2.0/glib/gdatetime.h \ + /usr/include/glib-2.0/glib/gtimezone.h /usr/include/glib-2.0/glib/gdir.h \ + /usr/include/glib-2.0/glib/genviron.h \ + /usr/include/glib-2.0/glib/gfileutils.h \ + /usr/include/glib-2.0/glib/ggettext.h /usr/include/glib-2.0/glib/ghash.h \ + /usr/include/glib-2.0/glib/glist.h /usr/include/glib-2.0/glib/gmem.h \ + /usr/include/glib-2.0/glib/gnode.h /usr/include/glib-2.0/glib/ghmac.h \ + /usr/include/glib-2.0/glib/gchecksum.h \ + /usr/include/glib-2.0/glib/ghook.h \ + /usr/include/glib-2.0/glib/ghostutils.h \ + /usr/include/glib-2.0/glib/giochannel.h \ + /usr/include/glib-2.0/glib/gmain.h /usr/include/glib-2.0/glib/gpoll.h \ + /usr/include/glib-2.0/glib/gslist.h /usr/include/glib-2.0/glib/gstring.h \ + /usr/include/glib-2.0/glib/gunicode.h \ + /usr/include/glib-2.0/glib/gutils.h \ + /usr/include/glib-2.0/glib/gkeyfile.h \ + /usr/include/glib-2.0/glib/gmappedfile.h \ + /usr/include/glib-2.0/glib/gmarkup.h \ + /usr/include/glib-2.0/glib/gmessages.h \ + /usr/include/glib-2.0/glib/goption.h \ + /usr/include/glib-2.0/glib/gpattern.h \ + /usr/include/glib-2.0/glib/gprimes.h /usr/include/glib-2.0/glib/gqsort.h \ + /usr/include/glib-2.0/glib/gqueue.h /usr/include/glib-2.0/glib/grand.h \ + /usr/include/glib-2.0/glib/gregex.h \ + /usr/include/glib-2.0/glib/gscanner.h \ + /usr/include/glib-2.0/glib/gsequence.h \ + /usr/include/glib-2.0/glib/gshell.h /usr/include/glib-2.0/glib/gslice.h \ + /usr/include/glib-2.0/glib/gspawn.h \ + /usr/include/glib-2.0/glib/gstrfuncs.h \ + /usr/include/glib-2.0/glib/gstringchunk.h \ + /usr/include/glib-2.0/glib/gtestutils.h \ + /usr/include/glib-2.0/glib/gthreadpool.h \ + /usr/include/glib-2.0/glib/gtimer.h \ + /usr/include/glib-2.0/glib/gtrashstack.h \ + /usr/include/glib-2.0/glib/gtree.h \ + /usr/include/glib-2.0/glib/gurifuncs.h \ + /usr/include/glib-2.0/glib/gvarianttype.h \ + /usr/include/glib-2.0/glib/gvariant.h \ + /usr/include/glib-2.0/glib/gversion.h \ + /usr/include/glib-2.0/glib/deprecated/gallocator.h \ + /usr/include/glib-2.0/glib/deprecated/gcache.h \ + /usr/include/glib-2.0/glib/deprecated/gcompletion.h \ + /usr/include/glib-2.0/glib/deprecated/gmain.h \ + /usr/include/glib-2.0/glib/deprecated/grel.h \ + /usr/include/glib-2.0/glib/deprecated/gthread.h \ + /usr/include/pango-1.0/pango/pango-types.h \ + /usr/include/glib-2.0/glib-object.h \ + /usr/include/glib-2.0/gobject/gbinding.h \ + /usr/include/glib-2.0/gobject/gobject.h \ + /usr/include/glib-2.0/gobject/gtype.h \ + /usr/include/glib-2.0/gobject/gvalue.h \ + /usr/include/glib-2.0/gobject/gparam.h \ + /usr/include/glib-2.0/gobject/gclosure.h \ + /usr/include/glib-2.0/gobject/gsignal.h \ + /usr/include/glib-2.0/gobject/gmarshal.h \ + /usr/include/glib-2.0/gobject/gboxed.h \ + /usr/include/glib-2.0/gobject/glib-types.h \ + /usr/include/glib-2.0/gobject/genums.h \ + /usr/include/glib-2.0/gobject/gparamspecs.h \ + /usr/include/glib-2.0/gobject/gsourceclosure.h \ + /usr/include/glib-2.0/gobject/gtypemodule.h \ + /usr/include/glib-2.0/gobject/gtypeplugin.h \ + /usr/include/glib-2.0/gobject/gvaluearray.h \ + /usr/include/glib-2.0/gobject/gvaluetypes.h \ + /usr/include/pango-1.0/pango/pango-gravity.h \ + /usr/include/pango-1.0/pango/pango-matrix.h \ + /usr/include/pango-1.0/pango/pango-script.h \ + /usr/include/pango-1.0/pango/pango-language.h \ + /usr/include/pango-1.0/pango/pango-bidi-type.h \ + /usr/include/pango-1.0/pango/pango-break.h \ + /usr/include/pango-1.0/pango/pango-item.h \ + /usr/include/pango-1.0/pango/pango-context.h \ + /usr/include/pango-1.0/pango/pango-fontmap.h \ + /usr/include/pango-1.0/pango/pango-fontset.h \ + /usr/include/pango-1.0/pango/pango-engine.h \ + /usr/include/pango-1.0/pango/pango-glyph.h \ + /usr/include/pango-1.0/pango/pango-enum-types.h \ + /usr/include/pango-1.0/pango/pango-features.h \ + /usr/include/pango-1.0/pango/pango-glyph-item.h \ + /usr/include/pango-1.0/pango/pango-layout.h \ + /usr/include/pango-1.0/pango/pango-tabs.h \ + /usr/include/pango-1.0/pango/pango-renderer.h \ + /usr/include/pango-1.0/pango/pango-utils.h /usr/include/cairo/cairo.h \ + /usr/include/cairo/cairo-version.h /usr/include/cairo/cairo-features.h \ + /usr/include/cairo/cairo-deprecated.h /usr/include/freetype2/ft2build.h \ + /usr/include/freetype2/config/ftheader.h \ + /usr/include/freetype2/freetype.h \ + /usr/include/freetype2/config/ftconfig.h \ + /usr/include/freetype2/config/ftoption.h \ + /usr/include/freetype2/config/ftstdlib.h \ + /usr/include/freetype2/fttypes.h /usr/include/freetype2/ftsystem.h \ + /usr/include/freetype2/ftimage.h /usr/include/freetype2/fterrors.h \ + /usr/include/freetype2/ftmoderr.h /usr/include/freetype2/fterrdef.h \ + /usr/include/freetype2/tttables.h /usr/include/freetype2/ftsnames.h \ + /usr/include/freetype2/ttnameid.h +../src/register_font.cc: +/usr/include/pango-1.0/pango/pangocairo.h: +/usr/include/pango-1.0/pango/pango.h: +/usr/include/pango-1.0/pango/pango-attributes.h: +/usr/include/pango-1.0/pango/pango-font.h: +/usr/include/pango-1.0/pango/pango-coverage.h: +/usr/include/glib-2.0/glib.h: +/usr/include/glib-2.0/glib/galloca.h: +/usr/include/glib-2.0/glib/gtypes.h: +/usr/lib/x86_64-linux-gnu/glib-2.0/include/glibconfig.h: +/usr/include/glib-2.0/glib/gmacros.h: +/usr/include/glib-2.0/glib/gversionmacros.h: +/usr/include/glib-2.0/glib/garray.h: +/usr/include/glib-2.0/glib/gasyncqueue.h: +/usr/include/glib-2.0/glib/gthread.h: +/usr/include/glib-2.0/glib/gatomic.h: +/usr/include/glib-2.0/glib/gerror.h: +/usr/include/glib-2.0/glib/gquark.h: +/usr/include/glib-2.0/glib/gbacktrace.h: +/usr/include/glib-2.0/glib/gbase64.h: +/usr/include/glib-2.0/glib/gbitlock.h: +/usr/include/glib-2.0/glib/gbookmarkfile.h: +/usr/include/glib-2.0/glib/gbytes.h: +/usr/include/glib-2.0/glib/gcharset.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/gconvert.h: +/usr/include/glib-2.0/glib/gdataset.h: +/usr/include/glib-2.0/glib/gdate.h: +/usr/include/glib-2.0/glib/gdatetime.h: +/usr/include/glib-2.0/glib/gtimezone.h: +/usr/include/glib-2.0/glib/gdir.h: +/usr/include/glib-2.0/glib/genviron.h: +/usr/include/glib-2.0/glib/gfileutils.h: +/usr/include/glib-2.0/glib/ggettext.h: +/usr/include/glib-2.0/glib/ghash.h: +/usr/include/glib-2.0/glib/glist.h: +/usr/include/glib-2.0/glib/gmem.h: +/usr/include/glib-2.0/glib/gnode.h: +/usr/include/glib-2.0/glib/ghmac.h: +/usr/include/glib-2.0/glib/gchecksum.h: +/usr/include/glib-2.0/glib/ghook.h: +/usr/include/glib-2.0/glib/ghostutils.h: +/usr/include/glib-2.0/glib/giochannel.h: +/usr/include/glib-2.0/glib/gmain.h: +/usr/include/glib-2.0/glib/gpoll.h: +/usr/include/glib-2.0/glib/gslist.h: +/usr/include/glib-2.0/glib/gstring.h: +/usr/include/glib-2.0/glib/gunicode.h: +/usr/include/glib-2.0/glib/gutils.h: +/usr/include/glib-2.0/glib/gkeyfile.h: +/usr/include/glib-2.0/glib/gmappedfile.h: +/usr/include/glib-2.0/glib/gmarkup.h: +/usr/include/glib-2.0/glib/gmessages.h: +/usr/include/glib-2.0/glib/goption.h: +/usr/include/glib-2.0/glib/gpattern.h: +/usr/include/glib-2.0/glib/gprimes.h: +/usr/include/glib-2.0/glib/gqsort.h: +/usr/include/glib-2.0/glib/gqueue.h: +/usr/include/glib-2.0/glib/grand.h: +/usr/include/glib-2.0/glib/gregex.h: +/usr/include/glib-2.0/glib/gscanner.h: +/usr/include/glib-2.0/glib/gsequence.h: +/usr/include/glib-2.0/glib/gshell.h: +/usr/include/glib-2.0/glib/gslice.h: +/usr/include/glib-2.0/glib/gspawn.h: +/usr/include/glib-2.0/glib/gstrfuncs.h: +/usr/include/glib-2.0/glib/gstringchunk.h: +/usr/include/glib-2.0/glib/gtestutils.h: +/usr/include/glib-2.0/glib/gthreadpool.h: +/usr/include/glib-2.0/glib/gtimer.h: +/usr/include/glib-2.0/glib/gtrashstack.h: +/usr/include/glib-2.0/glib/gtree.h: +/usr/include/glib-2.0/glib/gurifuncs.h: +/usr/include/glib-2.0/glib/gvarianttype.h: +/usr/include/glib-2.0/glib/gvariant.h: +/usr/include/glib-2.0/glib/gversion.h: +/usr/include/glib-2.0/glib/deprecated/gallocator.h: +/usr/include/glib-2.0/glib/deprecated/gcache.h: +/usr/include/glib-2.0/glib/deprecated/gcompletion.h: +/usr/include/glib-2.0/glib/deprecated/gmain.h: +/usr/include/glib-2.0/glib/deprecated/grel.h: +/usr/include/glib-2.0/glib/deprecated/gthread.h: +/usr/include/pango-1.0/pango/pango-types.h: +/usr/include/glib-2.0/glib-object.h: +/usr/include/glib-2.0/gobject/gbinding.h: +/usr/include/glib-2.0/gobject/gobject.h: +/usr/include/glib-2.0/gobject/gtype.h: +/usr/include/glib-2.0/gobject/gvalue.h: +/usr/include/glib-2.0/gobject/gparam.h: +/usr/include/glib-2.0/gobject/gclosure.h: +/usr/include/glib-2.0/gobject/gsignal.h: +/usr/include/glib-2.0/gobject/gmarshal.h: +/usr/include/glib-2.0/gobject/gboxed.h: +/usr/include/glib-2.0/gobject/glib-types.h: +/usr/include/glib-2.0/gobject/genums.h: +/usr/include/glib-2.0/gobject/gparamspecs.h: +/usr/include/glib-2.0/gobject/gsourceclosure.h: +/usr/include/glib-2.0/gobject/gtypemodule.h: +/usr/include/glib-2.0/gobject/gtypeplugin.h: +/usr/include/glib-2.0/gobject/gvaluearray.h: +/usr/include/glib-2.0/gobject/gvaluetypes.h: +/usr/include/pango-1.0/pango/pango-gravity.h: +/usr/include/pango-1.0/pango/pango-matrix.h: +/usr/include/pango-1.0/pango/pango-script.h: +/usr/include/pango-1.0/pango/pango-language.h: +/usr/include/pango-1.0/pango/pango-bidi-type.h: +/usr/include/pango-1.0/pango/pango-break.h: +/usr/include/pango-1.0/pango/pango-item.h: +/usr/include/pango-1.0/pango/pango-context.h: +/usr/include/pango-1.0/pango/pango-fontmap.h: +/usr/include/pango-1.0/pango/pango-fontset.h: +/usr/include/pango-1.0/pango/pango-engine.h: +/usr/include/pango-1.0/pango/pango-glyph.h: +/usr/include/pango-1.0/pango/pango-enum-types.h: +/usr/include/pango-1.0/pango/pango-features.h: +/usr/include/pango-1.0/pango/pango-glyph-item.h: +/usr/include/pango-1.0/pango/pango-layout.h: +/usr/include/pango-1.0/pango/pango-tabs.h: +/usr/include/pango-1.0/pango/pango-renderer.h: +/usr/include/pango-1.0/pango/pango-utils.h: +/usr/include/cairo/cairo.h: +/usr/include/cairo/cairo-version.h: +/usr/include/cairo/cairo-features.h: +/usr/include/cairo/cairo-deprecated.h: +/usr/include/freetype2/ft2build.h: +/usr/include/freetype2/config/ftheader.h: +/usr/include/freetype2/freetype.h: +/usr/include/freetype2/config/ftconfig.h: +/usr/include/freetype2/config/ftoption.h: +/usr/include/freetype2/config/ftstdlib.h: +/usr/include/freetype2/fttypes.h: +/usr/include/freetype2/ftsystem.h: +/usr/include/freetype2/ftimage.h: +/usr/include/freetype2/fterrors.h: +/usr/include/freetype2/ftmoderr.h: +/usr/include/freetype2/fterrdef.h: +/usr/include/freetype2/tttables.h: +/usr/include/freetype2/ftsnames.h: +/usr/include/freetype2/ttnameid.h: diff --git a/vendor/canvas/build/Release/canvas-postbuild.node b/vendor/canvas/build/Release/canvas-postbuild.node new file mode 100755 index 0000000000000000000000000000000000000000..d3ff9e99edf0efd7af10781d9c74c4a22bb094a5 GIT binary patch literal 5808 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 literal 0 HcmV?d00001 diff --git a/vendor/canvas/build/Release/canvas.node b/vendor/canvas/build/Release/canvas.node new file mode 100755 index 0000000000000000000000000000000000000000..d93761033bf5d0068c7cc8aecb629b2c0e2d3c03 GIT binary patch literal 243784 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 literal 0 HcmV?d00001 diff --git a/vendor/canvas/build/Release/obj.target/canvas.node b/vendor/canvas/build/Release/obj.target/canvas.node new file mode 100755 index 0000000000000000000000000000000000000000..d93761033bf5d0068c7cc8aecb629b2c0e2d3c03 GIT binary patch literal 243784 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 F|3A`fJ#qj5 literal 0 HcmV?d00001 diff --git a/vendor/canvas/build/Release/obj.target/canvas/src/CanvasGradient.o b/vendor/canvas/build/Release/obj.target/canvas/src/CanvasGradient.o new file mode 100644 index 0000000000000000000000000000000000000000..7a55ee8e2be82a5a0295b758bdcf5e09437f311b GIT binary patch literal 22200 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 literal 0 HcmV?d00001 diff --git a/vendor/canvas/build/Release/obj.target/canvas/src/CanvasPattern.o b/vendor/canvas/build/Release/obj.target/canvas/src/CanvasPattern.o new file mode 100644 index 0000000000000000000000000000000000000000..86f1bbadcb69e04765f263b5f26f53db944fd690 GIT binary patch literal 19336 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 literal 0 HcmV?d00001 diff --git a/vendor/canvas/build/Release/obj.target/canvas/src/CanvasRenderingContext2d.o b/vendor/canvas/build/Release/obj.target/canvas/src/CanvasRenderingContext2d.o new file mode 100644 index 0000000000000000000000000000000000000000..69e46cf34691cd5916df2b233277fdd4e79dae1e GIT binary patch literal 154272 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≫}0 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 k6J`G0!{nLUmr6RUW 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 literal 0 HcmV?d00001 diff --git a/vendor/canvas/build/Release/obj.target/canvas/src/init.o b/vendor/canvas/build/Release/obj.target/canvas/src/init.o new file mode 100644 index 0000000000000000000000000000000000000000..a49e2377943dee39f7dd921e75961f97eb065ca4 GIT binary patch literal 5336 zcmbW4U2GIp6vyv&`B1QwFBL)UR;faOVRuVEAS%0Tr`^h?t#;cOlnk@G)3UH1b#_`? zjKNqi*ZxAgW#oFQ`g^ka^UNHW>wfk!bT*th55sZ6bSs9BT<03lk}O&Mso~7qAWKz$ zgXF1c>zZ(Q6dh94+wqGTsLZT_)1@_Vid^Obe&U(ckUVp2X_souE?#CK;b+>Eng}Og$+|?a~hr}yyFYv6Hx64D8 zUCEbAtU1@5WhX|h5dtAm3GLG&yF+XwKTJK%IgS6bVcW8t$x(|sG;MFi&hE{Z@{X3x zvaDGeH!CnT+y;}=FJc8=gQK%9TGqK`S!xe)cOr2hw4>9?joK7_|`JMbq(-+BH-ty}+oU7~(f;)CGSis0SA8W8Gh zxdv`Cw+(oXqweMURdMLYwpN)eI%Wn+$9Bu(RI{yusX5k!!?c{~m`ux5DonG>*g$zi zi!k1=jg<=dlU898ddUX_rtOT43WRsTFm2l;4G#ipre({;qE&(9|lq< zaehyLZG|Ji*4Ff~S`EjEUW+X#>E+%aTPHVb^&pcz27*4v%f;8VOYr)dw_6DdzER

HhL}0azZ6^>CE9>aG z&W!F<-=TQQ=tLPm2-_vz@i&0HQ8N~`{DkOm)?Ik3(ZIi2wZI% zKDc_G{N3BwGGIA6$mZ{F>yTL(v*7j)v>2>X8ifHl!@?;#)DelM%lui;i=)mY45w7i zS>lhWrUQh&LhxLyl`K@#hhOA>RfE@x2JakmL82 zcsoKc-iZ(lIgWw&5JE8IAvlPSKpjohms||r48~V=(!V3P8s}q) zH$k2Bp9+p~a1M#j2##@{k@zKv%j3T$@sOndRpPRq@B5$+^WyqMdH<61A&IYp^$iWj zBaeTR#O3%~1;_aKEv5Llxkppy=YYiJIB_Wse%mNczoZXI{G`O2ByLM_Hc1?R4WX&? z{E@`v@q8}v5ctt}zLmJF|4wk62i!A~{+gthZCs=+96Tmc*Kx7NlIMKEARssA@Ia8s5{aaFf`g9xvj-}23!kqj$$Mbexk|JKK?P`Py2n+({o1cKB#!j{}%D#3kxC6KR!3={NwfE?q415YXXoS zB;3??2B=s5q{vVA8S~?>67nZL0SxCv&Ht_dG3b*mCO4ptKhVAM9~1eLLXY|J{Z{k8 z2MqJmJVBM)Ws$#`fGFwyQF#tH)n(}|^@0?C(q4cH`m2xo9pQfr`edW=6Z-@zUf2Jb z$Nfh{{xtvie0dEui9x}>aEsbmy;iTWqxhcipAfxH?6uIQua5Ix;?1!= z`#EX5hP84s_2IfiVgm#MCM2Xu+aJ;XXbc*|B2^X*QL2hnkp^w~(UH*!2CBMEl$r1M z-ko!G{3^7s^n7=p@AtlU_q`wQo}cdVd8;IeaFNJY$V!P*LgY`Z5j?9)FmvmZ)w z?m@^B`}Aq}m2;0^!E}>(zi6NO7Nz}*axQpL&ZYCdT+fnhyyi31i?T7eWLjqXm*gzy zjoBNaSn}!1HYf-G|(R?!$xg_QsRgAnU~2 zCyK?Qy|I%(3)Hi#aN{DDAzh?AJGsaea}XDve^H~d5~sC+z^Wnrd&s?Pp9{`r(*-#@nKxUVF7z3%>978(0S0S!`qHV%SsN@G*;w!y z9X{hd`?J4x6|~Icxd!{Q1?i%k{Uk=l@YYiMK4XDKN3%C}69VSkuih$WA+8-}*_iL2 zzNOce^qKS9WMhei+pP@FyWYIfhsM3pemg!t&jW;+IGo4nE9uauLl3n z5KQOwiF!G=2E%2aD`u@%vHsm(7S=;WYr5y#r^_K;w}+v?iY)k8BK81B0XR>r}@aw0fYI6pP;tc9l* z9@6XaeA%(BTOEpoVvYx#yPfT=uD0#N>QG0zy~PA*hQg0g>G-2WI@%!JzkY2kF2~KF z!w2P4_|vucPmejA`e$U&O0!&DFTy=QH?>N9J) zGc{GOuLE1Tj`})HEeXMTrfm=S%GeHp$qqm-F#SJDdhjKG+jh1(x8_VuZ)R=PW%TB* z13mU@iP_JU?B)8JC(*=PrTwJQnEo>A`Pe;YY?ckM=_t=7)o946t4DR>91iIr;v7n)2nEh`EE;)2jUFS;WE^!^+vRleB5{V}V`FLz zYR2Na>g?ScY)$E*@DpHwPSsIGONPc&>_BC~u2++P6)S1+5UwOPx^h=*Y;-kO;`9Vs zrLfUeeiN)s*An0rA`Y-L

kB;H$4(CID38CxD~>HdcY|O~{|Iu>Xz) zf8K)QK1KgW*wo`*K*1YRrT)BO!T$st{oq-ILiatSHYiu}bDss@ZoxY(c)tY?0LT8E z#Df=vo-2?(&Uhyt#vn~*LQXNBV4R*4p!+W4GmO*o0r(v7O5?g@!T(~xix#{N`d!KY z77OmR;G-5iYr$W#;6DeB@l3Fd)WzcVmWBNX7Q6xCSZQ1&sg6Wax|&q9cuaSO!^AVN zKj4v_?GF&A&$APMXs(?o-*7#o#Nd=uhE+|012GXws{TFW18s__(~_#Hj3`m?r$lsh z%s)N=nqJ?&F1JtF=k*Ts1eAcg%h#h2G=)kJ>2W2kYaRa4$90{Ig`&}Tn2acqa6C4y z#1m?a7t98jZ`zKQjz;~vz&o@CRW8O(NfWD#P#5asw-M(ED}9N`|o$TyaB}< z3agK*VTC}x7Yqipn6B)_;d$a|IO)qV_Zo?%)TFMY;z?Z{=1_|yp&Rhh7)~d!ue-3x zL?|{AS0>cR$S8~s!?!}gRMo?y6x05h#wq<+RE>gdyWjz524bEHCnE_x5|8;uiD_M~ zP-5x?_PZ|@(G@R@K5#6dTG`Sm0OP&t1dYWV0}h0SqLwvNE8&EfpdJZZHGzia@b6~9 zLUDH!2n%+wJ04Tb-aP@k{2t-3}>6&O2KgwA@L5SGa?fkCbujD+=Bd zQMjKYY<<6E;u7cgwm+2dldSR0tRDBn?@texaejX~RL1%J>2w+A_X*bQM@}426J6tX zwJ4pe@G_eht}DNT;F*CYo!o$>CvmfbEU|TuXC1bKdl3cCAQaqF$e9@;D*rBPmva^d zUL?3i(dS34k87>c`2XMbJ6Zj9NJZiG@r)FO_n)WxK#6&_TuP=6_9@t0B4)->R^AU~ ztk2giS9i1ec$SI6+vVvIQ1ZNJ7h&~9hWT>aG-KucPq6wglvUvK&;2GKQ)&GiV1av= z8RGiEuT);2uOIy0D4%<*vI+kr0(sg@O21{@sTg}S{ywWe%hurrV7R2q+sF4>rS|3Z Mpa5}|Da+gcANbDRqyPW_ literal 0 HcmV?d00001 diff --git a/vendor/canvas/build/binding.Makefile b/vendor/canvas/build/binding.Makefile new file mode 100644 index 00000000..a3ab7683 --- /dev/null +++ b/vendor/canvas/build/binding.Makefile @@ -0,0 +1,6 @@ +# This file is generated by gyp; do not edit. + +export builddir_name ?= ./build/. +.PHONY: all +all: + $(MAKE) canvas canvas-postbuild diff --git a/vendor/canvas/build/canvas-postbuild.target.mk b/vendor/canvas/build/canvas-postbuild.target.mk new file mode 100644 index 00000000..1fe7d7b2 --- /dev/null +++ b/vendor/canvas/build/canvas-postbuild.target.mk @@ -0,0 +1,42 @@ +# This file is generated by gyp; do not edit. + +TOOLSET := target +TARGET := canvas-postbuild +### Rules for final target. +LDFLAGS_Debug := \ + -pthread \ + -rdynamic \ + -m64 + +LDFLAGS_Release := \ + -pthread \ + -rdynamic \ + -m64 + +LIBS := + +$(obj).target/canvas-postbuild.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) +$(obj).target/canvas-postbuild.node: LIBS := $(LIBS) +$(obj).target/canvas-postbuild.node: TOOLSET := $(TOOLSET) +$(obj).target/canvas-postbuild.node: FORCE_DO_CMD + $(call do_cmd,solink_module) + +all_deps += $(obj).target/canvas-postbuild.node +# Add target alias +.PHONY: canvas-postbuild +canvas-postbuild: $(builddir)/canvas-postbuild.node + +# Copy this to the executable output path. +$(builddir)/canvas-postbuild.node: TOOLSET := $(TOOLSET) +$(builddir)/canvas-postbuild.node: $(obj).target/canvas-postbuild.node FORCE_DO_CMD + $(call do_cmd,copy) + +all_deps += $(builddir)/canvas-postbuild.node +# Short alias for building this executable. +.PHONY: canvas-postbuild.node +canvas-postbuild.node: $(obj).target/canvas-postbuild.node $(builddir)/canvas-postbuild.node + +# Add executable to "all" target. +.PHONY: all +all: $(builddir)/canvas-postbuild.node + diff --git a/vendor/canvas/build/canvas.target.mk b/vendor/canvas/build/canvas.target.mk new file mode 100644 index 00000000..3d0f1fc3 --- /dev/null +++ b/vendor/canvas/build/canvas.target.mk @@ -0,0 +1,178 @@ +# This file is generated by gyp; do not edit. + +TOOLSET := target +TARGET := canvas +DEFS_Debug := \ + '-DNODE_GYP_MODULE_NAME=canvas' \ + '-DUSING_UV_SHARED=1' \ + '-DUSING_V8_SHARED=1' \ + '-DV8_DEPRECATION_WARNINGS=1' \ + '-D_LARGEFILE_SOURCE' \ + '-D_FILE_OFFSET_BITS=64' \ + '-DHAVE_JPEG' \ + '-DHAVE_GIF' \ + '-DBUILDING_NODE_EXTENSION' \ + '-DDEBUG' \ + '-D_DEBUG' + +# Flags passed to all source files. +CFLAGS_Debug := \ + -fPIC \ + -pthread \ + -Wall \ + -Wextra \ + -Wno-unused-parameter \ + -m64 \ + -g \ + -O0 + +# Flags passed to only C files. +CFLAGS_C_Debug := + +# Flags passed to only C++ files. +CFLAGS_CC_Debug := \ + -fno-rtti \ + -fno-exceptions \ + -std=gnu++0x + +INCS_Debug := \ + -I/root/.node-gyp/7.10.1/include/node \ + -I/root/.node-gyp/7.10.1/src \ + -I/root/.node-gyp/7.10.1/deps/uv/include \ + -I/root/.node-gyp/7.10.1/deps/v8/include \ + -I$(srcdir)/../nan \ + -I/usr/include/cairo \ + -I/usr/include/glib-2.0 \ + -I/usr/lib/x86_64-linux-gnu/glib-2.0/include \ + -I/usr/include/pixman-1 \ + -I/usr/include/freetype2 \ + -I/usr/include/libpng12 \ + -I/usr/include/pango-1.0 + +DEFS_Release := \ + '-DNODE_GYP_MODULE_NAME=canvas' \ + '-DUSING_UV_SHARED=1' \ + '-DUSING_V8_SHARED=1' \ + '-DV8_DEPRECATION_WARNINGS=1' \ + '-D_LARGEFILE_SOURCE' \ + '-D_FILE_OFFSET_BITS=64' \ + '-DHAVE_JPEG' \ + '-DHAVE_GIF' \ + '-DBUILDING_NODE_EXTENSION' + +# Flags passed to all source files. +CFLAGS_Release := \ + -fPIC \ + -pthread \ + -Wall \ + -Wextra \ + -Wno-unused-parameter \ + -m64 \ + -O3 \ + -fno-omit-frame-pointer + +# Flags passed to only C files. +CFLAGS_C_Release := + +# Flags passed to only C++ files. +CFLAGS_CC_Release := \ + -fno-rtti \ + -fno-exceptions \ + -std=gnu++0x + +INCS_Release := \ + -I/root/.node-gyp/7.10.1/include/node \ + -I/root/.node-gyp/7.10.1/src \ + -I/root/.node-gyp/7.10.1/deps/uv/include \ + -I/root/.node-gyp/7.10.1/deps/v8/include \ + -I$(srcdir)/../nan \ + -I/usr/include/cairo \ + -I/usr/include/glib-2.0 \ + -I/usr/lib/x86_64-linux-gnu/glib-2.0/include \ + -I/usr/include/pixman-1 \ + -I/usr/include/freetype2 \ + -I/usr/include/libpng12 \ + -I/usr/include/pango-1.0 + +OBJS := \ + $(obj).target/$(TARGET)/src/Canvas.o \ + $(obj).target/$(TARGET)/src/CanvasGradient.o \ + $(obj).target/$(TARGET)/src/CanvasPattern.o \ + $(obj).target/$(TARGET)/src/CanvasRenderingContext2d.o \ + $(obj).target/$(TARGET)/src/color.o \ + $(obj).target/$(TARGET)/src/Image.o \ + $(obj).target/$(TARGET)/src/ImageData.o \ + $(obj).target/$(TARGET)/src/register_font.o \ + $(obj).target/$(TARGET)/src/init.o + +# Add to the list of files we specially track dependencies for. +all_deps += $(OBJS) + +# CFLAGS et al overrides must be target-local. +# See "Target-specific Variable Values" in the GNU Make manual. +$(OBJS): TOOLSET := $(TOOLSET) +$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) +$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) + +# Suffix rules, putting all outputs into $(obj). + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) + +# Try building from generated source, too. + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) + +$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) + +# End of this set of suffix rules +### Rules for final target. +LDFLAGS_Debug := \ + -pthread \ + -rdynamic \ + -m64 + +LDFLAGS_Release := \ + -pthread \ + -rdynamic \ + -m64 + +LIBS := \ + -lpixman-1 \ + -lcairo \ + -lpng12 \ + -lpangocairo-1.0 \ + -lpango-1.0 \ + -lgobject-2.0 \ + -lglib-2.0 \ + -lfreetype \ + -ljpeg \ + -lgif + +$(obj).target/canvas.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) +$(obj).target/canvas.node: LIBS := $(LIBS) +$(obj).target/canvas.node: TOOLSET := $(TOOLSET) +$(obj).target/canvas.node: $(OBJS) FORCE_DO_CMD + $(call do_cmd,solink_module) + +all_deps += $(obj).target/canvas.node +# Add target alias +.PHONY: canvas +canvas: $(builddir)/canvas.node + +# Copy this to the executable output path. +$(builddir)/canvas.node: TOOLSET := $(TOOLSET) +$(builddir)/canvas.node: $(obj).target/canvas.node FORCE_DO_CMD + $(call do_cmd,copy) + +all_deps += $(builddir)/canvas.node +# Short alias for building this executable. +.PHONY: canvas.node +canvas.node: $(obj).target/canvas.node $(builddir)/canvas.node + +# Add executable to "all" target. +.PHONY: all +all: $(builddir)/canvas.node + diff --git a/vendor/canvas/build/config.gypi b/vendor/canvas/build/config.gypi new file mode 100644 index 00000000..91a596bf --- /dev/null +++ b/vendor/canvas/build/config.gypi @@ -0,0 +1,160 @@ +# Do not edit. File was generated by node-gyp's "configure" step +{ + "target_defaults": { + "cflags": [], + "default_configuration": "Release", + "defines": [], + "include_dirs": [], + "libraries": [] + }, + "variables": { + "asan": 0, + "coverage": "false", + "debug_devtools": "node", + "force_dynamic_crt": 0, + "gas_version": "2.23", + "host_arch": "x64", + "icu_data_file": "icudt58l.dat", + "icu_data_in": "../../deps/icu-small/source/data/in/icudt58l.dat", + "icu_endianness": "l", + "icu_gyp_path": "tools/icu/icu-generic.gyp", + "icu_locales": "en,root", + "icu_path": "deps/icu-small", + "icu_small": "true", + "icu_ver_major": "58", + "node_byteorder": "little", + "node_enable_d8": "false", + "node_enable_v8_vtunejit": "false", + "node_install_npm": "true", + "node_module_version": 51, + "node_no_browser_globals": "false", + "node_prefix": "/", + "node_release_urlbase": "https://nodejs.org/download/release/", + "node_shared": "false", + "node_shared_cares": "false", + "node_shared_http_parser": "false", + "node_shared_libuv": "false", + "node_shared_openssl": "false", + "node_shared_zlib": "false", + "node_tag": "", + "node_use_bundled_v8": "true", + "node_use_dtrace": "false", + "node_use_etw": "false", + "node_use_lttng": "false", + "node_use_openssl": "true", + "node_use_perfctr": "false", + "node_use_v8_platform": "true", + "openssl_fips": "", + "openssl_no_asm": 0, + "shlib_suffix": "so.51", + "target_arch": "x64", + "uv_parent_path": "/deps/uv/", + "uv_use_dtrace": "false", + "v8_enable_gdbjit": 0, + "v8_enable_i18n_support": 1, + "v8_inspector": "true", + "v8_no_strict_aliasing": 1, + "v8_optimized_debug": 0, + "v8_random_seed": 0, + "v8_use_snapshot": "false", + "want_separate_host_toolset": 0, + "want_separate_host_toolset_mkpeephole": 0, + "nodedir": "/root/.node-gyp/7.10.1", + "copy_dev_lib": "true", + "standalone_static_library": 1, + "cache_lock_stale": "60000", + "legacy_bundling": "", + "sign_git_tag": "", + "user_agent": "npm/4.2.0 node/v7.10.1 linux x64", + "always_auth": "", + "bin_links": "true", + "key": "", + "description": "true", + "fetch_retries": "2", + "heading": "npm", + "if_present": "", + "init_version": "1.0.0", + "user": "", + "force": "", + "only": "", + "cache_min": "10", + "init_license": "ISC", + "editor": "vi", + "rollback": "true", + "tag_version_prefix": "v", + "cache_max": "Infinity", + "userconfig": "/root/.npmrc", + "engine_strict": "", + "init_author_name": "", + "init_author_url": "", + "tmp": "/tmp", + "depth": "Infinity", + "save_dev": "", + "usage": "", + "metrics_registry": "https://registry.npmjs.org/", + "progress": "true", + "https_proxy": "", + "onload_script": "", + "rebuild_bundle": "true", + "save_bundle": "", + "shell": "bash", + "dry_run": "", + "prefix": "/usr/local", + "scope": "", + "browser": "", + "cache_lock_wait": "10000", + "registry": "https://registry.npmjs.org/", + "save_optional": "", + "searchopts": "", + "versions": "", + "cache": "/root/.npm", + "send_metrics": "", + "global_style": "", + "ignore_scripts": "", + "version": "", + "local_address": "", + "viewer": "man", + "color": "true", + "fetch_retry_mintimeout": "10000", + "maxsockets": "50", + "umask": "0022", + "fetch_retry_maxtimeout": "60000", + "logs_max": "10", + "message": "%s", + "ca": "", + "cert": "", + "global": "", + "link": "", + "access": "", + "also": "", + "save": "", + "unicode": "", + "production": "true", + "long": "", + "searchlimit": "20", + "unsafe_perm": "", + "node_version": "7.10.1", + "tag": "latest", + "git_tag_version": "true", + "shrinkwrap": "true", + "fetch_retry_factor": "10", + "proprietary_attribs": "true", + "save_exact": "", + "strict_ssl": "true", + "dev": "", + "globalconfig": "/usr/local/etc/npmrc", + "init_module": "/root/.npm-init.js", + "parseable": "", + "globalignorefile": "/usr/local/etc/npmignore", + "cache_lock_retries": "10", + "searchstaleness": "900", + "save_prefix": "^", + "scripts_prepend_node_path": "warn-only", + "group": "", + "init_author_email": "", + "searchexclude": "", + "git": "git", + "optional": "true", + "json": "" + } +} diff --git a/vendor/canvas/index.js b/vendor/canvas/index.js new file mode 100644 index 00000000..a006b610 --- /dev/null +++ b/vendor/canvas/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/canvas'); \ No newline at end of file diff --git a/vendor/canvas/lib/bindings.js b/vendor/canvas/lib/bindings.js new file mode 100644 index 00000000..c5c95b52 --- /dev/null +++ b/vendor/canvas/lib/bindings.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../build/Release/canvas'); diff --git a/vendor/canvas/lib/canvas.js b/vendor/canvas/lib/canvas.js new file mode 100644 index 00000000..1403faba --- /dev/null +++ b/vendor/canvas/lib/canvas.js @@ -0,0 +1,288 @@ +'use strict'; + +/*! + * Canvas + * Copyright (c) 2010 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var canvas = require('./bindings') + , Canvas = canvas.Canvas + , Image = canvas.Image + , cairoVersion = canvas.cairoVersion + , Context2d = require('./context2d') + , PNGStream = require('./pngstream') + , PDFStream = require('./pdfstream') + , JPEGStream = require('./jpegstream') + , fs = require('fs') + , packageJson = require("../package.json") + , FORMATS = ['image/png', 'image/jpeg']; + +/** + * Export `Canvas` as the module. + */ + +var Canvas = exports = module.exports = Canvas; + +/** + * Library version. + */ + +exports.version = packageJson.version; + +/** + * Cairo version. + */ + +exports.cairoVersion = cairoVersion; + +/** + * jpeglib version. + */ + +if (canvas.jpegVersion) { + exports.jpegVersion = canvas.jpegVersion; +} + +/** + * gif_lib version. + */ + +if (canvas.gifVersion) { + exports.gifVersion = canvas.gifVersion.replace(/[^.\d]/g, ''); +} + +/** + * freetype version. + */ + +if (canvas.freetypeVersion) { + exports.freetypeVersion = canvas.freetypeVersion; +} + +/** + * Expose constructors. + */ + +exports.Context2d = Context2d; +exports.PNGStream = PNGStream; +exports.PDFStream = PDFStream; +exports.JPEGStream = JPEGStream; +exports.Image = Image; +exports.ImageData = canvas.ImageData; + +/** + * Context2d implementation. + */ + +require('./context2d'); + +/** + * Image implementation. + */ + +require('./image'); + +/** + * Inspect canvas. + * + * @return {String} + * @api public + */ + +Canvas.prototype.inspect = function(){ + return '[Canvas ' + this.width + 'x' + this.height + ']'; +}; + +/** + * Get a context object. + * + * @param {String} contextId + * @return {Context2d} + * @api public + */ + +Canvas.prototype.getContext = function(contextId){ + if ('2d' == contextId) { + var ctx = this._context2d || (this._context2d = new Context2d(this)); + this.context = ctx; + ctx.canvas = this; + return ctx; + } +}; + +/** + * Create a `PNGStream` for `this` canvas. + * + * @return {PNGStream} + * @api public + */ + +Canvas.prototype.pngStream = +Canvas.prototype.createPNGStream = function(){ + return new PNGStream(this); +}; + +/** + * Create a synchronous `PNGStream` for `this` canvas. + * + * @return {PNGStream} + * @api public + */ + +Canvas.prototype.syncPNGStream = +Canvas.prototype.createSyncPNGStream = function(){ + return new PNGStream(this, true); +}; + +/** + * Create a `PDFStream` for `this` canvas. + * + * @return {PDFStream} + * @api public + */ + +Canvas.prototype.pdfStream = +Canvas.prototype.createPDFStream = function(){ + return new PDFStream(this); +}; + +/** + * Create a synchronous `PDFStream` for `this` canvas. + * + * @return {PDFStream} + * @api public + */ + +Canvas.prototype.syncPDFStream = +Canvas.prototype.createSyncPDFStream = function(){ + return new PDFStream(this, true); +}; + +/** + * Create a `JPEGStream` for `this` canvas. + * + * @param {Object} options + * @return {JPEGStream} + * @api public + */ + +Canvas.prototype.jpegStream = +Canvas.prototype.createJPEGStream = function(options){ + return this.createSyncJPEGStream(options); +}; + +/** + * Create a synchronous `JPEGStream` for `this` canvas. + * + * @param {Object} options + * @return {JPEGStream} + * @api public + */ + +Canvas.prototype.syncJPEGStream = +Canvas.prototype.createSyncJPEGStream = function(options){ + options = options || {}; + // Don't allow the buffer size to exceed the size of the canvas (#674) + var maxBufSize = this.width * this.height * 4; + var clampedBufSize = Math.min(options.bufsize || 4096, maxBufSize); + return new JPEGStream(this, { + bufsize: clampedBufSize + , quality: options.quality || 75 + , progressive: options.progressive || false + }); +}; + +/** + * Return a data url. Pass a function for async support (required for "image/jpeg"). + * + * @param {String} type, optional, one of "image/png" or "image/jpeg", defaults to "image/png" + * @param {Object|Number} encoderOptions, optional, options for jpeg compression (see documentation for Canvas#jpegStream) or the JPEG encoding quality from 0 to 1. + * @param {Function} fn, optional, callback for asynchronous operation. Required for type "image/jpeg". + * @return {String} data URL if synchronous (callback omitted) + * @api public + */ + +Canvas.prototype.toDataURL = function(a1, a2, a3){ + // valid arg patterns (args -> [type, opts, fn]): + // [] -> ['image/png', null, null] + // [qual] -> ['image/png', null, null] + // [undefined] -> ['image/png', null, null] + // ['image/png'] -> ['image/png', null, null] + // ['image/png', qual] -> ['image/png', null, null] + // [fn] -> ['image/png', null, fn] + // [type, fn] -> [type, null, fn] + // [undefined, fn] -> ['image/png', null, fn] + // ['image/png', qual, fn] -> ['image/png', null, fn] + // ['image/jpeg', fn] -> ['image/jpeg', null, fn] + // ['image/jpeg', opts, fn] -> ['image/jpeg', opts, fn] + // ['image/jpeg', qual, fn] -> ['image/jpeg', {quality: qual}, fn] + // ['image/jpeg', undefined, fn] -> ['image/jpeg', null, fn] + + if (this.width === 0 || this.height === 0) { + // Per spec, if the bitmap has no pixels, return this string: + return "data:,"; + } + + var type = 'image/png'; + var opts = {}; + var fn; + + if ('function' === typeof a1) { + fn = a1; + } else { + if ('string' === typeof a1 && FORMATS.indexOf(a1.toLowerCase()) !== -1) { + type = a1.toLowerCase(); + } + + if ('function' === typeof a2) { + fn = a2; + } else { + if ('object' === typeof a2) { + opts = a2; + } else if ('number' === typeof a2) { + opts = {quality: Math.max(0, Math.min(1, a2)) * 100}; + } + + if ('function' === typeof a3) { + fn = a3; + } else if (undefined !== a3) { + throw new TypeError(typeof a3 + ' is not a function'); + } + } + } + + if ('image/png' === type) { + if (fn) { + this.toBuffer(function(err, buf){ + if (err) return fn(err); + fn(null, 'data:image/png;base64,' + buf.toString('base64')); + }); + } else { + return 'data:image/png;base64,' + this.toBuffer().toString('base64'); + } + + } else if ('image/jpeg' === type) { + if (undefined === fn) { + throw new Error('Missing required callback function for format "image/jpeg"'); + } + + var stream = this.jpegStream(opts); + // note that jpegStream is synchronous + var buffers = []; + stream.on('data', function (chunk) { + buffers.push(chunk); + }); + stream.on('error', function (err) { + fn(err); + }); + stream.on('end', function() { + var result = 'data:image/jpeg;base64,' + Buffer.concat(buffers).toString('base64'); + fn(null, result); + }); + } +}; diff --git a/vendor/canvas/lib/context2d.js b/vendor/canvas/lib/context2d.js new file mode 100644 index 00000000..df068882 --- /dev/null +++ b/vendor/canvas/lib/context2d.js @@ -0,0 +1,348 @@ +'use strict'; + +/*! + * Canvas - Context2d + * Copyright (c) 2010 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var canvas = require('./bindings') + , Context2d = canvas.CanvasRenderingContext2d + , CanvasGradient = canvas.CanvasGradient + , CanvasPattern = canvas.CanvasPattern + , ImageData = canvas.ImageData; + +/** + * Export `Context2d` as the module. + */ + +var Context2d = exports = module.exports = Context2d; + +/** + * Cache color string RGBA values. + */ + +var cache = {}; + +/** + * Text baselines. + */ + +var baselines = ['alphabetic', 'top', 'bottom', 'middle', 'ideographic', 'hanging']; + +/** + * Font RegExp helpers. + */ + +var weights = 'normal|bold|bolder|lighter|[1-9]00' + , styles = 'normal|italic|oblique' + , units = 'px|pt|pc|in|cm|mm|%' + , string = '\'([^\']+)\'|"([^"]+)"|[\\w-]+'; + +/** + * Font parser RegExp; + */ + +var fontre = new RegExp('^ *' + + '(?:(' + weights + ') *)?' + + '(?:(' + styles + ') *)?' + + '([\\d\\.]+)(' + units + ') *' + + '((?:' + string + ')( *, *(?:' + string + '))*)' + ); + +/** + * Parse font `str`. + * + * @param {String} str + * @return {Object} + * @api private + */ + +var parseFont = exports.parseFont = function(str){ + var font = {} + , captures = fontre.exec(str); + + // Invalid + if (!captures) return; + + // Cached + if (cache[str]) return cache[str]; + + // Populate font object + font.weight = captures[1] || 'normal'; + font.style = captures[2] || 'normal'; + font.size = parseFloat(captures[3]); + font.unit = captures[4]; + font.family = captures[5].replace(/["']/g, '').split(',')[0].trim(); + + // TODO: dpi + // TODO: remaining unit conversion + switch (font.unit) { + case 'pt': + font.size /= .75; + break; + case 'in': + font.size *= 96; + break; + case 'mm': + font.size *= 96.0 / 25.4; + break; + case 'cm': + font.size *= 96.0 / 2.54; + break; + } + + return cache[str] = font; +}; + +/** + * Enable or disable image smoothing. + * + * @api public + */ + +Context2d.prototype.__defineSetter__('imageSmoothingEnabled', function(val){ + this._imageSmoothing = !! val; + this.patternQuality = val ? 'best' : 'fast'; +}); + +/** + * Get image smoothing value. + * + * @api public + */ + +Context2d.prototype.__defineGetter__('imageSmoothingEnabled', function(val){ + return !! this._imageSmoothing; +}); + +/** + * Create a pattern from `Image` or `Canvas`. + * + * @param {Image|Canvas} image + * @param {String} repetition + * @return {CanvasPattern} + * @api public + */ + +Context2d.prototype.createPattern = function(image, repetition){ + // TODO Use repetition (currently always 'repeat') + return new CanvasPattern(image); +}; + +/** + * Create a linear gradient at the given point `(x0, y0)` and `(x1, y1)`. + * + * @param {Number} x0 + * @param {Number} y0 + * @param {Number} x1 + * @param {Number} y1 + * @return {CanvasGradient} + * @api public + */ + +Context2d.prototype.createLinearGradient = function(x0, y0, x1, y1){ + return new CanvasGradient(x0, y0, x1, y1); +}; + +/** + * Create a radial gradient at the given point `(x0, y0)` and `(x1, y1)` + * and radius `r0` and `r1`. + * + * @param {Number} x0 + * @param {Number} y0 + * @param {Number} r0 + * @param {Number} x1 + * @param {Number} y1 + * @param {Number} r1 + * @return {CanvasGradient} + * @api public + */ + +Context2d.prototype.createRadialGradient = function(x0, y0, r0, x1, y1, r1){ + return new CanvasGradient(x0, y0, r0, x1, y1, r1); +}; + +/** + * Reset transform matrix to identity, then apply the given args. + * + * @param {...} + * @api public + */ + +Context2d.prototype.setTransform = function(){ + this.resetTransform(); + this.transform.apply(this, arguments); +}; + +/** + * Set the fill style with the given css color string. + * + * @api public + */ + +Context2d.prototype.__defineSetter__('fillStyle', function(val){ + if (!val) return; + if ('CanvasGradient' == val.constructor.name + || 'CanvasPattern' == val.constructor.name) { + this.lastFillStyle = val; + this._setFillPattern(val); + } else if ('string' == typeof val) { + this._setFillColor(val); + } +}); + +/** + * Get previous fill style. + * + * @return {CanvasGradient|String} + * @api public + */ + +Context2d.prototype.__defineGetter__('fillStyle', function(){ + return this.lastFillStyle || this.fillColor; +}); + +/** + * Set the stroke style with the given css color string. + * + * @api public + */ + +Context2d.prototype.__defineSetter__('strokeStyle', function(val){ + if (!val) return; + if ('CanvasGradient' == val.constructor.name + || 'CanvasPattern' == val.constructor.name) { + this.lastStrokeStyle = val; + this._setStrokePattern(val); + } else if ('string' == typeof val) { + this._setStrokeColor(val); + } +}); + +/** + * Get previous stroke style. + * + * @return {CanvasGradient|String} + * @api public + */ + +Context2d.prototype.__defineGetter__('strokeStyle', function(){ + return this.lastStrokeStyle || this.strokeColor; +}); + +/** + * Set font. + * + * @see exports.parseFont() + * @api public + */ + +Context2d.prototype.__defineSetter__('font', function(val){ + if (!val) return; + if ('string' == typeof val) { + var font; + if (font = parseFont(val)) { + this.lastFontString = val; + this._setFont( + font.weight + , font.style + , font.size + , font.unit + , font.family); + } + } +}); + +/** + * Get the current font. + * + * @api public + */ + +Context2d.prototype.__defineGetter__('font', function(){ + return this.lastFontString || '10px sans-serif'; +}); + +/** + * Set text baseline. + * + * @api public + */ + +Context2d.prototype.__defineSetter__('textBaseline', function(val){ + if (!val) return; + var n = baselines.indexOf(val); + if (~n) { + this.lastBaseline = val; + this._setTextBaseline(n); + } +}); + +/** + * Get the current baseline setting. + * + * @api public + */ + +Context2d.prototype.__defineGetter__('textBaseline', function(){ + return this.lastBaseline || 'alphabetic'; +}); + +/** + * Set text alignment. + * + * @api public + */ + +Context2d.prototype.__defineSetter__('textAlign', function(val){ + switch (val) { + case 'center': + this._setTextAlignment(0); + this.lastTextAlignment = val; + break; + case 'left': + case 'start': + this._setTextAlignment(-1); + this.lastTextAlignment = val; + break; + case 'right': + case 'end': + this._setTextAlignment(1); + this.lastTextAlignment = val; + break; + } +}); + +/** + * Get the current font. + * + * @see exports.parseFont() + * @api public + */ + +Context2d.prototype.__defineGetter__('textAlign', function(){ + return this.lastTextAlignment || 'start'; +}); + +/** + * Create `ImageData` with the given dimensions or + * `ImageData` instance for dimensions. + * + * @param {Number|ImageData} width + * @param {Number} height + * @return {ImageData} + * @api public + */ + +Context2d.prototype.createImageData = function(width, height){ + if ('ImageData' == width.constructor.name) { + height = width.height; + width = width.width; + } + return new ImageData(new Uint8ClampedArray(width * height * 4), width, height); +}; diff --git a/vendor/canvas/lib/image.js b/vendor/canvas/lib/image.js new file mode 100644 index 00000000..932ad901 --- /dev/null +++ b/vendor/canvas/lib/image.js @@ -0,0 +1,61 @@ +'use strict'; + +/*! + * Canvas - Image + * Copyright (c) 2010 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Canvas = require('./bindings') + , Image = Canvas.Image; + +/** + * Src setter. + * + * - convert data uri to `Buffer` + * + * @param {String|Buffer} val filename, buffer, data uri + * @api public + */ + +Image.prototype.__defineSetter__('src', function(val){ + if ('string' == typeof val && 0 == val.indexOf('data:')) { + val = val.slice(val.indexOf(',') + 1); + this.source = new Buffer(val, 'base64'); + } else { + this.source = val; + } +}); + +/** + * Src getter. + * + * TODO: return buffer + * + * @api public + */ + +Image.prototype.__defineGetter__('src', function(){ + return this.source; +}); + +/** + * Inspect image. + * + * TODO: indicate that the .src was a buffer, data uri etc + * + * @return {String} + * @api public + */ + +Image.prototype.inspect = function(){ + return '[Image' + + (this.complete ? ':' + this.width + 'x' + this.height : '') + + (this.src ? ' ' + this.src : '') + + (this.complete ? ' complete' : '') + + ']'; +}; diff --git a/vendor/canvas/lib/jpegstream.js b/vendor/canvas/lib/jpegstream.js new file mode 100644 index 00000000..24ca6f39 --- /dev/null +++ b/vendor/canvas/lib/jpegstream.js @@ -0,0 +1,62 @@ +'use strict'; + +/*! + * Canvas - JPEGStream + * Copyright (c) 2010 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Stream = require('stream').Stream; + +/** + * Initialize a `JPEGStream` with the given `canvas`. + * + * "data" events are emitted with `Buffer` chunks, once complete the + * "end" event is emitted. The following example will stream to a file + * named "./my.jpeg". + * + * var out = fs.createWriteStream(__dirname + '/my.jpeg') + * , stream = canvas.createJPEGStream(); + * + * stream.pipe(out); + * + * @param {Canvas} canvas + * @param {Boolean} sync + * @api public + */ + +var JPEGStream = module.exports = function JPEGStream(canvas, options, sync) { + var self = this + , method = sync + ? 'streamJPEGSync' + : 'streamJPEG'; + this.options = options; + this.sync = sync; + this.canvas = canvas; + this.readable = true; + // TODO: implement async + if ('streamJPEG' == method) method = 'streamJPEGSync'; + process.nextTick(function(){ + canvas[method](options.bufsize, options.quality, options.progressive, function(err, chunk){ + if (err) { + self.emit('error', err); + self.readable = false; + } else if (chunk) { + self.emit('data', chunk); + } else { + self.emit('end'); + self.readable = false; + } + }); + }); +}; + +/** + * Inherit from `EventEmitter`. + */ + +JPEGStream.prototype.__proto__ = Stream.prototype; diff --git a/vendor/canvas/lib/pdfstream.js b/vendor/canvas/lib/pdfstream.js new file mode 100644 index 00000000..92560ccb --- /dev/null +++ b/vendor/canvas/lib/pdfstream.js @@ -0,0 +1,59 @@ +'use strict'; + +/*! + * Canvas - PDFStream + */ + +/** + * Module dependencies. + */ + +var Stream = require('stream').Stream; + +/** + * Initialize a `PDFStream` with the given `canvas`. + * + * "data" events are emitted with `Buffer` chunks, once complete the + * "end" event is emitted. The following example will stream to a file + * named "./my.pdf". + * + * var out = fs.createWriteStream(__dirname + '/my.pdf') + * , stream = canvas.createPDFStream(); + * + * stream.pipe(out); + * + * @param {Canvas} canvas + * @param {Boolean} sync + * @api public + */ + +var PDFStream = module.exports = function PDFStream(canvas, sync) { + var self = this + , method = sync + ? 'streamPDFSync' + : 'streamPDF'; + this.sync = sync; + this.canvas = canvas; + this.readable = true; + // TODO: implement async + if ('streamPDF' == method) method = 'streamPDFSync'; + process.nextTick(function(){ + canvas[method](function(err, chunk, len){ + if (err) { + self.emit('error', err); + self.readable = false; + } else if (len) { + self.emit('data', chunk, len); + } else { + self.emit('end'); + self.readable = false; + } + }); + }); +}; + +/** + * Inherit from `EventEmitter`. + */ + +PDFStream.prototype.__proto__ = Stream.prototype; diff --git a/vendor/canvas/lib/pngstream.js b/vendor/canvas/lib/pngstream.js new file mode 100644 index 00000000..8a538d03 --- /dev/null +++ b/vendor/canvas/lib/pngstream.js @@ -0,0 +1,61 @@ +'use strict'; + +/*! + * Canvas - PNGStream + * Copyright (c) 2010 LearnBoost + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Stream = require('stream').Stream; + +/** + * Initialize a `PNGStream` with the given `canvas`. + * + * "data" events are emitted with `Buffer` chunks, once complete the + * "end" event is emitted. The following example will stream to a file + * named "./my.png". + * + * var out = fs.createWriteStream(__dirname + '/my.png') + * , stream = canvas.createPNGStream(); + * + * stream.pipe(out); + * + * @param {Canvas} canvas + * @param {Boolean} sync + * @api public + */ + +var PNGStream = module.exports = function PNGStream(canvas, sync) { + var self = this + , method = sync + ? 'streamPNGSync' + : 'streamPNG'; + this.sync = sync; + this.canvas = canvas; + this.readable = true; + // TODO: implement async + if ('streamPNG' == method) method = 'streamPNGSync'; + process.nextTick(function(){ + canvas[method](function(err, chunk, len){ + if (err) { + self.emit('error', err); + self.readable = false; + } else if (len) { + self.emit('data', chunk, len); + } else { + self.emit('end'); + self.readable = false; + } + }); + }); +}; + +/** + * Inherit from `EventEmitter`. + */ + +PNGStream.prototype.__proto__ = Stream.prototype; diff --git a/vendor/canvas/package.json b/vendor/canvas/package.json new file mode 100644 index 00000000..59274ab7 --- /dev/null +++ b/vendor/canvas/package.json @@ -0,0 +1,124 @@ +{ + "_args": [ + [ + { + "raw": "canvas@git+https://github.com/chearon/node-canvas.git#12971f64a66b", + "scope": null, + "escapedName": "canvas", + "name": "canvas", + "rawSpec": "git+https://github.com/chearon/node-canvas.git#12971f64a66b", + "spec": "git+https://github.com/chearon/node-canvas.git#12971f64a66b", + "type": "hosted", + "hosted": { + "type": "github", + "ssh": "git@github.com:chearon/node-canvas.git#12971f64a66b", + "sshUrl": "git+ssh://git@github.com/chearon/node-canvas.git#12971f64a66b", + "httpsUrl": "git+https://github.com/chearon/node-canvas.git#12971f64a66b", + "gitUrl": "git://github.com/chearon/node-canvas.git#12971f64a66b", + "shortcut": "github:chearon/node-canvas#12971f64a66b", + "directUrl": "https://raw.githubusercontent.com/chearon/node-canvas/12971f64a66b/package.json" + } + }, + "/usr/src/app" + ] + ], + "_from": "git+https://github.com/chearon/node-canvas.git#12971f64a66b", + "_id": "canvas@1.6.0", + "_inCache": true, + "_location": "/canvas", + "_phantomChildren": {}, + "_requested": { + "raw": "canvas@git+https://github.com/chearon/node-canvas.git#12971f64a66b", + "scope": null, + "escapedName": "canvas", + "name": "canvas", + "rawSpec": "git+https://github.com/chearon/node-canvas.git#12971f64a66b", + "spec": "git+https://github.com/chearon/node-canvas.git#12971f64a66b", + "type": "hosted", + "hosted": { + "type": "github", + "ssh": "git@github.com:chearon/node-canvas.git#12971f64a66b", + "sshUrl": "git+ssh://git@github.com/chearon/node-canvas.git#12971f64a66b", + "httpsUrl": "git+https://github.com/chearon/node-canvas.git#12971f64a66b", + "gitUrl": "git://github.com/chearon/node-canvas.git#12971f64a66b", + "shortcut": "github:chearon/node-canvas#12971f64a66b", + "directUrl": "https://raw.githubusercontent.com/chearon/node-canvas/12971f64a66b/package.json" + } + }, + "_requiredBy": [ + "/" + ], + "_resolved": "git+https://github.com/chearon/node-canvas.git#12971f64a66b154cca38d4fec5350cb43e7fae4f", + "_shasum": "78a75c2e3a5ae19115e25e847a8fb866d36a8479", + "_shrinkwrap": null, + "_spec": "canvas@git+https://github.com/chearon/node-canvas.git#12971f64a66b", + "_where": "/usr/src/app", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@learnboost.com" + }, + "bugs": { + "url": "https://github.com/Automattic/node-canvas/issues" + }, + "contributors": [ + { + "name": "Nathan Rajlich", + "email": "nathan@tootallnate.net" + }, + { + "name": "Rod Vagg", + "email": "r@va.gg" + }, + { + "name": "Juriy Zaytsev", + "email": "kangax@gmail.com" + } + ], + "dependencies": { + "nan": "^2.3.2" + }, + "description": "Canvas graphics API backed by Cairo", + "devDependencies": { + "body-parser": "^1.13.3", + "express": "^4.13.2", + "mocha": "*", + "pug": "^2.0.0-beta3", + "standard": "^7.1.1" + }, + "engines": { + "node": ">=0.8.0" + }, + "gitHead": "12971f64a66b154cca38d4fec5350cb43e7fae4f", + "gypfile": true, + "homepage": "https://github.com/Automattic/node-canvas", + "keywords": [ + "canvas", + "graphic", + "graphics", + "pixman", + "cairo", + "image", + "images", + "pdf" + ], + "license": "MIT", + "main": "./lib/canvas.js", + "name": "canvas", + "optionalDependencies": {}, + "readme": "node-canvas\n===========\n### Canvas graphics API backed by Cairo\n[![Build Status](https://travis-ci.org/Automattic/node-canvas.svg?branch=master)](https://travis-ci.org/Automattic/node-canvas)\n[![NPM version](https://badge.fury.io/js/canvas.svg)](http://badge.fury.io/js/canvas)\n\n node-canvas is a [Cairo](http://cairographics.org/) backed Canvas implementation for [NodeJS](http://nodejs.org).\n\n## Authors\n\n - TJ Holowaychuk ([tj](http://github.com/tj))\n - Nathan Rajlich ([TooTallNate](http://github.com/TooTallNate))\n - Rod Vagg ([rvagg](http://github.com/rvagg))\n - Juriy Zaytsev ([kangax](http://github.com/kangax))\n\n## Installation\n\n```bash\n$ npm install canvas\n```\n\nUnless previously installed you'll _need_ __Cairo__ and __Pango__. For system-specific installation view the [Wiki](https://github.com/Automattic/node-canvas/wiki/_pages).\n\nYou can quickly install the dependencies by using the command for your OS:\n\nOS | Command\n----- | -----\nOS X | `brew install pkg-config cairo pango libpng jpeg giflib`\nUbuntu | `sudo apt-get install libcairo2-dev libjpeg8-dev libpango1.0-dev libgif-dev build-essential g++`\nFedora | `sudo yum install cairo cairo-devel cairomm-devel libjpeg-turbo-devel pango pango-devel pangomm pangomm-devel giflib-devel`\nSolaris | `pkgin install cairo pango pkg-config xproto renderproto kbproto xextproto`\nWindows | [Instructions on our wiki](https://github.com/Automattic/node-canvas/wiki/Installation---Windows)\n\n**El Capitan users:** If you have recently updated to El Capitan and are experiencing trouble when compiling, run the following command: `xcode-select --install`. Read more about the problem [on Stack Overflow](http://stackoverflow.com/a/32929012/148072).\n\n## Screencasts\n\n - [Introduction](http://screenr.com/CTk)\n\n## Example\n\n```javascript\nvar Canvas = require('canvas')\n , Image = Canvas.Image\n , canvas = new Canvas(200, 200)\n , ctx = canvas.getContext('2d');\n\nctx.font = '30px Impact';\nctx.rotate(.1);\nctx.fillText(\"Awesome!\", 50, 100);\n\nvar te = ctx.measureText('Awesome!');\nctx.strokeStyle = 'rgba(0,0,0,0.5)';\nctx.beginPath();\nctx.lineTo(50, 102);\nctx.lineTo(50 + te.width, 102);\nctx.stroke();\n\nconsole.log('');\n```\n\n## Non-Standard API\n\n node-canvas extends the canvas API to provide interfacing with node, for example streaming PNG data, converting to a `Buffer` instance, etc. Among the interfacing API, in some cases the drawing API has been extended for SSJS image manipulation / creation usage, however keep in mind these additions may fail to render properly within browsers.\n\n### Image#src=Buffer\n\n node-canvas adds `Image#src=Buffer` support, allowing you to read images from disc, redis, etc and apply them via `ctx.drawImage()`. Below we draw scaled down squid png by reading it from the disk with node's I/O.\n\n```javascript\nfs.readFile(__dirname + '/images/squid.png', function(err, squid){\n if (err) throw err;\n img = new Image;\n img.src = squid;\n ctx.drawImage(img, 0, 0, img.width / 4, img.height / 4);\n});\n```\n\n Below is an example of a canvas drawing it-self as the source several time:\n\n```javascript\nvar img = new Image;\nimg.src = canvas.toBuffer();\nctx.drawImage(img, 0, 0, 50, 50);\nctx.drawImage(img, 50, 0, 50, 50);\nctx.drawImage(img, 100, 0, 50, 50);\n```\n\n### Image#dataMode\n\nnode-canvas adds `Image#dataMode` support, which can be used to opt-in to mime data tracking of images (currently only JPEGs).\n\nWhen mime data is tracked, in PDF mode JPEGs can be embedded directly into the output, rather than being re-encoded into PNG. This can drastically reduce filesize, and speed up rendering.\n\n```javascript\nvar img = new Image;\nimg.dataMode = Image.MODE_IMAGE; // Only image data tracked\nimg.dataMode = Image.MODE_MIME; // Only mime data tracked\nimg.dataMode = Image.MODE_MIME | Image.MODE_IMAGE; // Both are tracked\n```\n\nIf image data is not tracked, and the Image is drawn to an image rather than a PDF canvas, the output will be junk. Enabling mime data tracking has no benefits (only a slow down) unless you are generating a PDF.\n\n### Canvas#pngStream()\n\n To create a `PNGStream` simply call `canvas.pngStream()`, and the stream will start to emit _data_ events, finally emitting _end_ when finished. If an exception occurs the _error_ event is emitted.\n\n```javascript\nvar fs = require('fs')\n , out = fs.createWriteStream(__dirname + '/text.png')\n , stream = canvas.pngStream();\n\nstream.on('data', function(chunk){\n out.write(chunk);\n});\n\nstream.on('end', function(){\n console.log('saved png');\n});\n```\n\nCurrently _only_ sync streaming is supported, however we plan on supporting async streaming as well (of course :) ). Until then the `Canvas#toBuffer(callback)` alternative is async utilizing `eio_custom()`.\n\n### Canvas#jpegStream() and Canvas#syncJPEGStream()\n\nYou can likewise create a `JPEGStream` by calling `canvas.jpegStream()` with\nsome optional parameters; functionality is otherwise identical to\n`pngStream()`. See `examples/crop.js` for an example.\n\n_Note: At the moment, `jpegStream()` is the same as `syncJPEGStream()`, both\nare synchronous_\n\n```javascript\nvar stream = canvas.jpegStream({\n bufsize: 4096 // output buffer size in bytes, default: 4096\n , quality: 75 // JPEG quality (0-100) default: 75\n , progressive: false // true for progressive compression, default: false\n});\n```\n\n### Canvas#toBuffer()\n\nA call to `Canvas#toBuffer()` will return a node `Buffer` instance containing image data.\n\n```javascript\n// PNG Buffer, default settings\nvar buf = canvas.toBuffer();\n\n// PNG Buffer, zlib compression level 3 (from 0-9), faster but bigger\nvar buf2 = canvas.toBuffer(undefined, 3, canvas.PNG_FILTER_NONE);\n\n// ARGB32 Buffer, native-endian\nvar buf3 = canvas.toBuffer('raw');\nvar stride = canvas.stride;\n// In memory, this is `canvas.height * canvas.stride` bytes long.\n// The top row of pixels, in ARGB order, left-to-right, is:\nvar topPixelsARGBLeftToRight = buf3.slice(0, canvas.width * 4);\nvar row3 = buf3.slice(2 * canvas.stride, 2 * canvas.stride + canvas.width * 4);\n```\n\n### Canvas#toBuffer() async\n\nOptionally we may pass a callback function to `Canvas#toBuffer()`, and this process will be performed asynchronously, and will `callback(err, buf)`.\n\n```javascript\ncanvas.toBuffer(function(err, buf){\n\n});\n```\n\n### Canvas#toDataURL() sync and async\n\nThe following syntax patterns are supported:\n\n```javascript\nvar dataUrl = canvas.toDataURL(); // defaults to PNG\nvar dataUrl = canvas.toDataURL('image/png');\ncanvas.toDataURL(function(err, png){ }); // defaults to PNG\ncanvas.toDataURL('image/png', function(err, png){ });\ncanvas.toDataURL('image/jpeg', function(err, jpeg){ }); // sync JPEG is not supported\ncanvas.toDataURL('image/jpeg', {opts...}, function(err, jpeg){ }); // see Canvas#jpegStream for valid options\ncanvas.toDataURL('image/jpeg', quality, function(err, jpeg){ }); // spec-following; quality from 0 to 1\n```\n\n### Canvas.registerFont for bundled fonts\n\nIt can be useful to use a custom font file if you are distributing code that uses node-canvas and a specific font. Or perhaps you are using it to do automated tests and you want the renderings to be the same across operating systems regardless of what fonts are installed.\n\nTo do that, you should use `Canvas.registerFont`.\n\n**You need to call it before the Canvas is created**\n\n```javascript\nCanvas.registerFont('comicsans.ttf', {family: 'Comic Sans'});\n\nvar canvas = new Canvas(500, 500),\n ctx = canvas.getContext('2d');\n\nctx.font = '12px \"Comic Sans\"';\nctx.fillText(250, 10, 'Everyone hates this font :(');\n```\n\nThe second argument is an object with properties that resemble the CSS properties that are specified in `@font-face` rules. You must specify at least `family`. `weight`, and `style` are optional (and default to \"normal\").\n\n### CanvasRenderingContext2D#patternQuality\n\nGiven one of the values below will alter pattern (gradients, images, etc) render quality, defaults to _good_.\n\n - fast\n - good\n - best\n - nearest\n - bilinear\n\n### CanvasRenderingContext2D#textDrawingMode\n\nCan be either `path` or `glyph`. Using `glyph` is much faster than `path` for drawing, and when using a PDF context will embed the text natively, so will be selectable and lower filesize. The downside is that cairo does not have any subpixel precision for `glyph`, so this will be noticeably lower quality for text positioning in cases such as rotated text. Also, strokeText in `glyph` will act the same as fillText, except using the stroke style for the fill.\n\nDefaults to _path_.\n\nThis property is tracked as part of the canvas state in save/restore.\n\n### CanvasRenderingContext2D#filter\n\nLike `patternQuality`, but applies to transformations effecting more than just patterns. Defaults to _good_.\n\n - fast\n - good\n - best\n - nearest\n - bilinear\n\n### Global Composite Operations\n\nIn addition to those specified and commonly implemented by browsers, the following have been added:\n\n - multiply\n - screen\n - overlay\n - hard-light\n - soft-light\n - hsl-hue\n - hsl-saturation\n - hsl-color\n - hsl-luminosity\n\n## Anti-Aliasing\n\n Set anti-aliasing mode\n\n - default\n - none\n - gray\n - subpixel\n\n For example:\n\n```javascript\nctx.antialias = 'none';\n```\n\n## PDF Support\n\n Basic PDF support was added in 0.11.0. Make sure to install cairo with `--enable-pdf=yes` for the PDF backend. node-canvas must know that it is creating\n a PDF on initialization, using the \"pdf\" string:\n\n```js\nvar canvas = new Canvas(200, 500, 'pdf');\n```\n\n An additional method `.addPage()` is then available to create\n multiple page PDFs:\n\n```js\nctx.font = '22px Helvetica';\nctx.fillText('Hello World', 50, 80);\nctx.addPage();\n\nctx.font = '22px Helvetica';\nctx.fillText('Hello World 2', 50, 80);\nctx.addPage();\n\nctx.font = '22px Helvetica';\nctx.fillText('Hello World 3', 50, 80);\nctx.addPage();\n```\n\n## SVG support\n\n Just like PDF support, make sure to install cairo with `--enable-svg=yes`.\n You also need to tell node-canvas that it is working on SVG upon its initialization:\n\n```js\nvar canvas = new Canvas(200, 500, 'svg');\n// Use the normal primitives.\nfs.writeFile('out.svg', canvas.toBuffer());\n```\n\n## Benchmarks\n\n Although node-canvas is extremely new, and we have not even begun optimization yet it is already quite fast. For benchmarks vs other node canvas implementations view this [gist](https://gist.github.com/664922), or update the submodules and run `$ make benchmark` yourself.\n\n## Contribute\n\n Want to contribute to node-canvas? patches for features, bug fixes, documentation, examples and others are certainly welcome. Take a look at the [issue queue](https://github.com/Automattic/node-canvas/issues) for existing issues.\n\n## Examples\n\n Examples are placed in _./examples_, be sure to check them out! most produce a png image of the same name, and others such as _live-clock.js_ launch an http server to be viewed in the browser.\n\n## Testing\n\nIf you have not previously, init git submodules:\n\n $ git submodule update --init\n\nInstall the node modules:\n\n $ npm install\n\nBuild node-canvas:\n\n $ node-gyp rebuild\n\nUnit tests:\n\n $ make test\n\nVisual tests:\n\n $ make test-server\n\n## Versions\n\nTested with and designed for:\n\n - node 0.4.2\n - cairo 1.8.6\n\nFor node 0.2.x `node-canvas` <= 0.4.3 may be used,\n0.5.0 and above are designed for node 0.4.x only.\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2010 LearnBoost, and contributors <dev@learnboost.com>\n\nCopyright (c) 2014 Automattic, Inc and contributors <dev@automattic.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", + "readmeFilename": "Readme.md", + "repository": { + "type": "git", + "url": "git://github.com/Automattic/node-canvas.git" + }, + "scripts": { + "benchmark": "node benchmarks/run.js", + "install": "node-gyp rebuild", + "prebenchmark": "node-gyp build", + "pretest": "node-gyp build", + "pretest-server": "node-gyp build", + "test": "standard examples/*.js && mocha test/*.test.js", + "test-server": "node test/server.js" + }, + "version": "1.6.0" +} diff --git a/vendor/canvas/src/Canvas.cc b/vendor/canvas/src/Canvas.cc new file mode 100644 index 00000000..17c2bd62 --- /dev/null +++ b/vendor/canvas/src/Canvas.cc @@ -0,0 +1,842 @@ +// +// Canvas.cc +// +// Copyright (c) 2010 LearnBoost +// + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Canvas.h" +#include "PNG.h" +#include "CanvasRenderingContext2d.h" +#include "closure.h" +#include "register_font.h" + +#ifdef HAVE_JPEG +#include "JPEGStream.h" +#endif + +#define GENERIC_FACE_ERROR \ + "The second argument to registerFont is required, and should be an object " \ + "with at least a family (string) and optionally weight (string/number) " \ + "and style (string)." + +Nan::Persistent Canvas::constructor; + +/* + * Initialize Canvas. + */ + +void +Canvas::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) { + Nan::HandleScope scope; + + // Constructor + Local ctor = Nan::New(Canvas::New); + constructor.Reset(ctor); + ctor->InstanceTemplate()->SetInternalFieldCount(1); + ctor->SetClassName(Nan::New("Canvas").ToLocalChecked()); + + // Prototype + Local proto = ctor->PrototypeTemplate(); + Nan::SetPrototypeMethod(ctor, "toBuffer", ToBuffer); + Nan::SetPrototypeMethod(ctor, "streamPNGSync", StreamPNGSync); + Nan::SetPrototypeMethod(ctor, "streamPDFSync", StreamPDFSync); +#ifdef HAVE_JPEG + Nan::SetPrototypeMethod(ctor, "streamJPEGSync", StreamJPEGSync); +#endif + Nan::SetAccessor(proto, Nan::New("type").ToLocalChecked(), GetType); + Nan::SetAccessor(proto, Nan::New("stride").ToLocalChecked(), GetStride); + Nan::SetAccessor(proto, Nan::New("width").ToLocalChecked(), GetWidth, SetWidth); + Nan::SetAccessor(proto, Nan::New("height").ToLocalChecked(), GetHeight, SetHeight); + + Nan::SetTemplate(proto, "PNG_NO_FILTERS", Nan::New(PNG_NO_FILTERS)); + Nan::SetTemplate(proto, "PNG_FILTER_NONE", Nan::New(PNG_FILTER_NONE)); + Nan::SetTemplate(proto, "PNG_FILTER_SUB", Nan::New(PNG_FILTER_SUB)); + Nan::SetTemplate(proto, "PNG_FILTER_UP", Nan::New(PNG_FILTER_UP)); + Nan::SetTemplate(proto, "PNG_FILTER_AVG", Nan::New(PNG_FILTER_AVG)); + Nan::SetTemplate(proto, "PNG_FILTER_PAETH", Nan::New(PNG_FILTER_PAETH)); + Nan::SetTemplate(proto, "PNG_ALL_FILTERS", Nan::New(PNG_ALL_FILTERS)); + + // Class methods + Nan::SetMethod(ctor, "registerFont", RegisterFont); + + Nan::Set(target, Nan::New("Canvas").ToLocalChecked(), ctor->GetFunction()); +} + +/* + * Initialize a Canvas with the given width and height. + */ + +NAN_METHOD(Canvas::New) { + if (!info.IsConstructCall()) { + return Nan::ThrowTypeError("Class constructors cannot be invoked without 'new'"); + } + + int width = 0, height = 0; + canvas_type_t type = CANVAS_TYPE_IMAGE; + if (info[0]->IsNumber()) width = info[0]->Uint32Value(); + if (info[1]->IsNumber()) height = info[1]->Uint32Value(); + if (info[2]->IsString()) type = !strcmp("pdf", *String::Utf8Value(info[2])) + ? CANVAS_TYPE_PDF + : !strcmp("svg", *String::Utf8Value(info[2])) + ? CANVAS_TYPE_SVG + : CANVAS_TYPE_IMAGE; + Canvas *canvas = new Canvas(width, height, type); + canvas->Wrap(info.This()); + info.GetReturnValue().Set(info.This()); +} + +/* + * Get type string. + */ + +NAN_GETTER(Canvas::GetType) { + Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(canvas->isPDF() ? "pdf" : canvas->isSVG() ? "svg" : "image").ToLocalChecked()); +} + +/* + * Get stride. + */ +NAN_GETTER(Canvas::GetStride) { + Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(canvas->stride())); +} + +/* + * Get width. + */ + +NAN_GETTER(Canvas::GetWidth) { + Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(canvas->width)); +} + +/* + * Set width. + */ + +NAN_SETTER(Canvas::SetWidth) { + if (value->IsNumber()) { + Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); + canvas->width = value->Uint32Value(); + canvas->resurface(info.This()); + } +} + +/* + * Get height. + */ + +NAN_GETTER(Canvas::GetHeight) { + Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(canvas->height)); +} + +/* + * Set height. + */ + +NAN_SETTER(Canvas::SetHeight) { + if (value->IsNumber()) { + Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); + canvas->height = value->Uint32Value(); + canvas->resurface(info.This()); + } +} + +/* + * Canvas::ToBuffer callback. + */ + +static cairo_status_t +toBuffer(void *c, const uint8_t *data, unsigned len) { + closure_t *closure = (closure_t *) c; + + if (closure->len + len > closure->max_len) { + uint8_t *data; + unsigned max = closure->max_len; + + do { + max *= 2; + } while (closure->len + len > max); + + data = (uint8_t *) realloc(closure->data, max); + if (!data) return CAIRO_STATUS_NO_MEMORY; + closure->data = data; + closure->max_len = max; + } + + memcpy(closure->data + closure->len, data, len); + closure->len += len; + + return CAIRO_STATUS_SUCCESS; +} + +/* + * EIO toBuffer callback. + */ + +#if NODE_VERSION_AT_LEAST(0, 6, 0) +void +Canvas::ToBufferAsync(uv_work_t *req) { +#elif NODE_VERSION_AT_LEAST(0, 5, 4) +void +Canvas::EIO_ToBuffer(eio_req *req) { +#else +int +Canvas::EIO_ToBuffer(eio_req *req) { +#endif + closure_t *closure = (closure_t *) req->data; + + closure->status = canvas_write_to_png_stream( + closure->canvas->surface() + , toBuffer + , closure); + +#if !NODE_VERSION_AT_LEAST(0, 5, 4) + return 0; +#endif +} + +/* + * EIO after toBuffer callback. + */ + +#if NODE_VERSION_AT_LEAST(0, 6, 0) +void +Canvas::ToBufferAsyncAfter(uv_work_t *req) { +#else +int +Canvas::EIO_AfterToBuffer(eio_req *req) { +#endif + + Nan::HandleScope scope; + closure_t *closure = (closure_t *) req->data; +#if NODE_VERSION_AT_LEAST(0, 6, 0) + delete req; +#else + ev_unref(EV_DEFAULT_UC); +#endif + + if (closure->status) { + Local argv[1] = { Canvas::Error(closure->status) }; + closure->pfn->Call(1, argv); + } else { + Local buf = Nan::CopyBuffer((char*)closure->data, closure->len).ToLocalChecked(); + memcpy(Buffer::Data(buf), closure->data, closure->len); + Local argv[2] = { Nan::Null(), buf }; + closure->pfn->Call(2, argv); + } + + closure->canvas->Unref(); + delete closure->pfn; + closure_destroy(closure); + free(closure); + +#if !NODE_VERSION_AT_LEAST(0, 6, 0) + return 0; +#endif +} + +/* + * Convert PNG data to a node::Buffer, async when a + * callback function is passed. + */ + +NAN_METHOD(Canvas::ToBuffer) { + cairo_status_t status; + uint32_t compression_level = 6; + uint32_t filter = PNG_ALL_FILTERS; + Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); + + // TODO: async / move this out + if (canvas->isPDF() || canvas->isSVG()) { + cairo_surface_finish(canvas->surface()); + closure_t *closure = (closure_t *) canvas->closure(); + + Local buf = Nan::CopyBuffer((char*) closure->data, closure->len).ToLocalChecked(); + info.GetReturnValue().Set(buf); + return; + } + + if (info.Length() >= 1 && info[0]->StrictEquals(Nan::New("raw").ToLocalChecked())) { + // Return raw ARGB data -- just a memcpy() + cairo_surface_t *surface = canvas->surface(); + cairo_surface_flush(surface); + const unsigned char *data = cairo_image_surface_get_data(surface); + Local buf = Nan::CopyBuffer(reinterpret_cast(data), canvas->nBytes()).ToLocalChecked(); + info.GetReturnValue().Set(buf); + return; + } + + if (info.Length() > 1 && !(info[1]->IsUndefined() && info[2]->IsUndefined())) { + if (!info[1]->IsUndefined()) { + bool good = true; + if (info[1]->IsNumber()) { + compression_level = info[1]->Uint32Value(); + } else if (info[1]->IsString()) { + if (info[1]->StrictEquals(Nan::New("0").ToLocalChecked())) { + compression_level = 0; + } else { + uint32_t tmp = info[1]->Uint32Value(); + if (tmp == 0) { + good = false; + } else { + compression_level = tmp; + } + } + } else { + good = false; + } + + if (good) { + if (compression_level > 9) { + return Nan::ThrowRangeError("Allowed compression levels lie in the range [0, 9]."); + } + } else { + return Nan::ThrowTypeError("Compression level must be a number."); + } + } + + if (!info[2]->IsUndefined()) { + if (info[2]->IsUint32()) { + filter = info[2]->Uint32Value(); + } else { + return Nan::ThrowTypeError("Invalid filter value."); + } + } + } + + // Async + if (info[0]->IsFunction()) { + closure_t *closure = (closure_t *) malloc(sizeof(closure_t)); + status = closure_init(closure, canvas, compression_level, filter); + + // ensure closure is ok + if (status) { + closure_destroy(closure); + free(closure); + return Nan::ThrowError(Canvas::Error(status)); + } + + // TODO: only one callback fn in closure + canvas->Ref(); + closure->pfn = new Nan::Callback(info[0].As()); + +#if NODE_VERSION_AT_LEAST(0, 6, 0) + uv_work_t* req = new uv_work_t; + req->data = closure; + uv_queue_work(uv_default_loop(), req, ToBufferAsync, (uv_after_work_cb)ToBufferAsyncAfter); +#else + eio_custom(EIO_ToBuffer, EIO_PRI_DEFAULT, EIO_AfterToBuffer, closure); + ev_ref(EV_DEFAULT_UC); +#endif + + return; + // Sync + } else { + closure_t closure; + status = closure_init(&closure, canvas, compression_level, filter); + + // ensure closure is ok + if (status) { + closure_destroy(&closure); + return Nan::ThrowError(Canvas::Error(status)); + } + + TryCatch try_catch; + status = canvas_write_to_png_stream(canvas->surface(), toBuffer, &closure); + + if (try_catch.HasCaught()) { + closure_destroy(&closure); + try_catch.ReThrow(); + return; + } else if (status) { + closure_destroy(&closure); + return Nan::ThrowError(Canvas::Error(status)); + } else { + Local buf = Nan::CopyBuffer((char *)closure.data, closure.len).ToLocalChecked(); + closure_destroy(&closure); + info.GetReturnValue().Set(buf); + return; + } + } +} + +/* + * Canvas::StreamPNG callback. + */ + +static cairo_status_t +streamPNG(void *c, const uint8_t *data, unsigned len) { + Nan::HandleScope scope; + closure_t *closure = (closure_t *) c; + Local buf = Nan::CopyBuffer((char *)data, len).ToLocalChecked(); + Local argv[3] = { + Nan::Null() + , buf + , Nan::New(len) }; + Nan::MakeCallback(Nan::GetCurrentContext()->Global(), (v8::Local)closure->fn, 3, argv); + return CAIRO_STATUS_SUCCESS; +} + +/* + * Stream PNG data synchronously. + */ + +NAN_METHOD(Canvas::StreamPNGSync) { + uint32_t compression_level = 6; + uint32_t filter = PNG_ALL_FILTERS; + // TODO: async as well + if (!info[0]->IsFunction()) + return Nan::ThrowTypeError("callback function required"); + + if (info.Length() > 1 && !(info[1]->IsUndefined() && info[2]->IsUndefined())) { + if (!info[1]->IsUndefined()) { + bool good = true; + if (info[1]->IsNumber()) { + compression_level = info[1]->Uint32Value(); + } else if (info[1]->IsString()) { + if (info[1]->StrictEquals(Nan::New("0").ToLocalChecked())) { + compression_level = 0; + } else { + uint32_t tmp = info[1]->Uint32Value(); + if (tmp == 0) { + good = false; + } else { + compression_level = tmp; + } + } + } else { + good = false; + } + + if (good) { + if (compression_level > 9) { + return Nan::ThrowRangeError("Allowed compression levels lie in the range [0, 9]."); + } + } else { + return Nan::ThrowTypeError("Compression level must be a number."); + } + } + + if (!info[2]->IsUndefined()) { + if (info[2]->IsUint32()) { + filter = info[2]->Uint32Value(); + } else { + return Nan::ThrowTypeError("Invalid filter value."); + } + } + } + + + Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); + closure_t closure; + closure.fn = Local::Cast(info[0]); + closure.compression_level = compression_level; + closure.filter = filter; + + TryCatch try_catch; + + cairo_status_t status = canvas_write_to_png_stream(canvas->surface(), streamPNG, &closure); + + if (try_catch.HasCaught()) { + try_catch.ReThrow(); + return; + } else if (status) { + Local argv[1] = { Canvas::Error(status) }; + Nan::MakeCallback(Nan::GetCurrentContext()->Global(), (v8::Local)closure.fn, 1, argv); + } else { + Local argv[3] = { + Nan::Null() + , Nan::Null() + , Nan::New(0) }; + Nan::MakeCallback(Nan::GetCurrentContext()->Global(), (v8::Local)closure.fn, 1, argv); + } + return; +} + +/* + * Canvas::StreamPDF FreeCallback + */ + +void stream_pdf_free(char *, void *) {} + +/* + * Canvas::StreamPDF callback. + */ + +static cairo_status_t +streamPDF(void *c, const uint8_t *data, unsigned len) { + Nan::HandleScope scope; + closure_t *closure = static_cast(c); + Local buf = Nan::NewBuffer(const_cast(reinterpret_cast(data)), len, stream_pdf_free, 0).ToLocalChecked(); + Local argv[3] = { + Nan::Null() + , buf + , Nan::New(len) }; + Nan::MakeCallback(Nan::GetCurrentContext()->Global(), closure->fn, 3, argv); + return CAIRO_STATUS_SUCCESS; +} + + +cairo_status_t canvas_write_to_pdf_stream(cairo_surface_t *surface, cairo_write_func_t write_func, void *closure) { + closure_t *pdf_closure = static_cast(closure); + size_t whole_chunks = pdf_closure->len / PAGE_SIZE; + size_t remainder = pdf_closure->len - whole_chunks * PAGE_SIZE; + + for (size_t i = 0; i < whole_chunks; ++i) { + write_func(pdf_closure, &pdf_closure->data[i * PAGE_SIZE], PAGE_SIZE); + } + + if (remainder) { + write_func(pdf_closure, &pdf_closure->data[whole_chunks * PAGE_SIZE], remainder); + } + + return CAIRO_STATUS_SUCCESS; +} + +/* + * Stream PDF data synchronously. + */ + +NAN_METHOD(Canvas::StreamPDFSync) { + if (!info[0]->IsFunction()) + return Nan::ThrowTypeError("callback function required"); + + Canvas *canvas = Nan::ObjectWrap::Unwrap(info.Holder()); + + if (!canvas->isPDF()) + return Nan::ThrowTypeError("wrong canvas type"); + + cairo_surface_finish(canvas->surface()); + + closure_t closure; + closure.data = static_cast(canvas->closure())->data; + closure.len = static_cast(canvas->closure())->len; + closure.fn = info[0].As(); + + Nan::TryCatch try_catch; + + cairo_status_t status = canvas_write_to_pdf_stream(canvas->surface(), streamPDF, &closure); + + if (try_catch.HasCaught()) { + try_catch.ReThrow(); + } else if (status) { + Local error = Canvas::Error(status); + Nan::Call(closure.fn, Nan::GetCurrentContext()->Global(), 1, &error); + } else { + Local argv[3] = { + Nan::Null() + , Nan::Null() + , Nan::New(0) }; + Nan::Call(closure.fn, Nan::GetCurrentContext()->Global(), 3, argv); + } +} + +/* + * Stream JPEG data synchronously. + */ + +#ifdef HAVE_JPEG + +NAN_METHOD(Canvas::StreamJPEGSync) { + // TODO: async as well + if (!info[0]->IsNumber()) + return Nan::ThrowTypeError("buffer size required"); + if (!info[1]->IsNumber()) + return Nan::ThrowTypeError("quality setting required"); + if (!info[2]->IsBoolean()) + return Nan::ThrowTypeError("progressive setting required"); + if (!info[3]->IsFunction()) + return Nan::ThrowTypeError("callback function required"); + + Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); + closure_t closure; + closure.fn = Local::Cast(info[3]); + + TryCatch try_catch; + write_to_jpeg_stream(canvas->surface(), info[0]->NumberValue(), info[1]->NumberValue(), info[2]->BooleanValue(), &closure); + + if (try_catch.HasCaught()) { + try_catch.ReThrow(); + } + return; +} + +#endif + +NAN_METHOD(Canvas::RegisterFont) { + FontFace face; + + if (!info[0]->IsString()) { + return Nan::ThrowError("Wrong argument type"); + } + + String::Utf8Value filePath(info[0]); + + if (!register_font((unsigned char*) *filePath, &face.target_desc)) { + Nan::ThrowError("Could not load font to the system's font host"); + } else { + PangoFontDescription* d = pango_font_description_new(); + + if (!info[1]->IsObject()) { + Nan::ThrowError(GENERIC_FACE_ERROR); + } else { // now check the attrs, there are many ways to be wrong + Local desc = info[1]->ToObject(); + Local family_prop = Nan::New("family").ToLocalChecked(); + Local weight_prop = Nan::New("weight").ToLocalChecked(); + Local style_prop = Nan::New("style").ToLocalChecked(); + + const char* family; + const char* weight = "normal"; + const char* style = "normal"; + + Local family_val = desc->Get(family_prop); + if (family_val->IsString()) { + family = strdup(*String::Utf8Value(family_val)); + } else { + Nan::ThrowError(GENERIC_FACE_ERROR); + return; + } + + if (desc->HasOwnProperty(weight_prop)) { + Local weight_val = desc->Get(weight_prop); + if (weight_val->IsString() || weight_val->IsNumber()) { + weight = strdup(*String::Utf8Value(weight_val)); + } else { + Nan::ThrowError(GENERIC_FACE_ERROR); + return; + } + } + + if (desc->HasOwnProperty(style_prop)) { + Local style_val = desc->Get(style_prop); + if (style_val->IsString()) { + style = strdup(*String::Utf8Value(style_val)); + } else { + Nan::ThrowError(GENERIC_FACE_ERROR); + return; + } + } + + pango_font_description_set_weight(d, Canvas::GetWeightFromCSSString(weight)); + pango_font_description_set_style(d, Canvas::GetStyleFromCSSString(style)); + pango_font_description_set_family(d, family); + + free((char*)family); + if (desc->HasOwnProperty(weight_prop)) free((char*)weight); + if (desc->HasOwnProperty(style_prop)) free((char*)style); + + face.user_desc = d; + _font_face_list.push_back(face); + } + } +} + +/* + * Initialize cairo surface. + */ + +Canvas::Canvas(int w, int h, canvas_type_t t): Nan::ObjectWrap() { + type = t; + width = w; + height = h; + _surface = NULL; + _closure = NULL; + + if (CANVAS_TYPE_PDF == t) { + _closure = malloc(sizeof(closure_t)); + assert(_closure); + cairo_status_t status = closure_init((closure_t *) _closure, this, 0, PNG_NO_FILTERS); + assert(status == CAIRO_STATUS_SUCCESS); + _surface = cairo_pdf_surface_create_for_stream(toBuffer, _closure, w, h); + } else if (CANVAS_TYPE_SVG == t) { + _closure = malloc(sizeof(closure_t)); + assert(_closure); + cairo_status_t status = closure_init((closure_t *) _closure, this, 0, PNG_NO_FILTERS); + assert(status == CAIRO_STATUS_SUCCESS); + _surface = cairo_svg_surface_create_for_stream(toBuffer, _closure, w, h); + } else { + _surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, w, h); + assert(_surface); + Nan::AdjustExternalMemory(nBytes()); + } +} + +/* + * Destroy cairo surface. + */ + +Canvas::~Canvas() { + switch (type) { + case CANVAS_TYPE_PDF: + case CANVAS_TYPE_SVG: + cairo_surface_finish(_surface); + closure_destroy((closure_t *) _closure); + free(_closure); + cairo_surface_destroy(_surface); + break; + case CANVAS_TYPE_IMAGE: + int oldNBytes = nBytes(); + cairo_surface_destroy(_surface); + Nan::AdjustExternalMemory(-oldNBytes); + break; + } +} + +std::vector +_init_font_face_list() { + std::vector x; + return x; +} + +std::vector Canvas::_font_face_list = _init_font_face_list(); + +/* + * Get a PangoStyle from a CSS string (like "italic") + */ + +PangoStyle +Canvas::GetStyleFromCSSString(const char *style) { + PangoStyle s = PANGO_STYLE_NORMAL; + + if (strlen(style) > 0) { + if (0 == strcmp("italic", style)) { + s = PANGO_STYLE_ITALIC; + } else if (0 == strcmp("oblique", style)) { + s = PANGO_STYLE_OBLIQUE; + } + } + + return s; +} + +/* + * Get a PangoWeight from a CSS string ("bold", "100", etc) + */ + +PangoWeight +Canvas::GetWeightFromCSSString(const char *weight) { + PangoWeight w = PANGO_WEIGHT_NORMAL; + + if (strlen(weight) > 0) { + if (0 == strcmp("bold", weight)) { + w = PANGO_WEIGHT_BOLD; + } else if (0 == strcmp("100", weight)) { + w = PANGO_WEIGHT_THIN; + } else if (0 == strcmp("200", weight)) { + w = PANGO_WEIGHT_ULTRALIGHT; + } else if (0 == strcmp("300", weight)) { + w = PANGO_WEIGHT_LIGHT; + } else if (0 == strcmp("400", weight)) { + w = PANGO_WEIGHT_NORMAL; + } else if (0 == strcmp("500", weight)) { + w = PANGO_WEIGHT_MEDIUM; + } else if (0 == strcmp("600", weight)) { + w = PANGO_WEIGHT_SEMIBOLD; + } else if (0 == strcmp("700", weight)) { + w = PANGO_WEIGHT_BOLD; + } else if (0 == strcmp("800", weight)) { + w = PANGO_WEIGHT_ULTRABOLD; + } else if (0 == strcmp("900", weight)) { + w = PANGO_WEIGHT_HEAVY; + } + } + + return w; +} + +/* + * Tries to find a matching font given to registerFont + */ + +PangoFontDescription * +Canvas::FindCustomFace(PangoFontDescription *desc) { + PangoFontDescription* best_match = NULL; + PangoFontDescription* best_match_target = NULL; + std::vector::iterator it = _font_face_list.begin(); + + while (it != _font_face_list.end()) { + FontFace f = *it; + + if (g_ascii_strcasecmp(pango_font_description_get_family(desc), + pango_font_description_get_family(f.user_desc)) == 0) { + + if (best_match == NULL || pango_font_description_better_match(desc, best_match, f.user_desc)) { + best_match = f.user_desc; + best_match_target = f.target_desc; + } + } + + ++it; + } + + return best_match_target; +} + +/* + * Re-alloc the surface, destroying the previous. + */ + +void +Canvas::resurface(Local canvas) { + Nan::HandleScope scope; + Local context; + switch (type) { + case CANVAS_TYPE_PDF: + cairo_pdf_surface_set_size(_surface, width, height); + break; + case CANVAS_TYPE_SVG: + // Re-surface + cairo_surface_finish(_surface); + closure_destroy((closure_t *) _closure); + cairo_surface_destroy(_surface); + closure_init((closure_t *) _closure, this, 0, PNG_NO_FILTERS); + _surface = cairo_svg_surface_create_for_stream(toBuffer, _closure, width, height); + + // Reset context + context = canvas->Get(Nan::New("context").ToLocalChecked()); + if (!context->IsUndefined()) { + Context2d *context2d = Nan::ObjectWrap::Unwrap(context->ToObject()); + cairo_t *prev = context2d->context(); + context2d->setContext(cairo_create(surface())); + cairo_destroy(prev); + } + break; + case CANVAS_TYPE_IMAGE: + // Re-surface + size_t oldNBytes = nBytes(); + cairo_surface_destroy(_surface); + _surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height); + Nan::AdjustExternalMemory(nBytes() - oldNBytes); + + // Reset context + context = canvas->Get(Nan::New("context").ToLocalChecked()); + if (!context->IsUndefined()) { + Context2d *context2d = Nan::ObjectWrap::Unwrap(context->ToObject()); + cairo_t *prev = context2d->context(); + context2d->setContext(cairo_create(surface())); + cairo_destroy(prev); + } + break; + } +} + +/* + * Construct an Error from the given cairo status. + */ + +Local +Canvas::Error(cairo_status_t status) { + return Exception::Error(Nan::New(cairo_status_to_string(status)).ToLocalChecked()); +} diff --git a/vendor/canvas/src/Canvas.h b/vendor/canvas/src/Canvas.h new file mode 100644 index 00000000..b782e7bb --- /dev/null +++ b/vendor/canvas/src/Canvas.h @@ -0,0 +1,111 @@ + +// +// Canvas.h +// +// Copyright (c) 2010 LearnBoost +// + +#ifndef __NODE_CANVAS_H__ +#define __NODE_CANVAS_H__ + +#include +#include +#include +#include +#include +#include +#include +#include + + +using namespace node; +using namespace v8; + +/* + * Maxmimum states per context. + * TODO: remove/resize + */ + +#ifndef CANVAS_MAX_STATES +#define CANVAS_MAX_STATES 64 +#endif + +/* + * Canvas types. + */ + +typedef enum { + CANVAS_TYPE_IMAGE, + CANVAS_TYPE_PDF, + CANVAS_TYPE_SVG +} canvas_type_t; + +/** + * FontFace describes a font file in terms of one PangoFontDescription that + * will resolve to it and one that the user describes it as (like @font-face) + */ +class FontFace { + public: + PangoFontDescription *target_desc; + PangoFontDescription *user_desc; +}; + +/* + * Canvas. + */ + +class Canvas: public Nan::ObjectWrap { + public: + int width; + int height; + canvas_type_t type; + static Nan::Persistent constructor; + static void Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target); + static NAN_METHOD(New); + static NAN_METHOD(ToBuffer); + static NAN_GETTER(GetType); + static NAN_GETTER(GetStride); + static NAN_GETTER(GetWidth); + static NAN_GETTER(GetHeight); + static NAN_SETTER(SetWidth); + static NAN_SETTER(SetHeight); + static NAN_METHOD(StreamPNGSync); + static NAN_METHOD(StreamPDFSync); + static NAN_METHOD(StreamJPEGSync); + static NAN_METHOD(RegisterFont); + static Local Error(cairo_status_t status); +#if NODE_VERSION_AT_LEAST(0, 6, 0) + static void ToBufferAsync(uv_work_t *req); + static void ToBufferAsyncAfter(uv_work_t *req); +#else + static +#if NODE_VERSION_AT_LEAST(0, 5, 4) + void +#else + int +#endif + EIO_ToBuffer(eio_req *req); + static int EIO_AfterToBuffer(eio_req *req); +#endif + static PangoWeight GetWeightFromCSSString(const char *weight); + static PangoStyle GetStyleFromCSSString(const char *style); + static PangoFontDescription* FindCustomFace(PangoFontDescription *desc); + + inline bool isPDF(){ return CANVAS_TYPE_PDF == type; } + inline bool isSVG(){ return CANVAS_TYPE_SVG == type; } + inline cairo_surface_t *surface(){ return _surface; } + inline void *closure(){ return _closure; } + inline uint8_t *data(){ return cairo_image_surface_get_data(_surface); } + inline int stride(){ return cairo_image_surface_get_stride(_surface); } + inline int nBytes(){ return height * stride(); } + Canvas(int width, int height, canvas_type_t type); + void resurface(Local canvas); + + private: + ~Canvas(); + cairo_surface_t *_surface; + void *_closure; + static std::vector _font_face_list; +}; + +#endif diff --git a/vendor/canvas/src/CanvasGradient.cc b/vendor/canvas/src/CanvasGradient.cc new file mode 100644 index 00000000..8063b6da --- /dev/null +++ b/vendor/canvas/src/CanvasGradient.cc @@ -0,0 +1,122 @@ + +// +// Gradient.cc +// +// Copyright (c) 2010 LearnBoost +// + +#include "color.h" +#include "Canvas.h" +#include "CanvasGradient.h" + +Nan::Persistent Gradient::constructor; + +/* + * Initialize CanvasGradient. + */ + +void +Gradient::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) { + Nan::HandleScope scope; + + // Constructor + Local ctor = Nan::New(Gradient::New); + constructor.Reset(ctor); + ctor->InstanceTemplate()->SetInternalFieldCount(1); + ctor->SetClassName(Nan::New("CanvasGradient").ToLocalChecked()); + + // Prototype + Nan::SetPrototypeMethod(ctor, "addColorStop", AddColorStop); + Nan::Set(target, Nan::New("CanvasGradient").ToLocalChecked(), ctor->GetFunction()); +} + +/* + * Initialize a new CanvasGradient. + */ + +NAN_METHOD(Gradient::New) { + if (!info.IsConstructCall()) { + return Nan::ThrowTypeError("Class constructors cannot be invoked without 'new'"); + } + + // Linear + if (4 == info.Length()) { + Gradient *grad = new Gradient( + info[0]->NumberValue() + , info[1]->NumberValue() + , info[2]->NumberValue() + , info[3]->NumberValue()); + grad->Wrap(info.This()); + info.GetReturnValue().Set(info.This()); + return; + } + + // Radial + if (6 == info.Length()) { + Gradient *grad = new Gradient( + info[0]->NumberValue() + , info[1]->NumberValue() + , info[2]->NumberValue() + , info[3]->NumberValue() + , info[4]->NumberValue() + , info[5]->NumberValue()); + grad->Wrap(info.This()); + info.GetReturnValue().Set(info.This()); + return; + } + + return Nan::ThrowTypeError("invalid arguments"); +} + +/* + * Add color stop. + */ + +NAN_METHOD(Gradient::AddColorStop) { + if (!info[0]->IsNumber()) + return Nan::ThrowTypeError("offset required"); + if (!info[1]->IsString()) + return Nan::ThrowTypeError("color string required"); + + Gradient *grad = Nan::ObjectWrap::Unwrap(info.This()); + short ok; + String::Utf8Value str(info[1]); + uint32_t rgba = rgba_from_string(*str, &ok); + + if (ok) { + rgba_t color = rgba_create(rgba); + cairo_pattern_add_color_stop_rgba( + grad->pattern() + , info[0]->NumberValue() + , color.r + , color.g + , color.b + , color.a); + } else { + return Nan::ThrowTypeError("parse color failed"); + } +} + +/* + * Initialize linear gradient. + */ + +Gradient::Gradient(double x0, double y0, double x1, double y1) { + _pattern = cairo_pattern_create_linear(x0, y0, x1, y1); +} + +/* + * Initialize radial gradient. + */ + +Gradient::Gradient(double x0, double y0, double r0, double x1, double y1, double r1) { + _pattern = cairo_pattern_create_radial(x0, y0, r0, x1, y1, r1); +} + +/* + * Destroy the pattern. + */ + +Gradient::~Gradient() { + cairo_pattern_destroy(_pattern); +} diff --git a/vendor/canvas/src/CanvasGradient.h b/vendor/canvas/src/CanvasGradient.h new file mode 100644 index 00000000..2459eb60 --- /dev/null +++ b/vendor/canvas/src/CanvasGradient.h @@ -0,0 +1,28 @@ + +// +// CanvasGradient.h +// +// Copyright (c) 2010 LearnBoost +// + +#ifndef __NODE_GRADIENT_H__ +#define __NODE_GRADIENT_H__ + +#include "Canvas.h" + +class Gradient: public Nan::ObjectWrap { + public: + static Nan::Persistent constructor; + static void Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target); + static NAN_METHOD(New); + static NAN_METHOD(AddColorStop); + Gradient(double x0, double y0, double x1, double y1); + Gradient(double x0, double y0, double r0, double x1, double y1, double r1); + inline cairo_pattern_t *pattern(){ return _pattern; } + + private: + ~Gradient(); + cairo_pattern_t *_pattern; +}; + +#endif diff --git a/vendor/canvas/src/CanvasPattern.cc b/vendor/canvas/src/CanvasPattern.cc new file mode 100644 index 00000000..ed64f9ae --- /dev/null +++ b/vendor/canvas/src/CanvasPattern.cc @@ -0,0 +1,86 @@ + +// +// Pattern.cc +// +// Copyright (c) 2010 LearnBoost +// + +#include "Canvas.h" +#include "Image.h" +#include "CanvasPattern.h" + +Nan::Persistent Pattern::constructor; + +/* + * Initialize CanvasPattern. + */ + +void +Pattern::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) { + Nan::HandleScope scope; + + // Constructor + Local ctor = Nan::New(Pattern::New); + constructor.Reset(ctor); + ctor->InstanceTemplate()->SetInternalFieldCount(1); + ctor->SetClassName(Nan::New("CanvasPattern").ToLocalChecked()); + + ctor->InstanceTemplate()->SetInternalFieldCount(1); + ctor->SetClassName(Nan::New("CanvasPattern").ToLocalChecked()); + + // Prototype + Nan::Set(target, Nan::New("CanvasPattern").ToLocalChecked(), ctor->GetFunction()); +} + +/* + * Initialize a new CanvasPattern. + */ + +NAN_METHOD(Pattern::New) { + if (!info.IsConstructCall()) { + return Nan::ThrowTypeError("Class constructors cannot be invoked without 'new'"); + } + + cairo_surface_t *surface; + + Local obj = info[0]->ToObject(); + + // Image + if (Nan::New(Image::constructor)->HasInstance(obj)) { + Image *img = Nan::ObjectWrap::Unwrap(obj); + if (!img->isComplete()) { + return Nan::ThrowError("Image given has not completed loading"); + } + surface = img->surface(); + + // Canvas + } else if (Nan::New(Canvas::constructor)->HasInstance(obj)) { + Canvas *canvas = Nan::ObjectWrap::Unwrap(obj); + surface = canvas->surface(); + + // Invalid + } else { + return Nan::ThrowTypeError("Image or Canvas expected"); + } + + Pattern *pattern = new Pattern(surface); + pattern->Wrap(info.This()); + info.GetReturnValue().Set(info.This()); +} + + +/* + * Initialize linear gradient. + */ + +Pattern::Pattern(cairo_surface_t *surface) { + _pattern = cairo_pattern_create_for_surface(surface); +} + +/* + * Destroy the pattern. + */ + +Pattern::~Pattern() { + cairo_pattern_destroy(_pattern); +} diff --git a/vendor/canvas/src/CanvasPattern.h b/vendor/canvas/src/CanvasPattern.h new file mode 100644 index 00000000..102c74f7 --- /dev/null +++ b/vendor/canvas/src/CanvasPattern.h @@ -0,0 +1,27 @@ + +// +// CanvasPattern.h +// +// Copyright (c) 2011 LearnBoost +// + +#ifndef __NODE_PATTERN_H__ +#define __NODE_PATTERN_H__ + +#include "Canvas.h" + +class Pattern: public Nan::ObjectWrap { + public: + static Nan::Persistent constructor; + static void Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target); + static NAN_METHOD(New); + Pattern(cairo_surface_t *surface); + inline cairo_pattern_t *pattern(){ return _pattern; } + + private: + ~Pattern(); + // TODO REPEAT/REPEAT_X/REPEAT_Y + cairo_pattern_t *_pattern; +}; + +#endif diff --git a/vendor/canvas/src/CanvasRenderingContext2d.cc b/vendor/canvas/src/CanvasRenderingContext2d.cc new file mode 100755 index 00000000..5d404aef --- /dev/null +++ b/vendor/canvas/src/CanvasRenderingContext2d.cc @@ -0,0 +1,2227 @@ + +// +// CanvasRenderingContext2d.cc +// +// Copyright (c) 2010 LearnBoost +// + +#include +#include +#include +#include +#include + +#include "Canvas.h" +#include "Point.h" +#include "Image.h" +#include "ImageData.h" +#include "CanvasRenderingContext2d.h" +#include "CanvasGradient.h" +#include "CanvasPattern.h" + +// Windows doesn't support the C99 names for these +#ifdef _MSC_VER +#define isnan(x) _isnan(x) +#define isinf(x) (!_finite(x)) +#endif + +#ifndef isnan +#define isnan(x) std::isnan(x) +#define isinf(x) std::isinf(x) +#endif + +Nan::Persistent Context2d::constructor; + +/* + * Rectangle arg assertions. + */ + +#define RECT_ARGS \ + if (!info[0]->IsNumber() \ + ||!info[1]->IsNumber() \ + ||!info[2]->IsNumber() \ + ||!info[3]->IsNumber()) return; \ + double x = info[0]->NumberValue(); \ + double y = info[1]->NumberValue(); \ + double width = info[2]->NumberValue(); \ + double height = info[3]->NumberValue(); + +/* + * Text baselines. + */ + +enum { + TEXT_BASELINE_ALPHABETIC + , TEXT_BASELINE_TOP + , TEXT_BASELINE_BOTTOM + , TEXT_BASELINE_MIDDLE + , TEXT_BASELINE_IDEOGRAPHIC + , TEXT_BASELINE_HANGING +}; + +/* + * Simple helper macro for a rather verbose function call. + */ + +#define PANGO_LAYOUT_GET_METRICS(LAYOUT) pango_context_get_metrics( \ + pango_layout_get_context(LAYOUT), \ + pango_layout_get_font_description(LAYOUT), \ + pango_context_get_language(pango_layout_get_context(LAYOUT))) + +/* + * Initialize Context2d. + */ + +void +Context2d::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) { + Nan::HandleScope scope; + + // Constructor + Local ctor = Nan::New(Context2d::New); + constructor.Reset(ctor); + ctor->InstanceTemplate()->SetInternalFieldCount(1); + ctor->SetClassName(Nan::New("CanvasRenderingContext2D").ToLocalChecked()); + + // Prototype + Local proto = ctor->PrototypeTemplate(); + Nan::SetPrototypeMethod(ctor, "drawImage", DrawImage); + Nan::SetPrototypeMethod(ctor, "putImageData", PutImageData); + Nan::SetPrototypeMethod(ctor, "getImageData", GetImageData); + Nan::SetPrototypeMethod(ctor, "addPage", AddPage); + Nan::SetPrototypeMethod(ctor, "save", Save); + Nan::SetPrototypeMethod(ctor, "restore", Restore); + Nan::SetPrototypeMethod(ctor, "rotate", Rotate); + Nan::SetPrototypeMethod(ctor, "translate", Translate); + Nan::SetPrototypeMethod(ctor, "transform", Transform); + Nan::SetPrototypeMethod(ctor, "resetTransform", ResetTransform); + Nan::SetPrototypeMethod(ctor, "isPointInPath", IsPointInPath); + Nan::SetPrototypeMethod(ctor, "scale", Scale); + Nan::SetPrototypeMethod(ctor, "clip", Clip); + Nan::SetPrototypeMethod(ctor, "fill", Fill); + Nan::SetPrototypeMethod(ctor, "stroke", Stroke); + Nan::SetPrototypeMethod(ctor, "fillText", FillText); + Nan::SetPrototypeMethod(ctor, "strokeText", StrokeText); + Nan::SetPrototypeMethod(ctor, "fillRect", FillRect); + Nan::SetPrototypeMethod(ctor, "strokeRect", StrokeRect); + Nan::SetPrototypeMethod(ctor, "clearRect", ClearRect); + Nan::SetPrototypeMethod(ctor, "rect", Rect); + Nan::SetPrototypeMethod(ctor, "measureText", MeasureText); + Nan::SetPrototypeMethod(ctor, "moveTo", MoveTo); + Nan::SetPrototypeMethod(ctor, "lineTo", LineTo); + Nan::SetPrototypeMethod(ctor, "bezierCurveTo", BezierCurveTo); + Nan::SetPrototypeMethod(ctor, "quadraticCurveTo", QuadraticCurveTo); + Nan::SetPrototypeMethod(ctor, "beginPath", BeginPath); + Nan::SetPrototypeMethod(ctor, "closePath", ClosePath); + Nan::SetPrototypeMethod(ctor, "arc", Arc); + Nan::SetPrototypeMethod(ctor, "arcTo", ArcTo); + Nan::SetPrototypeMethod(ctor, "setLineDash", SetLineDash); + Nan::SetPrototypeMethod(ctor, "getLineDash", GetLineDash); + Nan::SetPrototypeMethod(ctor, "_setFont", SetFont); + Nan::SetPrototypeMethod(ctor, "_setFillColor", SetFillColor); + Nan::SetPrototypeMethod(ctor, "_setStrokeColor", SetStrokeColor); + Nan::SetPrototypeMethod(ctor, "_setFillPattern", SetFillPattern); + Nan::SetPrototypeMethod(ctor, "_setStrokePattern", SetStrokePattern); + Nan::SetPrototypeMethod(ctor, "_setTextBaseline", SetTextBaseline); + Nan::SetPrototypeMethod(ctor, "_setTextAlignment", SetTextAlignment); + Nan::SetAccessor(proto, Nan::New("patternQuality").ToLocalChecked(), GetPatternQuality, SetPatternQuality); + Nan::SetAccessor(proto, Nan::New("globalCompositeOperation").ToLocalChecked(), GetGlobalCompositeOperation, SetGlobalCompositeOperation); + Nan::SetAccessor(proto, Nan::New("globalAlpha").ToLocalChecked(), GetGlobalAlpha, SetGlobalAlpha); + Nan::SetAccessor(proto, Nan::New("shadowColor").ToLocalChecked(), GetShadowColor, SetShadowColor); + Nan::SetAccessor(proto, Nan::New("fillColor").ToLocalChecked(), GetFillColor); + Nan::SetAccessor(proto, Nan::New("strokeColor").ToLocalChecked(), GetStrokeColor); + Nan::SetAccessor(proto, Nan::New("miterLimit").ToLocalChecked(), GetMiterLimit, SetMiterLimit); + Nan::SetAccessor(proto, Nan::New("lineWidth").ToLocalChecked(), GetLineWidth, SetLineWidth); + Nan::SetAccessor(proto, Nan::New("lineCap").ToLocalChecked(), GetLineCap, SetLineCap); + Nan::SetAccessor(proto, Nan::New("lineJoin").ToLocalChecked(), GetLineJoin, SetLineJoin); + Nan::SetAccessor(proto, Nan::New("lineDashOffset").ToLocalChecked(), GetLineDashOffset, SetLineDashOffset); + Nan::SetAccessor(proto, Nan::New("shadowOffsetX").ToLocalChecked(), GetShadowOffsetX, SetShadowOffsetX); + Nan::SetAccessor(proto, Nan::New("shadowOffsetY").ToLocalChecked(), GetShadowOffsetY, SetShadowOffsetY); + Nan::SetAccessor(proto, Nan::New("shadowBlur").ToLocalChecked(), GetShadowBlur, SetShadowBlur); + Nan::SetAccessor(proto, Nan::New("antialias").ToLocalChecked(), GetAntiAlias, SetAntiAlias); + Nan::SetAccessor(proto, Nan::New("textDrawingMode").ToLocalChecked(), GetTextDrawingMode, SetTextDrawingMode); + Nan::SetAccessor(proto, Nan::New("filter").ToLocalChecked(), GetFilter, SetFilter); + Nan::Set(target, Nan::New("CanvasRenderingContext2d").ToLocalChecked(), ctor->GetFunction()); +} + +/* + * Create a cairo context. + */ + +Context2d::Context2d(Canvas *canvas) { + _canvas = canvas; + _context = cairo_create(canvas->surface()); + _layout = pango_cairo_create_layout(_context); + cairo_set_line_width(_context, 1); + state = states[stateno = 0] = (canvas_state_t *) malloc(sizeof(canvas_state_t)); + state->shadowBlur = 0; + state->shadowOffsetX = state->shadowOffsetY = 0; + state->globalAlpha = 1; + state->textAlignment = -1; + state->fillPattern = state->strokePattern = NULL; + state->fillGradient = state->strokeGradient = NULL; + state->textBaseline = TEXT_BASELINE_ALPHABETIC; + rgba_t transparent = { 0,0,0,1 }; + rgba_t transparent_black = { 0,0,0,0 }; + state->fill = transparent; + state->stroke = transparent; + state->shadow = transparent_black; + state->patternQuality = CAIRO_FILTER_GOOD; + state->textDrawingMode = TEXT_DRAW_PATHS; + state->fontDescription = pango_font_description_from_string("sans serif"); + pango_font_description_set_absolute_size(state->fontDescription, 10 * PANGO_SCALE); + pango_layout_set_font_description(_layout, state->fontDescription); +} + +/* + * Destroy cairo context. + */ + +Context2d::~Context2d() { + while(stateno >= 0) { + pango_font_description_free(states[stateno]->fontDescription); + free(states[stateno--]); + } + g_object_unref(_layout); + cairo_destroy(_context); +} + +/* + * Save cairo / canvas state. + */ + +void +Context2d::save() { + cairo_save(_context); + saveState(); +} + +/* + * Restore cairo / canvas state. + */ + +void +Context2d::restore() { + cairo_restore(_context); + restoreState(); +} + +/* + * Save the current state. + */ + +void +Context2d::saveState() { + if (stateno == CANVAS_MAX_STATES) return; + states[++stateno] = (canvas_state_t *) malloc(sizeof(canvas_state_t)); + memcpy(states[stateno], state, sizeof(canvas_state_t)); + states[stateno]->fontDescription = pango_font_description_copy(states[stateno-1]->fontDescription); + state = states[stateno]; +} + +/* + * Restore state. + */ + +void +Context2d::restoreState() { + if (0 == stateno) return; + pango_font_description_free(states[stateno]->fontDescription); + free(states[stateno]); + states[stateno] = NULL; + state = states[--stateno]; + pango_layout_set_font_description(_layout, state->fontDescription); +} + +/* + * Save flat path. + */ + +void +Context2d::savePath() { + _path = cairo_copy_path_flat(_context); + cairo_new_path(_context); +} + +/* + * Restore flat path. + */ + +void +Context2d::restorePath() { + cairo_new_path(_context); + cairo_append_path(_context, _path); + cairo_path_destroy(_path); +} + +/* + * Fill and apply shadow. + */ + +void +Context2d::setFillRule(v8::Local value) { + cairo_fill_rule_t rule = CAIRO_FILL_RULE_WINDING; + if (value->IsString()) { + String::Utf8Value str(value); + if (std::strcmp(*str, "evenodd") == 0) { + rule = CAIRO_FILL_RULE_EVEN_ODD; + } + } + cairo_set_fill_rule(_context, rule); +} + +void +Context2d::fill(bool preserve) { + if (state->fillPattern) { + cairo_set_source(_context, state->fillPattern); + cairo_pattern_set_extend(cairo_get_source(_context), CAIRO_EXTEND_REPEAT); + // TODO repeat/repeat-x/repeat-y + } else if (state->fillGradient) { + cairo_pattern_set_filter(state->fillGradient, state->patternQuality); + cairo_set_source(_context, state->fillGradient); + } else { + setSourceRGBA(state->fill); + } + + if (preserve) { + hasShadow() + ? shadow(cairo_fill_preserve) + : cairo_fill_preserve(_context); + } else { + hasShadow() + ? shadow(cairo_fill) + : cairo_fill(_context); + } +} + +/* + * Stroke and apply shadow. + */ + +void +Context2d::stroke(bool preserve) { + if (state->strokePattern) { + cairo_set_source(_context, state->strokePattern); + cairo_pattern_set_extend(cairo_get_source(_context), CAIRO_EXTEND_REPEAT); + } else if (state->strokeGradient) { + cairo_pattern_set_filter(state->strokeGradient, state->patternQuality); + cairo_set_source(_context, state->strokeGradient); + } else { + setSourceRGBA(state->stroke); + } + + if (preserve) { + hasShadow() + ? shadow(cairo_stroke_preserve) + : cairo_stroke_preserve(_context); + } else { + hasShadow() + ? shadow(cairo_stroke) + : cairo_stroke(_context); + } +} + +/* + * Apply shadow with the given draw fn. + */ + +void +Context2d::shadow(void (fn)(cairo_t *cr)) { + cairo_path_t *path = cairo_copy_path_flat(_context); + cairo_save(_context); + + // shadowOffset is unaffected by current transform + cairo_matrix_t path_matrix; + cairo_get_matrix(_context, &path_matrix); + cairo_identity_matrix(_context); + + // Apply shadow + cairo_push_group(_context); + + // No need to invoke blur if shadowBlur is 0 + if (state->shadowBlur) { + // find out extent of path + double x1, y1, x2, y2; + if (fn == cairo_fill || fn == cairo_fill_preserve) { + cairo_fill_extents(_context, &x1, &y1, &x2, &y2); + } else { + cairo_stroke_extents(_context, &x1, &y1, &x2, &y2); + } + + // create new image surface that size + padding for blurring + double dx = x2-x1, dy = y2-y1; + cairo_user_to_device_distance(_context, &dx, &dy); + int pad = state->shadowBlur * 2; + cairo_surface_t *shadow_surface = cairo_image_surface_create( + CAIRO_FORMAT_ARGB32, + dx + 2 * pad, + dy + 2 * pad); + cairo_t *shadow_context = cairo_create(shadow_surface); + + // transform path to the right place + cairo_translate(shadow_context, pad-x1, pad-y1); + cairo_transform(shadow_context, &path_matrix); + + // draw the path and blur + cairo_set_line_width(shadow_context, cairo_get_line_width(_context)); + cairo_new_path(shadow_context); + cairo_append_path(shadow_context, path); + setSourceRGBA(shadow_context, state->shadow); + fn(shadow_context); + blur(shadow_surface, state->shadowBlur); + + // paint to original context + cairo_set_source_surface(_context, shadow_surface, + x1 - pad + state->shadowOffsetX + 1, + y1 - pad + state->shadowOffsetY + 1); + cairo_paint(_context); + cairo_destroy(shadow_context); + cairo_surface_destroy(shadow_surface); + } else { + // Offset first, then apply path's transform + cairo_translate( + _context + , state->shadowOffsetX + , state->shadowOffsetY); + cairo_transform(_context, &path_matrix); + + // Apply shadow + cairo_new_path(_context); + cairo_append_path(_context, path); + setSourceRGBA(state->shadow); + + fn(_context); + } + + // Paint the shadow + cairo_pop_group_to_source(_context); + cairo_paint(_context); + + // Restore state + cairo_restore(_context); + cairo_new_path(_context); + cairo_append_path(_context, path); + fn(_context); + + cairo_path_destroy(path); +} + +/* + * Set source RGBA for the current context + */ + +void +Context2d::setSourceRGBA(rgba_t color) { + setSourceRGBA(_context, color); +} + +/* + * Set source RGBA + */ + +void +Context2d::setSourceRGBA(cairo_t *ctx, rgba_t color) { + cairo_set_source_rgba( + ctx + , color.r + , color.g + , color.b + , color.a * state->globalAlpha); +} + +/* + * Check if the context has a drawable shadow. + */ + +bool +Context2d::hasShadow() { + return state->shadow.a + && (state->shadowBlur || state->shadowOffsetX || state->shadowOffsetY); +} + +/* + * Blur the given surface with the given radius. + */ + +void +Context2d::blur(cairo_surface_t *surface, int radius) { + // Steve Hanov, 2009 + // Released into the public domain. + radius = radius * 0.57735f + 0.5f; + // get width, height + int width = cairo_image_surface_get_width( surface ); + int height = cairo_image_surface_get_height( surface ); + unsigned* precalc = + (unsigned*)malloc(width*height*sizeof(unsigned)); + cairo_surface_flush( surface ); + unsigned char* src = cairo_image_surface_get_data( surface ); + double mul=1.f/((radius*2)*(radius*2)); + int channel; + + // The number of times to perform the averaging. According to wikipedia, + // three iterations is good enough to pass for a gaussian. + const int MAX_ITERATIONS = 3; + int iteration; + + for ( iteration = 0; iteration < MAX_ITERATIONS; iteration++ ) { + for( channel = 0; channel < 4; channel++ ) { + int x,y; + + // precomputation step. + unsigned char* pix = src; + unsigned* pre = precalc; + + pix += channel; + for (y=0;y0) tot+=pre[-1]; + if (y>0) tot+=pre[-width]; + if (x>0 && y>0) tot-=pre[-width-1]; + *pre++=tot; + pix += 4; + } + } + + // blur step. + pix = src + (int)radius * width * 4 + (int)radius * 4 + channel; + for (y=radius;y= width ? width - 1 : x + radius; + int b = y + radius >= height ? height - 1 : y + radius; + int tot = precalc[r+b*width] + precalc[l+t*width] - + precalc[l+b*width] - precalc[r+t*width]; + *pix=(unsigned char)(tot*mul); + pix += 4; + } + pix += (int)radius * 2 * 4; + } + } + } + + cairo_surface_mark_dirty(surface); + free(precalc); +} + +/* + * Initialize a new Context2d with the given canvas. + */ + +NAN_METHOD(Context2d::New) { + if (!info.IsConstructCall()) { + return Nan::ThrowTypeError("Class constructors cannot be invoked without 'new'"); + } + + Local obj = info[0]->ToObject(); + if (!Nan::New(Canvas::constructor)->HasInstance(obj)) + return Nan::ThrowTypeError("Canvas expected"); + Canvas *canvas = Nan::ObjectWrap::Unwrap(obj); + Context2d *context = new Context2d(canvas); + context->Wrap(info.This()); + info.GetReturnValue().Set(info.This()); +} + +/* + * Create a new page. + */ + +NAN_METHOD(Context2d::AddPage) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + if (!context->canvas()->isPDF()) { + return Nan::ThrowError("only PDF canvases support .nextPage()"); + } + cairo_show_page(context->context()); + return; +} + +/* + * Put image data. + * + * - imageData, dx, dy + * - imageData, dx, dy, sx, sy, sw, sh + * + */ + +NAN_METHOD(Context2d::PutImageData) { + if (!info[0]->IsObject()) + return Nan::ThrowTypeError("ImageData expected"); + Local obj = info[0]->ToObject(); + if (!Nan::New(ImageData::constructor)->HasInstance(obj)) + return Nan::ThrowTypeError("ImageData expected"); + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + ImageData *imageData = Nan::ObjectWrap::Unwrap(obj); + + uint8_t *src = imageData->data(); + uint8_t *dst = context->canvas()->data(); + + int srcStride = imageData->stride() + , dstStride = context->canvas()->stride(); + + int sx = 0 + , sy = 0 + , sw = 0 + , sh = 0 + , dx = info[1]->Int32Value() + , dy = info[2]->Int32Value() + , rows + , cols; + + switch (info.Length()) { + // imageData, dx, dy + case 3: + // Need to wrap std::min calls using parens to prevent macro expansion on + // windows. See http://stackoverflow.com/questions/5004858/stdmin-gives-error + cols = (std::min)(imageData->width(), context->canvas()->width - dx); + rows = (std::min)(imageData->height(), context->canvas()->height - dy); + break; + // imageData, dx, dy, sx, sy, sw, sh + case 7: + sx = info[3]->Int32Value(); + sy = info[4]->Int32Value(); + sw = info[5]->Int32Value(); + sh = info[6]->Int32Value(); + // fix up negative height, width + if (sw < 0) sx += sw, sw = -sw; + if (sh < 0) sy += sh, sh = -sh; + // clamp the left edge + if (sx < 0) sw += sx, sx = 0; + if (sy < 0) sh += sy, sy = 0; + // clamp the right edge + if (sx + sw > imageData->width()) sw = imageData->width() - sx; + if (sy + sh > imageData->height()) sh = imageData->height() - sy; + // start destination at source offset + dx += sx; + dy += sy; + // chop off outlying source data + if (dx < 0) sw += dx, sx -= dx, dx = 0; + if (dy < 0) sh += dy, sy -= dy, dy = 0; + // clamp width at canvas size + // Need to wrap std::min calls using parens to prevent macro expansion on + // windows. See http://stackoverflow.com/questions/5004858/stdmin-gives-error + cols = (std::min)(sw, context->canvas()->width - dx); + rows = (std::min)(sh, context->canvas()->height - dy); + break; + default: + return Nan::ThrowError("invalid arguments"); + } + + if (cols <= 0 || rows <= 0) return; + + src += sy * srcStride + sx * 4; + dst += dstStride * dy + 4 * dx; + for (int y = 0; y < rows; ++y) { + uint8_t *dstRow = dst; + uint8_t *srcRow = src; + for (int x = 0; x < cols; ++x) { + // rgba + uint8_t r = *srcRow++; + uint8_t g = *srcRow++; + uint8_t b = *srcRow++; + uint8_t a = *srcRow++; + + // argb + // performance optimization: fully transparent/opaque pixels can be + // processed more efficiently. + if (a == 0) { + *dstRow++ = 0; + *dstRow++ = 0; + *dstRow++ = 0; + *dstRow++ = 0; + } else if (a == 255) { + *dstRow++ = b; + *dstRow++ = g; + *dstRow++ = r; + *dstRow++ = a; + } else { + float alpha = (float)a / 255; + *dstRow++ = b * alpha; + *dstRow++ = g * alpha; + *dstRow++ = r * alpha; + *dstRow++ = a; + } + } + dst += dstStride; + src += srcStride; + } + + cairo_surface_mark_dirty_rectangle( + context->canvas()->surface() + , dx + , dy + , cols + , rows); +} + +/* + * Get image data. + * + * - sx, sy, sw, sh + * + */ + +NAN_METHOD(Context2d::GetImageData) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + Canvas *canvas = context->canvas(); + + int sx = info[0]->Int32Value(); + int sy = info[1]->Int32Value(); + int sw = info[2]->Int32Value(); + int sh = info[3]->Int32Value(); + + if (!sw) + return Nan::ThrowError("IndexSizeError: The source width is 0."); + if (!sh) + return Nan::ThrowError("IndexSizeError: The source height is 0."); + + // WebKit and Firefox have this behavior: + // Flip the coordinates so the origin is top/left-most: + if (sw < 0) { + sx += sw; + sw = -sw; + } + if (sh < 0) { + sy += sh; + sh = -sh; + } + + if (sx + sw > canvas->width) sw = canvas->width - sx; + if (sy + sh > canvas->height) sh = canvas->height - sy; + + // WebKit/moz functionality. node-canvas used to return in either case. + if (sw <= 0) sw = 1; + if (sh <= 0) sh = 1; + + // Non-compliant. "Pixels outside the canvas must be returned as transparent + // black." This instead clips the returned array to the canvas area. + if (sx < 0) { + sw += sx; + sx = 0; + } + if (sy < 0) { + sh += sy; + sy = 0; + } + + int size = sw * sh * 4; + + int srcStride = canvas->stride(); + int dstStride = sw * 4; + + uint8_t *src = canvas->data(); + +#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION <= 10 + Local global = Context::GetCurrent()->Global(); + + Local sizeHandle = Nan::New(size); + Local caargv[] = { sizeHandle }; + Local clampedArray = global->Get(Nan::New("Uint8ClampedArray").ToLocalChecked()).As()->NewInstance(1, caargv); +#else + Local buffer = ArrayBuffer::New(Isolate::GetCurrent(), size); + Local clampedArray = Uint8ClampedArray::New(buffer, 0, size); +#endif + + Nan::TypedArrayContents typedArrayContents(clampedArray); + uint8_t* dst = *typedArrayContents; + + // Normalize data (argb -> rgba) + for (int y = 0; y < sh; ++y) { + uint32_t *row = (uint32_t *)(src + srcStride * (y + sy)); + for (int x = 0; x < sw; ++x) { + int bx = x * 4; + uint32_t *pixel = row + x + sx; + uint8_t a = *pixel >> 24; + uint8_t r = *pixel >> 16; + uint8_t g = *pixel >> 8; + uint8_t b = *pixel; + dst[bx + 3] = a; + + // Performance optimization: fully transparent/opaque pixels can be + // processed more efficiently. + if (a == 0 || a == 255) { + dst[bx + 0] = r; + dst[bx + 1] = g; + dst[bx + 2] = b; + } else { + float alpha = (float)a / 255; + dst[bx + 0] = (int)((float)r / alpha); + dst[bx + 1] = (int)((float)g / alpha); + dst[bx + 2] = (int)((float)b / alpha); + } + + } + dst += dstStride; + } + + const int argc = 3; + Local swHandle = Nan::New(sw); + Local shHandle = Nan::New(sh); + Local argv[argc] = { clampedArray, swHandle, shHandle }; + + Local cons = Nan::New(ImageData::constructor); + Local instance = cons->GetFunction()->NewInstance(argc, argv); + + info.GetReturnValue().Set(instance); +} + +/* + * Draw image src image to the destination (context). + * + * - dx, dy + * - dx, dy, dw, dh + * - sx, sy, sw, sh, dx, dy, dw, dh + * + */ + +NAN_METHOD(Context2d::DrawImage) { + if (info.Length() < 3) + return Nan::ThrowTypeError("invalid arguments"); + + float sx = 0 + , sy = 0 + , sw = 0 + , sh = 0 + , dx, dy, dw, dh; + + cairo_surface_t *surface; + + Local obj = info[0]->ToObject(); + + // Image + if (Nan::New(Image::constructor)->HasInstance(obj)) { + Image *img = Nan::ObjectWrap::Unwrap(obj); + if (!img->isComplete()) { + return Nan::ThrowError("Image given has not completed loading"); + } + sw = img->width; + sh = img->height; + surface = img->surface(); + + // Canvas + } else if (Nan::New(Canvas::constructor)->HasInstance(obj)) { + Canvas *canvas = Nan::ObjectWrap::Unwrap(obj); + sw = canvas->width; + sh = canvas->height; + surface = canvas->surface(); + + // Invalid + } else { + return Nan::ThrowTypeError("Image or Canvas expected"); + } + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + + // Arguments + switch (info.Length()) { + // img, sx, sy, sw, sh, dx, dy, dw, dh + case 9: + sx = info[1]->NumberValue(); + sy = info[2]->NumberValue(); + sw = info[3]->NumberValue(); + sh = info[4]->NumberValue(); + dx = info[5]->NumberValue(); + dy = info[6]->NumberValue(); + dw = info[7]->NumberValue(); + dh = info[8]->NumberValue(); + break; + // img, dx, dy, dw, dh + case 5: + dx = info[1]->NumberValue(); + dy = info[2]->NumberValue(); + dw = info[3]->NumberValue(); + dh = info[4]->NumberValue(); + break; + // img, dx, dy + case 3: + dx = info[1]->NumberValue(); + dy = info[2]->NumberValue(); + dw = sw; + dh = sh; + break; + default: + return Nan::ThrowTypeError("invalid arguments"); + } + + // Start draw + cairo_save(ctx); + + // Scale src + float fx = (float) dw / sw; + float fy = (float) dh / sh; + + if (dw != sw || dh != sh) { + cairo_scale(ctx, fx, fy); + dx /= fx; + dy /= fy; + dw /= fx; + dh /= fy; + } + + // apply shadow if there is one + if (context->hasShadow()) { + if(context->state->shadowBlur) { + // we need to create a new surface in order to blur + int pad = context->state->shadowBlur * 2; + cairo_surface_t *shadow_surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, dw + 2 * pad, dh + 2 * pad); + cairo_t *shadow_context = cairo_create(shadow_surface); + + // mask and blur + context->setSourceRGBA(shadow_context, context->state->shadow); + cairo_mask_surface(shadow_context, surface, pad, pad); + context->blur(shadow_surface, context->state->shadowBlur); + + // paint + // @note: ShadowBlur looks different in each browser. This implementation matches chrome as close as possible. + // The 1.4 offset comes from visual tests with Chrome. I have read the spec and part of the shadowBlur + // implementation, and its not immediately clear why an offset is necessary, but without it, the result + // in chrome is different. + cairo_set_source_surface(ctx, shadow_surface, + dx - sx + (context->state->shadowOffsetX / fx) - pad + 1.4, + dy - sy + (context->state->shadowOffsetY / fy) - pad + 1.4); + cairo_paint(ctx); + + // cleanup + cairo_destroy(shadow_context); + cairo_surface_destroy(shadow_surface); + } else { + context->setSourceRGBA(context->state->shadow); + cairo_mask_surface(ctx, surface, + dx - sx + (context->state->shadowOffsetX / fx), + dy - sy + (context->state->shadowOffsetY / fy)); + } + } + + context->savePath(); + cairo_rectangle(ctx, dx, dy, dw, dh); + cairo_clip(ctx); + context->restorePath(); + + // Paint + cairo_set_source_surface(ctx, surface, dx - sx, dy - sy); + cairo_pattern_set_filter(cairo_get_source(ctx), context->state->patternQuality); + cairo_paint_with_alpha(ctx, context->state->globalAlpha); + + cairo_restore(ctx); +} + +/* + * Get global alpha. + */ + +NAN_GETTER(Context2d::GetGlobalAlpha) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(context->state->globalAlpha)); +} + +/* + * Set global alpha. + */ + +NAN_SETTER(Context2d::SetGlobalAlpha) { + double n = value->NumberValue(); + if (n >= 0 && n <= 1) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->state->globalAlpha = n; + } +} + +/* + * Get global composite operation. + */ + +NAN_GETTER(Context2d::GetGlobalCompositeOperation) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + + const char *op = "source-over"; + switch (cairo_get_operator(ctx)) { + case CAIRO_OPERATOR_ATOP: op = "source-atop"; break; + case CAIRO_OPERATOR_IN: op = "source-in"; break; + case CAIRO_OPERATOR_OUT: op = "source-out"; break; + case CAIRO_OPERATOR_XOR: op = "xor"; break; + case CAIRO_OPERATOR_DEST_ATOP: op = "destination-atop"; break; + case CAIRO_OPERATOR_DEST_IN: op = "destination-in"; break; + case CAIRO_OPERATOR_DEST_OUT: op = "destination-out"; break; + case CAIRO_OPERATOR_DEST_OVER: op = "destination-over"; break; + case CAIRO_OPERATOR_CLEAR: op = "clear"; break; + case CAIRO_OPERATOR_SOURCE: op = "source"; break; + case CAIRO_OPERATOR_DEST: op = "dest"; break; + case CAIRO_OPERATOR_OVER: op = "over"; break; + case CAIRO_OPERATOR_SATURATE: op = "saturate"; break; + // Non-standard + // supported by resent versions of cairo +#if CAIRO_VERSION_MINOR >= 10 + case CAIRO_OPERATOR_LIGHTEN: op = "lighten"; break; + case CAIRO_OPERATOR_ADD: op = "add"; break; + case CAIRO_OPERATOR_DARKEN: op = "darker"; break; + case CAIRO_OPERATOR_MULTIPLY: op = "multiply"; break; + case CAIRO_OPERATOR_SCREEN: op = "screen"; break; + case CAIRO_OPERATOR_OVERLAY: op = "overlay"; break; + case CAIRO_OPERATOR_HARD_LIGHT: op = "hard-light"; break; + case CAIRO_OPERATOR_SOFT_LIGHT: op = "soft-light"; break; + case CAIRO_OPERATOR_HSL_HUE: op = "hsl-hue"; break; + case CAIRO_OPERATOR_HSL_SATURATION: op = "hsl-saturation"; break; + case CAIRO_OPERATOR_HSL_COLOR: op = "hsl-color"; break; + case CAIRO_OPERATOR_HSL_LUMINOSITY: op = "hsl-luminosity"; break; + case CAIRO_OPERATOR_COLOR_DODGE: op = "color-dodge"; break; + case CAIRO_OPERATOR_COLOR_BURN: op = "color-burn"; break; + case CAIRO_OPERATOR_DIFFERENCE: op = "difference"; break; + case CAIRO_OPERATOR_EXCLUSION: op = "exclusion"; break; +#else + case CAIRO_OPERATOR_ADD: op = "lighter"; break; +#endif + } + + info.GetReturnValue().Set(Nan::New(op).ToLocalChecked()); +} + +/* + * Set pattern quality. + */ + +NAN_SETTER(Context2d::SetPatternQuality) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + String::Utf8Value quality(value->ToString()); + if (0 == strcmp("fast", *quality)) { + context->state->patternQuality = CAIRO_FILTER_FAST; + } else if (0 == strcmp("good", *quality)) { + context->state->patternQuality = CAIRO_FILTER_GOOD; + } else if (0 == strcmp("best", *quality)) { + context->state->patternQuality = CAIRO_FILTER_BEST; + } else if (0 == strcmp("nearest", *quality)) { + context->state->patternQuality = CAIRO_FILTER_NEAREST; + } else if (0 == strcmp("bilinear", *quality)) { + context->state->patternQuality = CAIRO_FILTER_BILINEAR; + } +} + +/* + * Get pattern quality. + */ + +NAN_GETTER(Context2d::GetPatternQuality) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + const char *quality; + switch (context->state->patternQuality) { + case CAIRO_FILTER_FAST: quality = "fast"; break; + case CAIRO_FILTER_BEST: quality = "best"; break; + case CAIRO_FILTER_NEAREST: quality = "nearest"; break; + case CAIRO_FILTER_BILINEAR: quality = "bilinear"; break; + default: quality = "good"; + } + info.GetReturnValue().Set(Nan::New(quality).ToLocalChecked()); +} + +/* + * Set global composite operation. + */ + +NAN_SETTER(Context2d::SetGlobalCompositeOperation) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + String::Utf8Value type(value->ToString()); + if (0 == strcmp("xor", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_XOR); + } else if (0 == strcmp("source-atop", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_ATOP); + } else if (0 == strcmp("source-in", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_IN); + } else if (0 == strcmp("source-out", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_OUT); + } else if (0 == strcmp("destination-atop", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_DEST_ATOP); + } else if (0 == strcmp("destination-in", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_DEST_IN); + } else if (0 == strcmp("destination-out", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_DEST_OUT); + } else if (0 == strcmp("destination-over", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_DEST_OVER); + } else if (0 == strcmp("clear", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_CLEAR); + } else if (0 == strcmp("source", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_SOURCE); + } else if (0 == strcmp("dest", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_DEST); + } else if (0 == strcmp("saturate", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_SATURATE); + } else if (0 == strcmp("over", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_OVER); + // Non-standard + // supported by resent versions of cairo +#if CAIRO_VERSION_MINOR >= 10 + } else if (0 == strcmp("add", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_ADD); + } else if (0 == strcmp("lighten", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_LIGHTEN); + } else if (0 == strcmp("darker", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_DARKEN); + } else if (0 == strcmp("multiply", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_MULTIPLY); + } else if (0 == strcmp("screen", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_SCREEN); + } else if (0 == strcmp("overlay", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_OVERLAY); + } else if (0 == strcmp("hard-light", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_HARD_LIGHT); + } else if (0 == strcmp("soft-light", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_SOFT_LIGHT); + } else if (0 == strcmp("hsl-hue", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_HSL_HUE); + } else if (0 == strcmp("hsl-saturation", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_HSL_SATURATION); + } else if (0 == strcmp("hsl-color", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_HSL_COLOR); + } else if (0 == strcmp("hsl-luminosity", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_HSL_LUMINOSITY); + } else if (0 == strcmp("color-dodge", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_COLOR_DODGE); + } else if (0 == strcmp("color-burn", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_COLOR_BURN); + } else if (0 == strcmp("difference", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_DIFFERENCE); + } else if (0 == strcmp("exclusion", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_EXCLUSION); +#endif + } else if (0 == strcmp("lighter", *type)) { + cairo_set_operator(ctx, CAIRO_OPERATOR_ADD); + } else { + cairo_set_operator(ctx, CAIRO_OPERATOR_OVER); + } +} + +/* + * Get shadow offset x. + */ + +NAN_GETTER(Context2d::GetShadowOffsetX) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(context->state->shadowOffsetX)); +} + +/* + * Set shadow offset x. + */ + +NAN_SETTER(Context2d::SetShadowOffsetX) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->state->shadowOffsetX = value->NumberValue(); +} + +/* + * Get shadow offset y. + */ + +NAN_GETTER(Context2d::GetShadowOffsetY) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(context->state->shadowOffsetY)); +} + +/* + * Set shadow offset y. + */ + +NAN_SETTER(Context2d::SetShadowOffsetY) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->state->shadowOffsetY = value->NumberValue(); +} + +/* + * Get shadow blur. + */ + +NAN_GETTER(Context2d::GetShadowBlur) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(context->state->shadowBlur)); +} + +/* + * Set shadow blur. + */ + +NAN_SETTER(Context2d::SetShadowBlur) { + int n = value->NumberValue(); + if (n >= 0) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->state->shadowBlur = n; + } +} + +/* + * Get current antialiasing setting. + */ + +NAN_GETTER(Context2d::GetAntiAlias) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + const char *aa; + switch (cairo_get_antialias(context->context())) { + case CAIRO_ANTIALIAS_NONE: aa = "none"; break; + case CAIRO_ANTIALIAS_GRAY: aa = "gray"; break; + case CAIRO_ANTIALIAS_SUBPIXEL: aa = "subpixel"; break; + default: aa = "default"; + } + info.GetReturnValue().Set(Nan::New(aa).ToLocalChecked()); +} + +/* + * Set antialiasing. + */ + +NAN_SETTER(Context2d::SetAntiAlias) { + String::Utf8Value str(value->ToString()); + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + cairo_antialias_t a; + if (0 == strcmp("none", *str)) { + a = CAIRO_ANTIALIAS_NONE; + } else if (0 == strcmp("default", *str)) { + a = CAIRO_ANTIALIAS_DEFAULT; + } else if (0 == strcmp("gray", *str)) { + a = CAIRO_ANTIALIAS_GRAY; + } else if (0 == strcmp("subpixel", *str)) { + a = CAIRO_ANTIALIAS_SUBPIXEL; + } else { + a = cairo_get_antialias(ctx); + } + cairo_set_antialias(ctx, a); +} + +/* + * Get text drawing mode. + */ + +NAN_GETTER(Context2d::GetTextDrawingMode) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + const char *mode; + if (context->state->textDrawingMode == TEXT_DRAW_PATHS) { + mode = "path"; + } else if (context->state->textDrawingMode == TEXT_DRAW_GLYPHS) { + mode = "glyph"; + } else { + mode = "unknown"; + } + info.GetReturnValue().Set(Nan::New(mode).ToLocalChecked()); +} + +/* + * Set text drawing mode. + */ + +NAN_SETTER(Context2d::SetTextDrawingMode) { + String::Utf8Value str(value->ToString()); + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + if (0 == strcmp("path", *str)) { + context->state->textDrawingMode = TEXT_DRAW_PATHS; + } else if (0 == strcmp("glyph", *str)) { + context->state->textDrawingMode = TEXT_DRAW_GLYPHS; + } +} + +/* + * Get filter. + */ + +NAN_GETTER(Context2d::GetFilter) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + const char *filter; + switch (cairo_pattern_get_filter(cairo_get_source(context->context()))) { + case CAIRO_FILTER_FAST: filter = "fast"; break; + case CAIRO_FILTER_BEST: filter = "best"; break; + case CAIRO_FILTER_NEAREST: filter = "nearest"; break; + case CAIRO_FILTER_BILINEAR: filter = "bilinear"; break; + default: filter = "good"; + } + info.GetReturnValue().Set(Nan::New(filter).ToLocalChecked()); +} + +/* + * Set filter. + */ + +NAN_SETTER(Context2d::SetFilter) { + String::Utf8Value str(value->ToString()); + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_filter_t filter; + if (0 == strcmp("fast", *str)) { + filter = CAIRO_FILTER_FAST; + } else if (0 == strcmp("best", *str)) { + filter = CAIRO_FILTER_BEST; + } else if (0 == strcmp("nearest", *str)) { + filter = CAIRO_FILTER_NEAREST; + } else if (0 == strcmp("bilinear", *str)) { + filter = CAIRO_FILTER_BILINEAR; + } else { + filter = CAIRO_FILTER_GOOD; + } + cairo_pattern_set_filter(cairo_get_source(context->context()), filter); +} + +/* + * Get miter limit. + */ + +NAN_GETTER(Context2d::GetMiterLimit) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(cairo_get_miter_limit(context->context()))); +} + +/* + * Set miter limit. + */ + +NAN_SETTER(Context2d::SetMiterLimit) { + double n = value->NumberValue(); + if (n > 0) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_set_miter_limit(context->context(), n); + } +} + +/* + * Get line width. + */ + +NAN_GETTER(Context2d::GetLineWidth) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(cairo_get_line_width(context->context()))); +} + +/* + * Set line width. + */ + +NAN_SETTER(Context2d::SetLineWidth) { + double n = value->NumberValue(); + if (n > 0 && n != std::numeric_limits::infinity()) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_set_line_width(context->context(), n); + } +} + +/* + * Get line join. + */ + +NAN_GETTER(Context2d::GetLineJoin) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + const char *join; + switch (cairo_get_line_join(context->context())) { + case CAIRO_LINE_JOIN_BEVEL: join = "bevel"; break; + case CAIRO_LINE_JOIN_ROUND: join = "round"; break; + default: join = "miter"; + } + info.GetReturnValue().Set(Nan::New(join).ToLocalChecked()); +} + +/* + * Set line join. + */ + +NAN_SETTER(Context2d::SetLineJoin) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + String::Utf8Value type(value->ToString()); + if (0 == strcmp("round", *type)) { + cairo_set_line_join(ctx, CAIRO_LINE_JOIN_ROUND); + } else if (0 == strcmp("bevel", *type)) { + cairo_set_line_join(ctx, CAIRO_LINE_JOIN_BEVEL); + } else { + cairo_set_line_join(ctx, CAIRO_LINE_JOIN_MITER); + } +} + +/* + * Get line cap. + */ + +NAN_GETTER(Context2d::GetLineCap) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + const char *cap; + switch (cairo_get_line_cap(context->context())) { + case CAIRO_LINE_CAP_ROUND: cap = "round"; break; + case CAIRO_LINE_CAP_SQUARE: cap = "square"; break; + default: cap = "butt"; + } + info.GetReturnValue().Set(Nan::New(cap).ToLocalChecked()); +} + +/* + * Set line cap. + */ + +NAN_SETTER(Context2d::SetLineCap) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + String::Utf8Value type(value->ToString()); + if (0 == strcmp("round", *type)) { + cairo_set_line_cap(ctx, CAIRO_LINE_CAP_ROUND); + } else if (0 == strcmp("square", *type)) { + cairo_set_line_cap(ctx, CAIRO_LINE_CAP_SQUARE); + } else { + cairo_set_line_cap(ctx, CAIRO_LINE_CAP_BUTT); + } +} + +/* + * Check if the given point is within the current path. + */ + +NAN_METHOD(Context2d::IsPointInPath) { + if (info[0]->IsNumber() && info[1]->IsNumber()) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + double x = info[0]->NumberValue() + , y = info[1]->NumberValue(); + context->setFillRule(info[2]); + info.GetReturnValue().Set(Nan::New(cairo_in_fill(ctx, x, y) || cairo_in_stroke(ctx, x, y))); + return; + } + info.GetReturnValue().Set(Nan::False()); +} + +/* + * Set fill pattern, useV internally for fillStyle= + */ + +NAN_METHOD(Context2d::SetFillPattern) { + Local obj = info[0]->ToObject(); + if (Nan::New(Gradient::constructor)->HasInstance(obj)){ + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + Gradient *grad = Nan::ObjectWrap::Unwrap(obj); + context->state->fillGradient = grad->pattern(); + } else if(Nan::New(Pattern::constructor)->HasInstance(obj)){ + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + Pattern *pattern = Nan::ObjectWrap::Unwrap(obj); + context->state->fillPattern = pattern->pattern(); + } else { + return Nan::ThrowTypeError("Gradient or Pattern expected"); + } +} + +/* + * Set stroke pattern, used internally for strokeStyle= + */ + +NAN_METHOD(Context2d::SetStrokePattern) { + Local obj = info[0]->ToObject(); + if (Nan::New(Gradient::constructor)->HasInstance(obj)){ + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + Gradient *grad = Nan::ObjectWrap::Unwrap(obj); + context->state->strokeGradient = grad->pattern(); + } else if(Nan::New(Pattern::constructor)->HasInstance(obj)){ + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + Pattern *pattern = Nan::ObjectWrap::Unwrap(obj); + context->state->strokePattern = pattern->pattern(); + } else { + return Nan::ThrowTypeError("Gradient or Pattern expected"); + } +} + +/* + * Set shadow color. + */ + +NAN_SETTER(Context2d::SetShadowColor) { + short ok; + String::Utf8Value str(value->ToString()); + uint32_t rgba = rgba_from_string(*str, &ok); + if (ok) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->state->shadow = rgba_create(rgba); + } +} + +/* + * Get shadow color. + */ + +NAN_GETTER(Context2d::GetShadowColor) { + char buf[64]; + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + rgba_to_string(context->state->shadow, buf, sizeof(buf)); + info.GetReturnValue().Set(Nan::New(buf).ToLocalChecked()); +} + +/* + * Set fill color, used internally for fillStyle= + */ + +NAN_METHOD(Context2d::SetFillColor) { + short ok; + if (!info[0]->IsString()) return; + String::Utf8Value str(info[0]); + uint32_t rgba = rgba_from_string(*str, &ok); + if (!ok) return; + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->state->fillPattern = context->state->fillGradient = NULL; + context->state->fill = rgba_create(rgba); +} + +/* + * Get fill color. + */ + +NAN_GETTER(Context2d::GetFillColor) { + char buf[64]; + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + rgba_to_string(context->state->fill, buf, sizeof(buf)); + info.GetReturnValue().Set(Nan::New(buf).ToLocalChecked()); +} + +/* + * Set stroke color, used internally for strokeStyle= + */ + +NAN_METHOD(Context2d::SetStrokeColor) { + short ok; + if (!info[0]->IsString()) return; + String::Utf8Value str(info[0]); + uint32_t rgba = rgba_from_string(*str, &ok); + if (!ok) return; + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->state->strokePattern = context->state->strokeGradient = NULL; + context->state->stroke = rgba_create(rgba); +} + +/* + * Get stroke color. + */ + +NAN_GETTER(Context2d::GetStrokeColor) { + char buf[64]; + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + rgba_to_string(context->state->stroke, buf, sizeof(buf)); + info.GetReturnValue().Set(Nan::New(buf).ToLocalChecked()); +} + +/* + * Bezier curve. + */ + +NAN_METHOD(Context2d::BezierCurveTo) { + if (!info[0]->IsNumber() + ||!info[1]->IsNumber() + ||!info[2]->IsNumber() + ||!info[3]->IsNumber() + ||!info[4]->IsNumber() + ||!info[5]->IsNumber()) return; + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_curve_to(context->context() + , info[0]->NumberValue() + , info[1]->NumberValue() + , info[2]->NumberValue() + , info[3]->NumberValue() + , info[4]->NumberValue() + , info[5]->NumberValue()); +} + +/* + * Quadratic curve approximation from libsvg-cairo. + */ + +NAN_METHOD(Context2d::QuadraticCurveTo) { + if (!info[0]->IsNumber() + ||!info[1]->IsNumber() + ||!info[2]->IsNumber() + ||!info[3]->IsNumber()) return; + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + + double x, y + , x1 = info[0]->NumberValue() + , y1 = info[1]->NumberValue() + , x2 = info[2]->NumberValue() + , y2 = info[3]->NumberValue(); + + cairo_get_current_point(ctx, &x, &y); + + if (0 == x && 0 == y) { + x = x1; + y = y1; + } + + cairo_curve_to(ctx + , x + 2.0 / 3.0 * (x1 - x), y + 2.0 / 3.0 * (y1 - y) + , x2 + 2.0 / 3.0 * (x1 - x2), y2 + 2.0 / 3.0 * (y1 - y2) + , x2 + , y2); +} + +/* + * Save state. + */ + +NAN_METHOD(Context2d::Save) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->save(); +} + +/* + * Restore state. + */ + +NAN_METHOD(Context2d::Restore) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->restore(); +} + +/* + * Creates a new subpath. + */ + +NAN_METHOD(Context2d::BeginPath) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_new_path(context->context()); +} + +/* + * Marks the subpath as closed. + */ + +NAN_METHOD(Context2d::ClosePath) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_close_path(context->context()); +} + +/* + * Rotate transformation. + */ + +NAN_METHOD(Context2d::Rotate) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_rotate(context->context() + , info[0]->IsNumber() ? info[0]->NumberValue() : 0); +} + +/* + * Modify the CTM. + */ + +NAN_METHOD(Context2d::Transform) { + cairo_matrix_t matrix; + cairo_matrix_init(&matrix + , info[0]->IsNumber() ? info[0]->NumberValue() : 0 + , info[1]->IsNumber() ? info[1]->NumberValue() : 0 + , info[2]->IsNumber() ? info[2]->NumberValue() : 0 + , info[3]->IsNumber() ? info[3]->NumberValue() : 0 + , info[4]->IsNumber() ? info[4]->NumberValue() : 0 + , info[5]->IsNumber() ? info[5]->NumberValue() : 0); + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_transform(context->context(), &matrix); +} + +/* + * Reset the CTM, used internally by setTransform(). + */ + +NAN_METHOD(Context2d::ResetTransform) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_identity_matrix(context->context()); +} + +/* + * Translate transformation. + */ + +NAN_METHOD(Context2d::Translate) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_translate(context->context() + , info[0]->IsNumber() ? info[0]->NumberValue() : 0 + , info[1]->IsNumber() ? info[1]->NumberValue() : 0); +} + +/* + * Scale transformation. + */ + +NAN_METHOD(Context2d::Scale) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_scale(context->context() + , info[0]->IsNumber() ? info[0]->NumberValue() : 0 + , info[1]->IsNumber() ? info[1]->NumberValue() : 0); +} + +/* + * Use path as clipping region. + */ + +NAN_METHOD(Context2d::Clip) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->setFillRule(info[0]); + cairo_t *ctx = context->context(); + cairo_clip_preserve(ctx); +} + +/* + * Fill the path. + */ + +NAN_METHOD(Context2d::Fill) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->setFillRule(info[0]); + context->fill(true); +} + +/* + * Stroke the path. + */ + +NAN_METHOD(Context2d::Stroke) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->stroke(true); +} + +/* + * Fill text at (x, y). + */ + +NAN_METHOD(Context2d::FillText) { + if (!info[1]->IsNumber() + || !info[2]->IsNumber()) return; + + String::Utf8Value str(info[0]->ToString()); + double x = info[1]->NumberValue(); + double y = info[2]->NumberValue(); + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + + context->savePath(); + if (context->state->textDrawingMode == TEXT_DRAW_GLYPHS) { + context->fill(); + context->setTextPath(*str, x, y); + } else if (context->state->textDrawingMode == TEXT_DRAW_PATHS) { + context->setTextPath(*str, x, y); + context->fill(); + } + context->restorePath(); +} + +/* + * Stroke text at (x ,y). + */ + +NAN_METHOD(Context2d::StrokeText) { + if (!info[1]->IsNumber() + || !info[2]->IsNumber()) return; + + String::Utf8Value str(info[0]->ToString()); + double x = info[1]->NumberValue(); + double y = info[2]->NumberValue(); + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + + context->savePath(); + if (context->state->textDrawingMode == TEXT_DRAW_GLYPHS) { + context->stroke(); + context->setTextPath(*str, x, y); + } else if (context->state->textDrawingMode == TEXT_DRAW_PATHS) { + context->setTextPath(*str, x, y); + context->stroke(); + } + context->restorePath(); +} + +/* + * Set text path for the given string at (x, y). + */ + +void +Context2d::setTextPath(const char *str, double x, double y) { + PangoRectangle ink_rect, logical_rect; + PangoFontMetrics *metrics = NULL; + + pango_layout_set_text(_layout, str, -1); + pango_cairo_update_layout(_context, _layout); + + switch (state->textAlignment) { + // center + case 0: + pango_layout_get_pixel_extents(_layout, &ink_rect, &logical_rect); + x -= logical_rect.width / 2; + break; + // right + case 1: + pango_layout_get_pixel_extents(_layout, &ink_rect, &logical_rect); + x -= logical_rect.width; + break; + } + + switch (state->textBaseline) { + case TEXT_BASELINE_ALPHABETIC: + metrics = PANGO_LAYOUT_GET_METRICS(_layout); + y -= pango_font_metrics_get_ascent(metrics) / PANGO_SCALE; + break; + case TEXT_BASELINE_MIDDLE: + metrics = PANGO_LAYOUT_GET_METRICS(_layout); + y -= (pango_font_metrics_get_ascent(metrics) + pango_font_metrics_get_descent(metrics))/(2.0 * PANGO_SCALE); + break; + case TEXT_BASELINE_BOTTOM: + metrics = PANGO_LAYOUT_GET_METRICS(_layout); + y -= (pango_font_metrics_get_ascent(metrics) + pango_font_metrics_get_descent(metrics)) / PANGO_SCALE; + break; + } + + if (metrics) pango_font_metrics_unref(metrics); + + cairo_move_to(_context, x, y); + if (state->textDrawingMode == TEXT_DRAW_PATHS) { + pango_cairo_layout_path(_context, _layout); + } else if (state->textDrawingMode == TEXT_DRAW_GLYPHS) { + pango_cairo_show_layout(_context, _layout); + } +} + +/* + * Adds a point to the current subpath. + */ + +NAN_METHOD(Context2d::LineTo) { + if (!info[0]->IsNumber()) + return Nan::ThrowTypeError("lineTo() x must be a number"); + if (!info[1]->IsNumber()) + return Nan::ThrowTypeError("lineTo() y must be a number"); + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_line_to(context->context() + , info[0]->NumberValue() + , info[1]->NumberValue()); +} + +/* + * Creates a new subpath at the given point. + */ + +NAN_METHOD(Context2d::MoveTo) { + if (!info[0]->IsNumber()) + return Nan::ThrowTypeError("moveTo() x must be a number"); + if (!info[1]->IsNumber()) + return Nan::ThrowTypeError("moveTo() y must be a number"); + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_move_to(context->context() + , info[0]->NumberValue() + , info[1]->NumberValue()); +} + +/* + * Set font: + * - weight + * - style + * - size + * - unit + * - family + */ + +NAN_METHOD(Context2d::SetFont) { + // Ignore invalid args + if (!info[0]->IsString() + || !info[1]->IsString() + || !info[2]->IsNumber() + || !info[3]->IsString() + || !info[4]->IsString()) return; + + String::Utf8Value weight(info[0]); + String::Utf8Value style(info[1]); + double size = info[2]->NumberValue(); + String::Utf8Value unit(info[3]); + String::Utf8Value family(info[4]); + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + + PangoFontDescription *desc = pango_font_description_copy(context->state->fontDescription); + pango_font_description_free(context->state->fontDescription); + + pango_font_description_set_style(desc, Canvas::GetStyleFromCSSString(*style)); + pango_font_description_set_weight(desc, Canvas::GetWeightFromCSSString(*weight)); + + if (strlen(*family) > 0) pango_font_description_set_family(desc, *family); + + PangoFontDescription *target_desc; + if ((target_desc = Canvas::FindCustomFace(desc))) { + pango_font_description_free(desc); + desc = pango_font_description_copy(target_desc); + } + + if (size > 0) pango_font_description_set_absolute_size(desc, size * PANGO_SCALE); + + context->state->fontDescription = desc; + + pango_layout_set_font_description(context->_layout, desc); +} + +/* + * Return the given text extents. + * TODO: Support for: + * hangingBaseline, ideographicBaseline, + * fontBoundingBoxAscent, fontBoundingBoxDescent + */ + +NAN_METHOD(Context2d::MeasureText) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + + String::Utf8Value str(info[0]->ToString()); + Local obj = Nan::New(); + + PangoRectangle ink_rect, logical_rect; + PangoFontMetrics *metrics; + PangoLayout *layout = context->layout(); + + pango_layout_set_text(layout, *str, -1); + pango_cairo_update_layout(ctx, layout); + + pango_layout_get_pixel_extents(layout, &ink_rect, &logical_rect); + metrics = PANGO_LAYOUT_GET_METRICS(layout); + + double x_offset; + switch (context->state->textAlignment) { + case 0: // center + x_offset = logical_rect.width / 2; + break; + case 1: // right + x_offset = logical_rect.width; + break; + default: // left + x_offset = 0.0; + } + + double y_offset; + switch (context->state->textBaseline) { + case TEXT_BASELINE_ALPHABETIC: + y_offset = -pango_font_metrics_get_ascent(metrics) / PANGO_SCALE; + break; + case TEXT_BASELINE_MIDDLE: + y_offset = -(pango_font_metrics_get_ascent(metrics) + pango_font_metrics_get_descent(metrics))/(2.0 * PANGO_SCALE); + break; + case TEXT_BASELINE_BOTTOM: + y_offset = -(pango_font_metrics_get_ascent(metrics) + pango_font_metrics_get_descent(metrics)) / PANGO_SCALE; + break; + default: + y_offset = 0.0; + } + + obj->Set(Nan::New("width").ToLocalChecked(), + Nan::New(logical_rect.width)); + obj->Set(Nan::New("actualBoundingBoxLeft").ToLocalChecked(), + Nan::New(x_offset - PANGO_LBEARING(logical_rect))); + obj->Set(Nan::New("actualBoundingBoxRight").ToLocalChecked(), + Nan::New(x_offset + PANGO_RBEARING(logical_rect))); + obj->Set(Nan::New("actualBoundingBoxAscent").ToLocalChecked(), + Nan::New(-(y_offset+ink_rect.y))); + obj->Set(Nan::New("actualBoundingBoxDescent").ToLocalChecked(), + Nan::New((PANGO_DESCENT(ink_rect) + y_offset))); + obj->Set(Nan::New("emHeightAscent").ToLocalChecked(), + Nan::New(PANGO_ASCENT(logical_rect) - y_offset)); + obj->Set(Nan::New("emHeightDescent").ToLocalChecked(), + Nan::New(PANGO_DESCENT(logical_rect) + y_offset)); + obj->Set(Nan::New("alphabeticBaseline").ToLocalChecked(), + Nan::New((pango_font_metrics_get_ascent(metrics) / PANGO_SCALE) + + y_offset)); + + pango_font_metrics_unref(metrics); + + info.GetReturnValue().Set(obj); +} + +/* + * Set text baseline. + */ + +NAN_METHOD(Context2d::SetTextBaseline) { + if (!info[0]->IsInt32()) return; + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->state->textBaseline = info[0]->Int32Value(); +} + +/* + * Set text alignment. -1 0 1 + */ + +NAN_METHOD(Context2d::SetTextAlignment) { + if (!info[0]->IsInt32()) return; + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + context->state->textAlignment = info[0]->Int32Value(); +} + +/* + * Set line dash + * ref: http://www.w3.org/TR/2dcontext/#dom-context-2d-setlinedash + */ +NAN_METHOD(Context2d::SetLineDash) { + if (!info[0]->IsArray()) return; + Local dash = Local::Cast(info[0]); + uint32_t dashes = dash->Length() & 1 ? dash->Length() * 2 : dash->Length(); + + std::vector a(dashes); + for (uint32_t i=0; i d = dash->Get(i % dash->Length()); + if (!d->IsNumber()) return; + a[i] = d->NumberValue(); + if (a[i] < 0 || isnan(a[i]) || isinf(a[i])) return; + } + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + double offset; + cairo_get_dash(ctx, NULL, &offset); + cairo_set_dash(ctx, a.data(), dashes, offset); +} + +/* + * Get line dash + * ref: http://www.w3.org/TR/2dcontext/#dom-context-2d-setlinedash + */ +NAN_METHOD(Context2d::GetLineDash) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + int dashes = cairo_get_dash_count(ctx); + std::vector a(dashes); + cairo_get_dash(ctx, a.data(), NULL); + + Local dash = Nan::New(dashes); + for (int i=0; iSet(Nan::New(i), Nan::New(a[i])); + + info.GetReturnValue().Set(dash); +} + +/* + * Set line dash offset + * ref: http://www.w3.org/TR/2dcontext/#dom-context-2d-setlinedash + */ +NAN_SETTER(Context2d::SetLineDashOffset) { + double offset = value->NumberValue(); + if (isnan(offset) || isinf(offset)) return; + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + + int dashes = cairo_get_dash_count(ctx); + std::vector a(dashes); + cairo_get_dash(ctx, a.data(), NULL); + cairo_set_dash(ctx, a.data(), dashes, offset); +} + +/* + * Get line dash offset + * ref: http://www.w3.org/TR/2dcontext/#dom-context-2d-setlinedash + */ +NAN_GETTER(Context2d::GetLineDashOffset) { + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + double offset; + cairo_get_dash(ctx, NULL, &offset); + + info.GetReturnValue().Set(Nan::New(offset)); +} + +/* + * Fill the rectangle defined by x, y, width and height. + */ + +NAN_METHOD(Context2d::FillRect) { + RECT_ARGS; + if (0 == width || 0 == height) return; + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + context->savePath(); + cairo_rectangle(ctx, x, y, width, height); + context->fill(); + context->restorePath(); +} + +/* + * Stroke the rectangle defined by x, y, width and height. + */ + +NAN_METHOD(Context2d::StrokeRect) { + RECT_ARGS; + if (0 == width && 0 == height) return; + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + context->savePath(); + cairo_rectangle(ctx, x, y, width, height); + context->stroke(); + context->restorePath(); +} + +/* + * Clears all pixels defined by x, y, width and height. + */ + +NAN_METHOD(Context2d::ClearRect) { + RECT_ARGS; + if (0 == width || 0 == height) return; + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + cairo_save(ctx); + context->savePath(); + cairo_rectangle(ctx, x, y, width, height); + cairo_set_operator(ctx, CAIRO_OPERATOR_CLEAR); + cairo_fill(ctx); + context->restorePath(); + cairo_restore(ctx); +} + +/* + * Adds a rectangle subpath. + */ + +NAN_METHOD(Context2d::Rect) { + RECT_ARGS; + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + if (width == 0) { + cairo_move_to(ctx, x, y); + cairo_line_to(ctx, x, y + height); + } else if (height == 0) { + cairo_move_to(ctx, x, y); + cairo_line_to(ctx, x + width, y); + } else { + cairo_rectangle(ctx, x, y, width, height); + } +} + +/* + * Adds an arc at x, y with the given radis and start/end angles. + */ + +NAN_METHOD(Context2d::Arc) { + if (!info[0]->IsNumber() + || !info[1]->IsNumber() + || !info[2]->IsNumber() + || !info[3]->IsNumber() + || !info[4]->IsNumber()) return; + + bool anticlockwise = info[5]->BooleanValue(); + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + + if (anticlockwise && M_PI * 2 != info[4]->NumberValue()) { + cairo_arc_negative(ctx + , info[0]->NumberValue() + , info[1]->NumberValue() + , info[2]->NumberValue() + , info[3]->NumberValue() + , info[4]->NumberValue()); + } else { + cairo_arc(ctx + , info[0]->NumberValue() + , info[1]->NumberValue() + , info[2]->NumberValue() + , info[3]->NumberValue() + , info[4]->NumberValue()); + } +} + +/* + * Adds an arcTo point (x0,y0) to (x1,y1) with the given radius. + * + * Implementation influenced by WebKit. + */ + +NAN_METHOD(Context2d::ArcTo) { + if (!info[0]->IsNumber() + || !info[1]->IsNumber() + || !info[2]->IsNumber() + || !info[3]->IsNumber() + || !info[4]->IsNumber()) return; + + Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); + cairo_t *ctx = context->context(); + + // Current path point + double x, y; + cairo_get_current_point(ctx, &x, &y); + Point p0(x, y); + + // Point (x0,y0) + Point p1(info[0]->NumberValue(), info[1]->NumberValue()); + + // Point (x1,y1) + Point p2(info[2]->NumberValue(), info[3]->NumberValue()); + + float radius = info[4]->NumberValue(); + + if ((p1.x == p0.x && p1.y == p0.y) + || (p1.x == p2.x && p1.y == p2.y) + || radius == 0.f) { + cairo_line_to(ctx, p1.x, p1.y); + return; + } + + Point p1p0((p0.x - p1.x),(p0.y - p1.y)); + Point p1p2((p2.x - p1.x),(p2.y - p1.y)); + float p1p0_length = sqrtf(p1p0.x * p1p0.x + p1p0.y * p1p0.y); + float p1p2_length = sqrtf(p1p2.x * p1p2.x + p1p2.y * p1p2.y); + + double cos_phi = (p1p0.x * p1p2.x + p1p0.y * p1p2.y) / (p1p0_length * p1p2_length); + // all points on a line logic + if (-1 == cos_phi) { + cairo_line_to(ctx, p1.x, p1.y); + return; + } + + if (1 == cos_phi) { + // add infinite far away point + unsigned int max_length = 65535; + double factor_max = max_length / p1p0_length; + Point ep((p0.x + factor_max * p1p0.x), (p0.y + factor_max * p1p0.y)); + cairo_line_to(ctx, ep.x, ep.y); + return; + } + + float tangent = radius / tan(acos(cos_phi) / 2); + float factor_p1p0 = tangent / p1p0_length; + Point t_p1p0((p1.x + factor_p1p0 * p1p0.x), (p1.y + factor_p1p0 * p1p0.y)); + + Point orth_p1p0(p1p0.y, -p1p0.x); + float orth_p1p0_length = sqrt(orth_p1p0.x * orth_p1p0.x + orth_p1p0.y * orth_p1p0.y); + float factor_ra = radius / orth_p1p0_length; + + double cos_alpha = (orth_p1p0.x * p1p2.x + orth_p1p0.y * p1p2.y) / (orth_p1p0_length * p1p2_length); + if (cos_alpha < 0.f) + orth_p1p0 = Point(-orth_p1p0.x, -orth_p1p0.y); + + Point p((t_p1p0.x + factor_ra * orth_p1p0.x), (t_p1p0.y + factor_ra * orth_p1p0.y)); + + orth_p1p0 = Point(-orth_p1p0.x, -orth_p1p0.y); + float sa = acos(orth_p1p0.x / orth_p1p0_length); + if (orth_p1p0.y < 0.f) + sa = 2 * M_PI - sa; + + bool anticlockwise = false; + + float factor_p1p2 = tangent / p1p2_length; + Point t_p1p2((p1.x + factor_p1p2 * p1p2.x), (p1.y + factor_p1p2 * p1p2.y)); + Point orth_p1p2((t_p1p2.x - p.x),(t_p1p2.y - p.y)); + float orth_p1p2_length = sqrtf(orth_p1p2.x * orth_p1p2.x + orth_p1p2.y * orth_p1p2.y); + float ea = acos(orth_p1p2.x / orth_p1p2_length); + + if (orth_p1p2.y < 0) ea = 2 * M_PI - ea; + if ((sa > ea) && ((sa - ea) < M_PI)) anticlockwise = true; + if ((sa < ea) && ((ea - sa) > M_PI)) anticlockwise = true; + + cairo_line_to(ctx, t_p1p0.x, t_p1p0.y); + + if (anticlockwise && M_PI * 2 != radius) { + cairo_arc_negative(ctx + , p.x + , p.y + , radius + , sa + , ea); + } else { + cairo_arc(ctx + , p.x + , p.y + , radius + , sa + , ea); + } +} diff --git a/vendor/canvas/src/CanvasRenderingContext2d.h b/vendor/canvas/src/CanvasRenderingContext2d.h new file mode 100644 index 00000000..fccb5d18 --- /dev/null +++ b/vendor/canvas/src/CanvasRenderingContext2d.h @@ -0,0 +1,164 @@ + +// +// CanvasRenderingContext2d.h +// +// Copyright (c) 2010 LearnBoost +// + +#ifndef __NODE_CONTEXT2D_H__ +#define __NODE_CONTEXT2D_H__ + +#include +#include + +#include "color.h" +#include "Canvas.h" +#include "CanvasGradient.h" + +using namespace std; + +typedef enum { + TEXT_DRAW_PATHS, + TEXT_DRAW_GLYPHS +} canvas_draw_mode_t; + +/* + * State struct. + * + * Used in conjunction with Save() / Restore() since + * cairo's gstate maintains only a single source pattern at a time. + */ + +typedef struct { + rgba_t fill; + rgba_t stroke; + cairo_filter_t patternQuality; + cairo_pattern_t *fillPattern; + cairo_pattern_t *strokePattern; + cairo_pattern_t *fillGradient; + cairo_pattern_t *strokeGradient; + float globalAlpha; + short textAlignment; + short textBaseline; + rgba_t shadow; + int shadowBlur; + double shadowOffsetX; + double shadowOffsetY; + canvas_draw_mode_t textDrawingMode; + PangoFontDescription *fontDescription; +} canvas_state_t; + +void state_assign_fontFamily(canvas_state_t *state, const char *str); + +class Context2d: public Nan::ObjectWrap { + public: + short stateno; + canvas_state_t *states[CANVAS_MAX_STATES]; + canvas_state_t *state; + Context2d(Canvas *canvas); + static Nan::Persistent constructor; + static void Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target); + static NAN_METHOD(New); + static NAN_METHOD(DrawImage); + static NAN_METHOD(PutImageData); + static NAN_METHOD(Save); + static NAN_METHOD(Restore); + static NAN_METHOD(Rotate); + static NAN_METHOD(Translate); + static NAN_METHOD(Scale); + static NAN_METHOD(Transform); + static NAN_METHOD(ResetTransform); + static NAN_METHOD(IsPointInPath); + static NAN_METHOD(BeginPath); + static NAN_METHOD(ClosePath); + static NAN_METHOD(AddPage); + static NAN_METHOD(Clip); + static NAN_METHOD(Fill); + static NAN_METHOD(Stroke); + static NAN_METHOD(FillText); + static NAN_METHOD(StrokeText); + static NAN_METHOD(SetFont); + static NAN_METHOD(SetFillColor); + static NAN_METHOD(SetStrokeColor); + static NAN_METHOD(SetFillPattern); + static NAN_METHOD(SetStrokePattern); + static NAN_METHOD(SetTextBaseline); + static NAN_METHOD(SetTextAlignment); + static NAN_METHOD(SetLineDash); + static NAN_METHOD(GetLineDash); + static NAN_METHOD(MeasureText); + static NAN_METHOD(BezierCurveTo); + static NAN_METHOD(QuadraticCurveTo); + static NAN_METHOD(LineTo); + static NAN_METHOD(MoveTo); + static NAN_METHOD(FillRect); + static NAN_METHOD(StrokeRect); + static NAN_METHOD(ClearRect); + static NAN_METHOD(Rect); + static NAN_METHOD(Arc); + static NAN_METHOD(ArcTo); + static NAN_METHOD(GetImageData); + static NAN_GETTER(GetPatternQuality); + static NAN_GETTER(GetGlobalCompositeOperation); + static NAN_GETTER(GetGlobalAlpha); + static NAN_GETTER(GetShadowColor); + static NAN_GETTER(GetFillColor); + static NAN_GETTER(GetStrokeColor); + static NAN_GETTER(GetMiterLimit); + static NAN_GETTER(GetLineCap); + static NAN_GETTER(GetLineJoin); + static NAN_GETTER(GetLineWidth); + static NAN_GETTER(GetLineDashOffset); + static NAN_GETTER(GetShadowOffsetX); + static NAN_GETTER(GetShadowOffsetY); + static NAN_GETTER(GetShadowBlur); + static NAN_GETTER(GetAntiAlias); + static NAN_GETTER(GetTextDrawingMode); + static NAN_GETTER(GetFilter); + static NAN_SETTER(SetPatternQuality); + static NAN_SETTER(SetGlobalCompositeOperation); + static NAN_SETTER(SetGlobalAlpha); + static NAN_SETTER(SetShadowColor); + static NAN_SETTER(SetMiterLimit); + static NAN_SETTER(SetLineCap); + static NAN_SETTER(SetLineJoin); + static NAN_SETTER(SetLineWidth); + static NAN_SETTER(SetLineDashOffset); + static NAN_SETTER(SetShadowOffsetX); + static NAN_SETTER(SetShadowOffsetY); + static NAN_SETTER(SetShadowBlur); + static NAN_SETTER(SetAntiAlias); + static NAN_SETTER(SetTextDrawingMode); + static NAN_SETTER(SetFilter); + inline void setContext(cairo_t *ctx) { _context = ctx; } + inline cairo_t *context(){ return _context; } + inline Canvas *canvas(){ return _canvas; } + inline bool hasShadow(); + void inline setSourceRGBA(rgba_t color); + void inline setSourceRGBA(cairo_t *ctx, rgba_t color); + void setTextPath(const char *str, double x, double y); + void blur(cairo_surface_t *surface, int radius); + void shadow(void (fn)(cairo_t *cr)); + void shadowStart(); + void shadowApply(); + void savePath(); + void restorePath(); + void saveState(); + void restoreState(); + void inline setFillRule(v8::Local value); + void fill(bool preserve = false); + void stroke(bool preserve = false); + void save(); + void restore(); + void setFontFromState(); + inline PangoLayout *layout(){ return _layout; } + + private: + ~Context2d(); + Canvas *_canvas; + cairo_t *_context; + cairo_path_t *_path; + PangoLayout *_layout; +}; + +#endif diff --git a/vendor/canvas/src/Image.cc b/vendor/canvas/src/Image.cc new file mode 100644 index 00000000..0147f878 --- /dev/null +++ b/vendor/canvas/src/Image.cc @@ -0,0 +1,974 @@ +// +// Image.cc +// +// Copyright (c) 2010 LearnBoost +// + +#include "Canvas.h" +#include "Image.h" +#include +#include +#include +#include + +#ifdef HAVE_GIF +typedef struct { + uint8_t *buf; + unsigned len; + unsigned pos; +} gif_data_t; +#endif + +/* + * Read closure used by loadFromBuffer. + */ + +typedef struct { + unsigned len; + uint8_t *buf; +} read_closure_t; + +Nan::Persistent Image::constructor; + +/* + * Initialize Image. + */ + +void +Image::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) { + Nan::HandleScope scope; + + Local ctor = Nan::New(Image::New); + constructor.Reset(ctor); + ctor->InstanceTemplate()->SetInternalFieldCount(1); + ctor->SetClassName(Nan::New("Image").ToLocalChecked()); + + // Prototype + Local proto = ctor->PrototypeTemplate(); + Nan::SetAccessor(proto, Nan::New("source").ToLocalChecked(), GetSource, SetSource); + Nan::SetAccessor(proto, Nan::New("complete").ToLocalChecked(), GetComplete); + Nan::SetAccessor(proto, Nan::New("width").ToLocalChecked(), GetWidth); + Nan::SetAccessor(proto, Nan::New("height").ToLocalChecked(), GetHeight); + Nan::SetAccessor(proto, Nan::New("onload").ToLocalChecked(), GetOnload, SetOnload); + Nan::SetAccessor(proto, Nan::New("onerror").ToLocalChecked(), GetOnerror, SetOnerror); +#if CAIRO_VERSION_MINOR >= 10 + Nan::SetAccessor(proto, Nan::New("dataMode").ToLocalChecked(), GetDataMode, SetDataMode); + ctor->Set(Nan::New("MODE_IMAGE").ToLocalChecked(), Nan::New(DATA_IMAGE)); + ctor->Set(Nan::New("MODE_MIME").ToLocalChecked(), Nan::New(DATA_MIME)); +#endif + Nan::Set(target, Nan::New("Image").ToLocalChecked(), ctor->GetFunction()); +} + +/* + * Initialize a new Image. + */ + +NAN_METHOD(Image::New) { + if (!info.IsConstructCall()) { + return Nan::ThrowTypeError("Class constructors cannot be invoked without 'new'"); + } + + Image *img = new Image; + img->data_mode = DATA_IMAGE; + img->Wrap(info.This()); + info.GetReturnValue().Set(info.This()); +} + +/* + * Get complete boolean. + */ + +NAN_GETTER(Image::GetComplete) { + Image *img = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(Image::COMPLETE == img->state)); +} + +#if CAIRO_VERSION_MINOR >= 10 + +/* + * Get dataMode. + */ + +NAN_GETTER(Image::GetDataMode) { + Image *img = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(img->data_mode)); +} + +/* + * Set dataMode. + */ + +NAN_SETTER(Image::SetDataMode) { + if (value->IsNumber()) { + Image *img = Nan::ObjectWrap::Unwrap(info.This()); + int mode = value->Uint32Value(); + img->data_mode = (data_mode_t) mode; + } +} + +#endif + +/* + * Get width. + */ + +NAN_GETTER(Image::GetWidth) { + Image *img = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(img->width)); +} +/* + * Get height. + */ + +NAN_GETTER(Image::GetHeight) { + Image *img = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(img->height)); +} + +/* + * Get src path. + */ + +NAN_GETTER(Image::GetSource) { + Image *img = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(img->filename ? img->filename : "").ToLocalChecked()); +} + +/* + * Clean up assets and variables. + */ + +void +Image::clearData() { + if (_surface) { + cairo_surface_destroy(_surface); + Nan::AdjustExternalMemory(-_data_len); + _data_len = 0; + _surface = NULL; + } + + free(_data); + _data = NULL; + + free(filename); + filename = NULL; + + width = height = 0; + state = DEFAULT; +} + +/* + * Set src path. + */ + +NAN_SETTER(Image::SetSource) { + Image *img = Nan::ObjectWrap::Unwrap(info.This()); + cairo_status_t status = CAIRO_STATUS_READ_ERROR; + + img->clearData(); + + // url string + if (value->IsString()) { + String::Utf8Value src(value); + if (img->filename) free(img->filename); + img->filename = strdup(*src); + status = img->load(); + // Buffer + } else if (Buffer::HasInstance(value)) { + uint8_t *buf = (uint8_t *) Buffer::Data(value->ToObject()); + unsigned len = Buffer::Length(value->ToObject()); + status = img->loadFromBuffer(buf, len); + } + + // check status + if (status) { + img->error(Canvas::Error(status)); + } else { + img->loaded(); + } +} + +/* + * Load image data from `buf` by sniffing + * the bytes to determine format. + */ + +cairo_status_t +Image::loadFromBuffer(uint8_t *buf, unsigned len) { + uint8_t data[4] = {0}; + memcpy(data, buf, (len < 4 ? len : 4) * sizeof(uint8_t)); + + if (isPNG(data)) return loadPNGFromBuffer(buf); +#ifdef HAVE_GIF + if (isGIF(data)) return loadGIFFromBuffer(buf, len); +#endif +#ifdef HAVE_JPEG +#if CAIRO_VERSION_MINOR < 10 + if (isJPEG(data)) return loadJPEGFromBuffer(buf, len); +#else + if (isJPEG(data)) { + if (DATA_IMAGE == data_mode) return loadJPEGFromBuffer(buf, len); + if (DATA_MIME == data_mode) return decodeJPEGBufferIntoMimeSurface(buf, len); + if ((DATA_IMAGE | DATA_MIME) == data_mode) { + cairo_status_t status; + status = loadJPEGFromBuffer(buf, len); + if (status) return status; + return assignDataAsMime(buf, len, CAIRO_MIME_TYPE_JPEG); + } + } +#endif +#endif + return CAIRO_STATUS_READ_ERROR; +} + +/* + * Load PNG data from `buf`. + */ + +cairo_status_t +Image::loadPNGFromBuffer(uint8_t *buf) { + read_closure_t closure; + closure.len = 0; + closure.buf = buf; + _surface = cairo_image_surface_create_from_png_stream(readPNG, &closure); + cairo_status_t status = cairo_surface_status(_surface); + if (status) return status; + return CAIRO_STATUS_SUCCESS; +} + +/* + * Read PNG data. + */ + +cairo_status_t +Image::readPNG(void *c, uint8_t *data, unsigned int len) { + read_closure_t *closure = (read_closure_t *) c; + memcpy(data, closure->buf + closure->len, len); + closure->len += len; + return CAIRO_STATUS_SUCCESS; +} + +/* + * Get onload callback. + */ + +NAN_GETTER(Image::GetOnload) { + Image *img = Nan::ObjectWrap::Unwrap(info.This()); + if (img->onload) { + info.GetReturnValue().Set(img->onload->GetFunction()); + } else { + info.GetReturnValue().SetNull(); + } +} + +/* + * Set onload callback. + */ + +NAN_SETTER(Image::SetOnload) { + if (value->IsFunction()) { + Image *img = Nan::ObjectWrap::Unwrap(info.This()); + img->onload = new Nan::Callback(value.As()); + } else if (value->IsNull()) { + Image *img = Nan::ObjectWrap::Unwrap(info.This()); + if (img->onload) { + delete img->onload; + } + img->onload = NULL; + } +} + +/* + * Get onerror callback. + */ + +NAN_GETTER(Image::GetOnerror) { + Image *img = Nan::ObjectWrap::Unwrap(info.This()); + if (img->onerror) { + info.GetReturnValue().Set(img->onerror->GetFunction()); + } else { + info.GetReturnValue().SetNull(); + } +} + +/* + * Set onerror callback. + */ + +NAN_SETTER(Image::SetOnerror) { + if (value->IsFunction()) { + Image *img = Nan::ObjectWrap::Unwrap(info.This()); + img->onerror = new Nan::Callback(value.As()); + } else if (value->IsNull()) { + Image *img = Nan::ObjectWrap::Unwrap(info.This()); + if (img->onerror) { + delete img->onerror; + } + img->onerror = NULL; + } +} + +/* + * Initialize a new Image. + */ + +Image::Image() { + filename = NULL; + _data = NULL; + _data_len = 0; + _surface = NULL; + width = height = 0; + state = DEFAULT; + onload = NULL; + onerror = NULL; +} + +/* + * Destroy image and associated surface. + */ + +Image::~Image() { + clearData(); + + if (onerror) { + delete onerror; + onerror = NULL; + } + + if (onload) { + delete onload; + onload = NULL; + } +} + +/* + * Initiate image loading. + */ + +cairo_status_t +Image::load() { + if (LOADING != state) { + state = LOADING; + return loadSurface(); + } + return CAIRO_STATUS_READ_ERROR; +} + +/* + * Invoke onload (when assigned) and assign dimensions. + */ + +void +Image::loaded() { + Nan::HandleScope scope; + state = COMPLETE; + + width = cairo_image_surface_get_width(_surface); + height = cairo_image_surface_get_height(_surface); + _data_len = height * cairo_image_surface_get_stride(_surface); + Nan::AdjustExternalMemory(_data_len); + + if (onload != NULL) { + onload->Call(0, NULL); + } +} + +/* + * Invoke onerror (when assigned) with the given err. + */ + +void +Image::error(Local err) { + Nan::HandleScope scope; + if (onerror != NULL) { + Local argv[1] = { err }; + onerror->Call(1, argv); + } +} + +/* + * Load cairo surface from the image src. + * + * TODO: support more formats + * TODO: use node IO or at least thread pool + */ + +cairo_status_t +Image::loadSurface() { + FILE *stream = fopen(filename, "rb"); + if (!stream) return CAIRO_STATUS_READ_ERROR; + uint8_t buf[5]; + if (1 != fread(&buf, 5, 1, stream)) { + fclose(stream); + return CAIRO_STATUS_READ_ERROR; + } + fseek(stream, 0, SEEK_SET); + + // png + if (isPNG(buf)) { + fclose(stream); + return loadPNG(); + } + + // gif +#ifdef HAVE_GIF + if (isGIF(buf)) return loadGIF(stream); +#endif + + // jpeg +#ifdef HAVE_JPEG + if (isJPEG(buf)) return loadJPEG(stream); +#endif + + fclose(stream); + return CAIRO_STATUS_READ_ERROR; +} + +/* + * Load PNG. + */ + +cairo_status_t +Image::loadPNG() { + _surface = cairo_image_surface_create_from_png(filename); + return cairo_surface_status(_surface); +} + +// GIF support + +#ifdef HAVE_GIF + +/* + * Return the alpha color for `gif` at `frame`, or -1. + */ + +int +get_gif_transparent_color(GifFileType *gif, int frame) { + ExtensionBlock *ext = gif->SavedImages[frame].ExtensionBlocks; + int len = gif->SavedImages[frame].ExtensionBlockCount; + for (int x = 0; x < len; ++x, ++ext) { + if ((ext->Function == GRAPHICS_EXT_FUNC_CODE) && (ext->Bytes[0] & 1)) { + return ext->Bytes[3] == 0 ? 0 : (uint8_t) ext->Bytes[3]; + } + } + return -1; +} + +/* + * Memory GIF reader callback. + */ + +int +read_gif_from_memory(GifFileType *gif, GifByteType *buf, int len) { + gif_data_t *data = (gif_data_t *) gif->UserData; + if ((data->pos + len) > data->len) len = data->len - data->pos; + memcpy(buf, data->pos + data->buf, len); + data->pos += len; + return len; +} + +/* + * Load GIF. + */ + +cairo_status_t +Image::loadGIF(FILE *stream) { + struct stat s; + int fd = fileno(stream); + + // stat + if (fstat(fd, &s) < 0) { + fclose(stream); + return CAIRO_STATUS_READ_ERROR; + } + + uint8_t *buf = (uint8_t *) malloc(s.st_size); + + if (!buf) { + fclose(stream); + return CAIRO_STATUS_NO_MEMORY; + } + + size_t read = fread(buf, s.st_size, 1, stream); + fclose(stream); + + cairo_status_t result = CAIRO_STATUS_READ_ERROR; + if (1 == read) result = loadGIFFromBuffer(buf, s.st_size); + free(buf); + + return result; +} + +/* + * Load give from `buf` and the given `len`. + */ + +cairo_status_t +Image::loadGIFFromBuffer(uint8_t *buf, unsigned len) { + int i = 0; + GifFileType* gif; + + gif_data_t gifd = { buf, len, 0 }; + +#if GIFLIB_MAJOR >= 5 + int errorcode; + if ((gif = DGifOpen((void*) &gifd, read_gif_from_memory, &errorcode)) == NULL) + return CAIRO_STATUS_READ_ERROR; +#else + if ((gif = DGifOpen((void*) &gifd, read_gif_from_memory)) == NULL) + return CAIRO_STATUS_READ_ERROR; +#endif + + if (GIF_OK != DGifSlurp(gif)) { + GIF_CLOSE_FILE(gif); + return CAIRO_STATUS_READ_ERROR; + } + + width = gif->SWidth; + height = gif->SHeight; + + uint8_t *data = (uint8_t *) malloc(width * height * 4); + if (!data) { + GIF_CLOSE_FILE(gif); + return CAIRO_STATUS_NO_MEMORY; + } + + GifImageDesc *img = &gif->SavedImages[i].ImageDesc; + + // local colormap takes precedence over global + ColorMapObject *colormap = img->ColorMap + ? img->ColorMap + : gif->SColorMap; + + int bgColor = 0; + int alphaColor = get_gif_transparent_color(gif, i); + if (gif->SColorMap) bgColor = (uint8_t) gif->SBackGroundColor; + else if(alphaColor >= 0) bgColor = alphaColor; + + uint8_t *src_data = (uint8_t*) gif->SavedImages[i].RasterBits; + uint32_t *dst_data = (uint32_t*) data; + + if (!gif->Image.Interlace) { + if (width == img->Width && height == img->Height) { + for (int y = 0; y < height; ++y) { + for (int x = 0; x < width; ++x) { + *dst_data = ((*src_data == alphaColor) ? 0 : 255) << 24 + | colormap->Colors[*src_data].Red << 16 + | colormap->Colors[*src_data].Green << 8 + | colormap->Colors[*src_data].Blue; + + dst_data++; + src_data++; + } + } + } else { + // Image does not take up whole "screen" so we need to fill-in the background + int bottom = img->Top + img->Height; + int right = img->Left + img->Width; + + for (int y = 0; y < height; ++y) { + for (int x = 0; x < width; ++x) { + if (y < img->Top || y >= bottom || x < img->Left || x >= right) { + *dst_data = ((bgColor == alphaColor) ? 0 : 255) << 24 + | colormap->Colors[bgColor].Red << 16 + | colormap->Colors[bgColor].Green << 8 + | colormap->Colors[bgColor].Blue; + } else { + *dst_data = ((*src_data == alphaColor) ? 0 : 255) << 24 + | colormap->Colors[*src_data].Red << 16 + | colormap->Colors[*src_data].Green << 8 + | colormap->Colors[*src_data].Blue; + } + + dst_data++; + src_data++; + } + } + } + } else { + // Image is interlaced so that it streams nice over 14.4k and 28.8k modems :) + // We first load in 1/8 of the image, followed by another 1/8, followed by + // 1/4 and finally the remaining 1/2. + int ioffs[] = { 0, 4, 2, 1 }; + int ijumps[] = { 8, 8, 4, 2 }; + + uint8_t *src_ptr = src_data; + uint32_t *dst_ptr; + + for(int z = 0; z < 4; z++) { + for(int y = ioffs[z]; y < height; y += ijumps[z]) { + dst_ptr = dst_data + width * y; + for(int x = 0; x < width; ++x) { + *dst_ptr = ((*src_ptr == alphaColor) ? 0 : 255) << 24 + | (colormap->Colors[*src_ptr].Red) << 16 + | (colormap->Colors[*src_ptr].Green) << 8 + | (colormap->Colors[*src_ptr].Blue); + + dst_ptr++; + src_ptr++; + } + } + } + } + + GIF_CLOSE_FILE(gif); + + // New image surface + _surface = cairo_image_surface_create_for_data( + data + , CAIRO_FORMAT_ARGB32 + , width + , height + , cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, width)); + + cairo_status_t status = cairo_surface_status(_surface); + + if (status) { + free(data); + return status; + } + + _data = data; + + return CAIRO_STATUS_SUCCESS; +} +#endif /* HAVE_GIF */ + +// JPEG support + +#ifdef HAVE_JPEG + +// libjpeg 6.2 does not have jpeg_mem_src; define it ourselves here unless +// libjpeg 8 is installed. +#if JPEG_LIB_VERSION < 80 + +/* Read JPEG image from a memory segment */ +static void +init_source(j_decompress_ptr cinfo) {} + +static boolean +fill_input_buffer(j_decompress_ptr cinfo) { + ERREXIT(cinfo, JERR_INPUT_EMPTY); + return TRUE; +} +static void +skip_input_data(j_decompress_ptr cinfo, long num_bytes) { + struct jpeg_source_mgr* src = (struct jpeg_source_mgr*) cinfo->src; + if (num_bytes > 0) { + src->next_input_byte += (size_t) num_bytes; + src->bytes_in_buffer -= (size_t) num_bytes; + } +} + +static void term_source (j_decompress_ptr cinfo) {} +static void jpeg_mem_src (j_decompress_ptr cinfo, void* buffer, long nbytes) { + struct jpeg_source_mgr* src; + + if (cinfo->src == NULL) { + cinfo->src = (struct jpeg_source_mgr *) + (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, + sizeof(struct jpeg_source_mgr)); + } + + src = (struct jpeg_source_mgr*) cinfo->src; + src->init_source = init_source; + src->fill_input_buffer = fill_input_buffer; + src->skip_input_data = skip_input_data; + src->resync_to_restart = jpeg_resync_to_restart; /* use default method */ + src->term_source = term_source; + src->bytes_in_buffer = nbytes; + src->next_input_byte = (JOCTET*)buffer; +} + +#endif + +/* + * Takes an initialised jpeg_decompress_struct and decodes the + * data into _surface. + */ + +cairo_status_t +Image::decodeJPEGIntoSurface(jpeg_decompress_struct *args) { + int stride = width * 4; + cairo_status_t status; + + uint8_t *data = (uint8_t *) malloc(width * height * 4); + if (!data) { + jpeg_abort_decompress(args); + jpeg_destroy_decompress(args); + return CAIRO_STATUS_NO_MEMORY; + } + + uint8_t *src = (uint8_t *) malloc(width * args->output_components); + if (!src) { + free(data); + jpeg_abort_decompress(args); + jpeg_destroy_decompress(args); + return CAIRO_STATUS_NO_MEMORY; + } + + for (int y = 0; y < height; ++y) { + jpeg_read_scanlines(args, &src, 1); + uint32_t *row = (uint32_t *)(data + stride * y); + for (int x = 0; x < width; ++x) { + if (args->jpeg_color_space == 1) { + uint32_t *pixel = row + x; + *pixel = 255 << 24 + | src[x] << 16 + | src[x] << 8 + | src[x]; + } else { + int bx = 3 * x; + uint32_t *pixel = row + x; + *pixel = 255 << 24 + | src[bx + 0] << 16 + | src[bx + 1] << 8 + | src[bx + 2]; + } + } + } + + _surface = cairo_image_surface_create_for_data( + data + , CAIRO_FORMAT_ARGB32 + , width + , height + , cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, width)); + + jpeg_finish_decompress(args); + jpeg_destroy_decompress(args); + status = cairo_surface_status(_surface); + + if (status) { + free(data); + free(src); + return status; + } + + free(src); + + _data = data; + + return CAIRO_STATUS_SUCCESS; +} + +#if CAIRO_VERSION_MINOR >= 10 + +/* + * Takes a jpeg data buffer and assigns it as mime data to a + * dummy surface + */ + +cairo_status_t +Image::decodeJPEGBufferIntoMimeSurface(uint8_t *buf, unsigned len) { + // TODO: remove this duplicate logic + // JPEG setup + struct jpeg_decompress_struct args; + struct jpeg_error_mgr err; + args.err = jpeg_std_error(&err); + jpeg_create_decompress(&args); + + jpeg_mem_src(&args, buf, len); + + jpeg_read_header(&args, 1); + jpeg_start_decompress(&args); + width = args.output_width; + height = args.output_height; + + // Data alloc + // 8 pixels per byte using Alpha Channel format to reduce memory requirement. + int buf_size = height * cairo_format_stride_for_width(CAIRO_FORMAT_A1, width); + uint8_t *data = (uint8_t *) malloc(buf_size); + if (!data) return CAIRO_STATUS_NO_MEMORY; + + // New image surface + _surface = cairo_image_surface_create_for_data( + data + , CAIRO_FORMAT_A1 + , width + , height + , cairo_format_stride_for_width(CAIRO_FORMAT_A1, width)); + + // Cleanup + jpeg_abort_decompress(&args); + jpeg_destroy_decompress(&args); + cairo_status_t status = cairo_surface_status(_surface); + + if (status) { + free(data); + return status; + } + + _data = data; + + return assignDataAsMime(buf, len, CAIRO_MIME_TYPE_JPEG); +} + +/* + * Helper function for disposing of a mime data closure. + */ + +void +clearMimeData(void *closure) { + Nan::AdjustExternalMemory(-((read_closure_t *)closure)->len); + free(((read_closure_t *) closure)->buf); + free(closure); +} + +/* + * Assign a given buffer as mime data against the surface. + * The provided buffer will be copied, and the copy will + * be automatically freed when the surface is destroyed. + */ + +cairo_status_t +Image::assignDataAsMime(uint8_t *data, int len, const char *mime_type) { + uint8_t *mime_data = (uint8_t *) malloc(len); + if (!mime_data) return CAIRO_STATUS_NO_MEMORY; + + read_closure_t *mime_closure = (read_closure_t *) malloc(sizeof(read_closure_t)); + if (!mime_closure) { + free(mime_data); + return CAIRO_STATUS_NO_MEMORY; + } + + memcpy(mime_data, data, len); + + mime_closure->buf = mime_data; + mime_closure->len = len; + + Nan::AdjustExternalMemory(len); + + return cairo_surface_set_mime_data(_surface + , mime_type + , mime_data + , len + , clearMimeData + , mime_closure); +} + +#endif + +/* + * Load jpeg from buffer. + */ + +cairo_status_t +Image::loadJPEGFromBuffer(uint8_t *buf, unsigned len) { + // TODO: remove this duplicate logic + // JPEG setup + struct jpeg_decompress_struct args; + struct jpeg_error_mgr err; + args.err = jpeg_std_error(&err); + jpeg_create_decompress(&args); + + jpeg_mem_src(&args, buf, len); + + jpeg_read_header(&args, 1); + jpeg_start_decompress(&args); + width = args.output_width; + height = args.output_height; + + return decodeJPEGIntoSurface(&args); +} + +/* + * Load JPEG, convert RGB to ARGB. + */ + +cairo_status_t +Image::loadJPEG(FILE *stream) { + cairo_status_t status; + + if (data_mode == DATA_IMAGE) { // Can lazily read in the JPEG. + // JPEG setup + struct jpeg_decompress_struct args; + struct jpeg_error_mgr err; + args.err = jpeg_std_error(&err); + jpeg_create_decompress(&args); + + jpeg_stdio_src(&args, stream); + + jpeg_read_header(&args, 1); + jpeg_start_decompress(&args); + width = args.output_width; + height = args.output_height; + + status = decodeJPEGIntoSurface(&args); + fclose(stream); + } else { // We'll need the actual source jpeg data, so read fully. +#if CAIRO_VERSION_MINOR >= 10 + uint8_t *buf; + unsigned len; + + fseek(stream, 0, SEEK_END); + len = ftell(stream); + fseek(stream, 0, SEEK_SET); + + buf = (uint8_t *) malloc(len); + if (!buf) return CAIRO_STATUS_NO_MEMORY; + + if (fread(buf, len, 1, stream) != 1) { + status = CAIRO_STATUS_READ_ERROR; + } else if ((DATA_IMAGE | DATA_MIME) == data_mode) { + status = loadJPEGFromBuffer(buf, len); + if (!status) status = assignDataAsMime(buf, len, CAIRO_MIME_TYPE_JPEG); + } else if (DATA_MIME == data_mode) { + status = decodeJPEGBufferIntoMimeSurface(buf, len); + } else { + status = CAIRO_STATUS_READ_ERROR; + } + + fclose(stream); + free(buf); +#else + status = CAIRO_STATUS_READ_ERROR; +#endif + } + + return status; +} + +#endif /* HAVE_JPEG */ + +/* + * Return UNKNOWN, JPEG, or PNG based on the filename. + */ + +Image::type +Image::extension(const char *filename) { + size_t len = strlen(filename); + filename += len; + if (len >= 5 && 0 == strcmp(".jpeg", filename - 5)) return Image::JPEG; + if (len >= 4 && 0 == strcmp(".gif", filename - 4)) return Image::GIF; + if (len >= 4 && 0 == strcmp(".jpg", filename - 4)) return Image::JPEG; + if (len >= 4 && 0 == strcmp(".png", filename - 4)) return Image::PNG; + return Image::UNKNOWN; +} + +/* + * Sniff bytes 0..1 for JPEG's magic number ff d8. + */ + +int +Image::isJPEG(uint8_t *data) { + return 0xff == data[0] && 0xd8 == data[1]; +} + +/* + * Sniff bytes 0..2 for "GIF". + */ + +int +Image::isGIF(uint8_t *data) { + return 'G' == data[0] && 'I' == data[1] && 'F' == data[2]; +} + +/* + * Sniff bytes 1..3 for "PNG". + */ + +int +Image::isPNG(uint8_t *data) { + return 'P' == data[1] && 'N' == data[2] && 'G' == data[3]; +} diff --git a/vendor/canvas/src/Image.h b/vendor/canvas/src/Image.h new file mode 100644 index 00000000..5c7d6a28 --- /dev/null +++ b/vendor/canvas/src/Image.h @@ -0,0 +1,108 @@ + +// +// Image.h +// +// Copyright (c) 2010 LearnBoost +// + +#ifndef __NODE_IMAGE_H__ +#define __NODE_IMAGE_H__ + +#include "Canvas.h" + +#ifdef HAVE_JPEG +#include +#include +#endif + +#ifdef HAVE_GIF +#include + + #if GIFLIB_MAJOR > 5 || GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1 + #define GIF_CLOSE_FILE(gif) DGifCloseFile(gif, NULL) + #else + #define GIF_CLOSE_FILE(gif) DGifCloseFile(gif) + #endif +#endif + + + +class Image: public Nan::ObjectWrap { + public: + char *filename; + int width, height; + Nan::Callback *onload; + Nan::Callback *onerror; + static Nan::Persistent constructor; + static void Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target); + static NAN_METHOD(New); + static NAN_GETTER(GetSource); + static NAN_GETTER(GetOnload); + static NAN_GETTER(GetOnerror); + static NAN_GETTER(GetComplete); + static NAN_GETTER(GetWidth); + static NAN_GETTER(GetHeight); + static NAN_GETTER(GetDataMode); + static NAN_SETTER(SetSource); + static NAN_SETTER(SetOnload); + static NAN_SETTER(SetOnerror); + static NAN_SETTER(SetDataMode); + inline cairo_surface_t *surface(){ return _surface; } + inline uint8_t *data(){ return cairo_image_surface_get_data(_surface); } + inline int stride(){ return cairo_image_surface_get_stride(_surface); } + static int isPNG(uint8_t *data); + static int isJPEG(uint8_t *data); + static int isGIF(uint8_t *data); + static cairo_status_t readPNG(void *closure, unsigned char *data, unsigned len); + inline int isComplete(){ return COMPLETE == state; } + cairo_status_t loadSurface(); + cairo_status_t loadFromBuffer(uint8_t *buf, unsigned len); + cairo_status_t loadPNGFromBuffer(uint8_t *buf); + cairo_status_t loadPNG(); + void clearData(); +#ifdef HAVE_GIF + cairo_status_t loadGIFFromBuffer(uint8_t *buf, unsigned len); + cairo_status_t loadGIF(FILE *stream); +#endif +#ifdef HAVE_JPEG + cairo_status_t loadJPEGFromBuffer(uint8_t *buf, unsigned len); + cairo_status_t loadJPEG(FILE *stream); + cairo_status_t decodeJPEGIntoSurface(jpeg_decompress_struct *info); +#if CAIRO_VERSION_MINOR >= 10 + cairo_status_t decodeJPEGBufferIntoMimeSurface(uint8_t *buf, unsigned len); + cairo_status_t assignDataAsMime(uint8_t *data, int len, const char *mime_type); +#endif +#endif + void error(Local error); + void loaded(); + cairo_status_t load(); + Image(); + + enum { + DEFAULT + , LOADING + , COMPLETE + } state; + + enum data_mode_t { + DATA_IMAGE = 1 + , DATA_MIME = 2 + } data_mode; + + typedef enum { + UNKNOWN + , GIF + , JPEG + , PNG + } type; + + static type extension(const char *filename); + + private: + cairo_surface_t *_surface; + uint8_t *_data; + int _data_len; + ~Image(); +}; + +#endif diff --git a/vendor/canvas/src/ImageData.cc b/vendor/canvas/src/ImageData.cc new file mode 100644 index 00000000..73730da3 --- /dev/null +++ b/vendor/canvas/src/ImageData.cc @@ -0,0 +1,135 @@ + +// +// ImageData.cc +// +// Copyright (c) 2010 LearnBoost +// + +#include "ImageData.h" + +Nan::Persistent ImageData::constructor; + +/* + * Initialize ImageData. + */ + +void +ImageData::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) { + Nan::HandleScope scope; + + // Constructor + Local ctor = Nan::New(ImageData::New); + constructor.Reset(ctor); + ctor->InstanceTemplate()->SetInternalFieldCount(1); + ctor->SetClassName(Nan::New("ImageData").ToLocalChecked()); + + // Prototype + Local proto = ctor->PrototypeTemplate(); + Nan::SetAccessor(proto, Nan::New("width").ToLocalChecked(), GetWidth); + Nan::SetAccessor(proto, Nan::New("height").ToLocalChecked(), GetHeight); + Nan::Set(target, Nan::New("ImageData").ToLocalChecked(), ctor->GetFunction()); +} + +/* + * Initialize a new ImageData object. + */ + +NAN_METHOD(ImageData::New) { + if (!info.IsConstructCall()) { + return Nan::ThrowTypeError("Class constructors cannot be invoked without 'new'"); + } + +#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION <= 10 + Local clampedArray; + Local global = Context::GetCurrent()->Global(); +#else + Local clampedArray; +#endif + + uint32_t width; + uint32_t height; + int length; + + if (info[0]->IsUint32() && info[1]->IsUint32()) { + width = info[0]->Uint32Value(); + if (width == 0) { + Nan::ThrowRangeError("The source width is zero."); + return; + } + height = info[1]->Uint32Value(); + if (height == 0) { + Nan::ThrowRangeError("The source height is zero."); + return; + } + length = width * height * 4; + +#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION <= 10 + Local sizeHandle = Nan::New(length); + Local caargv[] = { sizeHandle }; + clampedArray = global->Get(Nan::New("Uint8ClampedArray").ToLocalChecked()).As()->NewInstance(1, caargv); +#else + clampedArray = Uint8ClampedArray::New(ArrayBuffer::New(Isolate::GetCurrent(), length), 0, length); +#endif + +#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION <= 10 + } else if (info[0]->ToObject()->GetIndexedPropertiesExternalArrayDataType() == kExternalPixelArray && info[1]->IsUint32()) { + clampedArray = info[0]->ToObject(); + length = clampedArray->GetIndexedPropertiesExternalArrayDataLength(); +#else + } else if (info[0]->IsUint8ClampedArray() && info[1]->IsUint32()) { + clampedArray = info[0].As(); + length = clampedArray->Length(); +#endif + if (length == 0) { + Nan::ThrowRangeError("The input data has a zero byte length."); + return; + } + if (length % 4 != 0) { + Nan::ThrowRangeError("The input data byte length is not a multiple of 4."); + return; + } + width = info[1]->Uint32Value(); + int size = length / 4; + if (width == 0) { + Nan::ThrowRangeError("The source width is zero."); + return; + } + if (size % width != 0) { + Nan::ThrowRangeError("The input data byte length is not a multiple of (4 * width)."); + return; + } + height = size / width; + if (info[2]->IsUint32() && info[2]->Uint32Value() != height) { + Nan::ThrowRangeError("The input data byte length is not equal to (4 * width * height)."); + return; + } + } else { + Nan::ThrowTypeError("Expected (Uint8ClampedArray, width[, height]) or (width, height)"); + return; + } + + Nan::TypedArrayContents dataPtr(clampedArray); + + ImageData *imageData = new ImageData(reinterpret_cast(*dataPtr), width, height); + imageData->Wrap(info.This()); + info.This()->Set(Nan::New("data").ToLocalChecked(), clampedArray); + info.GetReturnValue().Set(info.This()); +} + +/* + * Get width. + */ + +NAN_GETTER(ImageData::GetWidth) { + ImageData *imageData = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(imageData->width())); +} + +/* + * Get height. + */ + +NAN_GETTER(ImageData::GetHeight) { + ImageData *imageData = Nan::ObjectWrap::Unwrap(info.This()); + info.GetReturnValue().Set(Nan::New(imageData->height())); +} diff --git a/vendor/canvas/src/ImageData.h b/vendor/canvas/src/ImageData.h new file mode 100644 index 00000000..074d1ff8 --- /dev/null +++ b/vendor/canvas/src/ImageData.h @@ -0,0 +1,36 @@ + +// +// ImageData.h +// +// Copyright (c) 2010 LearnBoost +// + +#ifndef __NODE_IMAGE_DATA_H__ +#define __NODE_IMAGE_DATA_H__ + +#include "Canvas.h" +#include +#include + +class ImageData: public Nan::ObjectWrap { + public: + static Nan::Persistent constructor; + static void Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target); + static NAN_METHOD(New); + static NAN_GETTER(GetWidth); + static NAN_GETTER(GetHeight); + + inline int width() { return _width; } + inline int height() { return _height; } + inline uint8_t *data() { return _data; } + inline int stride() { return _width * 4; } + ImageData(uint8_t *data, int width, int height) : _width(width), _height(height), _data(data) {} + + private: + int _width; + int _height; + uint8_t *_data; + +}; + +#endif diff --git a/vendor/canvas/src/JPEGStream.h b/vendor/canvas/src/JPEGStream.h new file mode 100644 index 00000000..edc887e7 --- /dev/null +++ b/vendor/canvas/src/JPEGStream.h @@ -0,0 +1,146 @@ + +// +// JPEGStream.h +// + +#ifndef __NODE_JPEG_STREAM_H__ +#define __NODE_JPEG_STREAM_H__ + +#include "Canvas.h" +#include +#include + +/* + * Expanded data destination object for closure output, + * inspired by IJG's jdatadst.c + */ + +typedef struct { + struct jpeg_destination_mgr pub; + closure_t *closure; + JOCTET *buffer; + int bufsize; +} closure_destination_mgr; + +void +init_closure_destination(j_compress_ptr cinfo){ + // we really don't have to do anything here +} + +boolean +empty_closure_output_buffer(j_compress_ptr cinfo){ + Nan::HandleScope scope; + closure_destination_mgr *dest = (closure_destination_mgr *) cinfo->dest; + + Local buf = Nan::NewBuffer((char *)dest->buffer, dest->bufsize).ToLocalChecked(); + + // emit "data" + Local argv[2] = { + Nan::Null() + , buf + }; + Nan::MakeCallback(Nan::GetCurrentContext()->Global(), (v8::Local)dest->closure->fn, 2, argv); + + dest->buffer = (JOCTET *)malloc(dest->bufsize); + cinfo->dest->next_output_byte = dest->buffer; + cinfo->dest->free_in_buffer = dest->bufsize; + return true; +} + +void +term_closure_destination(j_compress_ptr cinfo){ + Nan::HandleScope scope; + closure_destination_mgr *dest = (closure_destination_mgr *) cinfo->dest; + + /* emit remaining data */ + Local buf = Nan::NewBuffer((char *)dest->buffer, dest->bufsize - dest->pub.free_in_buffer).ToLocalChecked(); + + Local data_argv[2] = { + Nan::Null() + , buf + }; + + Nan::MakeCallback(Nan::GetCurrentContext()->Global(), (v8::Local)dest->closure->fn, 2, data_argv); + + // emit "end" + Local end_argv[2] = { + Nan::Null() + , Nan::Null() + }; + + Nan::MakeCallback(Nan::GetCurrentContext()->Global(), (v8::Local)dest->closure->fn, 2, end_argv); +} + +void +jpeg_closure_dest(j_compress_ptr cinfo, closure_t * closure, int bufsize){ + closure_destination_mgr * dest; + + /* The destination object is made permanent so that multiple JPEG images + * can be written to the same buffer without re-executing jpeg_mem_dest. + */ + if (cinfo->dest == NULL) { /* first time for this JPEG object? */ + cinfo->dest = (struct jpeg_destination_mgr *) + (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, + sizeof(closure_destination_mgr)); + } + + dest = (closure_destination_mgr *) cinfo->dest; + + cinfo->dest->init_destination = &init_closure_destination; + cinfo->dest->empty_output_buffer = &empty_closure_output_buffer; + cinfo->dest->term_destination = &term_closure_destination; + + dest->closure = closure; + dest->bufsize = bufsize; + dest->buffer = (JOCTET *)malloc(bufsize); + + cinfo->dest->next_output_byte = dest->buffer; + cinfo->dest->free_in_buffer = dest->bufsize; +} + +void +write_to_jpeg_stream(cairo_surface_t *surface, int bufsize, int quality, bool progressive, closure_t *closure){ + int w = cairo_image_surface_get_width(surface); + int h = cairo_image_surface_get_height(surface); + struct jpeg_compress_struct cinfo; + struct jpeg_error_mgr jerr; + + JSAMPROW slr; + cinfo.err = jpeg_std_error(&jerr); + jpeg_create_compress(&cinfo); + cinfo.in_color_space = JCS_RGB; + cinfo.input_components = 3; + cinfo.image_width = w; + cinfo.image_height = h; + jpeg_set_defaults(&cinfo); + if (progressive) + jpeg_simple_progression(&cinfo); + jpeg_set_quality(&cinfo, quality, (quality<25)?0:1); + jpeg_closure_dest(&cinfo, closure, bufsize); + + jpeg_start_compress(&cinfo, TRUE); + unsigned char *dst; + unsigned int *src = (unsigned int *) cairo_image_surface_get_data(surface); + int sl = 0; + dst = (unsigned char *) malloc(w * 3); + while (sl < h) { + unsigned char *dp = dst; + int x = 0; + while (x < w) { + dp[0] = (*src >> 16) & 255; + dp[1] = (*src >> 8) & 255; + dp[2] = *src & 255; + src++; + dp += 3; + x++; + } + slr = dst; + jpeg_write_scanlines(&cinfo, &slr, 1); + sl++; + } + free(dst); + jpeg_finish_compress(&cinfo); + jpeg_destroy_compress(&cinfo); +} + +#endif diff --git a/vendor/canvas/src/PNG.h b/vendor/canvas/src/PNG.h new file mode 100644 index 00000000..4cdb7891 --- /dev/null +++ b/vendor/canvas/src/PNG.h @@ -0,0 +1,227 @@ +#ifndef _CANVAS_PNG_H +#define _CANVAS_PNG_H +#include +#include +#include +#include +#include +#include "closure.h" + +#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__) +#define likely(expr) (__builtin_expect (!!(expr), 1)) +#define unlikely(expr) (__builtin_expect (!!(expr), 0)) +#else +#define likely(expr) (expr) +#define unlikely(expr) (expr) +#endif + +#ifndef CAIRO_FORMAT_INVALID +#define CAIRO_FORMAT_INVALID -1 +#endif + +static void canvas_png_flush(png_structp png_ptr) { + /* Do nothing; fflush() is said to be just a waste of energy. */ + (void) png_ptr; /* Stifle compiler warning */ +} + +/* Converts native endian xRGB => RGBx bytes */ +static void canvas_convert_data_to_bytes(png_structp png, png_row_infop row_info, png_bytep data) { + unsigned int i; + + for (i = 0; i < row_info->rowbytes; i += 4) { + uint8_t *b = &data[i]; + uint32_t pixel; + + memcpy(&pixel, b, sizeof (uint32_t)); + + b[0] = (pixel & 0xff0000) >> 16; + b[1] = (pixel & 0x00ff00) >> 8; + b[2] = (pixel & 0x0000ff) >> 0; + b[3] = 0; + } +} + +/* Unpremultiplies data and converts native endian ARGB => RGBA bytes */ +static void canvas_unpremultiply_data(png_structp png, png_row_infop row_info, png_bytep data) { + unsigned int i; + + for (i = 0; i < row_info->rowbytes; i += 4) { + uint8_t *b = &data[i]; + uint32_t pixel; + uint8_t alpha; + + memcpy(&pixel, b, sizeof (uint32_t)); + alpha = (pixel & 0xff000000) >> 24; + if (alpha == 0) { + b[0] = b[1] = b[2] = b[3] = 0; + } else { + b[0] = (((pixel & 0xff0000) >> 16) * 255 + alpha / 2) / alpha; + b[1] = (((pixel & 0x00ff00) >> 8) * 255 + alpha / 2) / alpha; + b[2] = (((pixel & 0x0000ff) >> 0) * 255 + alpha / 2) / alpha; + b[3] = alpha; + } + } +} + +struct canvas_png_write_closure_t { + cairo_write_func_t write_func; + void *closure; +}; + +static cairo_status_t canvas_write_png(cairo_surface_t *surface, png_rw_ptr write_func, void *closure) { + unsigned int i; + cairo_status_t status = CAIRO_STATUS_SUCCESS; + uint8_t *data; + png_structp png; + png_infop info; + png_bytep *volatile rows = NULL; + png_color_16 white; + int png_color_type; + int bpc; + unsigned int width = cairo_image_surface_get_width(surface); + unsigned int height = cairo_image_surface_get_height(surface); + + data = cairo_image_surface_get_data(surface); + if (data == NULL) { + status = CAIRO_STATUS_SURFACE_TYPE_MISMATCH; + return status; + } + cairo_surface_flush(surface); + + if (width == 0 || height == 0) { + status = CAIRO_STATUS_WRITE_ERROR; + return status; + } + + rows = (png_bytep *) malloc(height * sizeof (png_byte*)); + if (unlikely(rows == NULL)) { + status = CAIRO_STATUS_NO_MEMORY; + return status; + } + + for (i = 0; i < height; i++) { + rows[i] = (png_byte *) data + i * cairo_image_surface_get_stride(surface); + } + +#ifdef PNG_USER_MEM_SUPPORTED + png = png_create_write_struct_2(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL, NULL, NULL, NULL); +#else + png = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); +#endif + + if (unlikely(png == NULL)) { + status = CAIRO_STATUS_NO_MEMORY; + free(rows); + return status; + } + + info = png_create_info_struct (png); + if (unlikely(info == NULL)) { + status = CAIRO_STATUS_NO_MEMORY; + png_destroy_write_struct(&png, &info); + free(rows); + return status; + + } + +#ifdef PNG_SETJMP_SUPPORTED + if (setjmp (png_jmpbuf (png))) { + png_destroy_write_struct(&png, &info); + free(rows); + return status; + } +#endif + + png_set_write_fn(png, closure, write_func, canvas_png_flush); + png_set_compression_level(png, ((closure_t *) ((canvas_png_write_closure_t *) closure)->closure)->compression_level); + png_set_filter(png, 0, ((closure_t *) ((canvas_png_write_closure_t *) closure)->closure)->filter); + + switch (cairo_image_surface_get_format(surface)) { + case CAIRO_FORMAT_ARGB32: + bpc = 8; + png_color_type = PNG_COLOR_TYPE_RGB_ALPHA; + break; +#ifdef CAIRO_FORMAT_RGB30 + case CAIRO_FORMAT_RGB30: + bpc = 10; + png_color_type = PNG_COLOR_TYPE_RGB; + break; +#endif + case CAIRO_FORMAT_RGB24: + bpc = 8; + png_color_type = PNG_COLOR_TYPE_RGB; + break; + case CAIRO_FORMAT_A8: + bpc = 8; + png_color_type = PNG_COLOR_TYPE_GRAY; + break; + case CAIRO_FORMAT_A1: + bpc = 1; + png_color_type = PNG_COLOR_TYPE_GRAY; +#ifndef WORDS_BIGENDIAN + png_set_packswap(png); +#endif + break; + case CAIRO_FORMAT_INVALID: + case CAIRO_FORMAT_RGB16_565: + default: + status = CAIRO_STATUS_INVALID_FORMAT; + png_destroy_write_struct(&png, &info); + free(rows); + return status; + } + + png_set_IHDR(png, info, width, height, bpc, png_color_type, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); + + white.gray = (1 << bpc) - 1; + white.red = white.blue = white.green = white.gray; + png_set_bKGD(png, info, &white); + + /* We have to call png_write_info() before setting up the write + * transformation, since it stores data internally in 'png' + * that is needed for the write transformation functions to work. + */ + png_write_info(png, info); + if (png_color_type == PNG_COLOR_TYPE_RGB_ALPHA) { + png_set_write_user_transform_fn(png, canvas_unpremultiply_data); + } else if (png_color_type == PNG_COLOR_TYPE_RGB) { + png_set_write_user_transform_fn(png, canvas_convert_data_to_bytes); + png_set_filler(png, 0, PNG_FILLER_AFTER); + } + + png_write_image(png, rows); + png_write_end(png, info); + + png_destroy_write_struct(&png, &info); + free(rows); + return status; +} + +static void canvas_stream_write_func(png_structp png, png_bytep data, png_size_t size) { + cairo_status_t status; + struct canvas_png_write_closure_t *png_closure; + + png_closure = (struct canvas_png_write_closure_t *) png_get_io_ptr(png); + status = png_closure->write_func(png_closure->closure, data, size); + if (unlikely(status)) { + cairo_status_t *error = (cairo_status_t *) png_get_error_ptr(png); + if (*error == CAIRO_STATUS_SUCCESS) { + *error = status; + } + png_error(png, NULL); + } +} + +static cairo_status_t canvas_write_to_png_stream(cairo_surface_t *surface, cairo_write_func_t write_func, void *closure) { + struct canvas_png_write_closure_t png_closure; + + if (cairo_surface_status(surface)) { + return cairo_surface_status(surface); + } + + png_closure.write_func = write_func; + png_closure.closure = closure; + + return canvas_write_png(surface, canvas_stream_write_func, &png_closure); +} +#endif diff --git a/vendor/canvas/src/Point.h b/vendor/canvas/src/Point.h new file mode 100644 index 00000000..5baef104 --- /dev/null +++ b/vendor/canvas/src/Point.h @@ -0,0 +1,19 @@ + + +// +// Point.h +// +// Copyright (c) 2010 LearnBoost +// + +#ifndef __NODE_POINT_H__ +#define __NODE_POINT_H__ + +template +class Point { + public: + T x, y; + Point(T x, T y): x(x), y(y) {} +}; + +#endif /* __NODE_POINT_H__ */ diff --git a/vendor/canvas/src/closure.h b/vendor/canvas/src/closure.h new file mode 100644 index 00000000..1fb6bced --- /dev/null +++ b/vendor/canvas/src/closure.h @@ -0,0 +1,65 @@ + +// +// closure.h +// +// Copyright (c) 2010 LearnBoost +// + +#ifndef __NODE_CLOSURE_H__ +#define __NODE_CLOSURE_H__ + +#ifdef __unix__ + #include +#endif + +#ifndef PAGE_SIZE + #define PAGE_SIZE 4096 +#endif + +#include + +/* + * PNG stream closure. + */ + +typedef struct { + Nan::Callback *pfn; + Local fn; + unsigned len; + unsigned max_len; + uint8_t *data; + Canvas *canvas; + cairo_status_t status; + uint32_t compression_level; + uint32_t filter; +} closure_t; + +/* + * Initialize the given closure. + */ + +cairo_status_t +closure_init(closure_t *closure, Canvas *canvas, unsigned int compression_level, unsigned int filter) { + closure->len = 0; + closure->canvas = canvas; + closure->data = (uint8_t *) malloc(closure->max_len = PAGE_SIZE); + if (!closure->data) return CAIRO_STATUS_NO_MEMORY; + closure->compression_level = compression_level; + closure->filter = filter; + return CAIRO_STATUS_SUCCESS; +} + +/* + * Free the given closure's data, + * and hint V8 at the memory dealloc. + */ + +void +closure_destroy(closure_t *closure) { + if (closure->len) { + free(closure->data); + Nan::AdjustExternalMemory(-((intptr_t) closure->max_len)); + } +} + +#endif /* __NODE_CLOSURE_H__ */ diff --git a/vendor/canvas/src/color.cc b/vendor/canvas/src/color.cc new file mode 100644 index 00000000..bede494e --- /dev/null +++ b/vendor/canvas/src/color.cc @@ -0,0 +1,744 @@ + +// +// color.cc +// +// Copyright (c) 2010 LearnBoost +// + +#include "color.h" +#include +#include +#include + +// Compatibility with Visual Studio versions prior to VS2015 +#if defined(_MSC_VER) && _MSC_VER < 1900 +#define snprintf _snprintf +#endif + +/* + * Parse integer value + */ + +template +static bool +parse_integer(const char** pStr, parsed_t *pParsed) { + parsed_t& c = *pParsed; + const char*& str = *pStr; + int8_t sign=1; + + c = 0; + if (*str == '-') { + sign=-1; + ++str; + } + else if (*str == '+') + ++str; + + if (*str >= '0' && *str <= '9') { + do { + c *= 10; + c += *str++ - '0'; + } while (*str >= '0' && *str <= '9'); + } else { + return false; + } + if (sign<0) + c=-c; + return true; +} + + +/* + * Parse CSS value + * Adapted from http://crackprogramming.blogspot.co.il/2012/10/implement-atof.html + */ + +template +static bool +parse_css_number(const char** pStr, parsed_t *pParsed) { + parsed_t &parsed = *pParsed; + const char*& str = *pStr; + const char* startStr = str; + if (!str || !*str) + return false; + parsed_t integerPart = 0; + parsed_t fractionPart = 0; + int divisorForFraction = 1; + int sign = 1; + int exponent = 0; + int digits = 0; + bool inFraction = false; + + if (*str == '-') { + ++str; + sign = -1; + } + else if (*str == '+') + ++str; + while (*str != '\0') { + if (*str >= '0' && *str <= '9') { + if (digits>=std::numeric_limits::digits10) { + if (!inFraction) + return false; + } + else { + ++digits; + + if (inFraction) { + fractionPart = fractionPart*10 + (*str - '0'); + divisorForFraction *= 10; + } + else { + integerPart = integerPart*10 + (*str - '0'); + } + } + } + else if (*str == '.') { + if (inFraction) + break; + else + inFraction = true; + } + else if (*str == 'e') { + ++str; + if (!parse_integer(&str, &exponent)) + return false; + break; + } + else + break; + ++str; + } + if (str != startStr) { + parsed = sign * (integerPart + fractionPart/divisorForFraction); + for (;exponent>0;--exponent) + parsed *= 10; + for (;exponent<0;++exponent) + parsed /= 10; + return true; + } + return false; +} + +/* + * Clip value to the range [minValue, maxValue] + */ + +template +static T +clip(T value, T minValue, T maxValue) { + if (value > maxValue) + value = maxValue; + if (value < minValue) + value = minValue; + return value; +} + +/* + * Wrap value to the range [0, limit] + */ + +template +static T +wrap_float(T value, T limit) { + return fmod(fmod(value, limit) + limit, limit); +} + +/* + * Wrap value to the range [0, limit] - currently-unused integer version of wrap_float + */ + +// template +// static T wrap_int(T value, T limit) { +// return (value % limit + limit) % limit; +// } + +/* + * Parse color channel value + */ + +static bool +parse_rgb_channel(const char** pStr, uint8_t *pChannel) { + int channel; + if (parse_integer(pStr, &channel)) { + *pChannel = clip(channel, 0, 255); + return true; + } + return false; +} + +/* + * Parse a value in degrees + */ + +static bool +parse_degrees(const char** pStr, float *pDegrees) { + float degrees; + if (parse_css_number(pStr, °rees)) { + *pDegrees = wrap_float(degrees, 360.0f); + return true; + } + return false; +} + +/* + * Parse and clip a percentage value. Returns a float in the range [0, 1]. + */ + +static bool +parse_clipped_percentage(const char** pStr, float *pFraction) { + float percentage; + bool result = parse_css_number(pStr,&percentage); + const char*& str = *pStr; + if (result) { + if (*str == '%') { + ++str; + *pFraction = clip(percentage, 0.0f, 100.0f) / 100.0f; + return result; + } + } + return false; +} + +/* + * Macros to help with parsing inside rgba_from_*_string + */ + +#define WHITESPACE \ + while (' ' == *str) ++str; + +#define WHITESPACE_OR_COMMA \ + while (' ' == *str || ',' == *str) ++str; + +#define CHANNEL(NAME) \ + if (!parse_rgb_channel(&str, &NAME)) \ + return 0; \ + +#define HUE(NAME) \ + if (!parse_degrees(&str, &NAME)) \ + return 0; + +#define SATURATION(NAME) \ + if (!parse_clipped_percentage(&str, &NAME)) \ + return 0; + +#define LIGHTNESS(NAME) SATURATION(NAME) + +#define ALPHA(NAME) \ + if (*str >= '1' && *str <= '9') { \ + NAME = 1; \ + } else { \ + if ('0' == *str) ++str; \ + if ('.' == *str) { \ + ++str; \ + float n = .1f; \ + while (*str >= '0' && *str <= '9') { \ + NAME += (*str++ - '0') * n; \ + n *= .1f; \ + } \ + } \ + } \ + do {} while (0) // require trailing semicolon + +/* + * Named colors. + */ + +static struct named_color { + const char *name; + uint32_t val; +} named_colors[] = { + { "transparent", 0xFFFFFF00} + , { "aliceblue", 0xF0F8FFFF } + , { "antiquewhite", 0xFAEBD7FF } + , { "aqua", 0x00FFFFFF } + , { "aquamarine", 0x7FFFD4FF } + , { "azure", 0xF0FFFFFF } + , { "beige", 0xF5F5DCFF } + , { "bisque", 0xFFE4C4FF } + , { "black", 0x000000FF } + , { "blanchedalmond", 0xFFEBCDFF } + , { "blue", 0x0000FFFF } + , { "blueviolet", 0x8A2BE2FF } + , { "brown", 0xA52A2AFF } + , { "burlywood", 0xDEB887FF } + , { "cadetblue", 0x5F9EA0FF } + , { "chartreuse", 0x7FFF00FF } + , { "chocolate", 0xD2691EFF } + , { "coral", 0xFF7F50FF } + , { "cornflowerblue", 0x6495EDFF } + , { "cornsilk", 0xFFF8DCFF } + , { "crimson", 0xDC143CFF } + , { "cyan", 0x00FFFFFF } + , { "darkblue", 0x00008BFF } + , { "darkcyan", 0x008B8BFF } + , { "darkgoldenrod", 0xB8860BFF } + , { "darkgray", 0xA9A9A9FF } + , { "darkgreen", 0x006400FF } + , { "darkgrey", 0xA9A9A9FF } + , { "darkkhaki", 0xBDB76BFF } + , { "darkmagenta", 0x8B008BFF } + , { "darkolivegreen", 0x556B2FFF } + , { "darkorange", 0xFF8C00FF } + , { "darkorchid", 0x9932CCFF } + , { "darkred", 0x8B0000FF } + , { "darksalmon", 0xE9967AFF } + , { "darkseagreen", 0x8FBC8FFF } + , { "darkslateblue", 0x483D8BFF } + , { "darkslategray", 0x2F4F4FFF } + , { "darkslategrey", 0x2F4F4FFF } + , { "darkturquoise", 0x00CED1FF } + , { "darkviolet", 0x9400D3FF } + , { "deeppink", 0xFF1493FF } + , { "deepskyblue", 0x00BFFFFF } + , { "dimgray", 0x696969FF } + , { "dimgrey", 0x696969FF } + , { "dodgerblue", 0x1E90FFFF } + , { "firebrick", 0xB22222FF } + , { "floralwhite", 0xFFFAF0FF } + , { "forestgreen", 0x228B22FF } + , { "fuchsia", 0xFF00FFFF } + , { "gainsboro", 0xDCDCDCFF } + , { "ghostwhite", 0xF8F8FFFF } + , { "gold", 0xFFD700FF } + , { "goldenrod", 0xDAA520FF } + , { "gray", 0x808080FF } + , { "green", 0x008000FF } + , { "greenyellow", 0xADFF2FFF } + , { "grey", 0x808080FF } + , { "honeydew", 0xF0FFF0FF } + , { "hotpink", 0xFF69B4FF } + , { "indianred", 0xCD5C5CFF } + , { "indigo", 0x4B0082FF } + , { "ivory", 0xFFFFF0FF } + , { "khaki", 0xF0E68CFF } + , { "lavender", 0xE6E6FAFF } + , { "lavenderblush", 0xFFF0F5FF } + , { "lawngreen", 0x7CFC00FF } + , { "lemonchiffon", 0xFFFACDFF } + , { "lightblue", 0xADD8E6FF } + , { "lightcoral", 0xF08080FF } + , { "lightcyan", 0xE0FFFFFF } + , { "lightgoldenrodyellow", 0xFAFAD2FF } + , { "lightgray", 0xD3D3D3FF } + , { "lightgreen", 0x90EE90FF } + , { "lightgrey", 0xD3D3D3FF } + , { "lightpink", 0xFFB6C1FF } + , { "lightsalmon", 0xFFA07AFF } + , { "lightseagreen", 0x20B2AAFF } + , { "lightskyblue", 0x87CEFAFF } + , { "lightslategray", 0x778899FF } + , { "lightslategrey", 0x778899FF } + , { "lightsteelblue", 0xB0C4DEFF } + , { "lightyellow", 0xFFFFE0FF } + , { "lime", 0x00FF00FF } + , { "limegreen", 0x32CD32FF } + , { "linen", 0xFAF0E6FF } + , { "magenta", 0xFF00FFFF } + , { "maroon", 0x800000FF } + , { "mediumaquamarine", 0x66CDAAFF } + , { "mediumblue", 0x0000CDFF } + , { "mediumorchid", 0xBA55D3FF } + , { "mediumpurple", 0x9370DBFF } + , { "mediumseagreen", 0x3CB371FF } + , { "mediumslateblue", 0x7B68EEFF } + , { "mediumspringgreen", 0x00FA9AFF } + , { "mediumturquoise", 0x48D1CCFF } + , { "mediumvioletred", 0xC71585FF } + , { "midnightblue", 0x191970FF } + , { "mintcream", 0xF5FFFAFF } + , { "mistyrose", 0xFFE4E1FF } + , { "moccasin", 0xFFE4B5FF } + , { "navajowhite", 0xFFDEADFF } + , { "navy", 0x000080FF } + , { "oldlace", 0xFDF5E6FF } + , { "olive", 0x808000FF } + , { "olivedrab", 0x6B8E23FF } + , { "orange", 0xFFA500FF } + , { "orangered", 0xFF4500FF } + , { "orchid", 0xDA70D6FF } + , { "palegoldenrod", 0xEEE8AAFF } + , { "palegreen", 0x98FB98FF } + , { "paleturquoise", 0xAFEEEEFF } + , { "palevioletred", 0xDB7093FF } + , { "papayawhip", 0xFFEFD5FF } + , { "peachpuff", 0xFFDAB9FF } + , { "peru", 0xCD853FFF } + , { "pink", 0xFFC0CBFF } + , { "plum", 0xDDA0DDFF } + , { "powderblue", 0xB0E0E6FF } + , { "purple", 0x800080FF } + , { "rebeccapurple", 0x663399FF } // Source: CSS Color Level 4 draft + , { "red", 0xFF0000FF } + , { "rosybrown", 0xBC8F8FFF } + , { "royalblue", 0x4169E1FF } + , { "saddlebrown", 0x8B4513FF } + , { "salmon", 0xFA8072FF } + , { "sandybrown", 0xF4A460FF } + , { "seagreen", 0x2E8B57FF } + , { "seashell", 0xFFF5EEFF } + , { "sienna", 0xA0522DFF } + , { "silver", 0xC0C0C0FF } + , { "skyblue", 0x87CEEBFF } + , { "slateblue", 0x6A5ACDFF } + , { "slategray", 0x708090FF } + , { "slategrey", 0x708090FF } + , { "snow", 0xFFFAFAFF } + , { "springgreen", 0x00FF7FFF } + , { "steelblue", 0x4682B4FF } + , { "tan", 0xD2B48CFF } + , { "teal", 0x008080FF } + , { "thistle", 0xD8BFD8FF } + , { "tomato", 0xFF6347FF } + , { "turquoise", 0x40E0D0FF } + , { "violet", 0xEE82EEFF } + , { "wheat", 0xF5DEB3FF } + , { "white", 0xFFFFFFFF } + , { "whitesmoke", 0xF5F5F5FF } + , { "yellow", 0xFFFF00FF } + , { "yellowgreen", 0x9ACD32FF } + , { NULL, 0 } +}; + +/* + * Hex digit int val. + */ + +static int +h(char c) { + switch (c) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return c - '0'; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + return (c - 'a') + 10; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + return (c - 'A') + 10; + } + return 0; +} + +/* + * Return rgba_t from rgba. + */ + +rgba_t +rgba_create(uint32_t rgba) { + rgba_t color; + color.r = (double) (rgba >> 24) / 255; + color.g = (double) (rgba >> 16 & 0xff) / 255; + color.b = (double) (rgba >> 8 & 0xff) / 255; + color.a = (double) (rgba & 0xff) / 255; + return color; +} + +/* + * Return a string representation of the color. + */ + +void +rgba_to_string(rgba_t rgba, char *buf, size_t len) { + if (1 == rgba.a) { + snprintf(buf, len, "#%.2x%.2x%.2x" + , (int) (rgba.r * 255) + , (int) (rgba.g * 255) + , (int) (rgba.b * 255)); + } else { + snprintf(buf, len, "rgba(%d, %d, %d, %.2f)" + , (int) (rgba.r * 255) + , (int) (rgba.g * 255) + , (int) (rgba.b * 255) + , rgba.a); + } +} + +/* + * Return rgba from (r,g,b,a). + */ + +static inline int32_t +rgba_from_rgba(uint8_t r, uint8_t g, uint8_t b, uint8_t a) { + return + r << 24 + | g << 16 + | b << 8 + | a; +} + +/* + * Helper function used in rgba_from_hsla(). + * Based on http://dev.w3.org/csswg/css-color-4/#hsl-to-rgb + */ + +static float +hue_to_rgb(float t1, float t2, float hue) { + if (hue < 0) + hue += 6; + if (hue >= 6) + hue -= 6; + + if (hue < 1) + return (t2 - t1) * hue + t1; + else if (hue < 3) + return t2; + else if (hue < 4) + return (t2 - t1) * (4 - hue) + t1; + else + return t1; +} + +/* + * Return rgba from (h,s,l,a). + * Expects h values in the range [0, 360), and s, l, a in the range [0, 1]. + * Adapted from http://dev.w3.org/csswg/css-color-4/#hsl-to-rgb + */ + +static inline int32_t +rgba_from_hsla(float h_deg, float s, float l, float a) { + uint8_t r, g, b; + float h = (6 * h_deg) / 360.0f, m1, m2; + + if (l<=0.5) + m2=l*(s+1); + else + m2=l+s-l*s; + m1 = l*2 - m2; + + // Scale and round the RGB components + r = (uint8_t)floor(hue_to_rgb(m1, m2, h + 2) * 255 + 0.5); + g = (uint8_t)floor(hue_to_rgb(m1, m2, h ) * 255 + 0.5); + b = (uint8_t)floor(hue_to_rgb(m1, m2, h - 2) * 255 + 0.5); + + return rgba_from_rgba(r, g, b, (uint8_t) (a * 255)); +} + +/* + * Return rgba from (h,s,l). + * Expects h values in the range [0, 360), and s, l in the range [0, 1]. + */ + +static inline int32_t +rgba_from_hsl(float h_deg, float s, float l) { + return rgba_from_hsla(h_deg, s, l, 1.0); +} + + +/* + * Return rgba from (r,g,b). + */ + +static int32_t +rgba_from_rgb(uint8_t r, uint8_t g, uint8_t b) { + return rgba_from_rgba(r, g, b, 255); +} + +/* + * Return rgb from "#RRGGBB". + */ + +static int32_t +rgba_from_hex6_string(const char *str) { + return rgba_from_rgb( + (h(str[0]) << 4) + h(str[1]) + , (h(str[2]) << 4) + h(str[3]) + , (h(str[4]) << 4) + h(str[5]) + ); +} + +/* + * Return rgb from "#RGB" + */ + +static int32_t +rgba_from_hex3_string(const char *str) { + return rgba_from_rgb( + (h(str[0]) << 4) + h(str[0]) + , (h(str[1]) << 4) + h(str[1]) + , (h(str[2]) << 4) + h(str[2]) + ); +} + +/* + * Return rgb from "rgb()" + */ + +static int32_t +rgba_from_rgb_string(const char *str, short *ok) { + if (str == strstr(str, "rgb(")) { + str += 4; + WHITESPACE; + uint8_t r = 0, g = 0, b = 0; + CHANNEL(r); + WHITESPACE_OR_COMMA; + CHANNEL(g); + WHITESPACE_OR_COMMA; + CHANNEL(b); + WHITESPACE; + return *ok = 1, rgba_from_rgb(r, g, b); + } + return *ok = 0; +} + +/* + * Return rgb from "rgba()" + */ + +static int32_t +rgba_from_rgba_string(const char *str, short *ok) { + if (str == strstr(str, "rgba(")) { + str += 5; + WHITESPACE; + uint8_t r = 0, g = 0, b = 0; + float a = 0; + CHANNEL(r); + WHITESPACE_OR_COMMA; + CHANNEL(g); + WHITESPACE_OR_COMMA; + CHANNEL(b); + WHITESPACE_OR_COMMA; + ALPHA(a); + WHITESPACE; + return *ok = 1, rgba_from_rgba(r, g, b, (int) (a * 255)); + } + return *ok = 0; +} + +/* + * Return rgb from "hsla()" + */ + +static int32_t +rgba_from_hsla_string(const char *str, short *ok) { + if (str == strstr(str, "hsla(")) { + str += 5; + WHITESPACE; + float h_deg = 0; + float s = 0, l = 0; + float a = 0; + HUE(h_deg); + WHITESPACE_OR_COMMA; + SATURATION(s); + WHITESPACE_OR_COMMA; + LIGHTNESS(l); + WHITESPACE_OR_COMMA; + ALPHA(a); + WHITESPACE; + return *ok = 1, rgba_from_hsla(h_deg, s, l, a); + } + return *ok = 0; +} + +/* + * Return rgb from "hsl()" + */ + +static int32_t +rgba_from_hsl_string(const char *str, short *ok) { + if (str == strstr(str, "hsl(")) { + str += 4; + WHITESPACE; + float h_deg = 0; + float s = 0, l = 0; + HUE(h_deg); + WHITESPACE_OR_COMMA; + SATURATION(s); + WHITESPACE_OR_COMMA; + LIGHTNESS(l); + WHITESPACE; + return *ok = 1, rgba_from_hsl(h_deg, s, l); + } + return *ok = 0; +} + + +/* + * Return rgb from: + * + * - "#RGB" + * - "#RRGGBB" + * + */ + +static int32_t +rgba_from_hex_string(const char *str, short *ok) { + size_t len = strlen(str); + *ok = 1; + if (6 == len) return rgba_from_hex6_string(str); + if (3 == len) return rgba_from_hex3_string(str); + return *ok = 0; +} + +/* + * Return named color value. + */ + +static int32_t +rgba_from_name_string(const char *str, short *ok) { + int i = 0; + struct named_color color; + while ((color = named_colors[i++]).name) { + if (*str == *color.name && 0 == strcmp(str, color.name)) + return *ok = 1, color.val; + } + return *ok = 0; +} + +/* + * Return rgb from: + * + * - #RGB + * - #RRGGBB + * - rgb(r,g,b) + * - rgba(r,g,b,a) + * - hsl(h,s,l) + * - hsla(h,s,l,a) + * - name + * + */ + +int32_t +rgba_from_string(const char *str, short *ok) { + if ('#' == str[0]) + return rgba_from_hex_string(++str, ok); + if (str == strstr(str, "rgba")) + return rgba_from_rgba_string(str, ok); + if (str == strstr(str, "rgb")) + return rgba_from_rgb_string(str, ok); + if (str == strstr(str, "hsla")) + return rgba_from_hsla_string(str, ok); + if (str == strstr(str, "hsl")) + return rgba_from_hsl_string(str, ok); + return rgba_from_name_string(str, ok); +} + +/* + * Inspect the given rgba color. + */ + +void +rgba_inspect(int32_t rgba) { + printf("rgba(%d,%d,%d,%d)\n" + , rgba >> 24 & 0xff + , rgba >> 16 & 0xff + , rgba >> 8 & 0xff + , rgba & 0xff + ); +} diff --git a/vendor/canvas/src/color.h b/vendor/canvas/src/color.h new file mode 100644 index 00000000..c570c4a4 --- /dev/null +++ b/vendor/canvas/src/color.h @@ -0,0 +1,40 @@ + +// +// color.h +// +// Copyright (c) 2010 LearnBoost +// + +#ifndef __COLOR_PARSER_H__ +#define __COLOR_PARSER_H__ + +#include +#include +#include +#include + +/* + * RGBA struct. + */ + +typedef struct { + double r, g, b, a; +} rgba_t; + +/* + * Prototypes. + */ + +rgba_t +rgba_create(uint32_t rgba); + +int32_t +rgba_from_string(const char *str, short *ok); + +void +rgba_to_string(rgba_t rgba, char *buf, size_t len); + +void +rgba_inspect(int32_t rgba); + +#endif /* __COLOR_PARSER_H__ */ diff --git a/vendor/canvas/src/init.cc b/vendor/canvas/src/init.cc new file mode 100755 index 00000000..dc2fa596 --- /dev/null +++ b/vendor/canvas/src/init.cc @@ -0,0 +1,76 @@ + +// +// init.cc +// +// Copyright (c) 2010 LearnBoost +// + +#include +#include +#include +#include "Canvas.h" +#include "Image.h" +#include "ImageData.h" +#include "CanvasGradient.h" +#include "CanvasPattern.h" +#include "CanvasRenderingContext2d.h" +#include +#include FT_FREETYPE_H + +// Compatibility with Visual Studio versions prior to VS2015 +#if defined(_MSC_VER) && _MSC_VER < 1900 +#define snprintf _snprintf +#endif + +NAN_MODULE_INIT(init) { + Canvas::Initialize(target); + Image::Initialize(target); + ImageData::Initialize(target); + Context2d::Initialize(target); + Gradient::Initialize(target); + Pattern::Initialize(target); + + target->Set(Nan::New("cairoVersion").ToLocalChecked(), Nan::New(cairo_version_string()).ToLocalChecked()); +#ifdef HAVE_JPEG + +#ifndef JPEG_LIB_VERSION_MAJOR +#ifdef JPEG_LIB_VERSION +#define JPEG_LIB_VERSION_MAJOR (JPEG_LIB_VERSION / 10) +#else +#define JPEG_LIB_VERSION_MAJOR 0 +#endif +#endif + +#ifndef JPEG_LIB_VERSION_MINOR +#ifdef JPEG_LIB_VERSION +#define JPEG_LIB_VERSION_MINOR (JPEG_LIB_VERSION % 10) +#else +#define JPEG_LIB_VERSION_MINOR 0 +#endif +#endif + + char jpeg_version[10]; + if (JPEG_LIB_VERSION_MINOR > 0) { + snprintf(jpeg_version, 10, "%d%c", JPEG_LIB_VERSION_MAJOR, JPEG_LIB_VERSION_MINOR + 'a' - 1); + } else { + snprintf(jpeg_version, 10, "%d", JPEG_LIB_VERSION_MAJOR); + } + target->Set(Nan::New("jpegVersion").ToLocalChecked(), Nan::New(jpeg_version).ToLocalChecked()); +#endif + +#ifdef HAVE_GIF +#ifndef GIF_LIB_VERSION + char gif_version[10]; + snprintf(gif_version, 10, "%d.%d.%d", GIFLIB_MAJOR, GIFLIB_MINOR, GIFLIB_RELEASE); + target->Set(Nan::New("gifVersion").ToLocalChecked(), Nan::New(gif_version).ToLocalChecked()); +#else + target->Set(Nan::New("gifVersion").ToLocalChecked(), Nan::New(GIF_LIB_VERSION).ToLocalChecked()); +#endif +#endif + + char freetype_version[10]; + snprintf(freetype_version, 10, "%d.%d.%d", FREETYPE_MAJOR, FREETYPE_MINOR, FREETYPE_PATCH); + target->Set(Nan::New("freetypeVersion").ToLocalChecked(), Nan::New(freetype_version).ToLocalChecked()); +} + +NODE_MODULE(canvas,init); diff --git a/vendor/canvas/src/register_font.cc b/vendor/canvas/src/register_font.cc new file mode 100644 index 00000000..f98a66fc --- /dev/null +++ b/vendor/canvas/src/register_font.cc @@ -0,0 +1,247 @@ +#include +#include +#include + +#ifdef __APPLE__ +#include +#elif defined(_WIN32) +#include +#else +#include +#endif + +#include +#include FT_FREETYPE_H +#include FT_TRUETYPE_TABLES_H +#include FT_SFNT_NAMES_H +#include FT_TRUETYPE_IDS_H +#ifndef FT_SFNT_OS2 +#define FT_SFNT_OS2 ft_sfnt_os2 +#endif + +// OSX seems to read the strings in MacRoman encoding and ignore Unicode entries. +// You can verify this by opening a TTF with both Unicode and Macroman on OSX. +// It uses the MacRoman name, while Fontconfig and Windows use Unicode +#ifdef __APPLE__ +#define PREFERRED_PLATFORM_ID TT_PLATFORM_MACINTOSH +#define PREFERRED_ENCODING_ID TT_MAC_ID_ROMAN +#else +#define PREFERRED_PLATFORM_ID TT_PLATFORM_MICROSOFT +#define PREFERRED_ENCODING_ID TT_MS_ID_UNICODE_CS +#endif + +#define IS_PREFERRED_ENC(X) \ + X.platform_id == PREFERRED_PLATFORM_ID && X.encoding_id == PREFERRED_ENCODING_ID + +#define GET_NAME_RANK(X) \ + (IS_PREFERRED_ENC(X) ? 1 : 0) + (X.name_id == TT_NAME_ID_PREFERRED_FAMILY ? 1 : 0) + +/* + * Return a UTF-8 encoded string given a TrueType name buf+len + * and its platform and encoding + */ + +char * +to_utf8(FT_Byte* buf, FT_UInt len, FT_UShort pid, FT_UShort eid) { + size_t ret_len = len * 4; // max chars in a utf8 string + char *ret = (char*)malloc(ret_len + 1); // utf8 string + null + + if (!ret) return NULL; + + // In my testing of hundreds of fonts from the Google Font repo, the two types + // of fonts are TT_PLATFORM_MICROSOFT with TT_MS_ID_UNICODE_CS encoding, or + // TT_PLATFORM_MACINTOSH with TT_MAC_ID_ROMAN encoding. Usually both, never neither + + char const *fromcode; + + if (pid == TT_PLATFORM_MACINTOSH && eid == TT_MAC_ID_ROMAN) { + fromcode = "MAC"; + } else if (pid == TT_PLATFORM_MICROSOFT && eid == TT_MS_ID_UNICODE_CS) { + fromcode = "UTF-16BE"; + } else { + free(ret); + return NULL; + } + + GIConv cd = g_iconv_open("UTF-8", fromcode); + + if (cd == (GIConv)-1) { + free(ret); + return NULL; + } + + size_t inbytesleft = len; + size_t outbytesleft = ret_len; + + size_t n_converted = g_iconv(cd, (char**)&buf, &inbytesleft, &ret, &outbytesleft); + + ret -= ret_len - outbytesleft; // rewind the pointers to their + buf -= len - inbytesleft; // original starting positions + + if (n_converted == (size_t)-1) { + free(ret); + return NULL; + } else { + ret[ret_len - outbytesleft] = '\0'; + return ret; + } +} + +/* + * Find a family name in the face's name table, preferring the one the + * system, fall back to the other + */ + +typedef struct _NameDef { + const char *buf; + int rank; // the higher the more desirable +} NameDef; + +gint +_name_def_compare(gconstpointer a, gconstpointer b) { + return ((NameDef*)a)->rank > ((NameDef*)b)->rank ? -1 : 1; +} + +// Some versions of GTK+ do not have this, particualrly the one we +// currently link to in node-canvas's wiki +void +_free_g_list_item(gpointer data, gpointer user_data) { + NameDef *d = (NameDef *)data; + free((void *)(d->buf)); +} + +void +_g_list_free_full(GList *list) { + g_list_foreach(list, _free_g_list_item, NULL); + g_list_free(list); +} + +char * +get_family_name(FT_Face face) { + FT_SfntName name; + GList *list = NULL; + char *utf8name = NULL; + + for (unsigned i = 0; i < FT_Get_Sfnt_Name_Count(face); ++i) { + FT_Get_Sfnt_Name(face, i, &name); + + if (name.name_id == TT_NAME_ID_FONT_FAMILY || name.name_id == TT_NAME_ID_PREFERRED_FAMILY) { + char *buf = to_utf8(name.string, name.string_len, name.platform_id, name.encoding_id); + + if (buf) { + NameDef *d = (NameDef*)malloc(sizeof(NameDef)); + d->buf = (const char*)buf; + d->rank = GET_NAME_RANK(name); + + list = g_list_insert_sorted(list, (gpointer)d, _name_def_compare); + } + } + } + + GList *best_def = g_list_first(list); + if (best_def) utf8name = (char*) strdup(((NameDef*)best_def->data)->buf); + if (list) _g_list_free_full(list); + + return utf8name; +} + +PangoWeight +get_pango_weight(FT_UShort weight) { + switch (weight) { + case 100: return PANGO_WEIGHT_THIN; + case 200: return PANGO_WEIGHT_ULTRALIGHT; + case 300: return PANGO_WEIGHT_LIGHT; + #if PANGO_VERSION >= PANGO_VERSION_ENCODE(1, 36, 7) + case 350: return PANGO_WEIGHT_SEMILIGHT; + #endif + case 380: return PANGO_WEIGHT_BOOK; + case 400: return PANGO_WEIGHT_NORMAL; + case 500: return PANGO_WEIGHT_MEDIUM; + case 600: return PANGO_WEIGHT_SEMIBOLD; + case 700: return PANGO_WEIGHT_BOLD; + case 800: return PANGO_WEIGHT_ULTRABOLD; + case 900: return PANGO_WEIGHT_HEAVY; + case 1000: return PANGO_WEIGHT_ULTRAHEAVY; + default: return PANGO_WEIGHT_NORMAL; + } +} + +PangoStretch +get_pango_stretch(FT_UShort width) { + switch (width) { + case 1: return PANGO_STRETCH_ULTRA_CONDENSED; + case 2: return PANGO_STRETCH_EXTRA_CONDENSED; + case 3: return PANGO_STRETCH_CONDENSED; + case 4: return PANGO_STRETCH_SEMI_CONDENSED; + case 5: return PANGO_STRETCH_NORMAL; + case 6: return PANGO_STRETCH_SEMI_EXPANDED; + case 7: return PANGO_STRETCH_EXPANDED; + case 8: return PANGO_STRETCH_EXTRA_EXPANDED; + case 9: return PANGO_STRETCH_ULTRA_EXPANDED; + default: return PANGO_STRETCH_NORMAL; + } +} + +PangoStyle +get_pango_style(FT_Long flags) { + if (flags & FT_STYLE_FLAG_ITALIC) { + return PANGO_STYLE_ITALIC; + } else { + return PANGO_STYLE_NORMAL; + } +} + +PangoFontDescription * +get_pango_font_description(unsigned char* filepath) { + FT_Library library; + FT_Face face; + PangoFontDescription *desc = pango_font_description_new(); + + if (!FT_Init_FreeType(&library) && !FT_New_Face(library, (const char*)filepath, 0, &face)) { + TT_OS2 *table = (TT_OS2*)FT_Get_Sfnt_Table(face, FT_SFNT_OS2); + char *family = get_family_name(face); + + if (family) pango_font_description_set_family_static(desc, family); + pango_font_description_set_weight(desc, get_pango_weight(table->usWeightClass)); + pango_font_description_set_stretch(desc, get_pango_stretch(table->usWidthClass)); + pango_font_description_set_style(desc, get_pango_style(face->style_flags)); + + FT_Done_Face(face); + + return desc; + } + + pango_font_description_free(desc); + + return NULL; +} + +/* + * Register font with the OS + */ + +bool +register_font(unsigned char *filepath, PangoFontDescription **desc) { + bool success; + + #ifdef __APPLE__ + CFURLRef filepathUrl = CFURLCreateFromFileSystemRepresentation(NULL, filepath, strlen((char*)filepath), false); + success = CTFontManagerRegisterFontsForURL(filepathUrl, kCTFontManagerScopeProcess, NULL); + #elif defined(_WIN32) + success = AddFontResourceEx((LPCSTR)filepath, FR_PRIVATE, 0) != 0; + #else + success = FcConfigAppFontAddFile(FcConfigGetCurrent(), (FcChar8 *)(filepath)); + #endif + + if (!success) return false; + + *desc = get_pango_font_description(filepath); + + // Tell Pango to throw away the current FontMap and create a new one. This + // has the effect of registering the new font in Pango by re-looking up all + // font families. + pango_cairo_font_map_set_default(NULL); + + return true; +} + diff --git a/vendor/canvas/src/register_font.h b/vendor/canvas/src/register_font.h new file mode 100644 index 00000000..60ace17d --- /dev/null +++ b/vendor/canvas/src/register_font.h @@ -0,0 +1,4 @@ +#include + +bool register_font(unsigned char *filepath, PangoFontDescription** desc); + diff --git a/vendor/canvas/util/has_lib.sh b/vendor/canvas/util/has_lib.sh new file mode 100755 index 00000000..31ef1298 --- /dev/null +++ b/vendor/canvas/util/has_lib.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +has_ldconfig() { + hash ldconfig 2>/dev/null +} + +has_system_lib() { + local regex="lib$1.+(so|dylib)" + + # Add /sbin to path as ldconfig is located there on some systems - e.g. Debian + # (and it still can be used by unprivileged users): + PATH="$PATH:/sbin" + export PATH + # Try using ldconfig on linux systems + if $(has_ldconfig); then + for _ in $(ldconfig -p 2>/dev/null | grep -E "$regex"); do + return 0 + done + fi + + # Try just checking common library locations + for dir in /lib /usr/lib /usr/local/lib /opt/local/lib /usr/lib/x86_64-linux-gnu /usr/lib/i386-linux-gnu; do + test -d $dir && ls $dir | grep -E "$regex" && return 0 + done + + return 1 +} + +has_freetype() { + pkg-config cairo --cflags-only-I | grep freetype2 +} + +has_pkgconfig_lib() { + pkg-config --exists "$1" +} + +case "$1" in + gif) + has_system_lib "gif" > /dev/null + result=$? + ;; + jpeg) + has_system_lib "jpeg" > /dev/null + result=$? + ;; + pango) + has_pkgconfig_lib "pango" > /dev/null + result=$? + ;; + freetype) + has_freetype > /dev/null + result=$? + ;; + *) + >&2 echo "Unknown library: $1" + exit 1 +esac + +if test $result -eq 0; then + echo "true" +else + echo "false" +fi