SVG Canvas

  • Thread starter Steven Quinones-Colon
  • Start date
S

Steven Quinones-Colon

I've been looking for a couple of days now and I can't find a library
for svg graphics with a canvas object so I can make a financial
charting application(stand alone, not web based), is there such a
thing? maybe I'm missing something obvious.
Best regards,
Steven
 
P

Pete Yandell

I've been looking for a couple of days now and I can't find a library
for svg graphics with a canvas object so I can make a financial
charting application(stand alone, not web based), is there such a
thing? maybe I'm missing something obvious.
Best regards,
Steven

I haven't tried it at all, but there are Ruby bindings for the Cairo
library (http://cairographics.org/rcairo) which should produce really
nice output.

Cheers,

Pete Yandell
 
K

Kouhei Sutou

Hi,

In <[email protected]>
"SVG Canvas" on Thu, 14 Dec 2006 02:33:44 +0900,
Steven Quinones-Colon said:
I've been looking for a couple of days now and I can't find a library
for svg graphics with a canvas object so I can make a financial
charting application(stand alone, not web based), is there such a
thing? maybe I'm missing something obvious.

If you want to only show SVG, the following example will
help you:

http://ruby-gnome2.cvs.sourceforge....ample/svg-viewer.rb?revision=HEAD&view=markup

If you want to output your chart to screen and SVG file, the
following small script will help you:

====
#!/usr/bin/env ruby

require 'gtk2'
require 'rsvg2'

def draw(context, width, height)
context.move_to(0, 0)
context.line_to(width, height)
context.stroke

context.move_to(width, 0)
context.line_to(0, height)
context.stroke
end

window = Gtk::Window.new
window.set_default_size(300, 300)
vbox = Gtk::VBox.new
area = Gtk::DrawingArea.new
save = Gtk::Button.new("save")

window.signal_connect("destroy") do
Gtk.main_quit
end

area.signal_connect("expose_event") do |widget, event|
width, height = area.window.size
context = widget.window.create_cairo_context
draw(context, width, height)
true
end

save.signal_connect("clicked") do |widget, event|
width, height = area.window.size
surface = Cairo::SVGSurface.new("output.svg", width, height)
context = Cairo::Context.new(surface)
draw(context, width, height)
context.show_page
surface.finish
true
end

vbox.pack_start(area, true, true)
vbox.pack_end(save, false, false)
window.add(vbox)
window.show_all

Gtk.main
====

Thanks,
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top