contrek 1.4.0 → 1.4.2

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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -1
  3. data/Gemfile.lock +4 -1
  4. data/PERFORMANCE.md +40 -4
  5. data/README.md +211 -59
  6. data/contrek.gemspec +1 -0
  7. data/ext/cpp_polygon_finder/PolygonFinder/src/ContrekApi.h +37 -11
  8. data/ext/cpp_polygon_finder/PolygonFinder/src/Tests.cpp +53 -144
  9. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/RawBitmap.cpp +14 -2
  10. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/RawBitmap.h +1 -0
  11. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/streaming/AsciiSource.cpp +69 -0
  12. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/streaming/AsciiSource.h +34 -0
  13. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/streaming/PngSource.cpp +108 -0
  14. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/streaming/PngSource.h +40 -0
  15. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/streaming/RasterSource.h +22 -0
  16. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/streaming/RasterStreamer.h +92 -0
  17. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/FinderUtils.cpp +6 -8
  18. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/PolygonFinder.cpp +8 -2
  19. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/PolygonFinder.h +4 -1
  20. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/Finder.cpp +7 -0
  21. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/Poolable.h +1 -0
  22. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/Tile.cpp +3 -3
  23. data/ext/cpp_polygon_finder/cpp_polygon_finder.cpp +47 -0
  24. data/lib/contrek/bitmaps/bitmap.rb +2 -2
  25. data/lib/contrek/bitmaps/chunky_bitmap.rb +23 -8
  26. data/lib/contrek/bitmaps/png_bitmap.rb +4 -0
  27. data/lib/contrek/bitmaps/rgba_bitmap.rb +50 -0
  28. data/lib/contrek/bitmaps/streaming/raster_streamer.rb +66 -0
  29. data/lib/contrek/bitmaps/streaming/sources/ascii.rb +33 -0
  30. data/lib/contrek/bitmaps/streaming/sources/base.rb +27 -0
  31. data/lib/contrek/bitmaps/streaming/sources/png.rb +105 -0
  32. data/lib/contrek/finder/concurrent/finder.rb +5 -3
  33. data/lib/contrek/finder/polygon_finder.rb +8 -4
  34. data/lib/contrek/version.rb +1 -1
  35. data/lib/contrek.rb +5 -0
  36. metadata +26 -1
@@ -10,10 +10,13 @@ module Contrek
10
10
  @options = {versus: :a}.merge(options)
11
11
  sanitize_options
12
12
  @source_bitmap = bitmap
13
+ @processing_height = (options[:processing_height] || bitmap.h).abs
14
+ raise ArgumentError, "Option processing_height must be less or equal than image height!" if @processing_height > bitmap.h
15
+
13
16
  @matcher = matcher
14
17
 
15
18
  @test_bitmap = test_bitmap
16
- @node_cluster = NodeCluster.new(@source_bitmap.h, @options)
19
+ @node_cluster = NodeCluster.new(@processing_height, @options)
17
20
  @reports = {}
18
21
 
19
22
  # 1 finds matching blocks
@@ -51,10 +54,11 @@ module Contrek
51
54
  groups_names: @node_cluster.root_nodes.map(&:name).join,
52
55
  benchmarks: format_benchmarks,
53
56
  width: @source_bitmap.w,
54
- height: @source_bitmap.h,
57
+ height: @processing_height,
55
58
  treemap: (@node_cluster.treemap if @options.has_key?(:treemap)),
56
59
  options: @ori_options,
57
- versus: @options[:versus]
60
+ versus: @options[:versus],
61
+ number_of_threads: 0
58
62
  }
59
63
  Result.new(@node_cluster.polygons, metadata)
60
64
  end
@@ -102,7 +106,7 @@ module Contrek
102
106
  matching = false
103
107
  min_x = start_x
104
108
  max_x = start_x
105
- @source_bitmap.scan(start_x: start_x, end_x: end_x) do |x, y, color|
109
+ @source_bitmap.scan(start_x: start_x, end_x: end_x, end_y: @processing_height) do |x, y, color|
106
110
  # puts "#{x} #{y}"
107
111
  if @matcher.match?(color) && matching == false
108
112
  min_x = x
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Contrek
4
- VERSION = "1.4.0"
4
+ VERSION = "1.4.2"
5
5
  end
data/lib/contrek.rb CHANGED
@@ -5,11 +5,16 @@ require "contrek/bitmaps/painting"
5
5
  require "contrek/bitmaps/rendering"
6
6
  require "contrek/bitmaps/bitmap"
7
7
  require "contrek/bitmaps/chunky_bitmap"
8
+ require "contrek/bitmaps/rgba_bitmap"
8
9
  require "contrek/bitmaps/png_bitmap"
9
10
  require "contrek/bitmaps/raw_bitmap"
10
11
  require "contrek/bitmaps/rgb_color"
11
12
  require "contrek/bitmaps/rgb_cpp_color"
12
13
  require "contrek/bitmaps/sample_generator"
14
+ require "contrek/bitmaps/streaming/raster_streamer"
15
+ require "contrek/bitmaps/streaming/sources/base"
16
+ require "contrek/bitmaps/streaming/sources/ascii"
17
+ require "contrek/bitmaps/streaming/sources/png"
13
18
  require "contrek/shared/result"
14
19
  require "contrek/finder/bounds"
15
20
  require "contrek/finder/list"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contrek
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emanuele Cesaroni
@@ -99,6 +99,20 @@ dependencies:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
101
  version: 1.3.5
102
+ - !ruby/object:Gem::Dependency
103
+ name: ffi
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '1.17'
109
+ type: :runtime
110
+ prerelease: false
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '1.17'
102
116
  - !ruby/object:Gem::Dependency
103
117
  name: rice
104
118
  requirement: !ruby/object:Gem::Requirement
@@ -152,6 +166,12 @@ files:
152
166
  - ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/RemoteFastPngBitmap.h
153
167
  - ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/spng.c
154
168
  - ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/spng.h
169
+ - ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/streaming/AsciiSource.cpp
170
+ - ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/streaming/AsciiSource.h
171
+ - ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/streaming/PngSource.cpp
172
+ - ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/streaming/PngSource.h
173
+ - ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/streaming/RasterSource.h
174
+ - ext/cpp_polygon_finder/PolygonFinder/src/polygon/bitmaps/streaming/RasterStreamer.h
155
175
  - ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/FinderUtils.cpp
156
176
  - ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/FinderUtils.h
157
177
  - ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/List.cpp
@@ -252,7 +272,12 @@ files:
252
272
  - lib/contrek/bitmaps/rendering.rb
253
273
  - lib/contrek/bitmaps/rgb_color.rb
254
274
  - lib/contrek/bitmaps/rgb_cpp_color.rb
275
+ - lib/contrek/bitmaps/rgba_bitmap.rb
255
276
  - lib/contrek/bitmaps/sample_generator.rb
277
+ - lib/contrek/bitmaps/streaming/raster_streamer.rb
278
+ - lib/contrek/bitmaps/streaming/sources/ascii.rb
279
+ - lib/contrek/bitmaps/streaming/sources/base.rb
280
+ - lib/contrek/bitmaps/streaming/sources/png.rb
256
281
  - lib/contrek/cpp/cpp_concurrent_finder.rb
257
282
  - lib/contrek/cpp/cpp_concurrent_horizontal_merger.rb
258
283
  - lib/contrek/cpp/cpp_concurrent_merger.rb