gray_scott_gtk3 0.5.1 → 0.5.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e2848b4f727b12fa95dcba0afe83643a216201c678ae94918c0f53923976a847
4
- data.tar.gz: c346e077c51659b64e2485428fd0aeb657601b5cda1bc8a4777934b9668374b4
3
+ metadata.gz: 29d8ff376e95aff2c77e30e15ba230413677c076ad1038c32eb1e20f260698b9
4
+ data.tar.gz: 4bc65069599f84d94ea987e756d5dc29a88bdacd27b10bf4f6ed9228aaf69d9c
5
5
  SHA512:
6
- metadata.gz: 680f450887b2c54379e1887304c628cbc011dd216d2dd25daba0fcb416269bce2a092c8600470867a6df857843e4fdd10c3105b683fd2a858858f0a594f5bcd6
7
- data.tar.gz: 46482327777a55e15c78c02365ea1895a6fa4d6b025df03a59b98f495c746dc214567a7196d9f455d2bd6919dc8d7d0ad39911da1c13d320384ce84c24631890
6
+ metadata.gz: 2826a66e3db9d15ebc0cfa3fe199b77ceb28c241bd0807b2c730836316199994c7f67c6df57bc10920e313feded2ba1c4830cab1d9a7e69b8c5b7ef3052ba830
7
+ data.tar.gz: 3a27424b1e0d0127903e54778b975906c4176a882223c913ac80639c449b8a1de7f44d1f1d0fb62447af52c28ca6b1fe63efb187de3e0b67175db94228c59352
data/.gitignore CHANGED
@@ -1,55 +1,7 @@
1
1
  *.gem
2
2
  *.rbc
3
3
  *.glade~
4
- /.config
5
4
  /coverage/
6
- /InstalledFiles
7
- /pkg/
8
- /spec/reports/
9
- /spec/examples.txt
10
- /test/tmp/
11
- /test/version_tmp/
12
5
  /tmp/
13
-
14
- # Used by dotenv library to load environment variables.
15
- # .env
16
-
17
- ## Specific to RubyMotion:
18
- .dat*
19
- .repl_history
20
- build/
21
- *.bridgesupport
22
- build-iPhoneOS/
23
- build-iPhoneSimulator/
24
-
25
- ## Specific to RubyMotion (use of CocoaPods):
26
- #
27
- # We recommend against adding the Pods directory to your .gitignore. However
28
- # you should judge for yourself, the pros and cons are mentioned at:
29
- # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
30
- #
31
- # vendor/Pods/
32
-
33
- ## Documentation cache and generated files:
34
- /.yardoc/
35
- /_yardoc/
36
- /doc/
37
- /rdoc/
38
-
39
- ## Environment normalization:
40
- /.bundle/
41
- /vendor/bundle
42
- /lib/bundler/man/
43
-
44
- # for a library or gem, you might want to ignore these files since the code is
45
- # intended to run in multiple environments; otherwise, check them in:
46
6
  Gemfile.lock
47
- # .ruby-version
48
- # .ruby-gemset
49
-
50
- # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
51
- .rvmrc
52
-
53
- # rspec
54
- /spec/reports/
55
7
  .rspec_status
@@ -0,0 +1,14 @@
1
+ dist: bionic
2
+ services:
3
+ - xvfb
4
+ language: ruby
5
+ rvm:
6
+ - 2.7
7
+ install:
8
+ - sudo apt-get install -y libgtk-3-dev
9
+ - bundle install
10
+ script: bundle exec rake spec
11
+ notifications:
12
+ email:
13
+ on_success: never
14
+ on_failure: change
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
data/README.md CHANGED
@@ -1,52 +1,40 @@
1
1
  # Gray-Scott
2
2
 
3
- ![screenshot](https://raw.githubusercontent.com/kojix2/Gray-Scott/screenshot/screenshot/screenshot.gif)
3
+ ![Gem](https://img.shields.io/gem/v/gray_scott_gtk3)
4
+ ![build status](https://travis-ci.com/kojix2/Gray-Scott.svg?branch=master)
4
5
 
5
- ## Requirements
6
+ Ruby implementation of the Reaction diffusion system (Gray-Scott model).
6
7
 
7
- * Ruby
8
- * Numo/NArray (CPU)
9
- * Cumo/NArray (GPU)
10
- * Ruby/Gtk3
8
+ ![screenshot](https://raw.githubusercontent.com/kojix2/Gray-Scott/screenshot/screenshot/screenshot.gif)
11
9
 
12
10
  ## Installation
13
11
 
14
- $ gem install gray_scott_gtk3
12
+ ```bash
13
+ gem install gray_scott_gtk3
14
+ ```
15
15
 
16
16
  ## Usage
17
17
 
18
- $ grayscott
19
-
20
- $ grayscott -w 256 -h 256 # size of model. display is fixed to 512 x 512 pixels.
21
-
22
- ## Usage with terminal(example)
23
-
24
- $ bundle install
25
-
26
- $ bundle exec bin/console
27
-
28
- ```ruby
29
- c = GrayScott::Controller.new 'resources/', width:1024, height:1024
18
+ ```bash
19
+ grayscott
20
+ ```
30
21
 
31
- # custom feed / kill ratio
32
- na = Numo::SFloat.new(1024,1).seq + 10 # avoid zero
33
- na = na * Numo::SFloat.ones(1, 1024)
34
- na = na / na.max
35
- f = na * 0.05
36
- k = na.transpose * 0.06 + 0.01
37
- c.model.f = f
38
- c.model.k = k
39
- c.model.v.rand(0.0, 0.15)
40
- c.color = 'reverse_green' # colorful is slow.
41
- Gtk.main
22
+ ```bash
23
+ grayscott --help
24
+ # Usage: grayscott [options]
25
+ # -h, --height val height of the model
26
+ # -w, --width val width of the model
27
+ # -g, --gpu use GPU(Cumo)
42
28
  ```
43
29
 
30
+ NOTE : You can set the width and height of the model, but the width and height of the window is fixed at 512 x 512 pixels.
31
+
44
32
  ![screenshot](https://raw.githubusercontent.com/kojix2/Gray-Scott/screenshot/screenshot/reverse-green.png)
45
33
 
46
34
  ## Known issue
47
35
 
48
36
  Glib::Timeout.add(number_of_seconds)
49
- If processing can not be completed within the time, it will not be displayed.
37
+ If processing can not be completed within the time, it will not be displayed.
50
38
  In this case, you should increase the number of seconds.
51
39
 
52
40
  ## Contributing
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
 
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'gray_scott_gtk3'
@@ -1,18 +1,17 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'optparse'
4
5
 
5
- opt = {}
6
+ opt = { width: 256, height: 256 }
6
7
  OptionParser.new do |op|
7
- op.on('-h val', '--height', 'height of the model') { |v| opt[:height] = v.to_i }
8
- op.on('-w val', '--width', 'width of the model') { |v| opt[:width] = v.to_i }
9
- op.on('-g', '--gpu', 'use GPU(Cumo)'){ |v| opt[:gpu] = v }
8
+ op.on('-h val', '--height', 'height of the model', Integer) { |v| opt[:height] = v }
9
+ op.on('-w val', '--width', 'width of the model', Integer) { |v| opt[:width] = v }
10
+ op.on('-g', '--gpu', 'use GPU(Cumo)') { |v| opt[:gpu] = v }
10
11
  op.parse!(ARGV)
11
12
  end
12
13
 
13
- if opt[:gpu]
14
- require 'cumo/narray'
15
- end
14
+ require 'cumo/narray' if opt[:gpu]
16
15
  opt.delete(:gpu)
17
16
 
18
17
  require 'gray_scott'
@@ -21,7 +20,7 @@ module GrayScott
21
20
  class << self
22
21
  def run(opt)
23
22
  xml_path = File.expand_path('../resources/', __dir__)
24
- Controller.new(xml_path, opt)
23
+ Controller.new(xml_path, height: opt[:height], width: opt[:width])
25
24
  Gtk.main
26
25
  end
27
26
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'gray_scott/version'
@@ -12,8 +14,6 @@ Gem::Specification.new do |spec|
12
14
  spec.description = 'Reaction diffusion system (Gray-Scott model).'
13
15
  spec.homepage = 'https://github.com/kojix2/Gray-Scott'
14
16
 
15
- # Specify which files should be added to the gem when it is released.
16
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
17
17
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
18
18
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
19
  end
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_dependency 'gtk3'
25
25
  spec.add_dependency 'numo-narray'
26
26
 
27
- spec.add_development_dependency 'bundler', '~> 1.17'
28
- spec.add_development_dependency 'rake', '~> 10.0'
27
+ spec.add_development_dependency 'bundler', '~> 2.0'
28
+ spec.add_development_dependency 'rake', '>= 12.3.3'
29
29
  spec.add_development_dependency 'rspec'
30
30
  end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'gtk3'
2
4
 
3
- unless Object.const_defined? :Cumo
5
+ if Object.const_defined? :Cumo
6
+ Xumo = Cumo
7
+ else
4
8
  require 'numo/narray'
5
9
  Xumo = Numo
6
- else
7
- Xumo = Cumo
8
10
  end
9
11
 
10
12
  module XumoShortHand
@@ -16,11 +18,11 @@ module XumoShortHand
16
18
  end
17
19
 
18
20
  require 'gray_scott/model'
21
+ require 'gray_scott/color'
19
22
  require 'gray_scott/controller'
20
- require 'gray_scott/laplacian'
23
+ require 'gray_scott/utils/math'
21
24
  require 'gray_scott/version'
22
25
 
23
26
  module GrayScott
24
27
  class Error < StandardError; end
25
- # Your code goes here...
26
28
  end
@@ -0,0 +1,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GrayScott
4
+ module Color
5
+ include XumoShortHand
6
+
7
+ def colorize(ar, color_type)
8
+ case color_type
9
+ when 'colorful'
10
+ hsv2rgb(ar)
11
+ when 'reverse-colorful'
12
+ hsv2rgb(1.0 - ar)
13
+ when 'red'
14
+ red(ar)
15
+ when 'green'
16
+ green(ar)
17
+ when 'blue'
18
+ blue(ar)
19
+ when 'reverse-red'
20
+ reverse_red(ar)
21
+ when 'reverse-green'
22
+ reverse_green(ar)
23
+ when 'reverse-blue'
24
+ reverse_blue(ar)
25
+ when 'grayscale'
26
+ grayscale(ar)
27
+ end
28
+ end
29
+
30
+ # speed
31
+ def uInt8_dstack(ar)
32
+ x = UInt8.zeros(*ar[0].shape, 3)
33
+ x[true, true, 0] = ar[0]
34
+ x[true, true, 1] = ar[1]
35
+ x[true, true, 2] = ar[2]
36
+ x
37
+ end
38
+
39
+ def hsv2rgb(h)
40
+ i = UInt8.cast(h * 6)
41
+ f = (h * 6.0) - i
42
+ p = UInt8.zeros(*h.shape)
43
+ v = UInt8.new(*h.shape).fill 255
44
+ q = (1.0 - f) * 256
45
+ t = f * 256
46
+ rgb = UInt8.zeros(*h.shape, 3)
47
+ t = UInt8.cast(t)
48
+ i = uInt8_dstack([i, i, i])
49
+ rgb[i.eq 0] = uInt8_dstack([v, t, p])[i.eq 0]
50
+ rgb[i.eq 1] = uInt8_dstack([q, v, p])[i.eq 1]
51
+ rgb[i.eq 2] = uInt8_dstack([p, v, t])[i.eq 2]
52
+ rgb[i.eq 3] = uInt8_dstack([p, q, v])[i.eq 3]
53
+ rgb[i.eq 4] = uInt8_dstack([t, p, v])[i.eq 4]
54
+ rgb[i.eq 5] = uInt8_dstack([v, p, q])[i.eq 5]
55
+ rgb
56
+ end
57
+
58
+ def red(ar)
59
+ uint8_zeros_256(0, ar)
60
+ end
61
+
62
+ def green(ar)
63
+ uint8_zeros_256(1, ar)
64
+ end
65
+
66
+ def blue(ar)
67
+ uint8_zeros_256(2, ar)
68
+ end
69
+
70
+ def reverse_red(ar)
71
+ uint8_zeros_256(0, (1.0 - ar))
72
+ end
73
+
74
+ def reverse_green(ar)
75
+ uint8_zeros_256(1, (1.0 - ar))
76
+ end
77
+
78
+ def reverse_blue(ar)
79
+ uint8_zeros_256(2, (1.0 - ar))
80
+ end
81
+
82
+ def grayscale(ar)
83
+ d = ar * 255
84
+ uInt8_dstack([d, d, d])
85
+ end
86
+
87
+ private
88
+
89
+ def uint8_zeros_256(ch, ar)
90
+ d = UInt8.zeros(*ar.shape, 3)
91
+ d[true, true, ch] = UInt8.cast(ar * 256)
92
+ d
93
+ end
94
+ end
95
+ end
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'controller/aboutdialog'
2
4
 
3
5
  module GrayScott
4
6
  class Controller
7
+ include Color
5
8
  include XumoShortHand
6
9
  attr_accessor :resource_dir, :height, :width, :model, :color
7
10
 
@@ -12,7 +15,7 @@ module GrayScott
12
15
  @model = Model.new(height: height, width: width)
13
16
  @show_u = false
14
17
  @color = 'colorful'
15
- @frames = 1
18
+ @frames = 5
16
19
  @msec = 40
17
20
 
18
21
  builder = Gtk::Builder.new
@@ -48,13 +51,12 @@ module GrayScott
48
51
  @msec = msec.value.to_i
49
52
  end
50
53
 
51
-
52
54
  def display
53
- @gimage.pixbuf = to_pixbuf(@show_u ? model.u : model.v)
55
+ @gimage.pixbuf = create_pixbuf(colorize((@show_u ? model.u : model.v), @color))
54
56
  end
55
57
 
56
58
  def display_legend
57
- legend = (SFloat.new(1, 512).seq * SFloat.ones(16, 1)) / 512
59
+ legend = (SFloat.new(1, 512).seq * SFloat.ones(16, 1)) / 512.0
58
60
  data = colorize(legend, @color)
59
61
  string = data.to_string
60
62
  pixbuf = GdkPixbuf::Pixbuf.new data: string, width: 512, height: 16
@@ -93,7 +95,7 @@ module GrayScott
93
95
  if dialog.run == :accept
94
96
  filename = dialog.filename
95
97
  str = File.read(filename)
96
- # todo: check model
98
+ # TODO: check model
97
99
  @model = Marshal.load(str)
98
100
  display
99
101
  end
@@ -158,60 +160,13 @@ module GrayScott
158
160
  display unless doing_now?
159
161
  end
160
162
 
161
- def colorize(ar, color_type)
162
- case color_type
163
- when 'colorful'
164
- hsv2rgb(ar)
165
- when 'reverse-colorful'
166
- hsv2rgb(1.0 - ar)
167
- when 'red'
168
- uint8_zeros_256(0, ar)
169
- when 'green'
170
- uint8_zeros_256(1, ar)
171
- when 'blue'
172
- uint8_zeros_256(2, ar)
173
- when 'reverse-red'
174
- uint8_zeros_256(0, (1.0 - ar))
175
- when 'reverse-green'
176
- uint8_zeros_256(1, (1.0 - ar))
177
- when 'reverse-blue'
178
- uint8_zeros_256(2, (1.0 - ar))
179
- end
180
- end
181
-
182
- def uint8_zeros_256(ch, ar)
183
- d = UInt8.zeros(*ar.shape, 3)
184
- d[true, true, ch] = UInt8.cast(ar * 256)
185
- d
186
- end
187
-
188
- def to_pixbuf(ar, color_type = @color)
189
- data = colorize(ar, color_type).to_string
163
+ def create_pixbuf(ar)
164
+ data = ar.to_string
190
165
  height, width = ar.shape
191
166
  pixbuf = GdkPixbuf::Pixbuf.new data: data, width: width, height: height
192
167
  pixbuf.scale_simple 512, 512, :bilinear
193
168
  end
194
169
 
195
- def hsv2rgb(h)
196
- height, width = h.shape
197
- i = UInt8.cast(h * 6)
198
- f = (h * 6.0) - i
199
- p = UInt8.zeros height, width, 1
200
- v = UInt8.new(height, width, 1).fill 255
201
- q = (1.0 - f) * 256
202
- t = f * 256
203
- rgb = UInt8.zeros height, width, 3
204
- t = UInt8.cast(t).expand_dims(2)
205
- i = UInt8.dstack([i, i, i])
206
- rgb[i.eq 0] = UInt8.dstack([v, t, p])[i.eq 0]
207
- rgb[i.eq 1] = UInt8.dstack([q, v, p])[i.eq 1]
208
- rgb[i.eq 2] = UInt8.dstack([p, v, t])[i.eq 2]
209
- rgb[i.eq 3] = UInt8.dstack([p, q, v])[i.eq 3]
210
- rgb[i.eq 4] = UInt8.dstack([t, p, v])[i.eq 4]
211
- rgb[i.eq 5] = UInt8.dstack([v, p, q])[i.eq 5]
212
- rgb
213
- end
214
-
215
170
  def doing_now?
216
171
  @doing_now
217
172
  end
@@ -1,14 +1,21 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GrayScott
2
4
  class Controller
3
5
  class AboutDialog
4
6
  def initialize(resource_dir)
5
- @a = Gtk::AboutDialog.new
6
- @a.program_name = 'Gray-Scott'
7
- @a.logo = GdkPixbuf::Pixbuf.new(file: File.join(resource_dir, 'about_icon.png'))
8
- @a.authors = ['kojix2']
9
- @a.version = GrayScott::VERSION
10
- @a.run
11
- @a.destroy
7
+ Gtk::AboutDialog.new.tap do |d|
8
+ d.program_name = 'Gray-Scott'
9
+ d.comments = 'Reaction diffusion system'
10
+ d.logo = GdkPixbuf::Pixbuf.new(file: File.join(resource_dir, 'about_icon.png'))
11
+ d.copyright = 'Copyright (C) kojix2'
12
+ d.authors = ['kojix2']
13
+ d.version = GrayScott::VERSION
14
+ d.website = 'https://github.com/kojix2/Gray-Scott'
15
+ d.website_label = 'Github kojix2/Gray-Scott'
16
+ d.run
17
+ d.destroy
18
+ end
12
19
  end
13
20
  end
14
21
  end
@@ -1,11 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GrayScott
4
+ # Gray-Scott model
2
5
  class Model
3
- include XumoShortHand
6
+ include XumoShortHand
4
7
 
5
8
  Dx = 0.01
9
+
10
+ # Delta t is the change in time for each iteration
6
11
  Dt = 1
7
12
 
13
+ # diffusion rate for U
8
14
  Du = 2e-5
15
+
16
+ # diffusion rate for V
9
17
  Dv = 1e-5
10
18
 
11
19
  attr_accessor :f, :k, :u, :v
@@ -13,10 +21,14 @@ module GrayScott
13
21
  def initialize(width: 256, height: 256)
14
22
  # Feed rate
15
23
  @f = 0.04
24
+
16
25
  # Kill rate
17
26
  @k = 0.06
18
27
 
28
+ # concentration of U
19
29
  @u = SFloat.ones height, width
30
+
31
+ # concentration of V
20
32
  @v = SFloat.zeros height, width
21
33
  end
22
34
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GrayScott
2
4
  module Utils
3
5
  module Math
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GrayScott
2
- VERSION = '0.5.1'.freeze
4
+ VERSION = '0.5.6'
3
5
  end
@@ -1,24 +1,25 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <!-- Generated with glade 3.22.1 -->
2
+ <!-- Generated with glade 3.36.0 -->
3
3
  <interface>
4
4
  <requires lib="gtk+" version="3.16"/>
5
5
  <object class="GtkAdjustment" id="f">
6
- <property name="upper">0.10000000000000001</property>
7
- <property name="value">0.040000000000000001</property>
6
+ <property name="upper">0.1</property>
7
+ <property name="value">0.04</property>
8
8
  <property name="step_increment">0.01</property>
9
9
  <property name="page_increment">0.01</property>
10
10
  <signal name="value-changed" handler="on_f_changed" swapped="no"/>
11
11
  </object>
12
12
  <object class="GtkAdjustment" id="frames">
13
+ <property name="lower">1</property>
13
14
  <property name="upper">1000</property>
14
- <property name="value">1</property>
15
+ <property name="value">5</property>
15
16
  <property name="step_increment">1</property>
16
17
  <property name="page_increment">10</property>
17
18
  <signal name="value-changed" handler="on_frames_changed" swapped="no"/>
18
19
  </object>
19
20
  <object class="GtkAdjustment" id="k">
20
- <property name="upper">0.10000000000000001</property>
21
- <property name="value">0.059999999999999998</property>
21
+ <property name="upper">0.1</property>
22
+ <property name="value">0.06</property>
22
23
  <property name="step_increment">0.01</property>
23
24
  <property name="page_increment">0.01</property>
24
25
  <signal name="value-changed" handler="on_k_changed" swapped="no"/>
@@ -34,7 +35,7 @@
34
35
  <property name="upper">1</property>
35
36
  <property name="value">0.5</property>
36
37
  <property name="step_increment">0.01</property>
37
- <property name="page_increment">0.10000000000000001</property>
38
+ <property name="page_increment">0.1</property>
38
39
  </object>
39
40
  <object class="GtkAdjustment" id="pen_radius">
40
41
  <property name="lower">1</property>
@@ -49,9 +50,6 @@
49
50
  <property name="title" translatable="yes">Gray-Scott model</property>
50
51
  <property name="resizable">False</property>
51
52
  <signal name="destroy" handler="main_quit" swapped="no"/>
52
- <child>
53
- <placeholder/>
54
- </child>
55
53
  <child>
56
54
  <object class="GtkBox">
57
55
  <property name="visible">True</property>
@@ -254,6 +252,7 @@
254
252
  <property name="label" translatable="yes">save</property>
255
253
  <property name="use_underline">True</property>
256
254
  <property name="stock_id">gtk-save</property>
255
+ <signal name="clicked" handler="on_save_clicked" swapped="no"/>
257
256
  </object>
258
257
  <packing>
259
258
  <property name="expand">False</property>
@@ -276,7 +275,7 @@
276
275
  </packing>
277
276
  </child>
278
277
  <child>
279
- <object class="GtkToggleToolButton">
278
+ <object class="GtkToggleToolButton" id="execute_button">
280
279
  <property name="visible">True</property>
281
280
  <property name="can_focus">False</property>
282
281
  <property name="tooltip_text" translatable="yes">execute</property>
@@ -478,6 +477,21 @@ applications-graphics
478
477
  <property name="position">0</property>
479
478
  </packing>
480
479
  </child>
480
+ <child>
481
+ <object class="GtkComboBoxText" id="uv_combobox">
482
+ <property name="visible">True</property>
483
+ <property name="can_focus">False</property>
484
+ <property name="active">1</property>
485
+ <items>
486
+ <item translatable="yes">U</item>
487
+ <item translatable="yes">V</item>
488
+ </items>
489
+ <signal name="changed" handler="on_uv_combobox_changed" swapped="no"/>
490
+ </object>
491
+ <packing>
492
+ <property name="position">0</property>
493
+ </packing>
494
+ </child>
481
495
  <child>
482
496
  <object class="GtkComboBoxText">
483
497
  <property name="visible">True</property>
@@ -492,6 +506,7 @@ applications-graphics
492
506
  <item translatable="yes">reverse-red</item>
493
507
  <item translatable="yes">reverse-green</item>
494
508
  <item translatable="yes">reverse-blue</item>
509
+ <item translatable="yes">grayscale</item>
495
510
  </items>
496
511
  <signal name="changed" handler="on_color_combobox_changed" swapped="no"/>
497
512
  </object>
@@ -499,21 +514,6 @@ applications-graphics
499
514
  <property name="position">0</property>
500
515
  </packing>
501
516
  </child>
502
- <child>
503
- <object class="GtkComboBoxText" id="uv_combobox">
504
- <property name="visible">True</property>
505
- <property name="can_focus">False</property>
506
- <property name="active">1</property>
507
- <items>
508
- <item translatable="yes">U</item>
509
- <item translatable="yes">V</item>
510
- </items>
511
- <signal name="changed" handler="on_uv_combobox_changed" swapped="no"/>
512
- </object>
513
- <packing>
514
- <property name="position">0</property>
515
- </packing>
516
- </child>
517
517
  <child>
518
518
  <object class="GtkSpinButton">
519
519
  <property name="visible">True</property>
@@ -635,5 +635,8 @@ applications-graphics
635
635
  </child>
636
636
  </object>
637
637
  </child>
638
+ <child type="titlebar">
639
+ <placeholder/>
640
+ </child>
638
641
  </object>
639
642
  </interface>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gray_scott_gtk3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - kojix2
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-27 00:00:00.000000000 Z
11
+ date: 2020-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gtk3
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.17'
47
+ version: '2.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.17'
54
+ version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: 12.3.3
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: 12.3.3
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -90,6 +90,7 @@ extra_rdoc_files: []
90
90
  files:
91
91
  - ".gitignore"
92
92
  - ".rspec"
93
+ - ".travis.yml"
93
94
  - Gemfile
94
95
  - README.md
95
96
  - Rakefile
@@ -98,10 +99,11 @@ files:
98
99
  - exe/grayscott
99
100
  - gray_scott_gtk3.gemspec
100
101
  - lib/gray_scott.rb
102
+ - lib/gray_scott/color.rb
101
103
  - lib/gray_scott/controller.rb
102
104
  - lib/gray_scott/controller/aboutdialog.rb
103
- - lib/gray_scott/laplacian.rb
104
105
  - lib/gray_scott/model.rb
106
+ - lib/gray_scott/utils/math.rb
105
107
  - lib/gray_scott/version.rb
106
108
  - resources/about_icon.png
107
109
  - resources/gray_scott.glade
@@ -123,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
125
  - !ruby/object:Gem::Version
124
126
  version: '0'
125
127
  requirements: []
126
- rubygems_version: 3.0.1
128
+ rubygems_version: 3.1.2
127
129
  signing_key:
128
130
  specification_version: 4
129
131
  summary: Gray-Scott model.