|
- require_relative '../control'
- require_relative '../dimensions'
-
- module DHE
- class Counter < Control
- def initialize(faceplate:, x:, y:, name:, labels:, enabled:, selection:)
- @name = name
- @slug = "counter-#{@name}"
- @button = Button.new(faceplate: faceplate, x: x, y: y)
- @label_offset = @button.radius + PADDING
- @labels = labels.map { |label| Label.new(faceplate: faceplate, x: x, y: y - @label_offset, text: label, size:
- :small) }
- bottom = y + (@button.y - @labels[0].top)
- super(faceplate: faceplate, x: x, y: y, top: @labels[0].top, right: @button.right, bottom: bottom, left:
- @button.left)
- @enabled = enabled
- @selection = selection
- end
-
- def draw(svg:, x:, y:, selection: @selection)
- @labels[selection - 1].draw(svg: svg, x: x, y: y - @label_offset)
- @button.draw(svg: svg, x: x, y: y)
- end
-
- def draw_faceplate(svg:)
- return unless @enabled
- draw(svg: svg, x: @x, y: @y)
- end
-
- def svg_files
- (0...@labels.size).map do |index|
- selection = index + 1
- path = faceplate.slug / "#{@slug}-#{selection}"
- svg_file(path: path, has_text: true) do |svg|
- draw_control(svg: svg, selection: selection)
- end
- end
- end
- end
- end
|