Skip to content
This repository has been archived by the owner on May 18, 2020. It is now read-only.

miyako/4d-plugin-qrencode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 

Repository files navigation

4d-plugin-qrencode

QR code generator based on libqrencode 4.0.0.

obsolete-word-black-frame-word-obsolete-word-black-frame-d-rendering-123942590

Use 4d-plugin-qrencode-v2

Platform

carbon cocoa win32 win64

Version

not thread safe


Syntax

miyako.github.io

Examples

C_TEXT($data)
C_PICTURE($picture)

$version:=1
$size:=9
$margin:=1
$dpi:=96

$picture:=QRCODE ("www.wakanda.org";QR Format PNG;QR Mode Unicode;QR Correction Level L;$version;$size;$margin;$dpi;$data)
WRITE PICTURE FILE(System folder(Desktop)+"qr-test.png";$picture)
  //data is base64 encoded png

$picture:=QRCODE ("www.wakanda.org";QR Format SVG;QR Mode Unicode;QR Correction Level L;$version;$size;$margin;$dpi;$data)
WRITE PICTURE FILE(System folder(Desktop)+"qr-test.svg";$picture)
  //data is the svg source

SET PICTURE TO PASTEBOARD($picture)

Pass a combination of flags to QR Mode Unicode, QR Mode Kanji, and QR Mode Micro to mode.

Swiss

  //swiss qr iso-20022

C_OBJECT($Header)
OB SET($Header;\
"QRType";"SPC";\
"Version";"0100";\
"Coding";"1")

  //Konto
$IBAN:="CH4431999123000889012"

  //ZE
$Name:="Robert Schneider AG"
$StrtNm:="Rue du Lac"
$BldgNb:="1268"
$PstCd:="2501"
$TwnNm:="Biel"
$Ctry:="CH"

ASSERT(Match regex("[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}[a-zA-Z0-9]{0,16}";$IBAN))
ASSERT(Length($Name)<71)
ASSERT(Length($StrtNm)<71)
ASSERT(Length($BldgNb)<17)
ASSERT(Length($PstCd)<17)
ASSERT(Length($TwnNm)<36)
ASSERT(Match regex("[a-zA-Z]{2}";$Ctry))

C_OBJECT($Cdtr)
OB SET($Cdtr;\
"Name";$Name;\
"StrtNm";$StrtNm;\
"BldgNb";$BldgNb;\
"PstCd";$PstCd;\
"TwnNm";$TwnNm;\
"Ctry";Uppercase($Ctry))

C_OBJECT($CdtrInf)
OB SET($CdtrInf;\
"IBAN";Uppercase($IBAN);\
"Cdtr";$Cdtr)

$Name:="Robert Schneider Services Switzerland AG"

  //EZE
C_OBJECT($UltmtCdtr)
OB SET($UltmtCdtr;\
"Name";$Name;\
"StrtNm";$StrtNm;\
"BldgNb";$BldgNb;\
"PstCd";$PstCd;\
"TwnNm";$TwnNm;\
"Ctry";Uppercase($Ctry))

$Amt:="1949.75"
$Ccy:="CHF"
$ReqdExctnDt:="2019-10-31"

C_OBJECT($CcyAmtDate)
OB SET($CcyAmtDate;\
"Amt";$Amt;\
"Ccy";$Ccy;\
"ReqdExctnDt";$ReqdExctnDt)

  //EZP
$Name:="Pia-Maria Rutschmann-Schnyder"
$StrtNm:="Grosse Marktgasse"
$BldgNb:="28"
$PstCd:="9400"
$TwnNm:="Rorschach"
$Ctry:="CH"

C_OBJECT($UltmtDbtr)
OB SET($UltmtDbtr;\
"Name";$Name;\
"StrtNm";$StrtNm;\
"BldgNb";$BldgNb;\
"PstCd";$PstCd;\
"TwnNm";$TwnNm;\
"Ctry";$Ctry)

$Tp:="QRR"
$Ref:="210000000003139471430009017"
$Ustrd:="Auftrag vom 15.09.2019##S1/01/20170309/11/10201409/20/14000000/22/36958/30/CH106017086/40/1020/41/3010"

C_OBJECT($RmtInf)
OB SET($RmtInf;\
"Tp";$Tp;\
"Ref";$Ref;\
"Ustrd";$Ustrd)

ARRAY TEXT($AltPmt;2)
$AltPmt{1}:="UV1;1.1;1278564;1A-2F-43-AC-9B-33-21-B0-CC-D4-28-56;TCXVMKC22;2019-02-10T15:12:39; 2019-02-10T15:18:16"
$AltPmt{2}:="XY2;2a-2.2r;_R1-CH2_ConradCH-2074-1_3350_2019-03-13T10:23:47_16,99_0,00_0,00_0,00_0,00_+8FADt/DQ=_1=="

C_OBJECT($QRCH)
OB SET($QRCH;\
"Header";$Header;\
"CdtrInf";$CdtrInf;\
"UltmtCdtr";$UltmtCdtr;\
"CcyAmtDate";$CcyAmtDate;\
"UltmtDbtr";$UltmtDbtr;\
"RmtInf";$RmtInf)
OB SET ARRAY($QRCH;"AltPmtInf";$AltPmt)

$picture:=QRCH ($QRCH)

SET PICTURE TO PASTEBOARD($picture)
WRITE PICTURE FILE(System folder(Desktop)+"qr-test.png";$picture)

QRCH

C_OBJECT($1;$QRCH)
C_PICTURE($0)

$QRCH:=$1

$code:=""
$code:=$code+OB Get(OB Get($QRCH;"Header");"QRType";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"Header");"Version";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"Header");"Coding";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"CdtrInf");"IBAN";Is text)+"\r\n"
$code:=$code+OB Get(OB Get(OB Get($QRCH;"CdtrInf");"Cdtr");"Name";Is text)+"\r\n"
$code:=$code+OB Get(OB Get(OB Get($QRCH;"CdtrInf");"Cdtr");"StrtNm";Is text)+"\r\n"
$code:=$code+OB Get(OB Get(OB Get($QRCH;"CdtrInf");"Cdtr");"BldgNb";Is text)+"\r\n"
$code:=$code+OB Get(OB Get(OB Get($QRCH;"CdtrInf");"Cdtr");"PstCd";Is text)+"\r\n"
$code:=$code+OB Get(OB Get(OB Get($QRCH;"CdtrInf");"Cdtr");"TwnNm";Is text)+"\r\n"
$code:=$code+OB Get(OB Get(OB Get($QRCH;"CdtrInf");"Cdtr");"Ctry";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"UltmtCdtr");"Name";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"UltmtCdtr");"StrtNm";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"UltmtCdtr");"BldgNb";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"UltmtCdtr");"PstCd";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"UltmtCdtr");"TwnNm";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"UltmtCdtr");"Ctry";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"CcyAmtDate");"Amt";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"CcyAmtDate");"Ccy";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"CcyAmtDate");"ReqdExctnDt";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"UltmtDbtr");"Name";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"UltmtDbtr");"StrtNm";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"UltmtDbtr");"BldgNb";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"UltmtDbtr");"PstCd";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"UltmtDbtr");"TwnNm";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"UltmtDbtr");"Ctry";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"RmtInf");"Tp";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"RmtInf");"Ref";Is text)+"\r\n"
$code:=$code+OB Get(OB Get($QRCH;"RmtInf");"Ustrd";Is text)

ARRAY TEXT($AltPmt;0)
OB GET ARRAY($QRCH;"AltPmtInf";$AltPmt)
If (Size of array($AltPmt)#0)
	$code:=$code+"\r\n"+$AltPmt{1}
End if 
If (Size of array($AltPmt)>1)
	$code:=$code+"\r\n"+$AltPmt{2}
End if 

$version:=1
$size:=3
$margin:=0
$dpi:=96

$picture:=QRCODE ($code;QR Format PNG;QR Mode Latin;QR Correction Level M;$version;$size;$margin;$dpi;$data)


READ PICTURE FILE(Get 4D folder(Current resources folder)+"CH-Kreuz_7mm.png";$cross)
PICTURE PROPERTIES($cross;$crossSize;$crossSize)  //166
$codeSize:=$crossSize/7*46  //Swiss QR code should be 46mm
PICTURE PROPERTIES($picture;$qrSize;$qrSize)
TRANSFORM PICTURE($picture;Scale;$codeSize/$qrSize;$codeSize/$qrSize)
PICTURE PROPERTIES($picture;$qrSize;$qrSize)
COMBINE PICTURES($picture;$picture;Superimposition;$cross;($qrSize/2)-($crossSize/2);($qrSize/2)-($crossSize/2))

$0:=$picture