#!/usr/bin/env ruby
# frozen_string_literal: false

require 'tk'
require 'tkextlib/vu/charts'

#######################################

c = TkCanvas.new.pack

begin
  st = Tk::Vu::TkcSticker.new(c, 0, 0, 10, 10)
rescue
  Tk.messageBox(:type=>'ok', :title=>"No sticker Item",
                :message=>"This build of vu does not include the sticker item")
  exit
end

c.destroy

#---
#--- set STRING {{x0 y0 x1 y1} {...text...} {resize point: center}

#sti_conf = [ [10, 10, 180, 180], "Sticker äöüß@²³¼½¾",  :center ]
#txt_conf = [ [210, 210],        "Text    äöüß@²³¼½¾",  :center ]
sti_conf = [ [10, 10, 350, 350],
             Tk::UTF8_String('Sticker \u00E4\u00F6\u00FC\u00DF\u0040\u00B2\u00B3\u00BC\u00BD\u00BE'),
             :center ]
txt_conf = [ [250, 250],
             Tk::UTF8_String('Text    \u00E4\u00F6\u00FC\u00DF\u0040\u00B2\u00B3\u00BC\u00BD\u00BE'),
             :center ]

#p sti_conf

fnt = TkFont.new('Helvetica 24 bold')

#---GUI
c = TkCanvas.new(:width=>500, :height=>500, :bg=>'aquamarine3').pack

#---CRRW Use the technique of eval the coord ...
sti = Tk::Vu::TkcSticker.new(c, sti_conf[0]){
  anchor    sti_conf[2]
  bar       'black'
  color     'red'
  fill      ''
  font      fnt
  lefttrunc 0
  outline   ''
  relheight 0.0
  relwidth  0.0
  relx      0.0
  rely      0.0
  space     0
  stipple   ''
  tags      'sti'
  text      sti_conf[1]
  width     0
  orient    :vertical
  minwidth  0
  minheight 0
  maxwidth  32767
  maxheight 32767
}

txt = TkcText.new(c, txt_conf[0]){
  activefill      ''
  activestipple   ''
  anchor          txt_conf[2]
  disabledfill    ''
  disabledstipple ''
  fill            'blue'
  font            fnt
  justify         :left
  offset          '0,0'
  state           ''
  stipple         ''
  tags            ['tex']
  text            txt_conf[1]
  width           0
}

#---BINDINGS
c.bind('2', proc{
         sti[:orient] = :horizontal
         txt[:width] = 0  # horizontal
       })

c.bind('3', proc{
         sti[:orient] = :vertical
         txt[:width] = 1  # top down
       })

Tk.root.bind('p', proc{
               c.postscript(:file=>'DEMO.ps')
               puts "DEMO.ps printed"
             })

Tk.root.bind('q', proc{exit})

#####################

Tk.mainloop
