/* * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package com.sun.prism; public enum PixelFormat { // Note: do not change the order of the formats as their ordinals may // be used for determining the format // 4-BYTE types INT_ARGB_PRE (DataType.INT, 1, true, false), // the same format as INT_ARGB_PRE BYTE_BGRA_PRE(DataType.BYTE, 4, true, false), // 3-BYTE types: BYTE_RGB (DataType.BYTE, 3, true, true), // L8, A8 types: // NOTE : we might need L8A8 16-bit type BYTE_GRAY (DataType.BYTE, 1, true, true), BYTE_ALPHA (DataType.BYTE, 1, false, false), // Media types MULTI_YCbCr_420(DataType.BYTE, 1, false, true), // Multitexture format, requires pixel shader support BYTE_APPLE_422 (DataType.BYTE, 2, false, true), // flating point types: FLOAT_XYZW (DataType.FLOAT, 4, false, true); /* * NOTE: BYTE_APPLE_422 is assumed to be '2vuy' component data, NOT 'yuvs'! */ public enum DataType { BYTE (1), INT (4), FLOAT(4); private int sizeInBytes; private DataType(int sizeInBytes) { this.sizeInBytes = sizeInBytes; } public int getSizeInBytes() { return sizeInBytes; } } // these need to match the plane indexes from JFXMedia public final static int YCBCR_PLANE_LUMA = 0; public final static int YCBCR_PLANE_CHROMARED = 1; public final static int YCBCR_PLANE_CHROMABLUE = 2; public final static int YCBCR_PLANE_ALPHA = 3; private DataType dataType; private int elemsPerPixelUnit; private boolean rgb; private boolean opaque; private PixelFormat(DataType dataType, int elemsPerPixelUnit, boolean rgb, boolean opaque) { this.dataType = dataType; this.elemsPerPixelUnit = elemsPerPixelUnit; this.rgb = rgb; this.opaque = opaque; } public DataType getDataType() { return dataType; } public int getBytesPerPixelUnit() { return elemsPerPixelUnit * dataType.getSizeInBytes(); } public int getElemsPerPixelUnit() { return elemsPerPixelUnit; } public boolean isRGB() { return rgb; } public boolean isOpaque() { return opaque; } }