Sha256: cd94b08c0d8f703310c9f478c7eb58379e9dc36fa5e163bcc49fb453f5e9788f

Contents?: true

Size: 1.88 KB

Versions: 3

Compression:

Stored size: 1.88 KB

Contents

# coding: utf-8

module ThinReports
  module Generator
    
    # @private
    module PDF::Page
      
      # @param [ThinReports::Layout::Format] format
      def start_new_page(format)
        format_id = if change_page_format?(format)
          pdf.start_new_page(new_basic_page_options(format))
          @current_page_format = format
          
          unless format_stamp_registry.include?(format.identifier)
            create_format_stamp(format)
          end
          format.identifier
        else
          pdf.start_new_page(new_basic_page_options(current_page_format))
          current_page_format.identifier
        end
        
        stamp(format_id.to_s)
      end
      
      def add_blank_page
        pdf.start_new_page(pdf.page_count.zero? ? {:size => 'A4'} : {})
      end
      
    private
      
      # @return [ThinReports::Layout::Format]
      attr_reader :current_page_format
      
      # @param [ThinReports::Layout::Format] new_format
      # @return [Boolean]
      def change_page_format?(new_format)
        !current_page_format ||
          current_page_format.identifier != new_format.identifier
      end
      
      # @param [ThinReports::Layout::Format] format
      def create_format_stamp(format)
        create_stamp(format.identifier.to_s) do
          parse_svg(format.layout, '/svg/g')
        end
        format_stamp_registry << format.identifier
      end
      
      # @return [Array]
      def format_stamp_registry
        @format_stamp_registry ||= []
      end
      
      # @param [ThinReports::Layout::Format] format
      # @return [Hash]
      def new_basic_page_options(format)
        options = {:layout => format.page_orientation.to_sym}
        options[:size] = if format.user_paper_type?
          [format.page_width.to_f, format.page_height.to_f]
        else
          format.page_paper_type
        end
        options
      end
    end
    
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
thinreports-0.7.6 lib/thinreports/generator/pdf/document/page.rb
thinreports-0.7.5 lib/thinreports/generator/pdf/document/page.rb
thinreports-0.7.0 lib/thinreports/generator/pdf/document/page.rb