<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>                            
                get_image_channel_data_type
            </keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>                                    
        <refentrytitle>get_image_channel_data_type</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2009</year>
                <holder>The Khronos Group Inc. 
 Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>2</manvolnum>
    </refmeta>

<!-- ================================ SYNOPSIS -->

    <refnamediv id="get_image_channel_data_type">             
        <refname>get_image_channel_data_type</refname>

        <refpurpose>
            Return the channel data type.
        </refpurpose>
    </refnamediv>

	<refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">int</link>


                    <function>                   
                        get_image_channel_data_type
                    </function>
                </funcdef>
				<paramdef><link xlink:href="otherDataTypes.html">image2d_t</link><parameter>image</parameter></paramdef>	
			</funcprototype>
        </funcsynopsis>     

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">int</link>


                    <function>                   
                        get_image_channel_data_type
                    </function>
                </funcdef>
				<paramdef><link xlink:href="otherDataTypes.html">image3d_t</link><parameter>image</parameter></paramdef>	
			</funcprototype>
        </funcsynopsis>    	
		
	</refsynopsisdiv>		

<!-- ================================ DESCRIPTION  -->
    <refsect1 id="description"><title>Description</title>
        <para>
			Return the channel data type. Valid values are:<literallayout>
CLK_SNORM_INT8
CLK_SNORM_INT16
CLK_UNORM_INT8
CLK_UNORM_INT16
CLK_UNORM_SHORT_565
CLK_UNORM_SHORT_555
CLK_UNORM_SHORT_101010
CLK_SIGNED_INT8
CLK_SIGNED_INT16
CLK_SIGNED_INT32
CLK_UNSIGNED_INT8
CLK_UNSIGNED_INT16
CLK_UNSIGNED_INT32
CLK_HALF_FLOAT
CLK_FLOAT</literallayout>
		</para>
		<para>
		The CLK_ prefixes in the list above correspond to the CL_ prefixes used to describe the image channel order and data type in the tables for <citerefentry><refentrytitle>cl_image_format</refentrytitle></citerefentry>. For example, both CL_UNORM_INT8 and CLK_UNORM_INT8 refer to an image channel data type that is an unnormalized unsigned 8-bit integer.
		</para>
    </refsect1>

<!-- ================================ NOTES  -->
 <refsect1 id="notes"><title>Notes</title>
        <para>
	  The following table describes the mapping of the number of channels of an image element to the appropriate components in the float4, int4 or unsigned int4 vector data type for the color values returned by <citerefentry href="readImage"><refentrytitle>read_image{f|i|ui}</refentrytitle></citerefentry> or supplied to <citerefentry href="writeImage"><refentrytitle>write_image{f|i|ui}</refentrytitle></citerefentry>. The unmapped components will be set to <constant>0.0</constant> for red, green and blue channels and will be set to <constant>1.0</constant> for the alpha channel.
		</para>
		<para>
		<informaltable frame="all">
			<tgroup cols="2" align="center" colsep="1" rowsep="1">
				<colspec colname="col1" colnum="1" />
				<colspec colname="col2" colnum="2" />
				<thead>
					<row>
						<entry>Channel Order</entry>
						<entry>float4, int4 or unsigned int4 components of channel data</entry>
             		</row>
              	</thead>
                <tbody>
               		<row>
                     	<entry><constant>CL_R</constant></entry>
                        <entry><constant>(r, 0.0, 0.0, 1.0)</constant></entry>
                  	</row>
					<row>
                     	<entry><constant>CL_A</constant></entry>
                        <entry><constant>(0.0, 0.0, 0.0, a)</constant></entry>
                  	</row>
					<row>
                     	<entry><constant>CL_RG</constant></entry>
                        <entry><constant>(r, g, 0.0, 1.0)</constant></entry>
                  	</row>
					<row>
                     	<entry><constant>CL_RA</constant></entry>
                        <entry><constant>(r, 0.0, 0.0, a)</constant></entry>
                  	</row>
					<row>
                     	<entry><constant>CL_RGB</constant></entry>
                        <entry><constant>(r, g, b, 1.0)</constant></entry>
                  	</row>
					<row>
                     	<entry><constant>CL_RGBA, CL_BGRA, CL_ARGB</constant></entry>
                        <entry><constant>(r, g, b, a)</constant></entry>
                  	</row>
					<row>
                     	<entry><constant>CL_INTENSITY</constant></entry>
                        <entry><constant>(I, I, I, I)</constant></entry>
                  	</row>
					<row>
                     	<entry><constant>CL_LUMINANCE</constant></entry>
                        <entry><constant>(L, L, L, 1.0)</constant></entry>
                  	</row>
				</tbody>    
			</tgroup>
		</informaltable>
		</para>
	</refsect1>
	
	
<!-- ================================ EXAMPLE  -->
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
-->


<!-- ================================ SPECIFICATION  -->
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->
    <refsect1 id="specification"><title>Specification</title>
        <para>
            <imageobject>
                <imagedata fileref="pdficon_small1.gif" format="gif" />
            </imageobject>
                                                 
            <olink uri="imageFunctions">OpenCL Specification</olink>
        </para>
    </refsect1>


<!-- ================================ ALSO SEE  -->

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry href="imageFunctions"><refentrytitle>Image Functions</refentrytitle></citerefentry> 
        </para>
    </refsect1>



<!-- ============================== COPYRIGHT -->
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
		<imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
		<para />
    </refsect3>

</refentry>

