blob: c9ebb2c77717eb624e4e3115e5034133547d6cc0 [file] [log] [blame]
// Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef WINDOW_MANAGER_IMAGE_ENUMS_H_
#define WINDOW_MANAGER_IMAGE_ENUMS_H_
#include "base/logging.h"
namespace window_manager {
// Different image data formats that we support.
enum ImageFormat {
IMAGE_FORMAT_UNKNOWN = 0,
IMAGE_FORMAT_RGBA_32,
IMAGE_FORMAT_RGBX_32, // RGB data with opaque alpha in fourth byte
IMAGE_FORMAT_BGRA_32,
IMAGE_FORMAT_BGRX_32,
IMAGE_FORMAT_RGB_16, // R5 G6 B5 packed in an unsigned short (R msb).
};
// Does the passed-in image format use an alpha channel?
inline bool ImageFormatUsesAlpha(ImageFormat format) {
switch (format) {
case IMAGE_FORMAT_RGBA_32: // fallthrough
case IMAGE_FORMAT_BGRA_32:
return true;
case IMAGE_FORMAT_RGBX_32: // fallthrough
case IMAGE_FORMAT_BGRX_32: // fallthrough
case IMAGE_FORMAT_RGB_16:
return false;
default:
NOTREACHED() << "Unhandled image format " << format;
return false;
}
}
// Get the number of bits per pixel in the passed-in image format.
inline int GetBitsPerPixelInImageFormat(ImageFormat format) {
switch (format) {
case IMAGE_FORMAT_RGBA_32: // fallthrough
case IMAGE_FORMAT_RGBX_32: // fallthrough
case IMAGE_FORMAT_BGRA_32: // fallthrough
case IMAGE_FORMAT_BGRX_32:
return 32;
case IMAGE_FORMAT_RGB_16:
return 16;
default:
NOTREACHED() << "Unhandled image format " << format;
return 0;
}
}
} // namespace window_manager
#endif // WINDOW_MANAGER_IMAGE_ENUMS_H_