diff options
Diffstat (limited to 'src/pkg/image/png/paeth.go')
-rw-r--r-- | src/pkg/image/png/paeth.go | 70 |
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 - } - } -} |