gd2-ffij 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/gd2/image.rb CHANGED
@@ -114,7 +114,7 @@ module GD2
114
114
 
115
115
  type = data_type(magic) or
116
116
  raise UnrecognizedImageTypeError, 'Image data format is not recognized'
117
- ptr = GD2FFI.send(create[type], *args)
117
+ ptr = ::GD2::GD2FFI.send(create[type], *args)
118
118
  raise LibraryError unless ptr
119
119
 
120
120
  ptr = FFIStruct::ImagePtr.new(ptr)
@@ -168,9 +168,9 @@ module GD2
168
168
  ptr = # TODO: implement xpm and xbm imports
169
169
  #if format == :xpm
170
170
  #raise ArgumentError, "Unexpected options #{options.inspect}" unless options.empty?
171
- #GD2FFI.send(:gdImageCreateFromXpm, filename)
171
+ #::GD2::GD2FFI.send(:gdImageCreateFromXpm, filename)
172
172
  #elsif format == :xbm
173
- #GD2FFI.send(:gdImageCreateFromXbm, filename)
173
+ #::GD2::GD2FFI.send(:gdImageCreateFromXbm, filename)
174
174
  if format == :gd2 && !options.empty?
175
175
  x, y, width, height =
176
176
  options.delete(:x) || 0, options.delete(:y) || 0,
@@ -182,7 +182,7 @@ module GD2
182
182
  raise ArgumentError, 'Missing required option :height' if height.nil?
183
183
  # TODO:
184
184
  ptr = File.open(filename, 'rb') do |file|
185
- GD2FFI.send(:gdImageCreateFromGd2Part, file, x.to_i, y.to_i, width.to_i, height.to_i)
185
+ ::GD2::GD2FFI.send(:gdImageCreateFromGd2Part, file, x.to_i, y.to_i, width.to_i, height.to_i)
186
186
  end
187
187
  else
188
188
  raise ArgumentError, "Unexpected options #{options.inspect}" unless
@@ -204,7 +204,7 @@ module GD2
204
204
  file_ptr = FFI::MemoryPointer.new(file.size, 1, false)
205
205
  file_ptr.put_bytes(0, file)
206
206
 
207
- GD2FFI.send(create_sym, file.size, file_ptr)
207
+ ::GD2::GD2FFI.send(create_sym, file.size, file_ptr)
208
208
  end
209
209
  raise LibraryError unless ptr
210
210
 
@@ -222,8 +222,8 @@ module GD2
222
222
  private_class_method :image_true_color?
223
223
 
224
224
  def self.create_image_ptr(sx, sy, alpha_blending = true) #:nodoc:
225
- ptr = FFIStruct::ImagePtr.new(GD2FFI.send(create_image_sym, sx.to_i, sy.to_i))
226
- GD2FFI.send(:gdImageAlphaBlending, ptr, alpha_blending ? 1 : 0)
225
+ ptr = FFIStruct::ImagePtr.new(::GD2::GD2FFI.send(create_image_sym, sx.to_i, sy.to_i))
226
+ ::GD2::GD2FFI.send(:gdImageAlphaBlending, ptr, alpha_blending ? 1 : 0)
227
227
  ptr
228
228
  end
229
229
 
@@ -239,7 +239,7 @@ module GD2
239
239
  end
240
240
 
241
241
  @palette = self.class.palette_class.new(self) unless
242
- @palette && @palette.image == self
242
+ defined?(@palette) && @palette.image == self
243
243
  self
244
244
  end
245
245
 
@@ -257,7 +257,7 @@ module GD2
257
257
  # identical, otherwise a bit field indicating the differences. See the
258
258
  # GD2::CMP_* constants for individual bit flags.
259
259
  def compare(other)
260
- GD2FFI.send(:gdImageCompare, image_ptr, other.image_ptr)
260
+ ::GD2::GD2FFI.send(:gdImageCompare, image_ptr, other.image_ptr)
261
261
  end
262
262
 
263
263
  # Compare this image with another image. Returns *false* if the images are
@@ -297,13 +297,13 @@ module GD2
297
297
 
298
298
  # Return the pixel value at image location (+x+, +y+).
299
299
  def get_pixel(x, y)
300
- GD2FFI.send(:gdImageGetPixel, @image_ptr, x.to_i, y.to_i)
300
+ ::GD2::GD2FFI.send(:gdImageGetPixel, @image_ptr, x.to_i, y.to_i)
301
301
  end
302
302
  alias pixel get_pixel
303
303
 
304
304
  # Set the pixel value at image location (+x+, +y+).
305
305
  def set_pixel(x, y, value)
306
- GD2FFI.send(:gdImageSetPixel, @image_ptr, x.to_i, y.to_i, value.to_i)
306
+ ::GD2::GD2FFI.send(:gdImageSetPixel, @image_ptr, x.to_i, y.to_i, value.to_i)
307
307
  nil
308
308
  end
309
309
 
@@ -320,11 +320,10 @@ module GD2
320
320
  # Iterate over each row of pixels in the image, returning an array of
321
321
  # pixel values.
322
322
  def each
323
- ptr = image_ptr
324
323
  (0...height).each do |y|
325
- row = (0...width).inject(Array.new(width)) do |row, x|
326
- row[x] = get_pixel(x, y)
327
- row
324
+ row = (0...width).inject(Array.new(width)) do |r, x|
325
+ r[x] = get_pixel(x, y)
326
+ r
328
327
  end
329
328
  yield row
330
329
  end
@@ -349,7 +348,7 @@ module GD2
349
348
  # Set whether this image will be stored in interlaced form when output as
350
349
  # PNG or JPEG.
351
350
  def interlaced=(bool)
352
- GD2FFI.send(:gdImageInterlace, image_ptr, bool ? 1 : 0)
351
+ ::GD2::GD2FFI.send(:gdImageInterlace, image_ptr, bool ? 1 : 0)
353
352
  end
354
353
 
355
354
  # Return *true* if colors will be alpha blended into the image when pixels
@@ -363,7 +362,7 @@ module GD2
363
362
  # pixels are modified. Alpha blending is not available for IndexedColor
364
363
  # images.
365
364
  def alpha_blending=(bool)
366
- GD2FFI.send(:gdImageAlphaBlending, image_ptr, bool ? 1 : 0)
365
+ ::GD2::GD2FFI.send(:gdImageAlphaBlending, image_ptr, bool ? 1 : 0)
367
366
  end
368
367
 
369
368
  # Return *true* if this image will be stored with full alpha channel
@@ -375,7 +374,7 @@ module GD2
375
374
  # Set whether this image will be stored with full alpha channel information
376
375
  # when output as PNG.
377
376
  def save_alpha=(bool)
378
- GD2FFI.send(:gdImageSaveAlpha, image_ptr, bool ? 1 : 0)
377
+ ::GD2::GD2FFI.send(:gdImageSaveAlpha, image_ptr, bool ? 1 : 0)
379
378
  end
380
379
 
381
380
  # Return the transparent color for this image, or *nil* if none has been
@@ -387,7 +386,7 @@ module GD2
387
386
 
388
387
  # Set or unset the transparent color for this image.
389
388
  def transparent=(color)
390
- GD2FFI.send(:gdImageColorTransparent, image_ptr,
389
+ ::GD2::GD2FFI.send(:gdImageColorTransparent, image_ptr,
391
390
  color.nil? ? -1 : color2pixel(color))
392
391
  end
393
392
 
@@ -399,7 +398,7 @@ module GD2
399
398
  x2 = FFI::MemoryPointer.new(:pointer)
400
399
  y2 = FFI::MemoryPointer.new(:pointer)
401
400
 
402
- GD2FFI.send(:gdImageGetClip, image_ptr, x1, y1, x2, y2)
401
+ ::GD2::GD2FFI.send(:gdImageGetClip, image_ptr, x1, y1, x2, y2)
403
402
  [ x1.read_int, y1.read_int, x2.read_int, y2.read_int ]
404
403
  end
405
404
 
@@ -410,18 +409,18 @@ module GD2
410
409
  clip = clipping
411
410
  begin
412
411
  p clipping
413
- GD2FFI.send(:gdImageSetClip, image_ptr, x1.to_i, y1.to_i, x2.to_i, y2.to_i)
412
+ ::GD2::GD2FFI.send(:gdImageSetClip, image_ptr, x1.to_i, y1.to_i, x2.to_i, y2.to_i)
414
413
  p clipping
415
414
  yield self
416
415
  self
417
416
  ensure
418
- GD2FFI.send(:gdImageSetClip, image_ptr, *clip)
417
+ ::GD2::GD2FFI.send(:gdImageSetClip, image_ptr, *clip)
419
418
  end
420
419
  end
421
420
 
422
421
  # Return *true* if the current clipping rectangle excludes the given point.
423
422
  def clips?(x, y)
424
- GD2FFI.send(:gdImageBoundsSafe, image_ptr, x.to_i, y.to_i).zero?
423
+ ::GD2::GD2FFI.send(:gdImageBoundsSafe, image_ptr, x.to_i, y.to_i).zero?
425
424
  end
426
425
 
427
426
  # Provide a drawing environment for a block. See GD2::Canvas.
@@ -482,10 +481,10 @@ module GD2
482
481
 
483
482
  File.open(filename, 'wb') do |file|
484
483
  begin
485
- img = GD2FFI.send(write_sym, image_ptr, *args)
484
+ img = ::GD2::GD2FFI.send(write_sym, image_ptr, *args)
486
485
  file.write(img.get_bytes(0, size.get_int(0)))
487
486
  ensure
488
- GD2FFI.gdFree(img)
487
+ ::GD2::GD2FFI.gdFree(img)
489
488
  end
490
489
  end
491
490
  end
@@ -495,10 +494,10 @@ module GD2
495
494
  # implying both higher quality and larger sizes.
496
495
  def jpeg(quality = nil)
497
496
  size = FFI::MemoryPointer.new(:pointer)
498
- ptr = GD2FFI.send(:gdImageJpegPtr, image_ptr, size, quality || -1)
497
+ ptr = ::GD2::GD2FFI.send(:gdImageJpegPtr, image_ptr, size, quality || -1)
499
498
  ptr.get_bytes(0, size.get_int(0))
500
499
  ensure
501
- GD2FFI.send(:gdFree, ptr)
500
+ ::GD2::GD2FFI.send(:gdFree, ptr)
502
501
  end
503
502
 
504
503
  # Encode and return data for this image in PNG format. The +level+
@@ -506,10 +505,10 @@ module GD2
506
505
  # compression (0 = none, 1 = minimal but fast, 9 = best but slow).
507
506
  def png(level = nil)
508
507
  size = FFI::MemoryPointer.new(:pointer)
509
- ptr = GD2FFI.send(:gdImagePngPtrEx, image_ptr, size, level.to_i || -1)
508
+ ptr = ::GD2::GD2FFI.send(:gdImagePngPtrEx, image_ptr, size, level.to_i || -1)
510
509
  ptr.get_bytes(0, size.get_int(0))
511
510
  ensure
512
- GD2FFI.send(:gdFree, ptr)
511
+ ::GD2::GD2FFI.send(:gdFree, ptr)
513
512
  end
514
513
 
515
514
  # Encode and return data for this image in GIF format. Note that GIF only
@@ -518,10 +517,10 @@ module GD2
518
517
  # Image#to_indexed_color to control this conversion more precisely.
519
518
  def gif
520
519
  size = FFI::MemoryPointer.new(:pointer)
521
- ptr = GD2FFI.send(:gdImageGifPtr, image_ptr, size)
520
+ ptr = ::GD2::GD2FFI.send(:gdImageGifPtr, image_ptr, size)
522
521
  ptr.get_bytes(0, size.get_int(0))
523
522
  ensure
524
- GD2FFI.send(:gdFree, ptr)
523
+ ::GD2::GD2FFI.send(:gdFree, ptr)
525
524
  end
526
525
 
527
526
  # Encode and return data for this image in WBMP format. WBMP currently
@@ -530,20 +529,20 @@ module GD2
530
529
  # considered “background” (white).
531
530
  def wbmp(fgcolor)
532
531
  size = FFI::MemoryPointer.new(:pointer)
533
- ptr = GD2FFI.send(:gdImageWBMPPtr, image_ptr, size, color2pixel(fgcolor))
532
+ ptr = ::GD2::GD2FFI.send(:gdImageWBMPPtr, image_ptr, size, color2pixel(fgcolor))
534
533
  ptr.get_bytes(0, size.get_int(0))
535
534
  ensure
536
- GD2FFI.send(:gdFree, ptr)
535
+ ::GD2::GD2FFI.send(:gdFree, ptr)
537
536
  end
538
537
 
539
538
  # Encode and return data for this image in “.gd” format. This is an
540
539
  # internal format used by the gd library to quickly read and write images.
541
540
  def gd
542
541
  size = FFI::MemoryPointer.new(:pointer)
543
- ptr = GD2FFI.send(:gdImageGdPtr, image_ptr, size)
542
+ ptr = ::GD2::GD2FFI.send(:gdImageGdPtr, image_ptr, size)
544
543
  ptr.get_bytes(0, size.get_int(0))
545
544
  ensure
546
- GD2FFI.send(:gdFree, ptr)
545
+ ::GD2::GD2FFI.send(:gdFree, ptr)
547
546
  end
548
547
 
549
548
  # Encode and return data for this image in “.gd2” format. This is an
@@ -551,10 +550,10 @@ module GD2
551
550
  # The specified +fmt+ may be either GD2::FMT_RAW or GD2::FMT_COMPRESSED.
552
551
  def gd2(fmt = FMT_COMPRESSED, chunk_size = 0)
553
552
  size = FFI::MemoryPointer.new(:pointer)
554
- ptr = GD2FFI.send(:gdImageGd2Ptr, image_ptr, chunk_size.to_i, fmt.to_i, size)
553
+ ptr = ::GD2::GD2FFI.send(:gdImageGd2Ptr, image_ptr, chunk_size.to_i, fmt.to_i, size)
555
554
  ptr.get_bytes(0, size.get_int(0))
556
555
  ensure
557
- GD2FFI.send(:gdFree, ptr)
556
+ ::GD2::GD2FFI.send(:gdFree, ptr)
558
557
  end
559
558
 
560
559
  # Copy a portion of another image to this image. If +src_w+ and +src_h+ are
@@ -564,10 +563,10 @@ module GD2
564
563
  dst_w, dst_h, src_w = nil, src_h = nil)
565
564
  raise ArgumentError unless src_w.nil? == src_h.nil?
566
565
  if src_w
567
- GD2FFI.send(:gdImageCopyResampled, image_ptr, other.image_ptr,
566
+ ::GD2::GD2FFI.send(:gdImageCopyResampled, image_ptr, other.image_ptr,
568
567
  dst_x.to_i, dst_y.to_i, src_x.to_i, src_y.to_i, dst_w.to_i, dst_h.to_i, src_w.to_i, src_h.to_i)
569
568
  else
570
- GD2FFI.send(:gdImageCopy, image_ptr, other.image_ptr,
569
+ ::GD2::GD2FFI.send(:gdImageCopy, image_ptr, other.image_ptr,
571
570
  dst_x.to_i, dst_y.to_i, src_x.to_i, src_y.to_i, dst_w.to_i, dst_h.to_i)
572
571
  end
573
572
  self
@@ -578,7 +577,7 @@ module GD2
578
577
  # +dst_y+ arguments indicate the _center_ of the desired destination, and
579
578
  # may be floating point.
580
579
  def copy_from_rotated(other, dst_x, dst_y, src_x, src_y, w, h, angle)
581
- GD2FFI.send(:gdImageCopyRotated, image_ptr, other.image_ptr,
580
+ ::GD2::GD2FFI.send(:gdImageCopyRotated, image_ptr, other.image_ptr,
582
581
  dst_x.to_f, dst_y.to_f, src_x.to_i, src_y.to_i, w.to_i, h.to_i, angle.to_degrees.round.to_i)
583
582
  self
584
583
  end
@@ -588,7 +587,7 @@ module GD2
588
587
  # Image#copy_from; a percentage of 0.0 is a no-op. Note that alpha
589
588
  # channel information from the source image is ignored.
590
589
  def merge_from(other, dst_x, dst_y, src_x, src_y, w, h, pct)
591
- GD2FFI.send(:gdImageCopyMerge, image_ptr, other.image_ptr,
590
+ ::GD2::GD2FFI.send(:gdImageCopyMerge, image_ptr, other.image_ptr,
592
591
  dst_x.to_i, dst_y.to_i, src_x.to_i, src_y.to_i, w.to_i, h.to_i, pct.to_percent.round.to_i)
593
592
  self
594
593
  end
@@ -597,7 +596,7 @@ module GD2
597
596
  # coordinates. Note that some of the edges of the image may be lost.
598
597
  def rotate!(angle, axis_x = width / 2.0, axis_y = height / 2.0)
599
598
  ptr = self.class.create_image_ptr(width, height, alpha_blending?)
600
- GD2FFI.send(:gdImageCopyRotated, ptr, image_ptr,
599
+ ::GD2::GD2FFI.send(:gdImageCopyRotated, ptr, image_ptr,
601
600
  axis_x.to_f, axis_y.to_f, 0, 0, width.to_i, height.to_i, angle.to_degrees.round.to_i)
602
601
  init_with_image(ptr)
603
602
  end
@@ -611,7 +610,7 @@ module GD2
611
610
  # (0, 0).
612
611
  def crop!(x, y, w, h)
613
612
  ptr = self.class.create_image_ptr(w, h, alpha_blending?)
614
- GD2FFI.send(:gdImageCopy, ptr, image_ptr, 0, 0, x.to_i, y.to_i, w.to_i, h.to_i)
613
+ ::GD2::GD2FFI.send(:gdImageCopy, ptr, image_ptr, 0, 0, x.to_i, y.to_i, w.to_i, h.to_i)
615
614
  init_with_image(ptr)
616
615
  end
617
616
 
@@ -625,7 +624,7 @@ module GD2
625
624
  def uncrop!(x1, y1 = x1, x2 = x1, y2 = y1)
626
625
  ptr = self.class.create_image_ptr(x1 + width + x2, y1 + height + y2,
627
626
  alpha_blending?)
628
- GD2FFI.send(:gdImageCopy, ptr, image_ptr, x1.to_i, y1.to_i, 0, 0, width.to_i, height.to_i)
627
+ ::GD2::GD2FFI.send(:gdImageCopy, ptr, image_ptr, x1.to_i, y1.to_i, 0, 0, width.to_i, height.to_i)
629
628
  init_with_image(ptr)
630
629
  end
631
630
 
@@ -639,7 +638,7 @@ module GD2
639
638
  # shrunk as necessary without resampling.
640
639
  def resize!(w, h, resample = true)
641
640
  ptr = self.class.create_image_ptr(w, h, false)
642
- GD2FFI.send(resample ? :gdImageCopyResampled : :gdImageCopyResized,
641
+ ::GD2::GD2FFI.send(resample ? :gdImageCopyResampled : :gdImageCopyResized,
643
642
  ptr, image_ptr, 0, 0, 0, 0, w.to_i, h.to_i, width.to_i, height.to_i)
644
643
  alpha_blending = alpha_blending?
645
644
  init_with_image(ptr)
@@ -658,7 +657,7 @@ module GD2
658
657
  # Note that the original image must be square.
659
658
  def polar_transform!(radius)
660
659
  raise 'Image must be square' unless width == height
661
- ptr = GD2FFI.send(:gdImageSquareToCircle, image_ptr, radius.to_i)
660
+ ptr = ::GD2::GD2FFI.send(:gdImageSquareToCircle, image_ptr, radius.to_i)
662
661
  raise LibraryError unless ptr
663
662
  init_with_image(ptr)
664
663
  end
@@ -684,7 +683,7 @@ module GD2
684
683
  # +colors+ indicates the maximum number of palette colors to use, and
685
684
  # +dither+ controls whether dithering is used.
686
685
  def to_indexed_color(colors = MAX_COLORS, dither = true)
687
- ptr = GD2FFI.send(:gdImageCreatePaletteFromTrueColor,
686
+ ptr = ::GD2::GD2FFI.send(:gdImageCreatePaletteFromTrueColor,
688
687
  to_true_color.image_ptr, dither ? 1 : 0, colors.to_i)
689
688
  raise LibraryError unless ptr
690
689
 
@@ -766,7 +765,7 @@ module GD2
766
765
  # grey scale before the merge.
767
766
  def merge_from(other, dst_x, dst_y, src_x, src_y, w, h, pct, gray = false)
768
767
  return super(other, dst_x, dst_y, src_x, src_y, w, h, pct) unless gray
769
- GD2FFI.send(:gdImageCopyMergeGray, image_ptr, other.image_ptr,
768
+ ::GD2::GD2FFI.send(:gdImageCopyMergeGray, image_ptr, other.image_ptr,
770
769
  dst_x.to_i, dst_y.to_i, src_x.to_i, src_y.to_i, w.to_i, h.to_i, pct.to_percent.round.to_i)
771
770
  self
772
771
  end
@@ -788,7 +787,7 @@ module GD2
788
787
  end
789
788
 
790
789
  def sharpen(pct) #:nodoc:
791
- GD2FFI.send(:gdImageSharpen, image_ptr, pct.to_percent.round.to_i)
790
+ ::GD2::GD2FFI.send(:gdImageSharpen, image_ptr, pct.to_percent.round.to_i)
792
791
  self
793
792
  end
794
793
  end
data/lib/gd2/palette.rb CHANGED
@@ -103,7 +103,7 @@ module GD2
103
103
  # a color from the palette that is closest to it.
104
104
  def resolve(color)
105
105
  raise TypeError unless color.kind_of? Color
106
- c = GD2FFI.send(:gdImageColorResolveAlpha, @image.image_ptr,
106
+ c = ::GD2::GD2FFI.send(:gdImageColorResolveAlpha, @image.image_ptr,
107
107
  color.red.to_i, color.green.to_i, color.blue.to_i, color.alpha.to_i)
108
108
  c == -1 ? nil : get_color(c)
109
109
  end
@@ -112,7 +112,7 @@ module GD2
112
112
  # if the color is not presently in the palette.
113
113
  def exact(color)
114
114
  raise TypeError unless color.kind_of? Color
115
- c = GD2FFI.send(:gdImageColorExactAlpha, @image.image_ptr,
115
+ c = ::GD2::GD2FFI.send(:gdImageColorExactAlpha, @image.image_ptr,
116
116
  color.red.to_i, color.green.to_i, color.blue.to_i, color.alpha.to_i)
117
117
  c == -1 ? nil : get_color(c)
118
118
  end
@@ -128,7 +128,7 @@ module GD2
128
128
  # according to Euclidian distance.
129
129
  def closest(color)
130
130
  raise TypeError unless color.kind_of? Color
131
- c = GD2FFI.send(:gdImageColorClosestAlpha, @image.image_ptr,
131
+ c = ::GD2::GD2FFI.send(:gdImageColorClosestAlpha, @image.image_ptr,
132
132
  color.red.to_i, color.green.to_i, color.blue.to_i, color.alpha.to_i)
133
133
  c == -1 ? nil : get_color(c)
134
134
  end
@@ -137,7 +137,7 @@ module GD2
137
137
  # according to hue, whiteness, and blackness.
138
138
  def closest_hwb(color)
139
139
  raise TypeError unless color.kind_of? Color
140
- c = GD2FFI.send(:gdImageColorClosestHWB, @image.image_ptr,
140
+ c = ::GD2::GD2FFI.send(:gdImageColorClosestHWB, @image.image_ptr,
141
141
  color.red.to_i, color.green.to_i, color.blue.to_i)
142
142
  c == -1 ? nil : get_color(c)
143
143
  end
@@ -147,7 +147,7 @@ module GD2
147
147
  # raises an error for Image::IndexedColor palettes if the palette is full.
148
148
  def allocate(color)
149
149
  raise TypeError unless color.kind_of? Color
150
- c = GD2FFI.send(:gdImageColorAllocateAlpha, @image.image_ptr,
150
+ c = ::GD2::GD2FFI.send(:gdImageColorAllocateAlpha, @image.image_ptr,
151
151
  color.red.to_i, color.green.to_i, color.blue.to_i, color.alpha.to_i)
152
152
  c == -1 ? raise(Palette::PaletteFullError, 'Palette is full') :
153
153
  get_color(c)
@@ -164,7 +164,7 @@ module GD2
164
164
  def deallocate(color)
165
165
  color = exact(color) unless color.index
166
166
  return nil if color.nil? || color.index.nil?
167
- GD2FFI.send(:gdImageColorDeallocate, @image.image_ptr, color.index.to_i)
167
+ ::GD2::GD2FFI.send(:gdImageColorDeallocate, @image.image_ptr, color.index.to_i)
168
168
  nil
169
169
  end
170
170
 
@@ -0,0 +1,5 @@
1
+
2
+ module GD2
3
+ VERSION = "0.0.5"
4
+ end
5
+
data/test/canvas_tests.rb CHANGED
@@ -1,186 +1,181 @@
1
- require 'test/unit'
2
- require 'tmpdir'
3
-
4
- require 'rubygems'
5
- require 'gd2-ffij'
6
1
 
7
2
  require './test/test_helper'
8
3
 
9
4
  class CanvasTest < Test::Unit::TestCase
10
- include TestHelper
11
-
12
- def test_line
13
- image = new_image
14
- image.draw do |pen|
15
- pen.color = image.palette.resolve(GD2::Color[255, 255, 255])
16
- pen.line(64, 64, 192, 192)
17
- end
18
- assert(image == load_image('test_canvas_line.gd2'))
19
- end
20
-
21
- def test_rectangle
22
- image = new_image
23
- image.draw do |pen|
24
- pen.color = image.palette.resolve(GD2::Color[255, 255, 255])
25
- pen.rectangle(64, 64, 192, 192)
26
- end
27
- assert(image == load_image('test_canvas_rectangle.gd2'))
28
- end
29
-
30
- def test_filled_rectangle
31
- image = new_image
32
- image.draw do |pen|
33
- pen.color = image.palette.resolve(GD2::Color[255, 255, 255])
34
- pen.rectangle(64, 64, 192, 192, true)
35
- end
36
- assert(image == load_image('test_canvas_filled_rectangle.gd2'))
37
- end
38
-
39
- def test_polygon
40
- image = new_image
41
- image.draw do |pen|
42
- pen.color = image.palette.resolve(GD2::Color[255, 255, 255])
43
- pen.polygon([
44
- [ 64, 64 ],
45
- [ 192, 192 ],
46
- [ 64, 128 ]
47
- ])
48
- end
49
- assert(image == load_image('test_canvas_polygon.gd2'))
50
- end
51
-
52
- def test_filled_polygon
53
- image = new_image
54
- image.draw do |pen|
55
- pen.color = image.palette.resolve(GD2::Color[255, 255, 255])
56
- pen.polygon([
57
- [ 64, 64 ],
58
- [ 192, 192 ],
59
- [ 64, 128 ]
60
- ], true)
61
- end
62
- assert(image == load_image('test_canvas_filled_polygon.gd2'))
63
- end
64
-
65
- def test_move_to_and_line_to
66
- image = new_image
67
- image.draw do |pen|
68
- pen.color = image.palette.resolve(GD2::Color[255, 255, 255])
69
- pen.move_to(64, 64)
70
- pen.line_to(128, 128)
71
- end
72
- assert(image == load_image('test_canvas_move_to_and_line_to.gd2'))
73
- end
74
-
75
- def test_fill
76
- image = new_image
77
- image.draw do |pen|
78
- pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
79
- pen.rectangle(64, 64, 192, 192)
80
- pen.move_to(65, 65)
81
- pen.fill
82
- end
83
- assert(image == load_image('test_fill.gd2'))
84
- end
85
-
86
- def test_arc
87
- image = new_image
88
- image.draw do |pen|
89
- pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
90
- pen.arc(128, 128, 128, 128, 0..256)
91
- end
92
- assert(image == load_image('test_arc.gd2'))
93
- end
94
-
95
- def test_text
96
- image = new_image
97
- image.draw do |pen|
98
- pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
99
- pen.font = GD2::Font::TrueType[PATH_TO_FONT, 32]
100
- pen.move_to(0, 128)
101
- pen.text("HELLO")
102
- pen.move_to(256, 128)
103
- pen.text("WORLD", Math::PI)
104
- end
105
- assert(image == load_image('test_text.gd2'))
106
- end
107
-
108
- def test_text_circle
109
- image = new_image
110
- image.draw do |pen|
111
- pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
112
- pen.font = GD2::Font::TrueType[PATH_TO_FONT, 32]
113
- pen.move_to(128, 128)
114
- pen.text_circle('HELLO', 'WORLD', 100, 20, 1)
115
- end
116
- assert(image == load_image('test_text_circle.gd2'))
117
- end
118
-
119
- def test_wedge
120
- image = new_image
121
- image.draw do |pen|
122
- pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
123
- pen.wedge(128, 128, 256, 256, 0..180)
124
- end
125
- assert(image == load_image('test_wedge.gd2'))
126
- end
127
-
128
- def test_filled_wedge
129
- image = new_image
130
- image.draw do |pen|
131
- pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
132
- pen.wedge(128, 128, 256, 256, 0..180, true)
133
- end
134
- assert(image == load_image('test_filled_wedge.gd2'))
135
- end
136
-
137
- def test_ellipse
138
- image = new_image
139
- image.draw do |pen|
140
- pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
141
- pen.ellipse(128, 128, 64, 32)
142
- end
143
- assert(image == load_image('test_ellipse.gd2'))
144
- end
145
-
146
- def test_filled_ellipse
147
- image = new_image
148
- image.draw do |pen|
149
- pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
150
- pen.ellipse(128, 128, 64, 32, true)
151
- end
152
- assert(image == load_image('test_filled_ellipse.gd2'))
153
- end
154
-
155
- def test_circle
156
- image = new_image
157
- image.draw do |pen|
158
- pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
159
- pen.circle(128, 128, 128)
160
- end
161
- assert(image == load_image('test_circle.gd2'))
162
- end
163
-
164
- def test_filled_circle
165
- image = new_image
166
- image.draw do |pen|
167
- pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
168
- pen.circle(128, 128, 128, true)
169
- end
170
- assert(image == load_image('test_filled_circle.gd2'))
171
- end
172
-
173
- def test_fill_to
174
- image = new_image
175
- image.draw do |pen|
176
- blue = image.palette.resolve(GD2::Color[32, 64, 128])
177
- red = image.palette.resolve(GD2::Color[255, 0, 0])
178
- pen.color = blue
179
- pen.arc(128, 128, 256, 64, 0..(Math::PI))
180
- pen.color = red
181
- pen.move(128, 128)
182
- pen.fill_to(blue)
183
- end
184
- assert(image == load_image('test_fill_to.gd2'))
185
- end
5
+ include TestHelper
6
+
7
+ def test_line
8
+ image = new_image
9
+ image.draw do |pen|
10
+ pen.color = image.palette.resolve(GD2::Color[255, 255, 255])
11
+ pen.line(64, 64, 192, 192)
12
+ end
13
+ assert(image == load_image('test_canvas_line.gd2'))
14
+ end
15
+
16
+ def test_rectangle
17
+ image = new_image
18
+ image.draw do |pen|
19
+ pen.color = image.palette.resolve(GD2::Color[255, 255, 255])
20
+ pen.rectangle(64, 64, 192, 192)
21
+ end
22
+ assert(image == load_image('test_canvas_rectangle.gd2'))
23
+ end
24
+
25
+ def test_filled_rectangle
26
+ image = new_image
27
+ image.draw do |pen|
28
+ pen.color = image.palette.resolve(GD2::Color[255, 255, 255])
29
+ pen.rectangle(64, 64, 192, 192, true)
30
+ end
31
+ assert(image == load_image('test_canvas_filled_rectangle.gd2'))
32
+ end
33
+
34
+ def test_polygon
35
+ image = new_image
36
+ image.draw do |pen|
37
+ pen.color = image.palette.resolve(GD2::Color[255, 255, 255])
38
+ pen.polygon([
39
+ [ 64, 64 ],
40
+ [ 192, 192 ],
41
+ [ 64, 128 ]
42
+ ])
43
+ end
44
+ assert(image == load_image('test_canvas_polygon.gd2'))
45
+ end
46
+
47
+ def test_filled_polygon
48
+ image = new_image
49
+ image.draw do |pen|
50
+ pen.color = image.palette.resolve(GD2::Color[255, 255, 255])
51
+ pen.polygon([
52
+ [ 64, 64 ],
53
+ [ 192, 192 ],
54
+ [ 64, 128 ]
55
+ ], true)
56
+ end
57
+ assert(image == load_image('test_canvas_filled_polygon.gd2'))
58
+ end
59
+
60
+ def test_move_to_and_line_to
61
+ image = new_image
62
+ image.draw do |pen|
63
+ pen.color = image.palette.resolve(GD2::Color[255, 255, 255])
64
+ pen.move_to(64, 64)
65
+ pen.line_to(128, 128)
66
+ end
67
+ assert(image == load_image('test_canvas_move_to_and_line_to.gd2'))
68
+ end
69
+
70
+ def test_fill
71
+ image = new_image
72
+ image.draw do |pen|
73
+ pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
74
+ pen.rectangle(64, 64, 192, 192)
75
+ pen.move_to(65, 65)
76
+ pen.fill
77
+ end
78
+ assert(image == load_image('test_fill.gd2'))
79
+ end
80
+
81
+ def test_arc
82
+ image = new_image
83
+ image.draw do |pen|
84
+ pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
85
+ pen.arc(128, 128, 128, 128, 0..256)
86
+ end
87
+ assert(image == load_image('test_arc.gd2'))
88
+ end
89
+
90
+ def test_text
91
+ image = new_image
92
+ image.draw do |pen|
93
+ pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
94
+ pen.font = GD2::Font::TrueType[PATH_TO_FONT, 32]
95
+ pen.move_to(0, 128)
96
+ pen.text("HELLO")
97
+ pen.move_to(256, 128)
98
+ pen.text("WORLD", Math::PI)
99
+ end
100
+ assert(image == load_image('test_text.gd2'))
101
+ end
102
+
103
+ def test_text_circle
104
+ image = new_image
105
+ image.draw do |pen|
106
+ pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
107
+ pen.font = GD2::Font::TrueType[PATH_TO_FONT, 32]
108
+ pen.move_to(128, 128)
109
+ pen.text_circle('HELLO', 'WORLD', 100, 20, 1)
110
+ end
111
+ assert(image == load_image('test_text_circle.gd2'))
112
+ end
113
+
114
+ def test_wedge
115
+ image = new_image
116
+ image.draw do |pen|
117
+ pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
118
+ pen.wedge(128, 128, 256, 256, 0..180)
119
+ end
120
+ assert(image == load_image('test_wedge.gd2'))
121
+ end
122
+
123
+ def test_filled_wedge
124
+ image = new_image
125
+ image.draw do |pen|
126
+ pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
127
+ pen.wedge(128, 128, 256, 256, 0..180, true)
128
+ end
129
+ assert(image == load_image('test_filled_wedge.gd2'))
130
+ end
131
+
132
+ def test_ellipse
133
+ image = new_image
134
+ image.draw do |pen|
135
+ pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
136
+ pen.ellipse(128, 128, 64, 32)
137
+ end
138
+ assert(image == load_image('test_ellipse.gd2'))
139
+ end
140
+
141
+ def test_filled_ellipse
142
+ image = new_image
143
+ image.draw do |pen|
144
+ pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
145
+ pen.ellipse(128, 128, 64, 32, true)
146
+ end
147
+ assert(image == load_image('test_filled_ellipse.gd2'))
148
+ end
149
+
150
+ def test_circle
151
+ image = new_image
152
+ image.draw do |pen|
153
+ pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
154
+ pen.circle(128, 128, 128)
155
+ end
156
+ assert(image == load_image('test_circle.gd2'))
157
+ end
158
+
159
+ def test_filled_circle
160
+ image = new_image
161
+ image.draw do |pen|
162
+ pen.color = image.palette.resolve(GD2::Color[32, 64, 128])
163
+ pen.circle(128, 128, 128, true)
164
+ end
165
+ assert(image == load_image('test_filled_circle.gd2'))
166
+ end
167
+
168
+ def test_fill_to
169
+ image = new_image
170
+ image.draw do |pen|
171
+ blue = image.palette.resolve(GD2::Color[32, 64, 128])
172
+ red = image.palette.resolve(GD2::Color[255, 0, 0])
173
+ pen.color = blue
174
+ pen.arc(128, 128, 256, 64, 0..(Math::PI))
175
+ pen.color = red
176
+ pen.move(128, 128)
177
+ pen.fill_to(blue)
178
+ end
179
+ assert(image == load_image('test_fill_to.gd2'))
180
+ end
186
181
  end