svg 0.0.0 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/svg.rb +99 -0
  2. metadata +7 -1
data/lib/svg.rb CHANGED
@@ -0,0 +1,99 @@
1
+ #require 'svg'
2
+ #require 'svg/feature'
3
+ #require 'svg/circle'
4
+
5
+ module Svg
6
+
7
+ class RGB
8
+ def initialize(r=0, g=0, b=0)
9
+ @red = r
10
+ @green = g
11
+ @blue = b
12
+ end
13
+ def red
14
+ @red
15
+ end
16
+ def green
17
+ @green
18
+ end
19
+ def blue
20
+ @blue
21
+ end
22
+ def to_s
23
+ return "rgb(#{@red},#{@green},#{@blue})"
24
+ end
25
+ end
26
+
27
+ class Style < String
28
+ attr_accessor :fill, :stroke, :stroke_width, :fill_opacity, :stroke_opacity
29
+ def to_s
30
+ string_val = attr_to_s 'fill', fill
31
+ string_val += attr_to_s 'stroke', stroke
32
+ string_val += attr_to_s 'stroke-width', stroke_width
33
+ string_val += attr_to_s 'fill-opacity', fill_opacity
34
+ string_val += attr_to_s 'stroke-opacity', stroke_opacity
35
+ if not string_val.empty?
36
+ string_val.strip!
37
+ string_val.chop!
38
+ end
39
+ return string_val
40
+ end
41
+ def attr_to_s (attr_name, attr_val)
42
+ return '' if attr_val.nil?
43
+ " #{attr_name}:#{attr_val};" if not attr_val.to_s.empty?
44
+ end
45
+ end
46
+
47
+ class Feature
48
+ attr_accessor :stroke, :stroke_width, :fill, :fill_opacity, :stroke_opacity, :style
49
+ def to_svg
50
+ '<overrideme/>'
51
+ end
52
+
53
+ def attr_to_s (attr_name, attr_val)
54
+ return '' if attr_val.nil?
55
+ " #{attr_name}=\"#{attr_val}\"" if not attr_val.to_s.empty?
56
+ end
57
+
58
+ end
59
+
60
+ class Circle<Feature
61
+ attr_accessor :center_x, :center_y, :radius
62
+ def to_svg
63
+ "<circle cx=\"#{center_x}\" cy=\"#{center_y}\" r=\"#{radius}\" stroke=\"#{stroke}\" stroke-width=\"#{stroke_width}\" fill=\"#{fill}\" />"
64
+ string_val = "<circle"
65
+ string_val += attr_to_s 'cx', center_x
66
+ string_val += attr_to_s 'cy', center_y
67
+ string_val += attr_to_s 'r', radius
68
+ string_val += attr_to_s 'stroke', stroke
69
+ string_val += attr_to_s 'stroke-width', stroke_width
70
+ string_val += attr_to_s 'fill', fill
71
+ if not style.nil?
72
+ string_val += " style=\"#{style.to_s}\""
73
+ end
74
+ string_val += "/>"
75
+
76
+ return string_val
77
+ end
78
+ end
79
+
80
+ class Rectangle<Feature
81
+ attr_accessor :top_x, :top_y, :width, :height
82
+ def to_svg
83
+ string_val = "<rect"
84
+ string_val += attr_to_s 'x', top_x
85
+ string_val += attr_to_s 'y', top_y
86
+ string_val += attr_to_s 'width', width
87
+ string_val += attr_to_s 'height', height
88
+ if not style.nil?
89
+ string_val += " style=\"#{style.to_s}\""
90
+ end
91
+ string_val += "/>"
92
+
93
+ return string_val
94
+ end
95
+
96
+ end
97
+
98
+
99
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: svg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -31,12 +31,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
31
31
  - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
+ segments:
35
+ - 0
36
+ hash: -4021207685845722209
34
37
  required_rubygems_version: !ruby/object:Gem::Requirement
35
38
  none: false
36
39
  requirements:
37
40
  - - ! '>='
38
41
  - !ruby/object:Gem::Version
39
42
  version: '0'
43
+ segments:
44
+ - 0
45
+ hash: -4021207685845722209
40
46
  requirements: []
41
47
  rubyforge_project:
42
48
  rubygems_version: 1.8.24