From bc29540a487130f69205a17540069a041fd2e8f8 Mon Sep 17 00:00:00 2001 From: seven332 Date: Mon, 27 Jul 2015 16:01:23 +0800 Subject: [PATCH] Improve GalleryActivity --- app/src/main/AndroidManifest.xml | 2 +- .../main/assets/fonts/GloriaHallelujah.ttf | Bin 60052 -> 0 bytes app/src/main/assets/fonts/Slabo.ttf | Bin 56088 -> 0 bytes app/src/main/assets/fonts/number.ttf | Bin 0 -> 33980 bytes .../hippo/ehviewer/gallery/ImageHandler.java | 2 +- .../hippo/ehviewer/gallery/SpiderQueen.java | 56 +- .../ehviewer/gallery/anim/Animation.java | 56 +- .../ehviewer/gallery/anim/FloatAnimation.java | 3 +- .../gallery/glrenderer/BasicTexture.java | 5 + .../gallery/glrenderer/GLES11Canvas.java | 2 +- .../gallery/glrenderer/GLES20Canvas.java | 2 +- .../gallery/glrenderer/StringTexture.java | 3 +- .../gallery/glrenderer/TiledTexture.java | 34 +- .../ehviewer/gallery/ui/DownUpDetector.java | 67 ++ .../hippo/ehviewer/gallery/ui/EdgeEffect.java | 443 ++++++++++ .../hippo/ehviewer/gallery/ui/EdgeView.java | 132 +++ .../hippo/ehviewer/gallery/ui/FrameView.java | 4 +- .../hippo/ehviewer/gallery/ui/GLRootView.java | 45 +- .../com/hippo/ehviewer/gallery/ui/GLView.java | 12 +- .../ehviewer/gallery/ui/GalleryPageView.java | 95 +++ .../ehviewer/gallery/ui/GalleryView.java | 760 ++++++++++++++++++ .../gallery/ui/GestureRecognizer.java | 145 ++++ .../ehviewer/gallery/ui/ScaledImageView.java | 325 ++++++++ .../hippo/ehviewer/gallery/ui/TextView.java | 4 +- .../hippo/ehviewer/gallery/util/IntArray.java | 60 -- .../hippo/ehviewer/gallery/util/Profile.java | 225 ------ .../ehviewer/gallery/util/ProfileData.java | 168 ---- .../hippo/ehviewer/ui/GalleryActivity.java | 305 ++++++- .../ehviewer/ui/scene/GalleryDetailScene.java | 2 +- .../res/drawable-hdpi/overscroll_edge.png | Bin 0 -> 705 bytes .../res/drawable-hdpi/overscroll_glow.png | Bin 0 -> 38955 bytes .../res/drawable-xhdpi/overscroll_edge.png | Bin 0 -> 862 bytes .../res/drawable-xhdpi/overscroll_glow.png | Bin 0 -> 70364 bytes .../res/drawable-xxhdpi/overscroll_edge.png | Bin 0 -> 1994 bytes .../res/drawable-xxhdpi/overscroll_glow.png | Bin 0 -> 123685 bytes app/src/main/res/layout/activity_gallery.xml | 4 +- app/src/main/res/values/colors.xml | 2 + app/src/main/res/values/dimens.xml | 3 +- app/src/main/res/values/themes.xml | 4 + yorozuya | 2 +- 40 files changed, 2442 insertions(+), 530 deletions(-) delete mode 100644 app/src/main/assets/fonts/GloriaHallelujah.ttf delete mode 100644 app/src/main/assets/fonts/Slabo.ttf create mode 100644 app/src/main/assets/fonts/number.ttf create mode 100644 app/src/main/java/com/hippo/ehviewer/gallery/ui/DownUpDetector.java create mode 100644 app/src/main/java/com/hippo/ehviewer/gallery/ui/EdgeEffect.java create mode 100644 app/src/main/java/com/hippo/ehviewer/gallery/ui/EdgeView.java create mode 100644 app/src/main/java/com/hippo/ehviewer/gallery/ui/GalleryPageView.java create mode 100644 app/src/main/java/com/hippo/ehviewer/gallery/ui/GalleryView.java create mode 100644 app/src/main/java/com/hippo/ehviewer/gallery/ui/GestureRecognizer.java create mode 100644 app/src/main/java/com/hippo/ehviewer/gallery/ui/ScaledImageView.java delete mode 100644 app/src/main/java/com/hippo/ehviewer/gallery/util/IntArray.java delete mode 100644 app/src/main/java/com/hippo/ehviewer/gallery/util/Profile.java delete mode 100644 app/src/main/java/com/hippo/ehviewer/gallery/util/ProfileData.java create mode 100644 app/src/main/res/drawable-hdpi/overscroll_edge.png create mode 100644 app/src/main/res/drawable-hdpi/overscroll_glow.png create mode 100644 app/src/main/res/drawable-xhdpi/overscroll_edge.png create mode 100644 app/src/main/res/drawable-xhdpi/overscroll_glow.png create mode 100644 app/src/main/res/drawable-xxhdpi/overscroll_edge.png create mode 100644 app/src/main/res/drawable-xxhdpi/overscroll_glow.png diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd1caa571..8fb85d22c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -44,7 +44,7 @@ diff --git a/app/src/main/assets/fonts/GloriaHallelujah.ttf b/app/src/main/assets/fonts/GloriaHallelujah.ttf deleted file mode 100644 index 3b42f5b385f0f38da4dd1a9f3e9a7d0ed4f57e95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60052 zcmd?ScYq{UbuWDHtTCna#V}piNpyD-;nDNCG27mO%zg zHaRR8%z?x7z}3X``zl9MezI{-}}Dz-aOmtzW3a7f9IUv zIk!Y8A;d-QCIY#B=SqFxwtV0RgwR`Y_UPW(#kE_~Pn#yh^i)EmuU~WF*!A5*g)u@L z2MG~Aam~#)B}hOD65_p#&wEc@fBJ&_C$H!c;>q9|mrftMbiJ+akH35E$zvyeaVh;ny!T&tbg#t;>j%WU@!d9FXRf_))2)T?sSK~bgx`Pt z`HR;a`^X2s{V*YKdK)3^ix-aFdcANr`!wEP!{-y%9lLPyvkyLAA>^&NM(^#{U%YhF z17iI@3Heq7V>odAjVG^<=y$#XzyAy&n}RlAP^sW0w3V#_Yoi7Bg~Hn z)31>4k|<+j2l*CRMIVc7jrhn9@cD;`gJJgA1^rj_hxpEyaBhug{G9Px!*@SM%=B$I z?7Tne>l;#E<&dsiyw`VDf~|0&wGp@e zpLo}U)SyTWLFB&z>AQAtey8G0Q@>nBP5 zrzAj9XoDo9|Ad4{R{t>xlN{OzDd5n`BP^78xK5Xj^29{!P**+w^ac4%v>jOLpjACq1%+c987Uzea}0GTLFX zTmNS=LRR#zl2NjXc8u)R|A~x~HMA3CUH=NKhKWSSh(zYO2w2-;b4RR0p0 zBgfFrlWX*UAPeLK+AZXi{y5o6PV0Y9wvlVmZYO8;FJku3pPla-IHnWGA^E z?JjbI{*#Ss_nByNBGO{|#{YR{gKZUUD1SedG@Pb7YM?7415Cn*LX0 zKe-F-0dlwgS#pp(L;nmpMD9U*nB1p-nj9g|M0=DxOaBx(MxKrKIJsZ{B)Nt>pnrm# zAkRg6k~~j;jGQ7bKzo|JQ2#i&mb_U1OLB%hi1sY`WBpNbj=U7@dGe6{F>-;t4DEH~ z<@!g-Me+*$BUllyM0*2ymHuIJBY6$lOXRishsaIj^=O|${!ITMxtY8{{{Xp#yb0~C z^H@&*0P(Eb_uuKsHB2J$_$ZzSK>Uq#+T zeu(zX-1`k#`wlAoY`8~LgJ3i5XH?`Ypaey+cqyp#Ng{xWiz{1WZE$bag8 zLf%b&jrPyUf9VgAhskfyzK7`gOUZjF(O*K|M;Y2jsG$Ebc|R4={soow2gwJh3GD}| zMSn5*5Vh(rA|Ix9v>%}k{e|SC)QR?E)UCgOJW4%i|B@>D^U24lPk$bHjH+lqLH#-; zO9N;>MML@nNk@o=q|KBrn~j0 zke|>M{U-8Lx{CH^bgzDi{5#!;_UCk6zmfb0-H-Mc^q_tN`6WH1Ur+v%9!C2sdQ`ti zeoc>|{V#frejWJ@J)vJ9SLjK!Iz6q!qb4vr{J|av((}IvUf~%$Cz*amv;bkhjx!?S z0GXJ8{}$lB4S4SW&bxr`9^kqHJXe9^e&BZyxE;n-qQL1mzMTXvr-8>=;BX%JTLkWw zfwxuQY#sR81g^G#rybyE5BNC*+#CU3jsYhpfR9ta#Tnq?9B^;}__r0fw;g!52%Osq zd|L*ttpLwffn)oCU+ciF1Hh|8z^Nm^r(+n?GqHM~jg|UhtglyMg}fH);|*9HZ^TM? zE7rl=p!x5F-d~2M|2ee!Ve(#htnVWqBp)Cjg1+tt_M8BkouLPTFs}hBoukKrJ7;n2 zKf*dCKqdZn8YuMJzwBWq=$f(&j7x>lsc)4?xrhrA6=t+ z=qh9dYB%er|Gry0J)9srR#X-ULegqz?u7jFE0SDJP#Q15}bb!2=S-D zil5SHx`o_8XXzZBC%4nBbb-!b_I`}d3}QA!%+S+lg*Isq?>&vai0UlJKFPisyD#>$ zgf9_F#1g4QE-{>#O}s6cN_lfq?&N>`<*yl{WPgsSg)2|Ja{im2`R3toOnhVX8zbKs z{zmT`*>6O?{+_Q-er@?HN4`R=uai%0=p%mifBWzMw(&w)NoD&Z#IkGcU6ej={Sm6) z_XxQ+`hKid;mG0YBZO8GiMcbgm+4WwU=^GwCGkwCB<3#*+4
Gj0@iTk&nxIZzU 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�N%dIbNE5q*du&tQnu&f@Gmkf4BaCb1BY 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 F{ud33aaaHV diff --git a/app/src/main/assets/fonts/Slabo.ttf b/app/src/main/assets/fonts/Slabo.ttf deleted file mode 100644 index 4d73e0984272afbb19ca01dead670c6b70e49b83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56088 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 G`~C`CN)EsP diff --git a/app/src/main/assets/fonts/number.ttf b/app/src/main/assets/fonts/number.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c6bb4c2066675eb16e11dce4691ef986adccb41b GIT binary patch literal 33980 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 literal 0 HcmV?d00001 diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ImageHandler.java b/app/src/main/java/com/hippo/ehviewer/gallery/ImageHandler.java index 129598172..db6d24957 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/ImageHandler.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ImageHandler.java @@ -66,7 +66,7 @@ public class ImageHandler { sDiskCache = diskCache; } - public ImageHandler(GalleryBase galleryBase, int pages, Mode mode, UniFile downloadDir) { + ImageHandler(GalleryBase galleryBase, int pages, Mode mode, UniFile downloadDir) { mGalleryBase = galleryBase; mMode = mode; mFilenames = new AtomicReferenceArray<>(pages); diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/SpiderQueen.java b/app/src/main/java/com/hippo/ehviewer/gallery/SpiderQueen.java index d5b8152ec..4c02a8bc4 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/SpiderQueen.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/SpiderQueen.java @@ -17,7 +17,6 @@ package com.hippo.ehviewer.gallery; import android.graphics.Bitmap; -import android.os.Looper; import android.os.Process; import com.hippo.ehviewer.client.EhConfig; @@ -101,6 +100,9 @@ public class SpiderQueen implements Runnable { private final ReentrantLock mWorkerArrayLock = new ReentrantLock(); // Lock for mRequestTokens and mSpiderInfo.tokens private final Object mTokenLock = new Object(); + // The lock to make sure onGetSize call first + public boolean mGetSizeFinished; + private final Object mGetSizeLock = new Object(); public SpiderQueen(EhHttpClient httpClient, File spiderInfoDir, GalleryBase galleryBase, ImageHandler.Mode mode, UniFile downloadDir, @@ -476,6 +478,29 @@ public class SpiderQueen implements Runnable { } } + public void setGetSizeFinished(final boolean getSizeFinished) { + synchronized (mGetSizeLock) { + if (mGetSizeFinished != getSizeFinished) { + mGetSizeFinished = getSizeFinished; + if (getSizeFinished) { + mGetSizeLock.notifyAll(); + } + } + } + } + + private void waitUntilFinishGettingSize() { + synchronized (mGetSizeLock) { + while (!mGetSizeFinished) { + try { + mGetSizeLock.wait(); + } catch (InterruptedException e) { + // ignored, we'll start waiting again + } + } + } + } + public void doIt() throws Exception { Say.d(TAG, "Spider Queen do it"); @@ -538,18 +563,19 @@ public class SpiderQueen implements Runnable { return; } - - // TODO make sure onGetPages first then other listener - // 7. tell listener pages - mSpiderListener.onGetPages(spiderInfo.pages); - // 6. Make workers and render to work + setGetSizeFinished(false); ensureWorker(); mRender = new Render(); Thread thread = new Thread(mRender, "Render"); thread.setPriority(Process.THREAD_PRIORITY_BACKGROUND); thread.start(); + // 7. tell listener pages + mSpiderListener.onGetPages(spiderInfo.pages); + setGetSizeFinished(true); + + // 8. Get tokens handleToken(spiderInfo, ehConfig); @@ -688,6 +714,9 @@ public class SpiderQueen implements Runnable { GalleryBase gb = mGalleryBase; ImageHandler handler = mImageHandler; + // Wait for post send onGetSize over + waitUntilFinishGettingSize(); + while (!mStop) { // Get index final int index = getRequestIndex(); @@ -812,13 +841,11 @@ public class SpiderQueen implements Runnable { private void waitUntilUnpaused() { synchronized (mPauseLock) { - if (Looper.myLooper() != Looper.getMainLooper()) { - while (mPauseAccess) { - try { - mPauseLock.wait(); - } catch (InterruptedException e) { - // ignored, we'll start waiting again - } + while (mPauseAccess) { + try { + mPauseLock.wait(); + } catch (InterruptedException e) { + // ignored, we'll start waiting again } } } @@ -837,6 +864,9 @@ public class SpiderQueen implements Runnable { public void run() { Say.d(TAG, "Render starts"); + // Wait for post send onGetSize over + waitUntilFinishGettingSize(); + while (!mStop) { waitUntilUnpaused(); diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/anim/Animation.java b/app/src/main/java/com/hippo/ehviewer/gallery/anim/Animation.java index bb01c9ab8..f7dcebe02 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/anim/Animation.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/anim/Animation.java @@ -49,20 +49,49 @@ abstract public class Animation { private static final long ANIMATION_START = -1; private static final long NO_ANIMATION = -2; + /** + * When the animation reaches the end and repeatCount is INFINITE + * or a positive value, the animation restarts from the beginning. + */ + public static final int RESTART = 1; + /** + * When the animation reaches the end and repeatCount is INFINITE + * or a positive value, the animation reverses direction on every iteration. + */ + public static final int REVERSE = 2; + /** + * This value used used with the {@link #setRepeatCount(int)} property to repeat + * the animation indefinitely. + */ + public static final int INFINITE = -1; + private long mStartTime = NO_ANIMATION; - private int mDuration; + private long mDuration; private Interpolator mInterpolator; + private int mRepeatCount; + private int mRepeatMode; + + private int mRunnedCount; public void setInterpolator(Interpolator interpolator) { mInterpolator = interpolator; } - public void setDuration(int duration) { + public void setDuration(long duration) { mDuration = duration; } + public void setRepeatCount(int repeatCount) { + mRepeatCount = repeatCount; + } + + public void setRepeatMode(int repeatMode) { + mRepeatMode = repeatMode; + } + public void start() { mStartTime = ANIMATION_START; + mRunnedCount = 0; } public void setStartTime(long time) { @@ -77,14 +106,29 @@ abstract public class Animation { mStartTime = NO_ANIMATION; } + // TODO mRepeatMode public boolean calculate(long currentTimeMillis) { - if (mStartTime == NO_ANIMATION) return false; - if (mStartTime == ANIMATION_START) mStartTime = currentTimeMillis; - int elapse = (int) (currentTimeMillis - mStartTime); + if (mStartTime == NO_ANIMATION) { + return false; + } + if (mStartTime == ANIMATION_START) { + mStartTime = currentTimeMillis; + } + + long elapse = currentTimeMillis - mStartTime; float x = MathUtils.clamp((float) elapse / mDuration, 0f, 1f); Interpolator i = mInterpolator; onCalculate(i != null ? i.getInterpolation(x) : x); - if (elapse >= mDuration) mStartTime = NO_ANIMATION; + + if (elapse >= mDuration) { + mRunnedCount++; + if (mRunnedCount >= mRepeatCount && mRepeatCount != INFINITE) { + mStartTime = NO_ANIMATION; + } else { + mStartTime += elapse; + } + } + return mStartTime != NO_ANIMATION; } diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/anim/FloatAnimation.java b/app/src/main/java/com/hippo/ehviewer/gallery/anim/FloatAnimation.java index baeafafc1..73837f02b 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/anim/FloatAnimation.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/anim/FloatAnimation.java @@ -22,11 +22,10 @@ public class FloatAnimation extends Animation { private final float mTo; private float mCurrent; - public FloatAnimation(float from, float to, int duration) { + public FloatAnimation(float from, float to) { mFrom = from; mTo = to; mCurrent = from; - setDuration(duration); } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/BasicTexture.java b/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/BasicTexture.java index 45b1df7ac..ef691364a 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/BasicTexture.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/BasicTexture.java @@ -16,6 +16,7 @@ package com.hippo.ehviewer.gallery.glrenderer; +import android.graphics.RectF; import android.util.Log; import com.hippo.yorozuya.MathUtils; @@ -143,6 +144,10 @@ public abstract class BasicTexture implements Texture { canvas.drawTexture(this, x, y, w, h); } + public void draw(GLCanvas canvas, RectF source, RectF target) { + canvas.drawTexture(this, source, target); + } + // onBind is called before GLCanvas binds this texture. // It should make sure the data is uploaded to GL memory. abstract protected boolean onBind(GLCanvas canvas); diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/GLES11Canvas.java b/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/GLES11Canvas.java index 6ca11c7c9..9ebd3ef0b 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/GLES11Canvas.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/GLES11Canvas.java @@ -24,7 +24,7 @@ import android.opengl.GLUtils; import android.opengl.Matrix; import android.util.Log; -import com.hippo.ehviewer.gallery.util.IntArray; +import com.hippo.yorozuya.IntArray; import com.hippo.yorozuya.ColorUtils; import junit.framework.Assert; diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/GLES20Canvas.java b/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/GLES20Canvas.java index 33abebbbe..d30053903 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/GLES20Canvas.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/GLES20Canvas.java @@ -23,7 +23,7 @@ import android.opengl.GLUtils; import android.opengl.Matrix; import android.util.Log; -import com.hippo.ehviewer.gallery.util.IntArray; +import com.hippo.yorozuya.IntArray; import com.hippo.yorozuya.MathUtils; import java.nio.Buffer; diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/StringTexture.java b/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/StringTexture.java index 7bcdd17b5..2dc8aa3cf 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/StringTexture.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/StringTexture.java @@ -23,7 +23,6 @@ import android.graphics.Paint.FontMetricsInt; import android.graphics.Typeface; import android.text.TextPaint; import android.text.TextUtils; -import android.util.FloatMath; // StringTexture is a texture shows the content of a specified String. // @@ -72,7 +71,7 @@ public class StringTexture extends CanvasTexture { private static StringTexture newInstance(String text, TextPaint paint) { FontMetricsInt metrics = paint.getFontMetricsInt(); - int width = (int) FloatMath.ceil(paint.measureText(text)); + int width = (int) Math.ceil(paint.measureText(text)); int height = metrics.bottom - metrics.top; // The texture size needs to be at least 1x1. if (width <= 0) width = 1; diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/TiledTexture.java b/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/TiledTexture.java index 779da0d02..8ba834c40 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/TiledTexture.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/glrenderer/TiledTexture.java @@ -25,6 +25,7 @@ import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffXfermode; import android.graphics.RectF; import android.os.SystemClock; +import android.support.annotation.NonNull; import com.hippo.ehviewer.gallery.ui.GLRoot; @@ -36,6 +37,9 @@ import java.util.ArrayList; // upload the whole bitmap but we reduce the time of uploading each tile // so it make the animation more smooth and prevents jank. public class TiledTexture implements Texture { + + private static final String TAG = TiledTexture.class.getSimpleName(); + private static final int CONTENT_SIZE = 254; private static final int BORDER_SIZE = 1; private static final int TILE_SIZE = CONTENT_SIZE + 2 * BORDER_SIZE; @@ -52,6 +56,9 @@ public class TiledTexture implements Texture { private static Canvas sCanvas; private static Paint sBitmapPaint; private static Paint sPaint; + private static OnFreeBitmapListener sOnFreeBitmapListener; + + private Bitmap mBitmap; private int mUploadIndex = 0; @@ -62,6 +69,15 @@ public class TiledTexture implements Texture { private final RectF mSrcRect = new RectF(); private final RectF mDestRect = new RectF(); + public interface OnFreeBitmapListener { + + void onFreeBitmapListener(Bitmap bitmap); + } + + public static void setOnFreeBitmapListener(OnFreeBitmapListener listener) { + sOnFreeBitmapListener = listener; + } + public static class Uploader implements GLRoot.OnGLIdleListener { private final ArrayDeque mTextures = new ArrayDeque<>(INIT_CAPACITY); @@ -95,6 +111,7 @@ public class TiledTexture implements Texture { while (now < dueTime && !deque.isEmpty()) { TiledTexture t = deque.peekFirst(); if (t.uploadNextTile(canvas)) { + t.freeBitmap(); deque.removeFirst(); mGlRoot.requestRender(); } @@ -202,7 +219,8 @@ public class TiledTexture implements Texture { return mUploadIndex == mTiles.length; } - public TiledTexture(Bitmap bitmap) { + public TiledTexture(@NonNull Bitmap bitmap) { + mBitmap = bitmap; mWidth = bitmap.getWidth(); mHeight = bitmap.getHeight(); ArrayList list = new ArrayList(); @@ -233,6 +251,20 @@ public class TiledTexture implements Texture { freeTile(mTiles[i]); } } + freeBitmap(); + } + + private void freeBitmap() { + if (mBitmap != null) { + onFreeBitmap(mBitmap); + mBitmap = null; + } + } + + private void onFreeBitmap(Bitmap bitmap) { + if (sOnFreeBitmapListener != null) { + sOnFreeBitmapListener.onFreeBitmapListener(bitmap); + } } public static void freeResources() { diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ui/DownUpDetector.java b/app/src/main/java/com/hippo/ehviewer/gallery/ui/DownUpDetector.java new file mode 100644 index 000000000..55be6ff6c --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ui/DownUpDetector.java @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.hippo.ehviewer.gallery.ui; + +import android.view.MotionEvent; + +public class DownUpDetector { + public interface DownUpListener { + void onDown(MotionEvent e); + void onUp(MotionEvent e); + void onPointerDown(MotionEvent e); + void onPointerUp(MotionEvent e); + } + + private boolean mStillDown; + private DownUpListener mListener; + + public DownUpDetector(DownUpListener listener) { + mListener = listener; + } + + private void setState(boolean down, MotionEvent e) { + if (down == mStillDown) return; + mStillDown = down; + if (down) { + mListener.onDown(e); + } else { + mListener.onUp(e); + } + } + + public void onTouchEvent(MotionEvent ev) { + switch (ev.getActionMasked()) { + case MotionEvent.ACTION_DOWN: + setState(true, ev); + break; + case MotionEvent.ACTION_POINTER_DOWN: + mListener.onPointerDown(ev); + break; + case MotionEvent.ACTION_UP: + mListener.onPointerUp(ev); + setState(false, ev); + break; + case MotionEvent.ACTION_CANCEL: + setState(false, ev); + break; + } + } + + public boolean isDown() { + return mStillDown; + } +} diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ui/EdgeEffect.java b/app/src/main/java/com/hippo/ehviewer/gallery/ui/EdgeEffect.java new file mode 100644 index 000000000..e7c65e8a7 --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ui/EdgeEffect.java @@ -0,0 +1,443 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.hippo.ehviewer.gallery.ui; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.view.animation.DecelerateInterpolator; +import android.view.animation.Interpolator; + +import com.hippo.ehviewer.R; +import com.hippo.ehviewer.gallery.glrenderer.GLCanvas; +import com.hippo.ehviewer.gallery.glrenderer.ResourceTexture; + +// This is copied from android.widget.EdgeEffect with some small modifications: +// (1) Copy the images (overscroll_{edge|glow}.png) to local resources. +// (2) Use "GLCanvas" instead of "Canvas" for draw()'s parameter. +// (3) Use a private Drawable class (which inherits from ResourceTexture) +// instead of android.graphics.drawable.Drawable to hold the images. +// The private Drawable class is used to translate original Canvas calls to +// corresponding GLCanvas calls. + +/** + * This class performs the graphical effect used at the edges of scrollable widgets + * when the user scrolls beyond the content bounds in 2D space. + * + *

EdgeEffect is stateful. Custom widgets using EdgeEffect should create an + * instance for each edge that should show the effect, feed it input data using + * the methods {@link #onAbsorb(int)}, {@link #onPull(float)}, and {@link #onRelease()}, + * and draw the effect using {@link #draw(GLCanvas)} in the widget's overridden + * {@link android.view.View#draw(Canvas)} method. If {@link #isFinished()} returns + * false after drawing, the edge effect's animation is not yet complete and the widget + * should schedule another drawing pass to continue the animation.

+ * + *

When drawing, widgets should draw their main content and child views first, + * usually by invoking super.draw(canvas) from an overridden draw + * method. (This will invoke onDraw and dispatch drawing to child views as needed.) + * The edge effect may then be drawn on top of the view's content using the + * {@link #draw(GLCanvas)} method.

+ */ +public class EdgeEffect { + @SuppressWarnings("unused") + private static final String TAG = "EdgeEffect"; + + // Time it will take the effect to fully recede in ms + private static final int RECEDE_TIME = 1000; + + // Time it will take before a pulled glow begins receding in ms + private static final int PULL_TIME = 167; + + // Time it will take in ms for a pulled glow to decay to partial strength before release + private static final int PULL_DECAY_TIME = 1000; + + private static final float MAX_ALPHA = 0.8f; + private static final float HELD_EDGE_ALPHA = 0.7f; + private static final float HELD_EDGE_SCALE_Y = 0.5f; + private static final float HELD_GLOW_ALPHA = 0.5f; + private static final float HELD_GLOW_SCALE_Y = 0.5f; + + private static final float MAX_GLOW_HEIGHT = 4.f; + + private static final float PULL_GLOW_BEGIN = 1.f; + private static final float PULL_EDGE_BEGIN = 0.6f; + + // Minimum velocity that will be absorbed + private static final int MIN_VELOCITY = 100; + + private static final float EPSILON = 0.001f; + + private final Drawable mEdge; + private final Drawable mGlow; + private int mWidth; + private int mHeight; + private final int MIN_WIDTH = 300; + private final int mMinWidth; + + private float mEdgeAlpha; + private float mEdgeScaleY; + private float mGlowAlpha; + private float mGlowScaleY; + + private float mEdgeAlphaStart; + private float mEdgeAlphaFinish; + private float mEdgeScaleYStart; + private float mEdgeScaleYFinish; + private float mGlowAlphaStart; + private float mGlowAlphaFinish; + private float mGlowScaleYStart; + private float mGlowScaleYFinish; + + private long mStartTime; + private float mDuration; + + private final Interpolator mInterpolator; + + private static final int STATE_IDLE = 0; + private static final int STATE_PULL = 1; + private static final int STATE_ABSORB = 2; + private static final int STATE_RECEDE = 3; + private static final int STATE_PULL_DECAY = 4; + + // How much dragging should effect the height of the edge image. + // Number determined by user testing. + private static final int PULL_DISTANCE_EDGE_FACTOR = 7; + + // How much dragging should effect the height of the glow image. + // Number determined by user testing. + private static final int PULL_DISTANCE_GLOW_FACTOR = 7; + private static final float PULL_DISTANCE_ALPHA_GLOW_FACTOR = 1.1f; + + private static final int VELOCITY_EDGE_FACTOR = 8; + private static final int VELOCITY_GLOW_FACTOR = 16; + + private int mState = STATE_IDLE; + + private float mPullDistance; + + /** + * Construct a new EdgeEffect with a theme appropriate for the provided context. + * @param context Context used to provide theming and resource information for the EdgeEffect + */ + public EdgeEffect(Context context) { + mEdge = new Drawable(context, R.drawable.overscroll_edge); + mGlow = new Drawable(context, R.drawable.overscroll_glow); + + mMinWidth = (int) (context.getResources().getDisplayMetrics().density * MIN_WIDTH + 0.5f); + mInterpolator = new DecelerateInterpolator(); + } + + /** + * Set the size of this edge effect in pixels. + * + * @param width Effect width in pixels + * @param height Effect height in pixels + */ + public void setSize(int width, int height) { + mWidth = width; + mHeight = height; + } + + /** + * Reports if this EdgeEffect's animation is finished. If this method returns false + * after a call to {@link #draw(GLCanvas)} the host widget should schedule another + * drawing pass to continue the animation. + * + * @return true if animation is finished, false if drawing should continue on the next frame. + */ + public boolean isFinished() { + return mState == STATE_IDLE; + } + + /** + * Immediately finish the current animation. + * After this call {@link #isFinished()} will return true. + */ + public void finish() { + mState = STATE_IDLE; + } + + /** + * A view should call this when content is pulled away from an edge by the user. + * This will update the state of the current visual effect and its associated animation. + * The host view should always {@link android.view.View#invalidate()} after this + * and draw the results accordingly. + * + * @param deltaDistance Change in distance since the last call. Values may be 0 (no change) to + * 1.f (full length of the view) or negative values to express change + * back toward the edge reached to initiate the effect. + */ + public void onPull(float deltaDistance) { + final long now = AnimationTime.get(); + if (mState == STATE_PULL_DECAY && now - mStartTime < mDuration) { + return; + } + if (mState != STATE_PULL) { + mGlowScaleY = PULL_GLOW_BEGIN; + } + mState = STATE_PULL; + + mStartTime = now; + mDuration = PULL_TIME; + + mPullDistance += deltaDistance; + float distance = Math.abs(mPullDistance); + + mEdgeAlpha = mEdgeAlphaStart = Math.max(PULL_EDGE_BEGIN, Math.min(distance, MAX_ALPHA)); + mEdgeScaleY = mEdgeScaleYStart = Math.max( + HELD_EDGE_SCALE_Y, Math.min(distance * PULL_DISTANCE_EDGE_FACTOR, 1.f)); + + mGlowAlpha = mGlowAlphaStart = Math.min(MAX_ALPHA, + mGlowAlpha + + (Math.abs(deltaDistance) * PULL_DISTANCE_ALPHA_GLOW_FACTOR)); + + float glowChange = Math.abs(deltaDistance); + if (deltaDistance > 0 && mPullDistance < 0) { + glowChange = -glowChange; + } + if (mPullDistance == 0) { + mGlowScaleY = 0; + } + + // Do not allow glow to get larger than MAX_GLOW_HEIGHT. + mGlowScaleY = mGlowScaleYStart = Math.min(MAX_GLOW_HEIGHT, Math.max( + 0, mGlowScaleY + glowChange * PULL_DISTANCE_GLOW_FACTOR)); + + mEdgeAlphaFinish = mEdgeAlpha; + mEdgeScaleYFinish = mEdgeScaleY; + mGlowAlphaFinish = mGlowAlpha; + mGlowScaleYFinish = mGlowScaleY; + } + + /** + * Call when the object is released after being pulled. + * This will begin the "decay" phase of the effect. After calling this method + * the host view should {@link android.view.View#invalidate()} and thereby + * draw the results accordingly. + */ + public void onRelease() { + mPullDistance = 0; + + if (mState != STATE_PULL && mState != STATE_PULL_DECAY) { + return; + } + + mState = STATE_RECEDE; + mEdgeAlphaStart = mEdgeAlpha; + mEdgeScaleYStart = mEdgeScaleY; + mGlowAlphaStart = mGlowAlpha; + mGlowScaleYStart = mGlowScaleY; + + mEdgeAlphaFinish = 0.f; + mEdgeScaleYFinish = 0.f; + mGlowAlphaFinish = 0.f; + mGlowScaleYFinish = 0.f; + + mStartTime = AnimationTime.get(); + mDuration = RECEDE_TIME; + } + + /** + * Call when the effect absorbs an impact at the given velocity. + * Used when a fling reaches the scroll boundary. + * + *

When using a {@link android.widget.Scroller} or {@link android.widget.OverScroller}, + * the method getCurrVelocity will provide a reasonable approximation + * to use here.

+ * + * @param velocity Velocity at impact in pixels per second. + */ + public void onAbsorb(int velocity) { + mState = STATE_ABSORB; + velocity = Math.max(MIN_VELOCITY, Math.abs(velocity)); + + mStartTime = AnimationTime.get(); + mDuration = 0.1f + (velocity * 0.03f); + + // The edge should always be at least partially visible, regardless + // of velocity. + mEdgeAlphaStart = 0.f; + mEdgeScaleY = mEdgeScaleYStart = 0.f; + // The glow depends more on the velocity, and therefore starts out + // nearly invisible. + mGlowAlphaStart = 0.5f; + mGlowScaleYStart = 0.f; + + // Factor the velocity by 8. Testing on device shows this works best to + // reflect the strength of the user's scrolling. + mEdgeAlphaFinish = Math.max(0, Math.min(velocity * VELOCITY_EDGE_FACTOR, 1)); + // Edge should never get larger than the size of its asset. + mEdgeScaleYFinish = Math.max( + HELD_EDGE_SCALE_Y, Math.min(velocity * VELOCITY_EDGE_FACTOR, 1.f)); + + // Growth for the size of the glow should be quadratic to properly + // respond + // to a user's scrolling speed. The faster the scrolling speed, the more + // intense the effect should be for both the size and the saturation. + mGlowScaleYFinish = Math.min(0.025f + (velocity * (velocity / 100) * 0.00015f), 1.75f); + // Alpha should change for the glow as well as size. + mGlowAlphaFinish = Math.max( + mGlowAlphaStart, Math.min(velocity * VELOCITY_GLOW_FACTOR * .00001f, MAX_ALPHA)); + } + + + /** + * Draw into the provided canvas. Assumes that the canvas has been rotated + * accordingly and the size has been set. The effect will be drawn the full + * width of X=0 to X=width, beginning from Y=0 and extending to some factor < + * 1.f of height. + * + * @param canvas Canvas to draw into + * @return true if drawing should continue beyond this frame to continue the + * animation + */ + public boolean draw(GLCanvas canvas) { + update(); + + final int edgeHeight = mEdge.getIntrinsicHeight(); + final int edgeWidth = mEdge.getIntrinsicWidth(); + final int glowHeight = mGlow.getIntrinsicHeight(); + final int glowWidth = mGlow.getIntrinsicWidth(); + + mGlow.setAlpha((int) (Math.max(0, Math.min(mGlowAlpha, 1)) * 255)); + + int glowBottom = (int) Math.min( + glowHeight * mGlowScaleY * glowHeight/ glowWidth * 0.6f, + glowHeight * MAX_GLOW_HEIGHT); + if (mWidth < mMinWidth) { + // Center the glow and clip it. + int glowLeft = (mWidth - mMinWidth)/2; + mGlow.setBounds(glowLeft, 0, mWidth - glowLeft, glowBottom); + } else { + // Stretch the glow to fit. + mGlow.setBounds(0, 0, mWidth, glowBottom); + } + + mGlow.draw(canvas); + + mEdge.setAlpha((int) (Math.max(0, Math.min(mEdgeAlpha, 1)) * 255)); + + int edgeBottom = (int) (edgeHeight * mEdgeScaleY); + if (mWidth < mMinWidth) { + // Center the edge and clip it. + int edgeLeft = (mWidth - mMinWidth)/2; + mEdge.setBounds(edgeLeft, 0, mWidth - edgeLeft, edgeBottom); + } else { + // Stretch the edge to fit. + mEdge.setBounds(0, 0, mWidth, edgeBottom); + } + mEdge.draw(canvas); + + return mState != STATE_IDLE; + } + + private void update() { + final long time = AnimationTime.get(); + final float t = Math.min((time - mStartTime) / mDuration, 1.f); + + final float interp = mInterpolator.getInterpolation(t); + + mEdgeAlpha = mEdgeAlphaStart + (mEdgeAlphaFinish - mEdgeAlphaStart) * interp; + mEdgeScaleY = mEdgeScaleYStart + (mEdgeScaleYFinish - mEdgeScaleYStart) * interp; + mGlowAlpha = mGlowAlphaStart + (mGlowAlphaFinish - mGlowAlphaStart) * interp; + mGlowScaleY = mGlowScaleYStart + (mGlowScaleYFinish - mGlowScaleYStart) * interp; + + if (t >= 1.f - EPSILON) { + switch (mState) { + case STATE_ABSORB: + mState = STATE_RECEDE; + mStartTime = AnimationTime.get(); + mDuration = RECEDE_TIME; + + mEdgeAlphaStart = mEdgeAlpha; + mEdgeScaleYStart = mEdgeScaleY; + mGlowAlphaStart = mGlowAlpha; + mGlowScaleYStart = mGlowScaleY; + + // After absorb, the glow and edge should fade to nothing. + mEdgeAlphaFinish = 0.f; + mEdgeScaleYFinish = 0.f; + mGlowAlphaFinish = 0.f; + mGlowScaleYFinish = 0.f; + break; + case STATE_PULL: + mState = STATE_PULL_DECAY; + mStartTime = AnimationTime.get(); + mDuration = PULL_DECAY_TIME; + + mEdgeAlphaStart = mEdgeAlpha; + mEdgeScaleYStart = mEdgeScaleY; + mGlowAlphaStart = mGlowAlpha; + mGlowScaleYStart = mGlowScaleY; + + // After pull, the glow and edge should fade to nothing. + mEdgeAlphaFinish = 0.f; + mEdgeScaleYFinish = 0.f; + mGlowAlphaFinish = 0.f; + mGlowScaleYFinish = 0.f; + break; + case STATE_PULL_DECAY: + // When receding, we want edge to decrease more slowly + // than the glow. + float factor = mGlowScaleYFinish != 0 ? 1 + / (mGlowScaleYFinish * mGlowScaleYFinish) + : Float.MAX_VALUE; + mEdgeScaleY = mEdgeScaleYStart + + (mEdgeScaleYFinish - mEdgeScaleYStart) * + interp * factor; + mState = STATE_RECEDE; + break; + case STATE_RECEDE: + mState = STATE_IDLE; + break; + } + } + } + + private static class Drawable extends ResourceTexture { + private Rect mBounds = new Rect(); + private int mAlpha = 255; + + public Drawable(Context context, int resId) { + super(context, resId); + } + + public int getIntrinsicWidth() { + return getWidth(); + } + + public int getIntrinsicHeight() { + return getHeight(); + } + + public void setBounds(int left, int top, int right, int bottom) { + mBounds.set(left, top, right, bottom); + } + + public void setAlpha(int alpha) { + mAlpha = alpha; + } + + public void draw(GLCanvas canvas) { + canvas.save(GLCanvas.SAVE_FLAG_ALPHA); + canvas.multiplyAlpha(mAlpha / 255.0f); + Rect b = mBounds; + draw(canvas, b.left, b.top, b.width(), b.height()); + canvas.restore(); + } + } +} diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ui/EdgeView.java b/app/src/main/java/com/hippo/ehviewer/gallery/ui/EdgeView.java new file mode 100644 index 000000000..4676db9d6 --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ui/EdgeView.java @@ -0,0 +1,132 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.hippo.ehviewer.gallery.ui; + +import android.content.Context; +import android.opengl.Matrix; + +import com.hippo.ehviewer.gallery.glrenderer.GLCanvas; + +// EdgeView draws EdgeEffect (blue glow) at four sides of the view. +public class EdgeView extends GLView { + @SuppressWarnings("unused") + private static final String TAG = "EdgeView"; + + public static final int INVALID_DIRECTION = -1; + public static final int TOP = 0; + public static final int LEFT = 1; + public static final int BOTTOM = 2; + public static final int RIGHT = 3; + + // Each edge effect has a transform matrix, and each matrix has 16 elements. + // We put all the elements in one array. These constants specify the + // starting index of each matrix. + private static final int TOP_M = TOP * 16; + private static final int LEFT_M = LEFT * 16; + private static final int BOTTOM_M = BOTTOM * 16; + private static final int RIGHT_M = RIGHT * 16; + + private EdgeEffect[] mEffect = new EdgeEffect[4]; + private float[] mMatrix = new float[4 * 16]; + + public EdgeView(Context context) { + for (int i = 0; i < 4; i++) { + mEffect[i] = new EdgeEffect(context); + } + } + + @Override + protected void onLayout( + boolean changeSize, int left, int top, int right, int bottom) { + if (!changeSize) return; + + int w = right - left; + int h = bottom - top; + for (int i = 0; i < 4; i++) { + if ((i & 1) == 0) { // top or bottom + mEffect[i].setSize(w, h); + } else { // left or right + mEffect[i].setSize(h, w); + } + } + + // Set up transforms for the four edges. Without transforms an + // EdgeEffect draws the TOP edge from (0, 0) to (w, Y * h) where Y + // is some factor < 1. For other edges we need to move, rotate, and + // flip the effects into proper places. + Matrix.setIdentityM(mMatrix, TOP_M); + Matrix.setIdentityM(mMatrix, LEFT_M); + Matrix.setIdentityM(mMatrix, BOTTOM_M); + Matrix.setIdentityM(mMatrix, RIGHT_M); + + Matrix.rotateM(mMatrix, LEFT_M, 90, 0, 0, 1); + Matrix.scaleM(mMatrix, LEFT_M, 1, -1, 1); + + Matrix.translateM(mMatrix, BOTTOM_M, 0, h, 0); + Matrix.scaleM(mMatrix, BOTTOM_M, 1, -1, 1); + + Matrix.translateM(mMatrix, RIGHT_M, w, 0, 0); + Matrix.rotateM(mMatrix, RIGHT_M, 90, 0, 0, 1); + } + + @Override + protected void render(GLCanvas canvas) { + super.render(canvas); + boolean more = false; + for (int i = 0; i < 4; i++) { + canvas.save(GLCanvas.SAVE_FLAG_MATRIX); + canvas.multiplyMatrix(mMatrix, i * 16); + more |= mEffect[i].draw(canvas); + canvas.restore(); + } + if (more) { + invalidate(); + } + } + + // Called when the content is pulled away from the edge. + // offset is in pixels. direction is one of {TOP, LEFT, BOTTOM, RIGHT}. + public void onPull(int offset, int direction) { + int fullLength = ((direction & 1) == 0) ? getWidth() : getHeight(); + mEffect[direction].onPull((float)offset / fullLength); + if (!mEffect[direction].isFinished()) { + invalidate(); + } + } + + // Call when the object is released after being pulled. + public void onRelease() { + boolean more = false; + for (int i = 0; i < 4; i++) { + mEffect[i].onRelease(); + more |= !mEffect[i].isFinished(); + } + if (more) { + invalidate(); + } + } + + // Call when the effect absorbs an impact at the given velocity. + // Used when a fling reaches the scroll boundary. velocity is in pixels + // per second. direction is one of {TOP, LEFT, BOTTOM, RIGHT}. + public void onAbsorb(int velocity, int direction) { + mEffect[direction].onAbsorb(velocity); + if (!mEffect[direction].isFinished()) { + invalidate(); + } + } +} diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ui/FrameView.java b/app/src/main/java/com/hippo/ehviewer/gallery/ui/FrameView.java index 95317cf99..db8d07740 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/ui/FrameView.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ui/FrameView.java @@ -14,8 +14,8 @@ public class FrameView extends GLView { } // Consider min - maxWidth = Math.max(maxWidth, getMinimumWidth()); - maxHeight = Math.max(maxHeight, getMinimumHeight()); + maxWidth = Math.max(maxWidth, getSuggestedMinimumWidth()); + maxHeight = Math.max(maxHeight, getSuggestedMinimumHeight()); // The final maxWidth = getDefaultSize(maxWidth, widthSpec); diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ui/GLRootView.java b/app/src/main/java/com/hippo/ehviewer/gallery/ui/GLRootView.java index 3fb22c7f6..819da2e5b 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/ui/GLRootView.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ui/GLRootView.java @@ -35,11 +35,11 @@ import com.hippo.ehviewer.gallery.glrenderer.BasicTexture; import com.hippo.ehviewer.gallery.glrenderer.GLCanvas; import com.hippo.ehviewer.gallery.glrenderer.GLES11Canvas; import com.hippo.ehviewer.gallery.glrenderer.GLES20Canvas; +import com.hippo.ehviewer.gallery.glrenderer.TextTexture; import com.hippo.ehviewer.gallery.glrenderer.UploadedTexture; import com.hippo.ehviewer.gallery.util.ApiHelper; import com.hippo.ehviewer.gallery.util.GalleryUtils; import com.hippo.ehviewer.gallery.util.MotionEventHelper; -import com.hippo.ehviewer.gallery.util.Profile; import com.hippo.yorozuya.AssertUtils; import java.util.ArrayDeque; @@ -72,9 +72,6 @@ public class GLRootView extends GLSurfaceView private static final boolean DEBUG_DRAWING_STAT = false; - private static final boolean DEBUG_PROFILE = false; - private static final boolean DEBUG_PROFILE_SLOW_ONLY = false; - private static final int FLAG_INITIALIZED = 1; private static final int FLAG_NEED_LAYOUT = 2; @@ -144,9 +141,6 @@ public class GLRootView extends GLSurfaceView // Uncomment this to enable gl error check. // setDebugFlags(DEBUG_CHECK_GL_ERROR); - - // Uncomment this to enable gl error check. - // setDebugFlags(DEBUG_CHECK_GL_ERROR); } @Override @@ -313,7 +307,7 @@ public class GLRootView extends GLSurfaceView mRenderLock.unlock(); } - if (DEBUG_FPS || DEBUG_PROFILE) { + if (DEBUG_FPS) { setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); } else { setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); @@ -330,10 +324,6 @@ public class GLRootView extends GLSurfaceView Log.i(TAG, "onSurfaceChanged: " + width + "x" + height + ", gl10: " + gl1.toString()); Process.setThreadPriority(Process.THREAD_PRIORITY_DISPLAY); GalleryUtils.setRenderThread(); - if (DEBUG_PROFILE) { - Log.d(TAG, "Start profiling"); - Profile.enable(20); // take a sample every 20ms - } GL11 gl = (GL11) gl1; AssertUtils.assertTrue(mGL == gl); @@ -356,11 +346,9 @@ public class GLRootView extends GLSurfaceView @Override public void onDrawFrame(GL10 gl) { AnimationTime.update(); - long t0; - if (DEBUG_PROFILE_SLOW_ONLY) { - Profile.hold(); - t0 = System.nanoTime(); - } + + long t0 = System.nanoTime(); + mRenderLock.lock(); while (mFreeze) { @@ -388,25 +376,16 @@ public class GLRootView extends GLSurfaceView // }); //} - if (DEBUG_PROFILE_SLOW_ONLY) { - long t = System.nanoTime(); - long durationInMs = (t - mLastDrawFinishTime) / 1000000; - long durationDrawInMs = (t - t0) / 1000000; - mLastDrawFinishTime = t; + long t = System.nanoTime(); + long duration = (t - t0) / 1000000; - if (durationInMs > 34) { // 34ms -> we skipped at least 2 frames - Log.v(TAG, "----- SLOW (" + durationDrawInMs + "/" + - durationInMs + ") -----"); - Profile.commit(); - } else { - Profile.drop(); - } + if (duration > 34) { + Log.v(TAG, "--- " + duration + " ---"); } } private void onDrawFrameLocked(GL10 gl) { if (DEBUG_FPS) outputFps(); - // release the unbound textures and deleted buffers. mCanvas.deleteRecycledResources(); @@ -549,12 +528,6 @@ public class GLRootView extends GLSurfaceView public void onPause() { unfreeze(); super.onPause(); - if (DEBUG_PROFILE) { - Log.d(TAG, "Stop profiling"); - Profile.disableAll(); - Profile.dumpToFile("/sdcard/gallery.prof"); - Profile.reset(); - } } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ui/GLView.java b/app/src/main/java/com/hippo/ehviewer/gallery/ui/GLView.java index 999b5c76b..f59a09059 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/ui/GLView.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ui/GLView.java @@ -493,8 +493,16 @@ public class GLView { } protected void onMeasure(int widthSpec, int heightSpec) { - setMeasuredSize(getDefaultSize(getMinimumWidth(), widthSpec), - getDefaultSize(getMinimumHeight(), heightSpec)); + setMeasuredSize(getDefaultSize(getSuggestedMinimumWidth(), widthSpec), + getDefaultSize(getSuggestedMinimumHeight(), heightSpec)); + } + + protected int getSuggestedMinimumHeight() { + return getMinimumHeight(); + } + + protected int getSuggestedMinimumWidth() { + return getMinimumWidth(); } /** diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ui/GalleryPageView.java b/app/src/main/java/com/hippo/ehviewer/gallery/ui/GalleryPageView.java new file mode 100644 index 000000000..60de75783 --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ui/GalleryPageView.java @@ -0,0 +1,95 @@ +package com.hippo.ehviewer.gallery.ui; + +import android.content.Context; +import android.graphics.Rect; + +import com.hippo.ehviewer.gallery.glrenderer.TextTexture; +import com.hippo.yorozuya.LayoutUtils; + +public class GalleryPageView extends FrameView { + + public ScaledImageView mImageView; + public LinearView mLinearView; + public TextView mIndexView; + public ProgressView mProgressView; + + private Rect mSeen = new Rect(); + + private static TextTexture sTextTexture; + + public static void setTextTexture(TextTexture textTexture) { + sTextTexture = textTexture; + } + + public GalleryPageView(Context context) { + mImageView = new ScaledImageView(); + mLinearView = new LinearView(); + mLinearView.setInterval(LayoutUtils.dp2pix(context, 24)); // 12dp + mIndexView = new TextView(sTextTexture); + mProgressView = new ProgressView(); + mProgressView.setMinimumWidth(LayoutUtils.dp2pix(context, 56)); // 56dp + mProgressView.setMinimumHeight(LayoutUtils.dp2pix(context, 56)); // 56dp + + GravityLayoutParams lp = new GravityLayoutParams(LayoutParams.WRAP_CONTENT, + LayoutParams.WRAP_CONTENT); + lp.gravity = Gravity.CENTER_HORIZONTAL; + mLinearView.addComponent(mIndexView, lp); + lp = new GravityLayoutParams(LayoutParams.WRAP_CONTENT, + LayoutParams.WRAP_CONTENT); + lp.gravity = Gravity.CENTER_HORIZONTAL; + mLinearView.addComponent(mProgressView, lp); + + lp = new GravityLayoutParams(LayoutParams.MATCH_PARENT, + LayoutParams.MATCH_PARENT); + addComponent(mImageView, lp); + + lp = new GravityLayoutParams(LayoutParams.WRAP_CONTENT, + LayoutParams.WRAP_CONTENT); + lp.gravity = Gravity.CENTER; + addComponent(mLinearView, lp); + } + + @SuppressWarnings("ResourceType") + private void updateSeen() { + Rect bounds = bounds(); + Rect parentBounds = mParent.bounds(); + mSeen.set(bounds); + if (!mSeen.intersect(0, 0, parentBounds.width(), parentBounds.height())) { + mSeen.set(0, 0, 0, 0); + } else { + mSeen.offset(-bounds.left, -bounds.top); + } + mImageView.setSeen(mSeen); + } + + @Override + protected void onLayout(boolean changeSize, int left, int top, int right, int bottom) { + super.onLayout(changeSize, left, top, right, bottom); + updateSeen(); + } + + @Override + public void offsetLeftAndRight(int offset) { + super.offsetLeftAndRight(offset); + updateSeen(); + } + + @Override + public void offsetTopAndBottom(int offset) { + super.offsetTopAndBottom(offset); + updateSeen(); + } + + public void setScaleOffset(GalleryView.Scale scale, + GalleryView.StartPosition startPosition, float lastScale) { + mImageView.setScaleOffset(scale, startPosition, lastScale); + } + + public void scroll(int dx, int dy, int[] remain) { + mImageView.scroll(dx, dy, remain); + } + + public void scale(float focusX, float focusY, float scale) { + mImageView.scale(focusX, focusY, scale); + } +} diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ui/GalleryView.java b/app/src/main/java/com/hippo/ehviewer/gallery/ui/GalleryView.java new file mode 100644 index 000000000..da003b53d --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ui/GalleryView.java @@ -0,0 +1,760 @@ +package com.hippo.ehviewer.gallery.ui; + +import android.content.Context; +import android.util.SparseArray; +import android.view.MotionEvent; +import android.view.animation.Interpolator; + +import com.hippo.ehviewer.R; +import com.hippo.ehviewer.gallery.anim.Animation; +import com.hippo.ehviewer.gallery.glrenderer.GLCanvas; +import com.hippo.ehviewer.gallery.util.GalleryUtils; +import com.hippo.yorozuya.IntArray; + +import java.util.ArrayList; +import java.util.List; + +public class GalleryView extends GLView implements GestureRecognizer.Listener { + + private static final String TAG = GalleryView.class.getSimpleName(); + + private static final int NO_POSITION = -1; + + private static final int MAX_SETTLE_DURATION = 600; // ms + + private static final int UNKNOWN_SEEN = 0; + private static final int SEEN = 1; + private static final int UNSEEN = 2; + + private boolean mEnableRequestLayout = true; + + private GestureRecognizer mGestureRecognizer; + + private Adapter mAdapter; + + private int mFirstShownIndex = 0; + private int mLayoutOffset = 0; + + private SparseArray mAttachedPage = new SparseArray<>(); + private List mInvalidAttachedComponent = new ArrayList<>(); + private IntArray mMissedPageInfo = new IntArray(5 * 3); + private List mUsedPage = new ArrayList<>(); + private SparseArray mPageMap = new SparseArray<>(); + + private EdgeView mEdgeView; + + private boolean mScale = false; + private boolean mScroll = false; + + private int mDeltaX; + private int[] mScrollRemain = new int[2]; + + private boolean mHaveChangePage = false; + + private Mode mMode = Mode.NONE; + private Mode mLastLayoutMode = Mode.NONE; + + private Scale mScaleMode = Scale.FIT_HEIGHT; // TODO + private StartPosition mStartPosition = StartPosition.TOP_RIGHT; // TODO + private float mLastScale = 2f; + + private int mProgressSpec = MeasureSpec.makeMeasureSpec(48, MeasureSpec.EXACTLY); + public int mInterval = 24; + + private SmoothScroller mSmoothScroller; + + private static final Interpolator sInterpolator = new Interpolator() { + + @Override + public float getInterpolation(float t) { + t -= 1.0f; + return t * t * t * t * t + 1.0f; + } + }; + + public enum Mode { + NONE, // Just a progress view + LEFT_TO_RIGHT, + RIGHT_TO_LEFT, + TOP_TO_BOTTOM + } + + public enum Scale { + ORIGIN (0), + FIT_WIDTH (1), + FIT_HEIGHT (2), + FIT (3), + FIXED (4); + + Scale(int ni) { + nativeInt = ni; + } + final int nativeInt; + } + + public enum StartPosition { + TOP_LEFT, + TOP_RIGHT, + BOTTOM_LEFT, + BOTTOM_RIGHT, + CENTER + } + + public GalleryView(Context context) { + mEdgeView = new EdgeView(context); + mGestureRecognizer = new GestureRecognizer(context, this); + mSmoothScroller = new SmoothScroller(); + mSmoothScroller.setInterpolator(sInterpolator); + + setBackgroundColor(GalleryUtils.intColorToFloatARGBArray(context.getResources().getColor(R.color.gallery_background))); + } + + @Override + protected void onAttachToRoot(GLRoot root) { + super.onAttachToRoot(root); + + mEdgeView.onAttachToRoot(root); + } + + @Override + protected void onDetachFromRoot() { + super.onDetachFromRoot(); + + mEdgeView.onDetachFromRoot(); + } + + public void setMode(Mode mode) { + if (mMode != mode) { + mMode = mode; + superRequestLayout(); + } + } + + public void setAdapter(Adapter adapter) { + mAdapter = adapter; + } + + public void setProgressSize(int size) { + mProgressSpec = MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY); + superRequestLayout(); + } + + public void setInterval(int interval) { + mInterval = interval; + superRequestLayout(); + } + + public void superRequestLayout() { + super.requestLayout(); + } + + public void scrollToPage(int page) { + if (page < 0 || page >= mAdapter.getPages()) { + return; + } + + mFirstShownIndex = page; + mLayoutOffset = 0; + fill(); + } + + public void smoothScrollToPage(int page) { + + } + + private void scrollX(int offset) { + if (offset == 0 || (mMode != Mode.LEFT_TO_RIGHT && mMode != Mode.RIGHT_TO_LEFT)) { + return; + } + offChildsetLeftAndRight(offset); // TODO Really need it ? + + mLayoutOffset += offset; + boolean reverse = mMode == Mode.RIGHT_TO_LEFT; + + // Fix TODO What if offset is very large + int width = getWidth(); + if (!mHaveChangePage) { + if (mLayoutOffset > mInterval) { + mHaveChangePage = true; + mFirstShownIndex += reverse ? 1 : -1; + mLayoutOffset = -width + mLayoutOffset - mInterval; + } else if (mLayoutOffset < -mInterval) { + mHaveChangePage = true; + mFirstShownIndex += reverse ? -1 : 1; + mLayoutOffset = width + mLayoutOffset + mInterval; + } + } else { + if (mLayoutOffset > width) { + mHaveChangePage = false; + mFirstShownIndex += reverse ? 1 : -1; + mLayoutOffset = mLayoutOffset - width - mInterval; + } else if (mLayoutOffset < -width) { + mHaveChangePage = false; + mFirstShownIndex += reverse ? -1 : 1; + mLayoutOffset = mLayoutOffset + width + mInterval; + } else if (mLayoutOffset < mInterval && mLayoutOffset > -mInterval) { + mHaveChangePage = false; + } + } + + fill(); + } + + @Override + protected boolean dispatchTouchEvent(MotionEvent event) { + // Do not pass event to component, so handle event here + mGestureRecognizer.onTouchEvent(event); + return true; + } + + @Override + public boolean onSingleTapUp(float x, float y) { + return false; + } + + @Override + public boolean onDoubleTap(float x, float y) { + return false; + } + + // Try to scroll to make mLayoutOffset == 0 + private int onScrollX1(int dx, int totalX) { + int remain; + int actualDx; + if (mLayoutOffset > 0 && dx > 0) { + remain = dx - mLayoutOffset; + if (remain > 0) { + // Get remain + actualDx = dx - remain; + } else { + // No remain + remain = 0; + actualDx = dx; + } + } else if (mLayoutOffset < 0 && dx < 0) { + remain = dx - mLayoutOffset; + if (remain < 0) { + // Get remain + actualDx = dx - remain; + } else { + // No remain + remain = 0; + actualDx = dx; + } + } else { + remain = 0; + actualDx = dx; + } + + onScrollX2(actualDx, totalX); + + return remain; + } + + private int onScrollX2(int dx, int totalX) { + int remain = 0; + if (mMode == Mode.LEFT_TO_RIGHT) { + if (mFirstShownIndex == 0 && mLayoutOffset - dx > 0) { // Start + scrollX(-mLayoutOffset); + remain = dx - mLayoutOffset; + } else if (mFirstShownIndex == mAdapter.getPages() - 1 && mLayoutOffset - dx < 0) { // end + scrollX(-mLayoutOffset); + remain = dx - mLayoutOffset; + } else { + scrollX(-dx); + } + } else if (mMode == Mode.RIGHT_TO_LEFT) { + if (mFirstShownIndex == 0 && mLayoutOffset - dx < 0) { // Start + scrollX(-mLayoutOffset); + remain = dx - mLayoutOffset; + } else if (mFirstShownIndex == mAdapter.getPages() - 1 && mLayoutOffset - dx > 0) { // end + scrollX(-mLayoutOffset); + remain = dx - mLayoutOffset; + } else { + scrollX(-dx); + } + } + return remain; + } + + @Override + public boolean onScroll(float dx, float dy, float totalX, float totalY) { + if (mScale) { + return false; + } + mScroll = true; + + int dxI = (int) dx; + int dyI = (int) dy; + int totalXI = (int) totalX; + if (mMode == Mode.LEFT_TO_RIGHT || mMode == Mode.RIGHT_TO_LEFT) { + int remain = dxI; + if (remain != 0 && mLayoutOffset != 0) { + remain = onScrollX1(dxI, totalXI); + } + if (remain != 0 && mLayoutOffset == 0) { + GalleryPageView page = mPageMap.get(mFirstShownIndex); + if (page != null) { + page.scroll(remain, dyI, mScrollRemain); + remain = mScrollRemain[0]; + } + } + if (remain != 0) { + remain = onScrollX2(dxI, totalXI); + } + + if (remain == 0) { + if (mDeltaX != 0) { + mDeltaX = 0; + mEdgeView.onRelease(); + } + } else if (remain < 0) { + if (mDeltaX > 0) { + mDeltaX = 0; + mEdgeView.onRelease(); + } + mDeltaX += remain; + mEdgeView.onPull(-mDeltaX, EdgeView.LEFT); + } else { + if (mDeltaX < 0) { + mDeltaX = 0; + mEdgeView.onRelease(); + } + mDeltaX += remain; + mEdgeView.onPull(mDeltaX, EdgeView.RIGHT); + } + + } else if (mMode == Mode.TOP_TO_BOTTOM) { + // TODO + } + + return true; + } + + @Override + public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { + return false; + } + + @Override + public boolean onScaleBegin(float focusX, float focusY) { + return onScale(focusX, focusY, 1.0f); + } + + private boolean canScale() { + if (mMode != Mode.LEFT_TO_RIGHT && mMode != Mode.RIGHT_TO_LEFT) { + return false; + } + if (mLayoutOffset != 0) { + return false; + } + if (mScroll) { + return false; + } + return true; + } + + @Override + public boolean onScale(float focusX, float focusY, float scale) { + if (!canScale()) { + return false; + } + mScale = true; + + GalleryPageView page = mPageMap.get(mFirstShownIndex); + if (page != null) { + page.scale(focusX, focusY, scale); + } + + return true; + } + + @Override + public void onScaleEnd() { + + } + + @Override + public void onDown(float x, float y) { + mScale = false; + mScroll = false; + mSmoothScroller.forceStop(); + } + + @Override + public void onUp() { + mDeltaX = 0; + mEdgeView.onRelease(); + + if ((mMode == Mode.LEFT_TO_RIGHT || mMode == Mode.RIGHT_TO_LEFT) && mLayoutOffset != 0) { + // Scroll + final float pageDelta = 7 * (float) Math.abs(mLayoutOffset) / (getWidth() + mInterval); + int duration = (int) ((pageDelta + 1) * 100); + duration = Math.min(duration, MAX_SETTLE_DURATION); + mSmoothScroller.startSmoothScroll(-mLayoutOffset, 0, duration); + } else if (mMode == Mode.TOP_TO_BOTTOM) { + // TODO + } + + + + + } + + @Override + public void onPointerDown(float x, float y) { + if (canScale()) { + mScale = true; + } + } + + @Override + public void onPointerUp() { + + } + + private void offChildsetLeftAndRight(int offset) { + for (int i = 0, n = getComponentCount(); i < n; i++) { + getComponent(i).offsetLeftAndRight(offset); + } + } + + private void offChildsetTopAndBottom(int offset) { + for (int i = 0, n = getComponentCount(); i < n; i++) { + getComponent(i).offsetTopAndBottom(offset); + } + } + + @Override + public void requestLayout() { + if (mEnableRequestLayout) { + super.requestLayout(); + } + } + + @Override + protected void onLayout(boolean changeSize, int left, int top, int right, int bottom) { + mSmoothScroller.forceStop(); + mEdgeView.layout(left, top, right, bottom); + + /* TODO set all seen UNKNOWN_SEEN to setScaleAndOffset + if (mLastLayoutMode != mMode) { + mLastLayoutMode = mMode; + for () { + + } + } + */ + + + fill(); + } + + public GalleryPageView getPage(int index) { + return mPageMap.get(index); + } + + private void unbindGalleryPage(GalleryPageView view) { + LayoutParams lp = (LayoutParams) view.getLayoutParams(); + int index = lp.index; + lp.index = NO_POSITION; + if (index != NO_POSITION) { + mAdapter.unbindPage(view, index); + } + } + + private void attachePage(GalleryPageView page, int index) { + mPageMap.put(index, page); + } + + private void detachPage(int index) { + mPageMap.remove(index); + } + + private void detachPage(GalleryPageView page) { + LayoutParams lp = (LayoutParams) page.getLayoutParams(); + int index = lp.index; + lp.index = NO_POSITION; + if (index != NO_POSITION) { + mPageMap.remove(index); + } + } + + + private void fillX(int start, int end, int startIndex, boolean reverse) { + for (int i = 0, n = getComponentCount(); i < n; i++) { + GLView component = getComponent(i); + if (component instanceof GalleryPageView) { + mAttachedPage.put(((LayoutParams) component.getLayoutParams()).index, + (GalleryPageView) component); + } else { + mInvalidAttachedComponent.add(component); + } + } + + // Remove invalid view + int n = mInvalidAttachedComponent.size(); + while (n-- > 0) { + removeComponentAt(n); + } + mInvalidAttachedComponent.clear(); + + // Fill + int width = getWidth(); + int height = getHeight(); + int widthSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY); + int heightSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); + int offset = width + mInterval; + if (reverse) { + offset = -offset; + } + int pages = mAdapter.getPages(); + for (int spec = start, i = startIndex; reverse ? spec > end : spec < end && i < pages; i++) { + GalleryPageView page = mAttachedPage.get(i); + if (page != null) { + mAttachedPage.remove(i); + page.measure(widthSpec, heightSpec); + if (reverse) { + page.layout(spec - width, 0, spec, height); + } else { + page.layout(spec, 0, spec + width, height); + } + } else { + // Add index, left, top, right, bottom + mMissedPageInfo.add(i); + if (reverse) { + mMissedPageInfo.add(spec - width); + mMissedPageInfo.add(0); + mMissedPageInfo.add(spec); + mMissedPageInfo.add(height); + } else { + mMissedPageInfo.add(spec); + mMissedPageInfo.add(0); + mMissedPageInfo.add(spec + width); + mMissedPageInfo.add(height); + } + } + spec += offset; + } + + // Fill missed page + int count = mAttachedPage.size(); + n = mMissedPageInfo.size(); + for (int i = 0; i < n; i += 5) { + int index = mMissedPageInfo.get(i); + GalleryPageView page; + if (i < count) { + page = mAttachedPage.valueAt(i); + // Unbind + detachPage(page); + unbindGalleryPage(page); + mUsedPage.add(page); + } else { + page = mAdapter.createPage(); + addComponent(page); + } + // Bind + ((LayoutParams) page.getLayoutParams()).index = index; + ((LayoutParams) page.getLayoutParams()).seen = UNKNOWN_SEEN; + attachePage(page, index); + // Update index in LayoutParams + mAdapter.bindPage(page, index); + page.measure(widthSpec, heightSpec); + page.layout(mMissedPageInfo.get(i + 1), mMissedPageInfo.get(i + 2), + mMissedPageInfo.get(i + 3), mMissedPageInfo.get(i + 4)); + + } + mMissedPageInfo.clear(); + + // Clear unuse page + for (int i = 0; i < count; i++) { + GalleryPageView page = mAttachedPage.valueAt(i); + if (mUsedPage.contains(page)) { + continue; + } + detachPage(page); + unbindGalleryPage(page); + removeComponent(page); + } + mAttachedPage.clear(); + mUsedPage.clear(); + + // Update seen + for (int i = 0; i < getComponentCount(); i++) { + GalleryPageView page = (GalleryPageView) getComponent(i); + LayoutParams lp = ((LayoutParams) page.getLayoutParams()); + int oldSeen = lp.seen; + int seen = page.bounds().intersects(0, 0, width, height) ? SEEN : UNSEEN; + lp.seen = seen; + if (oldSeen == UNKNOWN_SEEN || (oldSeen == SEEN && seen == UNSEEN)) { + page.setScaleOffset(mScaleMode, mStartPosition, mLastScale); + } + } + } + + private void fillY(int start, int end, int startIndex, boolean reverse) { + + } + + private void fill() { + // Disable request layout + mEnableRequestLayout = false; + + if (mMode == Mode.NONE) { + // Try to get old ProgressView + ProgressView progressView = null; + if (getComponentCount() == 1) { + GLView component = getComponent(0); + if (component instanceof ProgressView) { + progressView = (ProgressView) component; + } + } + if (progressView == null) { + progressView = new ProgressView(); + } + + // Remove all component and unbind + int i = getComponentCount(); + while (i-- > 0) { + GLView component = getComponent(i); + removeComponentAt(i); + + // Remove from map, unbind gallery page + if (component instanceof GalleryPageView) { + detachPage((GalleryPageView) component); + unbindGalleryPage((GalleryPageView) component); + } + } + + addComponent(progressView); + + // Measure and layout progress + progressView.measure(mProgressSpec, mProgressSpec); + int progressWidth = progressView.getMeasuredWidth(); + int progressHeight = progressView.getMeasuredHeight(); + int progressLeft = getWidth() / 2 - progressWidth / 2; + int progressTop = getHeight() / 2 - progressHeight / 2; + progressView.layout(progressLeft, progressTop, progressLeft + progressWidth, progressTop + progressHeight); + + // Bind progress view, just setIndeterminate(true); + progressView.setIndeterminate(true); + } else if (mMode == Mode.LEFT_TO_RIGHT || mMode == Mode.RIGHT_TO_LEFT) { + int width = getWidth(); + int start; + int end; + int startIndex; + boolean reverse = mMode == Mode.RIGHT_TO_LEFT; + + if (reverse) { + if (mFirstShownIndex == 0) { + start = width; + startIndex = 0; + } else { + startIndex = mFirstShownIndex - 1; + start = width * 2 + mInterval; + } + if (mFirstShownIndex == mAdapter.getPages() - 1) { + end = 0; + } else { + end = -width - mInterval * 2 - 1; + } + } else { + if (mFirstShownIndex == 0) { + start = 0; + startIndex = 0; + } else { + startIndex = mFirstShownIndex - 1; + start = -width - mInterval; + } + if (mFirstShownIndex == mAdapter.getPages() - 1) { + end = width; + } else { + end = width * 2 + mInterval * 2 + 1; + } + } + + // Set offset + start += mLayoutOffset; + + fillX(start, end, startIndex, reverse); + } + + mEnableRequestLayout = true; + } + + @Override + protected void render(GLCanvas canvas) { + if (mSmoothScroller.calculate(AnimationTime.get())) { + invalidate(); + } + + super.render(canvas); + mEdgeView.render(canvas); + } + + @Override + protected boolean checkLayoutParams(GLView.LayoutParams p) { + return p instanceof LayoutParams; + } + + @Override + protected GLView.LayoutParams generateDefaultLayoutParams() { + return new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + } + + @Override + protected GLView.LayoutParams generateLayoutParams(GLView.LayoutParams p) { + return p == null ? generateDefaultLayoutParams() : new LayoutParams(p); + } + + public static class LayoutParams extends GLView.LayoutParams { + + private int index = NO_POSITION; + private int seen = UNKNOWN_SEEN; + + public LayoutParams(GLView.LayoutParams source) { + super(source); + } + + public LayoutParams(int width, int height) { + super(width, height); + } + } + + public static abstract class Adapter { + + public abstract int getPages(); + + public abstract GalleryPageView createPage(); + + public abstract void bindPage(GalleryPageView view, int index); + + public abstract void unbindPage(GalleryPageView view, int index); + } + + public class SmoothScroller extends Animation { + + private int mDx; + private int mDy; + private int mLastX; + private int mLastY; + + public void startSmoothScroll(int dx, int dy, int duration) { + mDx = dx; + mDy = dy; + mLastX = 0; + mLastY = 0; + setDuration(duration); + start(); + invalidate(); + } + + @Override + protected void onCalculate(float progress) { + int x = (int) (mDx * progress); + int y = (int) (mDy * progress); + scrollX(x - mLastX); + mLastX = x; + } + } +} diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ui/GestureRecognizer.java b/app/src/main/java/com/hippo/ehviewer/gallery/ui/GestureRecognizer.java new file mode 100644 index 000000000..338f145b6 --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ui/GestureRecognizer.java @@ -0,0 +1,145 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.hippo.ehviewer.gallery.ui; + +import android.content.Context; +import android.os.SystemClock; +import android.support.v4.view.GestureDetectorCompat; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.ScaleGestureDetector; + +// This class aggregates three gesture detectors: GestureDetector, +// ScaleGestureDetector, and DownUpDetector. +public class GestureRecognizer { + @SuppressWarnings("unused") + private static final String TAG = "GestureRecognizer"; + + public interface Listener { + boolean onSingleTapUp(float x, float y); + boolean onDoubleTap(float x, float y); + boolean onScroll(float dx, float dy, float totalX, float totalY); + boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY); + boolean onScaleBegin(float focusX, float focusY); + boolean onScale(float focusX, float focusY, float scale); + void onScaleEnd(); + void onDown(float x, float y); + void onUp(); + void onPointerDown(float x, float y); + void onPointerUp(); + } + + private final GestureDetectorCompat mGestureDetector; + private final ScaleGestureDetector mScaleDetector; + private final DownUpDetector mDownUpDetector; + private final Listener mListener; + + public GestureRecognizer(Context context, Listener listener) { + mListener = listener; + mGestureDetector = new GestureDetectorCompat(context, new MyGestureListener(), + null /* ignoreMultitouch */); + mScaleDetector = new ScaleGestureDetector( + context, new MyScaleListener()); + mDownUpDetector = new DownUpDetector(new MyDownUpListener()); + } + + public void onTouchEvent(MotionEvent event) { + mScaleDetector.onTouchEvent(event); + mGestureDetector.onTouchEvent(event); + mDownUpDetector.onTouchEvent(event); + } + + public boolean isDown() { + return mDownUpDetector.isDown(); + } + + public void cancelScale() { + long now = SystemClock.uptimeMillis(); + MotionEvent cancelEvent = MotionEvent.obtain( + now, now, MotionEvent.ACTION_CANCEL, 0, 0, 0); + mScaleDetector.onTouchEvent(cancelEvent); + cancelEvent.recycle(); + } + + private class MyGestureListener + extends GestureDetector.SimpleOnGestureListener { + @Override + public boolean onSingleTapUp(MotionEvent e) { + return mListener.onSingleTapUp(e.getX(), e.getY()); + } + + @Override + public boolean onDoubleTap(MotionEvent e) { + return mListener.onDoubleTap(e.getX(), e.getY()); + } + + @Override + public boolean onScroll( + MotionEvent e1, MotionEvent e2, float dx, float dy) { + return mListener.onScroll( + dx, dy, e2.getX() - e1.getX(), e2.getY() - e1.getY()); + } + + @Override + public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, + float velocityY) { + return mListener.onFling(e1, e2, velocityX, velocityY); + } + } + + private class MyScaleListener + extends ScaleGestureDetector.SimpleOnScaleGestureListener { + @Override + public boolean onScaleBegin(ScaleGestureDetector detector) { + return mListener.onScaleBegin( + detector.getFocusX(), detector.getFocusY()); + } + + @Override + public boolean onScale(ScaleGestureDetector detector) { + return mListener.onScale(detector.getFocusX(), + detector.getFocusY(), detector.getScaleFactor()); + } + + @Override + public void onScaleEnd(ScaleGestureDetector detector) { + mListener.onScaleEnd(); + } + } + + private class MyDownUpListener implements DownUpDetector.DownUpListener { + @Override + public void onDown(MotionEvent e) { + mListener.onDown(e.getX(), e.getY()); + } + + @Override + public void onUp(MotionEvent e) { + mListener.onUp(); + } + + @Override + public void onPointerDown(MotionEvent e) { + mListener.onPointerDown(e.getX(), e.getY()); + } + + @Override + public void onPointerUp(MotionEvent e) { + mListener.onPointerUp(); + } + } +} diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ui/ScaledImageView.java b/app/src/main/java/com/hippo/ehviewer/gallery/ui/ScaledImageView.java new file mode 100644 index 000000000..ff4db1f4d --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ui/ScaledImageView.java @@ -0,0 +1,325 @@ +package com.hippo.ehviewer.gallery.ui; + +import android.graphics.Rect; +import android.graphics.RectF; + +import com.hippo.ehviewer.gallery.glrenderer.GLCanvas; +import com.hippo.ehviewer.gallery.glrenderer.TiledTexture; +import com.hippo.yorozuya.MathUtils; + +public class ScaledImageView extends GLView { + + // TODO adjust scale max and min accroding to image size and screen size + private static final float SCALE_MIN = 1 / 10.0f; + private static final float SCALE_MAX = 10.0f; + + private TiledTexture mTiledTexture; + + // Corresponding source is [0, 0, mTiledTexture.getWidth(), mTiledTexture.getHeight()] + private RectF mTarget = new RectF(); + private RectF mSeen = new RectF(); + private RectF mSourceAfterSeen = new RectF(); + private RectF mTargetAfterSeen = new RectF(); + private boolean mScaleOffsetDirty = true; + private boolean mSeenDirty = true; + + private GalleryView.Scale mScaleMode; + private GalleryView.StartPosition mStartPosition; + private float mLastScale; + private float mScale; + + public void setTiledTexture(TiledTexture tiledTexture) { + mTiledTexture = tiledTexture; + setScaleOffset(mScaleMode, mStartPosition, mLastScale); + invalidate(); + } + + public TiledTexture getTiledTexture() { + return mTiledTexture; + } + + @Override + protected int getSuggestedMinimumWidth() { + return Math.max(super.getSuggestedMinimumWidth(), + mTiledTexture == null ? 0 : mTiledTexture.getWidth()); + } + + @Override + protected int getSuggestedMinimumHeight() { + return Math.max(super.getSuggestedMinimumHeight(), + mTiledTexture == null ? 0 : mTiledTexture.getHeight()); + } + + /** + * + * If target is shorter then screen, make it in screen center. If target is + * longer then parent, make sure target fill parent over + */ + private void adjustPosition() { + RectF target = mTarget; + int screenWidth = getWidth(); + int screenHeight = getHeight(); + float targetWidth = target.width(); + float targetHeight = target.height(); + + if (targetWidth > screenWidth) { + float fixXOffset = target.left; + if (fixXOffset > 0) { + target.left -= fixXOffset; + target.right -= fixXOffset; + } else if ((fixXOffset = screenWidth - target.right) > 0) { + target.left += fixXOffset; + target.right += fixXOffset; + } + } else { + float left = (screenWidth - targetWidth) / 2; + target.offsetTo(left, target.top); + } + if (targetHeight > screenHeight) { + float fixYOffset = target.top; + if (fixYOffset > 0) { + target.top -= fixYOffset; + target.bottom -= fixYOffset; + } else if ((fixYOffset = screenHeight - target.bottom) > 0) { + target.top += fixYOffset; + target.bottom += fixYOffset; + } + } else { + float top = (screenHeight - targetHeight) / 2; + target.offsetTo(target.left, top); + } + } + + public void setScaleOffset(GalleryView.Scale scale, + GalleryView.StartPosition startPosition, float lastScale) { + mScaleMode = scale; + mStartPosition = startPosition; + mLastScale = lastScale; + + int screenWidth = getWidth(); + int screenHeight = getHeight(); + + if (mTiledTexture == null || screenWidth == 0 || screenHeight == 0) { + mScaleOffsetDirty = true; + return; + } + + int imageWidth = mTiledTexture.getWidth(); + int imageHeight = mTiledTexture.getHeight(); + + // Set scale + float targetWidth; + float targetHeight; + switch (scale) { + case ORIGIN: + mScale = 1.0f; + targetWidth = imageWidth; + targetHeight = imageHeight; + break; + case FIT_WIDTH: + mScale = (float) screenWidth / imageWidth; + targetWidth = screenWidth; + targetHeight = imageHeight * mScale; + break; + case FIT_HEIGHT: + mScale = (float) screenHeight / imageHeight; + targetWidth = imageWidth * mScale; + targetHeight = screenHeight; + break; + case FIT: + float scaleX = (float) screenWidth / imageWidth; + float scaleY = (float) screenHeight / imageHeight; + if (scaleX < scaleY) { + mScale = scaleX; + targetWidth = screenWidth; + targetHeight = imageHeight * scaleX; + } else { + mScale = scaleY; + targetWidth = imageWidth * scaleY; + targetHeight = screenHeight; + break; + } + break; + case FIXED: + default: + mScale = lastScale; + targetWidth = imageWidth * lastScale; + targetHeight = imageHeight * lastScale; + break; + } + + // adjust scale, not too big, not too small + if (mScale < SCALE_MIN) { + mScale = SCALE_MIN; + targetWidth = imageWidth * SCALE_MIN; + targetHeight = imageHeight * SCALE_MIN; + } else if (mScale > SCALE_MAX) { + mScale = SCALE_MAX; + targetWidth = imageWidth * SCALE_MAX; + targetHeight = imageHeight * SCALE_MAX; + } + + RectF target = mTarget; + // set start position + switch (startPosition) { + case TOP_LEFT: + target.left = 0; + target.top = 0; + break; + case TOP_RIGHT: + target.left = screenWidth - targetWidth; + target.top = 0; + break; + case BOTTOM_LEFT: + target.left = 0; + target.top = screenHeight - targetHeight; + break; + case BOTTOM_RIGHT: + target.left = screenWidth - targetWidth; + target.top = screenHeight - targetHeight; + break; + case CENTER: + default: + target.left = (screenWidth - targetWidth) / 2; + target.top = (screenHeight - targetHeight) / 2; + break; + } + + target.right = target.left + targetWidth; + target.bottom = target.top + targetHeight; + + // adjust position + adjustPosition(); + + mScaleOffsetDirty = false; + mSeenDirty = true; + } + + public void scroll(int dx, int dy, int[] remain) { + if (mTiledTexture == null) { + remain[0] = dx; + remain[1] = dy; + return; + } + + RectF target = mTarget; + int screenWidth = getWidth(); + int screenHeight = getHeight(); + float targetWidth = target.width(); + float targetHeight = target.height(); + + if (targetWidth > screenWidth) { + target.offset(-dx, 0); + + float fixXOffset = target.left; + if (fixXOffset > 0) { + target.left -= fixXOffset; + target.right -= fixXOffset; + remain[0] = -(int) fixXOffset; + } else if ((fixXOffset = screenWidth - target.right) > 0) { + target.left += fixXOffset; + target.right += fixXOffset; + remain[0] = (int) fixXOffset; + } else { + remain[0] = 0; + } + } else { + remain[0] = dx; + } + if (targetHeight > screenHeight) { + target.offset(0, -dy); + + float fixYOffset = target.top; + if (fixYOffset > 0) { + target.top -= fixYOffset; + target.bottom -= fixYOffset; + remain[1] = -(int) fixYOffset; + } else if ((fixYOffset = screenHeight - target.bottom) > 0) { + target.top += fixYOffset; + target.bottom += fixYOffset; + remain[1] = (int) fixYOffset; + } else { + remain[1] = 0; + } + } else { + remain[1] = dy; + } + + if (dx != remain[0] || dy != remain[1]) { + mSeenDirty = true; + invalidate(); + } + } + + public void scale(float focusX, float focusY, float scale) { + if (mTiledTexture == null) { + return; + } + + if ((mScale == SCALE_MAX && scale > 1f) || (mScale == SCALE_MIN && scale < 1f)) { + return; + } + + float newScale = mScale * scale; + newScale = MathUtils.clamp(newScale, SCALE_MIN, SCALE_MAX); + mScale = newScale; + RectF target = mTarget; + float left = (focusX - ((focusX - target.left) * scale)); + float top = (focusY - ((focusY - target.top) * scale)); + target.set(left, top, + (left + (mTiledTexture.getWidth() * newScale)), + (top + (mTiledTexture.getHeight() * newScale))); + + // adjust position + adjustPosition(); + + mSeenDirty = true; + invalidate(); + } + + public void setSeen(Rect seen) { + mSeen.set(seen); + mSeenDirty = true; + } + + public void applySeen() { + int width = mTiledTexture.getWidth(); + int height = mTiledTexture.getHeight(); + RectF target = mTarget; + RectF targetAfterSeen = mTargetAfterSeen; + RectF sourceAfterSeen = mSourceAfterSeen; + + targetAfterSeen.set(target); + if (targetAfterSeen.intersect(mSeen)) { + sourceAfterSeen.left = MathUtils.lerp(0, width, + MathUtils.delerp(target.left, target.right, targetAfterSeen.left)); + sourceAfterSeen.right = MathUtils.lerp(0, width, + MathUtils.delerp(target.left, target.right, targetAfterSeen.right)); + sourceAfterSeen.top = MathUtils.lerp(0, height, + MathUtils.delerp(target.top, target.bottom, targetAfterSeen.top)); + sourceAfterSeen.bottom = MathUtils.lerp(0, height, + MathUtils.delerp(target.top, target.bottom, targetAfterSeen.bottom)); + } else { + // Can't be seen + sourceAfterSeen.set(0f, 0f, 0f, 0f); + } + } + + @Override + protected void onRender(GLCanvas canvas) { + if (mTiledTexture != null) { + + if (mScaleOffsetDirty) { + setScaleOffset(mScaleMode, mStartPosition, mLastScale); + } + if (mSeenDirty) { + applySeen(); + mSeenDirty = false; + } + // Draw + if (!mSourceAfterSeen.isEmpty()) { + mTiledTexture.draw(canvas, mSourceAfterSeen, mTargetAfterSeen); + } + } + } +} diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/ui/TextView.java b/app/src/main/java/com/hippo/ehviewer/gallery/ui/TextView.java index 735b3ad70..b579240b0 100644 --- a/app/src/main/java/com/hippo/ehviewer/gallery/ui/TextView.java +++ b/app/src/main/java/com/hippo/ehviewer/gallery/ui/TextView.java @@ -33,8 +33,8 @@ public class TextView extends GLView { textHight = (int) mTextTexture.getTextHeight(mText); } - setMeasuredSize(getDefaultSize(Math.max(getMinimumWidth(), textWidth), widthSpec), - getDefaultSize(Math.max(getMinimumHeight(), textHight), heightSpec)); + setMeasuredSize(getDefaultSize(Math.max(getSuggestedMinimumWidth(), textWidth), widthSpec), + getDefaultSize(Math.max(getSuggestedMinimumHeight(), textHight), heightSpec)); } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/util/IntArray.java b/app/src/main/java/com/hippo/ehviewer/gallery/util/IntArray.java deleted file mode 100644 index 0b18003be..000000000 --- a/app/src/main/java/com/hippo/ehviewer/gallery/util/IntArray.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.hippo.ehviewer.gallery.util; - -public class IntArray { - private static final int INIT_CAPACITY = 8; - - private int mData[] = new int[INIT_CAPACITY]; - private int mSize = 0; - - public void add(int value) { - if (mData.length == mSize) { - int temp[] = new int[mSize + mSize]; - System.arraycopy(mData, 0, temp, 0, mSize); - mData = temp; - } - mData[mSize++] = value; - } - - public int removeLast() { - mSize--; - return mData[mSize]; - } - - public int size() { - return mSize; - } - - // For testing only - public int[] toArray(int[] result) { - if (result == null || result.length < mSize) { - result = new int[mSize]; - } - System.arraycopy(mData, 0, result, 0, mSize); - return result; - } - - public int[] getInternalArray() { - return mData; - } - - public void clear() { - mSize = 0; - if (mData.length != INIT_CAPACITY) mData = new int[INIT_CAPACITY]; - } -} diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/util/Profile.java b/app/src/main/java/com/hippo/ehviewer/gallery/util/Profile.java deleted file mode 100644 index bcdd4b96f..000000000 --- a/app/src/main/java/com/hippo/ehviewer/gallery/util/Profile.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.hippo.ehviewer.gallery.util; - -import android.os.Handler; -import android.os.HandlerThread; -import android.os.Process; - -import java.util.ArrayList; -import java.util.Random; - -// The Profile class is used to collect profiling information for a thread. It -// samples stack traces for a thread periodically. enable() and disable() is -// used to enable and disable profiling for the calling thread. The profiling -// information can then be dumped to a file using the dumpToFile() method. -// -// The disableAll() method can be used to disable profiling for all threads and -// can be called in onPause() to ensure all profiling is disabled when an -// activity is paused. -public class Profile { - @SuppressWarnings("unused") - private static final String TAG = "Profile"; - private static final int NS_PER_MS = 1000000; - - // This is a watchdog entry for one thread. - // For every cycleTime period, we dump the stack of the thread. - private static class WatchEntry { - Thread thread; - - // Both are in milliseconds - int cycleTime; - int wakeTime; - - boolean isHolding; - ArrayList holdingStacks = new ArrayList<>(); - } - - // This is a watchdog thread which dumps stacks of other threads periodically. - private static Watchdog sWatchdog = new Watchdog(); - - private static class Watchdog { - private ArrayList mList = new ArrayList<>(); - private HandlerThread mHandlerThread; - private Handler mHandler; - private Runnable mProcessRunnable = new Runnable() { - @Override - public void run() { - synchronized (Watchdog.this) { - processList(); - } - } - }; - private Random mRandom = new Random(); - private ProfileData mProfileData = new ProfileData(); - - public Watchdog() { - mHandlerThread = new HandlerThread("Watchdog Handler", - Process.THREAD_PRIORITY_FOREGROUND); - mHandlerThread.start(); - mHandler = new Handler(mHandlerThread.getLooper()); - } - - public synchronized void addWatchEntry(Thread thread, int cycleTime) { - WatchEntry e = new WatchEntry(); - e.thread = thread; - e.cycleTime = cycleTime; - int firstDelay = 1 + mRandom.nextInt(cycleTime); - e.wakeTime = (int) (System.nanoTime() / NS_PER_MS) + firstDelay; - mList.add(e); - processList(); - } - - public synchronized void removeWatchEntry(Thread thread) { - for (int i = 0; i < mList.size(); i++) { - if (mList.get(i).thread == thread) { - mList.remove(i); - break; - } - } - processList(); - } - - public synchronized void removeAllWatchEntries() { - mList.clear(); - processList(); - } - - private void processList() { - mHandler.removeCallbacks(mProcessRunnable); - if (mList.size() == 0) return; - - int currentTime = (int) (System.nanoTime() / NS_PER_MS); - int nextWakeTime = 0; - - for (WatchEntry entry : mList) { - if (currentTime > entry.wakeTime) { - entry.wakeTime += entry.cycleTime; - sampleStack(entry); - } - - if (entry.wakeTime > nextWakeTime) { - nextWakeTime = entry.wakeTime; - } - } - - long delay = nextWakeTime - currentTime; - mHandler.postDelayed(mProcessRunnable, delay); - } - - private void sampleStack(WatchEntry entry) { - Thread thread = entry.thread; - StackTraceElement[] stack = thread.getStackTrace(); - String[] lines = new String[stack.length]; - for (int i = 0; i < stack.length; i++) { - lines[i] = stack[i].toString(); - } - if (entry.isHolding) { - entry.holdingStacks.add(lines); - } else { - mProfileData.addSample(lines); - } - } - - private WatchEntry findEntry(Thread thread) { - for (int i = 0; i < mList.size(); i++) { - WatchEntry entry = mList.get(i); - if (entry.thread == thread) return entry; - } - return null; - } - - public synchronized void dumpToFile(String filename) { - mProfileData.dumpToFile(filename); - } - - public synchronized void reset() { - mProfileData.reset(); - } - - public synchronized void hold(Thread t) { - WatchEntry entry = findEntry(t); - - // This can happen if the profiling is disabled (probably from - // another thread). Same check is applied in commit() and drop() - // below. - if (entry == null) return; - - entry.isHolding = true; - } - - public synchronized void commit(Thread t) { - WatchEntry entry = findEntry(t); - if (entry == null) return; - ArrayList stacks = entry.holdingStacks; - for (int i = 0; i < stacks.size(); i++) { - mProfileData.addSample(stacks.get(i)); - } - entry.isHolding = false; - entry.holdingStacks.clear(); - } - - public synchronized void drop(Thread t) { - WatchEntry entry = findEntry(t); - if (entry == null) return; - entry.isHolding = false; - entry.holdingStacks.clear(); - } - } - - // Enable profiling for the calling thread. Periodically (every cycleTimeInMs - // milliseconds) sample the stack trace of the calling thread. - public static void enable(int cycleTimeInMs) { - Thread t = Thread.currentThread(); - sWatchdog.addWatchEntry(t, cycleTimeInMs); - } - - // Disable profiling for the calling thread. - public static void disable() { - sWatchdog.removeWatchEntry(Thread.currentThread()); - } - - // Disable profiling for all threads. - public static void disableAll() { - sWatchdog.removeAllWatchEntries(); - } - - // Dump the profiling data to a file. - public static void dumpToFile(String filename) { - sWatchdog.dumpToFile(filename); - } - - // Reset the collected profiling data. - public static void reset() { - sWatchdog.reset(); - } - - // Hold the future samples coming from current thread until commit() or - // drop() is called, and those samples are recorded or ignored as a result. - // This must called after enable() to be effective. - public static void hold() { - sWatchdog.hold(Thread.currentThread()); - } - - public static void commit() { - sWatchdog.commit(Thread.currentThread()); - } - - public static void drop() { - sWatchdog.drop(Thread.currentThread()); - } -} diff --git a/app/src/main/java/com/hippo/ehviewer/gallery/util/ProfileData.java b/app/src/main/java/com/hippo/ehviewer/gallery/util/ProfileData.java deleted file mode 100644 index c4288506b..000000000 --- a/app/src/main/java/com/hippo/ehviewer/gallery/util/ProfileData.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.hippo.ehviewer.gallery.util; - -import android.util.Log; - -import com.hippo.yorozuya.IOUtils; - -import java.io.DataOutputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map.Entry; - -// ProfileData keeps profiling samples in a tree structure. -// The addSample() method adds a sample. The dumpToFile() method saves the data -// to a file. The reset() method clears all samples. -public class ProfileData { - @SuppressWarnings("unused") - private static final String TAG = "ProfileData"; - - private static class Node { - public int id; // this is the name of this node, mapped from mNameToId - public Node parent; - public int sampleCount; - public ArrayList children; - public Node(Node parent, int id) { - this.parent = parent; - this.id = id; - } - } - - private Node mRoot; - private int mNextId; - private HashMap mNameToId; - private DataOutputStream mOut; - private byte mScratch[] = new byte[4]; // scratch space for writeInt() - - public ProfileData() { - mRoot = new Node(null, -1); // The id of the root node is unused. - mNameToId = new HashMap<>(); - } - - public void reset() { - mRoot = new Node(null, -1); - mNameToId.clear(); - mNextId = 0; - } - - private int nameToId(String name) { - Integer id = mNameToId.get(name); - if (id == null) { - id = ++mNextId; // The tool doesn't want id=0, so we start from 1. - mNameToId.put(name, id); - } - return id; - } - - public void addSample(String[] stack) { - int[] ids = new int[stack.length]; - for (int i = 0; i < stack.length; i++) { - ids[i] = nameToId(stack[i]); - } - - Node node = mRoot; - for (int i = stack.length - 1; i >= 0; i--) { - if (node.children == null) { - node.children = new ArrayList<>(); - } - - int id = ids[i]; - ArrayList children = node.children; - int j; - for (j = 0; j < children.size(); j++) { - if (children.get(j).id == id) break; - } - if (j == children.size()) { - children.add(new Node(node, id)); - } - - node = children.get(j); - } - - node.sampleCount++; - } - - public void dumpToFile(String filename) { - try { - mOut = new DataOutputStream(new FileOutputStream(filename)); - // Start record - writeInt(0); - writeInt(3); - writeInt(1); - writeInt(20000); // Sampling period: 20ms - writeInt(0); - - // Samples - writeAllStacks(mRoot, 0); - - // End record - writeInt(0); - writeInt(1); - writeInt(0); - writeAllSymbols(); - } catch (IOException ex) { - Log.w("Failed to dump to file", ex); - } finally { - IOUtils.closeQuietly(mOut); - } - } - - // Writes out one stack, consisting of N+2 words: - // first word: sample count - // second word: depth of the stack (N) - // N words: each word is the id of one address in the stack - private void writeOneStack(Node node, int depth) throws IOException { - writeInt(node.sampleCount); - writeInt(depth); - while (depth-- > 0) { - writeInt(node.id); - node = node.parent; - } - } - - private void writeAllStacks(Node node, int depth) throws IOException { - if (node.sampleCount > 0) { - writeOneStack(node, depth); - } - - ArrayList children = node.children; - if (children != null) { - for (int i = 0; i < children.size(); i++) { - writeAllStacks(children.get(i), depth + 1); - } - } - } - - // Writes out the symbol table. Each line is like: - // 0x17e java.util.ArrayList.isEmpty(ArrayList.java:319) - private void writeAllSymbols() throws IOException { - for (Entry entry : mNameToId.entrySet()) { - mOut.writeBytes(String.format("0x%x %s\n", entry.getValue(), entry.getKey())); - } - } - - private void writeInt(int v) throws IOException { - mScratch[0] = (byte) v; - mScratch[1] = (byte) (v >> 8); - mScratch[2] = (byte) (v >> 16); - mScratch[3] = (byte) (v >> 24); - mOut.write(mScratch); - } -} diff --git a/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java index 18281bfc0..2ed74fe2e 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/GalleryActivity.java @@ -16,7 +16,308 @@ package com.hippo.ehviewer.ui; -import com.hippo.app.StatsActivity; +import android.content.Intent; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.Typeface; +import android.os.Bundle; +import android.support.annotation.Nullable; -public class GalleryActivity extends StatsActivity { +import com.hippo.app.StatsActivity; +import com.hippo.ehviewer.R; +import com.hippo.ehviewer.client.data.GalleryBase; +import com.hippo.ehviewer.gallery.GalleryProvider; +import com.hippo.ehviewer.gallery.GalleryProviderListener; +import com.hippo.ehviewer.gallery.GallerySpider; +import com.hippo.ehviewer.gallery.ImageHandler; +import com.hippo.ehviewer.gallery.glrenderer.TextTexture; +import com.hippo.ehviewer.gallery.glrenderer.TiledTexture; +import com.hippo.ehviewer.gallery.ui.GLRootView; +import com.hippo.ehviewer.gallery.ui.GLView; +import com.hippo.ehviewer.gallery.ui.GalleryPageView; +import com.hippo.ehviewer.gallery.ui.GalleryView; +import com.hippo.util.SystemUiHelper; +import com.hippo.yorozuya.LayoutUtils; + +import java.io.IOException; + +public class GalleryActivity extends StatsActivity implements TiledTexture.OnFreeBitmapListener, GalleryProviderListener { + + public static final String KEY_GALLERY_BASE = "gallery_base"; + + private SystemUiHelper mSystemUiHelper; + + private Resources mResources; + + private TiledTexture.Uploader mUploader; + + private GalleryView mGalleryView; + + private GalleryAdapter mAdapter; + + private TextTexture mTextTexture; + + private GallerySpider mGallerySpider; + + private GalleryBase mGalleryBase; + + private boolean mDieYoung; + + private GalleryView.Mode mMode; + + private int mSize; + + private boolean handleIntent(Intent intent) { + if (intent != null) { + mGalleryBase = intent.getParcelableExtra(KEY_GALLERY_BASE); + return mGalleryBase != null; + } else { + return false; + } + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (!handleIntent(getIntent())) { + mDieYoung = true; + finish(); + return; + } + + try { + mGallerySpider = GallerySpider.obtain(mGalleryBase, ImageHandler.Mode.DOWNLOAD); + } catch (IOException e) { + e.printStackTrace(); + mDieYoung = true; + finish(); + return; + } + mGallerySpider.addGalleryProviderListener(this); + + mSystemUiHelper = new SystemUiHelper(this, SystemUiHelper.LEVEL_IMMERSIVE, + SystemUiHelper.FLAG_LAYOUT_IN_SCREEN_OLDER_DEVICES | SystemUiHelper.FLAG_IMMERSIVE_STICKY); + mSystemUiHelper.hide(); + + setContentView(R.layout.activity_gallery); + GLRootView glRootView = (GLRootView) findViewById(R.id.gl_root_view); + + mResources = getResources(); + // Prepare + TiledTexture.prepareResources(); + TiledTexture.setOnFreeBitmapListener(this); + mUploader = new TiledTexture.Uploader(glRootView); + Typeface tf = Typeface.createFromAsset(mResources.getAssets(), "fonts/number.ttf"); + mTextTexture = TextTexture.create(tf, + mResources.getDimensionPixelSize(R.dimen.gallery_index_text), + mResources.getColor(R.color.secondary_text_dark), + new char[]{'.', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}); + mUploader.addTexture(mTextTexture); + GalleryPageView.setTextTexture(mTextTexture); + + mGalleryView = new GalleryView(this); + mAdapter = new GalleryAdapter(); + mGalleryView.setAdapter(mAdapter); + mGalleryView.setProgressSize(LayoutUtils.dp2pix(this, 56)); + mGalleryView.setInterval(LayoutUtils.dp2pix(this, 48)); + + mSize = mGallerySpider.size(); + if (mSize <= 0) { + setMode(GalleryView.Mode.NONE); + } else { + setMode(GalleryView.Mode.LEFT_TO_RIGHT); + } + + glRootView.setContentPane(mGalleryView); + } + + private void setMode(GalleryView.Mode mode) { + mMode = mode; + mGalleryView.setMode(mode); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + + if (!mDieYoung) { + GalleryPageView.setTextTexture(null); + mTextTexture.recycle(); + TiledTexture.setOnFreeBitmapListener(null); + TiledTexture.freeResources(); + mGallerySpider.removeGalleryProviderListener(this); + GallerySpider.release(mGallerySpider); + mGallerySpider = null; + } + // TODO free all TileTexture in GalleryView + } + + @Override + protected void onResume() { + super.onResume(); + + mSystemUiHelper.hide(); + } + + @Override + public void onFreeBitmapListener(Bitmap bitmap) { + if (mGallerySpider != null) { + mGallerySpider.releaseBitmap(bitmap); + } + } + + @Override + public void onTotallyFailed(Exception e) { + //e.printStackTrace(); // TODO + } + + @Override + public void onPartlyFailed(Exception e) { + //e.printStackTrace(); // TODO + } + + @Override + public void onGetSize(int size) { + if (mSize != size) { + mSize = size; + setMode(GalleryView.Mode.LEFT_TO_RIGHT); + } + } + + @Override + public void onGetBitmap(int index, @Nullable Bitmap bitmap) { + GalleryPageView page = mGalleryView.getPage(index); + if (page != null) { + if (bitmap == null) { + bindBadBitmap(page); + } else { + bindBitmap(page, bitmap); + } + } else { + if (mGallerySpider != null) { + mGallerySpider.releaseBitmap(bitmap); + } + } + } + + @Override + public void onPagePercent(int index, float percent) { + GalleryPageView page = mGalleryView.getPage(index); + if (page != null) { + bindPercent(page, percent); + } + } + + @Override + public void onPageSucceed(int index) { + GalleryPageView page = mGalleryView.getPage(index); + if (page != null) { + bind(page, index); + } + } + + @Override + public void onPageFailed(int index, Exception e) { + //e.printStackTrace(); // TODO + GalleryPageView page = mGalleryView.getPage(index); + if (page != null) { + bindFailed(page); + } + } + + private void clearTiledTextureInPage(GalleryPageView view) { + TiledTexture tiledTexture = view.mImageView.getTiledTexture(); + if (tiledTexture != null) { + view.mImageView.setTiledTexture(null); + tiledTexture.recycle(); + } + } + + private void bindBadBitmap(GalleryPageView view) { + clearTiledTextureInPage(view); + view.mProgressView.setVisibility(GLView.INVISIBLE); + view.mIndexView.setVisibility(GLView.VISIBLE); + view.mIndexView.setText(".3"); + } + + private void bindBitmap(GalleryPageView view, Bitmap bitmap) { + TiledTexture tiledTexture = new TiledTexture(bitmap); + mUploader.addTexture(tiledTexture); + + clearTiledTextureInPage(view); + view.mProgressView.setVisibility(GLView.INVISIBLE); + view.mIndexView.setVisibility(GLView.INVISIBLE); + view.mImageView.setTiledTexture(tiledTexture); + } + + private void bindPercent(GalleryPageView view, float precent) { + clearTiledTextureInPage(view); + view.mProgressView.setVisibility(GLView.VISIBLE); + view.mProgressView.setIndeterminate(false); + view.mProgressView.setProgress(precent); + view.mIndexView.setVisibility(GLView.VISIBLE); + } + + private void bindNone(GalleryPageView view) { + clearTiledTextureInPage(view); + view.mProgressView.setVisibility(GLView.VISIBLE); + view.mProgressView.setIndeterminate(true); + view.mIndexView.setVisibility(GLView.VISIBLE); + } + + private void bindFailed(GalleryPageView view) { + clearTiledTextureInPage(view); + view.mProgressView.setVisibility(GLView.INVISIBLE); + view.mIndexView.setVisibility(GLView.VISIBLE); + view.mIndexView.setText(".1"); + } + + private void bindUnknown(GalleryPageView view) { + clearTiledTextureInPage(view); + view.mProgressView.setVisibility(GLView.INVISIBLE); + view.mIndexView.setVisibility(GLView.VISIBLE); + view.mIndexView.setText(".2"); + } + + private void bind(GalleryPageView view, int index) { + Object result = mGallerySpider.request(index); + if (result instanceof Float) { + bindPercent(view, (Float) result); + } else if (result == GalleryProvider.RESULT_WAIT) { + // Just wait + } else if (result == GalleryProvider.RESULT_NONE) { + bindNone(view); + } else if (result == GalleryProvider.RESULT_FAILED) { + bindFailed(view); + } else { + bindUnknown(view); + } + } + + class GalleryAdapter extends GalleryView.Adapter { + + @Override + public int getPages() { + return mMode == GalleryView.Mode.NONE ? 1 : mSize; + } + + @Override + public GalleryPageView createPage() { + return new GalleryPageView(GalleryActivity.this); + } + + @Override + public void bindPage(GalleryPageView view, int index) { + view.mProgressView.setColor(mResources.getColor(R.color.theme_accent)); + view.mIndexView.setText(Integer.toString(index + 1)); + bind(view, index); + } + + @Override + public void unbindPage(GalleryPageView view, int index) { + view.mProgressView.setIndeterminate(false); + clearTiledTextureInPage(view); + } + } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java index 38f3c29d7..e49e446d2 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java @@ -281,7 +281,7 @@ public class GalleryDetailScene extends Scene implements View.OnClickListener, if (v == mRead) { Intent intent = new Intent(getStageActivity(), GalleryActivity.class); - //intent.putExtra(GalleryActivity.KEY_GALLERY_BASE, mGalleryDetail); + intent.putExtra(GalleryActivity.KEY_GALLERY_BASE, mGalleryDetail); getStageActivity().startActivity(intent); } else if (v == mDownload) { diff --git a/app/src/main/res/drawable-hdpi/overscroll_edge.png b/app/src/main/res/drawable-hdpi/overscroll_edge.png new file mode 100644 index 0000000000000000000000000000000000000000..1952e0ed3ac3e426b4e24f6e258b2dd3c40fa722 GIT binary patch literal 705 zcmeAS@N?(olHy`uVBq!ia0y~yVCDz1g*e!Nq-@P2J|M-C?&#~tz_78O`%fY(kk42g zF zhxiw9iD$#+?SHfN{p1?oPs+>rKbyGEPq9D#TqXY54e^aC2X3p(zPc=U-tlp_1o&TuRWKXT(Z6}xiV3r?a7}<7j`-5Y_z+cHgB`a-PBL9Za3rC?X_viO|6Ts z+`IbC_BqwTSAJj7cbJ`Y|5MPGFS^r>{#PEp72}IPYvHb**5J* z-)hU_bJW*u{dR3fX|!d1;mg_>EBEaEk6SnEe$BS$nl9e4vGADp`S&_}?T4f5wgIDp zc<>Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^0Du5VL_t(|+U@<<(k#o86^wd*bKRYD z{~xp64L>v*8m)yj82TaM4qgEaVbF%wqEQVrs_D1bv*KK=%37Wy$8aB!Ro_%A+^noJ zLwLA*L}vO3kBr>@%3t{_|G$WMGk+iMKXshbz7u(;-?nXUV~p=2;%(cu4-xTUjPaK8 z9_{DzZQI@=;%$uawr$&XKi=+n+n#<;d!*lww}^;4uh`G;^dTbR`=URjk1^uT@1DKI zop(ORG9#tsHXg@!nF8|0eteg4Vgu$_}$d;P3KmJ{1UUa1}) zAKGH_VBTI=+2~%L_03*>gwVNY7yDqh_qJ_YKBsMDnX9(bILvYklmqzX{-O4RF>>I? z`isaEVE0{D#y{tucr$&PJ~-)H$%w4;Sc79WP8pBwE_RT97^%Or?P>orwXfunF<#bT zHpn_F+c8;Ez1)?%z60wJ{ttU9+bbRNZ77b{;<)$c$nD*S#z;IK=R3dL$Ec?{OmQq! z=lQhkcN~jw|9uq2x}fh~XOQuaylq`s9c&}c*F^071G*2e`4D|Dl3k8BRBpq^wJG#J z*amG%^7rFx--CRt{VXfFj>lfFvW2qqwr#iWy3KNBUDNe+kneP1eqTS!_$ZUEeQN(* zhrPYT>u}%9vJ`zm^-A&{_!eU&x0CN5r+$F3H&Xqq_nyA@#Ypu>lJl0!j4^J>9{Kp= zU60#6{dO;VyXWEYM>x)D`}t4P`A;F8mB(||{w>MGg8_+%qjT-F zRh4sjJky3-7kP|p>`K`>TYM^V+j>R0O8>52#mA8cuRpgvx898Wj@((#QSe~$IWkvi zu58_T)o-^8Ho|^qI%a!ywir>5rLLZ%uWQ#^Q#Y5}!f&f9cO&ISQ!b|s@k0>tF`a*e zbO$`l{%%DY0}T0m;PH2N)bo}yE2^C7EqbSJFL#5oZavoFZ;9W2&IaTS%4TQyE%Ds$ zM%z-py1C;8w&&lV%pm`rV-5>KW(SjkT-zy3Zlj z4_V$TeZhc2CATVDU84$YbTT@QwX&Vt|6Lo*rj@P?L{v6rwz!dULHIiQGMhTKL1(@K z7OEZ99^-Wr`2*5!B9G1BV>V z!LOT<&j29jZIGS^H*@myF{0V*q^k!uyGgnaIF#c?_$jcmmk+|5$rlArEXU5(>_oP! zGyAF@^6UXK<7i%W5Gto=cIHYs92Kwb;o4mXPTAQ9c%~bv%N{%mtX6s|zNn7_;9g0e zqOH!czcQX@^0CY-_^CRt03Ph#gAef;X9Y>kyOk z1xMK4)|7L=f?FTcuZ)G!{HuD3FFLVIrq1D3(T56bur?fB*tOV2J38CVJ*novI}ryCeBAoqr_x`Pa>| zVP{61K?Cy7Wt01>LPNTqwMrEhY>+f=cK(AWtEM)kS22&v998= z6=`aQB=?;fL&_0l#Ks8TC{*;N;#=iA(TXff?zgJ{x}{MOdaN;dmBXOyiu!aRW(3UL zgAHw{q8-)s!1S+Xie0Jpj4@j{GItXN?EW$?@R=nA znjL#}{g>~HxA62=*Ah++v6*Nk6Uv3>-Lr89ggIl)m4V4z-Jgb0cE%Q2A9hdeWbY=d zT(Hu~T0J*sK?37713)T%oes**IIfxPJI6Z%2evFIJNF}eXa82@D{!Hr3`5BG&?`qC zb^sA@%xDw;`*HrM@~m#oyOA_CFj&XG#aXWGXub&^S+0+9cCIrI7P%OrU2Fr}QV*pr z{EqTeAz0Q2AA>)1*uz0B39BAjqbY+nxW##FIDm@XV7jFY%4uXX>=iLx(Du$ltO7Gw z=GO3WuNS35i1SL;%ISIbA0d}e62UtdKGEUE}8%Bp0>>&A(WM(9Zj#iIg* zm99$O0G|207X2J$3BW*SDrcT-L<5g?5=(Fyu)XWGd3BI>Uy~qd5lMQpJTkbdnC$$?PlLZ$&qc8 zo$ZLTqpqCxD%zly9?j%o`_A$wx@0LL#&>ak7a$_yuyajHd+clxoK*Tp_|Kj7k?e?~ zj(2Av%Q7Nj+;<+@NZovc$-v=uS95<$f4lGA^cWOk_nLi&ro6+#25*lZ=F8`ax_*sL35%vTbF3>@TsS(@pK(gFB8ieD=Jo)8iT;RUY?C zxJKo!In_=|>6|)p`~4Aj*a?`#Ao+RcBKiVi;`4Y|-pf9CH})MYeeW9(r|O#r<=tJ_ zn8aOaNZ%eDt|Ze){Mn96juXv*fEv>S+s^G_`{bE>>d(C`QoeH1@-9UAeliNZS-+vY zL*?Bo9~?L6pT{!=`?bm9g=NZ`@>X8g(7_p^2k8|k9M;i3Y<9L+r7*!mr1)Yjrd`wr7_0%2z8w30xQcvz)zzF zCbwO`eW#~%JW^iP>wEA3k%ve^y}|nsxg(gTpd5ZxX5S%ci*(K22UdPBV$Z*2r|qs} z+~v$S>xUlO58JvvX3oHZ*OcCIzNOTe&-!{>~x4o-1*?vYuTy8?cN^8 zZ*Ol8=i}||(L~;+EMEktt={fwZ~OUOmR#>~q2Aj%Ii-8MWXrSdPKWIZvoi&}4szxP zS)>~mbMElLk;h_kboikAp-uK+$zvLwtL^RW4R4a$b_9D5R%rj+PrJUE-#zazHWJ@0 z8Tiqk_xh)C!}NyhB`Yw9jJdBLAY&i9*iNQCRx1HFQ^-RSZ&*O za?J61$oDPi&xeC8Y$Ug~Ob>M&V_Qnk4tZ3B4@hv zbeHkAKi}YfG%{ZTY7a8yXJo!_k>}sz-k9_{-DB?e*a5QSF|h*#1R$raP7@e>Y&Dzj zLvRlsS=V%3kKN`l5D#M<#>HW5?_(uhJJ_$RpYhpyV|qfLAecV28NoqBx-akj`p`4= zHEuh*+xakt(^%e*Z+E#5&i1x#IsM?c?{$JW_uIC8jCgG0TJ5%U6KU2j$#II5?7Af# zAK+m(>Kpv;HwtvD@+>pmM;*%L|9m6K??4=8mr~pLKjOF?X-gNuqvP&*Z+AnWbGTpe z8ENnQZ{zqpcmR{VvD6+q+PD2?lI(E^{U>L4cP0*z3w(I&7eN9LTe{%3d@(Tl?vCIc z@dmWVoQ{LDn4Mg3^iMar>{RUcuG~RM|6Qg4#}pkpwC_mzoF0O3(|@#`^*9W!)9FJ9f#~t9UK_!pGlh{P(A@2r0nS4&+#6Eavi`( zzOBO;JWSH;x<+y)00=W*{NcdlF_Eu?Z)~X?(ZjOGmX^@BJ%{uM*3Kdu~Yia7q0!C@9unI)O`%N zM|-ew(p|| ztgXk#;^O|nxcK2Carpg*tWWG|_xkxGZX1B2Ee+7eY%w~kiRVr^Dv}+9jg&p4rJFaM zh2QyrqjBH?5BBV-;Zlmz>~el!XPx8dP~*(`mg;0(^38Nl&ok5baW_RLdyQk{<@A9% z1T2gvJbdeE(Da}w`t@Pk1Y{mgVqyE;My(7|kqcC{m+i`&)!h`i4Dd!?hyJL>c_nhT z0|3<1cqDc^MUGNmvRP6~w$71v>vVk3rd9c(-&DVR3Od-o18nHbqh6@TC@yr!V^N;d zl0E_`4r6C$aZekSKIkwer)TGJvJqZyn3l>O^a3-m$jWJ~XJ6HjJKJ`Uvb1jI;Q-)N zo_*|Xkg}Udr;#{lpN<{kR3gaAj^)F~`Q8}E<%J=};%Q7`Sscb01VA}l?QpQA>hD~K z^=};Sn}?;$0FDk5Dyd%vDUa8}V-hXvw%?dk*_=+qSX&^}qht|37gA4;_H$ zJ|L$)^d^BpcpsC?{Jtw>V1S3|5+rYf^nkKaq#g|D)lv6?`#m zgeMO>9#QL<^Isv4146bYze~GPhuOuE3HxzGEx&Y>Cvr2V zo}KAvc(4nFIVZcGxoib2lq^Axl@1~51e7_eqFnaDn~%|T^Mzg zT$RJgY^r#U=A4o0$D828Y>D=&9st#YH6N=7cV#0*)fny^6UQ0EhwfEp2d`n)2d;zQ zQYEk2(S+IEwG;NUTB4cl88P3MvX!#?j5A#Ecj~G3(FPq)cD?6oM?E((4^~f+a`>1X zbG~yeIJTX+7CZTz@zCkr0Sx!P=-xL~-^~Dpj<1p_it?4rDsQ*zCd$tMx)~iuajw7v z0tp8^bh|7m0KndJm;nc;e_?(`@z=b zGoP>Z4%DzZC<7x0lvd*x`_2K-ol}$R+(f$KtF~j#WxDjNFLS0`K;b$Tj*M=9vib@X zvwGDvTun4M&YiML*N)>rbs(_fhq^leC?9tYf8~I8Ku&>dCJW$js1wNR) zDmim|?nHvBTj}riA(L0hGDx|6+_gO`kK(1k!`?sH$=*oXe*6*A*{uFY$giCLYDp5? zb*TdsN-hUPL8cEqGe)V}I;CcVYDEk#%Dtm8c`OdLdbt_#Rkcn-p>o!b& zSNhPoKG8|tsRG>UKJPgE*nU;MbFwRaJ77`WN0nWwdkf32n8ZR_E-Jf*;MhU_;wC3rYZ2U z69ZgK&JG|bS(xqI=#*-!i%NF9J4XZ0o&Kxj#X8PJNH?ZfUIoI?v8)&iO2$WByAeUnOU!Lnoth(3Lz65Zn3P%(4;nIO)KJYQwc-*S|M||LlFg0}HGj z_OIS^$mgAdUGAO~=MT4aOOvYQO%=#+wrrgO4iV>NOVxnrmN8Y}AoJ>?6kW6-|9^lq zEYFrS?I0iz=(pelJj=tD5}~~6;e+KFFsLp_=CD`JM1*!0P$mT=)H-$rYC@E$fDF4a zDyJW9>gZU3iq0OaJtkuq^_1+29N?tdQGkXyq!mbDv-ws3;P}CZfC8Nru&!uCEuXSc zcdn=cop_JHbSAgsw9kwwSI=i0GNq@>Yldd!?8;oV@vJV&ak>%>sQRp1HhWbk1p+oR zT>%^9ucD=nZ5c1jzhVP?_N(;jo{GGggRE>_+3r=2a|IBQ2a904AcyJMIrF()C6@#6 z957PJdn0*+q_fBbbG&EYaj4#XVBmu7q%`yXLkAdW|9vO+XhuWsPB#M(Xh=o-1@<)jaj-+rFQ zOqRd8z?mN1>}`m0s!Ro1GM~zUM8N8R7T3vf*&W@FCIStFciF}N-I1l3P0m}ND>B3&z zj_~ZO`dp2#YDr23Djb_++3+UAWJmeBD4PODOc#~kU3W9i5vDscg^E`NaG6Z(zXB2+ zz(bi>bg^@NqfUEU*JvM38(Jo3cTTimpNk{u*h{0 zTy?rfcn_OS7T2j^Hbm!F@!y(!l~-L;m2=v)=k^cUhh2;Nx$|JZ%D`df zZ7_plGtBW0+BMTU9U;u`J2Ug}r_+rE&U&KnEOgZw9qaIz|LF(spmZoNXvz}T0 z3RobqXo8YoJ=D84*bAS^8O?H3HzjwOgtBRFqXQv1-JS7L;~vLZ2XH#wn6pvQGtM;D zb8OLpqiS4qaxe$ut;w&(Uo{bMb(Y*6+cVTTx4Df9=sM%rNt=m)x;C0AJJZ%~n;BkJ z*(%+!Z|5{2U3vGy)vE$0Ol}8sM#E=|UU%hyv-BW*mHaFMH3NDwp;N5%%4L}|?Sddj z#u=xZ*{1@vm0d@}v(s1Up}+}qnwc!w(T;SCGxr}!9y<7#mdkhVF(|O%z6|ZW7~S4a zF!JEu6cKqjQHY4Shup{XKMFqRyk>e!`5kz`*>e?zV9s`~lZ~yGR)iO;cUv*z&>D@TPIu(Fn<4rxVnN2&escfUl zMw}-JW}Zn*u5SD>Ii0qgzI5eu)7>)NeIvqOF;Lkm;Fvj$uB=RE#k&J1iU;PYnPrux z+OC{lSLX=t`eQP7V99N}vt_5h93a}0}~1~ z%q~lEUyw!}SRa++OGO^Kn_&hF=zOyq(!Yzj9F37*ON6qYB(Qx>xyXoM73RaiHpUvZ<(n>k#I&%0``B zSDf9dol5RmQ0_P#ZksdC`0Vn%&Kb+ZK#?P(>&Va4#r(?2M!LbVa^@=#Pyv8h2bY0b z=bFsroNIDKfBkgrIl4I4vfEdxj?=CSZgQS`?NttWXG;ZUoV*I)-J;hiJO34UK;VFY zp?XPr=G}(w#p^B#!G3Ok4i*iq$_eUv_3`hLEN^jUDxjkzJx)Q|00 zq#_RLyoxAP+p^w@|CxwG_S>g`Lj;dJxDS*)`jC(Fdk|T$2o4OGBe%cfszz5;Ujn7t>V!taj5SvgF58k=d#U@L;ZJY7A&)kBHp zW4l-uUUShE~=#Js4=d}j;QY~%FfR6txDcb|0YmXZ_X3sW^L{~D+$W<)^t?ZQ zia93l14Q~BM4PCcwEryT7tNZQUr zeaj%*2YEUUU1c+7lUzqdiz;0!CqcEb>sUQ7I$b-ta+whP)C0zuiD&i>!LNG2RpYbM zO#w>foK-h6=IA(pbr@w?T^9sbQLApUrn9Hp$1z#P0Z_9Jy|M{==vPi_<&>*yvje9A z?J=1heWKvO9J6Prb4t}cGCM-~epxwZojuT|m8`RRbZu7koHnkcW4|hAOW9Suu&(ZR zl{{?uvkO?*n0K7U3OuQL9XJT1o_glyd$_Whie4z2Ab7~X?1b-S)Y2feyhy#fP%T|@ zUyANtmPTEe-cJ8~|HAaPhabk+kH;8ei-@spTkOXX5%+V}LAxQ@SE#d7-VrW|sq*)> zzk~BEHrM{s#GvB~AD9ZO@B{ZG3N#N5mr8==8w6*B=SAWxXDCQvGeO zl=E4iMa0`)?q286_Mx$D+skfXt4G=G2O$p~KE}B1Sui#>Y(I+$I-*?k;=k8dz-gBu z*p|b4`*)e%h|LdWk$19T<`bDu((z;uChuba9s86zl6U*>*W*csd)mQ{a1F#o77yFndeSWez-a~f1VEp9%+v{O}JaozS$k$i02kqxv4*Qwtd+N_7{oy$7>ZN{A zyQ^$W#-!7LYqjhwm>fD}fsBtbcm2l?EKcJc?+1^5#dJs;&_=HJc)%Cq@6>OJZYUp& z|1G88k}a97N+ExpQR=O}2?gV& zv=g~UC^-+dW%q`ZegoTYV2^zLaN+npV-T74ag?)eDLtnh?3u>JNaNyQgIq`0HIIXl zSRZsHHaz8vdtDwIr@qHA4P)pu>!107eRE&k(tSJI;~;y!uHt+zpx0RTx00VXK(2iZ zAyC-+aU}gmMBH}1_j3FBZQHiny=eprBLDy--}7U9zlsI{fLg{>MH*DZfq{m7OyvH~ z{dwxM!@sa2`xs~Nvxzns2s+78=$y-=&IhoI zcE*RTvSE^qilqEQaNMXI4he_nkVgQw#hd^*bzNQ}1XWC@t}e(kRGDTxQ1F;+dICQM zG4MZF9~-=MBjUP1yTZLA;M$ZxH=8u^7{IFn0SEBrsKojO?T2HX0Vn|wDo~^VMb_t_ z3u&9`1NRX%5mEuBNBabPWxHf>v*#W99Qq~_kCW4$^gHkcU@$NZ<;!CM$1Bl$psY!c zk!>ZMP6PrtW*J~YyWCj6raHN^ciT`fl0i>8-|O5`Kixp43>+LM{^9s<+jfiZCz8~= z3qK7WZK&RFz-R=@bpQ}qw|#u&dqLBO2b*ty^KbsmgY#Pfi1EXWSDs}@An|axBHk4L1SGb6yq8UY;i22zCVSp)mtDVn!+rx>4d8JC6xoUU;W{~# zWgz6_RPQ{%xk7-#00ugt*?HR%zk?hCc;F5B#Gg356qLXN^k7qElOhdy@3LkPbpQd` zq1(@y!w#~tc9hJRc47-4>LecmEtIM9@fbMEa)VPAF!oPQJfxM5E!eCCR~3==H)M%G zL-7INshs3(;}5T0*F9fFNzhR|<*V{c?<`lq>@3QXZ4FMsDG!}NkOOB5PabUssjA;u zUT%}wiKWwr+7IJEm1)O>k_%+V>sZNtD3ffb_@8vfzJRes9c;X>F&-{ZBI79k=LrW2 zn6eBC1SNaQne+JJ9yGHI?BP&Hy0-)G2Ur0oUxDSrGMenJF6SxC4dQ&Z;!@Mok{uzbvEdW(|97_`4Blt;~@Xj9hLSx00w*h z$B6j2ZQIAYeAUa*?vkYnIH(u550Qr*K%{=b>$wFEfB7%}H3!2{e#%Cj!BM zLNafI8>ZNS;_3HeR@f*~u9AzhurEdifRzAy|9~4_r zk5M(YI@y&T9hfK`bR$ij=XRaQK?iu8Jk~yQ(6OHs4;5u_0NOKku>LUWFnun8jz*8H zO9${?-8QyYox3tRI?R+&GR%-`*XP0~+HO0c>`EV2&au-KIUW8=E>+i+1^bxI=%Sn@ zaA;&ve3VR9WT_~}c;UT=wNvqP+EscxJUV&Mh7t9P&#rw~+juO&O{3c^pPW{``w)%% zA@V-Pd0gao8iqJ`c2`pGIw*kP0Ed|m!e!vV-f`&q=F|s&=`a1Ih=};^?d|Q92@!}# zTErm?bh_9RdSkmV9g5z6_!2eiX!h{DHD&ezu_M+u0NBjAe;~=bz6SuYZQJ9!3TYPQ z@$yriiH8~8$C}Z;1Bl6GlFDRg?%V*K+&uZB6_-v zO7!nO3v{pr%-Ur+*>Z!o-Cj5&A7>i5Uv`_ZLWx(F?eU*xF7`+h&aC0gE1jXtL?SH# z=cl?jLlFFdkG6fx%5KMyu9P>mGq7J%{X85>=MehyH2akGPvZ>7|6$Cb4RQ7`>G6mX z;S4Aa1=Uy25Q|1cls9agEv_EUve|6@t9s^pfRcA&HhGXKEf{xWToN87$%hWDcitlG_A9-Lq zoJnTS0`yn%b+e^31$OdSP<_Vy9T`DV5d;$0JG9SioMnOI$GZZV2b(bld!i7h8ToYX z0Ek`Zk>v!LcD}nmS-srv6`R#U0d3*kD+bxx0vK@3S z&QFwiLz}1NOK3Z=)n0#7?JyrA+u&iSZL7dj9%GLiEP|HAU(E!b`jgn@u*7P&&CV~2 znt5fw(8!JtY?SY@Wi<9jzHZP#0Fd!E?#pw!v4AE}PTwS-&qkG#yX%5BtLni6=}?~4 zXJyb?Qlf_jM{LPPrI#8P`My4w`i0Y`+TJH3PL3F+5ilUTF~~JcoZ);8O5loV>0WbK zwg+_%FJm)jobW;Yi7AhO4P;QxIa|6l^7z6Do79GU*&3d&Bk3~WUUP%-b(-Ws*`U8~ zFuoZ0kW1pyxIGw=fi39g19*f3am=j?5-pLjoX#fJrRVhJFL ztQ(V^9T$3@fN75q~U&lyA^d0ZD&OZ=*^(&(ANp{WRP@vAA((DU|$3!2%_*B8gc9! zCi~$9VURU%Uz}&^^9$1GoFj0^4t^D3m`!uuaj<}c0Jtr1`161M&+{3~h={-Qcm7TZ zAo6hsAPA6nOZnBi1|P`zvoBLWcx^xI^n{=V--E#896iZ8zbQNH$7yiC4S2A|(E&lA z_O|!sUM@S&ssB#EB0Ji9=O-TOMMvgzBS1kggF7MN?ECIKyrn^z!PEe`4rB5(SdU}x zG=?i4$)Vj8-(+LdEjvlr?tt^%p1AbrEtf~2m)kx+!_G7Ep#LD{+0HanACPs*Db7wF zIDE>1+8q%E_)2G3ILngP6%s&}^}%V0TE4!(89CS_=cB_coVaX1=3Lge}%eeiWoeLFFL;I*G%id2D>QK26%pTeYrj`k42z%dm+IIFV1h|JUu1e~DUqv%%_ZNTw8 zpnZI|VFv>_O)ekWzK>cc$6uZQRFt{J{e|nh{b%2C$ROx4aQJh7?$7aiT|W7{fA{ZR z1rYZ>`N6p+$1DPY;Gx_pDfAMhE-InUtF2o%k#_ijQ;IK;Y+H&XB*Izw{pQA;-vf96 z$Ney~zQJri+;Gu>-^+|49LB6$b~y2WZ!?XN{hJCqaGZAF=kLX;cA7=Q|efyA?o*g-& zh08Jz04>!)eb9lF9fLqh*bjH}$~GU^E;`c%a5(4{aoW`kub~qUI3JbmN%_n(1BJ&s z6)-OLS^C^pkF8^sy>}o3?Zx)P7NQ5)vrTio)Xt$^ZWjU9I4&K_z(j4wnt=p+w*Y}d zcJjNIo%7bLD*Ev3%h4Ding$Mk_Rs!VdEK1ue1Grn{XLovX%7K0rb$nU-Rm7^|QKhkV5J0)I zUeQyPor$t^w#!auC%dvk*AG?us*LK(t{xuGwo{Flc#;>h*=E!o;pyh+@&FjXhdJ~r zzp_o<(Fp6bGy6r^Y$s(u#iRO1UArBbZX~^0?!%n*>K%mHB}wWl((V_fhtMP9Y**G- z^t$*nf9B6j&qBuE|NDPm<;?saUI zE(j{nA##8Q>noL~Xjaxe?M?8)2cc?X=h5jrBQukAFQf7lU)D~gR}^Vg9_o({0&~h- z-dF5c&1P3^R1V84oMt6o1;AW8y(fJM0H$){H&G^+dxZnalg%Y0v0_JlXiH zZ0yR(oHLhiRZcmkuB@ZshvhmD;pmc`s0vI~ygT`@O?1@rPKuRI4hY!_9-}#)0XZt2 zIp`fPk#Fi^cD-SMn|!;R>7894muKmDiM zdzpMl{o*hFqRM|o1Ofp>1sP3Ro#l3T&B)TxTah;#iEy3hY9@R}e#i0cz=p%Ol3zLf74TsX@wcL!>y%b{IeJ$- zD{#YRgTtuTwW|PDW%sU*vf-78#EeZ}>Ew4ZJk!>!qaC8GvW??BSB{yJcSV2ZTy!8o z>C5al|LRN9YRgykV)U)hX&N~E!Y}-Sb?+!|`oH*#zc}*_#N%b! zh{(s4lRX0_3n<^tW_S@!b^h zPQhW!vNg#`z7cWU?Ml5bkjKCkJIkeJme;XT4vc=OAMu zLIa`*@o;2g=zcy@LwKE!bpL$t%VqadvL1ggfBI5ol;-X z7st~(45)v;#?ZM&M_Vob`3UFLcO0(nu%v(k0+lJ?kl#sT@8OVZYy845{6e_Y-r4`b zKllf#Ts0e99V-CgfQN1y*O{eF8!6kpK#kvkVESaBRM{hn{2|I#JXAl73-wh0R?e_9 zlg`>wx>hsgovdBEPF;sz*M@2{6Y8%b9F-kZd(NzIH4E+9M#yW}*#OfP)%G%6<=f{i#3or(%YzhtWU$hyPHOtsK7ne-r0b6oP#RA|F@p zEmR+ttD+XzwzGXJ(<4%P1lOP03iI=M2PUfePF@&!ui&fdci^B(f5v%d=asD)b-;x= zj=7!O9;SEpQTd&{GYx|Wdx&=+hRIg7rJS%%SF}?l)3ZR~RXi$wBm6!ZM*U~O1M81b zoLBtcgJ$@44rwl@#%SflIQDzi4wZB6=%wmZvd#b?bYR%E@9Ky=ne)rQT-FI+{+)4< z_xhC`_y19p>B=$NseJW6)0R7CGQUSug!G3Ce7b&pmJhSZjnqX)TRG(FT?71Zo4dQx z>^B_T_ZyxD4uA4b{>hjn`$71R{?R{D<(~l%=zMoCQmbz?%)akHzXK6<CRHR<2?&NUWb7uIX;o<1PoL;40*G}iyyD~WP zx=!k>-VQ%^hQ4z`9AKi-l%xJ?(C{fqfw+oho$_Z0`@7>eNv4zJ65Rz79} z1=hOR@=iw7yJ|-P)#|*{yQ|L}>&`x|T%$E4IDdkU;&Ri9-T9f zyk^^AWvbnjaBSU3-CSOM8zDRG>LuwBJs|i9Wu4_pYCG0h;NXD7@hASopNK0o{XqQ3 z|M(v}PRuNTU=I1rE=*UzgWADqi{pC|3_PG*LGn8N1M=88OLu1DqbXN8Zk+?}02H@w z{%6kGFzP=m%Sd(ejR#+Lcb!SsneTMUa-n@tKE^YbS2o5r)C?Vy^BI7Vc~o{#4@#D= zfXa+43aBCPQKV(6(yr#^b7s3|r~-RPYBrkXxw2Nyx|&gDwo&q_HfPdZVt~kTm=&*1 zM>Vs~`caitZO=H+oh>TIxI1>_xdIfFEgieu3cj6Aqo{WUc;qr}pLMg-4w!Lu+#TP| z{cK(XTAZhtK4h%RTV0d<^(hO+mzT;5orTXI3_kaA4|M9p=mmWI*;l4!8z(cj%=}Hs=WecK5#2G}Wtz4Cjf}Fb%f({^b?O$nQCSuXG!>Af}u46vq zz^k&Ia-Jr1P8=84w?fj9NRkb%mNFSoY`}fzmrADpYtm4RDmxxv%85lux-Vs zsF+hg8DNr<`ZZn@( z-$v+mSgHU(_mXtAM5)?Q>0N-sANyl}ES{mu5A=WfPygwA0SI)?5kTzcmBW8!JJ;Fe zOY9pE2p*VjL5_o@SN03Szv_d|S#qNT`|<8{sJu!h<$$?>!_lFWLGg8fQI(7wtYbMVXM>CgGeOCdpDsKibRegWemdr^}PMwmA*|F01 zN;zepO0VvIlAT=EzcaEchr4p1QBIX#fzM7h)X{bPJH5KHS#I_swWGt0l&^q81s>RY z4hk%E?>WrA);AV#_@jUHkH)j~)NJ5C`)B{`Jpn`q9@IM!SHA&Kef!}>fy-J0R~6b-MOg7k^(GMpE@(k9pFUALyd8i#ns)B zk(KR04%V+6ek|wM3~kZrQUL;$rsSCgJDok1Q(1wQE1)5t&j5p&K4Cy0Cek|n&?z1b zkG<@z;6K|wE7!@O>aa1WfKF9U$%A&N9OSMobg*yaoB;;}5$tQySC%KueE1FJLVYd+ zhd=U1{z$xno_*-XKmX_d{8Iu5bl|&pAZEdX0uE~H*6KWn9zoKTogAm!shg>K0ejZz zodpQ9z@Y;oj{K^gBWG8RIpBFucIE7Ld^*`Xr#?ja4q!OoXtsXk+&XPPbAOuQ`5pko zk&QW{ET4f5$4ORBYsDMOd=9E+%eN-K<2N(oo*&9@QS-0TI(yEhKU1fgQAbc(fzeqo z!0OKOr~s>LFBf!mj#xFD?&{{$bNktKthcD!b?aApsCKZt8`-!OyqO*>`f!8e{oj4Z zK{@|FjUG_UyclhL!@=yY1O4GY{D)t9KYtoLL`3|HfAKFAFUR?0#}#m>0E82LsJ;c! zfd;jNDdHHN2%a%6{}ten?HC5HP9FuHX27vq zMmgioti5Bu5c+g7I&JT~tNd!lR>`JxS59x1W6!T<^=HWerO)uMcz11f&hs`=-jTnW zMSg|89be_Nc5QWI&}q}rh0S2AHfQ)ca?aS2*+jM9wYvkVYM=hD9rqk(xM!m_N*)Ik zboT7(R8I6xSECHGz@wVocXjWaeOI?C;=sywvMC2UpF2A%smOympWT9$?c6l8T*_D2zm*4h=}-?|MFidewBma0EiAeWGB9Qf1%o{Rqe!-&l!IuA09_|-+gc+ z4315M@N)pf{!noGaHbtrFUvfddgw@Ai6&f`<*#I)DN|i*YF3l=O~&SY(xd??^N+{06{mC|EbA!oU44rqXTq|x`)uLlkZS9i(f@ghEeVcC~@;5%ocr?h2h!#aULrWi$$FuV?3~%7vm5epq5;)=6jfBA>tp5g zcfh4;!v!y{oSlBr@Ni^e?Kw8<_*Lbf)yH)pnSO)t==fDjK~P@Cw{jeV)MNTqZ8`SD zvV-tada(RgQ^&V*%&$`C04jjC6=jtZ>_l0dnf@8)`n}4ze3ub8Zb{@4GyIH09-(yM4m?nit_#sM8nHXK7U;3V6e9kYl-wZoFLRB2|Jk^(6% zXt)9##_#|AzdzoS-etDy-~5|@)A6omsq^s+fXEJe6?v$l4PEp>y$6Aj2nHVT7peS+ zGtgj8bG}h`KqEU)4meTyyPQ$fLAlsNb_T$({7PO`AIW(~qO)l}c7f9nbvA>S0~*-4 zsLE9Bu(n2%@7UC#EA^Z@GkjU}z;SRL2fpH?qBd&mWV({aoH&f;bWXQ&9J@Sha|T3o z`mh;jRo-c9h8Uo79BT%0SsB+sclEKHkR)5>*lv@2JDFVBT%h5!*8yj2PesF=KIokN zt>MdN@zwa40T6iZ?4+d9DxkpXIN*V`!9dH6{G+q}OtirT4bF~AFMTmOBF69geZMc> zo8ARH?DTK{?Z0&ZL_Y3jrmF_yPs$K_R z9A1of<=9sCm~s9i@xpO-gS=eU;q8`HIw?o!dvA1qFS9!74N6^wyw7uDzxu&sIR}%sGlV*m|`k3D7iP*z%FJ8SN!8m-%Ibq z(^cqzM2&YY?t;IbXX$Z1lUs({IBEYiWgm|zLWrehzGc1`uoeM1t*GD&`|8$TRL{EQ z2HL~D9jdCvjKkOeElFuNqKhR93bL;di}7DhHTt1j0mQn|;{q@DtP`Xx)n~?ns988k zYxL~!EPd))#uufImi7NvbSm9ARWe;ln^kpOD1r&6tR8;sZMEy{G8zEPhpPH;(j(GS zlBC*sk>dCXRx#Dmoo_~5Ftq!lyBBfETcl~gO|Hr1FVFhi^KMy)#p*kVQgceNFmZZt z<_61D&w5wgI*9j^g8zdCQHrDS9YYmM(FF-OaSxs1XQ%`I%BoC@8V`HCXn=cf*zxBM zB>>S-Q8&kKJ~IIBtR^64!DL3<0chm#O% zaY+(Y=>M(c!+K)PHeh~|YmOat`R@-^QM>WUsmi4!QDR2^R+_t@u34V(;W_;ey-KT> zVRG0V$yZBhd*Yx|IHCo!^kh*@DE8J0WJer~9yjI7k1}4wI=H{A(#;IsF0yqk(|BpS znyCuvJaq~F{NlO9&ZjD?MPl*3)G_T-cYqPytMB7se)f=xP`yLOzm{)xtSypWbO)F_ z@E(hk0FCw~ez|2|a-gO2tD~j;7&}c^EafP0XZr8LQ0B*b$B+4736D&L;lcpbAKx>I zlD-{^h^Zj#)NP+T4 z4DQ};rS#vw>X9Sc{XFYd(rLgz*yTS`w9A&y_D7uJLnyBHKF_d zYjgK6bL{68B4k3PY0kS_wWcd0+=y>5qf^fn4|bfJ*CuZBPVc)k&2`rodjpVa|%4GofiL${rCnC%tI>s4>=DbF1*eJFoUAEB|* zqIociIU3#Z->i}Y5s zqO9!6f@O?pQcyrEl=3Xpi|4kW*qh4^Yr;0dhkd*szkE_7!s9+RK_P2R|4>s9Tk;ZN z{;@QhjY0Rig~jv?g%EIhtIls^Gva=rlJU{G@(hv<6pNl%CV~(w(D4jSEuK+>g|h5cg$z)(Q;n8Qq-sxUOtVJrv8q zG3S0koZ>NO^p)FU=h)7;81Tnhd(f#E^wD#MJ5|}9OA@C8DB0=mNUdb5s1fz?v#LCp zQ^5si7Jo-3fl+3=`TAQ#BmVfLzywM2XzD-0+5A%xm&L;7;53|!L6z&uC%ut4QWkL- zgmN0I`PF%ERiP|u)6PR`tb)e}Ca1>3W13PPy*l2r<+R|s+S9&};GL(vV1iY89BRjP zR)dU9j<3T8zwMgo^uo)fI{!w4mPfO{q-?KHj7CW=F}pjsZC)3gGU5dv7u!FO14s>! zN=`%6978K3r;y}utJdVMEca53vwUvsH&Yskf>0_p?Mrf8%GWgKZc>Y=7xy*%|FSQ4 z{Y&QyY@?uCy@6pXrVI$tJTe|L7d8jw5EEVrfy&$sEs4~~)PJph>+zuFx$L#47D%vH zO?{nW+f!6?7&Ut`A0JqpS1mqf=lg+ChR_r-(2vgA0C$Xjs1ffDQxf%>BZkziXI-#* z9F6apv6Ui@QF^f{c+Obyv$D~jl&+W@?_8Zf`Cl}_4~t`vSm-e#ARhTw+*4e%epZ^A z9n15tq#fZ^;k~3S`;!*Xx3xi-M;VX^A@Y{B^)6prf5?SUah6i>5$RPVgNuty7AvA)S&h}AcV&DvzXF62 zPdIyJ)VvTG;z-2F%SX-Lz21s{(=oa5irT)=4g;~? zfHnqp4JVbYfoZ+a)M@AamJb*{fyJiv>hr3jm&=h}&F4G!FLyxXQdrZ~z~in5CDGffzXZ9dA9E{zpiv+LQ><5Cso6)IAtOQboS1xpwLSuZ%m^;gE zJ#L$mA6!!Ly(m?9ku!5wEA#uMfLXo6XvwIp-dB^!xCR#;L>gQqw&D-$tMeDW=+~f!FME%|K9kr;!O%6YtuGcd?Eo|uORcy66}jI@R=tqM)NLxPQM^Ij5UHeHT??Ih zoq1yHzxpBieoCX*fB$Z0(^;qMBKO~?_ckMfpp*{XJ-+nW)a+9a7L>;qe0irn^kA!8 zY>*H4oD-4YCpGCbefuUArT0xpE7;9qUX8czY4hwmu=C)vwuWBMmG+@v zt09k08()o6u6BOrplBv!TPLTE7mYJ5)Tzkf`*LsRf&1rYYiS=xUZrm%pjeCt2UuQ6 z{$TxHbR2K{cX&7SuFYb71YN=XM^FK8t2jD@_^@yN{HjxcPS*y9Ii*wB5!Fvswcq~d zWtaQ61Zt0Gg6XSIyI8^LaH#ZMcInecwOFN~@KF21y?a8FUxcef$mk^dFaO`p8h+2@ zR|dKsD1_BCEKz>5Z(A289mQyDqb7xd#TC*z0gFC<#X->Cr zPnZ{STV{H(9L$m-1Q#R~*;31-cusl=KxJ z4)9&eQ*D2ldk|q!=kG$!f9&7?mov^+4o+R9s8}w(KOTHtfw+JPLCh;&iJlJryL0P) z?S%j-)?e z;^gGC= z44)PmcplIccYGU+YG9?fb7ZgVvSK?hKi?Fg<~mjjiDRhx{q&wUp)Z83x5`UEND#C9b$@M=x7q5jAv8cn zn0Ua_&eTuT*fB8ule!?yW8`JS6dGy;=XzOI`khF`rnR`_O%R^iRyAeA;hN~>`LExj zpP8Tea@hBFbhY-g*BdBR9RiWoV*|D)xyA&!uk|hVhu`=?3%d91c{`&*Mzrfp8!Yoo zOI8W8`X59q)z=)yjM9m<;=A@n`TQF706Nxj$QMigc;n!f!ru z-Bfa&^0(kXV*uGk?pr3>aHRAGF9QE)vpU$Lv6)wN5ZcSHLUmE}lZpnIe8REw5u1dS=gh7qpH zGvrbnI&G2XRE|+%Y^z5um-U>Ki2hy~|abdPx&zGD5kj3(|Z#^s&=`%%XN5B%~Z)`<`JTG-uAzaZ}0wLNpw5g?* zg?mabghyqBGfIsa?y%@hhNH@>07l}WDS=dmjW@4J+BvHPMD!Q1jj)IXuSehMPRT{s z{0$w!ian|x!jAeDdTpPq$cT8|I~(sgANQVMQoiC_!d7`Ca5?8MbzD7LL(K+P`MB#` z%V@8l$G{mF1{D}|Z{!|2pu+~bLD_U3OU5Kr1Tb)?@@RpMh7dAQq z0lU$8cS{$H#B`xqs+Sy0x^Ke|T<7&N^N_>4+bsRItvoQ%A855f|)RZ{4Hp7vC!XbRkDWecL$AJkJl1&*w6^Q>t-@tWoW`CF4B) zZKj5a?e1>-FU)5l{xSVGZ~(x}@CHhK6sa+qYuO2XGJl~}rvzBpIIm|59M33EZM8H} zITfz{iF!eR-d{h-HC3!I6V*gck$};C12JmlxFJjW)Iqa=5^_g@w(PcEY*3Kwuv6-< z0mJe?j=HgaPwQUThr|DMqTYJ_jd!>ezfar=vS;Hfhip7XyV2B{jy~S!xmu^vF%f2v z{=JWFG=S2fip84WB~(L~tKz-hBIg53Gp&^gsp{vYN-C(g^8AfaaoWhiqY-e8RNGhcT*$YzZiN|7-37v8R!zDniTs_YiOy^1{0DX(fir0=`-m)N(@DDbBzC3kaF<)U=0OAZr-WuDXPZY_d<7E1SGXZ80f zQy*wf*k;pt@RcjV%J53uA97XEq4#Mt(-6PW%o94#iyK$;ZKpUUxw%=URy+)KY@Q{y zwGyN5$*?_$Z-TCKXo_A~X}JioOn9>iD|jTIFB#jMl5-oDrWtufmlA*Hz2^a;VPTj1 zO&3Z12+&1YKo}!~3CVXkxX%n#pmg0!&AE83KX?5H6kn>UOs$5m!d9eA3AWWnAq$`v zSd31(ROiORU#5;DB^3(up&P}RNB!xwHw+Gu?DpDnl4JExge4@hs}{@bcV$&N$}-ouZl#n_&CP;4lSAo6&1d$LfRAYa;kw$Cuoe3aN5$vv;nq@bR728rDYF)~g%LojqTqwSfptlw|>O z)nP3+9C1GR3$lW{Gw(Z9{VnW+@!sBRor9rlC%H;s1!w!htKvyxqmk=gE%aekzv+{5 zf0*CZAgBi1Go?0SeTLb&s$deMk|>c*zo-`@;m)t=dOSEO+TkcF)qJA8EO1NUpX@9} zr%-ak3xP*gzVsvQ-z_Ivf4*%I@p_Y%KB{({`GJ3Z_RCe1QR;K#5u*&K;Pq%?(#Lu4 zj`R9rw)#mcF6T_eW60kHWFk@J`0Udjc76Qf5!@yw+6N#pfpaYPiS(uQx~+7aE~h(U za1m$Tk&-k^o`(v!F6K?aqisH9_HA*|^xoO%-p}vW&-yFYackcEMv@v1MiSs`E8*4W zi63Tm@>~AihTQelkc=l(*r_hmh))OTg-f1DMVx5U(RuBJG6-P4CEoRoY`!(iOU(v7 z|F8W~lrrI?c#meJc$IJS9UUHdhDq6f zXK21%umU^N{Q3TlS07qm#_E(i%h`6dIwb#Ehi-)%9{Le!mhw{re8A%-f*7Gob%V23 zj}lRa{ttq?VpP+LNZVK)b=9phikCLV51?JH8w~r_XM<4L(c1gR>pw)U~jz6SGOP~;+gb1ZX!u@#k} z;_z{EDFv!Ag069)DTln+jQ6`_M9T#fA~i1-OfV$TOV+UF<=8v_ag{1@^|2_iW3EaT-uJ z#iEOp%2>P(M6{t_da5bpCt2jflqA*UGK*I1N@pCDLF@u4zB=zfea&b!0Dkah+GmI= z{mv-7oTjczBlKUIJ0{~s|~ zY52&fXg?FoP{nkOnpNOqJ!M;*hZM9RDR+Y8MK7^-X$nPCckTd16Di}<{wcI=aR0*d zeI_h2%SPwL^pn7wD)cUnL)z8-l{q{OCVp#{?Y5QTbtdRf;9;V@5+v?8tIX`kFeaOd zvs5_tE!qKyxUulZstpyfSQH*8Yy)a5wA}&HJ6v-EE}le0L!4fc)P_2&qQT|lKJ7HQ zKT(9jAQ{=asrZM}srW%L7o5BmCHnF?l8|08D_S771TGy-8E)(nHD#Mj$--&Tobi56 z^CXs1LCt4w+A`n#e8}9*_6~HbJpa2G4fQpFX^(>j20FkNU)b3O^(oiyCkw$#S8tn= z-duMB!KSQ}G3RBYa3U5tPvTZ-mSsu@k{}IG(P17OY?8CNkCLexqc>lK&jB}OkBAqp z;OutH?uDufdyR=B4px{OzRc6vz1aLFqcbt@G02N5Dg@_eHby zDvh_D=8^WNwe4-G>F9f3(oVqH?LGg?%}W>r3YwZIJCRh25mXR-j4m=8owQk> z4Cnr4KMbd2s4RZVenF|2JW;pHs9-?!UnmCEa`$MJV%M~xu=CO=xT-0Pco%RKW z|2T~@nDHBsAGGrZLr5>9VVfF#IE+EVKc44PyjY}}bB2{g7AW907$nB!>X5)5N=mHH zh-l8;MGem0r`>NK5v(AqAM!MFH=}}kD4xoj0WCfko`(D`X)lT?(~w9eI$~Cm&o^Vh z@od5@l$R2W(-ib)5ZP10kCOtEMD@T>0vA2+MOV+6_8IrGv3I$V>=mIw`vxkuuJ7(j zQX`aCXtgF8!Q4-rgxCpO1f7^*Q*c#r8Wok!$KY*VTLY2^U|wrVi}6WNHCaE% z*(I`W%TAb4=y_wmpTJpB}^ylOicCG#H zkXKjM`mc)hzUkn-)+M2E;&S^&RulbC3NqGIr9gd!_HlW1fa@J`7ab#>e;?fs3S(TL zmOF?uGO1aIb2B=(TfxW00wdUIV|5JkMB_hP_c0k$Ks|n$`FUMzK>aSz2$GMFfOP#R z3`jsawaj-0?5(L5MGSWZd?eIv0E|L=n9X601AkJwQDfwm`hg7u#_D+Eo~3aC{-hhy zBR0TXvuyiI_+5&48)kchLTBMKh-6d;{2F)=zLmpPY`XS=j4u`2|NBup@O*xX=EJ{C z@%+X}SwW}2J)EyRs_(rLeseZ2svIr=J-7SWqC;L}lN_jJMeUZYirQg|i1rGU!~Us0 zyQdIQFD#%UIpzer$APF@yDZI_RHwDgp%MPER(CI9*XMzkE_jy=^H6bt)(w^=pXlz0 zBhKD^oL+g@P8mc9?|BPa)TRR{!}!{cS>rNt?zGHTLT{4W6_SEKckKVwP+N92;(i}> z5qoosHaj+?S4h8MN_jkOV2F)e2 zGrE=gOUzS}+0zMywnG_|)G>4E14Y|B*L?nZKG4yOn?$<^vvHdLS!8_W3_uOtC*-a8 zMix=z#&cq}1mE&JDVT@`N=;MH9a?>;e%wmrkKLmM#QbPh72^2h1h6J+w8SyEt|>P= z>$oI7xFxvU+@i!(OO|mrTna%sAxQ4OK4^>O?*q$|3-yOm?_O%VlG#F+HN8ZgOD%Kx zuQP-CsF%w+37OP}F%mHk%{4h{ zXMHil#~GlK&!eme@2+rU~s zAM)Cd=Joq?D`F4Cl|VKCUMSLCkKIr{_QC$u1NMEqovPYp39bCjv>E_!7tEw|!%pgL zU}#W;n3@h8x1o?@t}cKT`;DG51b_rvR8(oBW@n{w#*0zr;gEvHUr3CVqIao>r7=9` zCVGG%q=q}G!@E^jo!Aiy86GPd4d3-+V*qs^ z3YnWqEz>!pNNdBh4A9Rp1+r3hd^j;h)V^;i})5xM;b3lV;BzAj!v?axB z_@8}(kQ$%pJE{1#d6(uSucZ9=lt5ZV1nyF2-Xf2A&b-55Ipjw`3(dVPi(aVuEr6hO zoogYPLmV@tc-*~#yHSFE2vllU1#g$`nt@l)CS>@}c8jmgYzTf*L^@ch?<{IviE1(J zC>Tv$*jx!;07_+_ypy$=DENbm3)6}@&j1^*O{8%6dY3-ONpua9b-QwT35vY6PRkE% zPsO)}z+{!xzlpOW-FZbw9I9X?iytT0MauyrnfS?RO)ojAb1k&D%}cM2=!{qGM%(4cTl1?7Br?6bjf?e91|K0}D$9IXTDcQ!g zrwnCqyySH75Pdyu`DId?k&H?{{8gTh+fsmjxo)(0mf}@9&}si?2hw)&?&HVYy0|Y!;54I^QdaVP{8c!ETDLdcJx4)n zDup5ZOZ-0l=_?cZS6H^LZXchRWyqZi4#9F4A4)tmTkRV9@Fw1_g^FcUg-OvQ)191{ z$Avk%=Zg0+49NwB$O|b$;WnlG?(42@cqC`Q(hk&Oo{&r#L3LFxLEp*nXFI`}Q5F|V3uM1C~4T(j1=wF9PR^|;`FmQqE&TG>o*Q(<1C0L~82 zhFPsMuPtm96IHhg$-5sdEi#%J9b=L*v)ONSz0J)7I*oqIz5kgWnjW|L4pSCB zNo`Od)+4^4uj85+$mj0R)ehm+OQF1u6U;*H)ydMmb6$=kAGRke!3dAZ{UYp0V3OF8 zn@o2eh+YZ0VP|!N!BvlWzT3lqcmjHsfFk#=S?BrkLQH|M0`_W04naDPyZ<;TBS-N~w!o#GdwEwC3VSG)>nJ zcahO%fH>VWu(niT4whgY@*>Gx{Y^S8C!dO?SN7Tvv-b@*%NwFMt%t1f&kG7yjQbSg-@+H3+DPN65`)0%o4i zL%l-uV%4<{>SJ~3gjuSESRVasD+v7MEvXkl-uMOb#z!t)Yt)VIqnE!KXd(0@omvp< zk{IK;(FN7Ghb{PBl+Eh++midtHk*s^2v21VNVmJcpg>epw6*Vz<9*95wE6D3#Ud_v zk|@bquxy>|mdKaiv~sB9Zf}Je9v}LSy9SZfQAXiLwJvzrr8{vq%d|EFkbJ#M^BCGI z+Ge4M5msv2;&kZyQXz)od&6dAqJsrG{i}6%Ljt~Ex@5474S4+9`Ry0vc$rU2)@gGp zPVH{HGvbgOAx%bed3fA1rC>ki<~w9)Oel!B?epXk_SMV%F=f*8_K`sP#1U|*>Bq+; z`TOC&+W&-EseMDrOe`^o4|KnR)*y}M5eY`gJd&qlgi^9% za}R04-NHQ@(csK2m|qrRF6F~qkoIeHE98H*^ubJxIR%$pFP|LETWMQygfOsDD7Aut z(x);%sHC+-N2`^OJ6?=?k7YBFtpe>8eNCA6v({NBenYvusi)o%-mAEi*QOM|s?dk_ zot^bewE1jh$VT~u+fDc1Edn?$TC23WS9Y}*REzL{R|#C(N4{P>>RDRYs{M6{6)v*} zsgcCjGfUySdhk0S7au-;oGdS=-adk0z}nDqYE;*y!HExR#c_m@WEc}%W8_!#!F^iQ za1F_{9f_t0GXou^AS#hmrrE#RN;_q?CooqF+v;!P_f^H4%d=U`Dei4;#q0&$!0t*% zG8k-Dv`Bs z;`I43KZ;L_wLu&-H(r5dSJ&Wz18+mY;idPIcYD$n91rT>v9Tn^&dbL+w!o>UT z#OHh}x#Q&Slb*G227$Dk4h4-@OI%I*LVC2B6vV^~v6yNXW0-mILFi#VEaqIBFI02k6+Vu&tHn;kPmri^$|wQzs#Cf_Zm1novU-hK;_N#eS?UqLVF`{ zm<~-)N3S{rKuVC{%ODvc+qO5;%*o7hf0_&f*Y&~+=h1pbg;x(3K9e67;!T2)7#_x$ zKO$J_JGc|y4r%;@t1AJFs)fo1?k(2s)a?%@7ke0F{&5&UhX;ldpVl!70{z~hCeiuv zQ@4)4yc?3c)kcLx_Tb)$OHtsTP4zfYm zo{8)JX}8i5h9;xCHO((&cbi}Hv&Wt4fOhHzd&&{FSVj};6{(eb=ybH+Kuno z77QR>s6G)x4a(<#a^h>>g{o8cZo9cfhwltCJEd(JTV-!VX{UU!F%DTuw-?3H*&#%T6iryg<(7S8P72uvWV>1G% zsNC_aO+H3jGa zhi1ONvb!=xe!wRx)>}kzJ~lZrsJ=Tu#g-A**qo~kTw!^eqB?($>_V)!AM&YAhZ!D?GjK&I($CZBE!i>FW9Y6-t*68k%K1#Hqy29X*1*_|#Pn})@ z!&ICBZjDc@a2~O&(5APV%4( zy&pyX^2ba3pTY|G7Jbeb*|UVMtzZ}w4HxUQhpGktZfF6$ns*?lQoJ@wghz1J12WnE zuddN%SyI5hdakdM$JvhoHC;+YA^dMo(=@>`g3aZQ?U+BCS6%}Un|VYG_y`|>wM{K7 zD%5}!>%<-@!3A-tBARAhwJ3_{2rk%ivU#PRdQLJ+a!$ja<3H1B!yPMoE#&#mYeP#% zhQ5;>d1=c)$VZEBRM+GcTK&14mnNOLe@=xi39;5XXjTVfMr3mD$Nsnbg|CQvTI_v+ zp^`#bD|Fu$QSOhYo72V_pGY+XZ#BEp0t^~T&nfE>Ib7a+X&CrO?(4~+q0apw>fV(7 z%~7XKQQ%1+s&-`!8ppDxJe*WIcOG$CAnZc>4WMbdjos1Mb8yH`d&e{&?>tG$oF$Py zfmgNCvC*YX04ZIP0on!d+&*-|O4pxW1%^Tif$Y5L?r7+h_A{9)pfKKlTw3K!Cn?OZ zN^|;wF=u7ArySo3Y%~O(dR5E5ZD2na{zl8+s4GKB7L^fI%!g5AQ(d2s7v_#VKb(kH%xK6!MEy|zQq|=k*yb$g>Be8Z zKqkNkf<|$)PTsqJJ_nP<0lG9zbigg$?q-=qNhoUKm6Z(WO~3;1z9EtJE#D<#)J6`; zcUaQVbJ-PWd&V;r)6{Px>n1L01|DRP{Tw^HP{m1Gmg04KY)3>mv?j{2eA(!_5dRzy zM^_nD_@8$}Q7DG5&!_uocXHT|J%rnsRpxhrH)nzvwA_6Tbi7+UsGGAN8uQO#s*lrvU2>|}`kUxFggD+mJCkxqSp;ya1xK`*I| zz#SWb`9fE6IuN*jocC?0=@l(_wRJQPv_u!eKo3p4i&92Ycn%`)Ug!qk!?JeWXj)V; zKx2NQ&vt7q4L+=ib`W3uO3F=Lh6}1tK7LS|G68HW`ue?e-eyM=;2vUCRqSeWfNBm# zc0s*~T^H_x(Io0eQ5BI)pRq_SIU1?z?5=c_IMK9Rs?Pf*y_eRhMDNyq9~GN9Ps8ph zJG0{aCEF|@w#Y{B(I}%rtIVT*DAXX}QMVAT!ZYM^WsB{lX+C~c6V_T%wDx8HrCht* znuqw9%^PAq@0EhIxpyej%1y|s#QDm@0q3fsc2#=(<8SK$D_mY(^Q11GT43mF@cXh% z)+gmVIP$Y|o*)8bXQ85|8+7_o8h5O1ppuK=M~}m^>2Yn~5-LZD42*bfRW|dgX1&fU zUQTvw>6HbaB3YDK!)EXLX9M-yTz0Qqv&k;;(raGH^nXHa7@?03W7_1+LZ? zDRTBXyS;(TLKTl*x^pfp?HR1&$jrsJTLN&4TNzVPinKTJ4sf&|ldMk;IkJXpzwomr zQeGXZ$a4(Mt6oY{2RDW7R`X)*9@Ae3G>4|N4DMV z4B;?G*+pgr1B)`3j~TW3keFR&0k_hA+a2^n$mi)Df?}^E4!6dv*sVtUYV<&@k?9-$ zN7`g}Z;m$3q5M?iK_@Zb%Rrv+>KZuDk{s>%T-!(FNJ!v+TJs3`ijv23O@mX`;YAEB zVPfrevb`>Uj*lL=WLR_2vw@%@N4xO*dOAowM>r_ ztcn3uK*;RMT)+MAd7j3JwTHMk{R}W!^H#?(w!=sLLnyF8k8QAS&VAp5`^=!RKj&Fw zI5MXY$GK34hq|GXhweeiuKUo%4{E$Ybf+&bXMu-eqo^x@jTpt^sQB2k3SaIe!lG)z zst~KBhlhyW=W|>(%M=$m@@MJ0K}Ck-KaPekN4LN9y++mZUE7A*HZ(1rZ-HRxnzq;7 zuDaMy$(mEpW^D*seh0s6Q$*Od!J`z>^~Grws=0F#J%6{+8 ze9dI2h){$#)@wyyzBA1~Tci?UCF`4A(JmWZSE1S2u*Qz2qK6i$1)$TJ(9PB#U*gw4 zU+?y$y*ZBgZ0oL#9W6bH?4x3t68rBP`~Q4UoAy6kZ4Rd57~08Y3t=vxKh>ZS?-8OJ z()QwX4hu@M+Kkvl1(pftqz-o%<3jVS#9Lo<3-xq$;lf_zQ-7JGY5KM8S4K9sR8L9? zJfI8hnd}Bs>e;f8D+au|qrB1(4(V$A8^de5vQt;Um{(-Sk=V9wCH}d2bm?R{B8O=0 zp3R+{KdS3siiU3&r)@aOWdw#832t>o_V%?GoZNmB81f;VZ1|Anr|dISR}hh8$xI8k zpg~nBb`1zM-9+0`cE@HmhlKB)H#2)LI4hm9uj_b@C}|D%CFs3H4=6G7lk4G)=qPg_ zSTCIzLf}F14VSXef9?w6GMoxubDhra9~t89ylXLBiRP<$hnh+`)|AQtv;YZ%+fxzs z1hP)#KCr*H!}CG*Pix&OehofaE}_QD%(3*zdkU>P+Ns|uD- zbVlNFZzH)s`f_c?Voq@OjD4M8xNezIUXUVeP6mJzJIjzBoG)^(74Zt)|60$=Tythi zsP$67RpL%&!PIIvo$uHBYQAm|m&A`@2H(E&l(}vQu^7>DYH)Qz> zah2d9^HrNAfg9u>KsbwOQ+0k$oPsJ)mG*k64~ASn15)*YPcZR4fJY-$oaQh%_)QnM zFhKPIZ)6o<_7cmFJC+QqL0-NTEb6bUNGXb>&MaMOP7{1E5Gy#L09E6b{a=AdiKmSn3;plwikNOu_n*7`5Ffg!ZzoeDilI#_yO zNZ9E1CWR{e5*8QoUmmB|PsOGz<3$j!10ppM%{&8TyVq-dO4FV&^0&RW85KM+cFBX&!a1It+Krh7jwYrmAAn;xhY+A zB=Mr{ird&%%7;tVuzet+?n{|V45I(Kzvf{|SjSqFKhd3Un}_sjjI*6rJq4>=s&*60 zh6h{x3|EopEnk`--?0LBp9h5bDDj3DsF3xSAmtpobT(I<*C>K@4y8KX^{&kS3<&$u zw_HZ7T@$*4NjJp{Mz2jlR>zpCBkA7*Rbl~Hpgk90VxPZ75pfr#6B&hep{u_3$evoslNTD~3YV%g~Y6h7z z@2rJpYoPHbe@)235{Ml){CZo=T(sb~3QMx|gGVA9u2VSyt^p!nR<3H?NM=?gha|c; z!fG?E!uA9`aiBAAzO%oH1M-;oI?nx4-5VUbZoP@w)UygiX@YYgdnJAdH917VC=`esUq_@kH7%v;~fjp~BOboR2o*evqA*mB;* zBT0=%J+5s(x>C2D=Us$va+-@0nu*)y=)%_KsDTM^B}nJ~fH7q~VcFKoOQRLuG1d(U zEyy3$TZbTfx_*6#U%*t^252va;dX!(`W?pViYDxOl|O~J(SVxqcb^p({+g3eL&xe) z#|V`cD&|Nna{ZnoH&XD8ayli4<8`6O_hB#JQXa=0DKyjX>vzTjy)9n*Io0-EX`RCG zZFo+ohvXOp0mv zQa+8A94+@pud9Szu$-G(|A-{SBJ6km`z9(s4$VdL?MM9bFAcj7pqqjw$1A(I%&fJ1 zS^$^Z-o1x|Tn*F>QdhrUx+^2hyffAo^Aeh(vau8Tk|fI@uRDQm}ZlfJ_l=V4%S~-5z@?_W$wp6bMG193^1*G z4)?`Tv}E5UZ(E%D3k{(If4Aa99&jfb%SNcZZvcPGvB>ZUolm%X>K1cAro7d41Y{7> zWBD%WWs~saNy{H?JJ>MBm20}h!cJ>e9P6;U67w2N2Dbk=p=8G-6#w<7p$fI9J)MAd zDkT6NEj2YWlP8V=EKZ``?+9g%mI_h8n;*mSE3QFija^K(-Fl#+-m-3k($vh!@==O( zPaLzKYYJ#E$x7hWm=qsTZ5%s#+vJXby#y*j+G#tm{lpKrq!_4e>eeh{w} zHnZIBzX=%Smcw`aEOt4R0R1mQi5!pXSnMH#mQtKYSCwd_pCFHt4xTV$Pf`(4)w zq?5;&3$a8_qPaX??a4koHv8?jMiIvNs@zWP+gx>symui)4I`l}9!eA#Fd}u_o%?2W zy?N&6iB0~ygT_=+dU%j45)9g8{lN90;0T6mLFbsL2Vtvr)-H?M-H3c!L2?E<4|s(^ z(-s73pe;?Dp4u8VO!NWMRV5w{uA875J&fenOd&q> zb2Rl-0~uI71A6HN(%w+{|7p1QpY!&0E@2X73zq`4It8bLr}Z4xZ)OF4jDSpR4O&xB z+@N`?_Q>F4!HwshHoUMV@+oP> zT=Y%0{UGU)`a=L8a1yTaV&tEAnwv;n=QEP-etblMLX791$mPY+bxxZywHu`Y*J+-U zMGWiH>{M^~E&JOKBgTldqV`;QzJ~>BSND_p(e)7@w3+s^erVC@=VJ*j{r@ z!!3wZdG==v!vj~*B4tK=iP~C&k&9WfYH8*{ z8x+mafI5qxw2WlGII-U=Q9R=E4RodF;Ba~7Fz8P!By_|yOwQ@gQVwq!oEFgk`y`f6 zAdYH-58qvR-loiG1|01LFU0U`Yy7Xh>;8xH`Sz;|B18`x2`PHpD2qg0Jz`~9ZFLsW zqW9oK^c7|GE)p$Pi%ztJs6pftqK1tUtlkpbXMOK4_w~B>Ke#{bzIJEk%$esr?>TeM z%zM5*hVECkbD&UiUb2M=h*lbM!&AXW$fBF&+~^#0mL0#Bd1bgyos}w^X;!-uU*HK- z!ux}(Sf&}0tV|89w2x!p56@ry=KmteiBf8&gc_b20<1cENfd^kh6y~3jPDNoHG=VcR7P-*1;8CUPAtCUuE|GSD%t+e6H1RM_~WK)o{3F9gGY{Y(wY&Ug+t0-^0 zk&JXyW|7{{`tQ*Law$lyWxhP8(&xJ4@-{Lq#B1Q(9&q>E!$cS-;)LVY*Xd_rFJbw~ z9raYpMcgEkgIUCUBLic=%H6b=@GESpO=HozQ2@=iyvjBg&yz_j`a&T8v5S{zZ5xVl zU(Rd4kD}n9dF{39#TZ#}gt%|Lqr(Xa0#lhm+aYzQTh7wi!FiMIDY!U8G5@4S!E~Ga zpm^Qzr5C=mCE zljv}r^A|CWAQ%HR=WR=JKa;2r}lZI3`1*TG$%0sU{!^M3?6zm(9bM0pORHedOd}}2* z1W^KWPM=IlS{0S1#yFnoP_k;Sb&>+UggEZc4NnRQv2r~aH?v>qv|)qDpFrTrTF?k@ zSFgquerBtj#VZQkU|bY-9B|C|u!pcHH=M^(Yxo}M(?6qR9^$A74JG9kYGDXRugDvo zNe|VQ2jSZQ0)z5kN~t`G8+>tOJRa@F)+1)B^V~bC?PepH4}E$0svc()zgsr|sgXQU z7p00H0(P_<=q0*-n@_MtEMY$vfAYX{$!#M2Y1o%Nscfq?!a0?iu9(xiQ|}$yMp3Y{ z2FCzlh$7KsbFPHWy-lXS))J3D5AF9RMlEiCF> zcx=DhO>LtOg-|95n{q*ojiI%RmFsa{dj6_KBf0jqeH|wlFe3ANGX7!R6DmwqI3o;Fcj3S!%~Rm~a4EDR^DMTJHjBZ% zv;o{IlSJoSR~K3PcFDH2?xa{|tFz0wR|#O0!~Fc4)B!jrxJV-G8hl}zkMHlBya-gg z*R7E#BjT;x+2y4#3sD!@LyT0*wN`BmtT!b^`B`O_V`$0EgWbGxX3VPMboth~@FP>c zek~XUGFsE5zG=(guVGpAy)quHvNAy#^6W5o@Q^P0liR%j2)P0)93XtAAt)U;L5>Zk zT&eEJZxzup<~bulD!srI(4kD6qmb$Zu7rL^a7Of(AKkSrZm%DweX^zQ{%5VEQxV_m z3y;b*3U=llZ73F^`BE*V?hc-v@+(Osv(2b8nW{Dkk)XZ7)rwfDdmU=dcGsQDoa#0I z%1lirDXVTS2k7e#Zk$1^TKvc7WwmPpoaL(|apW=*;(4y*%EJp(uaVwjn`-O6j1)sp z{<5hzwoy&%^JT!6)5=AOg2ELbj3jkr+cytE*u2ONN1 z3tWf8?v~@#MZTAU26O`0SLDhFD$XzysxJb1;{Z3;phHV0!PP#H(x|k>>KhUdu#|$g zzd)1f0w7UXXgnY7vy}no4pJ8yIvL15u*i?Al#yuKlx2*h*%tu~bzj3pG^`aV!T94bW4-<*gL>QRAPK1GM9x~PHAj!DI3-BvTN7P(iUb;fUf@!;& zKo3Ulp;TR^4GzAor|UI&=rF=@5p-@}pM)<}e3EV`ys3u?T=^TUd1UQ-C85@e<#`4w ze5nCG+-CCw*`p`Z`CFUuuz+PE*Ni_3X#@#mrR_hC8eA2L4{h4 zHELOmlRXrI4mHw_ZTE$Mz5J(aNJWJDC(_pn(x?V1^ z9{U<>4mL%ciQk={! zNzjA%MyI!RZv*q;+A=vB6ibq-Eh#TI5!z9RM*~|UsunT*eA&a{$;N0TEZxk%+=t`1 zm4`QFcry`QbcF>sV#p3#@=_}pjBch3I40gZTW_y2sV(6$ zk*df8%h|cXhGI6>k=jwRoGUhyzYIK1%qZxD+GUYJ0#HG{tX!0&Av%r0JBi-#CU{jK znc?x2fJxFtQ~om@9DIX-r2p-VeTHLg?Gd$BV<)QACb`<+TdRsy0id_c1LS|Y)tn2>bbe|tC%sV zstH_!?bVb-!4IAx1Ezp8R>Vzw2yxdl$EXc|(Y*S8QSo5rv7=M~{C!E9QccV40s7*~ zTCj+3R)Sc8i&=DDuHfD6)YPylMu_tA=hls`)l2!IAfs%V72YL+y+ph&K5ZJbU1 zJ-SE1WnM#G?zA*jizR!+6l~=pJH~+h#N}ytC?KX6gg9A`MBgv!JZ@8eU`15#5d^R) zhcSu(@mKvTx(Lz>G%xFkjQWk1L%~d(s%h%gRtIv^yosIom+2`Z4c!R(Uv-u%4>bVN zbwqngr{BXrd88t^0LmN$fvu^nf-lTTeW%k-eR3$cF;xpDoY9jv=mq*Y5J)lUanHao z*LSnI!2$r6B3~dc$toNWo@X@OJ8nNO-C3)f+Vw8wVhUL)2Suk#FaEhE2dsj>D~)dP zE!(ho>op)ZBaIWWzrX#oh%qn4Lr3IjTH9TBRPuf3owlwu{K~`n=Dfhq)HpB%9u=A# zE;V5HxWvLnsz^z(55Yg|su{1&-(Hu~jy0N_^u5{Q0sbI1UNwCPw89K^vkcoQPj~pz>iS7lmarjlF|L6=Ft6~aW5fCWYSQc8c zI`wfWlck5A8Sk{!2HpL+QC&x^Xs6)o_!WznDlU~?imt$G#m-}W8O*`(rs;fM>-OU| zhp`GGyv5Ch<&j?(nk8Wna>?!|bi&9JmAx)>Fj`dVPq5NiyJO2WKC`71&tAM*Do05U zZhfgEaLXLXsT;w}><1B+cSc93G;zySq3r8*lJWo*GU|jTLv?$#=kd1QUls=U2A}rY z`c)eDCTmd`tr(!;2+@Os5p)RDcfRfj^0H*S87TFrGQ$F=cnXsLfo8GuD?P##bBFf@ z>b<8ENErvBvPqkZLfqZEs8r?8858W+?09|sUsb4}Q>y+>9x)x3Xb;g(#-Cv|x|}nO z%`xq)MgU3(66aIl)875w#ydIn$bVvjhB}~&+fN7MQdKP0m|?S9?2a$gyHQ(SEPOJ9 zZW1pH{w-T-`?K)MWcT%QZ;K8g^N5y

KL)+$?W4D==*@efGuAevo%22tuD@aVau)p4`tLmP7L^|Kgw{a9E8 z$=_nWANY0&fyIs=T?55Wn^=O>#=Z%gs{mU_nfT!Z!yz?VVCVTrkHfln=W+wI+qa)l zz6le|CR_^Yg)A&^R5R27FbuN*_B{hq*_4?Ev&$v6;)Ae_F|`=a7x*)($vi>9n~+!H zMQ+7)NZ3eny%YZv$vT{3=+A?)Qd6J$^tCxgB~JPj^~rMLG*zI=RbYnEtyDO~N z?SWlOZT$=>Eg)j*KO#sTi@22!JX+Fg1r-kF8^2+OO`YYGlmUEsO_pudW{u9*V$JR*d9-}#!(=aVpuX*ODhD}^#PEA02IORD~lD5 zTY%r`^&yMsQLT`LTcTKNf1B{p_!Jz^eW77g?1NUsXA%~=Udy?7rq6zbd$Yo0`T+=+ z-j5OxQMQU**Yl0q@*}_J&4Hr5B^0cH6@R*%dOE}d#4{}Yapdfyq@gtK@qRb`s@bw} z-x>C1*_yDAGUj#ws#Ia{z@Ur$yi0V3@3x$tyPf7_{L*jPW!-5AL9gwn-LtfLn5S$Y z^yKY-I=y+>=`-rpZaF4{6TyWp{v#UD&+XrHHh#bh$yuKFbk6@sc_;5SrF@QqVxMQj zX6D~@ydyd$G38tPt=Z2KoLBwu`o%~X3q77VMX&ZLUBVb|F|8aFipO;n1eXj6rokWX zg{buPl@Wfm+S&gWc>BYc)j-&4y&n}D5n2)_)`MIn>=Rn;e;*s75seLn1Y?CM8I z+n3t}u3)K&b1lv?kDgM~una*_fUmqfM_`3u=E*V?{bu{AZD ze4oYGZ@Ms7h!B1a*)g*7BCW5o3itiJ14$$duy+0bj6!~-IeVGkfe73cx-v`oKB&*} z&lFx`y`B7Eek{;=^h9X%$>z2N1zeQu3L`BaarE~t4Nv&gdKE^{mmgfhGGfZ-4BWTZ z*-8}d0$eWJI@!oU15``%CF6>&sxksbS&g;_NN(0V%pbA)Ez`fQT@juDK*hd#U}zZgiY!l7{9R5i&W_yBt&d2xz0=E?xQ*_#{daVr_0Usa#2n7*tq78X+zrDNX6tD0 z|9@AoiHouXDsT`bJax18^0o4?11Z_MS=-&xbg@F)>DyV^`al0{Cl3??X~J|>tCTIn F{|g&rSFHd5 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/overscroll_edge.png b/app/src/main/res/drawable-xhdpi/overscroll_edge.png new file mode 100644 index 0000000000000000000000000000000000000000..b5e6e61cd02c10bee3ec7e7fc86cbf1c8c5ffe7d GIT binary patch literal 862 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

~o2-_ZIyVIfr`fnIfiN!de{xO< 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/overscroll_glow.png b/app/src/main/res/drawable-xxhdpi/overscroll_glow.png new file mode 100644 index 0000000000000000000000000000000000000000..dc1f2795f9bafd553d040cc765f3ffefe8e8d12d GIT binary patch literal 123685 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%0DPGyutn89sOE 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_gallery.xml b/app/src/main/res/layout/activity_gallery.xml index 656555576..b4cc500c7 100644 --- a/app/src/main/res/layout/activity_gallery.xml +++ b/app/src/main/res/layout/activity_gallery.xml @@ -19,8 +19,8 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 8066bcb69..2174e4f48 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -109,4 +109,6 @@ @color/material_yellow_800 @color/material_deep_Orange_400 + #ff212121 + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 7e1593cf1..21ebd8f78 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -147,8 +147,9 @@ 224dp 248dp 48dp - 96dp 128dp + 56sp + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 723314ca6..b81815ab3 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -49,4 +49,8 @@ @null + + diff --git a/yorozuya b/yorozuya index 765b1e7d0..482a8c483 160000 --- a/yorozuya +++ b/yorozuya @@ -1 +1 @@ -Subproject commit 765b1e7d0c013a51a6add12f36633ad764990529 +Subproject commit 482a8c4838e163b2ce2aa76df7a47691bd448330