Class: HexaPDF::Content::LineDashPattern
- Inherits:
-
Object
- Object
- HexaPDF::Content::LineDashPattern
- Defined in:
- lib/hexapdf/content/graphics_state.rb
Overview
The line dash pattern defines how a line should be dashed. For use with Content::GraphicsState#line_dash_pattern.
A dash pattern consists of two parts: the dash array and the dash phase. The dash array defines the length of alternating dashes and gaps (important: starting with dashes). And the dash phase defines the distance into the dash array at which to start.
It is easier to show. Following are dash arrays and dash phases and how they would be interpreted:
[] 0 No dash, one solid line
[3] 0 3 unit dash, 3 unit gap, 3 unit dash, 3 unit gap, ...
[3] 1 2 unit dash, 3 unit gap, 3 unit dash, 3 unit gap, ...
[2 1] 0 2 unit dash, 1 unit gap, 2 unit dash, 1 unit gap, ...
[3 5] 6 2 unit gap, 3 unit dash, 5 unit gap, 3 unit dash, ...
[2 3] 6 1 unit dash, 3 unit gap, 2 unit dash, 3 unit gap, ...
See: PDF1.7 s8.4.3.6
Instance Attribute Summary collapse
-
#array ⇒ Object
readonly
The dash array.
-
#phase ⇒ Object
readonly
The dash phase.
Instance Method Summary collapse
-
#==(other) ⇒ Object
Returns
true
if the other line dash pattern is the same as this one. -
#initialize(array = [], phase = 0) ⇒ LineDashPattern
constructor
Inititalizes the line dash pattern with the given
array
andphase
. -
#to_operands ⇒ Object
Converts the LineDashPattern object to an array of operands for the associated PDF content operator.
Constructor Details
#initialize(array = [], phase = 0) ⇒ LineDashPattern
Inititalizes the line dash pattern with the given array
and phase
.
The argument phase
must be non-negative and the numbers in the array
must be non-negative and must not all be zero.
172 173 174 175 176 177 178 179 |
# File 'lib/hexapdf/content/graphics_state.rb', line 172 def initialize(array = [], phase = 0) if phase < 0 || (!array.empty? && array.inject(0) {|m, n| m < 0 ? m : (n < 0 ? -1 : m + n)} <= 0) raise ArgumentError, "Invalid line dash pattern: #{array.inspect} #{phase.inspect}" end @array = array.freeze @phase = phase end |
Instance Attribute Details
#array ⇒ Object (readonly)
The dash array.
163 164 165 |
# File 'lib/hexapdf/content/graphics_state.rb', line 163 def array @array end |
#phase ⇒ Object (readonly)
The dash phase.
166 167 168 |
# File 'lib/hexapdf/content/graphics_state.rb', line 166 def phase @phase end |
Instance Method Details
#==(other) ⇒ Object
Returns true
if the other line dash pattern is the same as this one.
182 183 184 |
# File 'lib/hexapdf/content/graphics_state.rb', line 182 def ==(other) other.kind_of?(self.class) && other.array == array && other.phase == phase end |
#to_operands ⇒ Object
Converts the LineDashPattern object to an array of operands for the associated PDF content operator.
188 189 190 |
# File 'lib/hexapdf/content/graphics_state.rb', line 188 def to_operands [@array, @phase] end |