~eliasnaur/gio

ref: 48b6a73753e7ee567154297987f24a4d10485999 gio/ui/widget/image.go -rw-r--r-- 630 bytes
48b6a737Elias Naur all: run goimports 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// SPDX-License-Identifier: Unlicense OR MIT

package widget

import (
	"image"

	"gioui.org/ui"
	"gioui.org/ui/draw"
	"gioui.org/ui/f32"
	"gioui.org/ui/layout"
)

type Image struct {
	Src  image.Image
	Rect image.Rectangle
}

func (im Image) Layout(cs layout.Constraints) (ui.Op, layout.Dimens) {
	d := image.Point{X: cs.Width.Max, Y: cs.Height.Max}
	if d.X == ui.Inf {
		d.X = cs.Width.Min
	}
	if d.Y == ui.Inf {
		d.Y = cs.Height.Min
	}
	dr := f32.Rectangle{
		Max: f32.Point{X: float32(d.X), Y: float32(d.Y)},
	}
	op := draw.OpImage{Rect: dr, Src: im.Src, SrcRect: im.Rect}
	return op, layout.Dimens{Size: d, Baseline: d.Y}
}