Commit Graph

359 Commits

Author SHA1 Message Date
Niklas von Hertzen
7cc7f80ee2 Add dom depth information to render queue 2013-10-27 22:08:12 +02:00
ssafejava
8bea01b81d Speed & accuracy improvements to pseudo element rendering.
Previously, pseudo elements would be processed as they were found in the DOM tree, which was
an expensive operation as each element's computed :before and :after style was checked for
'content' styles.

This commit traverses the user's stylesheets for :before and :after selectors, gathers the classes
affected, selects all elements that likely have a pseudo element present, then checks computed style.
If there is actually an element present, it is created but *not* appended to the DOM until after
all elements have been processed.

After all elements have been found and created, they are added to the DOM in a single batch, and the original
pseudo elements are hidden in a single batch. This prevents the layout invalidation / relayout loop that was
occuring previously, and in my tests speeds parsing by as much as 50% or more, depending on how many
pseudo elements your page uses.

Additionally, this commit contains a bugfix to the handling of ":before" pseudo elements; the browser effectively
inserts them as the first child of the element, not before the element. This fixes a few rendering inconsistencies
and complicated pages look almost perfect in my tests.
2013-09-18 13:38:21 +08:00
ssafejava
e115180731 Add async parsing option.
In my testing, the major time sink is parsing. This commit adds a setTimeout() around parsing
of each item so control can return to the browser. This increases the total time it takes to finish
a screenshot but will not freeze the browser when it does. This is a good option when e.g. doing
error reporting, where you might not want to freeze the browser while sending debugging information
back to your server.
2013-09-18 13:38:21 +08:00
Niklas von Hertzen
b6ebf2acf6 Remove unnecessary custom complete event checker 2013-09-04 20:17:38 +03:00
Niklas von Hertzen
e9c3d9d332 Fix background color rendering layering with no documentElement color 2013-09-04 20:03:16 +03:00
Niklas von Hertzen
c759600c06 Refactoring 2013-09-04 19:29:12 +03:00
arrix
564634ba97 stacking context creator should be at the bottom
passes z-index12. issue #256
2013-08-15 23:24:01 +08:00
arrix
ea7d6b485d preserve stacking nesting with special ancestor. issue #256 2013-08-15 02:12:38 +08:00
Niklas von Hertzen
10b40821e5 first implementation for matrix transforms 2013-08-06 21:11:08 +03:00
Niklas von Hertzen
056953f2c1 Fix cropping of canvas for float sized elements 2013-08-06 19:15:46 +03:00
Niklas von Hertzen
9a57a08c72 Refactoring logging and gradients 2013-08-06 18:55:04 +03:00
Niklas von Hertzen
26a81da2f0 Ignore transforms if non found 2013-08-06 18:20:20 +03:00
Niklas von Hertzen
57028ab423 initial commit for transforms 2013-08-06 18:17:33 +03:00
Niklas von Hertzen
c9e2fc27c8 Refactoring 2013-08-06 17:55:13 +03:00
Niklas von Hertzen
2777a3e079 Refactoring 2013-08-06 17:46:47 +03:00
arrix
02ab96dc5f passes z-index8 non-positioned element with opactiy < 1
The MDN article Understanding_z_index/Stacking_and_float is wrong about this
2013-08-06 10:34:13 +08:00
arrix
65746bd2e3 coding optimizations 2013-08-06 10:01:20 +08:00
arrix
16d3bef255 z-index overhaul. relative above static; negative z-index
1. when stacking without z-index, positioned > floated > normal flow
2. supports negative z-index
3. new stacking context formed when opacity < 1 (standard)
4. new stacking context formed for position:fixed (no standard yet, done in mobile webkit and chrome 22+)
2013-08-06 03:36:12 +08:00
Niklas von Hertzen
f35ef0fe6f Refactor 2013-08-04 18:33:18 +03:00
Niklas von Hertzen
37fbd3f90e Fix border rendering bug 2013-08-04 16:41:36 +03:00
Niklas von Hertzen
2d39cd0719 fix shadow parsing for IE9 2013-08-04 15:41:00 +03:00
Niklas von Hertzen
877367d499 Merge branch 'arrix-child_textnodes' into develop 2013-08-04 14:36:55 +03:00
arrix
fd888bde8d fixes #251. inline text in top element 2013-08-02 14:36:42 +08:00
Niklas von Hertzen
a7d3e9c2a2 Merge branch 'master' of git://github.com/fdn/html2canvas into fdn-master 2013-06-23 19:27:53 +03:00
Guerric Sloan
f49e147b2f Added qunit tests for text-shadow 2013-06-18 23:47:08 -07:00
Niklas von Hertzen
a902f92a14 remove svg rendering 2013-06-15 11:53:28 +03:00
Guerric Sloan
e1573f8aed Parse out multiple text-shadow values and only honor the first one. 2013-06-12 16:48:23 -07:00
Guerric Sloan
655779743b Better text-shadow parsing 2013-06-12 15:48:00 -07:00
Guerric Sloan
1a30167f6a Basic implementation of text-shadow 2013-06-12 14:54:46 -07:00
Niklas von Hertzen
288b851d05 revert image smooth disabling 2013-05-29 22:50:01 +03:00
Niklas von Hertzen
0afb0fae0e disable image smoothing 2013-05-29 22:31:00 +03:00
Fritz Elfert
2b000f0061 Fixed #207 2013-05-19 22:34:57 +02:00
Fritz Elfert
85fa81ad95 - Fix parsing of input fields on IE9 2013-04-07 21:56:49 +02:00
Fritz Elfert
cf735a9fa1 - Fixed rendering of ExtJS 4.2 windows. 2013-04-06 00:30:16 +02:00
Fritz Elfert
9b051b8749 - Fetch images of current element only 2013-04-05 18:06:37 +02:00
Dan Farrelly
8623e4014b Upgrade to Grunt 0.4.0 complete. Safari on OSX bug fix. 2013-03-22 14:57:38 -04:00
Niklas von Hertzen
b2df50a858 Allow element node to be passed 2013-01-30 20:12:25 +02:00
Niklas von Hertzen
8ddf10fc04 Fix taint testing 2013-01-12 22:28:00 +02:00
Niklas von Hertzen
1b37c5d1ea Refactored preload 2013-01-11 23:01:29 +02:00
Niklas von Hertzen
67850f2cee Refactoring 2013-01-11 22:50:46 +02:00
Niklas von Hertzen
88dd1e41c0 Moved pseudoelement rendering to parse.js 2013-01-11 22:36:23 +02:00
Niklas von Hertzen
222dfa84b7 remove legacy code 2013-01-11 20:38:33 +02:00
Niklas von Hertzen
9b0c32c62c Fix firefox pseudoelement bug for images 2013-01-11 20:36:07 +02:00
Niklas von Hertzen
2bb926c7d0 Fix webkit-gradient() parsing 2013-01-11 20:31:34 +02:00
Niklas von Hertzen
861a18f977 Fix Chrome background-repeat parse error 2013-01-11 19:51:53 +02:00
Niklas von Hertzen
2f3f27b672 Fix crash for browsers that don't support placeholder attribute 2013-01-11 19:34:56 +02:00
Niklas von Hertzen
3032dc6ce0 Fix empty content getting rendered on firefox/IE 2013-01-11 19:31:05 +02:00
Andy Edinborough
2b0db917e3 don't process pseudo elements for hidden elements; cleanup pseudo elements after render 2013-01-11 10:46:53 -06:00
Andy Edinborough
d73e53fbf0 Merge remote-tracking branch 'niklasvh/develop' into develop 2013-01-11 09:51:59 -06:00
Niklas von Hertzen
6d29cc5df3 chinese word rendering 2013-01-04 23:47:59 +02:00
Andy Edinborough
dc21fab450 missing braces 2013-01-03 17:10:57 -06:00
Andy Edinborough
5492d80135 simply resize images to background-size 2013-01-03 17:09:23 -06:00
Niklas von Hertzen
a313524aa4 refactored renderer 2013-01-03 23:15:06 +02:00
Andy Edinborough
3edf9fa743 Merge remote-tracking branch 'niklasvh/develop' into develop
Conflicts:
	src/Parse.js
	src/Preload.js
2013-01-03 15:07:38 -06:00
Niklas von Hertzen
053a0a4787 switched background rendering to use patterns 2013-01-03 22:25:35 +02:00
Niklas von Hertzen
65b4bdf282 background clipping support 2013-01-03 20:34:47 +02:00
Niklas von Hertzen
56780565f4 refactored border radius calculation 2013-01-03 18:37:27 +02:00
Andy Edinborough
55ed0ffde0 render placeholder text 2013-01-02 17:03:16 -06:00
Andy Edinborough
7da4326885 background-size fixes
generated gradients need a unique key (the same value can generate a
different image based on background-size); fix so that a single value
specified for background-size yields a scaled height as the second
parameter
2013-01-02 14:51:03 -06:00
Andy Edinborough
eb57b61859 backgroundPosition should use backgroundSize as a baseline for %'s 2013-01-02 13:45:58 -06:00
Niklas von Hertzen
bb73d3c15e initial border-radius rendering 2013-01-02 21:26:24 +02:00
Andy Edinborough
9b5ae9e191 support for pseudo elements 2013-01-02 12:58:48 -06:00
Andy Edinborough
2557a83dbe remove todo comment 2013-01-02 10:51:47 -06:00
Andy Edinborough
67ccb33dd5 add tests for resizeBounds 2013-01-02 10:47:36 -06:00
Andy Edinborough
85706166cc trimText regexp needs /g 2013-01-02 10:40:56 -06:00
Andy Edinborough
57d6003b65 backgroundSize needs trimmed before second split
also move trimText to Util
2013-01-02 10:39:00 -06:00
Andy Edinborough
9ce03d6e86 working background-size 2013-01-02 10:10:03 -06:00
Andy Edinborough
3d3f923ed8 implementing background-size; use parseBackgroundImage in render 2013-01-01 10:42:22 -06:00
Andy Edinborough
473ff45267 Merge remote-tracking branch 'niklasvh/develop' into develop
Conflicts:
	src/Core.js
	src/Parse.js
	src/Util.js
2012-12-30 17:25:31 -06:00
Niklas von Hertzen
496c8488bd Moved font metrics to seperate file 2012-12-30 21:26:25 +02:00
Andy Edinborough
df0f436e66 initial support for backgroundSize 2012-12-30 12:30:48 -06:00
Andy Edinborough
6ce619f0c0 refactor Preload 2012-12-30 12:20:35 -06:00
Andy Edinborough
0c66766d55 replace definition property, w/ args[]
Also fix reference for preloader
2012-12-30 11:21:44 -06:00
Niklas von Hertzen
ba9ace71ba improved text-decoration: overline accuracy 2012-12-30 16:46:31 +02:00
Niklas von Hertzen
0dd2c24ab4 refactored parsing init 2012-12-30 16:06:59 +02:00
Niklas von Hertzen
d93e36d768 Moved browser support checks to seperate file 2012-12-30 15:48:55 +02:00
Niklas von Hertzen
1357057cbf refactored background rendering 2012-12-30 15:38:17 +02:00
Niklas von Hertzen
74e93cbb93 refactoring backgroundimage rendering 2012-12-30 15:21:36 +02:00
Niklas von Hertzen
45853a083c refactored text rendering 2012-12-30 04:15:51 +02:00
Niklas von Hertzen
cb43e09899 refactor parsing 2012-12-30 01:39:37 +02:00
Niklas von Hertzen
bb1cd21367 refactored background color rendering 2012-12-30 01:11:05 +02:00
Niklas von Hertzen
5faa45847e refactored image rendering 2012-12-30 01:06:11 +02:00
Niklas von Hertzen
0c2572b5ce refactoring 2012-12-30 00:27:38 +02:00
Niklas von Hertzen
aa5b3d41c4 refactoring 2012-12-29 23:35:52 +02:00
Niklas von Hertzen
516edbceea Improve background-repeat accuracy for non int positions 2012-12-29 23:05:49 +02:00
Niklas von Hertzen
c72a02bf64 refactoring 2012-12-29 21:06:40 +02:00
Niklas von Hertzen
c3e9636e4f Moved renderer logic to renderer.js 2012-12-29 17:43:15 +02:00
Niklas von Hertzen
07e80df399 Fixed lint error 2012-12-29 14:33:30 +02:00
Andy Edinborough
7e38df782c don't generate gradient on invisible elements 2012-12-28 16:52:48 -06:00
Andy Edinborough
7f1cbc70a8 fully remove regex; simplify whitespace check
jshint complained about case statements w/o break (boo)
2012-12-28 16:26:39 -06:00
Andy Edinborough
b81d7473e3 rewrite parseBackgroundImage to remove RegExp
RegExp couldn't handle parens inside parens:
linear-gradient(rgb(0,0,0),rgb(255,0,0))
2012-12-28 16:22:43 -06:00
Andy Edinborough
d7bef66cc5 export html2canvas, pass value not def to backgroundImage 2012-12-28 15:49:38 -06:00
Andy Edinborough
04782c1716 parse out prefixed methods 2012-12-28 12:54:58 -06:00
Andy Edinborough
a4b7d04e80 move parseBackgroundImage to Util; add tests 2012-12-28 12:33:57 -06:00
Andy Edinborough
62cb111956 style update 2012-12-28 12:24:49 -06:00
Andy Edinborough
3171390f80 satisfy lint task 2012-12-28 12:12:47 -06:00
Andy Edinborough
8fe61a43b0 initial support for multiple background images
Adding code from http://jsbin.com/ebigux/latest
2012-12-28 11:53:15 -06:00
Niklas von Hertzen
4e978c60cc formatted tests into smaller units 2012-12-27 23:53:27 +02:00
Niklas von Hertzen
c9ed8d91fa updated renderer 2012-12-27 23:07:00 +02:00
Niklas von Hertzen
4684177df8 fix ie 9 bug 2012-12-27 23:06:35 +02:00
Niklas von Hertzen
d6ddb7e29d Added automated testing with selenium 2012-12-22 16:28:34 +02:00
Niklas von Hertzen
76aa1e8feb moved examples 2012-11-25 23:48:08 +02:00
Niklas von Hertzen
2841f19647 List refactoring 2012-11-25 23:36:28 +02:00
Niklas von Hertzen
c6baabc99c Text rendering refactoring 2012-11-25 23:26:18 +02:00
Niklas von Hertzen
44023015b6 Refactoring 2012-11-25 23:05:30 +02:00
Niklas von Hertzen
bca6458301 Clean up 2012-11-25 22:39:09 +02:00
Niklas von Hertzen
7c0b893564 Added support for "data-html2canvas-ignore" attribute 2012-11-25 22:25:08 +02:00
Niklas von Hertzen
084bf4b039 Switched build process to use grunt 2012-11-25 20:59:31 +02:00
Vladimir Panteleev
1b81f7d517 Accept 0px as an acceptable letter-spacing value for per-word rendering
This improves performance in Opera.
2012-10-20 22:18:46 +03:00
Vladimir Panteleev
3164e5bae0 Don't create zero-width text node after each render
This fixes rendering the same node getting slower each time
when using Opera.
2012-10-20 22:15:58 +03:00
Niklas von Hertzen
730ebcfcaa border-radius parsing 2012-06-26 17:18:34 +03:00
Niklas von Hertzen
cce6e3537c corrected border drawing with multiple colors
initial code for border-radius implemented
2012-06-26 15:15:46 +03:00
Niklas von Hertzen
d6cb548a5c updated to version 0.34 2012-06-26 01:35:11 +03:00
Niklas von Hertzen
1ba911912d fixed firefox iframe permission error 2012-06-26 01:30:45 +03:00
Niklas von Hertzen
343b86705f removed last jQuery dependencies
should be fully jQuery free now!
2012-06-26 01:17:03 +03:00
Niklas von Hertzen
9f76f94a82 fix jQuery noconflict 2012-06-13 13:56:01 +03:00
Benjamin Lupton
1059314258 Added a sublime-project file for Sublime Text 2 that contains the detected linting and standards set. Allows Sublime Text 2 to automatically follow the standards and have live linting enabled. Trimmed useless whitespace. 2012-05-29 11:26:26 +10:00
Niklas von Hertzen
8d3a0c2b0d cache computed style 2012-05-24 14:10:40 +03:00
Bdkzero
a5969be6f6 Fixed custom renderer option 2012-04-23 23:04:23 +02:00
Paolo
cfc45e4f6e Fixed image rendering in SVG renderer 2012-04-17 10:58:14 +02:00
Paolo
8d965029da Fixed support for other Renderers other than Canvas 2012-04-17 10:57:25 +02:00
Niklas von Hertzen
1ad7ed3e1c Merge pull request #77 from SunboX/background-gradients
ellipse gradient generation should now work
2012-03-14 03:38:05 -07:00
Obexer Christoph
b47347d6b8 fixed a few undefined references, fixed missing files in a few places 2012-03-12 07:37:18 +01:00
André Fiedler
106b5ff214 "fixed circle gradient generation - image loading bug" 2012-03-11 17:12:24 +00:00
André Fiedler
d1dec8712e "added ellipse background gradient generation" 2012-03-10 15:31:16 +00:00
André Fiedler
fe4d2c5b81 "added TODO" 2012-03-10 14:28:09 +00:00
André Fiedler
6cf3d36624 "added TODO" 2012-03-09 23:27:22 +00:00
André Fiedler
4dc4132818 "removed TODO" 2012-03-09 23:26:23 +00:00
André Fiedler
1ab9941df6 "big performance boost ;o)" 2012-03-09 23:23:17 +00:00
André Fiedler
0fc5f643ba "cleanup" 2012-03-09 23:20:46 +00:00
André Fiedler
c7995061c9 "added TODO" 2012-03-09 23:11:01 +00:00
André Fiedler
12cf519e37 "some cleanup" 2012-03-09 23:09:16 +00:00
André Fiedler
40bce5e84c "added -o-radial-gradient support" 2012-03-09 23:05:42 +00:00
André Fiedler
0556892e12 "added -moz-radial-gradient support" 2012-03-09 22:58:32 +00:00
André Fiedler
155ad45292 "added -webkit-radial-gradient support" 2012-03-09 22:20:34 +00:00
Niklas von Hertzen
0d35571bbf Merge branch 'color-stops' of https://github.com/SunboX/html2canvas.git 2012-03-08 11:35:12 +02:00
André Fiedler
6390c1c7ac "center gradient BugFix" 2012-03-07 18:20:09 +00:00
André Fiedler
a0b498fbf5 "added TODO" 2012-03-06 21:50:09 +00:00
André Fiedler
cde96bb17e "added TODO´s" 2012-03-06 21:45:38 +00:00
André Fiedler
57bff5292d "added contributors" 2012-03-06 21:41:22 +00:00
André Fiedler
82446ee3c3 "cleanup" 2012-03-06 21:36:29 +00:00
André Fiedler
ffd998b015 "-o-linear-gradient parsing" 2012-03-06 21:26:43 +00:00
André Fiedler
51b2c01b0c "-moz-linear-gradient parsing" 2012-03-06 21:11:01 +00:00
Niklas von Hertzen
c08ac5d0c4 add svg powered rendering 2012-03-06 17:11:10 +02:00
Niklas von Hertzen
59306c839b Merge branch 'master' of https://github.com/niklasvh/html2canvas.git 2012-03-06 14:37:28 +02:00
Niklas von Hertzen
5fb8cb3e0b reverting back to jQuery.contents() 2012-03-06 14:35:33 +02:00
Niklas von Hertzen
67d3e0d0f5 first commit for SVG powered rendering 2012-03-06 14:32:45 +02:00
André Fiedler
f387267c0f "TODO: implement radial gradient generation" 2012-03-05 23:22:01 +00:00
André Fiedler
163219b656 "added -webkit-gradient parsing + tests" 2012-03-05 23:03:36 +00:00
André Fiedler
a4f13de455 "renamed getColorStopsFromGradient to parseGradient" 2012-03-05 22:21:28 +00:00