<?xml version="1.0" encoding="UTF-8"?>
<!--
 Copyright 2013 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.
-->

<sample>
    <name>RenderScriptIntrinsic</name>
    <group>RenderScript</group>
    <package>com.example.android.renderscriptintrinsic</package>

    <!-- change minSdk if needed-->
    <minSdk>13</minSdk>

    <dependency_external>'renderscript-v8.jar'</dependency_external>

    <defaultConfig>
        renderscriptTargetApi 18
        renderscriptSupportModeEnabled true
    </defaultConfig>

    <strings>
        <intro>
            <![CDATA[
            RenderScriptIntrinsic sample that demonstrates how to use RenderScript intrinsics.
            Creates several RenderScript intrinsics and shows a filtering result with various parameters.
            Also shows how to extends RedioButton with StateListDrawable.
            ]]>
        </intro>
    </strings>

    <template src="base"/>
    <common src="logger"/>

    <metadata>
        <status>PUBLISHED</status>
        <categories>RenderScript</categories>
        <technologies>Android</technologies>
        <languages>Java</languages>
        <solutions>Mobile</solutions>
        <level>EXPERT</level>
        <icon>screenshots/icon-web.png</icon>
        <screenshots>
            <img>screenshots/main.png</img>
        </screenshots>
        <api_refs>
            <android>android.renderscript.RenderScript</android>
            <android>android.renderscript.ScriptIntrinsicBlur</android>
            <android>android.renderscript.ScriptIntrinsicConvolve5x5</android>
            <android>android.renderscript.ScriptIntrinsicColorMatrix</android>
            <android></android>
        </api_refs>

        <description>
<![CDATA[
RenderScriptIntrinsic sample that demonstrates how to use RenderScript intrinsics.
Creates several RenderScript intrinsics and shows a filtering result with various parameters.
Also shows how to extends RedioButton with StateListDrawable.
]]>
        </description>

        <intro>
<![CDATA[
[RenderScript][1] is a framework for running computationally intensive tasks at high performance on Android. RenderScript is
primarily oriented for use with data-parallel computation, although serial computationally intensive workloads can
benefit as well.

RenderScript **intrinsics** are built-in functions that perform well-defined operations often seen
in image processing. Intrinsics provide extremely high-performance implementations of standard
functions with a minimal amount of code.

This sample shows how to access and use the blur, convolve, and matrix intrinsics:

```java
mScriptBlur = ScriptIntrinsicBlur.create(mRS, Element.U8_4(mRS));
mScriptConvolve = ScriptIntrinsicConvolve5x5.create(mRS,
        Element.U8_4(mRS));
mScriptMatrix = ScriptIntrinsicColorMatrix.create(mRS,
        Element.U8_4(mRS));
```

RenderScript intrinsics will usually be the fastest possible way for a developer to perform these operations. The
Android team works closely with our partners to ensure that the intrinsics perform as fast as possible on their
architectures — often far beyond anything that can be achieved in a general-purpose language.

[1]: http://developer.android.com/guide/topics/renderscript/compute.html
]]>
        </intro>
    </metadata>
</sample>
