/*!
    \qmltype OpacityMask
    \inherits Item
    \inqmlmodule org.deepin.dtk
    \keyword DOpacityMask
    \brief 一个同时支持软件和硬件渲染的不透明度遮罩控件.

    能够同时支持软件渲染和硬件渲染，其能够为源材质提供一种不透明度遮罩。
    使源材质能够作用做遮罩中。其硬件渲染（GPU渲染）模式和 Qt Graphical Effects
    保持一致。软件模式下无法针对每个源材质的像素点进行遮罩处理，软件模式
    使用 Qt 的混合模式实现。

    其用法可用如下示例表示：

    \qml
    import org.deepin.dtk 1.0

    Item {
      width: 300
      height: 300

      Image {
          id: bug
          source: "images/bug.jpg"
          sourceSize: Qt.size(parent.width, parent.height)
          smooth: true
          visible: false
      }

      Image {
          id: mask
          source: "images/butterfly.png"
          sourceSize: Qt.size(parent.width, parent.height)
          smooth: true
          visible: false
      }

      OpacityMask {
          anchors.fill: bug
          source: bug
          maskSource: mask
      }
    }
    \endqml

    其效果如下所示：
    \table
        \header
            \li 源材质
            \li 遮罩材质
            \li 应用效果
        \row
            \li \image images/opacityMask_sourceExample.jpg
            \li \image images/opacityMask_MaskExample.jpg
            \li \image images/opacityMask_effectExample.jpg
    \endtable
 */

/*!
    \qmlproperty bool org.deepin.dtk::OpacityMask::cached

    该属性用于提升性能，开启缓存后效果仅会在源材质和遮罩发生改变时修改，其他方式进行
    的更新都无法更新应用效果。默认情况下该属性为 false.
 */

/*!
    \qmlproperty bool org.deepin.dtk::OpacityMask::invert

    该属性用于控制应用效果的 alpha 值，当 \c invert 设置为true 时，效果的
    alpha 值为源材质乘以遮罩的倒数，如 As * (1 - Am)，设置为 false 是，效果
    为源材质乘以遮罩，如 As * Am。默认情况下，改值为 false。
 */

/*!
    \qmlproperty var org.deepin.dtk::OpacityMask::maskSource

    该属性用于指定遮罩材质的数据，遮罩被渲染到目标中被用于确定形状和alpha值。
 */

/*!
    \qmlproperty var org.deepin.dtk::OpacityMask::source

    该属性用于指定源材质的数据，源材质用于指定最终效果的内容，其alpha通道会和
    遮罩材质进行混合。
 */
