summaryrefslogtreecommitdiff
path: root/src/pkg/image/png/paeth.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/image/png/paeth.go')
-rw-r--r--src/pkg/image/png/paeth.go70
1 files changed, 0 insertions, 70 deletions
diff --git a/src/pkg/image/png/paeth.go b/src/pkg/image/png/paeth.go
deleted file mode 100644
index 37978aa66..000000000
--- a/src/pkg/image/png/paeth.go
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package png
-
-// paeth implements the Paeth filter function, as per the PNG specification.
-func paeth(a, b, c uint8) uint8 {
- // This is an optimized version of the sample code in the PNG spec.
- // For example, the sample code starts with:
- // p := int(a) + int(b) - int(c)
- // pa := abs(p - int(a))
- // but the optimized form uses fewer arithmetic operations:
- // pa := int(b) - int(c)
- // pa = abs(pa)
- pc := int(c)
- pa := int(b) - pc
- pb := int(a) - pc
- pc = pa + pb
- if pa < 0 {
- pa = -pa
- }
- if pb < 0 {
- pb = -pb
- }
- if pc < 0 {
- pc = -pc
- }
- if pa <= pb && pa <= pc {
- return a
- } else if pb <= pc {
- return b
- }
- return c
-}
-
-// filterPaeth applies the Paeth filter to the cdat slice.
-// cdat is the current row's data, pdat is the previous row's data.
-func filterPaeth(cdat, pdat []byte, bytesPerPixel int) {
- var a, b, c, pa, pb, pc int
- for i := 0; i < bytesPerPixel; i++ {
- a, c = 0, 0
- for j := i; j < len(cdat); j += bytesPerPixel {
- b = int(pdat[j])
- pa = b - c
- pb = a - c
- pc = pa + pb
- if pa < 0 {
- pa = -pa
- }
- if pb < 0 {
- pb = -pb
- }
- if pc < 0 {
- pc = -pc
- }
- if pa <= pb && pa <= pc {
- // No-op.
- } else if pb <= pc {
- a = b
- } else {
- a = c
- }
- a += int(cdat[j])
- a &= 0xff
- cdat[j] = uint8(a)
- c = b
- }
- }
-}