Age | Commit message (Collapse) | Author | Files | Lines |
|
are now two different things, so that you can clip drawing within
changing your coordinate system.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
|
Oops, introduced by the transform changes, I wasn't testing
msk for NULL before dereferencing it in one spot.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
|
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
|
The transform matrix is currently stored in the pixmap, though
it is only ever used when that pixmap is a source of a composite
operation (not for windows refresh, damage, etc...) thus I might
move it to twin_operand_t.
The implementation is totally sub-optimal but it gives a working
basis. As Keith suggested, we could use a bresenham-type algorithm
in the transform loop to avoiding having to transform every pixel
through the matrix. That will probably significantly improve
performances. There are also minor optimisations that can be done
in a few corners.
Also the matrix is used as a reverse transform, which can
be confusing. I'll fix it one of these days to operate on an
inverted matrix instead.
While playing with it, I noticed several issues with the existing
non-transform composite function. A bug I fixed related to masks,
but also the source clipping seems to be busted.
It adds the clip top/left to the src_x/y & msk_x/y which doesn't
make much sense to me and doesn't clip when fetching pixels, thus
forcing you to have perfectly adjusted width and height args to
twin_composite() that match the source image size (which stops
making sense when using transforms). I haven't fixed it yet but
I will do so, possibly by merging xform and simple into one
function (thus always using a temporary span buffer) or by adding
a bit of clipping code to the simple function's inner loop.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
|
|
|
Add cap styles, widget shapes, text alignment and arcs Change
circle/ellipse API.
Capture button events.
Use Lozenge shape for output
Drag lines with the mouse
drag splines with the mouse
move '1' right a bit
Convert dispatch result to boool
was mis-computing delegate and crashing when window->event was NULL
Map X button info to twin mask
draw different stuff.
|
|
Change order of timeout vs work, making work come last as that's where
redisplay occurs.
Oops. Argument order wrong in twin_pixmap_damage call
Make button italic to test
Change names of formals to match prototype
|
|
stuff
Split demos into separate files
Make drawing origin match clip rectangle.
twin_fedit Add glyph editor to CVS to preserve it
Add scalable icons
Separate 'closing' a subpath from 'finishing' a subpath; the former adds a
point back to the start while the latter just leaves the path unclosed
and prepares for a new subpath.
Eliminate locking, add clipping.
Clean up title drawing, use clipping
Eliminate locking, use dispatch stuff
|
|
including titles. Default event dispatcher does restacking and motion.
|
|
Rework snapping to correctly snap vertical and horizontal text on pixel
boundaries.
Change clock watermark
|
|
Change glyph representation to allow splines and include metrics.
Add some new helper functions.
Expose _twin_path_scurve for glyphs
Increase sin table precision.
Fix off-by-one error in y position. Lock screen while adding expose damage
Change clock appearance. Use corrected glyph metrics
|
|
Add helper functions
Lock pixmaps during drawing
Disable screen updates while applications are busy
Add threads to manage events and redisplay
Paint a clock
|
|
Move shared geometric functions to new file
Add twin_path_circle to generate pens. Fix path edge generator to handle
last subpath right.
Skip vertices which don't span a sample row
test convolutions
Add .cvsignore file
Mention path primitives
Add paths
Eliminate some unused variables.
Simple path construction
Anti-aliased polygon fill code
Change twin_bool to twin_bool_t
Append cubic Bézier splines to paths
Test paths
|
|
|