<?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>8</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>
