Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
Bhuvaneshw authored Jan 19, 2023
1 parent dc5a6ad commit 6ff54dc
Show file tree
Hide file tree
Showing 5 changed files with 291 additions and 38 deletions.
50 changes: 26 additions & 24 deletions acpdfview/src/main/java/com/acutecoder/pdf/PdfAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import android.graphics.drawable.Drawable;
import android.graphics.pdf.PdfRenderer;
import android.os.ParcelFileDescriptor;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
Expand All @@ -36,38 +37,38 @@ final class PdfAdapter extends RecyclerView.Adapter<PdfAdapter.ViewHolder>
0, 0, 0, 1.0f, 0 // alpha
};
private final Context context;
private final File file;
private final PdfRecyclerView recyclerView;
private final TaskHandler handler;
private PdfRenderer renderer;
private PdfRenderer detailsRenderer, pageRenderer;
private boolean isDarkMode;
private float scale = 1f, width = 0;
private boolean fling;
private boolean fling = false;
private int modFlingLimit = 3000;
private Drawable drawable;

@SuppressLint("NotifyDataSetChanged")
public PdfAdapter(Context context, File file, PdfRecyclerView recycler, boolean isDarkMode) {
public PdfAdapter(Context context, PdfRecyclerView recyclerView) {
this.context = context;
this.file = file;
this.recyclerView = recyclerView;
handler = new TaskHandler();
setDarkMode(isDarkMode);
// new Task<>(() -> {
//
// return null;
// }, r -> notifyDataSetChanged(), -1).start();
}

public void setFile(File file) {
try {
ParcelFileDescriptor fd = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
renderer = new PdfRenderer(fd);
recycler.setTotalPage(renderer.getPageCount());
} catch (Exception ignored) {
if (file instanceof TemporaryFile)
file = ((TemporaryFile) file).getTempFile(context, context.getCacheDir() + "/PdfView/");
detailsRenderer = new PdfRenderer(ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY));
pageRenderer = new PdfRenderer(ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY));
recyclerView.setTotalPage(detailsRenderer.getPageCount());
} catch (Exception e) {
Log.e("adp", e.toString());
}
}

@SuppressLint("ResourceType")
@NonNull
@Override
@SuppressLint("ResourceType,InflateParams")
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
@SuppressLint("InflateParams")
LinearLayout view = new LinearLayout(context);
view.setPadding(20, 20, 20, 20);
View imageView = new ImageView(context);
Expand All @@ -80,9 +81,9 @@ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
@Override
@SuppressLint("ResourceType")
public void onBindViewHolder(@NonNull ViewHolder holder, int pos) {
if (width > 0 && renderer != null) {
if (width > 0 && detailsRenderer != null) {
final int position = pos;
PdfRenderer.Page page = renderer.openPage(position);
PdfRenderer.Page page = detailsRenderer.openPage(position);
final ImageView imageView = holder.itemView.findViewById(1001);
imageView.setImageDrawable(null);
imageView.setBackground(drawable.mutate());
Expand All @@ -97,17 +98,14 @@ public void onBindViewHolder(@NonNull ViewHolder holder, int pos) {
if (!fling) {
handler.add(new Task<>(() -> {
try {
final ParcelFileDescriptor fd = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
final PdfRenderer renderer2 = new PdfRenderer(fd);
final PdfRenderer.Page page2 = renderer2.openPage(position);
final PdfRenderer.Page page2 = pageRenderer.openPage(position);
final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
page2.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
page2.close();
Drawable drawable = new BitmapDrawable(context.getResources(), bitmap);
if (isDarkMode)
drawable.setColorFilter(new ColorMatrixColorFilter(NEGATIVE));
imageView.setImageDrawable(drawable);
return bitmap;
} catch (Exception ignored) {
}
return null;
Expand All @@ -121,7 +119,7 @@ public void onBindViewHolder(@NonNull ViewHolder holder, int pos) {
@Override
public int getItemCount() {
try {
return renderer.getPageCount();
return detailsRenderer.getPageCount();
} catch (Exception e) {
return 0;
}
Expand Down Expand Up @@ -183,7 +181,7 @@ void setWidth(float width) {
this.width = width - 40;
}

void refresh(PdfRecyclerView recyclerView) {
public void refresh(PdfRecyclerView recyclerView) {
int start = recyclerView.findFirstVisiblePosition();
int end = recyclerView.findLastVisiblePosition();
refreshViewHolder(recyclerView, start, end);
Expand All @@ -193,6 +191,10 @@ void setBackground(Drawable drawable) {
this.drawable = drawable;
}

float getScale() {
return scale;
}

private void refreshViewHolder(PdfRecyclerView recyclerView, int start, int end) {
for (; start <= end; start++) {
refreshViewHolder(recyclerView, start);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,10 @@ public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newStat
setNestedScrollingEnabled(false);
}

public void delete() throws Throwable {
finalize();
}

void setMaxScaleFactor(float mMaxScaleFactor) {
this.mMaxScaleFactor = mMaxScaleFactor;
}
Expand Down
7 changes: 4 additions & 3 deletions acpdfview/src/main/java/com/acutecoder/pdf/PdfScrollBar.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ public void attachTo(PdfView pdfView) {
pdfView.addOnActionListener(new OnActionListener() {
@Override
public void onStartLoad() {
init();
if (view == null)
init();
}

@Override
Expand Down Expand Up @@ -103,7 +104,7 @@ protected void onPageChange(View view, int currentPage, int totalPage) {
String newText = currentPage + "/" + totalPage;
String oldText = textView.getText().toString();
textView.setText(newText);
if (oldText.length() == newText.length()) return;
if (oldText.length() == newText.length()) return;
ViewGroup.LayoutParams lp = view.getLayoutParams();
lp.width = (int) (2 * textView.getPaint().measureText(newText));
textView.setLayoutParams(lp);
Expand All @@ -129,7 +130,7 @@ private void onChangeScroll(float y, boolean updatePdfView) {
int cPos = (int) Math.ceil(y * totalPage / getHeight());
onPageUpdate(view, fPos + 1, totalPage);
if (updatePdfView) {
pdfView.scrollToPage(cPos);
pdfView.scrollToPage(cPos + 1);
}
}

Expand Down
Loading

0 comments on commit 6ff54dc

Please sign in to comment.