mirror of
https://github.com/golang/go
synced 2024-11-21 19:04:44 -07:00
image: add a SubImage method.
R=r CC=golang-dev https://golang.org/cl/4515179
This commit is contained in:
parent
b873701dbd
commit
422abf3b8e
@ -58,6 +58,16 @@ func (p *RGBA) SetRGBA(x, y int, c RGBAColor) {
|
|||||||
p.Pix[y*p.Stride+x] = c
|
p.Pix[y*p.Stride+x] = c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SubImage returns an image representing the portion of the image p visible
|
||||||
|
// through r. The returned value shares pixels with the original image.
|
||||||
|
func (p *RGBA) SubImage(r Rectangle) Image {
|
||||||
|
return &RGBA{
|
||||||
|
Pix: p.Pix,
|
||||||
|
Stride: p.Stride,
|
||||||
|
Rect: p.Rect.Intersect(r),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
||||||
func (p *RGBA) Opaque() bool {
|
func (p *RGBA) Opaque() bool {
|
||||||
if p.Rect.Empty() {
|
if p.Rect.Empty() {
|
||||||
@ -117,6 +127,16 @@ func (p *RGBA64) SetRGBA64(x, y int, c RGBA64Color) {
|
|||||||
p.Pix[y*p.Stride+x] = c
|
p.Pix[y*p.Stride+x] = c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SubImage returns an image representing the portion of the image p visible
|
||||||
|
// through r. The returned value shares pixels with the original image.
|
||||||
|
func (p *RGBA64) SubImage(r Rectangle) Image {
|
||||||
|
return &RGBA64{
|
||||||
|
Pix: p.Pix,
|
||||||
|
Stride: p.Stride,
|
||||||
|
Rect: p.Rect.Intersect(r),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
||||||
func (p *RGBA64) Opaque() bool {
|
func (p *RGBA64) Opaque() bool {
|
||||||
if p.Rect.Empty() {
|
if p.Rect.Empty() {
|
||||||
@ -176,6 +196,16 @@ func (p *NRGBA) SetNRGBA(x, y int, c NRGBAColor) {
|
|||||||
p.Pix[y*p.Stride+x] = c
|
p.Pix[y*p.Stride+x] = c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SubImage returns an image representing the portion of the image p visible
|
||||||
|
// through r. The returned value shares pixels with the original image.
|
||||||
|
func (p *NRGBA) SubImage(r Rectangle) Image {
|
||||||
|
return &NRGBA{
|
||||||
|
Pix: p.Pix,
|
||||||
|
Stride: p.Stride,
|
||||||
|
Rect: p.Rect.Intersect(r),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
||||||
func (p *NRGBA) Opaque() bool {
|
func (p *NRGBA) Opaque() bool {
|
||||||
if p.Rect.Empty() {
|
if p.Rect.Empty() {
|
||||||
@ -235,6 +265,16 @@ func (p *NRGBA64) SetNRGBA64(x, y int, c NRGBA64Color) {
|
|||||||
p.Pix[y*p.Stride+x] = c
|
p.Pix[y*p.Stride+x] = c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SubImage returns an image representing the portion of the image p visible
|
||||||
|
// through r. The returned value shares pixels with the original image.
|
||||||
|
func (p *NRGBA64) SubImage(r Rectangle) Image {
|
||||||
|
return &NRGBA64{
|
||||||
|
Pix: p.Pix,
|
||||||
|
Stride: p.Stride,
|
||||||
|
Rect: p.Rect.Intersect(r),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
||||||
func (p *NRGBA64) Opaque() bool {
|
func (p *NRGBA64) Opaque() bool {
|
||||||
if p.Rect.Empty() {
|
if p.Rect.Empty() {
|
||||||
@ -294,6 +334,16 @@ func (p *Alpha) SetAlpha(x, y int, c AlphaColor) {
|
|||||||
p.Pix[y*p.Stride+x] = c
|
p.Pix[y*p.Stride+x] = c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SubImage returns an image representing the portion of the image p visible
|
||||||
|
// through r. The returned value shares pixels with the original image.
|
||||||
|
func (p *Alpha) SubImage(r Rectangle) Image {
|
||||||
|
return &Alpha{
|
||||||
|
Pix: p.Pix,
|
||||||
|
Stride: p.Stride,
|
||||||
|
Rect: p.Rect.Intersect(r),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
||||||
func (p *Alpha) Opaque() bool {
|
func (p *Alpha) Opaque() bool {
|
||||||
if p.Rect.Empty() {
|
if p.Rect.Empty() {
|
||||||
@ -353,6 +403,16 @@ func (p *Alpha16) SetAlpha16(x, y int, c Alpha16Color) {
|
|||||||
p.Pix[y*p.Stride+x] = c
|
p.Pix[y*p.Stride+x] = c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SubImage returns an image representing the portion of the image p visible
|
||||||
|
// through r. The returned value shares pixels with the original image.
|
||||||
|
func (p *Alpha16) SubImage(r Rectangle) Image {
|
||||||
|
return &Alpha16{
|
||||||
|
Pix: p.Pix,
|
||||||
|
Stride: p.Stride,
|
||||||
|
Rect: p.Rect.Intersect(r),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
||||||
func (p *Alpha16) Opaque() bool {
|
func (p *Alpha16) Opaque() bool {
|
||||||
if p.Rect.Empty() {
|
if p.Rect.Empty() {
|
||||||
@ -412,6 +472,16 @@ func (p *Gray) SetGray(x, y int, c GrayColor) {
|
|||||||
p.Pix[y*p.Stride+x] = c
|
p.Pix[y*p.Stride+x] = c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SubImage returns an image representing the portion of the image p visible
|
||||||
|
// through r. The returned value shares pixels with the original image.
|
||||||
|
func (p *Gray) SubImage(r Rectangle) Image {
|
||||||
|
return &Gray{
|
||||||
|
Pix: p.Pix,
|
||||||
|
Stride: p.Stride,
|
||||||
|
Rect: p.Rect.Intersect(r),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
||||||
func (p *Gray) Opaque() bool {
|
func (p *Gray) Opaque() bool {
|
||||||
return true
|
return true
|
||||||
@ -457,6 +527,16 @@ func (p *Gray16) SetGray16(x, y int, c Gray16Color) {
|
|||||||
p.Pix[y*p.Stride+x] = c
|
p.Pix[y*p.Stride+x] = c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SubImage returns an image representing the portion of the image p visible
|
||||||
|
// through r. The returned value shares pixels with the original image.
|
||||||
|
func (p *Gray16) SubImage(r Rectangle) Image {
|
||||||
|
return &Gray16{
|
||||||
|
Pix: p.Pix,
|
||||||
|
Stride: p.Stride,
|
||||||
|
Rect: p.Rect.Intersect(r),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
||||||
func (p *Gray16) Opaque() bool {
|
func (p *Gray16) Opaque() bool {
|
||||||
return true
|
return true
|
||||||
@ -544,6 +624,17 @@ func (p *Paletted) SetColorIndex(x, y int, index uint8) {
|
|||||||
p.Pix[y*p.Stride+x] = index
|
p.Pix[y*p.Stride+x] = index
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SubImage returns an image representing the portion of the image p visible
|
||||||
|
// through r. The returned value shares pixels with the original image.
|
||||||
|
func (p *Paletted) SubImage(r Rectangle) Image {
|
||||||
|
return &Paletted{
|
||||||
|
Pix: p.Pix,
|
||||||
|
Stride: p.Stride,
|
||||||
|
Rect: p.Rect.Intersect(r),
|
||||||
|
Palette: p.Palette,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
// Opaque scans the entire image and returns whether or not it is fully opaque.
|
||||||
func (p *Paletted) Opaque() bool {
|
func (p *Paletted) Opaque() bool {
|
||||||
for _, c := range p.Palette {
|
for _, c := range p.Palette {
|
||||||
|
@ -169,6 +169,15 @@ func (p *YCbCr) At(x, y int) image.Color {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SubImage returns an image representing the portion of the image p visible
|
||||||
|
// through r. The returned value shares pixels with the original image.
|
||||||
|
func (p *YCbCr) SubImage(r image.Rectangle) image.Image {
|
||||||
|
q := new(YCbCr)
|
||||||
|
*q = *p
|
||||||
|
q.Rect = q.Rect.Intersect(r)
|
||||||
|
return q
|
||||||
|
}
|
||||||
|
|
||||||
func (p *YCbCr) Opaque() bool {
|
func (p *YCbCr) Opaque() bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user