scroll_engine: Change header inclusion

Change-Id: I033db3d3a838f0a950ce7707de6a0cd4b2595d93
lcd-common/scroll_engine: Introduce lcd_putsxy_scroll_func().

This function supports installing a custom scroll callback. This will be
called when the scrollengine redraws the line. It allows to draw extended
styles (or anything your can possible imagine) along with the text.

It is also strictly pixel-based, the first pixel-based function that supports
scrolling.

Change-Id: I57f81ac7b3d08b877aea4cb8afa882f175ebcdfc
lcd-16bit: Introduce lcd_gradient_fillrect_part().

It is similar to lcd_gradient_fillrect(), except that it only draws a part
of the complete gradient. This can be used to draw only the bottom half
of a full gradient.

Change-Id: Ib47cc5237f6966e35ba07988bddbb00fd97adf96
lcd-charcell: Add set_drawmode() wrapper to multi-screen API.

Change-Id: Idb6477aca8b19cb346ba2c2f5b91074e4679b0dd
lcd-charcell: Correct get_icon_width() stub, everything is 1 char wide.

Change-Id: I2a76c306be8f11827cb8d1f12641d710f49274aa
icons: Remove automatic left padding if x == 0.

Since x is viewport-relative the icon isn't necessarily placed at the physical
display boundaries so that the padding isn't always useful. In fact it does
more harm if one wants to place an icon exactly at 0 of a (non-default)
viewport.

Calling code looks still mostly fine. I've only modified list drawer to include
the padding in the call-site.

Change-Id: I6b16b3d4377c3553234667b79837adde10e0edf2
icons: Provide accessors to the icon format (mono or native).

This is needed by the upcoming put_line() api to apply different drawmodes
depending on the format.

Change-Id: I626a7369a6e75c9c46af1ca5e4f1a9d401899b68
Introduce put_line().

This function is a fully-fletched, high-level pixel-based line printer, that
combines functionality of several firmware and list functions. It can
draw spacing, icons and text in a single call, in any order and each multiple
times. It can also apply line decorations at the same time.

It features printf-like semantics by accepting a format string that contain
format tags as well as inline text.

It's accessible directly, but also through the multi-screen api for plugins.

Change-Id: I70f5a77bbf4b0252521f2e47ead377b9d6d29b54
lists: Adapt put_line().

This enables removing large portions of code, simplifiyng the drawing routine.
All of the removed code is functionaltiy now available through put_line().

Change-Id: Ib8e61772134189a8c3c6d22345c0b45e912bea76
skin_engine: Adapt put_line().

This allows for code unification and removal of a workaround (STYLE_XY_PIXELS).

Change-Id: Ie92d377414cad943cdb06976af10b4f315f32710
splitedit: Adapt put_line().

This plugin had a (broken) poor-mans list implementation which can be
better achieved through put_line().

Change-Id: I4ba92ba3a01b84a273b3f0a5d067b24c622ddc9e
test_gfx: Add benchmark for put_line().

Change-Id: I94cd5cec5ce169a4ddb60fcb3c09e2ffb50a3401
lcd-common/scroll_engine: Remove unused functions lcd_puts_scroll_offset() and lcd_puts_scroll_style_offset().

Change-Id: Ia84ae88020d06a1cb634942ab5e635fd5d10ac66
lcd-common: Remove unused function lcd_puts_offset().

Change-Id: I39749bf3db915e5a8ddb6e6f25eb201ea0aaf981
lcd-common: Remove unused function lcd_puts_style().

Change-Id: Id2c64c116f79b8e61a7af49b9072b3e884ffb455
lcd-common: Remove unused function lcd_puts_style_offset().

Change-Id: I24da23d132f933fe647416dc58e8f50879715423
lcd-common/scroll_engine: Remove unused functions lcd_puts_scroll_style().

Change-Id: Ia4f943b3738ab6e66b0e3f1507c629b36d7eba94
lcd-common/scroll_engine: Remove unused functions lcd_puts_style_xyoffset() and lcd_puts_scroll_style_xyoffset().

With this functions removed there is no exported function in firmware left
that draws line decorations. Also no function supports specifying an y-offset
anymore (was used for pixel accurate positioning of otherwise strictly line-based
API calls).

Both should be handled in apps/ now.

Change-Id: Iba4b28ccc6e686c7db63e34b51ad4badae983fce
lcd-common: Remove support for custom line heights from viewport.

Since scrolling is now pixel-based this is not necessary anymore. custom line
height is handled by put_line() but can also possible to implement with
lcd_puts_scroll_func().

Change-Id: Iee9b12bf99afac93d95d2a1a6f5d5b4db237b21c
lcd-common: Remove support for specifying y_offset from lcd_puts* functions.

This main (and only) purpose for it was to adjust the pixel position of the text
in otherwise linebased (scrolling) functions. With pixel-based scrolling
this isnt necessary anymore.

Change-Id: I2a45b8ca6a3f8f50aa2f6630201b30ce9ddfe043