[orx-image-fit] Add imageFitSub function

Introduce the `imageFitSub` function, enabling subsections of images to be drawn with fit and alignment capabilities. Added a demo showcasing its usage with grid-based rendering and updated dependencies with `orx-noise` for randomness support.
This commit is contained in:
Edwin Jakobs
2025-02-26 21:28:54 +01:00
parent 660949271d
commit acf1c33c5e
3 changed files with 61 additions and 0 deletions

View File

@@ -152,4 +152,36 @@ fun Drawer.imageFit(
image(img, source, target)
return Pair(source, target)
}
/**
* Draws a subsection of the given image into a target rectangle within the current `Drawer` bounds,
* using the specified fit method and alignment.
*
* @param img The `ColorBuffer` representing the image to draw.
* @param source The subsection of the image to be fitted, defined as a `Rectangle`. Defaults to the full bounds of the image.
* @param target The rectangle within the `Drawer` bounds where the image will be drawn. Defaults to the full bounds of the `Drawer`.
* @param horizontalPosition Horizontal alignment or cropping position for the image as a normalized value from -1.0 to 1.0.
* @param verticalPosition Vertical alignment or cropping position for the image as a normalized value from -1.0 to 1.0.
* @param fitMethod The method to use for fitting the image into the target rectangle. Defaults to `FitMethod.Cover`.
* @return A `Pair` of `Rectangle` objects, where the first element is the transformed source rectangle, and the second element is the target rectangle.
*/
fun Drawer.imageFitSub(
img: ColorBuffer,
source: Rectangle = img.bounds,
target: Rectangle = this.bounds,
horizontalPosition: Double = 0.0,
verticalPosition: Double = 0.0,
fitMethod: FitMethod = FitMethod.Cover
): Pair<Rectangle, Rectangle> {
val (fitSource, fitTarget) = fitRectangle(
source,
target,
horizontalPosition,
verticalPosition,
fitMethod
)
image(img, fitSource, fitTarget)
return Pair(source, target)
}