Generate SSD page rendering from typed Jerboa
ober
6e97e8e492594c72b80bfd0369714d2fdd4e91a1
--- a/templates/ssd-review.ss +++ b/templates/ssd-review.ss @@ -4828,6 +4828,7 @@ mainActivityPullTruthDumpAsync mainActivityPushTruthDumpAsync mainActivityMergeRemoteTruthAsync + mainActivityRenderCurrentPageAsync mainActivityInstallApproveAreaDialogButton mainActivityInstallAppendDialogButton mainActivityInstallEditDialogButtons @@ -5342,6 +5343,25 @@ (extern (mainActivityPageIndexRaw (activity : MainActivity)) : Int32 (kotlin-member-get pageIndex)) + (extern (mainActivityRenderPdfPageRaw + (activity : MainActivity) + (uri : Uri) + (page : Int32)) : Bitmap + (kotlin-member-call renderPdfPage)) + (extern (mainActivityRestoreViewportAfterLayoutRaw + (activity : MainActivity) + (viewport : (Nullable ViewportState))) : Unit + (kotlin-member-call restoreViewportAfterLayout)) + (extern (mainActivityDetectCurrentRaw + (activity : MainActivity) + (forceDetect : Bool) + (expectedGeneration : Int32) + (expectedPageIndex : Int32) + (expectedUri : (Nullable Uri)) + (expectedPdfName : String) + (expectedPdfSha1 : String) + (expectedPageCount : Int32)) : Unit + (kotlin-member-call detectCurrent)) (extern (mainActivityCurrentSessionRaw (activity : MainActivity)) : (Nullable SsdSession) (kotlin-member-get currentSession)) @@ -6918,6 +6938,73 @@ (int32 0) (int32 0)))))))) (begin)))))))) + (def (mainActivityRenderCurrentPageAsync + (activity : MainActivity) + (view : SsdReviewView) + (uri : Uri) + (renderPageIndex : Int32) + (renderGeneration : Int32) + (renderPdfName : String) + (renderPdfSha1 : String) + (renderPageCount : Int32) + (restoredViewport : (Nullable ViewportState))) : Unit + (runBackground + (lambda () + (try + (let ((bitmap + (mainActivityRenderPdfPageRaw + activity + uri + renderPageIndex))) + (mainActivityRunOnUiThreadRaw + activity + (lambda () + (if (currentLoadStale + renderGeneration + (mainActivityLoadGenerationRaw activity) + (mainActivityPdfUriRaw activity) + uri + (mainActivityPageIndexRaw activity) + renderPageIndex) + (begin) + (begin + (mainActivityShowBitmapAndClearSession + activity + view + bitmap) + (mainActivityRestoreViewportAfterLayoutRaw + activity + restoredViewport) + (mainActivitySetStatusRaw + activity + (renderedLoadingTruthStatus + renderPdfName + renderPageIndex + renderPageCount)) + (mainActivityDetectCurrentRaw + activity + #f + renderGeneration + renderPageIndex + (nullable-some uri) + renderPdfName + renderPdfSha1 + renderPageCount)))))) + (catch (error : Exception) + (mainActivityRunOnUiThreadRaw + activity + (lambda () + (if (currentLoadMatches + renderGeneration + (mainActivityLoadGenerationRaw activity) + (mainActivityPdfUriRaw activity) + uri + (mainActivityPageIndexRaw activity) + renderPageIndex) + (mainActivitySetStatusRaw + activity + (renderFailedStatus (exceptionMessageRaw error))) + (begin))))))))) (def (mainActivityInstallApproveAreaDialogButton (activity : MainActivity) (dialog : AlertDialog) @@ -8707,7 +8794,7 @@ " reviewViewClearInteractionState(reviewView)" " }" "" - " private fun restoreViewportAfterLayout(viewport: ViewportState?) {" + " internal fun restoreViewportAfterLayout(viewport: ViewportState?) {" " reviewViewRestoreViewportAfterLayout(reviewView, viewport)" " }" "" @@ -8831,34 +8918,20 @@ " val renderPdfSha1 = pdfSha1" " val renderPageCount = pageCount" " val restoredViewport = restoredViewportFor(uri, renderPageIndex)" - " thread {" - " try {" - " val bitmap = renderPdfPage(uri, renderPageIndex)" - " runOnUiThread {" - " if (isStaleLoad(renderGeneration, uri, renderPageIndex)) return@runOnUiThread" - " mainActivityShowBitmapAndClearSession(this, reviewView, bitmap)" - " restoreViewportAfterLayout(restoredViewport)" - " setStatus(renderedLoadingTruthStatus(renderPdfName, renderPageIndex, renderPageCount))" - " detectCurrent(" - " expectedGeneration = renderGeneration," - " expectedPageIndex = renderPageIndex," - " expectedUri = uri," - " expectedPdfName = renderPdfName," - " expectedPdfSha1 = renderPdfSha1," - " expectedPageCount = renderPageCount" - " )" - " }" - " } catch (error: Exception) {" - " runOnUiThread {" - " if (isCurrentLoad(renderGeneration, uri, renderPageIndex)) {" - " setStatus(renderFailedStatus(error.message))" - " }" - " }" - " }" - " }" + " mainActivityRenderCurrentPageAsync(" + " this," + " reviewView," + " uri," + " renderPageIndex," + " renderGeneration," + " renderPdfName," + " renderPdfSha1," + " renderPageCount," + " restoredViewport" + " )" " }" "" - " private fun detectCurrent(" + " internal fun detectCurrent(" " forceDetect: Boolean = false," " expectedGeneration: Int = loadGeneration," " expectedPageIndex: Int = pageIndex," @@ -9590,7 +9663,7 @@ " openPdfRenderer(uri).use { renderer -> return renderer.pageCount }" " }" "" - " private fun renderPdfPage(uri: Uri, index: Int): Bitmap {" + " internal fun renderPdfPage(uri: Uri, index: Int): Bitmap {" " openPdfRenderer(uri).use { renderer ->" " renderer.openPage(index).use { page ->" " val scale = DPI / 72f"