Class Texy::ImageElement
In: lib/texy/modules/image.rb
Parent: HtmlElement

Html element image

Methods

Attributes

height  [RW] 
image  [RW] 
link_image  [RW] 
over_image  [RW] 
width  [RW] 

Public Class methods

[Source]

# File lib/texy/modules/image.rb, line 162
        def initialize(texy)
            super
            self.image = Url.new(texy)
            self.over_image = Url.new(texy)
            self.link_image = Url.new(texy)
        end

Public Instance methods

[Source]

# File lib/texy/modules/image.rb, line 261
            def require_link_image
                link_image.set(image.value, texy.image_module.linked_root, true) if link_image.as_url.empty?
            end

[Source]

# File lib/texy/modules/image.rb, line 169
        def set_images(url = nil, url_over = nil, url_link = nil)
            image.set(url, texy.image_module.root, true)
            over_image.set(url_over, texy.image_module.root, true)
            link_image.set(url_link, texy.image_module.linked_root, true)
        end

[Source]

# File lib/texy/modules/image.rb, line 180
        def set_images_raw(urls)
            el_ref = texy.image_module.reference(urls.strip)

            if el_ref
                urls = el_ref.urls
                self.modifier = el_ref.modifier.dup
            end

            urls = urls.split('|')

            # dimensions
            if match_data = /^(.*?)\ (?:(\d+)|\?)\ *x\ *(?:(\d+)|\?)\ *()/.match(urls[0])
                urls[0] = match_data[1]
                set_size(match_data[2], match_data[3])
            end

            set_images(*urls)
        end

[Source]

# File lib/texy/modules/image.rb, line 175
        def set_size(width, height)
            self.width = width.to_i.abs
            self.height = height.to_i.abs
        end

Protected Instance methods

[Source]

# File lib/texy/modules/image.rb, line 202
            def generate_tags(tags)
                return if (image_url = image.as_url).empty? # image URL is required

                # classes & styles
                attrs = modifier.attrs_of('img')
                attrs['class'] = modifier.classes
                attrs['style'] = modifier.styles
                attrs['id'] = modifier.id

                if modifier.h_align == :left
                    if texy.image_module.left_class
                        attrs['class'] << texy.image_module.left_class
                    else
                        attrs['style']['float'] = 'left'
                    end
                elsif modifier.h_align == :right
                    if texy.image_module.right_class
                        attrs['class'] << texy.image_module.right_class
                    else
                        attrs['style']['float'] = 'right'
                    end
                end

                attrs['style']['vertical-align'] = modifier.v_align.to_s if modifier.v_align

                # width x height generate
                require_size

                attrs['width'] = width.to_s if width
                attrs['height'] = height.to_s if height

                # attribute generate
                texy.summary[:images] << attrs['src'] = image_url

                # onmouseover actions generate
                unless (over_url = over_image.as_url).empty?
                    attrs['onmouseover'] = "this.src=\"#{over_url}\""
                    attrs['onmouseout'] = "this.src=\"#{image.as_url}\""

                    texy.summary[:preload] << over_url
                end

                # alternative text generate
                attrs['alt'] = modifier.title || texy.image_module.default_alt

                tags << ['img', attrs]
            end

[Source]

# File lib/texy/modules/image.rb, line 250
            def require_size
                return if width
                return unless defined? Magick

                # (rane) TODO: check for exceptions...
                image = Magick::Image::read(file).first

                set_size(image.columns, image.rows)
            end

[Validate]