Class: Idml::Render::LayerFilter
- Inherits:
-
Object
- Object
- Idml::Render::LayerFilter
- Defined in:
- lib/idml/render/layer_filter.rb
Overview
Filters page items by layer visibility. Items on hidden layers are excluded from rendering. Built from the Designmap's Layer collection — each Layer has a Visible attribute.
Constant Summary collapse
- PAGE_ITEM_TYPES =
[ Idml::Elements::Rectangle, Idml::Elements::TextFrame, Idml::Elements::Polygon, Idml::Elements::Group, Idml::Elements::GraphicLine, ].freeze
- EXCLUDE_NONE =
new([].freeze)
Class Method Summary collapse
Instance Method Summary collapse
- #filter(items) ⇒ Object
-
#initialize(hidden_layer_ids) ⇒ LayerFilter
constructor
A new instance of LayerFilter.
- #visible?(item) ⇒ Boolean
Constructor Details
#initialize(hidden_layer_ids) ⇒ LayerFilter
Returns a new instance of LayerFilter.
34 35 36 |
# File 'lib/idml/render/layer_filter.rb', line 34 def initialize(hidden_layer_ids) @hidden = hidden_layer_ids.to_set end |
Class Method Details
.from_designmap(designmap) ⇒ Object
17 18 19 20 |
# File 'lib/idml/render/layer_filter.rb', line 17 def self.from_designmap(designmap) hidden = hidden_layer_ids(layers_for(designmap)) hidden.empty? ? EXCLUDE_NONE : new(hidden) end |
Instance Method Details
#filter(items) ⇒ Object
49 50 51 |
# File 'lib/idml/render/layer_filter.rb', line 49 def filter(items) items.select { |item| visible?(item) } end |
#visible?(item) ⇒ Boolean
40 41 42 43 44 45 46 47 |
# File 'lib/idml/render/layer_filter.rb', line 40 def visible?(item) return true unless page_item?(item) layer_ref = item.item_layer return true if layer_ref.nil? || layer_ref.empty? !@hidden.include?(layer_ref) end |