Class: PSD::Node

Inherits:
Object
  • Object
show all
Includes:
Ancestry, Search
Defined in:
lib/psd/node.rb,
lib/psd/node_root.rb,
lib/psd/node_group.rb,
lib/psd/node_layer.rb,
lib/psd/nodes/search.rb,
lib/psd/nodes/ancestry.rb,
lib/psd/nodes/parse_layers.rb,
lib/psd/nodes/lock_to_origin.rb

Direct Known Subclasses

Group, Layer, Root

Defined Under Namespace

Modules: Ancestry, LockToOrigin, ParseLayers, Search Classes: Group, Layer, Root

Constant Summary collapse

PROPERTIES =

Default properties that all nodes contain

[:name, :left, :right, :top, :bottom, :height, :width]

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Search

#children_at_path

Methods included from Ancestry

#ancestors, #childless?, #depth, #descendants, #has_children?, #has_siblings?, #method_missing, #only_child?, #root, #root?, #siblings, #subtree

Constructor Details

#initialize(layers = []) ⇒ Node

Returns a new instance of Node.



16
17
18
19
20
21
22
# File 'lib/psd/node.rb', line 16

def initialize(layers=[])
  @children = []
  layers.each do |layer|
    layer.parent = self
    @children << layer
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class PSD::Node::Ancestry

Instance Attribute Details

#childrenObject

Returns the value of attribute children.



14
15
16
# File 'lib/psd/node.rb', line 14

def children
  @children
end

#parentObject

Returns the value of attribute parent.



14
15
16
# File 'lib/psd/node.rb', line 14

def parent
  @parent
end

Instance Method Details

#document_dimensionsObject



55
56
57
# File 'lib/psd/node.rb', line 55

def document_dimensions
  @parent.document_dimensions
end

#group?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/psd/node.rb', line 36

def group?
  is_a?(PSD::Node::Group)
end

#hidden?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/psd/node.rb', line 24

def hidden?
  !@layer.visible?
end

#layer?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/psd/node.rb', line 32

def layer?
  is_a?(PSD::Node::Layer)
end

#to_hashObject



40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/psd/node.rb', line 40

def to_hash
  hash = {
    type: nil,
    visible: visible?,
    opacity: @layer.opacity / 255.0,
    blending_mode: @layer.blending_mode
  }

  PROPERTIES.each do |p|
    hash[p] = self.send(p)
  end

  hash
end

#visible?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/psd/node.rb', line 28

def visible?
  @layer.visible?
end