MCPcopy Create free account
hub / github.com/OpenEndedGroup/Field2 / HTMLToTexture

Class HTMLToTexture

src/main/java/fieldcef/browser/HTMLToTexture.kt:23–296  ·  view source on GitHub ↗

* Created by marc on 9/20/2016. */

Source from the content-addressed store, hash-verified

21import fielded.webserver.Server
22import java.awt.Rectangle
23import java.nio.ByteBuffer
24import java.util.ArrayList
25import java.util.concurrent.Future
26import java.util.function.Consumer
27
28/**
29 * Created by marc on 9/20/2016.
30 */
31class HTMLToTexture(private val w: Int, private val h: Int) {
32 private val sourceView: MutableMap<String, ByteBuffer> = LinkedHashMap()
33 private val callback: MutableMap<String, Runnable> = LinkedHashMap()
34 private var s: Server? = null
35 private val a: Int
36 private val b: Int
37 private val browser: CefBrowser
38
39 @Transient
40 var callbackOnNextReload: Runnable? = null
41 var textTable: MutableMap<String, String> = object : LinkedHashMap<String, String>() {
42 override fun removeEldestEntry(eldest: Map.Entry<String, String>): Boolean {
43 return size > 100
44 }
45 }
46 var pendingRequests: MutableList<Runnable> = ArrayList()
47
48 @Transient
49 var requestDone = true
50 var mod = AtomicInteger(0)
51 private var timeSinceLastLoad: Long = 0
52 fun renderURL(url: String): Future<ByteBuffer?> {
53 val f = CompletableFuture<ByteBuffer?>()
54 pendingRequests.add(Runnable {
55 sourceView[url] = ByteBuffer.allocateDirect(4 * w * h).order(ByteOrder.nativeOrder())
56 callback[url] = Runnable {
57 f.complete(sourceView[url])
58 requestDone = true
59 }
60 callbackOnNextReload = Runnable {}
61 timeSinceLastLoad = System.currentTimeMillis()
62 browser.loadURL(url)
63 })
64 checkAndRunRequests()
65 return f
66 }
67
68 fun renderText(text: String): Future<ByteBuffer?> {
69 val f = CompletableFuture<ByteBuffer?>()
70 pendingRequests.add(Runnable {
71 val res = UUID.randomUUID().toString()
72 val url = "http://localhost:$a/$res"
73 sourceView[url] = ByteBuffer.allocateDirect(4 * w * h).order(ByteOrder.nativeOrder())
74 callback[url] = Runnable {
75 f.complete(sourceView[url])
76 requestDone = true
77 }
78 callbackOnNextReload = Runnable {}
79 textTable[url] = text
80 browser.loadURL(url)

Callers

nothing calls this directly

Calls 8

ServerClass · 0.85
nextAvailableMethod · 0.80
addURIHandlerMethod · 0.80
ResponseMethod · 0.80
makeBrowserMethod · 0.80
runFunction · 0.50
runMethod · 0.45
startMethod · 0.45

Tested by

no test coverage detected