-
Notifications
You must be signed in to change notification settings - Fork 0
A Ruby on Rails Plugin to provide easy use of Ruby Vector Graphics (RVG) syntax in views
License
mdotterer/vectorview
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
VectorView --------- CONTENTS 1. Overview 2. Rationale 3. History 4. Dependencies 5. Compatibility 6. Installation 7. Usage 8. Tips and Hints 1. Overview VectorView is a plugin for Ruby on Rails that provides Ruby Vector Graphics (RVG) syntax in the views. 2. Rationale VectorView was written to keep View code in the views. It is still a view even though it is an image instead of an HTML page. Other techniques, such as creating a model that does the work of the rendering violate the basic principles of MVC and muddle your code. (Especially if you start putting that RVG code directly in the model itself!) 3. History VectorView was orinally created by Michael Dotterer to produce image versions of the puzzlesin his puzzle site, http://selzzup.com 4. Dependencies RMagick (and ImageMagick) are required. Installing these can be very complicated. Refer to the abundant help on the respective home pages and Google for help in installing these. 5. Compatibility VectorView is compatible with Rails 2.3 VectorView has not been tested on Rails 3.0 and probably does not work. This work will be upcoming shortly. VectorView was previously running in Rails 2.2, but this code is not available on github. If you need this code, feel free to contact mdotterer on GitHub and he will provide it. 6. Installation You can install VectorView in two ways: as gem, or as a plugin. Installing as a gem is recommended because the plugin will complicate the dependencies of your application by requiring rmagick during environment load which will require RMagick to be installed before `rake gems:install` can be run. 6.1 Installing as a gem (Recommended) - Get the source: `git clone git://github.com/mdotterer/vectorview` - Build the gem: Navigate to where you downloaded the code and run: `gem build .gemspec` - Install the gem: `[sudo] gem install --local vectorview-0.0.1.gem` - Add the dependency to your environment.rb file with: config.gem 'vectorview' - Unpack the gem in your application: `rake gems:unpack GEM=vectorview` NOTE: VectorView is pretty general, so it will work with most any version of RMagick. You should explicitly require which version of RMagick that you need in your environment.rb before VectorView is loaded. 6.2 Installing as a plugin - Check out the source into your plugins directory: `git clone git://github.com/mdotterer/vectorview.git vendor/plugins/vectorview` - Remove the git history: `rm -rf vendor/plugins/vectorview/.git` The first step creates a clone of the git repository in the desired location. Since you probably don't want or need all baggage of the version history, the second command removes this. Unfortunately git does not have a way to do this in one step. (like svn export or bzr export) 7. Usage Once installed, use the action as the following: app/controllers/foos_controller.rb FoosController < ApplicationController # ... def show # ... respond_to do |format| #... format.png { render :layout => false } end end end app/views/foos/show.png.rvg size 250, 250 draw do |canvas| # Your RVG code goes here! canvas.background_fill = 'white' canvas.g.translate(100, 150).rotate(-30) do |body| body.styles(:fill=>'yellow', :stroke=>'black', :stroke_width=>2) body.ellipse(50, 30) body.rect(45, 20, -20, -10).skewX(-35) end canvas.g.translate(130, 83) do |head| head.styles(:stroke=>'black', :stroke_width=>2) head.circle(30).styles(:fill=>'yellow') head.circle(5, 10, -5).styles(:fill=>'black') head.polygon(30,0, 70,5, 30,10, 62,25, 23,20).styles(:fill=>'orange') end foot = RVG::Group.new do |_foot| _foot.path('m0,0 v30 l30,10 l5,-10, l-5,-10 l-30,10z'). styles(:stroke_width=>2, :fill=>'orange', :stroke=>'black') end canvas.use(foot).translate(75, 188).rotate(15) canvas.use(foot).translate(100, 185).rotate(-15) canvas.text(125, 30) do |title| title.tspan("duck|").styles(:text_anchor=>'end', :font_size=>20, :font_family=>'helvetica', :fill=>'black') title.tspan("type").styles(:font_size=>22, :font_family=>'times', :font_style=>'italic', :fill=>'red') end canvas.rect(249,249).styles(:stroke=>'blue', :fill=>'none') end The above example comes from http://www.simplesystems.org/RMagick/doc/rvgtut.html In my usage of RVG I found that site extremely helpful. There are more examples and references of that site. You will only need the code dealing with the actual drawing, converting the image type and creating the RVG objects is done for you automatically. 8. Tips and Hints RVG is by no means fast. You will probably want to take advantage of Rail's page caching mechanisim to reduce the number of times you generate images using your application.
About
A Ruby on Rails Plugin to provide easy use of Ruby Vector Graphics (RVG) syntax in views
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published