Commit Graph

62 Commits

Author SHA1 Message Date
Nathan Froyd
c7178b65ad servo: Merge #8086 - add (un)premultiply tables for canvas {Get,Put}ImageData operations (from froydnj:premultiply-tables); r=jdm
Pretty straightforward use of lookup tables to replace a bunch of expensive float operations.

Source-Repo: https://github.com/servo/servo
Source-Revision: 9a34decec295563d3b4050bc53daad142450e0d5
2015-10-21 17:48:49 -06:00
Corey Farwell
284d11cafd servo: Merge #7987 - Fix issues found by rust-clippy (from frewsxcv:clippy); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: eb7039d04d4c83800ba9d92dc251222f79b83040
2015-10-12 18:33:30 -06:00
Patrick Walton
174f36ef9f servo: Merge #7802 - Handle zero-sized source surfaces properly, and upgrade ipc-channel to incorporate the fix for zero-sized shmem on Mac (from pcwalton:zero-size-source-surfaces); r=mbrubeck
Depends on servo/rust-azure#201 and pcwalton/ipc-channel#10.

Closes #7422.

r? @mbrubeck (don't r+ until the upstream dependencies have landed)

cc @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: e2048d57c4c0602c5a6b82db8cb76e6c3e5467fa
2015-10-01 00:08:34 -06:00
Ravi Shankar
62e8ea2732 servo: Merge #7698 - sorted the declarations in various files (from Wafflespeanut:sorting); r=frewsxcv
This is a direct extract from my abandoned PR for a lint (#7546), along with some rather clumsy modifications (only on `components/script/dom/mod.rs` and `components/style/lib.rs`), because I had to sort some of the files again to make peace with tidy, which hasn't been educated about sorting yet!

Source-Repo: https://github.com/servo/servo
Source-Revision: a7208869f2903e36f9b2f540b55b50283d7df466
2015-09-23 15:02:56 -06:00
Brandon Fairchild
704178a0dd servo: Merge #7662 - Check for multiple import blocks separated by whitespace (from nerith:import); r=frewsxcv
Fixes #7381.

Source-Repo: https://github.com/servo/servo
Source-Revision: a0d3c9223f09757124b1520c4f17e94fa8bbe249
2015-09-19 13:34:51 -06:00
Mathieu Rheaume
824a99496b servo: Merge #7559 - Remove 'get_*' on getters as per RFC 0344 on canevas, compositing, devtools, gfx, layout, net, profile, servo and webdriver_server (from ddrmanxbxfr:RFC-0344-Work); r=nox
Hi guys,

I just gave a big pass of RFC-0344 as per issue #6224 .

Pretty much renamed all the get_* fn that were used to fetch values.

I hope I didn't rename too much.

As said in the issue discussion, I didn't touch at the scripts folder so we keep the unsafe ones pretty explicit.

I've ran the whole pass of test, everything seems to be still working right :).

Please give feedback on this PR.

Thanks for looking into it.

Source-Repo: https://github.com/servo/servo
Source-Revision: b05f4aa3aa3085e65cb75433ae37bf272216d033
2015-09-12 18:29:56 -06:00
Johann Tuffe
25ce9ab4be servo: Merge #7265 - Add alphabetical order check for use statements (from tafia:tidy-use); r=Ms2ger
close #7112

Source-Repo: https://github.com/servo/servo
Source-Revision: a5fbb2f2a6fa79755f975feff2435abb6a5dd0e9
2015-08-20 07:43:56 -06:00
João Oliveira
728883c59d servo: Merge #7208 - replace .len() == 0 with is_empty() (from jxs:master); r=Ms2ger
closes #7198

Source-Repo: https://github.com/servo/servo
Source-Revision: 85022a4c347dca3f5d28cec3010f7e9410217df4
2015-08-14 00:51:59 -06:00
David Zbarsky
54064f2d7c servo: Merge #7092 - Clean up and fix PutImageData (from dzbarsky:putimagedata); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 6a8bc8528498c0cbb2e50567d765a989cde2d115
2015-08-09 07:00:56 -06:00
David Zbarsky
db43768f37 servo: Merge #6975 - Fix getImageData with sizes < 1 pixel (from dzbarsky:get-tiny); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: dbce4c5bd8ec005ba78ac8c2f8754bd137c87f25
2015-08-09 06:32:30 -06:00
David Zbarsky
a6597199cd servo: Merge #6989 - Respect the composition op when drawing images (from dzbarsky:compositing); r=metajack
Source-Repo: https://github.com/servo/servo
Source-Revision: b9dcd49778b8ff6d2aef0ac2420c3a30b80432c1
2015-08-05 22:57:20 -06:00
David Zbarsky
2f8faff83d servo: Merge #6954 - Implement strokeRect with zero-width or zero-height rects (from dzbarsky:stroke_rect); r=glennw
Source-Repo: https://github.com/servo/servo
Source-Revision: eecd9752093540220eb52308b8fb3ceba0939e3c
2015-08-04 16:38:57 -06:00
Patrick Walton
89b3b2b275 servo: Merge #6616 - script: Make most of 2D canvas and WebGL run over IPC (from pcwalton:canvas-webgl-ipc); r=jdm
To actually make the multiprocess communication work, we'll need to
reroute the task creation to the pipeline or the compositor. But this
works as a first step.

r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: 1764267379a00b96a1df89f3917299a0c6fd325c
2015-07-25 01:50:31 -06:00
Patrick Walton
63409fac20 servo: Merge #6705 - canvas: Move to shared memory for images and canvas backing stores (from pcwalton:image-cache-shmem); r=jdm
The idea here is to land this before making images and canvas IPC-safe,
because this will shake out bugs relating to the shared memory. There
are currently test timeouts that are preventing multiprocess images and
canvas from landing, and I believe those are due to the inefficiency of
sending large amounts of data in the unoptimized builds we test with. By
moving to shared memory, this should drastically reduce the number of
copies and `serde` serialization.

Under the hood, this uses Mach OOL messages on Mac and temporary
memory-mapped files on Linux.

r? @jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: ed1b6a3513e7546b580693f554a081bc0c7c478a
2015-07-24 17:14:59 -06:00
Martin Robinson
2b8865b89f servo: Merge #6591 - Upgrade to rustc 1.3.0-dev (fddfd089b 2015-07-10) (from servo:rustup_2015-07-10); r=larsbergstrom
Depends on https://github.com/jgraham/webdriver-rust/pull/12.

Fixes #6020.

Source-Repo: https://github.com/servo/servo
Source-Revision: 9af229b83095f2f8cfe7b61003b85ddf781f4ea7
2015-07-14 13:40:22 -06:00
ecoal95
87b4c78bcf servo: Merge #6423 - Use euclid from crates.io (from emilio:euclid); r=glennw
Sorry for not doing it yesterday, I couldn't.

cc @metajack @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: 4ebb95ccd8e034007eacb447a054919ef4af2bf7
2015-06-18 20:50:22 -06:00
Hyowon Kim
4d72e239e0 servo: Merge #6402 - Fill and stroke for all pattern types and check the zero size gradient (from hyowon:canvas_fill_stroke); r=pcwalton
Depends on servo/rust-azure#170 which has been already merged.
So this patch contains the update of rust-azure.
r? @nox
cc @yichoi

Source-Repo: https://github.com/servo/servo
Source-Revision: e1b28d893e54601bf497d0d5b83d77658ca16bac
2015-06-17 13:32:25 -06:00
Hyowon Kim
2412f11cde servo: Merge #6355 - Implement drawing shadows in canvas (from hyowon:drawing_shadows); r=nox
https://html.spec.whatwg.org/multipage/#when-shadows-are-drawn
r? @nox
cc @mmatyas @yichoi

Source-Repo: https://github.com/servo/servo
Source-Revision: 48e1d45bffaf7679d1f9487038a104f373a90e5a
2015-06-16 05:30:20 -06:00
Corey Farwell
06b50698fa servo: Merge #6349 - rust-geom API changes (from frewsxcv:geom-api-changes); r=pcwalton
Shouldn't be merged until these have merged:

https://github.com/servo/rust-geom/pull/81

https://github.com/ecoal95/rust-offscreen-rendering-context/pull/13

https://github.com/servo/rust-layers/pull/178

~~I'll also need to update the Cargo lock files once they merge~~

Source-Repo: https://github.com/servo/servo
Source-Revision: cfcd8589d06935f83b903f76477ea03e4d4652d0
2015-06-13 13:52:07 -06:00
Hyowon Kim
8d57bfce14 servo: Merge #6157 - Implement pattern fill style for canvas (from hyowon:canvas_pattern_fill); r=nox
Issue #6056
Depends on servo/rust-azure#160

Source-Repo: https://github.com/servo/servo
Source-Revision: 9474e62d38f61f2b3a385ca32d64cab975b014ce
2015-06-13 01:49:50 -06:00
Mátyás Mustoha
117b71291c servo: Merge #6354 - Remove gfx_traits from the dependencies of [script] (from mmatyas:canvas_remdep); r=Ms2ger
It seems @hyowon uploaded her canvas shadow patch faster than me; I've handled the color dependency a bit different, this way `gfx_traits` is not required by the script module.

Source-Repo: https://github.com/servo/servo
Source-Revision: c8c7bd900dde73d4fddafea8239f44440f1c863b
2015-06-12 10:22:54 -06:00
Hyowon Kim
e973844b89 servo: Merge #6337 - Add attributes for canvas shadows (from hyowon:shadow_attrs); r=nox
The first step of the implementation for shadows in canvas.
r? @nox @jdm
cc @yichoi

Source-Repo: https://github.com/servo/servo
Source-Revision: f163f2bf0d32861ea20470d405bb517ed5b09e84
2015-06-12 03:27:07 -06:00
Mátyás Mustoha
5c241b2fac servo: Merge #6065 - Enable antialiasing for the canvas (from mmatyas:canvas_antialias); r=jdm
This patch turns on antialiasing for the canvas, and updates the painting code to use the updated Azure DrawOptions defined in servo/rust-azure#158.

Source-Repo: https://github.com/servo/servo
Source-Revision: c97c0a9f94208828c617cbd99efd8e3e410c69ee
2015-05-28 14:59:36 -05:00
Corey Farwell
3d43073796 servo: Merge #6174 - Reduce max line length from 150 to 120 characters (from frewsxcv:cleanup-long-lines); r=SimonSapin
Part of https://github.com/servo/servo/issues/6041

Source-Repo: https://github.com/servo/servo
Source-Revision: 542519ebfd073662bc9421ac5fa0aa01ebc0d6fe
2015-05-24 18:27:26 -05:00
ecoal95
0656a2b904 servo: Merge #6083 - First steps to layerize canvas (from emilio:layerize-canvas); r=pcwalton
I've done a bit of job to get this done. Right now readback is still used, but we have a `LayerId` -> `CanvasRenderer` map on the paint task, that we can use to get rid of that.

I'd want review, to see if this is a good approach (I know it's not the initial `CanvasId` -> renderer approach, but it's pretty similar, since a canvas involves a `PaintLayer`).

I had to do a bit of refactoring to avoid cyclic dependencies between canvas and gfx. I'd want you to review them too.

It's mergeable and doesn't break any tests :P

Some of my main concerns:
* Does the canvas render really need to be behind an `Arc<Mutex<T>>`?
* I can't clone a `NativeSurface` right now (that's why the `SendNativeSurface()` msg is unimplemented in the WebGL task). It should be easy to add that to rust-layers, supposing the caller is responsible to mark it as non-leaking, any reason to not do it?

cc @jdm @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: ad53e95080144485e74cd9b9d48ce75e20de4e36
2015-05-20 15:42:06 -05:00
Simon Sapin
b72bb5e7d5 servo: Merge #5935 - Upgrade Rust (from servo:rustup_2015-04-25); r=Ms2ger
r? everybody

Source-Repo: https://github.com/servo/servo
Source-Revision: 49aed6555dbc008c1a378c5cbb303f5467232b6b
2015-05-05 09:11:30 -05:00
Ms2ger
622e167a6a servo: Merge #5888 - Prepare for the rustup (from Ms2ger:prepare-rustup); r=SimonSapin
Source-Repo: https://github.com/servo/servo
Source-Revision: ab2d07db1fabd7ad9590aa7296038bbc91806c3f
2015-04-28 17:52:49 -05:00
Ms2ger
c7955e722b servo: Merge #5847 - Avoid as_slice() / at_mut_slice() (from Ms2ger:slice); r=SimonSapin
Source-Repo: https://github.com/servo/servo
Source-Revision: 1389be37823fccf4108f4e79d0a3a793f0bbe93e
2015-04-26 05:30:28 -05:00
Mátyás Mustoha
3ceb9c7bf4 servo: Merge #5757 - Canvas: implement global composition and blending (from mmatyas:canvas_globalcomposite); r=jdm
Implements https://html.spec.whatwg.org/multipage/scripting.html#dom-context-2d-globalcompositeoperation.

Source-Repo: https://github.com/servo/servo
Source-Revision: e278e5b9a27738bdca7a151b4295628e1f179e29
2015-04-22 14:15:28 -05:00
Mátyás Mustoha
8953c2461c servo: Merge #5773 - Canvas: add clipping path support (from mmatyas:canvas_clip); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: c4b7979450a3b884ed727e0c1d306897d255aef9
2015-04-22 10:40:10 -05:00
Mátyás Mustoha
5201431aa6 servo: Merge #5770 - Canvas: implement rectangle drawing (from mmatyas:canvas_rect); r=jdm
A simple little patch.

Source-Repo: https://github.com/servo/servo
Source-Revision: 1d66b090a2b25203f751455d9f0f4985a77ccd64
2015-04-21 08:43:47 -05:00
Diego Marcos
00f99e2944 servo: Merge #5652 - Kicking off a WebGL implementation (from dmarcos:webgl); r=jdm
@jdm @ecoal95 I'm working on making VR happen in the Browser and I want to bring to Servo the [webVR APIs](https://github.com/MozVR/webvr-spec/blob/master/webvr.idl) we already have in Gecko. Before anything happens we need a working implementation of WebGL (and also the [fullscreen API](https://fullscreen.spec.whatwg.org/)). My implementation is very basic and probably naive (I just recently started to contribute to Servo). My patch is just a starting point:

- It only implements ```clearColor``` and ```clear``` methods of the [WebGL spec](https://www.khronos.org/registry/webgl/specs/latest/).
- It uses the readback strategy that ```canvasRenderingContext2D``` is using (The webgl task paints stuff independently on it's own buffer and the compositor task request the pixels back to the webgl task when it needs them) I'm sure there are much better ways to handle this. Latency and FPS are critical in VR so we have to figure out the fastest way to push pixels to the screen. I've read something about layerizing the canvas but I'm still not sure what that even means :)
- There's an included test you can try ```./mach run tests/ref/webgl-context/clearcolor.html```

@ecoal95 I know you'll be working on this for the next three months. With a foundation in place we will be able to make quick progress in parallel. This is exciting!

Source-Repo: https://github.com/servo/servo
Source-Revision: e4b620ea54c94e03095e4108bce94ec750416bba
2015-04-20 19:29:02 -05:00
Mátyás Mustoha
958c5b446c servo: Merge #5731 - Canvas: implement context state save/restore (from mmatyas:canvas_saverestore); r=jdm
This patch enables the use of `save()` and `restore()` for the canvas context, which is used by *a lot* of sites and scripts.

Depends on servo/rust-azure#153.

Source-Repo: https://github.com/servo/servo
Source-Revision: 9c7c289acae3ea012338a5b25bc50a10e7f7074d
2015-04-19 17:40:33 -05:00
Corey Farwell
7a0c4a962f servo: Merge #5729 - Don't link to specific WHATWG multipage page (from frewsxcv:whatwg-multipage-redirects); r=Manishearth
"Links to the multipage version of the specification are unfortunately
likely to break over time."
-- https://html.spec.whatwg.org/multipage/asefij.html

This commit removes all references to the specific pages when viewing
WHATWG using multipage mode. I went through all these links and they
redirect fine.

Regex used to generate this commit:

`s_whatwg.org/multipage/.*#_whatwg.org/multipage/#_g`

Source-Repo: https://github.com/servo/servo
Source-Revision: d90fe2b0889dee4eb27693aca7670969d5253424
2015-04-17 08:57:33 -05:00
Mátyás Mustoha
bccbfe6a0d servo: Merge #5635 - Canvas: added lineCap and lineJoin support (from mmatyas:canvas_linecapjoin); r=jdm
This patch adds support for setting the line cap and join. However, it seems there's a problem on the azure-side, as the line cap setting doesn't work. Changing either the default values or using the new function has no effect. Line join works fine though.

Source-Repo: https://github.com/servo/servo
Source-Revision: fe81ce942a36b08ece8ef6d58de72624a961eeaa
2015-04-14 12:57:48 -05:00
Mátyás Mustoha
f08601be8b servo: Merge #5613 - Canvas: added miterLimit support (from mmatyas:canvas_miterlimit); r=jdm
This exposes some other canvas tests which were marked as PASS before. Two strokeRect related tests are fixed by #5612, and lineCap/lineJoin will have an implementation soon.

Source-Repo: https://github.com/servo/servo
Source-Revision: 325899bfad2f87e2c46b96bc542110d8f0cada48
2015-04-09 09:37:44 -05:00
Mátyás Mustoha
52704f349c servo: Merge #5563 - Canvas: added support for the globalAlpha attribute (from mmatyas:canvas_globalalpha); r=jdm
A patch somewhat similar to #5562

Source-Repo: https://github.com/servo/servo
Source-Revision: ee7d76221345362c069a6946e01b9ec7d4b42ce3
2015-04-08 11:58:04 -05:00
Mátyás Mustoha
29bba355f3 servo: Merge #5562 - Canvas: added lineWidth support (from mmatyas:canvas_linewidth); r=jdm
Rebase of #5488

Source-Repo: https://github.com/servo/servo
Source-Revision: f57b487e4d53c60d8afe704ab0fd92f6158d63da
2015-04-08 00:56:37 -05:00
Diego Marcos
a288345776 servo: Merge #5433 - Implements drawImage for html image as ImageSource (from dmarcos:issue5290); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 58637a1174f94cb1ebbb394d3ba3c8c8f2d70639
2015-04-07 18:38:34 -05:00
Mátyás Mustoha
b81c3ff0b9 servo: Merge #5414 - Canvas: added arcTo() support (from mmatyas:canvas_arcto); r=jdm
Based on the implementation in Firefox.

After comparing how `arcTo` works in different browsers, I've found the code in Firefox the cleanest implentation. It also performed better on some test, for example the one on [this site](http://flashcanvas.net/examples/dl.dropbox.com/u/1865210/mindcat/arcto.html). In (Linux) Firefox 36, it looks like [this](http://i59.tinypic.com/2ch5b2d.png), while in Chromium 41, [some features are missing](http://i58.tinypic.com/30u5w8z.png).

Source-Repo: https://github.com/servo/servo
Source-Revision: ae31d9d9e86eb90a1fe2858f10ca5e6e2e722c67
2015-04-01 15:00:43 -06:00
Mátyás Mustoha
73453b6e86 servo: Merge #5302 - Canvas: Added stroke support (from mmatyas:canvas_stroke); r=jdm
This is the servo side patch of servo/rust-azure#149.

Source-Repo: https://github.com/servo/servo
Source-Revision: f29ea4e4ef633c023a43f47f7fc8c6b46e51b8df
2015-03-25 07:54:50 -06:00
Ms2ger
47e3f6a99f servo: Merge #5354 - Cleanup canvas_paint_task.rs (from Ms2ger:canvas); r=saneyuki
Source-Repo: https://github.com/servo/servo
Source-Revision: 004e12c89deb2c30ac634e3ce2e2c63ac9da5dee
2015-03-25 03:45:48 -06:00
Diego Marcos
70420c0960 servo: Merge #5231 - Implementing canvas drawImage API for HTML Canvas elements as image sour (from dmarcos:issue4784); r=jdm
...ce

Source-Repo: https://github.com/servo/servo
Source-Revision: 2ab1ece765a50e26c2908bcbe5463ff1fda0b085
2015-03-24 14:01:06 -06:00
Ms2ger
761d1d93b7 servo: Merge #5303 - Update some code that's feature-gated under core (from Ms2ger:core); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 43f3f6c897916aea75773f74060ec84a338834d0
2015-03-21 12:57:46 -06:00
Mátyás Mustoha
2acb95ac2e servo: Merge #5251 - Canvas: implement quadraticCurveTo() (from mmatyas:canvas_quadratic); r=jdm
Yet another small canvas patch.

Source-Repo: https://github.com/servo/servo
Source-Revision: 2c85c1d312405c586f05244c221b65750cf09981
2015-03-20 04:27:47 -06:00
Mátyás Mustoha
beac897eb1 servo: Merge #4891 - Implement canvas gradient (from mmatyas:canvas_gradient); r=jdm
Based on [ebalint](https://github.com/ebalint)'s original patch, this commit implements the linear and radial gradients for the canvas. The PR also includes test cases.
Depends on #4623 and servo/rust-azure#136.

Source-Repo: https://github.com/servo/servo
Source-Revision: dea36f981650f027902b4f71f0cdabd2da69fe21
2015-03-20 03:12:47 -06:00
Mátyás Mustoha
4f3961c85c servo: Merge #5185 - Canvas: added arc() support (from mmatyas:canvas_arc); r=pcwalton
This patch enables the use of `arc()` on the canvas.
I couldn't add reftest this time, as it involves some antialiasing issues, and so the reference doesn't match.

Source-Repo: https://github.com/servo/servo
Source-Revision: e8f1a046c6c704915419cb75181f6e0bc402ef98
2015-03-10 09:45:49 -06:00
Mátyás Mustoha
0e7b910b7a servo: Merge #5089 - Canvas: added lineTo support (from mmatyas:canvas_lineto); r=jdm
This patch enables the use of `lineTo()` on the canvas.

Source-Repo: https://github.com/servo/servo
Source-Revision: 9eaa48b793de78b713e6c3a3c79c4060084d5fbe
2015-03-02 13:33:55 -07:00
Patrick Walton
caba5137e0 servo: Merge #5016 - script: Implement enough 2D canvas support to render basic SVGs such as (from jdm:canvas-for-svg); r=jdm
the tiger.

Rebased from #4623.

Source-Repo: https://github.com/servo/servo
Source-Revision: 2e1adb3fa670504fb0fedaa517f312ba233bf67b
2015-02-22 20:33:45 -07:00
Edit Balint
652d187f26 servo: Merge #5020 - Implement Canvas pixel manipulation (from jdm:canvas); r=jdm
Rebase of #4639.

Source-Repo: https://github.com/servo/servo
Source-Revision: 287f390c4a56dd8c5960df699d45653227b25d6f
2015-02-22 11:48:46 -07:00