Inline hippo's glcomponents

* Replace android support with androidx as well
This commit is contained in:
tarsin committed 2022-05-30 09:20:02 +08:00
1 parent cf3769959f
commit 01daf4a63e
68 files changed
+16325 -7

No files matched your search

@@ -0,0 +1,163 @@
/*
* Copyright 2016 Hippo Seven
*
* 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.glgallery;
import androidx.annotation.NonNull;
import com.hippo.glview.image.ImageTexture;
import com.hippo.glview.image.ImageWrapper;
import com.hippo.glview.view.GLRootView;
public class SimpleAdapter extends GalleryView.Adapter implements GalleryProvider.Listener {
private final GalleryProvider mProvider;
private final ImageTexture.Uploader mUploader;
private boolean mShowIndex = true;
public SimpleAdapter(@NonNull GLRootView glRootView, @NonNull GalleryProvider provider) {
mProvider = provider;
mUploader = new ImageTexture.Uploader(glRootView);
}
public void clearUploader() {
mUploader.clear();
}
public void setShowIndex(boolean show) {
mShowIndex = show;
}
@Override
public void onBind(GalleryPageView view, int index) {
mProvider.request(index);
view.showInfo();
view.setImage(null);
if (mShowIndex) {
view.setPage(index + 1);
} else {
view.hidePage();
}
view.setProgress(GalleryPageView.PROGRESS_INDETERMINATE);
view.setError(null, null);
}
@Override
public void onUnbind(GalleryPageView view, int index) {
mProvider.cancelRequest(index);
view.setImage(null);
view.setError(null, null);
}
@Override
public String getError() {
return mProvider.getError();
}
@Override
public int size() {
return mProvider.size();
}
@Override
public void onDataChanged() {
mGalleryView.onDataChanged();
}
@Override
public void onPageWait(int index) {
GalleryPageView page = findPageByIndex(index);
if (page != null) {
page.showInfo();
page.setImage(null);
if (mShowIndex) {
page.setPage(index + 1);
} else {
page.hidePage();
}
page.setProgress(GalleryPageView.PROGRESS_INDETERMINATE);
page.setError(null, null);
}
}
@Override
public void onPagePercent(int index, float percent) {
GalleryPageView page = findPageByIndex(index);
if (page != null) {
page.showInfo();
page.setImage(null);
if (mShowIndex) {
page.setPage(index + 1);
} else {
page.hidePage();
}
page.setProgress(percent);
page.setError(null, null);
}
}
@Override
public void onPageSucceed(int index, ImageWrapper image) {
GalleryPageView page = findPageByIndex(index);
if (page != null) {
if (image.obtain()) {
ImageTexture imageTexture = new ImageTexture(image);
mUploader.addTexture(imageTexture);
page.showImage();
page.setImage(imageTexture);
if (mShowIndex) {
page.setPage(index + 1);
} else {
page.hidePage();
}
page.setProgress(GalleryPageView.PROGRESS_GONE);
page.setError(null, null);
} else {
// The image is recycled, request again.
// TODO request loop ?
mProvider.request(index);
}
}
}
@Override
public void onPageFailed(int index, String error) {
GalleryPageView page = findPageByIndex(index);
if (page != null) {
page.showInfo();
page.setImage(null);
if (mShowIndex) {
page.setPage(index + 1);
} else {
page.hidePage();
}
page.setProgress(GalleryPageView.PROGRESS_GONE);
page.setError(error, mGalleryView);
}
}
@Override
public void onDataChanged(int index) {
GalleryPageView page = findPageByIndex(index);
if (page != null) {
mProvider.request(index);
}
}
private GalleryPageView findPageByIndex(int index) {
return mGalleryView != null ? mGalleryView.findPageByIndex(index) : null;
}
}