/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.sun.jna.Library
 *  com.sun.jna.Native
 *  com.sun.jna.Pointer
 *  com.sun.jna.Structure
 *  com.sun.jna.Structure$ByReference
 *  com.sun.jna.Structure$ByValue
 *  com.sun.jna.ptr.FloatByReference
 *  com.sun.jna.ptr.IntByReference
 *  com.sun.jna.ptr.PointerByReference
 */
package com.hst.hwface.sdk;

import com.hst.hwface.utils.TheApp;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.jna.ptr.FloatByReference;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.PointerByReference;
import java.io.File;
import java.util.Arrays;
import java.util.List;

public interface HWFaceRecMultiSDK
extends Library {
    public static final String libPath = TheApp.getHWFaceRecLibPath();
    public static final HWFaceRecMultiSDK INSTANCE = (HWFaceRecMultiSDK)Native.loadLibrary((String)("C:" + File.separator + "HWcompare.dll"), HWFaceRecMultiSDK.class);
    public static final int S_OK = 0;
    public static final int S_FAIL = 1;
    public static final int S_REJECT = -1;
    public static final int HW_IDCARD = 0;
    public static final int HW_PICTURE = 1;
    public static final int HW_REALTIME = 2;

    public int HWInitialD(String var1);

    public int HWReleaseD();

    public int HWInitial(PointerByReference var1, String var2) throws Exception;

    public int HWRelease(PointerByReference var1);

    public int HWDetectFaceKeyPoints(Pointer var1, byte[] var2, int var3, int var4, IntByReference var5, HWFaceInfo[] var6);

    public int HWSetLocationScale(Pointer var1, int var2, int var3);

    public int HWGetLocationScale(Pointer var1, IntByReference var2, IntByReference var3);

    public int HWSetLocationThreshold(Pointer var1, float var2, float var3);

    public int HWGetLocationThreshold(Pointer var1, FloatByReference var2, FloatByReference var3);

    public int HWGetFeatureSize(Pointer var1, IntByReference var2);

    public int HWExtractFeature(Pointer var1, byte[] var2, int var3, int var4, HWFaceInfo.ByReference var5, byte[] var6);

    public int HWCompareFeature(Pointer var1, byte[] var2, byte[] var3, FloatByReference var4);

    public static class HWFaceInfo
    extends Structure {
        public Rect.ByValue m_FaceRect;
        public float[] m_afKeyPoint = new float[162];
        public KeyPos.ByValue m_KeyPos;

        protected List getFieldOrder() {
            return Arrays.asList("m_FaceRect", "m_afKeyPoint", "m_KeyPos");
        }

        public static class ByReference
        extends HWFaceInfo
        implements Structure.ByReference {
        }

        public static class ByValue
        extends HWFaceInfo
        implements Structure.ByValue {
        }
    }

    public static class KeyPos
    extends Structure {
        public Pos.ByValue face;
        public Pos.ByValue leftEye;
        public Pos.ByValue rightEye;
        public Pos.ByValue leftUpperEye;
        public Pos.ByValue rightUpperEye;
        public Pos.ByValue leftleftEye;
        public Pos.ByValue leftrightEye;
        public Pos.ByValue rightleftEye;
        public Pos.ByValue rightrightEye;
        public Pos.ByValue leftNostril;
        public Pos.ByValue rightNostril;
        public Pos.ByValue nosePoint;
        public Pos.ByValue leftMouth;
        public Pos.ByValue rightMouth;

        protected List getFieldOrder() {
            return Arrays.asList("face", "leftEye", "rightEye", "leftUpperEye", "rightUpperEye", "leftleftEye", "leftrightEye", "rightleftEye", "rightrightEye", "leftNostril", "rightNostril", "nosePoint", "leftMouth", "rightMouth");
        }

        public static class ByReference
        extends KeyPos
        implements Structure.ByReference {
        }

        public static class ByValue
        extends KeyPos
        implements Structure.ByValue {
        }
    }

    public static class Pos
    extends Structure {
        public int col;
        public int row;
        public int width;
        public int confi;

        protected List getFieldOrder() {
            return Arrays.asList("col", "row", "width", "confi");
        }

        public static class ByReference
        extends Pos
        implements Structure.ByReference {
        }

        public static class ByValue
        extends Pos
        implements Structure.ByValue {
        }
    }

    public static class Rect
    extends Structure {
        public int top;
        public int bottom;
        public int left;
        public int right;

        protected List getFieldOrder() {
            return Arrays.asList("top", "bottom", "left", "right");
        }

        public static class ByReference
        extends Rect
        implements Structure.ByReference {
        }

        public static class ByValue
        extends Rect
        implements Structure.ByValue {
        }
    }
}
