Skip to content

offscreen.NewRenderer fit-to-content #87

@AgentNemo00

Description

@AgentNemo00

The separated issue for this answer.

The usecase is simple. I render a text widget without knowing the final size of it.

This is the current state:

func CreateImg() *image.RGBA {
	m3 := material3.New(widget.Hex(0x6750A4))
	r := offscreen.NewRenderer(200, 100,
		offscreen.WithTheme(m3),
		offscreen.WithBackground(widget.RGBA8(30, 30, 50, 230)),
	)
	now := time.Now().Format("15:04:05")
	label := primitives.Box(
		primitives.Text(now).
			FontSize(32).
			Bold().
			Color(widget.RGBA8(220, 220, 255, 255)),
	).Padding(10)
	r.Render(label)
	return r.Image()
}

I suggest to have an offscreen render which fits. Seems like I was way to influenced by flutter but I thought about a widget tree, children render first...

I would love to have it changed to something similar as for fitting:

func CreateImg() *image.RGBA {
	m3 := material3.New(widget.Hex(0x6750A4))
	r := offscreen.NewRenderer(
                 offscreen.WithTheme(m3),
		offscreen.WithBackground(widget.RGBA8(30, 30, 50, 230)),
	)
	now := time.Now().Format("15:04:05")
	label := primitives.Box(
		primitives.Text(now).
			FontSize(32).
			Bold().
			Color(widget.RGBA8(220, 220, 255, 255)),
	).Padding(10)
	r.Render(label)
	return r.Image()
}

Size would be optional, like:

func CreateImg() *image.RGBA {
	m3 := material3.New(widget.Hex(0x6750A4))
	r := offscreen.NewRenderer(
                 offscreen.WithSize(200, 100),              
                 offscreen.WithTheme(m3),
		offscreen.WithBackground(widget.RGBA8(30, 30, 50, 230)),
	)
	now := time.Now().Format("15:04:05")
	label := primitives.Box(
		primitives.Text(now).
			FontSize(32).
			Bold().
			Color(widget.RGBA8(220, 220, 255, 255)),
	).Padding(10)
	r.Render(label)
	return r.Image()
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions