Alexander Larsson
dcef400d30
Fix uninitilized memory read in stroke_fill_spans()
...
y2 was not initialized
2010-03-18 10:40:18 +01:00
Alexander Larsson
da21e89daa
Use nearest scaling for DRAW_ALPHA_BLEND since this is what win32 needs
...
DrvAlphaBlend is the only current user of DRAW_ALPHA_BLEND, and its
defined to do nearest (COLORONCOLOR) scaling, not bilinear.
2010-03-17 20:08:59 +01:00
Alexander Larsson
6664c12278
Fix up empty region checks in canvas operations
...
We rely on not passing on empty rects to the drawing operations by
checking for empty regions and exiting early. However the checks
were wrongly using pixman_region32_n_rects(region) == 0, whereas
we should be using pixman_region32_not_empty().
2010-03-17 10:06:40 +01:00
Alexander Larsson
af4672326b
Use the spice allocator in common/
2010-03-11 12:14:08 +01:00
Alexander Larsson
440ac41cf1
New memory allocators that exit on OOM and handle multiplication overflow
...
Every place that does a regular malloc/calloc and aborts on failure
should use spice_malloc/spice_mallo0 instead, which is leaner and cleaner.
Allocations of dynamically sized arrays can use g_malloc_n or g_new etc
which correctly handle multiplication overflow if some of the arguments
are not trusted.
2010-03-11 12:13:59 +01:00
Alexander Larsson
0230541af5
Define GL_GLEXT_PROTOTYPES in CFLAGS not in random places in the source
2010-03-10 21:28:47 +01:00
Alexander Larsson
454f44470d
Update gdi canvas wrt latest changes
...
ALIGN -> SPICE_ALIGN
2010-03-09 16:01:12 +01:00
Alexander Larsson
90c5766caf
Use macros from <spice/macros.h> rather than duplicate them
2010-03-09 11:10:00 +01:00
Alexander Larsson
5cb99e12c6
Move draw_rop3 to canvas_base
2010-03-08 19:45:28 +01:00
Alexander Larsson
a0c6344c6a
Move canvas_draw_stroke to canvas_base
2010-03-08 19:45:28 +01:00
Alexander Larsson
e00bce8e25
Move most of the shared draw_xyz() methods from CairoCanvas to CanvasBase
...
This adds a set of virtual methods for low-level operations. A subclass
can choose to implement those and let the default CanvasBase implementations
handle the highlevel stuff.
2010-03-08 19:45:28 +01:00
Alexander Larsson
18606d99ea
Move canvas_region and group_start/end to canvas_base
2010-03-08 19:45:28 +01:00
Alexander Larsson
f8217d8b96
Move virtualization of canvas drawing into common/canvas_base
...
Instead of having two virtualizations of the canvas we push the
virtualization into the canvas code itself. This not only avoids
the duplication of this code, it also makes the exposed API for the
canvas much smaller (in terms of exported API).
It also lets us use the virtualization to implement basic support
for operations in canvas_base which is then overridden by each canvas
implementation.
2010-03-08 19:45:28 +01:00
Alexander Larsson
05697e502d
Make virt mapping an interface
2010-03-08 19:45:28 +01:00
Alexander Larsson
f7a77f9881
Make glz_decoder non-optional canvas_base in canvas constructors
...
It can still be NULL, but we simplify the headers by always including it.
There is no practical performance difference here.
2010-03-08 19:45:27 +01:00
Alexander Larsson
c0fdcd1a10
Make canvas Glz decoder integration nicer
...
We use a dynamic interface similar to e.g. SpiceImageCache instead
of passing both function and opaque
2010-03-08 19:45:27 +01:00
Alexander Larsson
04b35fe7ff
Fix colorkeying in pixman_utils.c
...
We were masking out the alpha bit in the key color not int
the source pixel, so colorkeying didn't work when the high byte
was != 0. For instance in the shutdown dialog in XP.
2010-03-08 19:41:34 +01:00
Larsson@.(none)
c28169976a
Make gdi canvas build in the new pixman world
2010-03-01 15:12:35 +01:00
Larsson@.(none)
98f7d96336
Always include spice/types.h before pixman so standard int types exist
2010-03-01 15:12:33 +01:00
Larsson@.(none)
ea92e6c063
Fix warnings from visual studio compiler
2010-03-01 15:12:32 +01:00
Larsson@.(none)
bb77edf643
Have only one copy of ROUND macro and cast to int explicitly
2010-03-01 15:12:30 +01:00
Alexander Larsson
e995040b1e
Remove last cairo use from canvas_base
2010-02-23 22:52:06 +01:00
Alexander Larsson
7992266ccf
Remove cairo_t from cairo canvas
2010-02-23 22:52:06 +01:00
Alexander Larsson
b5693ca0fc
Covert cairo canvas put_image() to pixman
2010-02-23 22:52:06 +01:00
Alexander Larsson
98dde80ed3
Replace custom region implementation with pixman_region32_t
...
pixman_region32_t is an efficient well tested region implementation (its
the one used in X) that we already depend on via pixman and use in
some places. No need to have a custom region implementation.
2010-02-23 22:52:06 +01:00
Alexander Larsson
8f912e4917
Convert cairo canvas clear() to pixman
2010-02-23 22:52:06 +01:00
Alexander Larsson
d430a6c79b
Convert cairo canvas group_start/end to pixman
2010-02-23 22:52:06 +01:00
Alexander Larsson
ceff9ca642
Convert cairo canvas read_bits() to pixman
2010-02-23 22:52:06 +01:00
Alexander Larsson
f7c071514b
Remove unused cairo helper functions
2010-02-23 22:52:06 +01:00
Alexander Larsson
23d4fdbe8a
Convert cairo canvas to use pixman for draw_stroke
2010-02-23 22:52:06 +01:00
Alexander Larsson
e57cfae896
Convert cairo canvas draw_transparent to use pixman
2010-02-23 22:52:06 +01:00
Alexander Larsson
f32185a01d
Convert cairo canvas draw_rop3 to using pixman
2010-02-23 22:52:05 +01:00
Alexander Larsson
3b2f1fcb22
Convert draw_blackness/whiteness/invers to using pixman
2010-02-23 22:52:05 +01:00
Alexander Larsson
974c662ae4
Convert cairo canvas alpha_blend to using pixman
2010-02-23 22:52:05 +01:00
Alexander Larsson
824496405a
Convert cairo canvas draw_text to using pixman
2010-02-23 22:52:05 +01:00
Alexander Larsson
bf0d038e76
Convert cairo canvas copy bits to pixman
2010-02-23 22:52:05 +01:00
Alexander Larsson
7fe1df4e14
Convert cairo canvas draw_copy() to using pixman
...
This is just identical to draw_blend().
2010-02-23 22:52:05 +01:00
Alexander Larsson
eff0aa0298
Convert cairo canvas draw_blend() to using pixman
2010-02-23 22:52:05 +01:00
Alexander Larsson
0cb87a507c
Convert cairo canvas draw_opaque() to using pixman
2010-02-23 22:52:05 +01:00
Alexander Larsson
864881c318
Convert cairo canvas draw_fill() to using pixman
2010-02-23 22:52:05 +01:00
Alexander Larsson
a7ceb98ea1
Add possibility to not invert bitmask in canvas_get_mask()
...
This allows the pixman implementation to instead invert the (generally
smaller) region instead of duplicating the bitmap to invert it.
2010-02-23 22:52:05 +01:00
Alexander Larsson
16780a7b81
Use pixman_image_t instead of cairo_surface_t as the generic pixman container
...
This allows us to use the simpler dependency of pixman outside of the
cairo backend, and it later lets us move the cairo backend to using
pixman only.
2010-02-23 22:52:01 +01:00
Alexander Larsson
0b0342ee7e
Turn image and palette cache into c style dynamic interface
...
Instead of passing a bunch of function pointer and an opaque
pointer we make a real type and add a vtable pointer to it.
This means we can simplify all the canvas constructors, etc.
2010-02-23 14:43:20 +01:00
Alexander Larsson
79d8c5c6a4
Add pixman_image_t referencing the cairo_canvas bits
...
This references the same data as the cairo surface and can be used
for drawing to the surface using direct pixman calls instead.
2010-02-23 14:43:20 +01:00
Alexander Larsson
60a189f250
Add line rasterizer
2010-02-23 14:43:20 +01:00
Alexander Larsson
9091e763a8
Add pixman utilities
...
This includes:
* pixman region from SpiceRects
* rop2 enum
* solid fill
* solid fill with rop
* tiled fill
* tiled fill with rop
* blit
* blit with rop
* copy rect
2010-02-23 14:43:15 +01:00
Alexander Larsson
2233dd02a1
Add emacs settings for indent according to spice styleguide
2010-02-23 11:52:30 +01:00
Alexander Larsson
39be5a8b13
Use standard int types and <spice/types.h>
2010-02-04 18:49:05 +01:00
Alexander Larsson
16540e9953
Use the new header names
...
I just ran:
find -name "*.[ch]" | xargs sed -i -f ../spice-protocol/includes.sed
find -name "*.cpp" | xargs sed -i -f ../spice-protocol/includes.sed
2010-02-04 18:49:05 +01:00
Alexander Larsson
1f51697852
Rename symbols that were changed in spice-protocol
...
This is an automatic change using:
$ find -name "*.[ch]" | xargs ../spice-protocol/rename-identifiers.sh ../spice-protocol/renames
$ find -name "*.cpp" | xargs ../spice-protocol/rename-identifiers.sh ../spice-protocol/renames
2010-02-04 18:49:00 +01:00