{*******************************************************}
{                                                       }
{           CodeGear Delphi Runtime Library             }
{ Copyright(c) 2014 Embarcadero Technologies, Inc.      }
{                                                       }
{*******************************************************}

unit Androidapi.JNI.Interfaces;

interface

uses
  Androidapi.JNIBridge,
  Androidapi.JNI.JavaTypes;

type
// ===== Forward declarations =====

  Jzbar_Config = interface;//net.sourceforge.zbar.Config
  Jzbar_Image = interface;//net.sourceforge.zbar.Image
  JImageScanner = interface;//net.sourceforge.zbar.ImageScanner
  Jzbar_Modifier = interface;//net.sourceforge.zbar.Modifier
  JOrientation = interface;//net.sourceforge.zbar.Orientation
  JSymbol = interface;//net.sourceforge.zbar.Symbol
  JSymbolIterator = interface;//net.sourceforge.zbar.SymbolIterator
  JSymbolSet = interface;//net.sourceforge.zbar.SymbolSet

// ===== Interface declarations =====

  Jzbar_ConfigClass = interface(JObjectClass)
    ['{B0BD188F-7AEB-418B-A2F9-DB1AC5E1685F}']
    {class} function _GetADD_CHECK: Integer;
    {class} function _GetASCII: Integer;
    {class} function _GetEMIT_CHECK: Integer;
    {class} function _GetENABLE: Integer;
    {class} function _GetMAX_LEN: Integer;
    {class} function _GetMIN_LEN: Integer;
    {class} function _GetPOSITION: Integer;
    {class} function _GetUNCERTAINTY: Integer;
    {class} function _GetX_DENSITY: Integer;
    {class} function _GetY_DENSITY: Integer;
    {class} function init: Jzbar_Config; cdecl;
    {class} property ADD_CHECK: Integer read _GetADD_CHECK;
    {class} property ASCII: Integer read _GetASCII;
    {class} property EMIT_CHECK: Integer read _GetEMIT_CHECK;
    {class} property ENABLE: Integer read _GetENABLE;
    {class} property MAX_LEN: Integer read _GetMAX_LEN;
    {class} property MIN_LEN: Integer read _GetMIN_LEN;
    {class} property POSITION: Integer read _GetPOSITION;
    {class} property UNCERTAINTY: Integer read _GetUNCERTAINTY;
    {class} property X_DENSITY: Integer read _GetX_DENSITY;
    {class} property Y_DENSITY: Integer read _GetY_DENSITY;
  end;

  [JavaSignature('net/sourceforge/zbar/Config')]
  Jzbar_Config = interface(JObject)
    ['{FC0EDCC2-9410-4351-B7C5-1B202DF0A42D}']
  end;
  TJzbar_Config = class(TJavaGenericImport<Jzbar_ConfigClass, Jzbar_Config>) end;

  Jzbar_ImageClass = interface(JObjectClass)
    ['{CB3EABAD-FC2D-404A-8CB5-74437459E145}']
    {class} function init: Jzbar_Image; cdecl; overload;
    {class} function init(P1: JString): Jzbar_Image; cdecl; overload;
    {class} function init(P1: Integer; P2: Integer): Jzbar_Image; cdecl; overload;
    {class} function init(P1: Integer; P2: Integer; P3: JString): Jzbar_Image; cdecl; overload;
  end;

  [JavaSignature('net/sourceforge/zbar/Image')]
  Jzbar_Image = interface(JObject)
    ['{2EA5EBFE-668A-424A-8D46-A9977F9041A4}']
    function convert(P1: JString): Jzbar_Image; cdecl;
    procedure destroy; cdecl;
    function getCrop: TJavaArray<Integer>; cdecl;
    function getData: TJavaArray<Byte>; cdecl;
    function getFormat: JString; cdecl;
    function getHeight: Integer; cdecl;
    function getSequence: Integer; cdecl;
    function getSize: TJavaArray<Integer>; cdecl;
    function getSymbols: JSymbolSet; cdecl;
    function getWidth: Integer; cdecl;
    procedure setCrop(P1: TJavaArray<Integer>); cdecl; overload;
    procedure setCrop(P1: Integer; P2: Integer; P3: Integer; P4: Integer); cdecl; overload;
    procedure setData(P1: TJavaArray<Integer>); cdecl; overload;
    procedure setData(P1: TJavaArray<Byte>); cdecl; overload;
    procedure setFormat(P1: JString); cdecl;
    procedure setSequence(P1: Integer); cdecl;
    procedure setSize(P1: TJavaArray<Integer>); cdecl; overload;
    procedure setSize(P1: Integer; P2: Integer); cdecl; overload;
  end;
  TJzbar_Image = class(TJavaGenericImport<Jzbar_ImageClass, Jzbar_Image>) end;

  JImageScannerClass = interface(JObjectClass)
    ['{F36557E4-F86D-4526-9007-620BBA6692D1}']
    {class} function init: JImageScanner; cdecl;
  end;

  [JavaSignature('net/sourceforge/zbar/ImageScanner')]
  JImageScanner = interface(JObject)
    ['{A48FB367-8B5F-4E22-857F-9FD295B62B8E}']
    procedure destroy; cdecl;
    procedure enableCache(P1: Boolean); cdecl;
    function getResults: JSymbolSet; cdecl;
    procedure parseConfig(P1: JString); cdecl;
    function scanImage(P1: Jzbar_Image): Integer; cdecl;
    procedure setConfig(P1: Integer; P2: Integer; P3: Integer); cdecl;
  end;
  TJImageScanner = class(TJavaGenericImport<JImageScannerClass, JImageScanner>) end;

  Jzbar_ModifierClass = interface(JObjectClass)
    ['{08807AA6-BBBE-48EE-B3AC-75BB2A97086D}']
    {class} function _GetAIM: Integer;
    {class} function _GetGS1: Integer;
    {class} function init: Jzbar_Modifier; cdecl;
    {class} property AIM: Integer read _GetAIM;
    {class} property GS1: Integer read _GetGS1;
  end;

  [JavaSignature('net/sourceforge/zbar/Modifier')]
  Jzbar_Modifier = interface(JObject)
    ['{6AC8C074-6B46-47EF-933F-94E6A4A61D4A}']
  end;
  TJzbar_Modifier = class(TJavaGenericImport<Jzbar_ModifierClass, Jzbar_Modifier>) end;

  JOrientationClass = interface(JObjectClass)
    ['{B7385A1F-A400-4797-9D23-1805ECB34974}']
    {class} function _GetDOWN: Integer;
    {class} function _GetLEFT: Integer;
    {class} function _GetRIGHT: Integer;
    {class} function _GetUNKNOWN: Integer;
    {class} function _GetUP: Integer;
    {class} function init: JOrientation; cdecl;
    {class} property DOWN: Integer read _GetDOWN;
    {class} property LEFT: Integer read _GetLEFT;
    {class} property RIGHT: Integer read _GetRIGHT;
    {class} property UNKNOWN: Integer read _GetUNKNOWN;
    {class} property UP: Integer read _GetUP;
  end;

  [JavaSignature('net/sourceforge/zbar/Orientation')]
  JOrientation = interface(JObject)
    ['{E2EBB686-68E7-4977-95F1-D5D85A04334D}']
  end;
  TJOrientation = class(TJavaGenericImport<JOrientationClass, JOrientation>) end;

  JSymbolClass = interface(JObjectClass)
    ['{FBA6D14F-D082-4461-8DEB-4C61C673212E}']
    {class} function _GetCODABAR: Integer;
    {class} function _GetCODE128: Integer;
    {class} function _GetCODE39: Integer;
    {class} function _GetCODE93: Integer;
    {class} function _GetDATABAR: Integer;
    {class} function _GetDATABAR_EXP: Integer;
    {class} function _GetEAN13: Integer;
    {class} function _GetEAN8: Integer;
    {class} function _GetI25: Integer;
    {class} function _GetISBN10: Integer;
    {class} function _GetISBN13: Integer;
    {class} function _GetNONE: Integer;
    {class} function _GetPARTIAL: Integer;
    {class} function _GetPDF417: Integer;
    {class} function _GetQRCODE: Integer;
    {class} function _GetUPCA: Integer;
    {class} function _GetUPCE: Integer;
    {class} property CODABAR: Integer read _GetCODABAR;
    {class} property CODE128: Integer read _GetCODE128;
    {class} property CODE39: Integer read _GetCODE39;
    {class} property CODE93: Integer read _GetCODE93;
    {class} property DATABAR: Integer read _GetDATABAR;
    {class} property DATABAR_EXP: Integer read _GetDATABAR_EXP;
    {class} property EAN13: Integer read _GetEAN13;
    {class} property EAN8: Integer read _GetEAN8;
    {class} property I25: Integer read _GetI25;
    {class} property ISBN10: Integer read _GetISBN10;
    {class} property ISBN13: Integer read _GetISBN13;
    {class} property NONE: Integer read _GetNONE;
    {class} property PARTIAL: Integer read _GetPARTIAL;
    {class} property PDF417: Integer read _GetPDF417;
    {class} property QRCODE: Integer read _GetQRCODE;
    {class} property UPCA: Integer read _GetUPCA;
    {class} property UPCE: Integer read _GetUPCE;
  end;

  [JavaSignature('net/sourceforge/zbar/Symbol')]
  JSymbol = interface(JObject)
    ['{51D7EDEB-638B-44DC-A24C-6150D08F7D5E}']
    procedure destroy; cdecl;
    function getBounds: TJavaArray<Integer>; cdecl;
    function getComponents: JSymbolSet; cdecl;
    function getConfigMask: Integer; cdecl;
    function getCount: Integer; cdecl;
    function getData: JString; cdecl;
    function getDataBytes: TJavaArray<Byte>; cdecl;
    function getLocationPoint(P1: Integer): TJavaArray<Integer>; cdecl;
    function getModifierMask: Integer; cdecl;
    function getOrientation: Integer; cdecl;
    function getQuality: Integer; cdecl;
    function getType: Integer; cdecl;
  end;
  TJSymbol = class(TJavaGenericImport<JSymbolClass, JSymbol>) end;

  JSymbolIteratorClass = interface(JObjectClass)
    ['{6FDDAB46-1EC0-419E-BCA2-10905A104336}']
  end;

  [JavaSignature('net/sourceforge/zbar/SymbolIterator')]
  JSymbolIterator = interface(JObject)
    ['{AC194045-E48F-465E-975F-56F04C5F3267}']
    function hasNext: Boolean; cdecl;
    function next: JSymbol; cdecl;
    procedure remove; cdecl;
  end;
  TJSymbolIterator = class(TJavaGenericImport<JSymbolIteratorClass, JSymbolIterator>) end;

  JSymbolSetClass = interface(JAbstractCollectionClass)
    ['{324B9B68-A460-4E25-8EF9-A19E71DE6E62}']
  end;

  [JavaSignature('net/sourceforge/zbar/SymbolSet')]
  JSymbolSet = interface(JAbstractCollection)
    ['{5CD1D332-EACB-46D9-9D22-8115A237497C}']
    procedure destroy; cdecl;
    function iterator: JIterator; cdecl;
    function size: Integer; cdecl;
  end;
  TJSymbolSet = class(TJavaGenericImport<JSymbolSetClass, JSymbolSet>) end;

implementation

procedure RegisterTypes;
begin
  TRegTypes.RegisterType('Androidapi.JNI.Interfaces.Jzbar_Config', TypeInfo(Androidapi.JNI.Interfaces.Jzbar_Config));
  TRegTypes.RegisterType('Androidapi.JNI.Interfaces.Jzbar_Image', TypeInfo(Androidapi.JNI.Interfaces.Jzbar_Image));
  TRegTypes.RegisterType('Androidapi.JNI.Interfaces.JImageScanner', TypeInfo(Androidapi.JNI.Interfaces.JImageScanner));
  TRegTypes.RegisterType('Androidapi.JNI.Interfaces.Jzbar_Modifier', TypeInfo(Androidapi.JNI.Interfaces.Jzbar_Modifier));
  TRegTypes.RegisterType('Androidapi.JNI.Interfaces.JOrientation', TypeInfo(Androidapi.JNI.Interfaces.JOrientation));
  TRegTypes.RegisterType('Androidapi.JNI.Interfaces.JSymbol', TypeInfo(Androidapi.JNI.Interfaces.JSymbol));
  TRegTypes.RegisterType('Androidapi.JNI.Interfaces.JSymbolIterator', TypeInfo(Androidapi.JNI.Interfaces.JSymbolIterator));
  TRegTypes.RegisterType('Androidapi.JNI.Interfaces.JSymbolSet', TypeInfo(Androidapi.JNI.Interfaces.JSymbolSet));
end;

initialization
  RegisterTypes;
end.


