Files
harbour-core/contrib/hbzebra/tests/cairo.prg
Aleksander Czajczynski 12f14227c2 2018-02-11 12:00 UTC+0100 Aleksander Czajczynski (hb fki.pl)
* README.md
  * config/global.mk
  * contrib/gtwvw/doc/gtwvw.txt
  * contrib/hbwin/tests/ole.prg
  * contrib/hbzebra/tests/cairo.prg
  * contrib/hbzebra/tests/harupdf.prg
  * contrib/hbzebra/tests/wingdi.prg
  * package/harbour-wce.spec.in
  * package/harbour-win.spec.in
  * package/harbour.rb
  * package/harbour.spec
  * package/mpkg_win.nsi
  * package/winuni/mpkg_win_uni.nsi
  * src/3rd/zlib/ChangeLog.txt
  * src/compiler/hbusage.c
  * src/pp/hbpp.c
  * tests/html.prg
    * changed Harbour Project website URL references to
      https://harbour.github.io/
      This change is very symbolic mark of time passing, but it had to be
      done. Original harbour-project.org domain went out from reach
      together with Phil Barnett passing away on April 16, 2015.
      Respect Phil, RIP.
      Phil's efforts are directly tied to The Harbour Project origins.
      To memorize him, please take a tour to archived The Oasis
      https://harbour.github.io/the-oasis/
2018-02-11 11:59:33 +01:00

103 lines
4.8 KiB
Plaintext

#require "hbzebra"
#require "hbcairo"
PROCEDURE Main()
LOCAL hCairo, hSurface
hSurface := cairo_pdf_surface_create( hb_FNameExtSet( __FILE__, ".pdf" ), 567, 794 ) // A4
hCairo := cairo_create( hSurface )
cairo_set_source_rgb( hCairo, 1.0, 1.0, 1.0 )
cairo_paint( hCairo )
cairo_select_font_face( hCairo, "sans-serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL )
cairo_set_font_size( hCairo, 10 )
cairo_set_source_rgb( hCairo, 0, 0, 0 )
DrawBarcode( hCairo, 20, 1, "EAN13", "477012345678" )
DrawBarcode( hCairo, 40, 1, "EAN8", "1234567" )
DrawBarcode( hCairo, 60, 1, "UPCA", "01234567891" )
DrawBarcode( hCairo, 80, 1, "UPCE", "123456" )
DrawBarcode( hCairo, 100, 1, "CODE39", "ABC123" )
DrawBarcode( hCairo, 120, 1, "CODE39", "ABC123", HB_ZEBRA_FLAG_CHECKSUM )
DrawBarcode( hCairo, 140, 0.5, "CODE39", "ABC123", HB_ZEBRA_FLAG_CHECKSUM + HB_ZEBRA_FLAG_WIDE2_5 )
DrawBarcode( hCairo, 160, 1, "CODE39", "ABC123", HB_ZEBRA_FLAG_CHECKSUM + HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( hCairo, 180, 1, "ITF", "1234", HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( hCairo, 200, 1, "ITF", "12345678901", HB_ZEBRA_FLAG_CHECKSUM )
DrawBarcode( hCairo, 220, 1, "MSI", "1234" )
DrawBarcode( hCairo, 240, 1, "MSI", "1234", HB_ZEBRA_FLAG_CHECKSUM + HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( hCairo, 260, 1, "MSI", "1234567", HB_ZEBRA_FLAG_CHECKSUM )
DrawBarcode( hCairo, 280, 1, "CODABAR", "40156", HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( hCairo, 300, 1, "CODABAR", "-1234", HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( hCairo, 320, 1, "CODE93", "ABC-123" )
DrawBarcode( hCairo, 340, 1, "CODE93", "TEST93" )
DrawBarcode( hCairo, 360, 1, "CODE11", "12", HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( hCairo, 380, 1, "CODE11", "1234567890", HB_ZEBRA_FLAG_CHECKSUM + HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( hCairo, 400, 1, "CODE128", "Code 128" )
DrawBarcode( hCairo, 420, 1, "CODE128", "61300073570004616" )
DrawBarcode( hCairo, 440, 1, "CODE128", "Wikipedia" )
DrawBarcode( hCairo, 460, 1, "PDF417", "Hello, World of Harbour!!! It's 2D barcode PDF417 :)" )
DrawBarcode( hCairo, 540, 1, "DATAMATRIX", "Hello, World of Harbour!!! It's 2D barcode DataMatrix :)" )
DrawBarcode( hCairo, 580, 1, "QRCODE", "https://harbour.github.io/" )
cairo_destroy( hCairo )
cairo_surface_write_to_png( hSurface, hb_FNameExtSet( __FILE__, ".png" ) )
cairo_surface_destroy( hSurface )
RETURN
PROCEDURE DrawBarcode( hCairo, nY, nLineWidth, cType, cCode, nFlags )
LOCAL hZebra, nLineHeight, cTxt
SWITCH cType
CASE "EAN13" ; hZebra := hb_zebra_create_ean13( cCode, nFlags ) ; EXIT
CASE "EAN8" ; hZebra := hb_zebra_create_ean8( cCode, nFlags ) ; EXIT
CASE "UPCA" ; hZebra := hb_zebra_create_upca( cCode, nFlags ) ; EXIT
CASE "UPCE" ; hZebra := hb_zebra_create_upce( cCode, nFlags ) ; EXIT
CASE "CODE39" ; hZebra := hb_zebra_create_code39( cCode, nFlags ) ; EXIT
CASE "ITF" ; hZebra := hb_zebra_create_itf( cCode, nFlags ) ; EXIT
CASE "MSI" ; hZebra := hb_zebra_create_msi( cCode, nFlags ) ; EXIT
CASE "CODABAR" ; hZebra := hb_zebra_create_codabar( cCode, nFlags ) ; EXIT
CASE "CODE93" ; hZebra := hb_zebra_create_code93( cCode, nFlags ) ; EXIT
CASE "CODE11" ; hZebra := hb_zebra_create_code11( cCode, nFlags ) ; EXIT
CASE "CODE128" ; hZebra := hb_zebra_create_code128( cCode, nFlags ) ; EXIT
CASE "PDF417" ; hZebra := hb_zebra_create_pdf417( cCode, nFlags ); nLineHeight := nLineWidth * 3 ; EXIT
CASE "DATAMATRIX" ; hZebra := hb_zebra_create_datamatrix( cCode, nFlags ); nLineHeight := nLineWidth ; EXIT
CASE "QRCODE" ; hZebra := hb_zebra_create_qrcode( cCode, nFlags ); nLineHeight := nLineWidth ; EXIT
ENDSWITCH
IF hZebra != NIL
IF hb_zebra_geterror( hZebra ) == 0
IF Empty( nLineHeight )
nLineHeight := 16
ENDIF
cairo_move_to( hCairo, 40, nY + 13 )
cairo_show_text( hCairo, cType )
IF Len( cTxt := hb_zebra_getcode( hZebra ) ) < 20
cairo_move_to( hCairo, 100, nY + 13 )
cairo_show_text( hCairo, cTxt )
ENDIF
hb_zebra_draw_cairo( hZebra, hCairo, 220, nY, nLineWidth, nLineHeight )
ELSE
? "Type", cType, "Code", cCode, "Error", hb_zebra_geterror( hZebra )
ENDIF
hb_zebra_destroy( hZebra )
ELSE
? "Invalid barcode type", cType
ENDIF
RETURN
STATIC FUNCTION hb_zebra_draw_cairo( hZebra, hCairo, ... )
IF hb_zebra_geterror( hZebra ) != 0
RETURN HB_ZEBRA_ERROR_INVALIDZEBRA
ENDIF
cairo_save( hCairo )
hb_zebra_draw( hZebra, {| x, y, w, h | cairo_rectangle( hCairo, x, y, w, h ) }, ... )
cairo_fill( hCairo )
cairo_restore( hCairo )
RETURN 0