gdk4 3.4.4

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/README.md ADDED
@@ -0,0 +1,58 @@
1
+ # Ruby/GDK4
2
+
3
+ Ruby/GDK4 is a Ruby binding of GDK 4.
4
+ https://developer.gnome.org/gdk4/3.90/
5
+
6
+ ## Requirements
7
+
8
+ * Ruby/GLib2, Ruby/ATK, Ruby/Pango and Ruby/GdkPixbuf2 in
9
+ [Ruby-GNOME2](https://ruby-gnome2.osdn.jp/)
10
+ * [rcairo](https://github.com/rcairo/rcairo)
11
+ * [GTK+](https://www.gtk.org/) 3.93 or later
12
+
13
+ ## Test
14
+
15
+ With jhbuild environment:
16
+
17
+ ```bash
18
+ #!/bin/bash
19
+ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
20
+
21
+ export GI_TYPELIB_PATH="/home/$USER/jhbuild/install/lib/girepository-1.0"
22
+ export LD_LIBRARY_PATH="/home/$USER/jhbuild/install/lib"
23
+
24
+ if [ $# -eq 0 ]
25
+ then
26
+ $DIR/gdk4/test/run-test.rb
27
+ else
28
+ $DIR/gdk4/test/run-test.rb -t $1
29
+ fi
30
+ ```
31
+
32
+ Run with:
33
+
34
+ ```
35
+ runtest.sh
36
+ # or
37
+ runtest.sh TestGdkRectangle
38
+ ```
39
+
40
+ ## Gtk/Gdk Roadmap
41
+
42
+ * https://wiki.gnome.org/Projects/GTK+/Roadmap/GTK4
43
+ * https://wiki.gnome.org/Projects/GTK+/gdk4
44
+
45
+ ## Install
46
+
47
+ gem install gdk4
48
+
49
+ ## License
50
+
51
+ Copyright (c) 2002-2018 Ruby-GNOME2 Project Team
52
+
53
+ This program is free software. You can distribute/modify this program
54
+ under the terms of the GNU LESSER GENERAL PUBLIC LICENSE Version 2.1.
55
+
56
+ ## Project Website
57
+
58
+ https://ruby-gnome2.osdn.jp/
data/Rakefile ADDED
@@ -0,0 +1,26 @@
1
+ # -*- ruby -*-
2
+ #
3
+ # Copyright (C) 2011-2018 Ruby-GNOME2 Project Team
4
+ #
5
+ # This library is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU Lesser General Public
7
+ # License as published by the Free Software Foundation; either
8
+ # version 2.1 of the License, or (at your option) any later version.
9
+ #
10
+ # This library is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public
16
+ # License along with this library; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
+
19
+ $LOAD_PATH.unshift("./../glib2/lib")
20
+ require "gnome2/rake/package-task"
21
+
22
+ package_name = File.basename(__dir__)
23
+ spec = Gem::Specification.load("#{package_name}.gemspec")
24
+
25
+ GNOME2::Rake::PackageTask.define(spec, __dir__) do |package|
26
+ end
@@ -0,0 +1,44 @@
1
+ # Copyright (C) 2017-2019 Ruby-GNOME Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ require "pkg-config"
18
+ require "native-package-installer"
19
+
20
+ if File.exist?(File.join(__dir__, "..", "vendor"))
21
+ task :default => "nothing"
22
+ else
23
+ task :default => "dependency:check"
24
+ end
25
+
26
+ task :nothing do
27
+ end
28
+
29
+ namespace :dependency do
30
+ desc "Check dependency"
31
+ task :check do
32
+ package_id = "gdk-4.0"
33
+ unless PKGConfig.check_version?(package_id)
34
+ unless NativePackageInstaller.install(:altlinux => "libgtk+4-devel",
35
+ :debian => "libgtk-4-dev",
36
+ :redhat => "pkgconfig(#{package_id})",
37
+ :homebrew => "gtk+4",
38
+ :macports => "gtk4",
39
+ :msys2 => "gtk4")
40
+ exit(false)
41
+ end
42
+ end
43
+ end
44
+ end
data/gdk4.gemspec ADDED
@@ -0,0 +1,47 @@
1
+ # -*- ruby -*-
2
+ #
3
+ # Copyright (C) 2018 Ruby-GNOME Project Team
4
+ #
5
+ # This library is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU Lesser General Public
7
+ # License as published by the Free Software Foundation; either
8
+ # version 2.1 of the License, or (at your option) any later version.
9
+ #
10
+ # This library is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ # Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public
16
+ # License along with this library; if not, write to the Free Software
17
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
+
19
+ require_relative "../glib2/version"
20
+
21
+ Gem::Specification.new do |s|
22
+ s.name = "gdk4"
23
+ s.summary = "Ruby/GDK4 is a Ruby binding of GDK-4.x."
24
+ s.description = "Ruby/GDK4 is a Ruby binding of GDK-4.x."
25
+ s.author = "The Ruby-GNOME Project Team"
26
+ s.email = "ruby-gnome2-devel-en@lists.sourceforge.net"
27
+ s.homepage = "https://ruby-gnome2.osdn.jp/"
28
+ s.licenses = ["LGPL-2.1+"]
29
+ s.version = ruby_glib2_version
30
+ s.extensions = ["dependency-check/Rakefile"]
31
+ s.require_paths = ["lib"]
32
+ s.files = [
33
+ "COPYING.LIB",
34
+ "README.md",
35
+ "Rakefile",
36
+ "#{s.name}.gemspec",
37
+ "dependency-check/Rakefile",
38
+ ]
39
+ s.files += Dir.glob("lib/**/*.rb")
40
+ s.files += Dir.glob("test/**/*")
41
+
42
+ s.add_runtime_dependency("pango", "= #{s.version}")
43
+ s.add_runtime_dependency("gdk_pixbuf2", "= #{s.version}")
44
+ s.add_runtime_dependency("cairo-gobject", "= #{s.version}")
45
+
46
+ s.metadata["msys2_mingw_dependencies"] = "gtk4"
47
+ end
data/lib/gdk4.rb ADDED
@@ -0,0 +1,43 @@
1
+ # Copyright (C) 2013-2018 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ require "gobject-introspection"
18
+ require "cairo-gobject"
19
+ require "atk"
20
+ require "pango"
21
+ require "gdk_pixbuf2"
22
+
23
+ require "gdk4/loader"
24
+ require "gdk4/x11-loader"
25
+
26
+ module Gdk
27
+ LOG_DOMAIN = "Gdk"
28
+ GLib::Log.set_log_domain(LOG_DOMAIN)
29
+
30
+ class Error < StandardError
31
+ end
32
+
33
+ loader = Loader.new(self)
34
+ loader.load
35
+ x11_loader = X11Loader.new(self)
36
+ x11_loader.load
37
+
38
+ class << self
39
+ def cairo_available?
40
+ true
41
+ end
42
+ end
43
+ end
data/lib/gdk4/cairo.rb ADDED
@@ -0,0 +1,71 @@
1
+ # Copyright (C) 2014-2018 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Cairo
18
+ class Context
19
+ alias_method :set_source_rgba_raw, :set_source_rgba
20
+ def set_source_rgba(rgba, g=nil, b=nil, a=nil)
21
+ case rgba
22
+ when Gdk::RGBA
23
+ set_source_gdk_rgba(rgba)
24
+ when Array
25
+ set_source_rgba_raw(rgba)
26
+ else
27
+ r = rgba
28
+ set_source_rgba_raw([r, g, b, a || 1.0])
29
+ end
30
+ end
31
+
32
+ def source_rgba=(rgba)
33
+ set_source_rgba(rgba)
34
+ rgba
35
+ end
36
+
37
+ alias_method :set_source_pixbuf_raw, :set_source_pixbuf
38
+ def set_source_pixbuf(pixbuf, pixbuf_x=0, pixbuf_y=0)
39
+ set_source_pixbuf_raw(pixbuf, pixbuf_x, pixbuf_y)
40
+ end
41
+ end
42
+
43
+ class Surface
44
+ alias_method :to_pixbuf_raw, :to_pixbuf
45
+ def to_pixbuf(options={})
46
+ src_x = options[:src_x] || 0
47
+ src_y = options[:src_y] || 0
48
+ w = options[:width]
49
+ h = options[:height]
50
+ if w.nil? and respond_to?(:width)
51
+ w = width
52
+ end
53
+ if h.nil? and respond_to?(:height)
54
+ h = height
55
+ end
56
+ to_pixbuf_raw(src_x, src_y, w, h)
57
+ end
58
+
59
+ extend GLib::Deprecatable
60
+
61
+ define_deprecated_method_by_hash_args(:to_pixbuf,
62
+ "src_x, src_y, width, height",
63
+ ":src_x => 0, " +
64
+ ":src_y => 0, " +
65
+ ":width => width, " +
66
+ ":height => height",
67
+ 0) do |surface, src_x, src_y, w, h|
68
+ [{:src_x => src_x, :src_y => src_y, :width => w, :height => h}]
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,80 @@
1
+ # Copyright (C) 2013-2018 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Gdk
18
+ class Loader < GObjectIntrospection::Loader
19
+ def load
20
+ self.version = "4.0"
21
+ super("Gdk")
22
+ end
23
+
24
+ private
25
+ def pre_load(repository, namespace)
26
+ define_version(repository, namespace)
27
+ end
28
+
29
+ def define_version(repository, namespace)
30
+ major, minor, micro = repository.get_version(namespace).split(".")
31
+ version_module = Module.new do
32
+ const_set("MAJOR", Integer(major))
33
+ const_set("MINOR", Integer(minor))
34
+ micro = Integer(micro) unless micro.nil?
35
+ const_set("MICRO", micro)
36
+ end
37
+ @base_module.const_set("Version", version_module)
38
+ end
39
+
40
+ def post_load(repository, namespace)
41
+ require_libraries
42
+ end
43
+
44
+ def require_libraries
45
+ require "gdk4/cairo"
46
+ require "gdk4/rectangle"
47
+ require "gdk4/rgba"
48
+ require "gdk4/version"
49
+ end
50
+
51
+ def load_function_info(info)
52
+ name = info.name
53
+ case name
54
+ when /\Apixbuf_/
55
+ target_class = nil
56
+ case $POSTMATCH
57
+ when "get_from_surface"
58
+ target_class = Cairo::Surface
59
+ end
60
+ if target_class
61
+ define_method(info, target_class, "to_pixbuf")
62
+ else
63
+ super
64
+ end
65
+ when /\Acairo_/
66
+ name = $POSTMATCH
67
+ case name
68
+ when "set_source_rgba"
69
+ define_method(info, Cairo::Context, "set_source_gdk_rgba")
70
+ when "rectangle"
71
+ define_method(info, Cairo::Context, "gdk_rectangle")
72
+ else
73
+ define_method(info, Cairo::Context, name)
74
+ end
75
+ else
76
+ super
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,56 @@
1
+ # Copyright (C) 2014-2015 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Gdk
18
+ class Rectangle
19
+ alias_method :initialize_raw, :initialize
20
+ def initialize(x, y, width, height)
21
+ initialize_raw
22
+ self.x = x
23
+ self.y = y
24
+ self.width = width
25
+ self.height = height
26
+ end
27
+
28
+ alias_method :intersect_raw, :intersect
29
+ def intersect(other)
30
+ intersected, dest = intersect_raw(other)
31
+ if intersected
32
+ dest
33
+ else
34
+ nil
35
+ end
36
+ end
37
+
38
+ def inspect
39
+ super.gsub(/>\z/) do
40
+ " x=#{x.inspect} y=#{y.inspect} " +
41
+ "width=#{width.inspect} height=#{height.inspect}>"
42
+ end
43
+ end
44
+
45
+ def to_a
46
+ [x, y, width, height]
47
+ end
48
+
49
+ unless instance_method(:==).owner == self
50
+ def ==(other)
51
+ other.is_a?(self.class) and
52
+ self.to_a == other.to_a
53
+ end
54
+ end
55
+ end
56
+ end
data/lib/gdk4/rgba.rb ADDED
@@ -0,0 +1,53 @@
1
+ # Copyright (C) 2014 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module Gdk
18
+ class RGBA
19
+ class << self
20
+ def parse(spec)
21
+ rgba = new
22
+ unless rgba.parse(spec)
23
+ available_formats = [
24
+ "COLOR_NAME",
25
+ "\#RGB",
26
+ "\#RRGGBB",
27
+ "\#RRRGGGBBB",
28
+ "\#RRRRGGGGBBBB",
29
+ "rgb(R, G, B)",
30
+ "rgba(R, G, B, A)",
31
+ ]
32
+ message = "invalid RGBA format: #{spec.inspect} "
33
+ message << "(available formats: #{available_formats.join(', ')})"
34
+ raise ArgumentError, message
35
+ end
36
+ rgba
37
+ end
38
+ end
39
+
40
+ alias_method :initialize_raw, :initialize
41
+ def initialize(red=nil, green=nil, blue=nil, alpha=nil)
42
+ initialize_raw
43
+ self.red = red if red
44
+ self.green = green if green
45
+ self.blue = blue if blue
46
+ self.alpha = alpha || 1.0
47
+ end
48
+
49
+ def to_a
50
+ [red, green, blue, alpha]
51
+ end
52
+ end
53
+ end