File: frame.rb

package info (click to toggle)
ruby-rghost 0.9.9-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,188 kB
  • sloc: ruby: 3,374; makefile: 6; sh: 1
file content (101 lines) | stat: -rw-r--r-- 3,398 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# Creates one rectangle or one shape with rounded corners.
#===Options
#
# * <tt>:x and :y</tt> - Coordinates to position.
# * <tt>:corners</tt> - Value for rounded corners. Use 0 to straight angle.
# * <tt>:width and :height</tt> - Size of frame
# * <tt>:content</tt> - facade to ShapeContent with same parameters.
# * <tt>:border</tt> - facade to Border with same parameters.
#===Examples using facade frame method inside of Document
#  d=Document.new
#  d.frame :x => 3, :width => 7, :height => 5, :content => {:fill => false}
#
# link:images/frame01.png
#  d=Document.new
#  d.frame :x => 3, :width => 7, :height => 5, :content => {:color => '#35F6A3' }
#
# link:images/frame02.png
#
#  d=Document.new
#  d.frame :x => 3, :width => 7, :height => 5, :content => {:color => '#35F6A3' }, :border =>{:width => 5, :dash => [1,3,10]}
#
# link:images/frame03.png
#
#  d=Document.new
#  d.frame :x => 3, :width => 7, :height => 5, :content => {:color => '#35F6A3' }, :corners => 20
#
# link:images/frame04.png
#
#  d=Document.new
#  d.frame :x => 3, :width => 7, :height => 5, :content => {:color => :yellow }, :border => {:color => :red, :width => 4}, :corners => 20
#
# link:images/frame05.png
class RGhost::Frame < RGhost::PsObject
  DEFAULT_OPTIONS = {
    x: :limit_left,
    y: :current_row,
    width: 5,
    height: 3.5,
    corners: 1,
    content: RGhost::ShapeContent::DEFAULT_OPTIONS,
    border: RGhost::Border::DEFAULT_OPTIONS,
    stroke: true

  }
  BACKGROUND_ROW_DEFAULT_OPTIONS = {start_in: :limit_left, size: :area_x, color: RGhost::ShapeContent::DEFAULT_OPTIONS[:color]}
  def initialize(options = {})
    @options = DEFAULT_OPTIONS.dup.merge(options)
  end

  def ps
    x = RGhost::Units.parse(@options[:x])
    y = RGhost::Units.parse(@options[:y])

    h = RGhost::Units.parse(@options[:height])
    w = RGhost::Units.parse(@options[:width])

    inside = RGhost::ShapeContent.new(@options[:content]) if @options[:content]
    border = RGhost::Border.new(@options[:border]) if @options[:border]

    params = %(
    /rcorners_params{
    /:x #{x}   def /:y #{y} def
    /:w #{w} def /:h #{h} def
    /:r #{@options[:corners]} def
    /:s 1 def
    /:stk {#{"stroke" if @options[:stroke]} }def
    /:inside{
      #{inside.ps if inside}
    } def
    /:outside{
      #{border.ps if border}
    }def
      } def
    )

    "#{params} rcorners_params rcorners"
  end

  # Creates background of the row for current row. Example
  # Here's fill the current row using width :area_x, height :row_height, and starting in :limit_left.
  # doc.background_row :color => '#35F6A3'
  #
  # link:images/background_row01.png
  #
  # Specifies size and where will start of background
  # doc.background_row :start_in => 2, :size => 5.5, :color => 0.8
  #
  # link:images/background_row02.png
  def self.background_row(options = BACKGROUND_ROW_DEFAULT_OPTIONS)
    # opts=BACKGROUND_ROW_DEFAULT_OPTIONS.merge(options)
    # start_in,size=Units::parse(opts[:start_in]),Units::parse(opts[:size])
    # return RGhost::PsObject.new("#{start_in} #{size} {#{opts[:color]}} background_row ")
    options = RGhost::Frame::BACKGROUND_ROW_DEFAULT_OPTIONS.merge(options)
    g = RGhost::Graphic.new
    g.set RGhost::Units.parse(options[:start_in])
    g.set RGhost::Units.parse(options[:size])
    g.set RGhost::Color.create(options[:color]) if options[:color]
    g.raw :background_row
    g
  end
end