summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/nfnt/resize/ycc.go
diff options
context:
space:
mode:
authortechknowlogick <techknowlogick@gitea.io>2022-01-14 18:16:05 -0500
committerGitHub <noreply@github.com>2022-01-14 18:16:05 -0500
commit84145e45c50130922fae9055535ab5ea0378e1d4 (patch)
treefce077a5ae462840bb876ace79aca42abab29ed7 /vendor/github.com/nfnt/resize/ycc.go
parent2b16ca7c773de278ba01f122dc6f9f43d7534c52 (diff)
downloadgitea-84145e45c50130922fae9055535ab5ea0378e1d4.tar.gz
gitea-84145e45c50130922fae9055535ab5ea0378e1d4.zip
Remove golang vendored directory (#18277)
* rm go vendor * fix drone yaml * add to gitignore
Diffstat (limited to 'vendor/github.com/nfnt/resize/ycc.go')
-rw-r--r--vendor/github.com/nfnt/resize/ycc.go387
1 files changed, 0 insertions, 387 deletions
diff --git a/vendor/github.com/nfnt/resize/ycc.go b/vendor/github.com/nfnt/resize/ycc.go
deleted file mode 100644
index 143e4d06ac..0000000000
--- a/vendor/github.com/nfnt/resize/ycc.go
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
-Copyright (c) 2014, Charlie Vieth <charlie.vieth@gmail.com>
-
-Permission to use, copy, modify, and/or distribute this software for any purpose
-with or without fee is hereby granted, provided that the above copyright notice
-and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
-OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
-THIS SOFTWARE.
-*/
-
-package resize
-
-import (
- "image"
- "image/color"
-)
-
-// ycc is an in memory YCbCr image. The Y, Cb and Cr samples are held in a
-// single slice to increase resizing performance.
-type ycc struct {
- // Pix holds the image's pixels, in Y, Cb, Cr order. The pixel at
- // (x, y) starts at Pix[(y-Rect.Min.Y)*Stride + (x-Rect.Min.X)*3].
- Pix []uint8
- // Stride is the Pix stride (in bytes) between vertically adjacent pixels.
- Stride int
- // Rect is the image's bounds.
- Rect image.Rectangle
- // SubsampleRatio is the subsample ratio of the original YCbCr image.
- SubsampleRatio image.YCbCrSubsampleRatio
-}
-
-// PixOffset returns the index of the first element of Pix that corresponds to
-// the pixel at (x, y).
-func (p *ycc) PixOffset(x, y int) int {
- return (y-p.Rect.Min.Y)*p.Stride + (x-p.Rect.Min.X)*3
-}
-
-func (p *ycc) Bounds() image.Rectangle {
- return p.Rect
-}
-
-func (p *ycc) ColorModel() color.Model {
- return color.YCbCrModel
-}
-
-func (p *ycc) At(x, y int) color.Color {
- if !(image.Point{x, y}.In(p.Rect)) {
- return color.YCbCr{}
- }
- i := p.PixOffset(x, y)
- return color.YCbCr{
- p.Pix[i+0],
- p.Pix[i+1],
- p.Pix[i+2],
- }
-}
-
-func (p *ycc) Opaque() bool {
- return true
-}
-
-// 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 *ycc) SubImage(r image.Rectangle) image.Image {
- r = r.Intersect(p.Rect)
- if r.Empty() {
- return &ycc{SubsampleRatio: p.SubsampleRatio}
- }
- i := p.PixOffset(r.Min.X, r.Min.Y)
- return &ycc{
- Pix: p.Pix[i:],
- Stride: p.Stride,
- Rect: r,
- SubsampleRatio: p.SubsampleRatio,
- }
-}
-
-// newYCC returns a new ycc with the given bounds and subsample ratio.
-func newYCC(r image.Rectangle, s image.YCbCrSubsampleRatio) *ycc {
- w, h := r.Dx(), r.Dy()
- buf := make([]uint8, 3*w*h)
- return &ycc{Pix: buf, Stride: 3 * w, Rect: r, SubsampleRatio: s}
-}
-
-// Copy of image.YCbCrSubsampleRatio constants - this allows us to support
-// older versions of Go where these constants are not defined (i.e. Go 1.4)
-const (
- ycbcrSubsampleRatio444 image.YCbCrSubsampleRatio = iota
- ycbcrSubsampleRatio422
- ycbcrSubsampleRatio420
- ycbcrSubsampleRatio440
- ycbcrSubsampleRatio411
- ycbcrSubsampleRatio410
-)
-
-// YCbCr converts ycc to a YCbCr image with the same subsample ratio
-// as the YCbCr image that ycc was generated from.
-func (p *ycc) YCbCr() *image.YCbCr {
- ycbcr := image.NewYCbCr(p.Rect, p.SubsampleRatio)
- switch ycbcr.SubsampleRatio {
- case ycbcrSubsampleRatio422:
- return p.ycbcr422(ycbcr)
- case ycbcrSubsampleRatio420:
- return p.ycbcr420(ycbcr)
- case ycbcrSubsampleRatio440:
- return p.ycbcr440(ycbcr)
- case ycbcrSubsampleRatio444:
- return p.ycbcr444(ycbcr)
- case ycbcrSubsampleRatio411:
- return p.ycbcr411(ycbcr)
- case ycbcrSubsampleRatio410:
- return p.ycbcr410(ycbcr)
- }
- return ycbcr
-}
-
-// imageYCbCrToYCC converts a YCbCr image to a ycc image for resizing.
-func imageYCbCrToYCC(in *image.YCbCr) *ycc {
- w, h := in.Rect.Dx(), in.Rect.Dy()
- p := ycc{
- Pix: make([]uint8, 3*w*h),
- Stride: 3 * w,
- Rect: image.Rect(0, 0, w, h),
- SubsampleRatio: in.SubsampleRatio,
- }
- switch in.SubsampleRatio {
- case ycbcrSubsampleRatio422:
- return convertToYCC422(in, &p)
- case ycbcrSubsampleRatio420:
- return convertToYCC420(in, &p)
- case ycbcrSubsampleRatio440:
- return convertToYCC440(in, &p)
- case ycbcrSubsampleRatio444:
- return convertToYCC444(in, &p)
- case ycbcrSubsampleRatio411:
- return convertToYCC411(in, &p)
- case ycbcrSubsampleRatio410:
- return convertToYCC410(in, &p)
- }
- return &p
-}
-
-func (p *ycc) ycbcr422(ycbcr *image.YCbCr) *image.YCbCr {
- var off int
- Pix := p.Pix
- Y := ycbcr.Y
- Cb := ycbcr.Cb
- Cr := ycbcr.Cr
- for y := 0; y < ycbcr.Rect.Max.Y-ycbcr.Rect.Min.Y; y++ {
- yy := y * ycbcr.YStride
- cy := y * ycbcr.CStride
- for x := 0; x < ycbcr.Rect.Max.X-ycbcr.Rect.Min.X; x++ {
- ci := cy + x/2
- Y[yy+x] = Pix[off+0]
- Cb[ci] = Pix[off+1]
- Cr[ci] = Pix[off+2]
- off += 3
- }
- }
- return ycbcr
-}
-
-func (p *ycc) ycbcr420(ycbcr *image.YCbCr) *image.YCbCr {
- var off int
- Pix := p.Pix
- Y := ycbcr.Y
- Cb := ycbcr.Cb
- Cr := ycbcr.Cr
- for y := 0; y < ycbcr.Rect.Max.Y-ycbcr.Rect.Min.Y; y++ {
- yy := y * ycbcr.YStride
- cy := (y / 2) * ycbcr.CStride
- for x := 0; x < ycbcr.Rect.Max.X-ycbcr.Rect.Min.X; x++ {
- ci := cy + x/2
- Y[yy+x] = Pix[off+0]
- Cb[ci] = Pix[off+1]
- Cr[ci] = Pix[off+2]
- off += 3
- }
- }
- return ycbcr
-}
-
-func (p *ycc) ycbcr440(ycbcr *image.YCbCr) *image.YCbCr {
- var off int
- Pix := p.Pix
- Y := ycbcr.Y
- Cb := ycbcr.Cb
- Cr := ycbcr.Cr
- for y := 0; y < ycbcr.Rect.Max.Y-ycbcr.Rect.Min.Y; y++ {
- yy := y * ycbcr.YStride
- cy := (y / 2) * ycbcr.CStride
- for x := 0; x < ycbcr.Rect.Max.X-ycbcr.Rect.Min.X; x++ {
- ci := cy + x
- Y[yy+x] = Pix[off+0]
- Cb[ci] = Pix[off+1]
- Cr[ci] = Pix[off+2]
- off += 3
- }
- }
- return ycbcr
-}
-
-func (p *ycc) ycbcr444(ycbcr *image.YCbCr) *image.YCbCr {
- var off int
- Pix := p.Pix
- Y := ycbcr.Y
- Cb := ycbcr.Cb
- Cr := ycbcr.Cr
- for y := 0; y < ycbcr.Rect.Max.Y-ycbcr.Rect.Min.Y; y++ {
- yy := y * ycbcr.YStride
- cy := y * ycbcr.CStride
- for x := 0; x < ycbcr.Rect.Max.X-ycbcr.Rect.Min.X; x++ {
- ci := cy + x
- Y[yy+x] = Pix[off+0]
- Cb[ci] = Pix[off+1]
- Cr[ci] = Pix[off+2]
- off += 3
- }
- }
- return ycbcr
-}
-
-func (p *ycc) ycbcr411(ycbcr *image.YCbCr) *image.YCbCr {
- var off int
- Pix := p.Pix
- Y := ycbcr.Y
- Cb := ycbcr.Cb
- Cr := ycbcr.Cr
- for y := 0; y < ycbcr.Rect.Max.Y-ycbcr.Rect.Min.Y; y++ {
- yy := y * ycbcr.YStride
- cy := y * ycbcr.CStride
- for x := 0; x < ycbcr.Rect.Max.X-ycbcr.Rect.Min.X; x++ {
- ci := cy + x/4
- Y[yy+x] = Pix[off+0]
- Cb[ci] = Pix[off+1]
- Cr[ci] = Pix[off+2]
- off += 3
- }
- }
- return ycbcr
-}
-
-func (p *ycc) ycbcr410(ycbcr *image.YCbCr) *image.YCbCr {
- var off int
- Pix := p.Pix
- Y := ycbcr.Y
- Cb := ycbcr.Cb
- Cr := ycbcr.Cr
- for y := 0; y < ycbcr.Rect.Max.Y-ycbcr.Rect.Min.Y; y++ {
- yy := y * ycbcr.YStride
- cy := (y / 2) * ycbcr.CStride
- for x := 0; x < ycbcr.Rect.Max.X-ycbcr.Rect.Min.X; x++ {
- ci := cy + x/4
- Y[yy+x] = Pix[off+0]
- Cb[ci] = Pix[off+1]
- Cr[ci] = Pix[off+2]
- off += 3
- }
- }
- return ycbcr
-}
-
-func convertToYCC422(in *image.YCbCr, p *ycc) *ycc {
- var off int
- Pix := p.Pix
- Y := in.Y
- Cb := in.Cb
- Cr := in.Cr
- for y := 0; y < in.Rect.Max.Y-in.Rect.Min.Y; y++ {
- yy := y * in.YStride
- cy := y * in.CStride
- for x := 0; x < in.Rect.Max.X-in.Rect.Min.X; x++ {
- ci := cy + x/2
- Pix[off+0] = Y[yy+x]
- Pix[off+1] = Cb[ci]
- Pix[off+2] = Cr[ci]
- off += 3
- }
- }
- return p
-}
-
-func convertToYCC420(in *image.YCbCr, p *ycc) *ycc {
- var off int
- Pix := p.Pix
- Y := in.Y
- Cb := in.Cb
- Cr := in.Cr
- for y := 0; y < in.Rect.Max.Y-in.Rect.Min.Y; y++ {
- yy := y * in.YStride
- cy := (y / 2) * in.CStride
- for x := 0; x < in.Rect.Max.X-in.Rect.Min.X; x++ {
- ci := cy + x/2
- Pix[off+0] = Y[yy+x]
- Pix[off+1] = Cb[ci]
- Pix[off+2] = Cr[ci]
- off += 3
- }
- }
- return p
-}
-
-func convertToYCC440(in *image.YCbCr, p *ycc) *ycc {
- var off int
- Pix := p.Pix
- Y := in.Y
- Cb := in.Cb
- Cr := in.Cr
- for y := 0; y < in.Rect.Max.Y-in.Rect.Min.Y; y++ {
- yy := y * in.YStride
- cy := (y / 2) * in.CStride
- for x := 0; x < in.Rect.Max.X-in.Rect.Min.X; x++ {
- ci := cy + x
- Pix[off+0] = Y[yy+x]
- Pix[off+1] = Cb[ci]
- Pix[off+2] = Cr[ci]
- off += 3
- }
- }
- return p
-}
-
-func convertToYCC444(in *image.YCbCr, p *ycc) *ycc {
- var off int
- Pix := p.Pix
- Y := in.Y
- Cb := in.Cb
- Cr := in.Cr
- for y := 0; y < in.Rect.Max.Y-in.Rect.Min.Y; y++ {
- yy := y * in.YStride
- cy := y * in.CStride
- for x := 0; x < in.Rect.Max.X-in.Rect.Min.X; x++ {
- ci := cy + x
- Pix[off+0] = Y[yy+x]
- Pix[off+1] = Cb[ci]
- Pix[off+2] = Cr[ci]
- off += 3
- }
- }
- return p
-}
-
-func convertToYCC411(in *image.YCbCr, p *ycc) *ycc {
- var off int
- Pix := p.Pix
- Y := in.Y
- Cb := in.Cb
- Cr := in.Cr
- for y := 0; y < in.Rect.Max.Y-in.Rect.Min.Y; y++ {
- yy := y * in.YStride
- cy := y * in.CStride
- for x := 0; x < in.Rect.Max.X-in.Rect.Min.X; x++ {
- ci := cy + x/4
- Pix[off+0] = Y[yy+x]
- Pix[off+1] = Cb[ci]
- Pix[off+2] = Cr[ci]
- off += 3
- }
- }
- return p
-}
-
-func convertToYCC410(in *image.YCbCr, p *ycc) *ycc {
- var off int
- Pix := p.Pix
- Y := in.Y
- Cb := in.Cb
- Cr := in.Cr
- for y := 0; y < in.Rect.Max.Y-in.Rect.Min.Y; y++ {
- yy := y * in.YStride
- cy := (y / 2) * in.CStride
- for x := 0; x < in.Rect.Max.X-in.Rect.Min.X; x++ {
- ci := cy + x/4
- Pix[off+0] = Y[yy+x]
- Pix[off+1] = Cb[ci]
- Pix[off+2] = Cr[ci]
- off += 3
- }
- }
- return p
-}