gray_scott_gtk3 0.5.1 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
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.