Class: SvgRasterView

Inherits:
Qt::Widget show all
Defined in:
ext/ruby/qtruby/examples/painting/svgviewer/svgview.rb

Instance Method Summary collapse

Methods inherited from Qt::Widget

#raise

Methods inherited from Qt::Base

#%, #&, #*, #**, #+, #-, #-@, #/, #<, #<<, #<=, #==, #>, #>=, #>>, #QCOMPARE, #QEXPECT_FAIL, #QFAIL, #QSKIP, #QTEST, #QVERIFY, #QVERIFY2, #QWARN, #^, ancestors, #is_a?, #methods, private_slots, #protected_methods, #public_methods, q_classinfo, q_signal, q_slot, signals, #singleton_methods, slots, #|, #~

Constructor Details

#initialize(file, parent) ⇒ SvgRasterView

Returns a new instance of SvgRasterView.



30
31
32
33
34
35
36
37
# File 'ext/ruby/qtruby/examples/painting/svgviewer/svgview.rb', line 30

def initialize(file, parent)
    super(parent)
       @buffer = Qt::Image.new
       @dirty = true
    @doc = Qt::SvgRenderer.new(file, self)
    connect(@doc, SIGNAL(:repaintNeeded),
            self, SLOT(:poluteImage))
end

Instance Method Details

#paintEvent(event) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
# File 'ext/ruby/qtruby/examples/painting/svgviewer/svgview.rb', line 39

def paintEvent(event)
    if @buffer.size() != size() || @dirty
        @buffer = Qt::Image.new(size(), Qt::Image::Format_ARGB32_Premultiplied)
        p = Qt::Painter.new(@buffer)
        p.setViewport(0, 0, width(), height())
        p.eraseRect(0, 0, width(), height())
        @doc.render(p)
    end
    pt = Qt::Painter.new(self)
    pt.drawImage(0, 0, @buffer)
       pt.end
end

#poluteImageObject



59
60
61
62
# File 'ext/ruby/qtruby/examples/painting/svgviewer/svgview.rb', line 59

def poluteImage()
    @dirty = true
    update()
end

#sizeHintObject



52
53
54
55
56
57
# File 'ext/ruby/qtruby/examples/painting/svgviewer/svgview.rb', line 52

def sizeHint()
    if @doc
        return @doc.defaultSize()
       end
    return super()
end

#wheelEvent(e) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'ext/ruby/qtruby/examples/painting/svgviewer/svgview.rb', line 64

def wheelEvent(e)
    diff = 0.1
    size = @doc.defaultSize()
    w  = size.width()
    h = size.height()
    if e.delta() > 0
        w = (width() +  width() * diff)
        h = (height() + height() * diff)
    else
        w  = (width() - width() * diff)
        h = (height() - height() * diff)
    end

    resize(w, h)
end