Skip to content

Commit 0b3a6f0

Browse files
committed
Add SVG support (PP-2691).
1 parent f755ae1 commit 0b3a6f0

File tree

3 files changed

+50
-3
lines changed

3 files changed

+50
-3
lines changed

README-CHANGES.xml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,8 +194,14 @@
194194
</c:change>
195195
</c:changes>
196196
</c:release>
197-
<c:release date="2025-01-13T20:49:03+00:00" is-open="true" ticket-system="org.lyrasis.jira" version="6.8.0">
198-
<c:changes/>
197+
<c:release date="2025-08-18T11:42:05+00:00" is-open="true" ticket-system="org.lyrasis.jira" version="6.8.0">
198+
<c:changes>
199+
<c:change date="2025-08-18T11:42:05+00:00" summary="Add SVG support.">
200+
<c:tickets>
201+
<c:ticket id="PP-2691"/>
202+
</c:tickets>
203+
</c:change>
204+
</c:changes>
199205
</c:release>
200206
</c:releases>
201207
<c:ticket-systems>

org.librarysimplified.r2.vanilla/src/main/java/org/librarysimplified/r2/vanilla/internal/SR2Controller.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ import org.readium.r2.shared.util.ErrorException
5353
import org.readium.r2.shared.util.Try
5454
import org.readium.r2.shared.util.Url
5555
import org.readium.r2.shared.util.asset.AssetRetriever
56+
import org.readium.r2.shared.util.asset.DefaultArchiveOpener
57+
import org.readium.r2.shared.util.asset.DefaultFormatSniffer
58+
import org.readium.r2.shared.util.asset.DefaultResourceFactory
5659
import org.readium.r2.shared.util.data.asInputStream
5760
import org.readium.r2.shared.util.getOrElse
5861
import org.readium.r2.shared.util.http.DefaultHttpClient
@@ -120,7 +123,13 @@ internal class SR2Controller private constructor(
120123
val httpClient =
121124
DefaultHttpClient(userAgent = "${BuildConfig.LIBRARY_PACKAGE_NAME}/${BuildConfig.R2_VERSION_NAME}")
122125
val assetRetriever =
123-
AssetRetriever(context.contentResolver, httpClient)
126+
AssetRetriever(
127+
DefaultResourceFactory(context.contentResolver, httpClient),
128+
DefaultArchiveOpener(),
129+
DefaultFormatSniffer(
130+
listOf(SVGSniffer()),
131+
),
132+
)
124133

125134
val publicationParser =
126135
DefaultPublicationParser(
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.librarysimplified.r2.vanilla.internal
2+
3+
import org.readium.r2.shared.util.FileExtension
4+
import org.readium.r2.shared.util.format.Format
5+
import org.readium.r2.shared.util.format.FormatHints
6+
import org.readium.r2.shared.util.format.FormatSniffer
7+
import org.readium.r2.shared.util.format.FormatSpecification
8+
import org.readium.r2.shared.util.format.Specification
9+
import org.readium.r2.shared.util.mediatype.MediaType
10+
11+
class SVGSniffer : FormatSniffer {
12+
13+
private object Svg : Specification
14+
15+
private val svgFormat = Format(
16+
specification = FormatSpecification(Svg),
17+
fileExtension = FileExtension("svg"),
18+
mediaType = MediaType.SVG,
19+
)
20+
21+
override fun sniffHints(
22+
hints: FormatHints,
23+
): Format? {
24+
if (
25+
hints.hasFileExtension("svg") ||
26+
hints.hasMediaType(MediaType.SVG.toString())
27+
) {
28+
return this.svgFormat
29+
}
30+
return null
31+
}
32+
}

0 commit comments

Comments
 (0)