dedalus 0.2.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a9022025c864310b9328e3e4c1a9dc4735cb884b
4
- data.tar.gz: 0e102ca23e119b7f3a30c31a34cd1f00e4690ec9
3
+ metadata.gz: 5b87e77ef8b41ec61f19f7b84e31853dc27e2c28
4
+ data.tar.gz: 2a4a4ab7156a738647dea2c1e99ce60f28c03b6d
5
5
  SHA512:
6
- metadata.gz: 9fda3c838779db5ed86226142b99fb6eacd6799c228e7452146dc29a8f60b63799d73f2721761be4ceff8f8e5bb685131ad6dd1c4acc644963679fdc452e2a13
7
- data.tar.gz: 7318c2c200a98b671915659d78da4907938ff89c6ff1ebf520dd7b319e020370b326c72460449afdb290e547beeff6ef03ee062b8bb4402ab608bcaa58b9527c
6
+ metadata.gz: e81bb797a355ffa07f9a7b52f148dda150645eebebd28591d5ad9498dd85b79f9fc1940c079b449e0f990e8696527790b4759f3185158c924f756db54c8c6c37
7
+ data.tar.gz: 92e2de9cc81a726c45e99a6d9b6a31e8fb3426e56ad6b79808b50b0d767c3aba71ae0bc0dd685b3b67e5db2fad2c4014cbd7c10c33e61a279b36c130ae74544f
data/bin/dedalus CHANGED
@@ -8,8 +8,8 @@ if File.directory?(File.join(root,'.git'))
8
8
  require 'dedalus'
9
9
  Dedalus::PatternLibrary::Application.kickstart!({
10
10
  setup: {
11
- library_name: "Dedalus Pattern Library",
12
- module_to_search: Dedalus::PatternLibrary
11
+ library_name: "Dedalus",
12
+ module_to_search: Dedalus::Elements
13
13
  }
14
14
  })
15
15
  rescue LoadError => e
@@ -33,7 +33,7 @@ module Dedalus
33
33
 
34
34
  def render!(structure, dims)
35
35
  traverse(structure, origin: [0,0], dimensions: dims) do
36
- on_atom do |atom, origin:, dimensions:|
36
+ on_atom do |atom, origin:, dimensions:, freeform:|
37
37
  if atom.background_color
38
38
  atom.draw_bounding_box(
39
39
  color: atom.background_color,
@@ -41,7 +41,8 @@ module Dedalus
41
41
  dimensions: dimensions
42
42
  )
43
43
  end
44
- atom.position = origin
44
+
45
+ atom.position = origin unless freeform
45
46
  atom.render
46
47
  end
47
48
 
@@ -17,9 +17,8 @@ module Dedalus
17
17
  def compose(screen)
18
18
  screen = composer.hover_molecule(screen, dimensions, mouse_position: mouse_position)
19
19
  composer.render!(screen, dimensions)
20
-
21
- cursor.position = mouse_position
22
- cursor.render
20
+ # cursor.position = mouse_position
21
+ # cursor.render
23
22
  end
24
23
 
25
24
  def dimensions
@@ -35,11 +34,6 @@ module Dedalus
35
34
  end
36
35
  end
37
36
 
38
- protected
39
- def cursor
40
- @cursor ||= Elements::Icon.for :arrow_cursor
41
- end
42
-
43
37
  private
44
38
  def composer
45
39
  @composer ||= Dedalus::ApplicationViewComposer.new
@@ -1,19 +1,15 @@
1
1
  module Dedalus
2
2
  module Elements
3
- class ImageRepository
4
- def self.lookup(path)
5
- @images ||= {}
6
- @images[path] ||= Gosu::Image.new(path)
7
- @images[path]
8
- end
9
- end
10
-
11
3
  class Image < Dedalus::Atom
12
- attr_accessor :path, :padding
4
+ attr_accessor :path, :padding, :z_order
13
5
 
14
6
  def render
15
7
  x,y = *position
16
- asset.draw(x + padding, y + padding, ZOrder::Foreground, scale, scale)
8
+ asset.draw(x + padding, y + padding, z_order, scale, scale)
9
+ end
10
+
11
+ def z_order
12
+ @z_order ||= ZOrder::Foreground
17
13
  end
18
14
 
19
15
  def width
@@ -29,7 +25,7 @@ module Dedalus
29
25
  end
30
26
 
31
27
  def padding
32
- @padding ||= 10.0
28
+ @padding ||= 0.0
33
29
  end
34
30
 
35
31
  def scale
@@ -44,9 +40,8 @@ module Dedalus
44
40
  "an image"
45
41
  end
46
42
 
47
- private
48
43
  def asset
49
- @asset ||= ImageRepository.lookup(path)
44
+ @asset ||= Dedalus::ImageRepository.lookup(path)
50
45
  end
51
46
  end
52
47
  end
@@ -0,0 +1,50 @@
1
+ module Dedalus
2
+ module Elements
3
+ class ImageGrid < Dedalus::Molecule
4
+ attr_accessor :grid, :tiles_path, :tile_width, :tile_height
5
+
6
+ def show
7
+ grid.map do |row|
8
+ row.map do |grid_value|
9
+ if grid_value
10
+ sprite_for(grid_value)
11
+ else
12
+ no_image
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ def height
19
+ grid.length * tile_height
20
+ end
21
+
22
+ def sprite_for(frame)
23
+ Sprite.new(frame: frame, width: tile_width, height: tile_height, path: tiles_path)
24
+ end
25
+
26
+ def no_image
27
+ Void.new(height: tile_height, width: tile_width)
28
+ end
29
+
30
+ def self.description
31
+ "a grid of images"
32
+ end
33
+
34
+ def self.example_data
35
+ {
36
+ tiles_path: "media/images/tiles.png",
37
+ tile_width: 64,
38
+ tile_height: 64,
39
+ grid: [
40
+ [ nil, 0, 2, 0 ],
41
+ [ 0, nil, 1, 0 ],
42
+ [ 0, 0, nil, 0 ],
43
+ [ 0, 1, 2, nil ],
44
+ ]
45
+ }
46
+ end
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,24 @@
1
+ module Dedalus
2
+ module Elements
3
+ class Sprite < Image
4
+ attr_accessor :width, :height, :frame
5
+
6
+ def asset
7
+ @asset ||= Dedalus::ImageRepository.lookup_tiles(path, width, height)[frame]
8
+ end
9
+
10
+ def self.example_data
11
+ {
12
+ path: "media/images/tiles.png",
13
+ frame: 0,
14
+ width: 64,
15
+ height: 64
16
+ }
17
+ end
18
+
19
+ def self.description
20
+ "an animated image"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ module Dedalus
2
+ module Elements
3
+ class Void < Dedalus::Atom
4
+ attr_accessor :width, :height
5
+ def render(*); end
6
+
7
+ def self.description
8
+ 'an empty space'
9
+ end
10
+
11
+ def self.example_data
12
+ { width: 300, height: 300 }
13
+ end
14
+ end
15
+ end
16
+ end
@@ -8,10 +8,11 @@ module Dedalus
8
8
  end
9
9
 
10
10
  class FontRepository
11
- def self.get_font(size: 20)
11
+ def self.get_font(font_name='Helvetica',size: 20)
12
12
  @fonts ||= {}
13
- @fonts[size] ||= Gosu::Font.new(size)
14
- @fonts[size]
13
+ @fonts[font_name] ||= {}
14
+ @fonts[font_name][size] ||= Gosu::Font.new(size, name: font_name)
15
+ @fonts[font_name][size]
15
16
  end
16
17
  end
17
18
 
@@ -31,29 +32,37 @@ module Dedalus
31
32
  attrs.each { |(k,v)| instance_variable_set(:"@#{k}",v) } unless attrs.nil?
32
33
  end
33
34
 
34
- def draw_bounding_box(origin:, dimensions:, color: Palette.gray) #, highlight: false)
35
+ def draw_bounding_box(origin:, dimensions:, color: Palette.gray)
35
36
  x,y = *origin
36
37
  w,h = *dimensions
37
38
 
38
39
  raise "Invalid color #{color} given to #{self.class.name} for bounding box" unless color.is_a?(Dedalus::Color)
39
40
 
40
41
  c = color.to_gosu
41
- window.draw_quad(x,y,c,
42
- x,y+h,c,
43
- x+w,y,c,
44
- x+w,y+h,c,ZOrder::Background)
42
+ window.draw_quad(x, y, c,
43
+ x, y+h, c,
44
+ x+w, y, c,
45
+ x+w, y+h, c,ZOrder::Background)
45
46
  end
46
47
 
47
48
  def view
48
49
  Dedalus.active_view
49
50
  end
50
51
 
52
+ def tiny_font
53
+ FontRepository.get_font(size: 14)
54
+ end
55
+
56
+ def code_font
57
+ FontRepository.get_font('courier new', size: 18)
58
+ end
59
+
51
60
  def font
52
61
  FontRepository.get_font(size: 20)
53
62
  end
54
63
 
55
64
  def big_font
56
- FontRepository.get_font(size: 36)
65
+ FontRepository.get_font(size: 24)
57
66
  end
58
67
 
59
68
  def huge_font
@@ -67,6 +76,54 @@ module Dedalus
67
76
 
68
77
  ###
69
78
 
79
+ class Container < Element
80
+ def initialize(contents, attrs={})
81
+ @contents = contents
82
+ super(attrs)
83
+ end
84
+
85
+ def show
86
+ @contents
87
+ end
88
+ end
89
+
90
+ # layer is an abstract element...
91
+ # maybe should also pull out rows and columns?
92
+ # could cleanup traversal impl, and will be clearer ultimately
93
+ class Layer < Element
94
+ def initialize(elements, freeform: false)
95
+ @elements = elements
96
+ @freeform = freeform
97
+ end
98
+
99
+ def show
100
+ @elements
101
+ end
102
+
103
+ def freeform?
104
+ @freeform == true
105
+ end
106
+ end
107
+
108
+ # it's like a gluon or something, not sure how to model in nuclear terms
109
+ class LayerStack < Element
110
+ attr_reader :layers
111
+
112
+ def initialize(layers: [])
113
+ @layers = []
114
+ end
115
+
116
+ def push(layer_elements)
117
+ @layers.push(layer_elements)
118
+ end
119
+
120
+ # def each
121
+ # @layers.each
122
+ # end
123
+ end
124
+
125
+ ###
126
+
70
127
  class Atom < Element
71
128
  attr_accessor :scale, :padding
72
129
  end
@@ -88,6 +145,8 @@ module Dedalus
88
145
  class Screen < Element
89
146
  end
90
147
 
148
+ ###
149
+
91
150
  module ZOrder
92
151
  Background, Foreground, Text, Overlay = *(0..5)
93
152
  end
@@ -0,0 +1,15 @@
1
+ module Dedalus
2
+ class ImageRepository
3
+ def self.lookup(path)
4
+ @images ||= {}
5
+ @images[path] ||= Gosu::Image.new(path)
6
+ @images[path]
7
+ end
8
+
9
+ def self.lookup_tiles(path, width, height)
10
+ @tiles ||= {}
11
+ @tiles[path] ||= Gosu::Image::load_tiles(path, width, height)
12
+ @tiles[path]
13
+ end
14
+ end
15
+ end
@@ -2,7 +2,7 @@ module Dedalus
2
2
  class Color
3
3
  attr_accessor :red, :green, :blue, :alpha
4
4
 
5
- def initialize(red,green,blue,alpha=255)
5
+ def initialize(red,green,blue,alpha=160)
6
6
  @red = red
7
7
  @green = green
8
8
  @blue = blue
@@ -14,7 +14,7 @@ module Dedalus
14
14
  end
15
15
 
16
16
  def find_descendants_of(klass, module_to_search)
17
- ObjectSpace.each_object(Class).select { |k| k < klass && find_descendants_of(k, module_to_search).count.zero? && k.name.deconstantize == module_to_search.name }
17
+ ObjectSpace.each_object(Class).select { |k| k < klass && k.name.deconstantize == module_to_search.name }
18
18
  end
19
19
 
20
20
  def create_library(module_to_search:, name:)
@@ -5,6 +5,7 @@ module Dedalus
5
5
 
6
6
  def app_screen
7
7
  ApplicationScreen.new(app_template).hydrate(
8
+ mouse_position: mouse_position,
8
9
  library_section_tabs: library_view.library_section_tabs,
9
10
  current_entry_name: current_entry_name,
10
11
  library_sections: library_view.library_sections,
@@ -0,0 +1,9 @@
1
+ module Dedalus
2
+ module PatternLibrary
3
+ class Code < Dedalus::Elements::Paragraph
4
+ def font
5
+ code_font
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Dedalus
2
+ module PatternLibrary
3
+ class TinyText < Dedalus::Elements::Heading
4
+ def font
5
+ tiny_font
6
+ end
7
+ end
8
+ end
9
+ end
@@ -9,9 +9,10 @@ module Dedalus
9
9
 
10
10
  def show
11
11
  [
12
- Elements::Paragraph.new(text: "EXAMPLE", scale: 0.5, height_percent: 0.05, background_color: background_color.darken),
12
+ TinyText.new(text: "EXAMPLE", height_percent: 0.05, background_color: background_color.darken),
13
13
  item,
14
- Elements::Paragraph.new(text: item_data, scale: 0.7, background_color: Palette.decode_color('darkgray'), padding: 10)
14
+ TinyText.new(text: "DATA", height_percent: 0.05, background_color: background_color.darken),
15
+ Code.new(text: item_data, background_color: Palette.decode_color('darkgray'), padding: 10)
15
16
  ]
16
17
  end
17
18
 
@@ -4,10 +4,7 @@ module Dedalus
4
4
  attr_accessor :icon, :name, :description, :scale, :highlight, :section_color
5
5
 
6
6
  def show
7
- [[
8
- icon_element, [ title_element,
9
- description_element ]
10
- ]]
7
+ Container.new([[icon_element, [ title_element, description_element ]]], padding: 16)
11
8
  end
12
9
 
13
10
  def hover
@@ -33,15 +30,15 @@ module Dedalus
33
30
  end
34
31
 
35
32
  def icon_element
36
- Elements::Icon.for(icon, padding: 16)
33
+ Elements::Icon.for(icon, padding: 10)
37
34
  end
38
35
 
39
36
  def title_element
40
- LargeText.new(text: name)
37
+ Elements::Heading.new(text: name)
41
38
  end
42
39
 
43
40
  def description_element
44
- Elements::Paragraph.new(text: description)
41
+ TinyText.new(text: description)
45
42
  end
46
43
 
47
44
  def self.description
@@ -9,9 +9,8 @@ module Dedalus
9
9
  def show
10
10
  [
11
11
  HugeText.new(text: abbreviation, scale: scale),
12
- #Elements::Heading.new(text: abbreviation, scale: 6.0 * scale),
13
- Elements::Paragraph.new(text: element_name, scale: scale),
14
- Elements::Paragraph.new(text: kind, scale: 0.6 * scale)
12
+ LargeText.new(text: element_name, scale: scale),
13
+ TinyText.new(text: kind, scale: scale)
15
14
  ]
16
15
  end
17
16
 
@@ -40,7 +39,7 @@ module Dedalus
40
39
  end
41
40
 
42
41
  def width
43
- 280 * scale
42
+ 260 * scale
44
43
  end
45
44
 
46
45
  def height
@@ -62,8 +61,8 @@ module Dedalus
62
61
 
63
62
  def self.example_data
64
63
  {
65
- element_abbreviation: "Pa",
66
- element_name: "Paragraph"
64
+ element_abbreviation: "Ht",
65
+ element_name: "Huge Text"
67
66
  }
68
67
  end
69
68
  end
@@ -9,9 +9,9 @@ module Dedalus
9
9
 
10
10
  def show
11
11
  [
12
- Elements::Heading.new(text: title),
13
- Elements::Heading.new(text: subtitle, scale: 0.9),
14
- Elements::Paragraph.new(text: description)
12
+ HugeText.new(text: title),
13
+ LargeText.new(text: subtitle),
14
+ TinyText.new(text: description)
15
15
  ] + [ library_items ]
16
16
  end
17
17
 
@@ -6,15 +6,34 @@ module Dedalus
6
6
  end
7
7
 
8
8
  def show
9
- @template.show
9
+ layers
10
10
  end
11
11
 
12
- def hydrate(library_section_tabs:, current_entry_name:, library_sections:, library_items:)
12
+ def layers
13
+ layer_stack = Dedalus::LayerStack.new
14
+ layer_stack.push(Dedalus::Layer.new(background_image))
15
+ layer_stack.push(Dedalus::Layer.new(@template))
16
+ layer_stack.push(Dedalus::Layer.new(cursor, freeform: true))
17
+ layer_stack
18
+ end
19
+
20
+ def background_image
21
+ @bg_image ||= Elements::Image.new(path: "media/images/cosmos.jpg", z_order: -1)
22
+ end
23
+
24
+ def cursor
25
+ @cursor ||= Elements::Icon.for :arrow_cursor
26
+ end
27
+
28
+ def hydrate(mouse_position:, library_section_tabs:, current_entry_name:, library_sections:, library_items:)
13
29
  @template.library_name = "Dedalus Pattern Library"
14
30
  @template.library_section_tabs = library_section_tabs
15
31
  @template.library_sections = library_sections
16
32
  @template.library_items = library_items
17
33
  @template.current_entry_name = current_entry_name
34
+
35
+ cursor.position = mouse_position
36
+
18
37
  self
19
38
  end
20
39
  end
@@ -13,8 +13,8 @@ module Dedalus
13
13
  def layout
14
14
  [
15
15
  app_header,
16
- [ sidebar, yield ]
17
- # app_footer
16
+ [ sidebar, yield ],
17
+ app_footer
18
18
  ]
19
19
  end
20
20
 
@@ -3,7 +3,10 @@ require 'dedalus/pattern_library/models/library_section'
3
3
  require 'dedalus/pattern_library/models/library_item'
4
4
 
5
5
  require 'dedalus/pattern_library/atoms/large_text'
6
+ require 'dedalus/pattern_library/atoms/tiny_text'
6
7
  require 'dedalus/pattern_library/atoms/huge_text'
8
+ require 'dedalus/pattern_library/atoms/code'
9
+
7
10
  require 'dedalus/pattern_library/molecules/library_section_tab'
8
11
  # require 'dedalus/pattern_library/molecules/library_item_molecule'
9
12
  require 'dedalus/pattern_library/molecules/library_item_example'
@@ -1,4 +1,4 @@
1
1
  module Dedalus
2
2
  # dedalus version
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
@@ -19,14 +19,14 @@ module Dedalus
19
19
  @element_callback = blk
20
20
  end
21
21
 
22
- def walk!(structure, origin:, dimensions:)
22
+ def walk!(structure, origin:, dimensions:, freeform: false)
23
23
  width, height = *dimensions
24
24
  height = structure.height if !structure.is_a?(Array) && structure.height
25
25
  width = structure.width if !structure.is_a?(Array) && structure.width
26
26
  x0, y0 = *origin
27
27
 
28
28
  if structure.is_a?(Dedalus::Atom)
29
- @atom_callback.call(structure, origin: origin, dimensions: dimensions) if @atom_callback
29
+ @atom_callback.call(structure, origin: origin, dimensions: dimensions, freeform: freeform) if @atom_callback
30
30
  elsif structure.is_a?(Dedalus::Element)
31
31
  # an element *other than* an atom, we need to call #show on it
32
32
  margin = structure.margin || 0.0
@@ -42,13 +42,18 @@ module Dedalus
42
42
  @element_callback.call(structure, origin: margin_origin, dimensions: margin_dims)
43
43
  end
44
44
 
45
- pad = structure.padding || 10.0
46
- # x,y = x0+pad, y0+pad
45
+ pad = structure.padding || 0.0
47
46
  pad_origin = [x+pad,y+pad]
48
47
  pad_dims = [width - pad*2 - margin*2, height - pad*2 - margin*2 ]
49
48
 
50
-
51
- walk!(structure.show, origin: pad_origin, dimensions: pad_dims)
49
+ if structure.is_a?(LayerStack)
50
+ layers = structure.layers
51
+ layers.each do |layer|
52
+ walk!(layer, origin: pad_origin, dimensions: pad_dims, freeform: layer.freeform?)
53
+ end
54
+ else
55
+ walk!(structure.show, origin: pad_origin, dimensions: pad_dims, freeform: freeform)
56
+ end
52
57
  elsif structure.is_a?(Array) # we have a set of rows
53
58
  walk_rows!(structure, origin: origin, dimensions: dimensions)
54
59
  end
@@ -63,7 +68,16 @@ module Dedalus
63
68
  y = y0 + height_cursor
64
69
  dims = [width, current_row_height]
65
70
  if row.is_a?(Array)
66
- walk_columns!(row, origin: [x0, y], dimensions: dims)
71
+ extra_columns = true
72
+ while extra_columns
73
+ row = walk_columns!(row, origin: [x0, y], dimensions: dims)
74
+ if row.empty?
75
+ extra_columns = false
76
+ else
77
+ height_cursor += row.first.height
78
+ y = y0 + height_cursor
79
+ end
80
+ end
67
81
  else
68
82
  walk!(row, origin: [x0,y], dimensions: dims)
69
83
  end
@@ -73,6 +87,7 @@ module Dedalus
73
87
  def walk_columns!(columns, origin:, dimensions:)
74
88
  width, height = *dimensions
75
89
  x0, y0 = *origin
90
+
76
91
  subdivide_line(columns, distance: width, attr: :width) do |column, current_column_width, width_cursor|
77
92
  x = x0 + width_cursor
78
93
  dims = [ current_column_width, height ]
@@ -121,9 +136,16 @@ module Dedalus
121
136
  end
122
137
  end
123
138
 
139
+ if distance_cursor > distance - current_element_distance # ??
140
+ return elements.slice(index,elements.size)
141
+ end
142
+
124
143
  yield(element, current_element_distance, distance_cursor)
125
144
  distance_cursor += current_element_distance
126
145
  end
146
+
147
+ # no overflowing elements...
148
+ []
127
149
  end
128
150
  end
129
151
  end
data/lib/dedalus.rb CHANGED
@@ -2,17 +2,22 @@ require 'joyce'
2
2
  require 'geometer'
3
3
 
4
4
  require 'dedalus/version'
5
+
5
6
  require 'dedalus/view_traversal'
6
7
  require 'dedalus/app_view_composer'
7
8
  require 'dedalus/application_view'
8
9
 
9
10
  require 'dedalus/palette'
11
+ require 'dedalus/image_repository'
10
12
 
11
13
  require 'dedalus/elements'
14
+ require 'dedalus/elements/void'
12
15
  require 'dedalus/elements/text'
13
16
  require 'dedalus/elements/heading'
14
17
  require 'dedalus/elements/paragraph'
15
18
  require 'dedalus/elements/image'
16
19
  require 'dedalus/elements/icon'
20
+ require 'dedalus/elements/sprite'
21
+ require 'dedalus/elements/image_grid'
17
22
 
18
23
  require 'dedalus/pattern_library'
Binary file
Binary file
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dedalus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joseph Weissman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-29 00:00:00.000000000 Z
11
+ date: 2016-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: joyce
@@ -169,14 +169,20 @@ files:
169
169
  - lib/dedalus/elements/heading.rb
170
170
  - lib/dedalus/elements/icon.rb
171
171
  - lib/dedalus/elements/image.rb
172
+ - lib/dedalus/elements/image_grid.rb
172
173
  - lib/dedalus/elements/paragraph.rb
174
+ - lib/dedalus/elements/sprite.rb
173
175
  - lib/dedalus/elements/text.rb
176
+ - lib/dedalus/elements/void.rb
177
+ - lib/dedalus/image_repository.rb
174
178
  - lib/dedalus/palette.rb
175
179
  - lib/dedalus/pattern_library.rb
176
180
  - lib/dedalus/pattern_library/application.rb
177
181
  - lib/dedalus/pattern_library/application_view.rb
182
+ - lib/dedalus/pattern_library/atoms/code.rb
178
183
  - lib/dedalus/pattern_library/atoms/huge_text.rb
179
184
  - lib/dedalus/pattern_library/atoms/large_text.rb
185
+ - lib/dedalus/pattern_library/atoms/tiny_text.rb
180
186
  - lib/dedalus/pattern_library/library_view.rb
181
187
  - lib/dedalus/pattern_library/models/library.rb
182
188
  - lib/dedalus/pattern_library/models/library_item.rb
@@ -199,6 +205,9 @@ files:
199
205
  - media/icons/house.png
200
206
  - media/icons/molecule.png
201
207
  - media/icons/paramecium.png
208
+ - media/images/controls.png
209
+ - media/images/cosmos.jpg
210
+ - media/images/tiles.png
202
211
  - spec/dedalus_spec.rb
203
212
  - spec/spec_helper.rb
204
213
  homepage: https://rubygems.org/gems/dedalus