<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rockbox/firmware/export/scroll_engine.h, branch master</title>
<subtitle>My Rockbox tree</subtitle>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/'/>
<entry>
<title>put_line/scrolling: Make the scroll engine inform custom scrollers about start/stop of scrolling.</title>
<updated>2014-01-12T00:34:06+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2014-01-12T00:30:26+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=488a1b983e1c2fac14de25aa781caf12628e53c8'/>
<id>488a1b983e1c2fac14de25aa781caf12628e53c8</id>
<content type='text'>
With the new lcd_putsxy_scroll_func() code can register custom scroll functions
(put_line() makes use of that). In order for the custom scroller to be able
to properly manage its userdata pointer (set via struct scrollinfo::userdata)
the scroll engine must inform the scroller about start and stop of scrolling.

To inform about start the lcd_scroll_* functions now return true when
the line will scroll. To inform about stop the scroll engine calls into the
scroller one last time, with the text set to NULL.

put_line() can use this to release the userdata registered per scrolling line
so that it can be recycled.

This fixes that some scrolling lines became glitchy after some time because
the userdata was recycled too early.

Change-Id: Iff0a6ce2a4f9ae2bada1b8e62f4f5950224942a9
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With the new lcd_putsxy_scroll_func() code can register custom scroll functions
(put_line() makes use of that). In order for the custom scroller to be able
to properly manage its userdata pointer (set via struct scrollinfo::userdata)
the scroll engine must inform the scroller about start and stop of scrolling.

To inform about start the lcd_scroll_* functions now return true when
the line will scroll. To inform about stop the scroll engine calls into the
scroller one last time, with the text set to NULL.

put_line() can use this to release the userdata registered per scrolling line
so that it can be recycled.

This fixes that some scrolling lines became glitchy after some time because
the userdata was recycled too early.

Change-Id: Iff0a6ce2a4f9ae2bada1b8e62f4f5950224942a9
</pre>
</div>
</content>
</entry>
<entry>
<title>scroll engine: Factor out renderer function so it can be called by lcd code.</title>
<updated>2014-01-11T18:17:58+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2014-01-11T18:17:58+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=26b317e094a37c43d23e661cf99fe858c159f1b2'/>
<id>26b317e094a37c43d23e661cf99fe858c159f1b2</id>
<content type='text'>
This is used by lcd_puts_scroll_worker() to render the line immediately
instead of waiting for the next scroll tick when only the text was updated.
Previously lcd_puts_scroll_worker() did not render anything in this case
which could lead to visible blinking.

This fixes blinking scrolling lines with dynamic text in the skin engine.

Change-Id: I475bde8c8eb7c92f505e3c5ecf4d32bb90690536
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is used by lcd_puts_scroll_worker() to render the line immediately
instead of waiting for the next scroll tick when only the text was updated.
Previously lcd_puts_scroll_worker() did not render anything in this case
which could lead to visible blinking.

This fixes blinking scrolling lines with dynamic text in the skin engine.

Change-Id: I475bde8c8eb7c92f505e3c5ecf4d32bb90690536
</pre>
</div>
</content>
</entry>
<entry>
<title>lcd-common: Remove direct style (line decorations) from lcd-puts* functions.</title>
<updated>2014-01-07T13:13:48+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2013-04-16T21:47:17+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=36e469db8bb7789c89ff642b51c1471669b830f5'/>
<id>36e469db8bb7789c89ff642b51c1471669b830f5</id>
<content type='text'>
This logic is moved into apps (put_line()) which can better handle line
decorations with respect to scrolling, mulitline and other complications.

Firmware doesn't need this. The remaining drawing function know only one style,
that is foreground on background/backdrop (changing drawmode is still supported).

Change-Id: I707060edc388a7d723a7d09b0cf5cbda6ec56708
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This logic is moved into apps (put_line()) which can better handle line
decorations with respect to scrolling, mulitline and other complications.

Firmware doesn't need this. The remaining drawing function know only one style,
that is foreground on background/backdrop (changing drawmode is still supported).

Change-Id: I707060edc388a7d723a7d09b0cf5cbda6ec56708
</pre>
</div>
</content>
</entry>
<entry>
<title>scroll_engine: Change header inclusion</title>
<updated>2014-01-07T10:36:00+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2013-12-20T22:34:28+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=b8505222c02a7a5a19571c3d4577f3b473cb8558'/>
<id>b8505222c02a7a5a19571c3d4577f3b473cb8558</id>
<content type='text'>
Change-Id: I033db3d3a838f0a950ce7707de6a0cd4b2595d93
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I033db3d3a838f0a950ce7707de6a0cd4b2595d93
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix reds. Also apply the new scrolling to lcd charcell (this even uncovered an</title>
<updated>2013-12-14T23:38:48+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2013-12-14T23:38:48+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=c72b454286864d728de676ebdf92288dd04ace45'/>
<id>c72b454286864d728de676ebdf92288dd04ace45</id>
<content type='text'>
error).

Change-Id: I29243bb36b6cec1471bd6c0afc64e00547a68c50
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
error).

Change-Id: I29243bb36b6cec1471bd6c0afc64e00547a68c50
</pre>
</div>
</content>
</entry>
<entry>
<title>scroll_engine: Major rework to support pixel-based scrolling and scroll callbacks.</title>
<updated>2013-12-14T22:11:31+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2013-01-31T06:24:19+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=50eb528bc1f9d2f7b7260eff8b85a5ed5b96e679'/>
<id>50eb528bc1f9d2f7b7260eff8b85a5ed5b96e679</id>
<content type='text'>
Much of the scrolling work is moved from lcd-bitmap-common to lcd-scroll.c,
a small scroll callback routine remains. This callback can potentially be
overridden by more extensive scrollers.

The callback also gets fed with pixel-based scrolling information, which
finally removes the strict line-based nature of the scroll engine. Along with
this is the change from scroll_stop_viewport_line() to scroll_stop_viewport_rect()
which works on a pixel-based rectangle instead of lines.

The ultimate goal is to move most of the scroll work to apps, which can
much better decide which line decorations to apply etc. This work is laying
the ground work.

Change-Id: I3b2885cf7d8696ddd9253d5a9a73318d3d42831a
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Much of the scrolling work is moved from lcd-bitmap-common to lcd-scroll.c,
a small scroll callback routine remains. This callback can potentially be
overridden by more extensive scrollers.

The callback also gets fed with pixel-based scrolling information, which
finally removes the strict line-based nature of the scroll engine. Along with
this is the change from scroll_stop_viewport_line() to scroll_stop_viewport_rect()
which works on a pixel-based rectangle instead of lines.

The ultimate goal is to move most of the scroll work to apps, which can
much better decide which line decorations to apply etc. This work is laying
the ground work.

Change-Id: I3b2885cf7d8696ddd9253d5a9a73318d3d42831a
</pre>
</div>
</content>
</entry>
<entry>
<title>scroll_engine: Rename scroll_stop* functions to be more consistent with the lcd api.</title>
<updated>2013-12-14T22:11:30+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2013-04-03T14:33:23+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=1c5d0b41eebdb4f8c627b1a0e5f7b699f0b08fb8'/>
<id>1c5d0b41eebdb4f8c627b1a0e5f7b699f0b08fb8</id>
<content type='text'>
Change-Id: I8ada10b96bfb628cca0331689e8b936ae47c7e1c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I8ada10b96bfb628cca0331689e8b936ae47c7e1c
</pre>
</div>
</content>
</entry>
<entry>
<title>Add more INIT_ATTR and add config.h includes to header files with INIT_ATTR.</title>
<updated>2011-12-19T20:12:52+00:00</updated>
<author>
<name>Boris Gjenero</name>
<email>dreamlayers@rockbox.org</email>
</author>
<published>2011-12-19T20:12:52+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=fdc29d0ea4fbdd2cc1509a53122be7ec85cdb432'/>
<id>fdc29d0ea4fbdd2cc1509a53122be7ec85cdb432</id>
<content type='text'>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31370 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31370 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>Pixel-accurate (vertical) list scrolling for touchscreen targets.</title>
<updated>2010-10-06T12:46:42+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2010-10-06T12:46:42+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=d9d0b4dd20c440b111930bccd87d29999299c1b1'/>
<id>d9d0b4dd20c440b111930bccd87d29999299c1b1</id>
<content type='text'>
Looks much smoother now as you don't scroll by whole lines anymore.
Add some functions lcd driver to enable the line based scrolling engine to draw the lines with a pixel-based y-offset.
This should also allow for a sensible kinetic scrolling mechanism (still a todo).

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28214 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Looks much smoother now as you don't scroll by whole lines anymore.
Add some functions lcd driver to enable the line based scrolling engine to draw the lines with a pixel-based y-offset.
This should also allow for a sensible kinetic scrolling mechanism (still a todo).

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28214 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>FS#10756 - Free unused init code</title>
<updated>2010-03-03T23:20:32+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2010-03-03T23:20:32+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=f8edc325896c9c24d7f32f4861a0b0d2a8b9f4cd'/>
<id>f8edc325896c9c24d7f32f4861a0b0d2a8b9f4cd</id>
<content type='text'>
Introduce a new .init section for initialisation code, so that it can be copied to an area which is later overwritten before calling. The stack/bss can then overwrite that code, effectively freeing the code size that the initialisation routines need. Gives a few kB ram usage back.
Only implemented for PP and as3525 so far. More targets could be added, as well as more functions.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25013 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Introduce a new .init section for initialisation code, so that it can be copied to an area which is later overwritten before calling. The stack/bss can then overwrite that code, effectively freeing the code size that the initialisation routines need. Gives a few kB ram usage back.
Only implemented for PP and as3525 so far. More targets could be added, as well as more functions.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25013 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
</feed>
