user: Explain ImagePaint(Paint) in complete detail according to the official Blender documentation.

assistant: # ImagePaint(Paint)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`Paint`](bpy.types.Paint.html#bpy.types.Paint "bpy.types.Paint")

*class* bpy.types.ImagePaint(*Paint*)
:   Properties of image and texture painting mode

    canvas
    :   Image used as canvas

        Type:
        :   [`Image`](bpy.types.Image.html#bpy.types.Image "bpy.types.Image")

    clone_alpha
    :   Opacity of clone image display

        Type:
        :   float in [0, 1], default 0.5

    clone_image
    :   Image used as clone source

        Type:
        :   [`Image`](bpy.types.Image.html#bpy.types.Image "bpy.types.Image")

    clone_offset
    :   Type:
        :   [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 2 items in [-inf, inf], default (0.0, 0.0)

    dither
    :   Amount of dithering when painting on byte images

        Type:
        :   float in [0, 2], default 0.0

    interpolation
    :   Texture filtering type

        - `LINEAR`
          Linear – Linear interpolation.
        - `CLOSEST`
          Closest – No interpolation (sample closest texel).

        Type:
        :   enum in [`'LINEAR'`, `'CLOSEST'`], default `'LINEAR'`

    invert_stencil
    :   Invert the stencil layer

        Type:
        :   boolean, default False

    missing_materials
    :   The mesh is missing materials

        Type:
        :   boolean, default False, (readonly)

    missing_stencil
    :   Image Painting does not have a stencil

        Type:
        :   boolean, default False, (readonly)

    missing_texture
    :   Image Painting does not have a texture to paint on

        Type:
        :   boolean, default False, (readonly)

    missing_uvs
    :   A UV layer is missing on the mesh

        Type:
        :   boolean, default False, (readonly)

    mode
    :   Mode of operation for projection painting

        - `MATERIAL`
          Material – Detect image slots from the material.
        - `IMAGE`
          Single Image – Set image for texture painting directly.

        Type:
        :   enum in [`'MATERIAL'`, `'IMAGE'`], default `'MATERIAL'`

    normal_angle
    :   Paint most on faces pointing towards the view according to this angle

        Type:
        :   int in [0, 90], default 80

    screen_grab_size
    :   Size to capture the image for re-projecting

        Type:
        :   int array of 2 items in [512, 16384], default (0, 0)

    seam_bleed
    :   Extend paint beyond the faces’ UVs to reduce seams (in pixels, slower)

        Type:
        :   int in [-32768, 32767], default 2

    stencil_color
    :   Stencil color in the viewport

        Type:
        :   [`mathutils.Color`](mathutils.html#mathutils.Color "mathutils.Color") of 3 items in [0, 1], default (0.0, 0.0, 0.0)

    stencil_image
    :   Image used as stencil

        Type:
        :   [`Image`](bpy.types.Image.html#bpy.types.Image "bpy.types.Image")

    use_backface_culling
    :   Ignore faces pointing away from the view (faster)

        Type:
        :   boolean, default True

    use_clone_layer
    :   Use another UV map as clone source, otherwise use the 3D cursor as the source

        Type:
        :   boolean, default False

    use_normal_falloff
    :   Paint most on faces pointing towards the view

        Type:
        :   boolean, default True

    use_occlude
    :   Only paint onto the faces directly under the brush (slower)

        Type:
        :   boolean, default True

    use_stencil_layer
    :   Set the mask layer from the UV map buttons

        Type:
        :   boolean, default False

    detect_data()
    :   Check if required texpaint data exist

        Return type:
        :   boolean

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type