Sam Hocevar
9ee841240f
Implement conio.h's getche() and move cursor to top right corner after
a call to clrscr().
pirms 15 gadiem
Sam Hocevar
823b59a7fa
Make caca_printf(), caca_vprintf() and caca_put_str() return the number of
printed cells instead of always returning 0. This is handy if we want to
advance a cursor after each printf() call.
pirms 15 gadiem
Sam Hocevar
962f47b906
Implement conio.h's kbhit().
pirms 15 gadiem
Sam Hocevar
ea8d3086d6
Add sound(), nosound() and delay() to the conio.h emulation. Even though
they're not actually from that header, they're often used together.
pirms 15 gadiem
Pascal Terjan
52a0decd07
* Fix a segfault in rotate_180 on 0 sized canvas
pirms 15 gadiem
Sam Hocevar
104c5a0c5b
Start implementing a full <conio.h> replacement with a libcaca backend.
pirms 15 gadiem
Sam Hocevar
1f5518f842
Rename caca_get_cursor_x() and caca_get_cursor_y() to caca_wherex() and
caca_wherey(), in order to match the old <conio.h> naming scheme.
pirms 15 gadiem
Sam Hocevar
4648ab11aa
Implement caca_vprintf() to allow third-party variadic functions to call us.
pirms 15 gadiem
Sam Hocevar
60b44cc5be
Show how we could optimise dirty rectangle handling in a box fill. Disabled
for now because it does not work with fullwidth characters.
pirms 15 gadiem
Sam Hocevar
f5598e7b4f
I forgot to initialise dirty_disabled in the canvas constructor.
pirms 15 gadiem
Sam Hocevar
5269cad56c
Allow to temporarily disable dirty rectangle handling. This allows for huge
speedups when the calling application knows the dirty rectangle covered by
a complex operation.
pirms 15 gadiem
Sam Hocevar
644ee4a78a
Coding style: remove tabs and trailing spaces.
pirms 15 gadiem
Sam Hocevar
4f7081153e
Do not add a dirty rectangle at the cursor's position. It's up to the
display driver to clean up its shit. Fixed X11 driver accordingly.
pirms 15 gadiem
Sam Hocevar
69d8bbeb08
More complex dirty rectangle merging strategy. It's a lot slower in some
cases, but that can be fixed.
pirms 15 gadiem
Sam Hocevar
ed360faabe
Add a comment to the ncurses driver to remember fix the GCC warning.
pirms 15 gadiem
Sam Hocevar
33d2bc2092
Update the Win32 and Win64 ports.
pirms 15 gadiem
Pascal Terjan
bd1c1cdda6
* Inform code reader that current algorithm is wrong
pirms 15 gadiem
Sam Hocevar
b0a88ddd01
Do not smooth the render time; the calling application can do it.
pirms 15 gadiem
Sam Hocevar
6b22ab776c
Add a null driver that does absolutely nothing.
pirms 15 gadiem
Sam Hocevar
1d60711ac4
Mark the whole canvas as dirty when a dirty rectangle aware driver is
attached to it.
pirms 15 gadiem
Sam Hocevar
10719139e6
Store dirty rectangles in a structure list. For now there is still only
one dirty rectangle, but this is the first step to improvement.
pirms 15 gadiem
Pascal Terjan
4bd79baf96
* Add dirty rectangles when moving cursor
pirms 15 gadiem
Pascal Terjan
1f79729288
* When blitting, only add dirty rectangles on changed
lines, or on changed chars if we have a mask
pirms 15 gadiem
Sam Hocevar
99a266a83b
Fix caca_get_char() documentation, courtesy of Romain Bignon.
pirms 15 gadiem
Pascal Terjan
3e1a1d2679
* Add rotated epsilon
pirms 15 gadiem
Pascal Terjan
de5be87d0e
Don't redraw background for more than the dirty rectangle in x11 driver, we will not redraw foreground there
pirms 15 gadiem
Sam Hocevar
162613b630
caca_put_char(): only add a dirty rectangle if the paster character is
different from what was already there.
pirms 15 gadiem
Pascal Terjan
ac9b1074b4
Fix limits settings in area export
pirms 15 gadiem
Sam Hocevar
d3ef2bbecd
Add caca_export_area_to_memory() to export only a selected part of the
current canvas. This is useful to export dirty rectangles. Accordingly,
add caca_import_area_from_memory() and caca_import_area_from_file().
pirms 15 gadiem
Sam Hocevar
ea99175a2f
Change the dirty rectangle API once again so that calling applications get
a more natural (x,y,w,h) 4-tuple to handle.
pirms 15 gadiem
Sam Hocevar
11428406c1
Split import.c and export.c to create a new text.c codec file in order
to keep source files under 1,000 lines of code.
pirms 15 gadiem
Pascal Terjan
d1db2df568
Revert r3478
pirms 15 gadiem
Sam Hocevar
95811ced2d
Manually fix Visual Studio files so that builds do not spew
their crap all over the place. There is still caca-sharp/obj
that it insists on creating (reported as Connect ID 301965).
pirms 15 gadiem
Sam Hocevar
0c7fd89e3a
Add dirty rectangle support to the ncurses and VGA drivers.
pirms 15 gadiem
Sam Hocevar
42a5c2bf69
Increased the autorepeat delay in the ncurses and SLang drivers. Now that
we have dirty rectangles, fast autorepeat becomes perfectly usable.
pirms 15 gadiem
Sam Hocevar
3338776b44
Fix a few DOS compilation warnings.
pirms 15 gadiem
Sam Hocevar
222e165d21
Fix dirty rectangle handling in the X11 and SLang drivers.
pirms 15 gadiem
Pascal Terjan
33f2264bcd
Import/export dirty rectangles
pirms 15 gadiem
Sam Hocevar
1fe8a8702a
A lot of documentation updates here and there, including bugfixes dating
back to the libcucul merge.
pirms 15 gadiem
Sam Hocevar
dd48fb62b3
Optimise the dirty rectangle handling by keeping track of the number of
currently dirty rectangles.
pirms 15 gadiem
Sam Hocevar
a6b98c2518
Change the dirty rectangle API so that it can handle several rectangles. The
inner implementation still only handles one dirty rectangle, but this way
we can prepare supporting applictions for the future.
pirms 15 gadiem
Pascal Terjan
ee3018643d
Only redraw empty rectangles in slang driver
pirms 15 gadiem
Pascal Terjan
27fffbb33c
Fix empty dirty rectangles detection
pirms 15 gadiem
Pascal Terjan
44f5d172f0
* Only redraw dirty rectangle in x11 driver
pirms 15 gadiem
Sam Hocevar
1fe07f325e
Fixed libcaca and the Visual Studio solution so that it works
on Win64, including the .NET projects.
pirms 15 gadiem
Sam Hocevar
fc193a4b99
Fix a few implicit cast related warnings on VC++.
pirms 15 gadiem
Sam Hocevar
3b3bf0160d
Fix a few dirty rectangle bugs found with the unit tests. Let that be a
lesson to you: unit tests are good.
pirms 15 gadiem
Sam Hocevar
3a6f4323ec
Finish the dirty rectangle architecture. They are now reliable in the sense
that anything outside the dirty rectangle is guaranteed to be unchanged, but
we currently mark far too many cells as dirty. This must be optimised.
pirms 15 gadiem
Sam Hocevar
a69ddfcd10
Factor code from caca_draw_cp437_box() and caca_draw_thinbox_box().
pirms 15 gadiem
Sam Hocevar
a94a7e912c
Set up the architecture for dirty rectangles.
Dirty rectangles are an upcoming optimisation that will tell the output
drivers which portion of the canvas has been really modified since the
last blit.
pirms 15 gadiem