Skip to content

Commit

Permalink
chore: merge branch 'hotfix/1.8.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
ghasemdev committed Sep 18, 2023
2 parents 6dfd99e + c507eeb commit 5fe5c71
Show file tree
Hide file tree
Showing 9 changed files with 658 additions and 210 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ import com.parsuomash.affogato.pdfviewer.internal.BlackPage
import com.parsuomash.affogato.pdfviewer.internal.PageContentInt
import com.parsuomash.affogato.pdfviewer.internal.PdfImage
import com.parsuomash.affogato.pdfviewer.internal.loadPdf
import com.parsuomash.affogato.pdfviewer.internal.tapToZoomHorizontal
import com.parsuomash.affogato.pdfviewer.state.HorizontalPdfReaderState
import com.parsuomash.affogato.pdfviewer.zoomable.Zoomable
import com.parsuomash.affogato.pdfviewer.zoomable.ZoomableDefaults
import com.parsuomash.affogato.pdfviewer.zoomable.rememberZoomableState

@OptIn(ExperimentalFoundationApi::class)
@Composable
Expand Down Expand Up @@ -47,33 +49,40 @@ fun HorizontalPDFReader(
}

state.pdfRender?.let { pdf ->
HorizontalPager(
modifier = Modifier
.fillMaxSize()
.tapToZoomHorizontal(state, constraints),
state = state.pagerState,
userScrollEnabled = state.scale == 1f
) { page ->
val pageContent = pdf.pageLists[page].stateFlow.collectAsState().value
DisposableEffect(key1 = Unit) {
pdf.pageLists[page].load()
onDispose {
pdf.pageLists[page].recycle()
}
}
when (pageContent) {
is PageContentInt.PageContent -> {
PdfImage(
bitmap = { pageContent.bitmap.asImageBitmap() },
contentDescription = pageContent.contentDescription
)
val zoomableState = rememberZoomableState(
minScale = ZoomableDefaults.DefaultScale
)

Zoomable(
state = zoomableState,
enabled = state.isZoomEnable
) {
HorizontalPager(
modifier = Modifier.fillMaxSize(),
state = state.pagerState,
userScrollEnabled = state.scale == 1f
) { page ->
val pageContent = pdf.pageLists[page].stateFlow.collectAsState().value
DisposableEffect(key1 = Unit) {
pdf.pageLists[page].load()
onDispose {
pdf.pageLists[page].recycle()
}
}
when (pageContent) {
is PageContentInt.PageContent -> {
PdfImage(
bitmap = { pageContent.bitmap.asImageBitmap() },
contentDescription = pageContent.contentDescription
)
}

is PageContentInt.BlankPage -> {
BlackPage(
width = pageContent.width,
height = pageContent.height
)
is PageContentInt.BlankPage -> {
BlackPage(
width = pageContent.width,
height = pageContent.height
)
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@ import com.parsuomash.affogato.pdfviewer.internal.BlackPage
import com.parsuomash.affogato.pdfviewer.internal.PageContentInt
import com.parsuomash.affogato.pdfviewer.internal.PdfImage
import com.parsuomash.affogato.pdfviewer.internal.loadPdf
import com.parsuomash.affogato.pdfviewer.internal.tapToZoomVertical
import com.parsuomash.affogato.pdfviewer.state.VerticalPdfReaderState
import com.parsuomash.affogato.pdfviewer.zoomable.Zoomable
import com.parsuomash.affogato.pdfviewer.zoomable.ZoomableDefaults
import com.parsuomash.affogato.pdfviewer.zoomable.rememberZoomableState

@Composable
fun VerticalPDFReader(
Expand All @@ -27,13 +29,14 @@ fun VerticalPDFReader(
modifier = modifier,
contentAlignment = Alignment.TopCenter
) {
val ctx = LocalContext.current
val context = LocalContext.current
val coroutineScope = rememberCoroutineScope()
val lazyState = state.lazyState

DisposableEffect(state.resource) {
loadPdf(
coroutineScope,
ctx,
context,
state,
constraints.maxWidth,
constraints.maxHeight,
Expand All @@ -43,35 +46,43 @@ fun VerticalPDFReader(
state.close()
}
}

state.pdfRender?.let { pdf ->
LazyColumn(
modifier = Modifier
.fillMaxSize()
.tapToZoomVertical(state, constraints),
horizontalAlignment = Alignment.CenterHorizontally,
state = lazyState
val zoomableState = rememberZoomableState(
minScale = ZoomableDefaults.DefaultScale
)

Zoomable(
state = zoomableState,
enabled = state.isZoomEnable
) {
items(pdf.pageCount) {
val pageContent = pdf.pageLists[it].stateFlow.collectAsState().value
DisposableEffect(key1 = Unit) {
pdf.pageLists[it].load()
onDispose {
pdf.pageLists[it].recycle()
}
}
when (pageContent) {
is PageContentInt.PageContent -> {
PdfImage(
bitmap = { pageContent.bitmap.asImageBitmap() },
contentDescription = pageContent.contentDescription
)
LazyColumn(
modifier = Modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
state = lazyState
) {
items(pdf.pageCount) {
val pageContent = pdf.pageLists[it].stateFlow.collectAsState().value
DisposableEffect(key1 = Unit) {
pdf.pageLists[it].load()
onDispose {
pdf.pageLists[it].recycle()
}
}
when (pageContent) {
is PageContentInt.PageContent -> {
PdfImage(
bitmap = { pageContent.bitmap.asImageBitmap() },
contentDescription = pageContent.contentDescription
)
}

is PageContentInt.BlankPage -> {
BlackPage(
width = pageContent.width,
height = pageContent.height
)
is PageContentInt.BlankPage -> {
BlackPage(
width = pageContent.width,
height = pageContent.height
)
}
}
}
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ fun rememberHorizontalPdfReaderState(
isZoomEnable: Boolean = true,
isAccessibleEnable: Boolean = false
): HorizontalPdfReaderState {
return rememberSaveable(saver = HorizontalPdfReaderState.Saver) {
return rememberSaveable(resource, saver = HorizontalPdfReaderState.Saver) {
HorizontalPdfReaderState(
resource = resource,
isZoomEnable = isZoomEnable,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ fun rememberVerticalPdfReaderState(
isZoomEnable: Boolean = true,
isAccessibleEnable: Boolean = false,
): VerticalPdfReaderState {
return rememberSaveable(saver = VerticalPdfReaderState.Saver) {
return rememberSaveable(resource, saver = VerticalPdfReaderState.Saver) {
VerticalPdfReaderState(resource, isZoomEnable, isAccessibleEnable)
}
}
Loading

0 comments on commit 5fe5c71

Please sign in to comment.