2018-03-22 20:01:38 +00:00
local Device = require ( " device " )
2013-10-18 20:38:07 +00:00
local S = require ( " ui/data/strings " )
2018-05-26 17:45:37 +00:00
local optionsutil = require ( " ui/data/optionsutil " )
2013-10-18 20:38:07 +00:00
local _ = require ( " gettext " )
2018-05-26 17:45:37 +00:00
local Screen = Device.screen
2013-04-08 14:26:54 +00:00
2013-10-16 09:06:28 +00:00
-- add multiply operator to Aa dict
local Aa = setmetatable ( { " Aa " } , {
2014-03-13 13:52:43 +00:00
__mul = function ( t , mul )
local new = { }
for i = 1 , mul do
for _ , v in ipairs ( t ) do table.insert ( new , v ) end
end
return new
end
2013-10-16 09:06:28 +00:00
} )
2013-10-18 20:38:07 +00:00
local CreOptions = {
2014-03-13 13:52:43 +00:00
prefix = ' copt ' ,
{
icon = " resources/icons/appbar.transform.rotate.right.large.png " ,
options = {
{
name = " screen_mode " ,
name_text = S.SCREEN_MODE ,
toggle = { S.PORTRAIT , S.LANDSCAPE } ,
alternate = false ,
args = { " portrait " , " landscape " } ,
default_arg = " portrait " ,
current_func = function ( ) return Screen : getScreenMode ( ) end ,
event = " ChangeScreenMode " ,
2018-05-26 17:45:37 +00:00
name_text_hold_callback = optionsutil.showValues ,
2014-03-13 13:52:43 +00:00
}
}
} ,
{
icon = " resources/icons/appbar.column.two.large.png " ,
options = {
2016-05-14 04:19:24 +00:00
{
name = " view_mode " ,
name_text = S.VIEW_MODE ,
toggle = { S.VIEW_SCROLL , S.VIEW_PAGE } ,
values = { 1 , 0 } ,
default_value = 0 ,
args = { " scroll " , " page " } ,
default_arg = " page " ,
event = " SetViewMode " ,
2018-05-26 17:45:37 +00:00
name_text_hold_callback = optionsutil.showValues ,
2018-07-04 10:08:55 +00:00
help_text = _ ( [ [ - ' scroll ' mode allows you to scroll the text like you would in a web browser ( the ' Page Overlap ' setting is only available in this mode ) .
- ' page ' mode splits the text into pages , at the most acceptable places ( page numbers and the number of pages may change when you change fonts , margins , styles , etc . ) . ] ] ) ,
2016-05-14 04:19:24 +00:00
} ,
2018-07-03 05:05:57 +00:00
{
name = " render_dpi " ,
name_text = S.ZOOM_DPI ,
toggle = { S.OFF , " 48 " , " 96¹’ ¹ " , " 167 " , " 212 " , " 300 " } ,
values = { 0 , 48 , 96 , 167 , 212 , 300 } ,
default_value = 96 ,
args = { 0 , 48 , 96 , 167 , 212 , 300 } ,
event = " SetRenderDPI " ,
name_text_hold_callback = optionsutil.showValues ,
2018-07-04 10:08:55 +00:00
help_text = _ ( [ [ Sets the DPI used to scale absolute CSS units and images :
- off : ignore absolute units ( old engine behavior ) .
- 96 ¹ ’ ¹ : at 96 DPI , 1 CSS pixel = 1 screen pixel and images are rendered at their original dimensions .
- other values scale CSS absolute units and images by a factor ( 300 DPI = x3 , 48 DPI = x0 .5 )
Using your device ' s actual DPI will ensure 1 cm in CSS actually translates to 1 cm on screen.
Note that your selected font size is not affected by this setting . ] ] ) ,
2018-07-03 05:05:57 +00:00
} ,
2014-03-13 13:52:43 +00:00
{
name = " line_spacing " ,
name_text = S.LINE_SPACING ,
2014-08-17 13:45:48 +00:00
toggle = { S.SMALL , S.MEDIUM , S.LARGE } ,
values = {
DCREREADER_CONFIG_LINE_SPACE_PERCENT_SMALL ,
DCREREADER_CONFIG_LINE_SPACE_PERCENT_MEDIUM ,
DCREREADER_CONFIG_LINE_SPACE_PERCENT_LARGE ,
} ,
default_value = DCREREADER_CONFIG_LINE_SPACE_PERCENT_MEDIUM ,
event = " SetLineSpace " ,
args = {
DCREREADER_CONFIG_LINE_SPACE_PERCENT_SMALL ,
DCREREADER_CONFIG_LINE_SPACE_PERCENT_MEDIUM ,
DCREREADER_CONFIG_LINE_SPACE_PERCENT_LARGE ,
} ,
2018-05-26 17:45:37 +00:00
name_text_hold_callback = optionsutil.showValues ,
2018-05-18 22:16:02 +00:00
-- used by showValues
name_text_suffix = " % " ,
name_text_true_values = true ,
2014-03-13 13:52:43 +00:00
} ,
{
name = " page_margins " ,
name_text = S.PAGE_MARGIN ,
toggle = { S.SMALL , S.MEDIUM , S.LARGE } ,
values = {
DCREREADER_CONFIG_MARGIN_SIZES_SMALL ,
DCREREADER_CONFIG_MARGIN_SIZES_MEDIUM ,
DCREREADER_CONFIG_MARGIN_SIZES_LARGE ,
} ,
default_value = DCREREADER_CONFIG_MARGIN_SIZES_MEDIUM ,
2014-08-17 13:45:48 +00:00
event = " SetPageMargins " ,
2014-03-13 13:52:43 +00:00
args = {
DCREREADER_CONFIG_MARGIN_SIZES_SMALL ,
DCREREADER_CONFIG_MARGIN_SIZES_MEDIUM ,
DCREREADER_CONFIG_MARGIN_SIZES_LARGE ,
} ,
2018-05-26 17:45:37 +00:00
name_text_hold_callback = optionsutil.showValuesMargins ,
2014-03-13 13:52:43 +00:00
} ,
}
} ,
{
icon = " resources/icons/appbar.text.size.large.png " ,
options = {
{
name = " font_size " ,
item_text = Aa * # DCREREADER_CONFIG_FONT_SIZES ,
item_align_center = 1.0 ,
spacing = 15 ,
item_font_size = DCREREADER_CONFIG_FONT_SIZES ,
values = DCREREADER_CONFIG_FONT_SIZES ,
default_value = DCREREADER_CONFIG_DEFAULT_FONT_SIZE ,
args = DCREREADER_CONFIG_FONT_SIZES ,
event = " SetFontSize " ,
} ,
{
name = " font_fine_tune " ,
name_text = S.FONTSIZE_FINE_TUNING ,
2018-03-22 20:01:38 +00:00
toggle = Device : isTouchDevice ( ) and { S.DECREASE , S.INCREASE } or nil ,
item_text = not Device : isTouchDevice ( ) and { S.DECREASE , S.INCREASE } or nil ,
2014-03-13 13:52:43 +00:00
event = " ChangeSize " ,
args = { " decrease " , " increase " } ,
alternate = false ,
2018-05-26 17:45:37 +00:00
name_text_hold_callback = function ( configurable , __ , prefix )
2018-05-18 22:16:02 +00:00
local opt = {
name = " font_size " ,
name_text = _ ( " Font Size " ) ,
}
2018-05-26 17:45:37 +00:00
optionsutil.showValues ( configurable , opt , prefix )
end ,
2014-03-13 13:52:43 +00:00
}
}
} ,
{
icon = " resources/icons/appbar.grade.b.large.png " ,
options = {
{
name = " font_weight " ,
name_text = S.FONT_WEIGHT ,
2014-06-04 13:54:01 +00:00
toggle = { S.REGULAR , S.BOLD } ,
values = { 0 , 1 } ,
default_value = 0 ,
args = { 0 , 1 } ,
2014-03-13 13:52:43 +00:00
event = " ToggleFontBolder " ,
2018-05-26 17:45:37 +00:00
name_text_hold_callback = optionsutil.showValues ,
2014-03-13 13:52:43 +00:00
} ,
{
name = " font_gamma " ,
name_text = S.CONTRAST ,
2018-03-11 13:54:17 +00:00
buttonprogress = true ,
default_value = 15 , -- gamma = 1.0
default_pos = 2 ,
values = { 10 , 15 , 25 , 30 , 36 , 43 , 49 , 56 } ,
2014-08-17 13:45:48 +00:00
event = " SetFontGamma " ,
2018-03-11 13:54:17 +00:00
args = { 10 , 15 , 25 , 30 , 36 , 43 , 49 , 56 } ,
-- gamma values for these indexes are:
labels = { 0.8 , 1.0 , 1.45 , 1.90 , 2.50 , 4.0 , 8.0 , 15.0 } ,
2018-05-26 17:45:37 +00:00
name_text_hold_callback = optionsutil.showValues ,
2017-09-08 15:38:51 +00:00
} ,
{
name = " font_hinting " ,
name_text = S.FONT_HINT ,
toggle = { S.OFF , S.NATIVE , S.AUTO } ,
values = { 0 , 1 , 2 } ,
default_value = 2 ,
args = { 0 , 1 , 2 } ,
event = " SetFontHinting " ,
2018-05-26 17:45:37 +00:00
name_text_hold_callback = optionsutil.showValues ,
2018-07-04 10:08:55 +00:00
help_text = _ ( [ [ Font hinting is the process by which fonts are adjusted for maximum readability on the screen ' s pixel grid.
- off : no hinting .
- native : use the font internal hinting instructions .
- auto : use FreeType ' s hinting algorithm, ignoring font instructions.]]),
2018-08-17 21:08:21 +00:00
} ,
{
name = " font_kerning " ,
name_text = S.FONT_KERNING ,
toggle = { S.OFF , S.FAST , S.ENHANCED } ,
values = { 0 , 1 , 2 } ,
default_value = 1 ,
args = { 0 , 1 , 2 } ,
event = " SetFontKerning " ,
name_text_hold_callback = optionsutil.showValues ,
help_text = _ ( [ [ Font kerning is the process of adjusting the spacing between individual letter forms , to achieve a visually pleasing result .
- off : no kerning .
- fast : use FreeType ' s kerning implementation (no ligatures).
- enhanced : use HarfBuzz ' s kerning implementation (slower, but may support ligatures with some fonts).
( Font Hinting may need to be adjusted for the best result with either kerning implementation . ) ] ] ) ,
2018-06-30 14:55:43 +00:00
} ,
{
name = " space_condensing " ,
name_text = S.WORD_GAP ,
toggle = { S.SMALL , S.MEDIUM , S.LARGE } ,
2018-07-03 13:29:04 +00:00
values = {
DCREREADER_CONFIG_WORD_GAP_SMALL ,
DCREREADER_CONFIG_WORD_GAP_MEDIUM ,
DCREREADER_CONFIG_WORD_GAP_LARGE ,
} ,
default_value = DCREREADER_CONFIG_WORD_GAP_MEDIUM ,
args = {
DCREREADER_CONFIG_WORD_GAP_SMALL ,
DCREREADER_CONFIG_WORD_GAP_MEDIUM ,
DCREREADER_CONFIG_WORD_GAP_LARGE ,
} ,
2018-06-30 14:55:43 +00:00
event = " SetSpaceCondensing " ,
name_text_hold_callback = optionsutil.showValues ,
-- used by showValues
name_text_suffix = " % " ,
name_text_true_values = true ,
2018-07-04 10:08:55 +00:00
help_text = _ ( [[Tells the rendering engine how much each 'space' character in the text can be reduced from its regular width to make words fit on a line (100% means no reduction).]] ) ,
2014-03-13 13:52:43 +00:00
}
}
} ,
{
icon = " resources/icons/appbar.settings.large.png " ,
options = {
{
name = " status_line " ,
name_text = S.PROGRESS_BAR ,
toggle = { S.FULL , S.MINI } ,
values = { 0 , 1 } ,
default_value = DCREREADER_PROGRESS_BAR ,
args = { 0 , 1 } ,
default_arg = DCREREADER_PROGRESS_BAR ,
event = " SetStatusLine " ,
2018-05-26 17:45:37 +00:00
name_text_hold_callback = optionsutil.showValues ,
2018-07-04 10:08:55 +00:00
help_text = _ ( [ [ - ' full ' displays a status bar at the top of the screen ( this status bar can ' t be customized).
- ' mini ' displays a status bar at the bottom of the screen , which can be toggled by tapping . The items displayed can be customized via the main menu . ] ] ) ,
2014-03-13 13:52:43 +00:00
} ,
{
name = " embedded_css " ,
name_text = S.EMBEDDED_STYLE ,
toggle = { S.ON , S.OFF } ,
values = { 1 , 0 } ,
default_value = 1 ,
args = { true , false } ,
default_arg = nil ,
event = " ToggleEmbeddedStyleSheet " ,
2018-05-26 17:45:37 +00:00
name_text_hold_callback = optionsutil.showValues ,
2018-07-04 10:08:55 +00:00
help_text = _ ( [ [ Enable or disable publisher stylesheets embedded in the book .
( Note that less radical changes can be achieved via Style Tweaks in the main menu . ) ] ] ) ,
2014-03-13 13:52:43 +00:00
} ,
2017-08-30 07:04:04 +00:00
{
name = " embedded_fonts " ,
name_text = S.EMBEDDED_FONTS ,
toggle = { S.ON , S.OFF } ,
values = { 1 , 0 } ,
default_value = 1 ,
args = { true , false } ,
default_arg = nil ,
event = " ToggleEmbeddedFonts " ,
enabled_func = function ( configurable )
2018-05-26 17:45:37 +00:00
return optionsutil.enableIfEquals ( configurable , " embedded_css " , 1 )
2017-08-30 07:04:04 +00:00
end ,
2018-05-26 17:45:37 +00:00
name_text_hold_callback = optionsutil.showValues ,
2018-07-04 10:08:55 +00:00
help_text = _ ( [ [ Enable or disable the use of the fonts embedded in the book .
( Disabling the fonts specified in the publisher stylesheets can also be achieved via Style Tweaks in the main menu . ) ] ] ) ,
2017-08-30 07:04:04 +00:00
} ,
2014-03-13 13:52:43 +00:00
} ,
} ,
2013-04-08 14:26:54 +00:00
}
2013-10-18 20:38:07 +00:00
return CreOptions