9b2e5a6e创建于 2025年12月1日历史提交
/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2024-2025. All rights reserved.
 */

package formula

@C
struct UInt8Data {
    var data: CPointer<UInt8> = CPointer<UInt8>()
    var len: Int64 = 0
}

public class Render {
    var nativePtr: CPointer<UInt8>

    public init(ptr: CPointer<UInt8>) {
        nativePtr = ptr
    }

    public func draw(g2: Graphic2D, background: UInt32): Unit {
        unsafe { TeXRender_draw(nativePtr, g2.getG2(), 0, 0, background) }
    }

    public func getTextSize(): Float32 {
        return unsafe { TeXRender_getTextSize(nativePtr) }
    }

    public func getHeight(): UInt32 {
        return unsafe { UInt32(TeXRender_getHeight(nativePtr)) }
    }

    public func getWidth(): UInt32 {
        return unsafe { UInt32(TeXRender_getWidth(nativePtr)) }
    }

    public func finalize(): Unit {
        return unsafe { TeXRender_finalize(nativePtr) }
    }

    public func toBitmap(g2: Graphic2D): Array<UInt8> {
        unsafe {
            var bitmapData =  TeXRender_toBitmap(nativePtr, g2.getG2(), g2.getColorFormat())
            var array = Array<UInt8>(bitmapData.len, repeat: 0)
            var cph = acquireArrayRawData(array)
            memcpy_s(cph.pointer, bitmapData.len, bitmapData.data, bitmapData.len)
            releaseArrayRawData(cph)
            LibC.free(bitmapData.data)
            return array
        }
    }

    public func getMapData(g2: Graphic2D): Array<UInt8> {
        if (g2.getColorFormat() == RGB_565) {
            throw Exception("COLOR_FORMAT_RGB_565 format not supported!")
        }
        unsafe {
            var bitmapData =  TeXRender_getMapData(nativePtr, g2.getG2(), g2.getColorFormat())
            var array = Array<UInt8>(bitmapData.len, repeat: 0)
            var cph = acquireArrayRawData(array)
            memcpy_s(cph.pointer, bitmapData.len, bitmapData.data, bitmapData.len)
            releaseArrayRawData(cph)
            LibC.free(bitmapData.data)
            return array
        }
    }
}