This should finish the work to make all globals to local variables.
That allows LuaJIT to properly compile things by interning the
references to the relevant parts (rather than looking up globals
all the time which stops a trace).
and there is no need to OCR word if we can extract text from
original page in reflowing mode thanks to the rect maps between
normal page and reflowed page.
Turn off "show overlap" by default since scroll mode can replace it
in most cases where "show overlap" is used. And the dimmed area often
make new users confused. It's better to leave this feature to more
advanced users.
The original menu layout needs manual dimension calculations
such as white padding for displaying page information in
footer as the title, all item contents and footer are stacked
in one VerticalGroup. Out-of-bound error(koreader/koreader-base#43)
will occur in some corner cases if we missed something in
the calculation. The patch sent in this PR invented a new
layout for menu widget in which no manual calculation is needed
for displaying the footer. And the footer will be placed well
inside the menu frame.
+--------------+
| +----------+ |
| |+--------+| |
| || Header || |
| |+--------+| |
| |+--------+| |
| || Item || |
| || Item || |
| |+--------+| |
| |(Vertical | |
| | Group) | |
| +----------+ |
| Footer |
|(OverlapGroup)|
+--------------+
Device:hasFrontlight always returned a true-like value because util.isEmulated was an integer.
Fixed this, also, used a polymorphic object design to reduce FrontLight code, and
adapted BaseFrontLight for the emulator.