Multiple Placements
Transmit once, display many times. Saves bandwidth and memory.
Transmit Then Put
go
// 1. Transmit image (no display)
transmitCmd := kgp.NewTransmit().
ImageID(10).
Format(kgp.FormatPNG).
TransmitDirect(pngData).
Build()
fmt.Print(transmitCmd.Encode())
// 2. Create placements
placement1 := kgp.NewPut(10).
DisplaySize(20, 15).
ZIndex(1).
Build()
fmt.Print(placement1.Encode())
placement2 := kgp.NewPut(10).
DisplaySize(10, 7).
CellOffset(5, 5).
Build()
fmt.Print(placement2.Encode())Same Image, Different Sizes
go
transmitCmd := kgp.NewTransmit().
ImageID(100).
Format(kgp.FormatPNG).
TransmitDirect(pngData).
Build()
fmt.Print(transmitCmd.Encode())
// Small
fmt.Print(kgp.NewPut(100).DisplaySize(5, 5).Build().Encode())
fmt.Print(" ")
// Medium
fmt.Print(kgp.NewPut(100).DisplaySize(8, 8).Build().Encode())
fmt.Print(" ")
// Large
fmt.Print(kgp.NewPut(100).DisplaySize(12, 12).Build().Encode())
fmt.Println()Placement IDs for Targeting
Use PlacementID when you need to delete or update specific placements.
go
place1 := kgp.NewPut(100).
PlacementID(1).
DisplaySize(10, 10).
Build()
fmt.Print(place1.Encode())
place2 := kgp.NewPut(100).
PlacementID(2).
DisplaySize(5, 5).
Build()
fmt.Print(place2.Encode())
// Later: delete only placement 2
del := kgp.NewDelete(kgp.DeleteByPlacementID).
ImageID(100).
PlacementID(2).
Build()
fmt.Print(del.Encode())