Class: PDF::Writer::StrokeStyle

### Home Classes Methods

### In Files

- lib/pdf/writer/strokestyle.rb

### Parent

Object

### Methods

- ::new
- #render

### Files

- ChangeLog

### Class/Module Index

Quicksearch

- PDF
- PDF::Charts
- PDF::Charts::StdDev
- PDF::Charts::StdDev::Label
- PDF::Charts::StdDev::Marker
- PDF::Charts::StdDev::Scale
- PDF::Math
- PDF::QuickRef
- PDF::SimpleTable
- PDF::SimpleTable::Column
- PDF::SimpleTable::Column::Heading
- PDF::TechBook
- PDF::TechBook::TagTocDots
- PDF::TechBook::TagXref
- PDF::Writer
- PDF::Writer::ARC4
- PDF::Writer::Complex
- PDF::Writer::External
- PDF::Writer::FontMetrics
- PDF::Writer::Graphics
- PDF::Writer::Graphics::ImageInfo
- PDF::Writer::Graphics::ImageInfo::Formats
- PDF::Writer::Graphics::ImageInfo::Type
- PDF::Writer::Lang
- PDF::Writer::Lang::EN
- PDF::Writer::OHash
- PDF::Writer::Object
- PDF::Writer::Object::Action
- PDF::Writer::Object::Annotation
- PDF::Writer::Object::Catalog
- PDF::Writer::Object::Contents
- PDF::Writer::Object::Destination
- PDF::Writer::Object::Encryption
- PDF::Writer::Object::Font
- PDF::Writer::Object::FontDescriptor
- PDF::Writer::Object::FontEncoding
- PDF::Writer::Object::Info
- PDF::Writer::Object::Outline
- PDF::Writer::Object::Outlines
- PDF::Writer::Object::Pages
- PDF::Writer::Object::Procset
- PDF::Writer::Object::ViewerPreferences
- PDF::Writer::OffsetReader
- PDF::Writer::PolygonPoint
- PDF::Writer::State
- PDF::Writer::StateStack
- PDF::Writer::StrokeStyle

No matching classes.

# PDF::Writer::StrokeStyle

A class that represents a style with which lines will be drawn.

### Constants

DEFAULT
LINE_CAPS
LINE_JOINS
SOLID_LINE

### Attributes

cap[RW]

The type of cap to put on the line.

`:butt` | The stroke is squared off at the endpoint of the path. There is no projection beyond the end of the path.
`:round` | A semicircular arc with a diameter equal to the line width is drawn around the endpoint and filled in.
`:square` | The stroke continues beyond the endpoint of the path for a distance equal to half the line width and is squared off.
`nil` | Keeps the current line cap.

dash[RW]

Controls the pattern of dashes and gaps used to stroke paths. This value must either be `nil`, or a hash with the following values:

`:pattern` | An array of numbers specifying the lengths (in PDF userspace units) of alternating dashes and gaps. The array is processed cyclically, so that a `:pattern` of [3] represents three units on, three units off, and a `:pattern` of 2, 1 represents two units on, one unit off.

      # - represents on, _ represents off
    ---___---___---   # pattern [3]
    --_--_--_--_--_   # pattern [2, 1]

`:phase` | The offset in the `:pattern` where the drawing of the stroke begins. Using a `:phase` of 1, the `:pattern` [3] will start offset by one phase, for two units on, three units off, three units on.

    --___---___---_   # pattern [3], phase 1
    -_--_--_--_--_-   # pattern [2, 1], phase 1

The constant SOLID_LINE may be used to restore line drawing to a solid line; this corresponds to an empty pattern with zero phase ([] 0).

Dashed lines wrap around curves and corners just as solid stroked lines do, with normal cap and join handling with no consideration of the dash pattern. A path with several subpaths treats each subpath independently; the complete dash pattern is restarted at the beginning of each subpath.

join[RW]

How two lines join together.

`:miter` | The outer edges of the strokes for the two segments are extended until they meet at an angle, as in a picture frame. If the segments meet at too sharp an angle (as defined by the miter_limit), a bevel join is used instead.
`:round` | An arc of a circle with a diameter equal to the line width is drawn around the point where the two segments meet, connecting the outer edges of the strokes for the two segments. This pie-slice shaped figure is filled in, producing a rounded corner.
`:bevel` | The two segments are finished with butt caps and the the resulting notch beyond the ends of the segments is filled with a triangle, forming a flattened edge on the join.
`nil` | Keeps the current line join.

miter_limit[RW]

When two line segments meet and `:miter` joins have been specified, the miter may extend far beyond the thickness of the line stroking the path. miter_limit imposes a maximum ratio miter length to line width at which point the join will be converted from a miter to a bevel. Adobe points out that the ratio is directly related to the angle between the segments in user space. With [p] representing the angle at which the segments meet:

    miter_length / line_width == 1 / (sin ([p] / 2))

A miter limit of 1.414 converts miters to bevels for [p] less than 90 degrees, a limit of 2.0 converts them for [p] less than 60 degrees, and a limit of 10.0 converts them for [p] less than approximately 11.5 degrees.

width[RW]

The thickness of the line in PDF units.

### Public Class Methods

new(width = 1, options = {}) click to toggle source

    # File lib/pdf/writer/strokestyle.rb, line 17
    def initialize(width = 1, options = {})
      @width        = width
      @cap          = options[:cap]
      @join         = options[:join]
      @dash         = options[:dash]
      @miter_limit  = options[:miter_limit]

      yield self if block_given?
    end

### Public Instance Methods

render(debug = false) click to toggle source

    # File lib/pdf/writer/strokestyle.rb, line 125
    def render(debug = false)
      s = ""
      s << "#{width} w" if @width > 0
      s << " #{LINE_CAPS[@cap]} J" if @cap
      s << " #{LINE_JOINS[@join]} j" if @join
      s << " #{@miter_limit} M" if @miter_limit
      if @dash
        s << " ["
        @dash[:pattern].each { |len| s << " #{len}" }
        s << " ] #{@dash[:phase] or 0} d"
      end
      s
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.