NTemplates.pas ( File view )

  • By adm.maniaco 2014-09-01
  • View(s):170
  • Download(s):11
  • Point(s): 2
			unit NTemplates;

interface
 uses Windows, SysUtils, NCore, NUtils;

//-------------------------------------
// External functions
//-------------------------------------
  procedure NTemplatesGetInfo(var info: TNLibraryInfo);

//-------------------------------------
// Types
//-------------------------------------
  type
   TNBiometricType = (
    nbtFacialFeatures = $00000002,
	  nbtFingerprint = $00000008,
	  nbtIris = $00000010,
	  nbtPalmPrint = $00020000,
    nmpUnused = MaxInt
    );

   TNFRecord = class(TObject)
    private
     hHandle : Pointer;
    public
     constructor    Create(handle: Pointer); overload;
     class function CreateFromMemory(arr: TArrayOfByte): TNFRecord;
     class procedure Check(arr: TArrayOfByte);
     destructor     Destroy; override;
     
     property    Handle: Pointer read hHandle;

     function    MinutiaCount():Integer;
     function    Minutia(index: Integer): TNMMinutia;

     function    G: Byte;
     
     function    Save: TArrayOfByte; overload;
     function    Save(flags: LongWord): TArrayOfByte; overload;
    end;

   TNLRecord = class(TObject)
    private
     hHandle: Pointer;
    public
     constructor    Create(handle: Pointer); overload;
     constructor    Create(flags: Integer); overload;
     destructor     Destroy(); override;

     property    Handle: Pointer read hHandle;

     function    Clone(): TNLRecord;

     function    Quality: Byte;

     function    Size: LongWord; overload;
     function    Size(flags:Integer): LongWord; overload;
    end;

  type
    TNLTemplate = class(TObject)
    private
      hHandle: Pointer;
    public
      constructor    Create(handle: Pointer); overload;
      class function CreateFromMemory(arr: TArrayOfByte): TNLTemplate;
      class procedure Check(arr: TArrayOfByte);
      destructor     Destroy(); override;

      property Handle: Pointer read hHandle;

      function   Clone(): TNLTemplate;

      function   RecordCount: Integer;
      function   Size: LongWord; overload;
      function   Size(flags:Integer): LongWord; overload;

      function   Save: TArrayOfByte; overload;
      function   Save(flags: LongWord): TArrayOfByte; overload;
  end;

  TArrayOfTNFRecord = array of TNFRecord;
  TArrayOfTNLRecord = array of TNLRecord;
  TArrayOfTNLTemplate = array of TNLTemplate;
  
implementation
 const
  dllName = 'NTemplates.dll';

  //-------------------------------------
  // External functions (from dll)
  //-------------------------------------
  {
$ifdef ver210
}
  function NTemplatesGetInfoInternal(var info: TNLibraryInfo): Integer stdcall; external dllName name 'NTemplatesGetInfoW';
  {
$else
}
  function NTemplatesGetInfoInternal(var info: TNLibraryInfo): Integer stdcall; external dllName name 'NTemplatesGetInfoA';
  {
$endif
}
  function  NLRecordCreate(flags: Integer; var pHRecord: Pointer): Integer stdcall; external dllName;
  function  NLRecordGetQuality(hRecord: Pointer; var pValue: Byte): Integer stdcall; external dllName;
  function  NLRecordGetSize(hRecord: Pointer; flags: Integer; var pSize: LongWord): Integer stdcall; external dllName;
  function  NLRecordClone(pHRecord: Pointer; var pHClonedReocrd: Pointer): Integer stdcall; external dllName;

  function  NLTemplateCreate(var pTemplate: Pointer): Integer stdcall; external dllName;
  function  NLTemplateClone(hTemplate: Pointer; var pTemplate: Pointer): Integer stdcall; external dllName;
  function  NLTemplateGetSize(hTemplate: Pointer;  flags: LongWord; var pSize: LongWord): Integer stdcall; external dllName;
  function  NLTemplateSaveToMemory(hTemplate: Pointer; buffer: Pointer; bufferSize: LongWord; flags: Integer; var pSize: LongWord): Integer stdcall; external dllName;
  function  NLTemplateGetRecordCount(hTemplate: Pointer; var pValue: LongInt): Integer stdcall; external dllName;
  function  NLTemplateCreateFromMemory(hBuffer: Pointer; bufferSize: LongWord; flags: LongInt; pInfo: Pointer; var hTemplate: Pointer): Integer stdcall; external dllName;
  function  NLTemplateCheck(hBuffer: Pointer; bufferSize: LongWord): Integer stdcall; external dllName;

  function  NFRecordGetMinutiaCount(hRecord: Pointer; var pValue: LongInt): Integer stdcall; external dllName;
  function  NFRecordGetMinutia(hRecord: Pointer; index: LongInt; var pValue: TNMMinutia):  Integer stdcall; external dllName;
  function  NFRecordGetSize(hRecord: Pointer; flags: LongWord; var pSize: LongInt): Integer stdcall; external dllName;
  function  NFRecordSaveToMemory(hRecord: Pointer; buffer: Pointer; size: LongInt; flags: LongWord; var pSize: LongInt): Integer stdcall; external dllName;
  function  NFRecordGetG(hRecord: Pointer; var pValue : Byte): Integer stdcall; external dllName;
  function  NFRecordCreateFromMemory(buffer: Pointer;  size: LongInt; flags: LongWord; recordInfo: Pointer; var hRecord: Pointer): Integer stdcall; external dllName;
  function  NFRecordCheck(hBuffer: Pointer; bufferSize: LongWord): Integer stdcall; external dllName;

  //-------------------------------------
  // Misc
  //-------------------------------------

  procedure NTemplatesGetInfo(var info: TNLibraryInfo);
    var res: Integer;
  begin
    res := NTemplatesGetInfoInternal(info);
    NCheck(res);
  end;

  //-------------------------------------
  // NFRecord
  //-------------------------------------

  constructor TNFRecord.Create(handle: Pointer);
  begin
    inherited Create;
    self.hHandle := handle;
  end;

  class function TNFRecord.CreateFromMemory(arr: TArrayOfByte): TNFRecord;
    var ptr: Pointer;
        res: Integer;
  begin
    res := NFRecordCreateFromMemory(@(arr[0]), Length(arr), 0, nil, ptr);
    NCheck(res);
    if (ptr <> nil) then
    begin
      Result := TNFRecord.Create(ptr);
    end
    else
      Result := nil;
  end;

  class procedure TNFRecord.Check(arr: TArrayOfByte);
   var res: Integer;
  begin
   res :=  NFRecordCheck(@(arr[0]), Length(arr));
   NCheck(res);
  end;

  destructor TNFRecord.Destroy;
  begin
    NObjectFree(hHandle);
    inherited;
  end;

  function TNFRecord.MinutiaCount: Integer;
    var res, minutiaesCount: Integer;
  begin
    res := NFRecordGetMinutiaCount(hHandle, minutiaesCount);
    NCheck(res);
    Result := minutiaesCount;
  end;

  function TNFRecord.Minutia(index: Integer): TNMMinutia;
    var res: Integer;
        minutiae: TNMMinutia;
  begin
    res := NFRecordGetMinutia(hHandle, index, minutiae);
    NCheck(res);
    Result := minutiae;
  end;

  function TNFRecord.Save: TArrayOfByte;
  begin
    Result := Save(0);
  end;

  function TNFRecord.Save(flags: LongWord): TArrayOfByte;
  var res: Integer;
      size, retSize: LongInt;
      recordArray: TArrayOfByte;
  begin
    res := NFRecordGetSize(hHandle, flags, size);
    NCheck(res);
    SetLength(recordArray, size);
    res := NFRecordSaveToMemory(hHandle, @(recordArray[0]), size, flags, retSize );
    NCheck(res);
    Result := recordArray;
  end;

  function TNFRecord.G: Byte;
    var res: Integer;
        val: Byte;
  begin
    res := NFRecordGetG(hHandle, val);
    NCheck(res);
    Result := val;
  end;

  //-------------------------------------
  // NLRecord
  //-------------------------------------

  constructor TNLRecord.Create(flags: Integer);
    var res: Integer;
  begin
    inherited Create;
    res := NLRecordCreate(flags, hHandle);
    NCheck(res);
  end;

  constructor TNLRecord.Create(handle: Pointer);
  begin
    inherited Create;
    self.hHandle := handle;
  end;

  destructor TNLRecord.Destroy();
  begin
    NObjectFree(hHandle);
    inherited;
  end;

  function TNLRecord.Clone(): TNLRecord;
    var res: Integer;
        tmpPointer: Pointer;
  begin
    res := NLRecordClone(self.hHandle, tmpPointer);
    NCheck(res);
    Result := TNLRecord.Create(tmpPointer);
  end;

  function TNLRecord.Size: LongWord;
  begin
    Result := Size(0);
  end;

  function TNLRecord.Size(flags:Integer): LongWord;
    var res:Integer;
        sz: LongWord;
  begin
    res := NLRecordGetSize(hHandle, flags, sz);
    NCheck(res);
    Result := sz;
  end;

  function TNLRecord.Quality(): Byte;
    var res:Integer;
        b: Byte;
  begin
    res := NLRecordGetQuality(hHandle, b);
    NCheck(res);
    Result := b;
  end;

  //-------------------------------------
  // NLTemplate
  //-------------------------------------

  class function TNLTemplate.CreateFromMemory(arr: TArrayOfByte): TNLTemplate;
    var res: Integer;
        tmpPointer: Pointer;
  Begin
   res :=  NLTemplateCreateFromMemory(@(arr[0]), Length(arr), 0, nil, tmpPointer);
   NCheck(res);
   if (tmpPointer <> nil) then
      Result := TNLTemplate.Create(tmpPointer)
   else
      Result := nil;
  End;

  class procedure TNLTemplate.Check(arr: TArrayOfByte);
   var res: Integer;
  begin
   res :=  NLTemplateCheck(@(arr[0]), Length(arr));
   NCheck(res);
  end;

  constructor TNLTemplate.Create(handle: Pointer);
  begin
    inherited Create;
    self.hHandle := handle;
  end;

  destructor TNLTemplate.Destroy();
  begin
    NObjectFree(hHandle);
    inherited;
  end;

  function TNLTemplate.Clone(): TNLTemplate;
    var res: Integer;
        tmpPointer: Pointer;
  begin
    res := NLTemplateClone(self.hHandle, tmpPointer);
    NCheck(res);
    Result := TNLTemplate.Create(tmpPointer);
  end;

  function TNLTemplate.Size: LongWord;
  begin
    Result := Size(0);
  end;

  function TNLTemplate.Size(flags: Integer): LongWord;
    var res:Integer;
        sz: LongWord;
  begin
    res := NLTemplateGetSize(hHandle, flags, sz);
    NCheck(res);
    Result := sz;
  end;

  function TNLTemplate.RecordCount: Integer;
   var res: Integer;
       rc: Integer;
  begin
   res := NLTemplateGetRecordCount(hHandle, rc);
   NCheck(res);
   Result := rc;
  end;

  function TNLTemplate.Save: TArrayOfByte;
  begin
    Result := Save(0);
  end;
  
  function TNLTemplate.Save(flags: LongWord): TArrayOfByte;
    var res: Integer;
 
...
...
(Not finished, please download and read the complete file)
			
...
Expand> <Close

Want complete source code? Download it here

Point(s): 2

Download
0 lines left, continue to read
Sponsored links

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
Aboutform.dcu7.81 kB29-05-10 03:22
AboutForm.dfm59.86 kB02-04-10 14:37
AboutForm.pas2.79 kB02-04-10 14:37
DataBase.dcu10.72 kB29-05-10 02:56
DataBase.pas7.02 kB02-04-10 14:37
NCore.dcu12.55 kB29-05-10 02:56
NCore.pas11.17 kB02-04-10 14:37
NDeviceManager.dcu24.08 kB29-05-10 02:56
NDeviceManager.pas20.58 kB26-05-10 01:21
NExtractors.dcu26.38 kB29-05-10 02:56
NExtractors.pas22.97 kB02-04-10 14:37
NImages.dcu18.89 kB29-05-10 02:56
NImages.pas16.86 kB02-04-10 14:37
NLicensing.dcu1.73 kB29-05-10 02:56
NLicensing.pas2.27 kB02-04-10 14:37
NMatchers.dcu10.16 kB29-05-10 02:56
NMatchers.pas8.69 kB02-04-10 14:37
NTemplates.dcu13.67 kB29-05-10 02:56
NTemplates.pas10.28 kB02-04-10 14:37
NUtils.dcu17.47 kB29-05-10 02:56
NUtils.pas14.14 kB02-04-10 14:37
SQLite3.dcu10.79 kB29-05-10 02:56
sqlite3.dll493.92 kB02-04-10 14:37
SQLite3.pas13.07 kB02-04-10 14:37
SQLiteTable3.dcu49.60 kB29-05-10 02:56
SQLiteTable3.pas44.43 kB02-04-10 14:37
<SQLite>0.00 B29-05-10 03:00
DataBase.pas.~1~7.02 kB02-04-10 14:37
DataBase.pas.~2~7.02 kB26-05-10 01:49
DataBase.pas.~3~7.03 kB26-05-10 01:51
NDeviceManager.pas.~1~20.57 kB02-04-10 14:37
<__history>0.00 B29-05-10 03:00
<Bibliotecas>0.00 B29-05-10 03:00
CameraForm.dcu7.54 kB29-05-10 03:22
CameraForm.dfm172.63 kB02-04-10 14:37
CameraForm.pas2.57 kB02-04-10 14:37
DataBase.dcu10.98 kB29-05-10 03:22
DataBase.pas7.02 kB02-04-10 14:37
EnrollmentForm.dcu4.85 kB29-05-10 03:22
EnrollmentForm.dfm171.08 kB02-04-10 14:37
EnrollmentForm.pas577.00 B02-04-10 14:37
FacesSamplePas.cfg473.00 B02-04-10 14:37
FacesSamplePas.dof2.57 kB02-04-10 14:37
FacesSamplePas.dpr1.00 kB02-04-10 14:37
FacesSamplePas.dproj5.96 kB29-05-10 03:20
FacesSamplePas.dproj.20074.74 kB02-04-10 14:37
FacesSamplePas.dproj.local62.00 B29-05-10 03:21
FacesSamplePas.identcache1.19 kB29-05-10 03:22
FacesSamplePas.res78.90 kB29-05-10 03:20
fPrincipal.dcu53.36 kB29-05-10 03:13
fPrincipal.dfm176.14 kB29-05-10 03:05
fPrincipal.pas47.37 kB29-05-10 03:05
MainForm.dcu53.56 kB29-05-10 03:22
MainForm.dfm176.34 kB29-05-10 02:38
MainForm.pas47.42 kB29-05-10 02:54
NCore.dcu12.56 kB29-05-10 03:15
NDeviceManager.dcu24.09 kB29-05-10 03:15
Neurotechnology.bmp19.17 kB02-04-10 14:37
Neurotechnology.ico77.80 kB02-04-10 14:37
NExtractors.dcu26.39 kB29-05-10 03:15
NImages.dcu18.90 kB29-05-10 03:15
NLicensing.dcu1.74 kB29-05-10 03:15
NMatchers.dcu10.17 kB29-05-10 03:15
NTemplates.dcu13.68 kB29-05-10 03:15
NUtils.dcu17.48 kB29-05-10 03:15
SettingsForm.dcu15.43 kB29-05-10 03:22
SettingsForm.dfm177.53 kB02-04-10 14:37
SettingsForm.pas7.09 kB02-04-10 14:37
SQLite3.dcu10.80 kB29-05-10 03:15
SQLiteTable3.dcu49.61 kB29-05-10 03:15
FacesSamplePas.dpr.~1~1.00 kB02-04-10 14:37
FacesSamplePas.dpr.~2~1.01 kB29-05-10 03:02
FacesSamplePas.dpr.~3~411.00 B29-05-10 03:02
fPrincipal.dfm.~1~176.34 kB29-05-10 02:38
fPrincipal.dfm.~2~176.35 kB29-05-10 03:02
fPrincipal.dfm.~3~176.32 kB29-05-10 03:04
fPrincipal.pas.~1~47.42 kB29-05-10 03:01
fPrincipal.pas.~2~47.59 kB29-05-10 03:02
fPrincipal.pas.~3~47.58 kB29-05-10 03:04
fPrincipal.pas.~4~47.43 kB29-05-10 03:05
MainForm.dfm.~1~176.32 kB02-04-10 14:37
MainForm.dfm.~2~176.34 kB26-05-10 01:10
MainForm.dfm.~3~176.34 kB26-05-10 01:45
MainForm.dfm.~4~176.35 kB26-05-10 23:51
MainForm.dfm.~5~176.35 kB27-05-10 01:38
MainForm.dfm.~6~176.35 kB29-05-10 01:37
MainForm.pas.~1~45.50 kB02-04-10 14:37
MainForm.pas.~2~45.50 kB26-05-10 01:26
MainForm.pas.~3~45.64 kB26-05-10 01:45
MainForm.pas.~4~47.41 kB27-05-10 00:51
MainForm.pas.~5~47.42 kB27-05-10 01:18
MainForm.pas.~6~47.42 kB29-05-10 01:40
<__history>0.00 B29-05-10 03:16
<Biometria>0.00 B0 0%
...
Sponsored links

NTemplates.pas (1.58 MB)

Need 2 point
Your Point(s)

Your Point isn't enough.

Get point immediately by PayPal

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more point

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D