aboutsummaryrefslogtreecommitdiff
path: root/image/lum_alpha.go
diff options
context:
space:
mode:
Diffstat (limited to 'image/lum_alpha.go')
-rw-r--r--image/lum_alpha.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/image/lum_alpha.go b/image/lum_alpha.go
new file mode 100644
index 000000000..7d9686a36
--- /dev/null
+++ b/image/lum_alpha.go
@@ -0,0 +1,40 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package image
+
+type fmtLuminanceAlpha struct{}
+
+func (fmtLuminanceAlpha) String() string { return "LuminanceAlpha" }
+func (fmtLuminanceAlpha) Check(d []byte, w, h int) error { return checkSize(d, w, h, 16) }
+
+// LuminanceAlpha returns a format containing an 8-bit luminance and alpha
+// channel per pixel.
+func LuminanceAlpha() Format { return fmtLuminanceAlpha{} }
+
+func init() {
+ RegisterConverter(LuminanceAlpha(), RGBA(),
+ func(src []byte, width, height int) ([]byte, error) {
+ dst, i, j := make([]byte, width*height*4), 0, 0
+ for y := 0; y < height; y++ {
+ for x := 0; x < width; x++ {
+ dst[j+0], dst[j+1], dst[j+2], dst[j+3] = src[i+0], src[i+0], src[i+0], src[i+1]
+ i += 2
+ j += 4
+ }
+ }
+
+ return dst, nil
+ })
+}