// <auto-generated>
// This file is generated by Ghost.NativeWrapperGen. Do not edit manually.
// </auto-generated>

namespace Ghost.Nvtt;

public unsafe partial struct NvttSurface : System.IDisposable
{
    /// <summary>
    /// From: <see cref="Api.nvttCreateSurface()" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public static NvttSurface* Create()
    {
        return Api.nvttCreateSurface();
    }

    /// <summary>
    /// From: <see cref="Api.nvttDestroySurface(NvttSurface*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Dispose()
    {
        Api.nvttDestroySurface((NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceClone(NvttSurface*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttSurface* Clone()
    {
        return Api.nvttSurfaceClone((NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttSetSurfaceWrapMode(NvttSurface*, NvttWrapMode)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void SetWrapMode(NvttWrapMode mode)
    {
        Api.nvttSetSurfaceWrapMode(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            mode);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSetSurfaceAlphaMode(NvttSurface*, NvttAlphaMode)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void SetAlphaMode(NvttAlphaMode alphaMode)
    {
        Api.nvttSetSurfaceAlphaMode(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            alphaMode);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSetSurfaceNormalMap(NvttSurface*, NvttBoolean)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void SetNormalMap(NvttBoolean isNormalMap)
    {
        Api.nvttSetSurfaceNormalMap(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            isNormalMap);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceIsNull(NvttSurface*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean IsNull()
    {
        return Api.nvttSurfaceIsNull((NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceWidth(NvttSurface*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public int Width()
    {
        return Api.nvttSurfaceWidth((NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceHeight(NvttSurface*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public int Height()
    {
        return Api.nvttSurfaceHeight((NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceDepth(NvttSurface*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public int Depth()
    {
        return Api.nvttSurfaceDepth((NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceType(NvttSurface*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttTextureType Type()
    {
        return Api.nvttSurfaceType((NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceWrapMode(NvttSurface*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttWrapMode WrapMode()
    {
        return Api.nvttSurfaceWrapMode((NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceAlphaMode(NvttSurface*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttAlphaMode AlphaMode()
    {
        return Api.nvttSurfaceAlphaMode((NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceIsNormalMap(NvttSurface*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean IsNormalMap()
    {
        return Api.nvttSurfaceIsNormalMap((NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceCountMipmaps(NvttSurface*, int)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public int CountMipmaps(int min_size)
    {
        return Api.nvttSurfaceCountMipmaps(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            min_size);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceAlphaTestCoverage(NvttSurface*, float, int)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public float AlphaTestCoverage(float alphaRef, int alpha_channel)
    {
        return Api.nvttSurfaceAlphaTestCoverage(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            alphaRef,
            alpha_channel);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceAverage(NvttSurface*, int, int, float)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public float Average(int channel, int alpha_channel, float gamma)
    {
        return Api.nvttSurfaceAverage(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            channel,
            alpha_channel,
            gamma);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceData(NvttSurface*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public float* Data()
    {
        return Api.nvttSurfaceData((NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceChannel(NvttSurface*, int)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public float* Channel(int i)
    {
        return Api.nvttSurfaceChannel(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            i);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceHistogram(NvttSurface*, int, float, float, int, int*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Histogram(int channel, float rangeMin, float rangeMax, int binCount, int* binPtr, NvttTimingContext* tc)
    {
        Api.nvttSurfaceHistogram(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            channel,
            rangeMin,
            rangeMax,
            binCount,
            binPtr,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceRange(NvttSurface*, int, float*, float*, int, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Range(int channel, float* rangeMin, float* rangeMax, int alpha_channel, float alpha_ref, NvttTimingContext* tc)
    {
        Api.nvttSurfaceRange(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            channel,
            rangeMin,
            rangeMax,
            alpha_channel,
            alpha_ref,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceLoad(NvttSurface*, sbyte*, NvttBoolean*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean Load(ReadOnlySpan<byte> filename, NvttBoolean* hasAlpha, NvttBoolean expectSigned, NvttTimingContext* tc)
    {
        fixed (byte* pfilename = filename)
        {
            return Api.nvttSurfaceLoad(
                (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
                (sbyte*)pfilename,
                hasAlpha,
                expectSigned,
                tc);
        }
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceLoadFromMemory(NvttSurface*, void*, ulong, NvttBoolean*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean LoadFromMemory(void* data, ulong sizeInBytes, NvttBoolean* hasAlpha, NvttBoolean expectSigned, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceLoadFromMemory(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            data,
            sizeInBytes,
            hasAlpha,
            expectSigned,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceSave(NvttSurface*, sbyte*, NvttBoolean, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean Save(ReadOnlySpan<byte> fileName, NvttBoolean hasAlpha, NvttBoolean hdr, NvttTimingContext* tc)
    {
        fixed (byte* pfileName = fileName)
        {
            return Api.nvttSurfaceSave(
                (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
                (sbyte*)pfileName,
                hasAlpha,
                hdr,
                tc);
        }
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceSetImage(NvttSurface*, int, int, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean SetImage(int w, int h, int d, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceSetImage(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            w,
            h,
            d,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceSetImageData(NvttSurface*, NvttInputFormat, int, int, int, void*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean SetImageData(NvttInputFormat format, int w, int h, int d, void* data, NvttBoolean unsignedToSigned, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceSetImageData(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            format,
            w,
            h,
            d,
            data,
            unsignedToSigned,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceSetImageRGBA(NvttSurface*, NvttInputFormat, int, int, int, void*, void*, void*, void*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean SetImageRGBA(NvttInputFormat format, int w, int h, int d, void* r, void* g, void* b, void* a, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceSetImageRGBA(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            format,
            w,
            h,
            d,
            r,
            g,
            b,
            a,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceSetImage2D(NvttSurface*, NvttFormat, int, int, void*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean SetImage2D(NvttFormat format, int w, int h, void* data, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceSetImage2D(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            format,
            w,
            h,
            data,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceSetImage3D(NvttSurface*, NvttFormat, int, int, int, void*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean SetImage3D(NvttFormat format, int w, int h, int d, void* data, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceSetImage3D(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            format,
            w,
            h,
            d,
            data,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceResize(NvttSurface*, int, int, int, NvttResizeFilter, float, float*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Resize(int w, int h, int d, NvttResizeFilter filter, float filterWidth, float* @params, NvttTimingContext* tc)
    {
        Api.nvttSurfaceResize(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            w,
            h,
            d,
            filter,
            filterWidth,
            @params,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceResizeMax(NvttSurface*, int, NvttRoundMode, NvttResizeFilter, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ResizeMax(int maxExtent, NvttRoundMode mode, NvttResizeFilter filter, NvttTimingContext* tc)
    {
        Api.nvttSurfaceResizeMax(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            maxExtent,
            mode,
            filter,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceResizeMaxParams(NvttSurface*, int, NvttRoundMode, NvttResizeFilter, float, float*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ResizeMaxParams(int maxExtent, NvttRoundMode mode, NvttResizeFilter filter, float filterWidth, float* @params, NvttTimingContext* tc)
    {
        Api.nvttSurfaceResizeMaxParams(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            maxExtent,
            mode,
            filter,
            filterWidth,
            @params,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceResizeMakeSquare(NvttSurface*, int, NvttRoundMode, NvttResizeFilter, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ResizeMakeSquare(int maxExtent, NvttRoundMode mode, NvttResizeFilter filter, NvttTimingContext* tc)
    {
        Api.nvttSurfaceResizeMakeSquare(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            maxExtent,
            mode,
            filter,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceBuildNextMipmap(NvttSurface*, NvttMipmapFilter, float, float*, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean BuildNextMipmap(NvttMipmapFilter filter, float filterWidth, float* @params, int min_size, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceBuildNextMipmap(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            filter,
            filterWidth,
            @params,
            min_size,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceBuildNextMipmapDefaults(NvttSurface*, NvttMipmapFilter, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean BuildNextMipmapDefaults(NvttMipmapFilter filter, int min_size, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceBuildNextMipmapDefaults(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            filter,
            min_size,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceBuildNextMipmapSolidColor(NvttSurface*, float*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean BuildNextMipmapSolidColor(float* color_components, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceBuildNextMipmapSolidColor(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            color_components,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceCanvasSize(NvttSurface*, int, int, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void CanvasSize(int w, int h, int d, NvttTimingContext* tc)
    {
        Api.nvttSurfaceCanvasSize(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            w,
            h,
            d,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceCanMakeNextMipmap(NvttSurface*, int)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean CanMakeNextMipmap(int min_size)
    {
        return Api.nvttSurfaceCanMakeNextMipmap(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            min_size);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToLinear(NvttSurface*, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToLinear(float gamma, NvttTimingContext* tc)
    {
        Api.nvttSurfaceToLinear(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            gamma,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToGamma(NvttSurface*, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToGamma(float gamma, NvttTimingContext* tc)
    {
        Api.nvttSurfaceToGamma(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            gamma,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToLinearChannel(NvttSurface*, int, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToLinearChannel(int channel, float gamma, NvttTimingContext* tc)
    {
        Api.nvttSurfaceToLinearChannel(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            channel,
            gamma,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToGammaChannel(NvttSurface*, int, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToGammaChannel(int channel, float gamma, NvttTimingContext* tc)
    {
        Api.nvttSurfaceToGammaChannel(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            channel,
            gamma,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToSrgb(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToSrgb(NvttTimingContext* tc)
    {
        Api.nvttSurfaceToSrgb(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToSrgbUnclamped(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToSrgbUnclamped(NvttTimingContext* tc)
    {
        Api.nvttSurfaceToSrgbUnclamped(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToLinearFromSrgb(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToLinearFromSrgb(NvttTimingContext* tc)
    {
        Api.nvttSurfaceToLinearFromSrgb(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToLinearFromSrgbUnclamped(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToLinearFromSrgbUnclamped(NvttTimingContext* tc)
    {
        Api.nvttSurfaceToLinearFromSrgbUnclamped(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToXenonSrgb(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToXenonSrgb(NvttTimingContext* tc)
    {
        Api.nvttSurfaceToXenonSrgb(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToLinearFromXenonSrgb(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToLinearFromXenonSrgb(NvttTimingContext* tc)
    {
        Api.nvttSurfaceToLinearFromXenonSrgb(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceTransform(NvttSurface*, float*, float*, float*, float*, float*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Transform(float* w0, float* w1, float* w2, float* w3, float* offset, NvttTimingContext* tc)
    {
        Api.nvttSurfaceTransform(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            w0,
            w1,
            w2,
            w3,
            offset,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceSwizzle(NvttSurface*, int, int, int, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Swizzle(int r, int g, int b, int a, NvttTimingContext* tc)
    {
        Api.nvttSurfaceSwizzle(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            r,
            g,
            b,
            a,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceScaleBias(NvttSurface*, int, float, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ScaleBias(int channel, float scale, float bias, NvttTimingContext* tc)
    {
        Api.nvttSurfaceScaleBias(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            channel,
            scale,
            bias,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceClamp(NvttSurface*, int, float, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Clamp(int channel, float low, float high, NvttTimingContext* tc)
    {
        Api.nvttSurfaceClamp(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            channel,
            low,
            high,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceBlend(NvttSurface*, float, float, float, float, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Blend(float r, float g, float b, float a, float t, NvttTimingContext* tc)
    {
        Api.nvttSurfaceBlend(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            r,
            g,
            b,
            a,
            t,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfacePremultiplyAlpha(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void PremultiplyAlpha(NvttTimingContext* tc)
    {
        Api.nvttSurfacePremultiplyAlpha(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceDemultiplyAlpha(NvttSurface*, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void DemultiplyAlpha(float epsilon, NvttTimingContext* tc)
    {
        Api.nvttSurfaceDemultiplyAlpha(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            epsilon,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToGreyScale(NvttSurface*, float, float, float, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToGreyScale(float redScale, float greenScale, float blueScale, float alphaScale, NvttTimingContext* tc)
    {
        Api.nvttSurfaceToGreyScale(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            redScale,
            greenScale,
            blueScale,
            alphaScale,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceSetBorder(NvttSurface*, float, float, float, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void SetBorder(float r, float g, float b, float a, NvttTimingContext* tc)
    {
        Api.nvttSurfaceSetBorder(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            r,
            g,
            b,
            a,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceFill(NvttSurface*, float, float, float, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Fill(float r, float g, float b, float a, NvttTimingContext* tc)
    {
        Api.nvttSurfaceFill(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            r,
            g,
            b,
            a,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceScaleAlphaToCoverage(NvttSurface*, float, float, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ScaleAlphaToCoverage(float coverage, float alphaRef, int alpha_channel, NvttTimingContext* tc)
    {
        Api.nvttSurfaceScaleAlphaToCoverage(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            coverage,
            alphaRef,
            alpha_channel,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToRGBM(NvttSurface*, float, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToRGBM(float range, float threshold, NvttTimingContext* tc)
    {
        Api.nvttSurfaceToRGBM(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            range,
            threshold,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceFromRGBM(NvttSurface*, float, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void FromRGBM(float range, float threshold, NvttTimingContext* tc)
    {
        Api.nvttSurfaceFromRGBM(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            range,
            threshold,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToLM(NvttSurface*, float, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToLM(float range, float threshold, NvttTimingContext* tc)
    {
        Api.nvttSurfaceToLM(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            range,
            threshold,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToRGBE(NvttSurface*, int, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToRGBE(int mantissaBits, int exponentBits, NvttTimingContext* tc)
    {
        Api.nvttSurfaceToRGBE(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            mantissaBits,
            exponentBits,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceFromRGBE(NvttSurface*, int, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void FromRGBE(int mantissaBits, int exponentBits, NvttTimingContext* tc)
    {
        Api.nvttSurfaceFromRGBE(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            mantissaBits,
            exponentBits,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToYCoCg(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToYCoCg(NvttTimingContext* tc)
    {
        Api.nvttSurfaceToYCoCg(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceBlockScaleCoCg(NvttSurface*, int, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void BlockScaleCoCg(int bits, float threshold, NvttTimingContext* tc)
    {
        Api.nvttSurfaceBlockScaleCoCg(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            bits,
            threshold,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceFromYCoCg(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void FromYCoCg(NvttTimingContext* tc)
    {
        Api.nvttSurfaceFromYCoCg(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToLUVW(NvttSurface*, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToLUVW(float range, NvttTimingContext* tc)
    {
        Api.nvttSurfaceToLUVW(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            range,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceFromLUVW(NvttSurface*, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void FromLUVW(float range, NvttTimingContext* tc)
    {
        Api.nvttSurfaceFromLUVW(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            range,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceAbs(NvttSurface*, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Abs(int channel, NvttTimingContext* tc)
    {
        Api.nvttSurfaceAbs(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            channel,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceConvolve(NvttSurface*, int, int, float*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Convolve(int channel, int kernelSize, float* kernelData, NvttTimingContext* tc)
    {
        Api.nvttSurfaceConvolve(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            channel,
            kernelSize,
            kernelData,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToLogScale(NvttSurface*, int, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToLogScale(int channel, float @base, NvttTimingContext* tc)
    {
        Api.nvttSurfaceToLogScale(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            channel,
            @base,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceFromLogScale(NvttSurface*, int, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void FromLogScale(int channel, float @base, NvttTimingContext* tc)
    {
        Api.nvttSurfaceFromLogScale(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            channel,
            @base,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceSetAtlasBorder(NvttSurface*, int, int, float, float, float, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void SetAtlasBorder(int w, int h, float r, float g, float b, float a, NvttTimingContext* tc)
    {
        Api.nvttSurfaceSetAtlasBorder(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            w,
            h,
            r,
            g,
            b,
            a,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToneMap(NvttSurface*, NvttToneMapper, float*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToneMap(NvttToneMapper tm, float* parameters, NvttTimingContext* tc)
    {
        Api.nvttSurfaceToneMap(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tm,
            parameters,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceBinarize(NvttSurface*, int, float, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Binarize(int channel, float threshold, NvttBoolean dither, NvttTimingContext* tc)
    {
        Api.nvttSurfaceBinarize(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            channel,
            threshold,
            dither,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceQuantize(NvttSurface*, int, int, NvttBoolean, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void Quantize(int channel, int bits, NvttBoolean exactEndPoints, NvttBoolean dither, NvttTimingContext* tc)
    {
        Api.nvttSurfaceQuantize(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            channel,
            bits,
            exactEndPoints,
            dither,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToNormalMap(NvttSurface*, float, float, float, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToNormalMap(float sm, float medium, float big, float large, NvttTimingContext* tc)
    {
        Api.nvttSurfaceToNormalMap(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            sm,
            medium,
            big,
            large,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceNormalizeNormalMap(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void NormalizeNormalMap(NvttTimingContext* tc)
    {
        Api.nvttSurfaceNormalizeNormalMap(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceTransformNormals(NvttSurface*, NvttNormalTransform, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void TransformNormals(NvttNormalTransform xform, NvttTimingContext* tc)
    {
        Api.nvttSurfaceTransformNormals(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            xform,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceReconstructNormals(NvttSurface*, NvttNormalTransform, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ReconstructNormals(NvttNormalTransform xform, NvttTimingContext* tc)
    {
        Api.nvttSurfaceReconstructNormals(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            xform,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToCleanNormalMap(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToCleanNormalMap(NvttTimingContext* tc)
    {
        Api.nvttSurfaceToCleanNormalMap(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfacePackNormals(NvttSurface*, float, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void PackNormals(float scale, float bias, NvttTimingContext* tc)
    {
        Api.nvttSurfacePackNormals(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            scale,
            bias,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceExpandNormals(NvttSurface*, float, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ExpandNormals(float scale, float bias, NvttTimingContext* tc)
    {
        Api.nvttSurfaceExpandNormals(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            scale,
            bias,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceCreateToksvigMap(NvttSurface*, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttSurface* CreateToksvigMap(float power, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceCreateToksvigMap(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            power,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceCreateCleanMap(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttSurface* CreateCleanMap(NvttTimingContext* tc)
    {
        return Api.nvttSurfaceCreateCleanMap(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceFlipX(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void FlipX(NvttTimingContext* tc)
    {
        Api.nvttSurfaceFlipX(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceFlipY(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void FlipY(NvttTimingContext* tc)
    {
        Api.nvttSurfaceFlipY(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceFlipZ(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void FlipZ(NvttTimingContext* tc)
    {
        Api.nvttSurfaceFlipZ(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceCreateSubImage(NvttSurface*, int, int, int, int, int, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttSurface* CreateSubImage(int x0, int x1, int y0, int y1, int z0, int z1, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceCreateSubImage(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            x0,
            x1,
            y0,
            y1,
            z0,
            z1,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceCopyChannel(NvttSurface*, NvttSurface*, int, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean CopyChannel(NvttSurface* srcImage, int srcChannel, int dstChannel, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceCopyChannel(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            srcImage,
            srcChannel,
            dstChannel,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceAddChannel(NvttSurface*, NvttSurface*, int, int, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean AddChannel(NvttSurface* srcImage, int srcChannel, int dstChannel, float scale, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceAddChannel(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            srcImage,
            srcChannel,
            dstChannel,
            scale,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceCopy(NvttSurface*, NvttSurface*, int, int, int, int, int, int, int, int, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttBoolean Copy(NvttSurface* srcImage, int xsrc, int ysrc, int zsrc, int xsize, int ysize, int zsize, int xdst, int ydst, int zdst, NvttTimingContext* tc)
    {
        return Api.nvttSurfaceCopy(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            srcImage,
            xsrc,
            ysrc,
            zsrc,
            xsize,
            ysize,
            zsize,
            xdst,
            ydst,
            zdst,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToGPU(NvttSurface*, NvttBoolean, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToGPU(NvttBoolean performCopy, NvttTimingContext* tc)
    {
        Api.nvttSurfaceToGPU(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            performCopy,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceToCPU(NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public void ToCPU(NvttTimingContext* tc)
    {
        Api.nvttSurfaceToCPU(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceGPUData(NvttSurface*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public float* GPUData()
    {
        return Api.nvttSurfaceGPUData((NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttSurfaceGPUDataMutable(NvttSurface*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public float* GPUDataMutable()
    {
        return Api.nvttSurfaceGPUDataMutable((NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.nvttRmsError(NvttSurface*, NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public float RmsError(NvttSurface* img, NvttTimingContext* tc)
    {
        return Api.nvttRmsError(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            img,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttRmsAlphaError(NvttSurface*, NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public float RmsAlphaError(NvttSurface* img, NvttTimingContext* tc)
    {
        return Api.nvttRmsAlphaError(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            img,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttRmsCIELabError(NvttSurface*, NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public float RmsCIELabError(NvttSurface* img, NvttTimingContext* tc)
    {
        return Api.nvttRmsCIELabError(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            img,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttAngularError(NvttSurface*, NvttSurface*, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public float AngularError(NvttSurface* img, NvttTimingContext* tc)
    {
        return Api.nvttAngularError(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            img,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttDiff(NvttSurface*, NvttSurface*, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttSurface* Diff(NvttSurface* img, float scale, NvttTimingContext* tc)
    {
        return Api.nvttDiff(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            img,
            scale,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttRmsToneMappedError(NvttSurface*, NvttSurface*, float, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public float RmsToneMappedError(NvttSurface* img, float exposure, NvttTimingContext* tc)
    {
        return Api.nvttRmsToneMappedError(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            img,
            exposure,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttHistogram(NvttSurface*, int, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttSurface* Histogram(int width, int height, NvttTimingContext* tc)
    {
        return Api.nvttHistogram(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            width,
            height,
            tc);
    }

    /// <summary>
    /// From: <see cref="Api.nvttHistogramRange(NvttSurface*, float, float, int, int, NvttTimingContext*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public NvttSurface* HistogramRange(float minRange, float maxRange, int width, int height, NvttTimingContext* tc)
    {
        return Api.nvttHistogramRange(
            (NvttSurface*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            minRange,
            maxRange,
            width,
            height,
            tc);
    }
}
