From a043d8873bd5cd4211e768af51e6ab4fb880adce Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 18 Oct 2015 00:05:56 +0800 Subject: [PATCH 1/4] use grayscale instead of RGB color space for icons --- resources/icons/appbar.align.auto.png | Bin 154 -> 166 bytes resources/icons/appbar.align.center.png | Bin 186 -> 178 bytes resources/icons/appbar.align.justify.png | Bin 156 -> 159 bytes resources/icons/appbar.align.left.png | Bin 178 -> 181 bytes resources/icons/appbar.magnify.browse.png | Bin 1583 -> 884 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/icons/appbar.align.auto.png b/resources/icons/appbar.align.auto.png index 5d63b396598ca49599b6a342397e53f8b60ec771..c59255e8bf24e620e0e047469c7134e14beb83ae 100644 GIT binary patch delta 150 zcmbQmxQuavL_G%s5ENxDiw06mN#5=*4FB8v&+G^CI14-?iy0VruY)k7lg8`{pdfpR zr>`sfeJ&n8S#IB7)^~wI=AJH&As)w*|D1P_N=TAul#1xM{x5&Suf~t|bDcURYLzXf vxC!6ScqCoanQs!|?wq+r^}vAx3=Dj;c;ln_ADo;EG=ss@)z4*}Q$iB}eHAhX delta 111 zcmZ3+IE!(Dgft^F0|P_und~D#iY>q=#Fc@G;otv1?w7tBOw^b2yvxMQ%wlP*x2g*$ zukPvM7$R{w`3FB6&yfIo2?>ceg#j8`{|y>gHwJw%n^nQPWVaMIE5oNbTP~V%-zx-a OVeoYIb6Mw<&;$T`4J0i9 diff --git a/resources/icons/appbar.align.center.png b/resources/icons/appbar.align.center.png index 6db64f3253805f88a46e09ec8e679ceb82cc8718..884ec28fa13f32f0bbb71de2b8af93197162e725 100644 GIT binary patch delta 135 zcmdnRxQTIsgg6HS5ENxDiw06mN#5=*4FB8v&+MP*AeVZdi-%9fiq)QL8BosI)5S5w z<9PC)^A1u8NfM1x5gix)kloX0fXL kTBpv=f{o_0ezdJ)V^9y`ji2i=MFV7|r>mdKI;Vst0Bb=pkpKVy delta 143 zcmdnQxQlUuga#us0|P_und~D#iY>q=#Fc@G;otv1?w7tB07V#+yxm4H+D5%eZ!5l$VhB0TyWR q*?8P9@WreD>=F_)3ImU{2{DN4ocvgl(2@u=g~8L+&t;ucLK6UXXfK=q diff --git a/resources/icons/appbar.align.justify.png b/resources/icons/appbar.align.justify.png index 7897f35ed25b5d6c43149689bf86eed03a0903c4..fda3c0e5b5f667e22611ab007a95769f13fd469b 100644 GIT binary patch delta 116 zcmbQkIG=HXgg6HS5ENxDiw06mN#5=*4FB8v&+MP*AQyC>i-%7}v$4^;0w`zT>EamT zaXk6Yc?YS4B#B0;h>q*u^Edoz{P;gZgSRa}iuc;Z04d*^#hv*kA9-DQ8ThvG#%Hgb Q#tAat)78&qol`;+0JRk;2LJ#7 delta 113 zcmbQwIEQh9ga#us0|P_und~D#iY>q=#Fc@G;otv1?w7tB07V#+yxmnFQHxdI%$#}XrhDcma{=v`2;}TFW(QrV{+I8J2#at6JE{1Kt*Zj;B(U=HS O$KdJe=d#Wzp$P!!;~={L diff --git a/resources/icons/appbar.align.left.png b/resources/icons/appbar.align.left.png index d6acd7568b8cb3e3074b90b9b9e7831aed598426..8a65b01923d1bbd80e2e60fa95f89c32e478bc06 100644 GIT binary patch delta 138 zcmdnQxRr5&gg6HS5ENxDiw06mN#5=*4FB8v&+MP*AeV8Ui-%9z$YrTWFi_6T)5S5w z<9PC);|@{@NfM1x5eg#4a;o+0yX7VR^EL%I@vah-^t!@-ZGW>pGw-}3?ELF59&z8A n@Yj0Qj}G6OdUx-Aifb7eIL`7$1TN{n0J7E7)z4*}Q$iB}%oHxF delta 135 zcmdnWxQTIsga#us0|P_und~D#iY>q=#Fc@G;qU)Hu2VcSfg+4a-tI089jvk*6ZPdn z?lLhmGimT2(ftRMGV*kB43W5;{DYs3$0eX%LPFwAVZaP6$-)4O-eazbt5P-`_j_nE lOP;;;=!>d1A{Q63Foa&+Z|L3kdM!{lgQu&X%Q~loCIF}tET;ef diff --git a/resources/icons/appbar.magnify.browse.png b/resources/icons/appbar.magnify.browse.png index 1b92e3e81f8de5e17f9967db1f51cf6179be48b9..b69a59126c99ba9cd971185ba52d1b70228d9e12 100644 GIT binary patch delta 872 zcmV-u1DE`-4D<$&8Gir(0055yE&>1m00Lr5M??VshmXv^00009a7bBm000fw000fw z0YWI7cmMzZ2XskIMF-ys3=SG8*W2v=00098Nklg|!DCdKn1zAoOGqz4+9FK?E5jta|7rNq>q66I)2orWOmN2Me0% zTuu|z&^9MiPY>tbv+eHQd$#pb;qU33-+tc@=iJ}LZ3TCFz9h`@Y>piOfL$jr_kp?Xs?|7gwLfVdeKu&T*NNjp*}T6Xp4slTv~Hx2PH|watEtWdsR+MyQR2*_ zwlo0IORIEgXU^*ZKv!jHv3AbTT?}33Z{cnL08nx5qJN(G4qUgLH_3V$L1*5{+|lK`?U{9r$%-d&Xm5vpk{Q4FHC46vQ30`>v`d`kK##g=Ccm?i*F zT%ZluM~h}%0YGcyFy|=mHUU8NL8?CH1pr*&0Q9W@fR5=Dz{@!RKr^qH+H(M4rBxm` zMUUXYJ-lM7ZtepBcX^ZK*$(6z7awm*uOhusyMM8`M1Mmd!TC@WolC7TIlxmWkq!4_ zqHj`KjmgjLOy0&{3H``owF+ZCUqGDa3^ee1qsO4tM!S`IV-motrO$stcmPd(jgRmE z!*P9~%aM~LH+HQO9w1TgAtcaYVmHC@u0{U)VD#)VOW;5q0K~q1_4^lu^2&O18ZVTQ zB4Oq+ct{2&0!9<`UXnQ=dp!jNO>zA&$pYYD`l3wr6d*ADNT&Ma)>brlEW5YzX;J?= yb3Hu=p;7=ajgl;krZLna2##PjdZOF-` delta 1550 zcmV+p2J!jy2Coc|85#lr001Qm=7|6R00v@9M??Vs0RI60puMM)kuM&9-U$Q=EIZ+O zo7?~Z1-wZ_K~!ko?OI((T5lLXW->E1-A2cc%CYtlgMk;0wcJHXQOf41dEv!wgu!+p zbmbs+_@87?lUhn_(R&8x_bF)sTo12@9#bOw#AZG_&zkWS7Hum-F*StNM zOr}bu(r7gG_4Pp0<;#~lIyxW-3WY+Oo0|lKq%|KoYIJvZcW`iUVPT=b{wRvh&dyq` zR+UPnP$+0LTGl>)!C>%TWFec)cIVEW!oANR8jVg*Pmhg_{rdIm%+l!Fw{Mk70b>-E2X|IV47X*7XAaO1`e7K=rke@910%h`ug&cNr-pLIH2 z)+T{KAeYM}5=l!-3zNxAXF0K09F0alefnfJoAI3ee*gP__wP@?WKl~1MbXEPAIIZy za4TzSy1Tm{K77bvFo3OSZf=%JrCP04CX*SBM!(;WkENBBl_yW0{EHBJ^X84$>jjKr zvG~P{7Xt$WfcF4y-n=<9G^A3g@b}u{;$k!!rJTU=@$suyuK**D$9wtm<>~94Xvb@7 z)oOKLUmreyFU`!%P)@*XHsh-gBO@ahFJ3Ha9F`lB0^|oWd#sU5{ab1(9ep_&Q8Gc@#9AdL+Idt-~h15WU};+ot+(m%Sb2`!Y~X$ zkk97}hr<~=Ue5)C!Bi?0iA3CPH-RVVI$zNQ0)ap-0$;v-AucVZ33xo7)1^fW!&od< zEEdaHlF8)Z;US8m8yg!15-1{szJLEtFiMhN6R_ap ziZlX$*REXyEC_;><2{O^_$3gDMCXRU{{B9Y)*2cbh}COZ1g>Adju&CcWU^!ecujTt z_H7EK#MP@;`FuVQ1LNc4rFox7BpeP0V0`rG5rqU8493%^PXVLBVA$W^FM+`P{Cp@B z0*w9r{nUy%ykqDkuUU)nn{H5D}*4EbA+DfgMYiVie@9zh6ugzu?i9|}J zGS^cVE?h|esH>~v@pwl^N0XD2sZFMe5dcAocpO~1) z>fD0|4@y&n#SyUE?QAwX*IIBmoOkcuB@&6O&$`|2T)V{Q^Ia|%<&`;y!_n8*cXD!n zlDGCIl}cqYnM@{wVR&n63qcSBLGVd44LY5^w6xUI(?e}-)NZ$PI2dybhJ=z1?n4clLU{27>|68i4wLzjyDR$z(b@I{Fvi2b@l4Z*MPNub)nuOG`^~ zxg1b9dwYA|zI}7KTrQU@91g=UEE0*Dnwk^}MfwX8$;e7;eSMwFsaNXpcfi0mut0J+uPfr%EMm-y1KfudcVB9T$$d3_dp;JXl!f*l)BUD#3~qI8Vv*j zTCEm_VHk!r8ja8A!zvq8{n_Je&Ontwl|b?M16%1-nVQj!3IG5A07*qoM6N<$f)KO( AmjD0& From 9654e9ce6c98e89f9ad01163ce0ce4e42ca536cb Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 18 Oct 2015 00:12:06 +0800 Subject: [PATCH 2/4] fix #1608 with touch coordinates detection Some kobo touch devices have X Y coordinates in touch events swapped. This patch provides a GUI to probe if the device needs to swap the XY. The Kobo Touch users will be directed to tap on the upper right corner of the screen and the probe will check if the X value is smaller than the Y value in the tap event. --- Makefile | 2 +- reader.lua | 5 +- resources/kobo-touch-probe.png | Bin 0 -> 3582 bytes utils/kobo_touch_proble.lua | 97 +++++++++++++++++++++++++++++++++ utils/wtest.lua | 4 +- 5 files changed, 104 insertions(+), 4 deletions(-) create mode 100644 resources/kobo-touch-probe.png create mode 100755 utils/kobo_touch_proble.lua diff --git a/Makefile b/Makefile index b31b7f261..278021d52 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,7 @@ UBUNTUTOUCH_SDL_DIR:=$(UBUNTUTOUCH_DIR)/ubuntu-touch-sdl WIN32_DIR=$(PLATFORM_DIR)/win32 # files to link from main directory -INSTALL_FILES=reader.lua frontend resources defaults.lua datastorage.lua l10n \ +INSTALL_FILES=reader.lua frontend resources defaults.lua datastorage.lua l10n utils \ git-rev README.md COPYING # for gettext diff --git a/reader.lua b/reader.lua index c4a990c0f..f508f2852 100755 --- a/reader.lua +++ b/reader.lua @@ -112,7 +112,7 @@ if G_reader_settings:readSetting("night_mode") then Screen:toggleNightMode() end --- restore kobo frontlight settings +-- restore kobo frontlight settings and probe kobo touch coordinates if Device:isKobo() then local powerd = Device:getPowerDevice() if powerd and powerd.restore_settings then @@ -121,6 +121,9 @@ if Device:isKobo() then powerd:setIntensityWithoutHW(intensity) -- powerd:setIntensity(intensity) end + if Device:getCodeName() == "trilogy" then + require("utils/kobo_touch_proble") + end end if ARGV[argidx] and ARGV[argidx] ~= "" then diff --git a/resources/kobo-touch-probe.png b/resources/kobo-touch-probe.png new file mode 100644 index 0000000000000000000000000000000000000000..9d17da287142ecde7d4535f12e2c19055d16cc7d GIT binary patch literal 3582 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 Ef{=uVqW}N^ literal 0 HcmV?d00001 diff --git a/utils/kobo_touch_proble.lua b/utils/kobo_touch_proble.lua new file mode 100755 index 000000000..227883db5 --- /dev/null +++ b/utils/kobo_touch_proble.lua @@ -0,0 +1,97 @@ +-- touch probe utility +-- usage: ./luajit util/kobo_touch_proble.lua + +require "defaults" +package.path = "common/?.lua;rocks/share/lua/5.1/?.lua;frontend/?.lua;" .. package.path +package.cpath = "common/?.so;common/?.dll;/usr/lib/lua/?.so;rocks/lib/lua/5.1/?.so;" .. package.cpath + +local DocSettings = require("docsettings") +local _ = require("gettext") + +-- read settings and check for language override +-- has to be done before requiring other files because +-- they might call gettext on load +G_reader_settings = DocSettings:open(".reader") +local lang_locale = G_reader_settings:readSetting("language") +if lang_locale then + _.changeLang(lang_locale) +end +local InputContainer = require("ui/widget/container/inputcontainer") +local CenterContainer = require("ui/widget/container/centercontainer") +local RightContainer = require("ui/widget/container/rightcontainer") +local OverlapGroup = require("ui/widget/overlapgroup") +local ImageWidget = require("ui/widget/imagewidget") +local TextWidget = require("ui/widget/textwidget") +local GestureRange = require("ui/gesturerange") +local UIManager = require("ui/uimanager") +local Blitbuffer = require("ffi/blitbuffer") +local Geom = require("ui/geometry") +local Device = require("device") +local Screen = require("device").screen +local Input = require("device").input +local Font = require("ui/font") +local DEBUG = require("dbg") +--DEBUG:turnOn() + +local TouchProbe = InputContainer:new{ +} + +function TouchProbe:init() + self.ges_events = { + TapProbe = { + GestureRange:new{ + ges = "tap", + range = Geom:new{ + x = 0, y = 0, + w = Screen:getWidth(), + h = Screen:getHeight(), + }, + } + }, + } + local image_widget = ImageWidget:new{ + file = "resources/kobo-touch-probe.png", + } + self[1] = OverlapGroup:new{ + dimen = Screen:getSize(), + CenterContainer:new{ + dimen = Screen:getSize(), + TextWidget:new{ + text = _("Tap the upper right corner"), + face = Font:getFace("cfont", 30), + }, + }, + RightContainer:new{ + dimen = { + h = image_widget:getSize().h, + w = Screen:getSize().w, + }, + image_widget, + }, + } +end + +function TouchProbe:onTapProbe(arg, ges) + --DEBUG("onTapProbe", ges) + local need_to_switch_xy = ges.pos.x < ges.pos.y + --DEBUG("Need to switch xy", need_to_switch_xy) + G_reader_settings:saveSetting("kobo_touch_switch_xy", need_to_switch_xy) + G_reader_settings:close() + if need_to_switch_xy then + Input:registerEventAdjustHook(Input.adjustTouchSwitchXY) + end + UIManager:quit() +end + +-- if user has not set KOBO_TOUCH_MIRRORED yet +if KOBO_TOUCH_MIRRORED == nil then + local switch_xy = G_reader_settings:readSetting("kobo_touch_switch_xy") + -- and has no probe before + if switch_xy == nil then + UIManager:show(TouchProbe:new{}) + UIManager:run() + -- otherwise, we will use probed result + else + KOBO_TOUCH_MIRRORED = switch_xy + end +end diff --git a/utils/wtest.lua b/utils/wtest.lua index dd44ecfbd..859295c18 100755 --- a/utils/wtest.lua +++ b/utils/wtest.lua @@ -3,8 +3,8 @@ require "defaults" print(package.path) -package.path = "?.lua;common/?.lua;frontend/?.lua" -package.cpath = "?.so;common/?.so;/usr/lib/lua/?.so" +package.path = "common/?.lua;rocks/share/lua/5.1/?.lua;frontend/?.lua;" .. package.path +package.cpath = "common/?.so;common/?.dll;/usr/lib/lua/?.so;rocks/lib/lua/5.1/?.so;" .. package.cpath local DocSettings = require("docsettings") local _ = require("gettext") From 5cbbac6b43c73c7cf0cdb37de3e7740c02becef8 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 18 Oct 2015 00:30:29 +0800 Subject: [PATCH 3/4] fix typo --- reader.lua | 2 +- utils/{kobo_touch_proble.lua => kobo_touch_probe.lua} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename utils/{kobo_touch_proble.lua => kobo_touch_probe.lua} (98%) diff --git a/reader.lua b/reader.lua index f508f2852..e42cfa6cc 100755 --- a/reader.lua +++ b/reader.lua @@ -122,7 +122,7 @@ if Device:isKobo() then -- powerd:setIntensity(intensity) end if Device:getCodeName() == "trilogy" then - require("utils/kobo_touch_proble") + require("utils/kobo_touch_probe") end end diff --git a/utils/kobo_touch_proble.lua b/utils/kobo_touch_probe.lua similarity index 98% rename from utils/kobo_touch_proble.lua rename to utils/kobo_touch_probe.lua index 227883db5..1671ba69e 100755 --- a/utils/kobo_touch_proble.lua +++ b/utils/kobo_touch_probe.lua @@ -1,5 +1,5 @@ -- touch probe utility --- usage: ./luajit util/kobo_touch_proble.lua +-- usage: ./luajit util/kobo_touch_probe.lua require "defaults" package.path = "common/?.lua;rocks/share/lua/5.1/?.lua;frontend/?.lua;" .. package.path From a284ca147fa44b835ed94967abf4d40590078c09 Mon Sep 17 00:00:00 2001 From: chrox Date: Sun, 18 Oct 2015 00:34:57 +0800 Subject: [PATCH 4/4] l10n for modules in utils --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 278021d52..9a20691c0 100644 --- a/Makefile +++ b/Makefile @@ -309,6 +309,7 @@ pot: mkdir -p $(TEMPLATE_DIR) $(XGETTEXT_BIN) reader.lua `find frontend -iname "*.lua"` \ `find plugins -iname "*.lua"` \ + `find utils -iname "*.lua"` \ > $(TEMPLATE_DIR)/$(DOMAIN).pot # push source file to Transifex $(MAKE) -i -C l10n bootstrap push