Andrea Canciani
ac94a00a4d
quartz: fallback for A1 images on little endian archs
...
Quartz uses a bit ordering that is consistent with cairo on big
endian architectures, but isn't on little endian architectures.
Fixes a1-mask and large-source-roi (on little endian)
2010-05-17 22:09:06 +02:00
Andrea Canciani
f40e3b09a1
quartz-font: Silence 0x0 CGContext warning
...
Silence Quartz complaints about operations on empty contexts:
<Error>: CGContextSetFont: invalid context 0x0
<Error>: CGContextSetFontSize: invalid context 0x0
<Error>: CGContextSetTextMatrix: invalid context 0x0
<Error>: CGContextSetAlpha: invalid context 0x0
<Error>: CGContextShowGlyphsAtPoint: invalid context 0x0
2010-05-17 22:01:50 +02:00
Andrea Canciani
1687e61694
quartz-font: Conform context and antialias handling to quartz-surface
...
A8 surfaces are now kAlphaOnly surfaces in quartz-font too.
Subpixel font smoothing can be enabled.
2010-05-17 21:34:38 +02:00
Benjamin Otte
d68bbc0fe5
gl: Add missing NULL-check in non-shader code
2010-05-17 20:57:08 +02:00
Benjamin Otte
7f22372edf
gl: Get rid of src and mask argument to composite_init()
...
This was thought of as a way to detect self-painting, but it's better to
check that later in _begin() - when we check it.
2010-05-17 18:54:31 +02:00
Benjamin Otte
75f15babed
gl: Implement fill_rectangles with composite
...
Tiny performance improvement, but a lot less code.
2010-05-17 18:54:31 +02:00
Benjamin Otte
e7c5b4f79f
gl: make _set_mask() accept NULL
...
That way, it can be used to unset the mask.
2010-05-17 18:53:22 +02:00
Chris Wilson
145db7a427
gl: Check status after composite_begin
...
Skip the unnecessary work in _cairo_gl_surface_composite() if we fail
to setup the GL composite operation.
2010-05-17 12:38:16 +01:00
Chris Wilson
8695c41e80
gl: Throw a _cairo_error when detecting a GLerror
...
This allows us to easily set an breakpoint and inspect cairo's state
when we do something illegal.
2010-05-17 12:36:54 +01:00
Chris Wilson
1c18ab02c8
gl: Rename cairo_gl_shader_program_t to cairo_gl_shader_t
...
And complete the move of the shaders into the cairo_gl_shader namespace.
Of particular note, the bind_*_to_shader become
_cairo_gl_shader_bind_*() and have proper types.
2010-05-17 11:54:28 +01:00
Chris Wilson
2325d755b0
gl: Pretty print the error GLenum.
2010-05-17 10:33:46 +01:00
Benjamin Otte
7ef1bd22de
gl: Update copyright statements
...
- add 2010 Red Hat copyright for my code
- include myself as author
- update contributors list
2010-05-17 01:16:16 +02:00
Benjamin Otte
0b69e51b52
gl: Assert that binding values to shaders never fails
...
As that would be a programming error, we can use an assert and get rid
of return values that we weren't checking anyway.
2010-05-17 01:16:16 +02:00
Benjamin Otte
0bb11e8f5b
gl: Use GL_TRIANGLES instead of GL_QUADS
...
It seems to increase performance by 1-2% on average and up to 30% in
some cases (on i965).
2010-05-17 01:16:16 +02:00
Benjamin Otte
2b771da47a
xlib: ensure variable isn't uninitialized
2010-05-17 01:16:16 +02:00
Benjamin Otte
b768a33a60
gl: Set composite->has_component_alpha based on mask
...
Previously it was set when initing the composite structure, but that
doesn't allow resetting it when a new mask is used.
2010-05-17 01:16:14 +02:00
Benjamin Otte
1cde4601df
gl: Replace _cairo_gl_operand_init() with setters for src/mask
...
Now cairo_gl_operand_t is no longer exposed outside of
cairo-gl-composite.c
2010-05-17 01:15:47 +02:00
Benjamin Otte
6575cb7a95
gl: Convert glyphs path to use cairo_gl_composite_t
2010-05-17 01:15:47 +02:00
Benjamin Otte
8937f2b4b5
gl: Require ARB_vertex_buffer_object extension unconditionally
...
<anholt> we shouldn't bother with non-vbo support. there's no
justification for a driver not supporting it.
2010-05-17 01:15:34 +02:00
Benjamin Otte
29dfd5b488
gl: Remove unused variables
2010-05-17 01:13:46 +02:00
Benjamin Otte
4144488f51
gl: Convert span renderer to use cairo_gl_composite_begin/end()
...
Adds two new APIs to the composite API:
- _cairo_gl_composite_set_mask_spans()
Tells the composite renderer to use the color values for spans.
- _cairo_gl_composite_set_clip_region()
Tells the composite renderer to use GL_SCISSORS_TEST to clip when
drawing. This function is very unperformant, so if it can be avoided,
it probably shouldn't be used.
2010-05-17 01:13:46 +02:00
Benjamin Otte
6e81d85e36
gl: Change _cairo_gl_composite_emit_rect()
...
Two changes:
- The function now takes x1/y1,x2/y2 instead of x,y,width,height
- The function takes a color uint32_t. This will be used by spans.
2010-05-17 01:13:46 +02:00
Benjamin Otte
f8398cc2d8
gl: remove unused variables from span renderer
2010-05-17 01:13:46 +02:00
Benjamin Otte
f5c5077def
gl: Support component alpha in gl_composite_t
...
Use that to get rid of cairo_gl_surface_composite_component_alpha()
2010-05-17 01:13:46 +02:00
Benjamin Otte
88c118f891
gl: Implement _composite_emit_rect() and _composite_end()
...
And use it in cairo_gl_surface_composite()
2010-05-17 01:13:46 +02:00
Benjamin Otte
b96735f7b4
gl: Add _cairo_gl_composite_begin() function
...
This is the first step at adding the following function set:
_cairo_gl_composite_begin()
_cairo_gl_composite_emit_*()
_cairo_gl_composite_end()
which will take care of proiding a unified model for emitting vertexes
using vbos instead of the 5 different methods we currently have.
2010-05-17 01:13:46 +02:00
Benjamin Otte
211a8b8234
gl: make _cairo_operand_destroy private
2010-05-17 01:13:46 +02:00
Benjamin Otte
bf1060252a
gl: make show_glyphs use the cairo_composite_t API
2010-05-17 01:13:46 +02:00
Benjamin Otte
948290de12
gl: Make the span renderer use the new composite APIs
2010-05-17 01:13:46 +02:00
Benjamin Otte
7ad8c3b456
gl: Move composite code into own file
...
This allows designing a cleaner interface for cairo_composite_t as there
will not be static functions that get called outside of the "published"
interfaces.
2010-05-17 01:13:46 +02:00
Benjamin Otte
3ff32b00f0
gl: cairo_gl_compsite_setup_t => cairo_gl_composite_t
2010-05-17 01:13:46 +02:00
Benjamin Otte
c16edee26f
gl: use glBlendFuncSeparate()
...
This way we can treat alpha-only textures correctly and don't have to
emit different shaders for it. Also gets rid of
GL_OPERAND_TEXTURE_ALPHA.
2010-05-17 01:13:46 +02:00
Benjamin Otte
4f5221a834
gl: acquire device manually in finish, as the default way will error
...
We'll get CAIRO_STATUS_DEVICE_FINISHED, d'oh
2010-05-17 01:13:46 +02:00
Benjamin Otte
3f63004449
gl: Put shaders into a cache
...
This allows to grow the complexity of the shaders without enlarging the
static array to unreasonable sizes.
The cache size of 64 is essentially random.
2010-05-17 01:13:46 +02:00
Benjamin Otte
08b04caf52
gl: Add cairo_gl_composite_setup_init/fini() functions
...
Simplifies the main code paths, and can be extended to do dest copies.
2010-05-17 01:13:46 +02:00
Benjamin Otte
aa14df0db5
gl: move operator check
...
component alpha compositing checks the operator itself
2010-05-17 01:13:46 +02:00
Benjamin Otte
a3ee0a7f11
gl: Programmatically generate fragment shaders
2010-05-17 01:13:46 +02:00
Benjamin Otte
fe43b13052
gl: Automatically generate the vertex shader source
...
The idea is being able to generate shaders from the given input
on-demand. This allows creating more advanced shaders, such as those
that include the destination (for self-painting and
unsupported-by-blending operator) or painting images in weird formats
(extra translation step in shader, think YUV).
2010-05-17 01:13:46 +02:00
Benjamin Otte
405eee07ad
gl: Get rid of cairo_gl_shader_source/mask_t
...
Use the cairo_gl_operand_type_t instead. Those enums are pretty much
identical.
2010-05-17 01:13:46 +02:00
Benjamin Otte
5149bb87d7
gl: s/_cairo_gl_set_destination/_cairo_gl_context_set_destination/
...
It's an operation on the context, so name it accordingly
2010-05-17 01:13:46 +02:00
Benjamin Otte
9f34e403f3
gl: Share vertex shaders
...
Previously, we created a new vertex shader for every shader program we
used. Now the code shares identical vertex shaders between programs.
2010-05-17 01:13:46 +02:00
Adrian Johnson
562c323ae8
cff: Use correct glyph advance when subsetting cff fonts
...
Previously the glyph advance in font units was used for the widths in
the PDF font dictionary. This only works for cff fonts that use a
[0.001 0 0 0.001 0 0] font matrix.
2010-05-16 20:52:31 +09:30
Adrian Johnson
edcefa87ed
type1: Use correct glyph advance when subsetting type 1 fonts
...
Previously the glyph advance in font units was used for the widths in
the PDF font dictionary. This only works for Type 1 fonts that use a
[0.001 0 0 0.001 0 0] font matrix.
https://bugs.freedesktop.org/show_bug.cgi?id=28061
2010-05-16 20:52:31 +09:30
Chris Wilson
34fd094b3b
rtree: Actually pin the node when pinning.
...
How embarrassing.
2010-05-16 10:23:30 +01:00
Chris Wilson
605be31823
cairo: Missing private markup for _cairo_format_to_pixman_format
2010-05-16 10:11:02 +01:00
Chris Wilson
c3df7e6d58
rtree: Replace undeclared TRUE/FALSE with 1/0
2010-05-16 09:54:04 +01:00
Benjamin Otte
a9d821b7a0
gl: gl surfaces are only similar when they share the same device
...
Fixes gl-surface-source test for gl target
2010-05-14 21:07:03 +02:00
Richard Procter
435329a70f
Bug 28100 - Font option CAIRO_HINT_METRICS_OFF unhonoured on win32
...
Fix typo. Ouch!
2010-05-14 14:48:46 -04:00
Benjamin Otte
3a550eb225
gl: Remove gradient optimizations
...
These optimizations are done in cairo-gstate.c these days.
2010-05-14 15:57:58 +02:00
Benjamin Otte
3b1c0a4bd6
fallback: Remove span renderer paths
...
Those paths were broken, as they didn't properly translate the polygon
to the destination size. And rather than adding lots of code that allows
translation, it's easier to just delete this code.
Note that the only user of the code was the GL backend anyway.
2010-05-14 15:56:17 +02:00