Skip to content

Commit 71e2100

Browse files
committed
Improve imagen Java API
- Make the `ImagenGenerationConfig.Builder` follow the builder pattern - Mark companion object `ImagenImageFormat` methods as @JvmStatic for easier access
1 parent 95bbf92 commit 71e2100

File tree

2 files changed

+43
-12
lines changed

2 files changed

+43
-12
lines changed

firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenGenerationConfig.kt

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,49 @@ public class ImagenGenerationConfig(
3939
*
4040
* This is mainly intended for Java interop. For Kotlin, use [imagenGenerationConfig] for a more
4141
* idiomatic experience.
42-
*
43-
* @property negativePrompt See [ImagenGenerationConfig.negativePrompt].
44-
* @property numberOfImages See [ImagenGenerationConfig.numberOfImages].
45-
* @property aspectRatio See [ImagenGenerationConfig.aspectRatio].
46-
* @property imageFormat See [ImagenGenerationConfig.imageFormat]
47-
* @property addWatermark See [ImagenGenerationConfig.addWatermark]
48-
* @see [imagenGenerationConfig]
4942
*/
5043
public class Builder {
51-
@JvmField public var negativePrompt: String? = null
52-
@JvmField public var numberOfImages: Int? = 1
53-
@JvmField public var aspectRatio: ImagenAspectRatio? = null
54-
@JvmField public var imageFormat: ImagenImageFormat? = null
55-
@JvmField public var addWatermark: Boolean? = null
44+
private var negativePrompt: String? = null
45+
private var numberOfImages: Int? = 1
46+
private var aspectRatio: ImagenAspectRatio? = null
47+
private var imageFormat: ImagenImageFormat? = null
48+
private var addWatermark: Boolean? = null
49+
50+
/**
51+
* See [ImagenGenerationConfig.negativePrompt].
52+
*/
53+
public fun setNegativePrompt(negativePrompt: String): Builder = apply {
54+
this.negativePrompt = negativePrompt
55+
}
56+
57+
/**
58+
* See [ImagenGenerationConfig.numberOfImages].
59+
*/
60+
public fun setNumberOfImages(numberOfImages: Int): Builder = apply {
61+
this.numberOfImages = numberOfImages
62+
}
63+
64+
/**
65+
* See [ImagenGenerationConfig.aspectRatio].
66+
*/
67+
public fun setAspectRatio(aspectRatio: ImagenAspectRatio): Builder = apply {
68+
this.aspectRatio = aspectRatio
69+
}
70+
71+
/**
72+
* See [ImagenGenerationConfig.imageFormat].
73+
*/
74+
public fun setImageFormat(imageFormat: ImagenImageFormat): Builder = apply {
75+
this.imageFormat = imageFormat
76+
}
77+
78+
/**
79+
* See [ImagenGenerationConfig.addWatermark].
80+
*/
81+
public fun setAddWatermark(addWatermark: Boolean): Builder = apply {
82+
this.addWatermark = addWatermark
83+
}
84+
5685

5786
/**
5887
* Alternative casing for [ImagenGenerationConfig.Builder]:

firebase-vertexai/src/main/kotlin/com/google/firebase/vertexai/type/ImagenImageFormat.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,13 @@ private constructor(public val mimeType: String, public val compressionQuality:
4141
* @param compressionQuality an int (1-100) representing the quality of the image; a lower
4242
* number means the image is permitted to be lower quality to reduce size.
4343
*/
44+
@JvmStatic
4445
public fun jpeg(compressionQuality: Int? = null): ImagenImageFormat {
4546
return ImagenImageFormat("image/jpeg", compressionQuality)
4647
}
4748

4849
/** An [ImagenImageFormat] representing a PNG image */
50+
@JvmStatic
4951
public fun png(): ImagenImageFormat {
5052
return ImagenImageFormat("image/png", null)
5153
}

0 commit comments

Comments
 (0)