Commit graph

68 commits

Author SHA1 Message Date
bors-servo
e09c555a41 Auto merge of #6293 - ecoal95:webgl-objects, r=nox
This commit implements:
* WebGLFramebuffer
* WebGLRenderbuffer
* WebGLTexture

And adds the following methods to `WebGLRenderingContext`:
* create{Texture,Framebuffer,Renderbuffer}
* bind{Texture,Framebuffer,Renderbuffer}
* destroy{Buffer,Texture,Framebuffer,Renderbuffer}

Fixes:
* WebGLUniform location shouldn't inherit from WebGLObject.

Known Issues:
* WebGL objects have to be destroyed on drop, we may want to keep a reference to the context, or maybe a clone of the renderer to achieve this

Also refactors a huge part of the current implementation, to allow
failing on creation of different WebGL objects.

Blocked on https://github.com/servo/gleam/pull/22

A reftest for most of the added functionality is not doable right now,
we need a few more functions in order to upload a texture, for example.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6293)
<!-- Reviewable:end -->
2015-06-09 10:06:37 -05:00
Eduard Burtescu
00e8e5f77d Use the correct log crate and setup env_logger in main. 2015-06-06 23:20:40 +03:00
ecoal95
9f94d39c9e Implement new WebGL interfaces and methods
This commit implements:
* WebGLFramebuffer
* WebGLRenderbuffer
* WebGLTexture

And adds the following methods to `WebGLRenderingContext`:
* create{Texture,Framebuffer,Renderbuffer}
* bind{Texture,Framebuffer,Renderbuffer}
* destroy{Buffer,Texture,Framebuffer,Renderbuffer}

Fixes:
* WebGLUniform location shouldn't inherit from WebGLObject.

Known Issues:
* WebGL objects have to be destroyed on drop, we may want to keep a reference to the context, or maybe a clone of the renderer to achieve this

Also refactors a huge part of the current implementation, to allow
failing on creation of different WebGL objects.

Blocked on https://github.com/servo/gleam/pull/22

A reftest for most of the added functionality is not doable right now,
we need a few more functions in order to upload a texture, for example.
2015-06-06 12:14:01 +02:00
ecoal95
eff2bb4310 WebGLRenderingContext getters and getParameter
This implements the `canvas`, `drawingBufferHeight` and
`drawingBufferWidth` getters to `WebGLRenderingContext`, and an initial
version of `getParameter`.
2015-06-01 16:34:51 +02:00
bors-servo
0de09b936e Auto merge of #6183 - ecoal95:webglcontextattributes, r=nox
r? @jdm

I couldn't add the `getContextAttributes` method since `CodegenRust`
doesn't know how to return a dictionary value, I'll take a look at it ASAP.

I think the helper functions can return directly the renderer, since they're used just for that, but I wanted to hear your opinions about this.

By the way I'm interested in adding more serious tests for WebGL, and I think the [khronos conformance suit](https://github.com/KhronosGroup/WebGL/tree/master/conformance-suites/1.0.3) should be the best option.

Should I try to integrate it in wpt, or making a `tests/webgl` directory (or similar) inside the servo tree? (Maybe this question should be for @Ms2ger)

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6183)
<!-- Reviewable:end -->
2015-06-01 08:37:48 -05:00
ecoal95
b3ac346749 Add WebGLContextAttributes support
This commit also:
* Allows to return non-rootable dictionaries from
Codegen.
* Merges the two context types in an enum type.
2015-06-01 15:29:38 +02:00
Mátyás Mustoha
f4c0bd3b80 Turn off default antialiasing for most DrawOptions. 2015-05-28 18:42:16 +02:00
Mátyás Mustoha
322fd5ad9d Add disable-canvas-aa option to test runner. 2015-05-28 11:10:58 +02:00
Mátyás Mustoha
adef44183d Enable antialiasing for the canvas. 2015-05-28 11:10:57 +02:00
Corey Farwell
8e3f4bba85 Reduce max line length from 150 to 120 characters
Part of https://github.com/servo/servo/issues/6041
2015-05-24 00:01:49 -04:00
ecoal95
3350522306 Layerize canvas
Note that this keeps using readback right now, `NativeSurface` painting
will be implemented soon.

Also see https://github.com/servo/servo/issues/6142
2015-05-20 19:10:50 +02:00
Ms2ger
5c4d2d7928 Move handling of CanvasWebGLMsgs into WebGLPaintTask::handle_webgl_message.
This clarifies the code flow in WebGLPaintTask::start a bit, and as a bonus,
reduces the line lengths.
2015-05-14 13:09:13 +02:00
ecoal95
a3b0c10381 Remove Glutin dependency for WebGL
Now we have mac support, and since android build is broken, we can
drop glutin from WebGL code.

Went back to upstream
(see: https://github.com/servo/rust-offscreen-rendering-context/pull/1#issuecomment-99234534)

Rebased
2015-05-07 13:31:08 +02:00
Simon Sapin
ef8edd4e87 Upgrade to rustc 551a74dddd84cf01440ee84148ebd18bc68bd7c8. 2015-05-05 10:07:34 -04:00
Diego Marcos
79b8e7aa34 It implements enough WebGL spec to draw a triangle 2015-05-02 19:21:05 -07:00
Ms2ger
024323004d Remove remaining as_slice / as_mut_slice calls. 2015-04-28 23:31:11 +02:00
ecoal95
79a5dae170 WebGL context hardware acceleration + error detection 2015-04-27 04:16:47 +02:00
Ms2ger
9185c3de79 Remove as_mut_slice() calls. 2015-04-26 11:09:03 +02:00
Mátyás Mustoha
a8343a0750 Canvas: implement global composition and blending. 2015-04-22 20:54:27 +02:00
Mátyás Mustoha
6fd6eefb35 Canvas: add clipping path support. 2015-04-22 16:25:02 +02:00
Mátyás Mustoha
5287cb7fba Canvas: implement rectangle drawing. 2015-04-21 15:21:30 +02:00
Diego Marcos
c82485874d Kicks off a WebGL implementation 2015-04-20 14:29:39 -07:00
Mátyás Mustoha
5b8416a2b6 Canvas: implement context state save/restore. 2015-04-19 21:12:13 +02:00
Corey Farwell
8b08c6f43f Don't link to specific WHATWG multipage page
"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`
2015-04-16 22:39:25 -04:00
Mátyás Mustoha
ccfff159e7 Canvas: added lineCap and lineJoin support. 2015-04-14 18:26:41 +02:00
Mátyás Mustoha
93fa9e607a Canvas: added miterLimit support. 2015-04-09 13:00:05 +02:00
Mátyás Mustoha
5c560397eb Canvas: added support for the globalAlpha attribute. 2015-04-08 11:49:22 +02:00
bors-servo
f57b487e4d Auto merge of #5562 - mmatyas:canvas_linewidth, r=jdm
Rebase of #5488
2015-04-08 00:56:37 -05:00
Diego Marcos
88954e3e18 Implements drawImage for html image as ImageSource 2015-04-07 11:02:50 -07:00
Mátyás Mustoha
6da2ce9b1b Canvas: added lineWidth support. 2015-04-07 16:10:29 +02:00
Mátyás Mustoha
56303e21cc Canvas: added arcTo() support. 2015-04-01 21:20:05 +02:00
bors-servo
f29ea4e4ef auto merge of #5302 : mmatyas/servo/canvas_stroke, r=jdm
This is the servo side patch of servo/rust-azure#149.
2015-03-25 07:54:50 -06:00
Mátyás Mustoha
698b88f71d Canvas: added stroke() support. 2015-03-25 12:52:05 +01:00
Ms2ger
6113dd42b1 Pass a slice to write_pixels. 2015-03-25 09:49:15 +01:00
Ms2ger
cb46a5788d Stop using the deprecated range function in canvas_paint_task. 2015-03-25 09:48:59 +01:00
Ms2ger
86ce20dca3 Fix indentation in canvas_paint_task. 2015-03-25 09:48:32 +01:00
Diego Marcos
e3f5a76baa Implementing canvas drawImage API for HTML Canvas elements as image source 2015-03-24 12:23:15 -07:00
Ms2ger
ba87666cdb Update some code that's feature-gated under core. 2015-03-21 18:44:39 +01:00
bors-servo
2c85c1d312 auto merge of #5251 : mmatyas/servo/canvas_quadratic, r=jdm
Yet another small canvas patch.
2015-03-20 04:27:47 -06:00
Mátyás Mustoha
d3199aef74 Implement gradient fill styles for canvas. 2015-03-19 15:59:08 +01:00
Ms2ger
5f15eb5fbf Upgrade rustc to d3c49d2140fc65e8bb7d7cf25bfe74dda6ce5ecf/rustc-1.0.0-dev. 2015-03-18 13:18:31 -04:00
Mátyás Mustoha
2817f2e066 Canvas: implement quadraticCurveTo(). 2015-03-17 16:05:36 +01:00
Mátyás Mustoha
c98bca6130 Canvas: added arc(). 2015-03-09 21:55:40 +01:00
Mátyás Mustoha
774cc4a93a Canvas: added lineTo(). 2015-03-02 21:00:50 +01:00
Patrick Walton
55a0ee6ec7 script: Implement enough 2D canvas support to render basic SVGs such as the tiger. 2015-02-22 22:29:58 -05:00
Edit Balint
325400dce4 Implement Canvas pixel manipulation 2015-02-22 13:41:58 -05:00
Andreas Gal
ad5671bc14 Use cleaner StrokeOptions interface introduced by https://github.com/servo/rust-azure/pull/145. 2015-02-20 14:56:23 -08:00
Ms2ger
5e999c7d40 Fix warnings in canvas. 2015-02-13 10:40:04 +01:00
Josh Matthews
446f0f447e Allow unused variables, imports, and mutable. 2015-02-09 17:41:57 -05:00
Adenilson Cavalcanti
a825e59516 Using the color helpers in CanvasPaintTask. 2015-02-05 16:27:15 -08:00