Sha256: 856a949585317c8277e0415b097b673855b501a4b0334901cc9befa3d8245167

Contents?: true

Size: 1.86 KB

Versions: 6

Compression:

Stored size: 1.86 KB

Contents

# frozen_string_literal: true

module Axlsx
  # This is a utility class for serialing the drawing node in a
  # worksheet. Drawing objects have their own serialization that exports
  # a drawing document. This is only for the single node in the
  # worksheet
  class WorksheetDrawing
    # Creates a new WorksheetDrawing
    # @param [Worksheet] worksheet
    def initialize(worksheet)
      raise ArgumentError, 'you must provide a worksheet' unless worksheet.is_a?(Worksheet)

      @worksheet = worksheet
      @drawing = nil
    end

    # The worksheet that owns the drawing
    # @return [Worksheet]
    attr_reader :worksheet

    # The drawing object
    # @return [Drawing]
    attr_reader :drawing

    # adds a chart to the drawing object
    # @param [Class] chart_type The type of chart to add
    # @param [Hash] options Options to pass on to the drawing and chart
    # @see Worksheet#add_chart
    def add_chart(chart_type, options)
      @drawing ||= Drawing.new worksheet
      drawing.add_chart(chart_type, options)
    end

    # adds an image to the drawing object
    # @param [Hash] options Options to pass on to the drawing and image
    # @see Worksheet#add_image
    def add_image(options)
      @drawing ||= Drawing.new(worksheet)
      drawing.add_image(options)
    end

    # helper method to tell us if the drawing has something in it or not
    # @return [Boolean]
    def has_drawing? # rubocop:disable Naming/PredicateName
      @drawing.is_a? Drawing
    end

    # The relationship instance for this drawing.
    # @return [Relationship]
    def relationship
      return unless has_drawing?

      Relationship.new(self, DRAWING_R, "../#{drawing.pn}")
    end

    # Serialize the drawing for the worksheet
    # @param [String] str
    def to_xml_string(str = +'')
      return unless has_drawing?

      str << "<drawing r:id='#{relationship.Id}'/>"
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
caxlsx-4.2.0 lib/axlsx/workbook/worksheet/worksheet_drawing.rb
cm-admin-1.5.22 vendor/bundle/ruby/3.3.0/gems/caxlsx-4.1.0/lib/axlsx/workbook/worksheet/worksheet_drawing.rb
cm-admin-1.5.21 vendor/bundle/ruby/3.3.0/gems/caxlsx-4.1.0/lib/axlsx/workbook/worksheet/worksheet_drawing.rb
cm-admin-1.5.20 vendor/bundle/ruby/3.3.0/gems/caxlsx-4.1.0/lib/axlsx/workbook/worksheet/worksheet_drawing.rb
caxlsx-4.1.0 lib/axlsx/workbook/worksheet/worksheet_drawing.rb
caxlsx-4.0.0 lib/axlsx/workbook/worksheet/worksheet_drawing.rb