Skip to content

Commit 75de59f

Browse files
committed
First stab at rasterizeHTML.renderHtmlFragment(). See cburgmer#78
1 parent 6bf067d commit 75de59f

File tree

4 files changed

+32
-3
lines changed

4 files changed

+32
-3
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"css-mediaquery": "~0.1.2",
2929
"inlineresources": "~0.3.0",
3030
"url": "~0.10.1",
31-
"xmlserializer": "~0.3.1",
31+
"xmlserializer": "~0.4.0",
3232
"sane-domparser-error": "~0.2.0"
3333
},
3434
"devDependencies": {

src/browser.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,15 @@ var browser = (function (util, proxies, ayepromise, sanedomparsererror, theWindo
185185
return defer.promise;
186186
};
187187

188+
module.parseHtmlFragment = function (htmlFragment) {
189+
var doc = theWindow.document.implementation.createHTMLDocument(''),
190+
fragmentContainer = doc.createElement('div');
191+
fragmentContainer.innerHTML = htmlFragment;
192+
doc.documentElement.appendChild(fragmentContainer);
193+
194+
return fragmentContainer.firstChild;
195+
};
196+
188197
var addHTMLTagAttributes = function (doc, html) {
189198
var attributeMatch = /<html((?:\s+[^>]*)?)>/im.exec(html),
190199
helperDoc = theWindow.document.implementation.createHTMLDocument(''),

src/index.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,27 @@ var rasterizeHTML = (function (util, browser, rasterize) {
3737
optionalArguments = Array.prototype.slice.call(arguments, 1),
3838
params = util.parseOptionalParameters(optionalArguments);
3939

40-
return rasterize.rasterize(doc.documentElement, params.canvas, constructOptions(params));
40+
var element = doc.documentElement ? doc.documentElement : doc;
41+
42+
return rasterize.rasterize(element, params.canvas, constructOptions(params));
43+
};
44+
45+
var drawHtmlFragment = function (htmlFragment, canvas, options) {
46+
var doc = browser.parseHtmlFragment(htmlFragment);
47+
48+
return module.drawDocument(doc, canvas, options);
49+
};
50+
51+
/**
52+
* Draws a HTML fragment string to the canvas.
53+
* rasterizeHTML.drawHtmlFragment( htmlFragment [, canvas] [, options] ).then(function (result) { ... });
54+
*/
55+
module.drawHtmlFragment = function () {
56+
var htmlFragment = arguments[0],
57+
optionalArguments = Array.prototype.slice.call(arguments, 1),
58+
params = util.parseOptionalParameters(optionalArguments);
59+
60+
return drawHtmlFragment(htmlFragment, params.canvas, params.options);
4161
};
4262

4363
var drawHTML = function (html, canvas, options) {

test/manualIntegrationTestForWebkit.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ <h3>Test cases</h3>
130130
<canvas id="htmlFragmentTest" width="200" height="100"></canvas>
131131
<script type="text/javascript">
132132
testHelper.readHTMLFixture("testFragment.html").then(function (htmlFragment) {
133-
rasterizeHTML.drawHTML(htmlFragment, htmlFragmentTest, {
133+
rasterizeHTML.drawHtmlFragment(htmlFragment, htmlFragmentTest, {
134134
baseUrl: "fixtures/",
135135
cache: false,
136136
active: '.bgimage',

0 commit comments

Comments
 (0)